[
  {
    "path": ".github/workflows/ci.yaml",
    "content": "name: CI\n\non: \n  push:\n    branches:\n    - master\n  pull_request:\n\njobs:\n\n  build:\n    runs-on: windows-latest\n    \n    steps:\n    - uses: actions/checkout@v4\n    \n    - uses: microsoft/setup-msbuild@v2\n\n    - name: Restore\n      run: msbuild source\\BulkCrapUninstaller.sln /t:Restore /p:Configuration=Release /p:Platform=\"Any CPU\" /verbosity:minimal\n    \n    - name: Build\n      run: >\n           msbuild source\\BulkCrapUninstaller.sln /t:Publish /p:Configuration=Release /p:Platform=\"Any CPU\" /verbosity:minimal\n           /p:filealignment=512 /p:DeployOnBuild=true /p:PublishSingleFile=False /p:SelfContained=False /p:PublishReadyToRun=false /p:PublishTrimmed=False\n           /p:PublishProtocol=FileSystem /p:PublishDir=\"${{ github.workspace }}\\bin\\publish\"\n    \n    - uses: actions/upload-artifact@v4\n      with:\n        name: ${{ github.event.repository.name }}_${{ github.sha }}\n        path: bin\\publish\n"
  },
  {
    "path": ".github/workflows/winget.yml",
    "content": "name: Publish to WinGet\non:\n  release:\n    types: [released]\njobs:\n  publish:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Get version\n        id: get-version\n        run: |\n          # Find the version from tag name and pad to 4 components\n          version=$(echo \"${{ github.event.release.tag_name }}\" | awk -F. '{printf \"%d.%d.%d.%d\\n\", substr($1, 2), $2, $3, $4}')\n          echo \"version=$VERSION\" >> $GITHUB_OUTPUT\n      - uses: vedantmgoyal9/winget-releaser@main\n        with:\n          identifier: Klocman.BulkCrapUninstaller\n          version: ${{ steps.get-version.outputs.version }}\n          token: ${{ secrets.WINGET_TOKEN }}\n"
  },
  {
    "path": ".gitignore",
    "content": "## Ignore Visual Studio temporary files, build results, and\r\n## files generated by popular Visual Studio add-ons.\r\n\r\n# User-specific files\r\n*.suo\r\n*.user\r\n*.userosscache\r\n*.sln.docstates\r\n\r\n# User-specific files (MonoDevelop/Xamarin Studio)\r\n*.userprefs\r\n\r\n# Build results\r\n[Dd]ebug/\r\n[Dd]ebugPublic/\r\n[Rr]elease/\r\n[Rr]eleases/\r\nx64/\r\nx86/\r\nbuild/\r\nbld/\r\n[Bb]in/\r\n[Oo]bj/\r\n\r\n# Visual Studio 2015 cache/options directory\r\n.vs/\r\n# Uncomment if you have tasks that create the project's static files in wwwroot\r\n#wwwroot/\r\n\r\n# MSTest test Results\r\n[Tt]est[Rr]esult*/\r\n[Bb]uild[Ll]og.*\r\n\r\n# NUNIT\r\n*.VisualState.xml\r\nTestResult.xml\r\n\r\n# Build Results of an ATL Project\r\n[Dd]ebugPS/\r\n[Rr]eleasePS/\r\ndlldata.c\r\n\r\n# DNX\r\nproject.lock.json\r\nartifacts/\r\n\r\n*_i.c\r\n*_p.c\r\n*_i.h\r\n*.ilk\r\n*.meta\r\n*.obj\r\n*.pch\r\n*.pdb\r\n*.pgc\r\n*.pgd\r\n*.rsp\r\n*.sbr\r\n*.tlb\r\n*.tli\r\n*.tlh\r\n*.tmp\r\n*.tmp_proj\r\n*.log\r\n*.vspscc\r\n*.vssscc\r\n.builds\r\n*.pidb\r\n*.svclog\r\n*.scc\r\n\r\n# Chutzpah Test files\r\n_Chutzpah*\r\n\r\n# Visual C++ cache files\r\nipch/\r\n*.aps\r\n*.ncb\r\n*.opensdf\r\n*.sdf\r\n*.cachefile\r\n\r\n# Visual Studio profiler\r\n*.psess\r\n*.vsp\r\n*.vspx\r\n*.sap\r\n\r\n# TFS 2012 Local Workspace\r\n$tf/\r\n\r\n# Guidance Automation Toolkit\r\n*.gpState\r\n\r\n# ReSharper is a .NET coding add-in\r\n_ReSharper*/\r\n*.[Rr]e[Ss]harper\r\n*.DotSettings.user\r\n\r\n# JustCode is a .NET coding add-in\r\n.JustCode\r\n\r\n# TeamCity is a build add-in\r\n_TeamCity*\r\n\r\n# DotCover is a Code Coverage Tool\r\n*.dotCover\r\n\r\n# NCrunch\r\n_NCrunch_*\r\n.*crunch*.local.xml\r\nnCrunchTemp_*\r\n\r\n# MightyMoose\r\n*.mm.*\r\nAutoTest.Net/\r\n\r\n# Web workbench (sass)\r\n.sass-cache/\r\n\r\n# Installshield output folder\r\n[Ee]xpress/\r\n\r\n# DocProject is a documentation generator add-in\r\nDocProject/buildhelp/\r\nDocProject/Help/*.HxT\r\nDocProject/Help/*.HxC\r\nDocProject/Help/*.hhc\r\nDocProject/Help/*.hhk\r\nDocProject/Help/*.hhp\r\nDocProject/Help/Html2\r\nDocProject/Help/html\r\n\r\n# Click-Once directory\r\npublish/\r\n\r\n# Publish Web Output\r\n*.[Pp]ublish.xml\r\n*.azurePubxml\r\n# TODO: Comment the next line if you want to checkin your web deploy settings \r\n# but database connection strings (with potential passwords) will be unencrypted\r\n# *.pubxml\r\n*.publishproj\r\n\r\n# NuGet Packages\r\n*.nupkg\r\n# The packages folder can be ignored because of Package Restore\r\n**/packages/*\r\n# except build/, which is used as an MSBuild target.\r\n!**/packages/build/\r\n# Uncomment if necessary however generally it will be regenerated when needed\r\n#!**/packages/repositories.config\r\n\r\n# Windows Azure Build Output\r\ncsx/\r\n*.build.csdef\r\n\r\n# Windows Store app package directory\r\nAppPackages/\r\n\r\n# Visual Studio cache files\r\n# files ending in .cache can be ignored\r\n*.[Cc]ache\r\n# but keep track of directories ending in .cache\r\n!*.[Cc]ache/\r\n\r\n# Others\r\nClientBin/\r\n[Ss]tyle[Cc]op.*\r\n~$*\r\n*~\r\n*.dbmdl\r\n*.dbproj.schemaview\r\n*.pfx\r\n*.publishsettings\r\nnode_modules/\r\norleans.codegen.cs\r\n\r\n# RIA/Silverlight projects\r\nGenerated_Code/\r\n\r\n# Backup & report files from converting an old project file\r\n# to a newer Visual Studio version. Backup files are not needed,\r\n# because we have git ;-)\r\n_UpgradeReport_Files/\r\nBackup*/\r\nUpgradeLog*.XML\r\nUpgradeLog*.htm\r\n\r\n# SQL Server files\r\n*.mdf\r\n*.ldf\r\n\r\n# Business Intelligence projects\r\n*.rdl.data\r\n*.bim.layout\r\n*.bim_*.settings\r\n\r\n# Microsoft Fakes\r\nFakesAssemblies/\r\n\r\n# Node.js Tools for Visual Studio\r\n.ntvs_analysis.dat\r\n\r\n# Visual Studio 6 build log\r\n*.plg\r\n\r\n# Visual Studio 6 workspace options file\r\n*.opt\r\n\r\n# Visual Studio LightSwitch build output\r\n**/*.HTMLClient/GeneratedArtifacts\r\n**/*.DesktopClient/GeneratedArtifacts\r\n**/*.DesktopClient/ModelManifest.xml\r\n**/*.Server/GeneratedArtifacts\r\n**/*.Server/ModelManifest.xml\r\n_Pvt_Extensions\r\n\r\n# Misc\r\n*.odt#\r\n*.DotSettings\r\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n- Don't be a d*ck to others\n- Don't be afraid to point out bad behavior\n- Do focus on making the project better\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "## How to file a bug report\nCreate a new issue with as much description of the problem as possible. Include steps needed for reproduction if the bug is not obvious.\nIt's also possible to submit bug reports anonymously to my [feedback form](http://klocmansoftware.weebly.com/feedback--contact.html).\n\n## How to suggest a new feature\nThe same as bug report. Well-explained suggestions are preferred.\n\n## How to donate\nCheck [README.md](README.md) or main window of BCUninstaller for the donate link. Only donate using the official donate links.\n\n## How to help translate\nTranslations are stored in .resx files (almost all except for Resources.resx). It's suggested to use the [ResxTranslator](https://github.com/HakanL/resxtranslator) to translate these files. It will save you a lot of work. Most if not all of translators here use it.\n\n### How-to list\n1. Download latest version of the translation tool (ResxTranslator) from https://github.com/HakanL/resxtranslator\n2. - If you are familiar with how git and GitHub works, you can create a branch, translate it, and then start a pull request.\n   - Otherwise download the latest translation pack from the [releases](https://github.com/Klocman/Bulk-Crap-Uninstaller/releases).\n3. Run the ResxTranslator and click \"File > Open directory\". Point it to the extracted translation pack or clone of your branch.\n4. Click on any of the items in the left tree, it will open on the right. You will need to translate all of those items, most are quite small.\n5. Put the translation into the column marked with your language's code. For example, if you are translating to German use the \"de\" column.\n5. - For a list of all language codes click \"Languages > Add > More Languages\". If possible, use only neutral languages.\n   - If possible, use a more general locale. For example try using \"en\" or \"ru\" instead of \"en-GB\" or \"ru-RU\".\n   - If the column doesn't exist, click \"Languages > Add > Your Code\". If your code is not available, click \"More Languages\". \n   - You can hide columns for different languages using the checkboxes below the list.\n6. Once in a while click \"File > Save all modified\" (or ctrl+s) to save your work in case something crashes.\n7. Create a pull request or compress the folder you just modified to a .zip and send it back to me. If you don't have my e-mailaddress you can use the [feedback form](http://klocmansoftware.weebly.com/feedback--contact.html).\n\n## How to contribute code\nThe best way is to push any changes you wish to make to your fork of this repository and then start a Pull Request.\n\nTry to limit the contents of your PRs to a single bug fix or a single feature (it's best to create a new branch for each bugfix or feature). This makes it much easier to review and verify, and makes merging easier.\n\n### How to set up your environment\nVisual Studio 2019 or 2022 is recommended to edit and compile the source. You need the `.NET desktop development` and `Desktop development with C++` workloads. Optionally get the `Class Designer` component if you wish to view/edit the included class diagrams.\n\nThe source should compile from within VS without any extra work. If the compile fails the first time, try to Rebuild Solution.\n\nSome of the tests require running as 64bit to pass, or some specific applications to be installed.\n\n### Overview of the codebase\nThe codebase is split into the user interfaces (BCU-Console and BulkCrapUninstaller), libraries that do the actual work (UninstallTools), and small helper applications (SteamHelper, WinUpdateHelper).\n\nThe helpers adapt different kinds of applications into something that BCUninstaller can easily digest, and decouple highly specialized code from the main application. All of the helpers use CLI to talk with the UninstallTools library, and can be freely used by themselves in batch scripts and such.\n\nHere's a simplified class diagram of UninstallTools, the place where most of the magic happens:\n![preview](./doc/SimplifiedClassDiagram.png)\n"
  },
  {
    "path": "Licence.txt",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright 2017 Marcin Szeniak\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "NOTICE",
    "content": "Bulk Crap Uninstaller is a free open-source project hosted on GitHub. Marcin Szeniak is the project manager and lead developer.\nThe official project is hosted at https://github.com/Klocman/Bulk-Crap-Uninstaller\n\nIn case of issues, please update to the latest official release. Non-official releases are not supported.\nIf the issue presists, please post a bug report to https://github.com/Klocman/Bulk-Crap-Uninstaller/issues\n\nIf you wish to contribute, donate or otherwise help the project, please read the CONTRIBUTING file.\nhttps://github.com/Klocman/Bulk-Crap-Uninstaller/blob/master/CONTRIBUTING.md"
  },
  {
    "path": "PrivacyPolicy.txt",
    "content": "BCUninstaller by Marcin Szeniak collects the following information:\r\n- Anonymous usage statistics\r\n- Anonymous error reports\r\n- User-selected application ratings\r\n\r\nAll collected information is not personally identifiable, and does not include any sensitive information.\r\n\r\nDuring first start of BCU an user ID is generated to help keep track of application ratings and usage statistics. It can be freely changed and is not guaranteed to be unique.\r\n\r\nMarcin Szeniak collects this information in order to provide the following benefits:\r\n- Improve BCUninstaller\r\n- Provide overall application ratings\r\n- Help plan future features and/or applications\r\n\r\nMarcin Szeniak shares this information with the following parties:\r\n- No one\r\n\r\nUser-selected application ratings are used to generate overall application ratings, which are visible to all users.\r\n\r\nThis policy is subject to change without notice. Please check this page for the latest privacy policy. If you disagree with this policy, please discontinue use of the application."
  },
  {
    "path": "README.md",
    "content": "[![Donate](https://img.shields.io/badge/donate-paypal-brightgreen.svg)](http://klocmansoftware.weebly.com/donate.html)\n[![GitHub release](https://img.shields.io/github/release/klocman/Bulk-Crap-Uninstaller.svg)](https://github.com/Klocman/Bulk-Crap-Uninstaller/releases)\n[![license](https://img.shields.io/github/license/klocman/Bulk-Crap-Uninstaller.svg)](https://github.com/Klocman/Bulk-Crap-Uninstaller/blob/master/Licence.txt)\n\n### [:warning: Looking for maintainers :warning:](https://github.com/Klocman/Bulk-Crap-Uninstaller/discussions/289)\n\n# Bulk Crap Uninstaller\nBulk Crap Uninstaller (or BCUninstaller) is a free (as in speech) program uninstaller. It excels at removing large amounts of applications with minimal user input. It can clean up leftovers, detect orphaned applications, run uninstallers according to premade lists, and much more! Even though BCU was made with IT pros in mind, it can be used by anyone with a basic understanding of how applications are installed/uninstalled in Windows.\n\nBCU is fully compatible with Windows Store Apps, Steam, Windows Features and has special support for many uninstalling systems (NSIS, InnoSetup, Msiexec, and many other). Check below for a full list of functions.\n\nBulk Crap Uninstaller is licensed under Apache 2.0 open source license, and can be used in both private and commercial settings for free and with no obligations, as long as no conditions of the license are broken.\n\n[Visit the official homepage](https://www.bcuninstaller.com/) to see the full list of quirks and features!\n\n[Read the online documentation](https://htmlpreview.github.io/?https://github.com/Klocman/Bulk-Crap-Uninstaller/blob/master/doc/BCU_manual.html) if you have any questions or issues (the help file included with all releases). If you didn't find an answer to your question, feel free to [open a new issue](https://github.com/Klocman/Bulk-Crap-Uninstaller/issues/new).\n\n## Download\nYou can get the latest version from the releases page. Alternatively you can download it from one of these hosts:\n- [Download from dAppCDN](https://dappcdn.com/download/utilities/bulk-crap-uninstaller)\n- [Download from FossHub](https://www.fosshub.com/Bulk-Crap-Uninstaller.html)\n- [Download from SourceForge](https://sourceforge.net/projects/bulk-crap-uninstaller/)\n\n#### What are the different variants?\n- Setup - Installs BCU as a normal application. If your system is missing the required .NET runtime, it is automatically installed as well.\n- Portable - Self-contained version that does not require the .NET runtime to run. It includes a runtime which is why the file size is so large.\n- net - Stand-alone portable version that requires the .NET runtime to be installed. Much smaller file size than the full Portable version.\n\n#### Nightly builds\nIf you want to get the latest features and fixes as soon as they are available, you can download a nightly build from the [actions page](https://github.com/Klocman/Bulk-Crap-Uninstaller/actions/workflows/ci.yaml).\n\n## System requirements\n#### BCUninstaller v6\n- Earliest supported OS: Windows 10 (may work on Windows 7)\n- Requirements: .NET 8 desktop runtime (not needed for portable)\n\nTo get this version download the latest release from the links below.\n\n_*Note: Since none of the supported systems have x86 versions, v6 releases no longer include an x86 build. If you need one you can still compile it yourself, or you can use the AnyCPU build instead._\n\n#### BCUninstaller v5\n- Earliest supported OS: Windows 7 SP1 with all Platform Updates (KB2670838, KB2533623, etc.)\n- Requirements: .NET 6 desktop runtime (not needed for portable)\n\nIf you get a DLL error on startup then try running Windows Update. If you get a framework error, install .NET6 either manually or through Windows Update.\n\nTo get this version download the [latest available 5.x release](https://github.com/Klocman/Bulk-Crap-Uninstaller/releases/tag/v5.9).\n\n_*Note: The Portable version does not require the .NET6 runtime to be installed, since it is included (that's why the portable version is so large)._\n\n#### BCUninstaller v1 - v4\n- Earliest supported OS: Windows XP (XP support may be dodgy in later releases)\n- Requirements: .Net Framework 4.5 (some versions can run on .Net Framework 3.5 with reduced functionality)\n\nMake sure you have .Net Framework 4.5 installed with all available updates for your system (it is not installed on XP by default).\n\nTo get this version compile the [legacy 4.x branch](https://github.com/Klocman/Bulk-Crap-Uninstaller/tree/legacy-4.x) or download the [latest available 4.x release](https://github.com/Klocman/Bulk-Crap-Uninstaller/releases/tag/v4.16).\n\n## How can I help?\nPlease check the [contribution](CONTRIBUTING.md) notes!\n\n## Compiling\nDevelopment is done on Visual Studio 2022. The solution should just load and build without doing anything extra, provided necessary VS features are installed.\nThe installer is compiled with InnoSetup v6.4. To make a release you have to first run the `publish.bat` script.\n\n## Screenshots\n![preview](../gh-pages/assets/1.png)\n![preview](../gh-pages/assets/4.png)\n"
  },
  {
    "path": "doc/BCU_manual.html",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN\" \"http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\"><!--This file was converted to xhtml by LibreOffice - see https://cgit.freedesktop.org/libreoffice/core/tree/filter/source/xslt for the code.--><head profile=\"http://dublincore.org/documents/dcmi-terms/\"><meta http-equiv=\"Content-Type\" content=\"application/xhtml+xml; charset=utf-8\"/><title xml:lang=\"en-US\">Bulk Crap Uninstaller Documentation</title><meta name=\"DCTERMS.title\" content=\"Bulk Crap Uninstaller Documentation\" xml:lang=\"en-US\"/><meta name=\"DCTERMS.language\" content=\"en-US\" scheme=\"DCTERMS.RFC4646\"/><meta name=\"DCTERMS.source\" content=\"http://xml.openoffice.org/odf2xhtml\"/><meta name=\"DCTERMS.issued\" content=\"2016-02-20T21:40:00.651000000\" scheme=\"DCTERMS.W3CDTF\"/><meta name=\"DCTERMS.modified\" content=\"2021-05-09T06:54:54.999000000\" scheme=\"DCTERMS.W3CDTF\"/><meta name=\"DCTERMS.provenance\" content=\"\" xml:lang=\"en-US\"/><meta name=\"DCTERMS.subject\" content=\",\" xml:lang=\"en-US\"/><link rel=\"schema.DC\" href=\"http://purl.org/dc/elements/1.1/\" hreflang=\"en\"/><link rel=\"schema.DCTERMS\" href=\"http://purl.org/dc/terms/\" hreflang=\"en\"/><link rel=\"schema.DCTYPE\" href=\"http://purl.org/dc/dcmitype/\" hreflang=\"en\"/><link rel=\"schema.DCAM\" href=\"http://purl.org/dc/dcam/\" hreflang=\"en\"/><style type=\"text/css\">\n    @page {  }\n    table { border-collapse:collapse; border-spacing:0; empty-cells:show }\n    td, th { vertical-align:top; font-size:12pt;}\n    h1, h2, h3, h4, h5, h6 { clear:both;}\n    ol, ul { margin:0; padding:0;}\n    li { list-style: none; margin:0; padding:0;}\n    /* \"li span.odfLiEnd\" - IE 7 issue*/\n    li span. { clear: both; line-height:0; width:0; height:0; margin:0; padding:0; }\n    span.footnodeNumber { padding-right:1em; }\n    span.annotation_style_by_filter { font-size:95%; font-family:Arial; background-color:#fff000;  margin:0; border:0; padding:0;  }\n    span.heading_numbering { margin-right: 0.8rem; }* { margin:0;}\n    .fr1 { font-size:12pt; font-family:Liberation Serif; text-align:center; vertical-align:top; }\n    .fr2 { font-size:12pt; font-family:Liberation Serif; text-align:left; vertical-align:top; }\n    .Contents_20_1 { font-size:12pt; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; margin-left:0cm; margin-right:0cm; text-indent:0cm; }\n    .Contents_20_2 { font-size:12pt; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; margin-left:0.499cm; margin-right:0cm; text-indent:0cm; }\n    .Contents_20_3 { font-size:12pt; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; margin-left:0.998cm; margin-right:0cm; text-indent:0cm; }\n    .Contents_20_Heading { font-size:16pt; margin-bottom:0.212cm; margin-top:0.423cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; margin-left:0cm; margin-right:0cm; text-indent:0cm; font-weight:bold; }\n    .Heading_20_1 { font-size:130%; margin-bottom:0.212cm; margin-top:0.423cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; font-weight:bold; }\n    .Heading_20_2 { font-size:115%; margin-bottom:0.212cm; margin-top:0.353cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; font-weight:bold; }\n    .Heading_20_3 { font-size:101%; margin-bottom:0.212cm; margin-top:0.247cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; font-weight:bold; }\n    .P1 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P10 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P11 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P12 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P13 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P14 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P15 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P16 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P17 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P18 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P19 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P2 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P20 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P21 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P22 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P23 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P24 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P25 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P26 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P27 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P28 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P29 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P3 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P30 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P31 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P32 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P33 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P34 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P35 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P36 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P37 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P38 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P39 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P4 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P40 { font-size:12pt; font-style:italic; margin-bottom:0.212cm; margin-top:0.212cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P41 { font-size:10pt; margin-bottom:0cm; margin-top:0cm; font-family:Liberation Mono; writing-mode:horizontal-tb; direction:ltr; }\n    .P42 { font-size:10pt; margin-bottom:0cm; margin-top:0cm; font-family:Liberation Mono; writing-mode:horizontal-tb; direction:ltr; }\n    .P43 { font-size:10pt; margin-bottom:0cm; margin-top:0cm; font-family:Liberation Mono; writing-mode:horizontal-tb; direction:ltr; }\n    .P44 { font-size:10pt; margin-bottom:0cm; margin-top:0cm; font-family:Liberation Mono; writing-mode:horizontal-tb; direction:ltr; }\n    .P45 { font-size:10pt; margin-bottom:0cm; margin-top:0cm; font-family:Liberation Mono; writing-mode:horizontal-tb; direction:ltr; }\n    .P46 { font-size:10pt; margin-bottom:0cm; margin-top:0cm; font-family:Liberation Mono; writing-mode:horizontal-tb; direction:ltr; }\n    .P47 { font-size:10pt; margin-bottom:0cm; margin-top:0cm; font-family:Liberation Mono; writing-mode:horizontal-tb; direction:ltr; }\n    .P48 { font-size:10pt; margin-bottom:0cm; margin-top:0cm; font-family:Liberation Mono; writing-mode:horizontal-tb; direction:ltr; }\n    .P49 { font-size:10pt; margin-bottom:0cm; margin-top:0cm; font-family:Liberation Mono; writing-mode:horizontal-tb; direction:ltr; }\n    .P5 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P50 { font-size:6pt; font-weight:bold; margin-bottom:0cm; margin-top:0cm; text-align:left ! important; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P51 { font-size:28pt; font-weight:bold; margin-bottom:0.203cm; margin-top:0.203cm; text-align:left ! important; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P52 { font-size:12pt; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P53 { font-size:12pt; margin-left:0cm; margin-right:0cm; text-indent:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P54 { font-size:12pt; margin-left:0.499cm; margin-right:0cm; text-indent:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P55 { font-size:12pt; margin-left:0.998cm; margin-right:0cm; text-indent:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P56 { font-size:10pt; margin-bottom:0cm; margin-top:0cm; font-family:Liberation Mono; writing-mode:horizontal-tb; direction:ltr; }\n    .P57 { font-size:130%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.423cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P58 { font-size:130%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.423cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P59 { font-size:115%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.353cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P6 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P60 { font-size:115%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.353cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P61 { font-size:115%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.353cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P62 { font-size:115%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.353cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P63 { font-size:115%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.353cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P64 { font-size:115%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.353cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P65 { font-size:101%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.247cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P66 { font-size:101%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.247cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P67 { font-size:101%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.247cm; font-family:Liberation Sans; writing-mode:horizontal-tb; direction:ltr; }\n    .P68 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P69 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P7 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P70 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P71 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P72 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P73 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P74 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P75 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P76 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P77 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P78 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P79 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P8 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P80 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P81 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P82 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .P9 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .Preformatted_20_Text { font-size:10pt; font-family:Liberation Mono; writing-mode:horizontal-tb; direction:ltr; margin-top:0cm; margin-bottom:0cm; }\n    .Standard { font-size:12pt; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; }\n    .Text_20_body { font-size:12pt; font-family:Liberation Serif; writing-mode:horizontal-tb; direction:ltr; margin-top:0cm; margin-bottom:0.247cm; line-height:120%; }\n    .Sect1 { background-color:#ffffff; }\n    .TableTitle { width:17.013cm; margin-left:0cm; margin-right:auto;}\n    .TableTitle_A1 { vertical-align:middle; padding:0.097cm; border-style:none; }\n    .TableTitle_A { width:5.08cm; }\n    .TableTitle_B { width:11.933cm; }\n    .Bullet_20_Symbols { font-family:OpenSymbol; }\n    .Internet_20_link { color:#000080; text-decoration:underline; }\n    .T23 { font-weight:bold; }\n    .T25 { color:#0000ff; font-family:Consolas; font-size:9.5pt; background-color:#ffffff; }\n    .T26 { color:#a31515; font-family:Consolas; font-size:9.5pt; background-color:#ffffff; }\n    .T27 { color:#000000; font-family:Consolas; font-size:9.5pt; background-color:#ffffff; }\n    .T29 { font-style:italic; }\n    .T30 { font-style:italic; }\n    .T34 { color:#000080; text-decoration:underline; }\n    .T4 { text-decoration:none ! important; font-weight:bold; }\n    /* ODF styles with no properties representable as CSS */\n    .Sect2 .Index_20_Link .T1 .T10 .T11 .T12 .T13 .T14 .T15 .T16 .T17 .T18 .T19 .T2 .T20 .T21 .T22 .T24 .T28 .T3 .T31 .T32 .T33 .T35 .T36 .T5 .T6 .T7 .T8 .T9  { }\n    </style></head><body dir=\"ltr\" style=\"max-width:21.001cm;margin-top:2cm; margin-bottom:2cm; margin-left:2cm; margin-right:2cm; \"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"TableTitle\"><colgroup><col width=\"222\"/><col width=\"521\"/></colgroup><tr class=\"TableLine2136163067680\"><td style=\"text-align:left;width:5.08cm; \" class=\"TableTitle_A1\"><!--Next 'div' was a 'text:p'.--><div class=\"P50\"><!--Next '\n            div' is a draw:frame.\n        --><div style=\"height:4.759cm;width:4.759cm; padding:0;  float:left; position:relative; left:0cm; top:0cm; \" class=\"fr2\" id=\"Image6\"><img style=\"height:4.759cm;width:4.759cm;\" alt=\"\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAEBAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUtLS05OTlFRUVNTU1RUVFZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWNjY2ZmZmlpaWxsbG5ubm9vb3BwcHJycnNzc3V1dXh4eHl5eXt7e319fX5+fn9/f4CAgIGBgYKCgoODg4SEhIeHh4qKio2NjZCQkJKSkpOTk5aWlpiYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaOjo6SkpKWlpaampqenp6mpqaqqqqurq6ysrK2tra6urq+vr7CwsLKysrOzs7W1tba2tre3t7i4uLm5uby8vL+/v8LCwsXFxcjIyMvLy87Ozs/Pz9DQ0NHR0dLS0tTU1NfX19ra2t3d3eDg4OHh4eLi4uPj4+bm5ufn5+jo6Onp6ezs7O3t7e/v7/Ly8vX19fj4+Pv7+/z8/P39/f7+/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPzW/jYAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGHRFWHRTb2Z0d2FyZQBwYWludC5uZXQgNC4wLjVlhTJlAAANRUlEQVR4XuWd/2MUxRnG3ZwEU6Q0FaXWBIxUxFiq12Ja2hoIgQCCkdIKoUJAMApYlJRm78+/7l3ebO5uZ5953v0ys7N+fkKZYXY+dzvzzrszt6/0f+ZUKOCjD53xsTRZAdUJmI8c8oE0Wp7KBLwtl+aIBWm2NFUJ+LVcmDPmpOGyVCTgl3JZDnlLmi5JNQIOy0U55Q1pvByVCPDw+Q+oxEAVAn4lF+ScN+UCylCBgLfkcjzwjlxCCcoLcDr/T3JCLqI4pQV47X8FEVFZAY7jnyxlI6KSApzHP1lKRkTlBHia/8YpNxeUEuAl/slSKh4oI6ARn/+AMgZKCPAW/2QpcRcUF/AbabwRFB8JCwvwPP9PUjgiKiqgYf0vHhEVFIDin8+f/VATz76UJky8K5empJiAWWnUxLX/9Wpj56Y0YqLYOFBIAJr/rtbY/8QA+g4UmguKCEDxz5Va+58YWJeGTBSJBwoIQJ//5R250NrYuSFNmShgQC8AxT8Xa+9/rxc/lMZM6O8CtQAU/yzHcpH1cl+aM6EeCbUCwPzf+aub/vfiix1p0oA2IlIKAP0/8BdH/U8MrExLowaUEZFOAIh/pv/srP+JgfMHpVkDuohIJQDEP077nxj47DVp2IBqHNAIAPOf4/5bDGjmAoUAEP+86rr/AwPgLlDEA7wA8PlPuRv/9omXD0jzBngDtAC0/vmbh/4nBlampH0D9F3ACkDr3/Ne+p8YWJULMMGOhKQAlP9Y9dT/xMCmXIIJMiLiBKD+rzmI/3NB6wIuIqIEoO//VZ/97+18IZdhgvoOMALQ+Fdv/sMOzA8w4wAhAK3/68x/cZTNEdkFoPyP//5bDNjjAasAf/k/lnIGbALQ/V93/o8FjgO2u8AiAI3/Xue/MWCe0DISYgEw/mlM/xMDKB7A+QEoAPXfV/ybA4oJYUSEBID855Sr/B9LvApWRigiAgJA/vtVH+tfTHwBrI7BOJAvoEn5HwaYJ8yfC3IFgPinkf1PDKAsWW48kCcgtM9/QCEDOQJA/OMh/8cC84Q5d4FZAIh/vOT/WOLz6pHQKADN/02b/8aJL4CnZsZdtSYBAcU/GWCe0BQRGQSg57/+8n8sMXp2bIiIsgLQ8//mrH8AaF2QHQcyAtD6/0p+/68uV8rarY173z79r/zjOuDaMDMXTApA+R+U/0B5gxIcmT21cm9b2mBR7SOaEFA4/1eTgCGd+aXb/5F2KDQ5onEB6PwDzv/VKWDIb9cVNwQ0MH7ickwAzP/j/FftAqLo9XP81wAaGBsJRwWg+d+W/3QgILkXFr+R5qzAcWA0IhoRgPpvnf+cCEh4/7k0aAM+MxqJiPYFoPOP9vyfKwHR4X9LizZ2rkkNE/sRUSoAxT9E/OtMQBSdeyltWoivSAUT6ZnTPQFg/pti9j84FBDNP5VGLcA84V5EJALQ/h9q/etSQHTogbRqIV6x76LZFVA+/+NUQDTzSJq1APOEuwaGAkD8w+a/3AqIDm9JuxZglmwYEQ0EgPiHzv85FhAdI6dD647KRACY/w/Q+T/XAqI5cokE84RJRPRK/yP5DwMdPv/nXEC0IC3biM+DndWfJgI+lD8bUOT/3AuIbknTNuKV/DzhWShAc/7Bg4DDbJ4gvig1skABFxX99yEg+ru0bSU/T4gE6M4/+RAwTUaECXl5QiAA5P9M+BAQnZHG7cQ5ecJ8Adr9T14ERN9K63Zy8gO5AtT73/wIoEeBvBxRnoDPtf33JGBOWmcwnjvOE/BMKvH4ERBpksXPpc4oeQJ+kDo8ngRcl+YZfpQ6owQv4KQ0z9BKAdOKp0aNEXArw/ry8rnu4jH5exWPpX2CxgiQGlm2H63MSRkaNkec0HwBA550pRQJuyRMCENAr3cXPaDOsCy1CEIR0NvSGPiTVCIIRkDvAUjhTHJa6hCEI6B3TkoSsImxhIAEvOBvgnYK6J2Vonb4lEBQAu5KUTutHASTkEiK2mnjNDiAngfWpQJBUALof+6OVCBopwB2x0xCUALYefCYlGcISoAUtaKYBIIS8FSKWrktFRhCEoB+OHIMxRAQlIAzUtSGIhAOSsBTNgy4KxUoAhLAZoU0z0VCErABDj6NsSEVOIIR8GBGCto4Sm4ZFUIRcJ3tv24ECETAy68XpJSdJanD0nwBT+8uKfKhc9ojVY0RIAfDxuh2u8cPyd9zzJB7RfdpjIBqUDwREdol4Kq0q6BVAgr0v00CZvTf/4T2CJh/Io3qaIuADntmaJKWCDitnv72aIWA4/ekvQKEL2D6TInuhy/gyNpP0lZBgv8GzK8odkQZaMMYcOTs1wWngIRWDIJRdHjlhTSppSUCkjhwSZMM36c1ApJYqFskFmyRgGRG/LmvBqNogT8wJLRMgH5J2DYB6qxo+wQoDbRQgM5AGwWoDLRSQLQi7RO0U0CHXyC1U0A0R6+OGiOga+SThYW5Wfa5+Cj0XtHGCJAaJl5ubayeVFrosAeIQxAw5KebJ6QkR1fq2QhGQMKdI1KWYZpMEIQkoPdiUQozkCvDoAT0XioMkPtlwxLQe3lcihNw2fLABPQe87MBFxCHJkBxcGheamCCE/BYytvpUGfIgxPQOyoV7FCDQHgC+HPU1JowPAHLUsHOKakBCU/Adalgh9o1HZ4A+thENCs1IG2+BWakBiQ8AUtSgUBqQMITcEoqEDA/qBScgG3F7ygwz8mCE3BHyjO0UgB/cqCdAjakOIXUgQQmYJtfCSRIJUhYArZVidEjUgsSlIAXusRw60LhO6pfk4qiP0o9SDACtr96X0rSUHnhIAS8eHD9tCL+2YN64UJjBMhBsUm63dMLmucho1CPRhojoHq4Q9QtFsDtkmixAO4QSXsFHJVrsKAREMwPKw8hf2Bb88PKX+p+Wj7Bo4BpbvP4zr+k/Ch5AqKbWgMeBXBPBne+kuJj5ApQfwf8CeC+ADv/lOLj5AuI1gN4wcIQ6gsQ/0NKTwAERDc0rxjxJ+B16izZIyk9CRIQPZTKFN4EUL+n90QKZ4ACovvNfs3OkEVpH7IlhbNgAZoX7XgSwNwA8Wb+y+QGAj6WPxvorNAG/AjoEL+kE6+B9fVSIqD/gfyHgWn6ZfN+BNyU1gHxJfC7RH/Yfd0eSMAf/Iw04EUAsQqMV38hhQ38Tt432Ae/6v8aacCHACICgP2fH/R9KAC9cpc04EEAsU0cfv93X0C9K6D/hvxPAwepl845F9BhTs3dB6+bfHu35yIAGTjAzAWuBRxiNoZtgadLey8e3hPQf1P+wsDUqt2AYwGnmA0B34OLGt7/A1IB/Xfkr0xsyj+Zj1MBh6hDo7nxb8L+69f3BfTR06iHtrWhSwGLzMcf561/BixKlxNGBKCIKPrCYsCZgE6XOie2c0vKm0jin5RRASgisuUHHAk4cZV7vZox/7XHSenukDEBKCKy5IgcCJj9ZJ19uRzsfzr+DRkXgOYCbKBWATNzZ1Y3FL+bAfu/G/+kTAhA8QA0UIuAzuxCd/nWPfZz3wP2X+KflEkB0AAYByoUMDt7/GR3ae32N9qOC3n5vyF78U9KRgC8C27gkbAZoPlv/P4fkBUAR0JVntAPXPyTYhAAI6JNbnXsj+/kQk2MxD8pJgEwIiLWBR6JN8FgNBr/pBgF9N+VKgamLjTYQHwZ5P/G4p8UswA0Dhyg84TOgfmP7Pg3JEcAmgvoPKFrYP4rM/8JeQJQPMDmCR0D+z8Z/6TkCgjOQHypwOePBMC7oHnjQHxZf/8PAALgSNi4uWATjP+G+CcFCUARUadh8cB3YP7/vXTHCBQAI6L70nQjQPHvGemMGSwARUT2PKEzYP7vPelKDhYBcGXUlLXhDlr/gvFviE0AXB0r9xHVBMx/5M9/glVA4RyRK1T5nyx2AQ03UO7zpwQUz5Q6APbfdv8PYATAkdDvOBCj5x8o/kmhBMAcke2ZUa2g+Q/GPymcABgRXfMXE6L4h+s/KwB+B674MvC9XIAJ6vufwAqA44CndcEWiP+Z8W8ILQDNBVP8fsLqiO8T+z/s8AJQPOAhTxhfsu//YVAIQAac5wnjVZD/4D9/nQB0FzjOktn3/7GoBKCR0KkBmP+zrH8n0AlA+QGHecJ4DXz/cf4jg1IA3FntbC5A+T8y/knRCoB5QsX5gjJs5e//p+OfFLUAGBE5yROi+Fc1/g3RC4Cr44e1fwdg/k8z/wkFBMAMSd15Qpj/U8Q/KUUEQAP15gdyzj/uUuDzLyjAW47IfP5V0N//A4oJgCPhzec/1sRzlP8y73+wUlAA3FXrBeP+F4KiAmCOyAOm/U8UhQXAHJFz1PFPSnEBcBxwTLHxb0gJAXAucEqh+U8oIwDGAw4pEv+klBLQDAMT+9+VlBOATly6osT9P6CkAP8jYcH4J6WsAN8RUdH4J6W0AL8RUeH4J6W8AJ8RUfH4J6UCAfDMaa2UHP+GVCHAV0RUJv5JqUSAn3igVPyTUo0AHwbKxT8pFQlwHxFVcf8PqEqA64ho8PsnlVCZALcRUen4J6U6Af1PzzpjSZqsgAoFhEi//38kE4/5WBDBEwAAAABJRU5ErkJggg==\"/></div></div><div style=\"clear:both; line-height:0; width:0; height:0; margin:0; padding:0;\"> </div></td><td style=\"text-align:left;width:11.933cm; \" class=\"TableTitle_A1\"><p class=\"P51\">Bulk Crap</p><p class=\"P51\">Uninstaller</p><p class=\"P51\">Documentation</p></td></tr></table><p class=\"P1\"> </p><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"Sect1\"><colgroup/><p class=\"Contents_20_Heading\">Table of Contents</p><tr><td><p class=\"P53\"><a href=\"#__RefHeading___Toc345_1601368371\">1 Introduction</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc1171_379548938\">1.1 System Requirements</a></p></td></tr><tr><td><p class=\"P53\"><a href=\"#__RefHeading___Toc109_1595950343\">2 Main Window</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc219_1595950343\">2.1 Application List</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc221_1595950343\">2.1.1 Highlight Colors</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc223_1595950343\">2.1.2 Certificates and verification</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc225_1595950343\">2.1.3 User rating</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc227_1595950343\">2.2 Left sidebar</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc866_3080419501\">2.3 Treemap</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc229_1595950343\">2.4 Functions</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc233_1595950343\">2.4.1 Uninstall / Uninstall quietly</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc235_1595950343\">2.4.2 Uninstall using MsiExec / Windows Installer</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc237_1595950343\">2.4.3 Uninstall manually</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc239_1595950343\">2.4.4 Clean up “Program Files” folders</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc244_1595950343\">2.4.5 Find by window</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc241_1595950343\">2.4.6 Uninstall Windows Features</a></p></td></tr><tr><td><p class=\"P53\"><a href=\"#__RefHeading___Toc246_1595950343\">3 Application properties</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc248_1595950343\">3.1 Missing uninstaller</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc250_1595950343\">3.2 Unregistered application</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc252_1595950343\">3.3 Protected</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc254_1595950343\">3.4 Store App</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc256_1595950343\">3.5 System component</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc258_1595950343\">3.6 Update</a></p></td></tr><tr><td><p class=\"P53\"><a href=\"#__RefHeading___Toc260_1595950343\">4 Settings</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc262_1595950343\">4.1 Uninstallation</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc264_1595950343\">4.1.1 Concurrent uninstallation</a></p></td></tr><tr><td><p class=\"P53\"><a href=\"#__RefHeading___Toc341_1601368371\">5 Advanced copy to clipboard</a></p></td></tr><tr><td><p class=\"P53\"><a href=\"#__RefHeading___Toc343_1601368371\">6 Advanced filtering / Uninstall lists</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc385_1375324043\">6.1 Enabling advanced filtering</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc387_1375324043\">6.2 Filters</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc389_1375324043\">6.3 Conditions</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc391_1375324043\">6.3.1 Comparison methods</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc393_1375324043\">6.3.2 Target property</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc1266_3965964108\">6.4 Saving and loading filters in .bcul files</a></p></td></tr><tr><td><p class=\"P53\"><a href=\"#__RefHeading___Toc556_354986082\">7 Uninstallation</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc558_354986082\">7.1 Loud / Quiet uninstallers</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc560_354986082\">7.2 Preparations</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc572_354986082\">7.2.1 Process kill window</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc574_354986082\">7.3 Uninstall progress window</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc562_354986082\">7.3.1 Manual controls, dealing with stuck uninstallers</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc564_354986082\">7.3.2 Aborting the entire uninstall task</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc566_354986082\">7.4 Leftover / Junk removal</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc568_354986082\">7.4.1 Confidence</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc570_354986082\">7.4.2 Backup</a></p></td></tr><tr><td><p class=\"P53\"><a href=\"#__RefHeading___Toc1173_379548938\">8 Custom rules, Scripts and Tweaks</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc1175_379548938\">8.1 Specification of Script files</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc1177_379548938\">8.1.1 Example script file (remove-onedrive.xml)</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc1179_379548938\">8.1.2 Standard elements</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc1181_379548938\">8.1.3 Acceptable values</a></p></td></tr><tr><td><p class=\"P55\"><a href=\"#__RefHeading___Toc1183_379548938\">8.1.4 Special elements</a></p></td></tr><tr><td><p class=\"P53\"><a href=\"#__RefHeading___Toc522_1610471585\">9 Command line options</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc524_1610471585\">9.1 BCUninstaller.exe</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc918_3487566792\">9.2 BCU-console.exe</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc526_1610471585\">9.3 StoreAppHelper.exe</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc767_1317069549\">9.4 SteamHelper.exe</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc939_3737477262\">9.5 OculusHelper.exe</a></p></td></tr><tr><td><p class=\"P54\"><a href=\"#__RefHeading___Toc769_1317069549\">9.6 UninstallerAutomatizer.exe</a></p></td></tr></table><h1 class=\"P58\"><a id=\"a_1_Introduction\"><span class=\"heading_numbering\">1 </span></a><a id=\"__RefHeading___Toc345_1601368371\"/>Introduction</h1><p class=\"P4\">Bulk Crap Uninstaller (or BCUninstaller) is a free (as in speech) program uninstaller. It excels at removing large amounts of applications with minimal user input. It can clean up leftovers, detect orphaned applications, run uninstallers according to premade lists, and much more! </p><p class=\"P4\">BCU is fully compatible with Windows Store Apps, Steam, Windows Features and has special support for many uninstalling systems (NSIS, InnoSetup, Msiexec, and many other). Check below for a full list of functions.</p><p class=\"P4\">Bulk Crap Uninstaller is licensed under Apache 2.0 open source license, and can be used in both private and commercial settings for free and with no obligations, as long as no conditions of the license are broken.</p><p class=\"P16\"><span class=\"T1\">Official website </span><span class=\"T2\">and a contact form</span><span class=\"T1\"> can be found at </span><a href=\"https://www.bcuninstaller.com/\" class=\"Internet_20_link\"><span class=\"T1\">https://www.bcuninstaller.com/</span></a></p><p class=\"P4\">Get the latest version or view the code at <a href=\"https://github.com/Klocman/Bulk-Crap-Uninstaller\" class=\"Internet_20_link\">https://github.com/Klocman/Bulk-Crap-Uninstaller</a></p><h2 class=\"Heading_20_2\"><a id=\"a_1_1_System_Requirements\"><span class=\"heading_numbering\">1.1 </span></a><a id=\"__RefHeading___Toc1171_379548938\"/>System Requirements</h2><ul><li><p class=\"P68\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>OS: Windows Vista or newer is recommended. BCU will also work on XP and 2003 with reduced functionality and possibly some bugs. Both 32bit and 64bit versions are supported.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P68\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>.NET: Recommended .NET 4.0 or newer, can run on only .NET 3.5 with reduced functionality.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P68\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>RAM: Around 300MB or more of free RAM.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P68\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>CPU: Doesn't really matter.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P68\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Free space: 50MB or more.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P68\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>HDD: Anything will work, but slower drives will make scan times proportionally longer.<span class=\"odfLiEnd\"/> </p></li></ul><p class=\"P5\">BCUninstaller <span class=\"T23\">needs administrator rights to start</span><span class=\"T22\"> and function. They are needed to access some system functions during application scan, to uninstall applications and to delete leftovers. Some other functions might also need elevated permissions to function, therefore it’s not possible to run BCU with standard user permissions.</span></p><h1 class=\"P57\"><a id=\"a_2_Main_Window\"><span class=\"heading_numbering\">2 </span></a><a id=\"__RefHeading___Toc109_1595950343\"/>Main Window</h1><!--Next 'div' was a 'text:p'.--><div class=\"P40\"><!--Next 'div' is emulating the top height of a draw:frame.--><!--Next '\n            div' is a draw:frame.\n        --><div style=\"height:10.029cm;width:17cm; padding:0;  float:left; position:relative; left:0cm; \" class=\"fr1\" id=\"Image1\"><img style=\"height:10.029cm;width:17cm;\" alt=\"\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7wAAAI0CAIAAACxtbJhAAFciElEQVR4nOydC0BUZfr/35lhuAgqXhAh05SSMCwULLJSySRdKQS3iJSwXypZYrstmFSr5O4/SsxNzQitDRKXsAQtTNMUNTPKmTKxiApNMhDxgleuM+f/vuc25zZXhqvPZ1s885738rzn8p7v+5znnOMy+G/bEQAAAAAAAAAA5nHB/6/5z1862wwAAAAAAAAA6KL4/f0zl862AQAAAAAAAAC6OiCaAQAAAAAAAMAKIJoBAAAAAAAAwAogmgEAAAAAAADACiCaAQAAAAAAAMAKtorm2bNn//nnn5LEG264IS8vz9kmAQAAAAAAAEDXwibRzCjmp5OSJOnvZGfjVaCbAQAAAAAAgJ6NddHMK+ZH4+JUKpVkLehmAAAAAAAAoMdjRTTzijnukUeQ0Yg0GuFakgi6GQAAAAAA4LpH7loVQlFUR1qi0+lCQ0Ml6Xq9PiwszGFLLIlmoY8Ztx8RESFcO2DAgI8LCv5qSTfrV6rCUrkfmToqRWq8MOfagOqcGD9+wVzOmqI5/rG59GJioaWMNiFpzmLrpOVt0W1uUtyQ1f5axbRB5FuY3wGyTSXcNU7Yjlyd8r7Y0kHGGLNmcLaKMpj2Brta0nvRsScoKT8mFY9SiweG4Bh02sYDAAAAgO6POT1qWU87HayY777n3q+/OijUzVgx40S8yuFqLYlmeVTGDTfc8FBUFF7Y9sknNTU1EQ88UFJSQiQ1rZuV6uA0BdEZK/UWZLMt0GIlWEdROezPIj2KaVON9uAXk0PF2Jy77WrYRqqHJtMbRL6Fa4qqIpijFxuTViQ1ht01pJx8pTLt1ymzUyqmSYqSNKnfhFVrYjRZDE2hqIiVqhJZUV7P4jr8VaYW5DrXnqOUVetUjh9j3spqfGjY3lEAAAAAANoZrJWxYhbqZkYxS2S0vViPaZZMDuIee4z5yzuebZo9+A0NRtuqalBoW1yqaUQxmxSNXwy4+OgDg/6XbOFK0RrT9vEPSDRb3i8mOTN2bWlG19yY+pJjhRkpUstqitaiwsLEbTZWEppSXXjMv0SfYu1EsX6Usgchv61CU1JsNAIAAAAAgA5DqJvxz7YrZmTve5r//PNPYZBGSYncvWcGfUlqZjLFuv14b6UFzyV901zof6wp3ZabmZyjmHMtykSpqURRI/5eO1uWbkIXvS2M3E+3+V46XaowODZWGBYgjqmQrhWGSehQGG2Ff640AsBCkIo0zkLUr1AuR2UyV4E0ggBv4QgzQTrVlbnBEQqbzoINokAF2gw2HsFKp6rZGhQ2taVAElMONgKG6V1yZWowmZaJojOwcK1MzplVNcdW0YzVcHh0Yqx11Ww6Ss1g9iAEAAAAAKBrwetmvNx2xYza/+MmubH+vAaz3VYsnsKQjpKWSAzwN9PKMf4OfgpFEd8f0VxFsxiRlRu7NhqvzrEnEIGUqtSR4AaiDTclS0WebK1+Ex04wuWidEggaUMVrJKgX8nf9NevnFNUkxMj7heBOIVVnPTjBR6rRc3Lcf3KsGOF1eY8ojVFa1MTo6uZOYw/1wlS6RxuWzFm5Eh0ulKnLGxqeQflW8EvJkdXqdqkpyJKyP4n0xOUym4DLsQEFaVti87AxlSZ6ZBVhMcks8nsOUq5g7DG/OwAAAAAADqSrvMEXs/GPtEs/JpJBI01Z7PAD6uaY+NTdNvS/BHOKlcvuZXVOYrxo4nR4Vyyyf+ZWMjbkEE3SwcilJipQsHyWbQFoRGZaK3slr1srX9AYmrYHHMBvwpWiampOoZyU/05b24m4xcW9IsBNxfGqGYStzCLFsIk1horWtyEaq1MwFl4elGoFBkPLrYhM5kN9hBuK5kZZjtlflMrdFBxN4Sm6EpUqjCTes1MZjV6RGZuSXVG0VoimckRpVTaEvyUy2JMs9WjlDsI6c2eTNzwAAAAANCpgCxWhI9jRp0SnoEp+PBD/PfT4mL7itH3x81pXjHEe6cgj225w27yUOOlNPlqLNyQ6BUg4mBfsj44wjGvIa2hiOhS5Up9vlas4pG+/0EpT+iswrVpRTUZaO2x6AyRpVhtZqrEUwK6uQz2kTUZbXOR2r2pkZUXqNhEyabY3FyUy0lvfKzY1gkSVhFsPazCdJSaOzDaHpoPAAAAAEC7I3nyT/JcoGNYEs033HAD804M/gUaf/75J/+WjD59+mwrLEQGQ8FHH+FEnNlSO0S1JEZnIFqncpJYX5KKkMzzirPlJG9SzZEGUtDBCWEqxCuvmqKi6hjR2zOqK3MTAzLY5hDdHCZ3G/OYm0JAqt/Q4NywNNa3SN7IkKkTrbcTrJyrC1EaUVVWrZKUxGos1lzohihjeDRK27QJYQnIvL5Br2f3P96aiQHVyBREUb0pNthihK6SDey0hARtZCZbmLjau6lt7aB+JdHiuhIV/RYL4llnCrEGpVDck3fMjMDGl37QYSfWzxLTUWruwMCTFuTvv7LN6h8AAAAAgPZC/q4M+fs0HMCSaM7Ly5s9ezajkuMeeaTkiy8kHzcRKmYzHzfhYwB4vyarfcl9/czMTDNNh6ZUR8/xV20T+xFDU6jqAJzMRu6QKiXFaEmDVydmZpo8hYnBlWkqFTFDHrJKXqwwhy7CVuioFhI9Fkfu3kdk5oaxz8wpWiXvsckQupSZjEQ1xxINyPz0r1qrChOHWbAQ92hqqsqOtzEzNjCbV3FbhFrrlIVNLe+gfFMT9zUdfu3nX7iWialmDoRYpRqtITz2hFuGT2e2CVI6Ss0eGOSOgm6lSnAMyt7tAQAAAADXKR38PmZzhIWFyT9uwujm9vq4CZLoZvplc0KsKWbuUTELySl8Uo54gQ53kJdlA3gl1eVYWI0JmJVDpchSLRUR1im3TWmtn7Svwl7KmlCqSmZIirwnfD5L5nN1Km4LqQEKdSvXxv2w2qkU0aa21EHF5mMUlpRK4XRLdZk59hTSZXvOqrnm6gYAAACA65iuE1ptzhKsm9tipPWYZqFulmBRMQOA7aSGqY45GGPNfxHQ+VYBAAAAAACw2PQgoDndDIoZcAZt89yC3xcAAAAAgPbH1rdndFtxbCYOAQAAAAAAAABspr0/bgIAAAAAAAAA3R4QzQAAAAAAAABgBRDNAAAAAAAAAGAFEM0AAAAAAAAAYAUQzQAAAAAAAABgBRDNAAAAAAAAAGAFEM0AAAAAAAAAYAUimi9evNjZZgAAAAAAAABA1wU8zQAAAAAAAABgBRDNAAAAAAAAAGAFEM0AAAAAAAAAYAUQzQAAAAAAAABgBRDNAAAAAAAAAGAFEM0AAAAAAAAAYAUbRfORNd6TlnI/4vMqssYdXhC4fXpFVpQvXpU9giw4zSZpjfj3gQn1cae4Fp3WkDUrTF1evq9+UYgNhWqLO9bILm0J2YLI3IZz/mFjgzkd3CJN5+0I0RFMQ85cW+1w+uaSV2ihifbcWYLtYs8GcaCZzugdgx1HXSedFwAAAN0Q2z3NkutLVFZ9VHsYhAmZsDz/QE0WYhs7cmDp8gn1yDek/Vo0A9dlcgVac8QW2ezbjpvFBgTXv062hGy07PLly1F2ce11eD3uEjsiZFF9/SIEqkgEUczleRX19NYgJ/YC1BM3Taef/gAAAD2RLhme4TcifumBI4tCQsgPVjN3Jr5DgtD2U7UopMddW9uP2sPb0fT0OJSefrg2queJEqBbgmdyS5fvq+eOR9+o9LztgQU2zYcBAACA6x6HRbOS+4o4bmbnkyVbwxmU8R03PX42q5pNmlnQorghRIdv0O2J8xQMyXLK1ZDYkFTvyxrB3tpluyjps3CzmN8cpjX8KrrgvunbJ5F0k1dfWgfJhpajpUuDmI4LjOF+BeZzP+WbS9xcXtDs2aSE0KPujP2HOM3s64umI6Fq5lqIz8sL4n4fT+La4jZejXQjK1qrtIXlPZC2KDGzx+8IW7psJlFWwPnGWG/EzO5wsJXD2/OXJ2UJUshQw8yH7djvSoeitCOi402xdzV8TqYS4dChMNaRCmdvl4etmRn3+KPOjMFW7DT1tn2HVgAAgG6F7aI5f3YgM5yau3YeWUOi6Oqz6PF/QZvuygsuZQp+ZllDE5ZPYiT2kQPl8aicFmlEtY1Id9QABr7LuMchTJLwlndxHNZ3BbOxauLWCmCDCmkrJWD7uUL0/eFi9kKWPzsbF6jPIonpxcwFT7pJSbbyETgXXa3YmEX1+5Dgumu9ueM4tZ6eBxQQ4XrEXF/sh9XMeGmcQDWbLCGGIJSHfKOSlntzNxX4uYmvZCMrWquwheWbq0bW4nW2I6Qo2mDOMKaEE40xjSEc8XmsVfLNKygl3R1tMCF+hJ/MquNsLJit+112KPLIj3BzvbOxU4oVsoRYGvdqRBtQarA5O2WHQXsNrQAAAN0Sh2OaZdSeKkf5S/mL4vIJfFCyA/iyWmvcqfL4EXHWGho3Ir6cSOyaA+XTk6ZvzyYFedXWBgSOP+8F03l/EOtUpK/3JJJk0gJ5xCjr01IygNi/PCmE6ScWjbO5+O34vHS6Fj4RyTcpyTZ9nMDXJDRGEQvNxdGp+NqLssnmM9cX+zFpZnpPsjfAsSW4iyGcISibbd10Wc6LW2SuXzJrkWwLyw8MxRZt2TI9ZUfYZAMyZxiNM42RjCG0tx4pDh3iUpLd0RZDeIUsqJ/T0bbud+n+4qtTPN6Ue2dbpywfwH4Wxj2haJafO+bslB0GlpoAAAC47nBuTLPz7t8yqvkIMjM+SxryoyX2kOPl0+MWjUOooKbWXEFHjYmfTS62qHgBeR8E46BJp1dFZdXXE1Htne+8zpPLF5rALEvvVgtyyYxpI07ry5GC2fn5KF/gVAziItTlhMTlZacX16aj7HJmj7WpX2LDa0/ZWVxCd98RzqCDjDG/eU0Id4dDCOO+2Crx1CsoKUuSz7b9bgcWKmlDp1jXQruNex3TBAAAQPfBeaKZPC03m7+b3vbqiIdy0uz4vAppdQoN0UN7ejY9mOPl8oIChKbHOW1gJ1fW+OnpCNUcz48fkc6mIJLCNB+VVZGH0mkfjsmieDNbg7afvXLTDyYl1TMr8rcfTidxDKbIS4ub1IwxNjdnJrupL45uvyMHlopciuReL23AkKB8PrQieyl3r5neeXiPBbFuY1v7JdvC8gPDV7lFYf6evCNstcG6Ye1ijNgq80OHfHc43hIJB5q0hg3TpQMSUF5FiNmG7BzTFI835d7J2/IbEc+5wfEZxJe1cAA7PO6Zt1N2GLTz0AoAANCtcKKnOWRRRd6CwEBv5lebvVJEFOHxeZx8fFZoiAzts7czDhAytONlmdi2Hz4Ek9OAvnF5iG44fvnyeHqN6MFA4V1RLDP2HfdmjRRvDMZ+b2+uZm5NfNDxdG/vfGSKoZb3VLgZZMbQL+ubxD1/Zq05GdK+OAjRzKKtb/LvLdqHJYv3Uvrxo+Vou2k9mk2iKc32SxH5FlY4MJRbZOnhO0IJRRssGtaOxkisMrN5FXZHm5qq37fG29vUlKC3du53xdoVjjfFSuRtMYKelEXLly+3VKEJR8c9C3ZKD4P2GVoBAAC6JTaKZnypyTKTIlhF38ltkydIiPRVoxYbEmZ2zjtKuUf+ZDaJGvaV5BJuKMUalKthGBGXVb8oy3JOQf0KtQibtLhfJHZmKfXFQeTHCmlfbp9pH9H2ibOLq1CyVlqd+aIKLZrPT9MzdoRSE2a6bMEwpxljYQyxvHmVdkcbDTHTIzv3u7xHZo43M5UsWmThoJEl1hYvQEETJHrV7LinND4Ll22z02ITAAAA1x1d8j3NAAAAgADyoEB8XnpnmwEAAHA9A6IZAACgayJ4czISfJUFAAAA6AxANHcRlG71Ap0A7IguRYftjq65350b8QYAAAC0CRDNAAAAAAAAAGAFEM0AAAAAAAAAYAUQzQAAAAAAAABgBRDNAAAAAAAAAGAFEM0AAAAAAAAAYAUQzQAAAAAAAABgBRDNAAAAAAAAAGAFEM0AAAAAAAAAYBatVovaJJprP00KTCigF5eX1C8a0zZzcG1L0fLsh+CTVwAAmKO1tdXFpV2m+t7e3vX19e1RMwAAANAzcPjy8/2awOKoivpsX0Y9r/m+zbIZuA45c+bMuXPngoKCOtuQnolerw8NDe1sK2xl7969sbGxFjIcOXLk8ccfX7BgQUJCgtXa7O37v/71L9szO1A/ANiFuQPsnnvu+fHHH82V6tOnz7fffjt48OD2NK3TsPGkoyhKpVLxPy9fvty7d+/2tAu4LsDHFXJcNNee+jEuKo5xC/s+lF3vLKuAHovBYMCi5/Tp0yNGjOBVclNT06RJk8rKygYNGtS55vVU+vbte/Hixc62wg6++uorxXQfH58nnnjip59+evHFF20Rzcievv/973/HUiM5OdkOQ22uH1+/p0+fjq/38+fPf+WVV+xqottxXXW2vXHg5L106VJISMjvv//u7u7eTlZ1Lpa3idFoXLhw4bZt2z755BNGXjc0NOArzoABAxYvXvx///d/DreLB5/i4uKhQ4fqdLp2utkFdAsc3fe+d0ahwKWfVojiKUwBG3Eb6TXfr/GOWMquJCEc/p8mLT1xG1q6tAD/uu9LbiW9iix8u8Y7YSmXAo7rngK+gk6ZMgUPZ8LEsLCwoqIiROvmkSNHwp3xbg3euWfPnrUlp9XZ0W233aaYjkVYaWmpq6urBTebw5w8ebI9qsUKJjY2Fl9lmZ+raTIyMp566incEac317lcV53tdBQHTG9vb6yYf/jhhxtvvPGXX37p169fh9vVyZw5cyY/P5+iqOXLlxcUFOBxae/evS0tLadPn26L0sUyHatwvIBnI7t37542bZrzTAa6GZYOI8Wr4MCBA+l/fR/KrkBJgd7E48NI5NpPlwoCNpZ+emf2Q2MW1dcvorPTKbXLESr4cXhFfX020deopL6eKGMsrZM+LYlCBQknSuihgMnM6XEbL8ZAB8MdCVZ49NFHd+3aJU/HF9dhw4a9+uqrzrYLsIkPP/zQap67774bX2zwZdjNzc1yTnyS4pmPLe3aMjtqbm5++umn169fz1/n3nzzzc2bN+Of+NLVp08fWxrqXPDF+8UXX/z444/lq9LS0l5++eX09PS5c+d6eHh0vG1O57rqbBdn5syZSUlJCxYsuP322w8dOoTVc2db1KEMHjx46NCheA68f/9+SYzKE0884XC1ffv2xdVWVVXh6V9wcHCbzQS6MVbmXhaFEQnLqM+mRe/STyuWo+ICArc2Lmr5Qw8h08OCWFovp5PvJKr622K0cTnrS8bSOhsL5eK4jXFK3mUbxRnQkdg4k5kxY8a+ffvwQr9+/TIzM++88053d/e6urqtW7e+8cYbRqNxyZIl5ksfWeM9ibtRgZbvq18UYi5b9oiKrChHniFtQ9na4gWB26c72K45M9rSF/vAqtRyhrCwsDFjxkRHR+PddOLECU9Pz3a3iWPIkCFYN1+4cGHLli1qtbqwsJC50b9y5crw8PAOM8MxsMFPPvkkttxCHoPB8M9//vO1117D+mbp0qWy9ZLDwOJR0anH4XXV2TbY03HnNSY+Pr53796zZ88eP3780aNHlfzNwqE1Pq9jDHPmvpOChwvmboZKpcLHm2KejIwMPIVzuIlvvvlm9+7do0aNut7mIYAEZ4TmjLlvecGX1cuHy6IqsJoW+p6d0BTQjTh//jyjmENCQvbs2aPRaJj0QYMG3XbbbfPmzbPBN8kN6GSQXzPBnGzuFHyjsuqjbM7doVfNtuPr6/vJJ58MHz68qanp4Ycftl0xm3MknzlzxkZXNObAgQNYHJeUlOAjp6ioaO7cuRRFYfk+adIkG2voRM6dO2dZRPJcvXp1x44dKSkpvXr1cry9Tj0Or6vO2mlPZ57yUVFReXl5WDfjk66urk4pCzu0EimbXtxuZgo2gn37zj4ef/zxr7/++umnny4uLj516pSXl9f+/fuHDh2q1WobGxtzcnKWLFny+uuvu7i47Nq16/vvv6+treWvRzbi4eGBR8J2sh/oFrTpQUASXXHiaVYhf//l0rjhFb53RsUlfPn9ojFj+NX3IXTbEOZcrD5RgIYv58vTIdEF7Bs3sLZ+Z3hJe51OQGcxYsQI/Ld///5CxYzBY9mlS5fsqytkwnKUfaoWhXQT0dldeOeddx577DF5enNz84033ogV86233pqbm9vBVuFG8cVvxowZVVVVzNM8d9xxx7/+9a+//e1vhYWFwpx4FJs6deo333wTEBCg1+s72E5F+vXrh2cO+MKML+Q1NTWKeVQq1dixYz/88EMfH58ONs+5XFed7Rb8k4b/2dLSYjm/b1TS8tnZh9Ojust8Xk5ra+tXX33V0NDwxhtvIPr9IXjc4Ne6u7tjMX3zzTf/9a9//X//7/8xifPnz3/vvfdsrH/t2rXCTfrf//7X8kt+gJ6Ng6LZ96HskjXe3t7Mr+Ul9ST+WJBGopyxHvbf+E4glwmnmauAlPf/tNgxU4AuCX+P7NVXX5XM6b/77rvIyEj7nvw7cmBp/PQKZlgnvpHZ+WRJFrJhWmVaZ7oTySdx2eLz8mTvuhP6h8Q3cPOCZs8mFQm83xbWCq3chybRJgTmMzYomCRH2k3SClqOli4N2lcfd8rsJnCE/Px8vEcGDBjAp9xzzz1YMfv6+u7evVv48qYO495778UyKy4uDh9IgwYNwhoai/j7779fkm3atGlYMeOFysrKjjfSAljll5eXf/zxx0uXLq2urhaueuCBB15//fXhw4er1Wo7a+2M4/D67KxwiJi9XRbFoRTaITphJxzwFrZuqvR4Etd4O3iiJa9/wSfvzz//bHNp4QizKERhLKUt3jd9+yRmy3C2mx2p8tmKuY1gZlvhIhbGdOs0NjbOmTPn/fffxwv458GDB+V58HE4atSon376CdFzcrue5MOyG08OL1y4YJ9ZQA/F8fAM00N+5tO4qGcT2dnmMj9kWuUrWAa6J3/88ce8efPwwuTJkyWrBg4ciHWzbdXkzw7khtKsEDrlyBoSGFefRV9AFxTXZpluUeBVs/F4Xx/CDMoLmJuOIexxRoby4jj6OsdlI7kQyrPRkuP7iNAn196CJOnALlt7pIAzhaZ+HxJcIWUmyZtT7GZ++YiK+npfnDJJWHnbWLNmDdY6WDFj9Yl3DUVRM2fO/PXXX11cXPbs2dOJ7zfF17nPP/8cX9527dolNwOL6bfffjs3NxdfApm7Zjby97///eTJk5LEI0eO4L+KDiSJb9sWli1b9t57740YMeKDDz7A1+lvv/32r3/966VLl/BMAG9tnJ6dnZ2Zmdm3b9+1a9eOHz/enro7+Di8PjvrwBAhOWH9skStH6HzEK+u94Eji0KIhUcOLF2eVO9c967kXeN1dXVWRXNtcbbJH8GPMGbGUrLNs3Ev67NMUR0WRqosiQ+Ca1NWZIh4x9mJl5dXRkbGP//5T39/8hIu5q+cV1555ZFHHnnyySf/85//2FU/vpDhkSEgIMAx84AeBrxuEGgXbrrpJnylbHM1tDsD4QGau9TUnipH+UsDOR/G8glZfF6yanlSCL1M33Q8UJOFfIWu5vg8Jlt8XnoIlwvZOD+Lz4ujyygHisjW+o2IXzppgTlHksQkOcrdjJ8+jq7NcuV2smjRIqx7zp07d/PNN2MJsmTJkr179yL6wZe5c+fu3Lmz7U04TFhYmGJEJlbJ4eHhWNlj+Xv8+HGszGzRzd7e3lhVYFVn7u1yTMcVC2LpLPdzK5Kamrphwwa8cPTo0ZCQEDwbwS3y94uLiopwp5jXL549e/Yvf/nLjh077r77bltqpunY49Aa//73v++8887Vq1cznR07dizeht2+sw4MERbGJSHY1EnMUHbkQHlenNTr5ARaW1vxKbx58+Ybb7zxnXfe2b9/v5mMnD+COCT47cWNMObGUrzp0unMfCKyOFIpIt9W45w5oJl7tRwTLnjlypW2NwFcn7Tt4yYAYBEswn777TdhyvDhw+Xv6MUzeHyVVavV58+fN1uXb1R63oJ04sNghlTJHbwjluyoLV4wCXE+o3R7etA2yFMv9bhJb+986Q1HW00y300LlTvEH3/8ERoaWltby0dcvf766x988EFpaWlbq7Yf3gZzYBGGhRdWzHj53Xff1Wg0P/zwQ0REhNWamYggxS+YMMehuZAhu0KJMmn+/ve//+9//2tqasInQkBAABaUzz//PJ6ENDc3M9n8/Pyw4pw5c6ZSHVj9CX4RkRE0wTE54YTj0BKLFy/++eefP/nkk0cffTQ4OBgv/PTTT7///juWbj2vs9awZVwKicvLxkNZOsoun57u9ChiPMXlH1HAM8P77rtvwoQJZvK28aUZZD8htm57BmSkWCSkjQMaPtH46UFDQ4Piyw23b9+O6Bct4y1j7mXwAGAVEM1Au4CHMMnnlwYMGPDVV18J352Jr6klJSV4YcqUKZZr841KCvJm7gYOCUKzlW+v0qtYjzS56bg8qR4P4Mfz40ek47W1h7fno+npdLZ89l4vySW994ov4fnHWRf1Adla+8AX8Yo8lE6cYILUGplJCiXNd1Oh8rZefL28vA4dOjR+/Hism/FPfN2dP39+x38Z4eabb7b8LeuhQ4caDAasjysqKvjE7OxsrVbLaOiuw3/+858333zz7bffZt5ydeTIEf41sb6+vhkZGRafJaKP0XT29VxHCmZjKaHsubQNx49DizQ2NuJj5uTJk1u3bsVaGR9FY8aMwZOEL774Ap/+jGLulp1VHiIsjgw2nLBsxnHTUTp5M6vTNTPe4PjMdXNzy8rKmj59+p9//jlv3rwDBw4sXbp0+fLl1suLrFQaSwn525lnBslmXJ5E9pOtHZdULi/i8IB25swZPGHjZ2gbNmxYtEjBh8+MLYcPH76HhtHQAGAvIJqBdsfT0xPLGix3HnjggWPHjvHpzzzzDHO/I9t6DHtIXB5igugWVeQtCAz0ZpJND9mQPPQqxlFJ/CghXDmSO3758ngu277l3pO8l9JP+SxHkqGTjjuk1yK7LzUCRI8dkfctTVieP4l9IEZukkJ/zXdTXrkTwFMavV5/4403BgYGrlu3rlMe/sOa2PKHrI1G46RJk44ePSpMdHFxmT17tv3PmbUjV69enTBhwp133vnWW2/NnTsXX8VffPFFRJ8IeXl5EydOxJOTu+66y9/ff/PmzfjUkNcg2v3csewIbT0OLYEt79OnDz6vsSb+9NNP8awAy5fevXv7+fl988033bmzikOE5ZFBfsKGCFoXZKQdAMTr7Ww/8/PPP4/odztgxYzoaIQ9e/YMHjx448aN9o9kSmMpvRx0PN3bm0RW4G6FmHKaGamQ4kaQFeEem3RsQBs0aBAevviXt+BJAu57VJTofVz40iN8kQjzvA0AOACIZqDdwRri4MGDt912Gy/FmpqannrqqeJi8saUKVOmmLkjH7Ko3uRyMr3lk74JK/RFmbLJVikm8c8EEeSvDhWuXSS3hF+WLwiWfaXPyQprlZmkVJWFboYoPITbdry8vNr+hDiWTYrp586da2PNeH519913C33MiP64xg8//HDDDTe0sXIncu+99zIzw8rKyvz8/Pnz52PJgueH+/fvx0q6uroanwjMBR73hYlbUPrQjNJx2ynHoXk0Gs2+ffvw3OCXX36ZOnUqog+h8vJy/Bef3bm5ud24s6aSR9YoVicfGWSdEGUXN7F8Qoi0xTaD5yT4L6OYefCsRinyTXH/ihMV9wnW4nFZ9YusDLHCepQ3grRISBsHtCVLljQ0NOBDa9WqVfh0w7PogICAlStX3nLLLdu3b//nP//Z3Nzs7u7++++/44n3448/PmPGjLY0B1yfMHczHBHNK1ascLYxQNdl8eLFDpft16/f5cuXW1tbsZLo378/HqpuvPHGo0ePfvrppzgRZwgMDOz41wADPE/TOLFC279gYhcGg4F58k+Y6Orq+vXXX3cpxYzoN17h6ze+MDOhR+vXr9+wYcNzzz2HD/7IyMjDhw8z2dzc3GbNmoXHUnPPLXUXsG7m31eAz+Xjx48XFRVFR0f3yM46gdri7PK89HZ4BPDWW2/FQ+vp06eFIXB4mL0etnliYiKz8Pzzz+P+Ll26FE9ZY2JihHlwCtbNeGHr1q0dbyHQA3BcNGP4l4QDPZuXXnqpLcWDgoKWLVv28MMPNzU1nT9//r///a9w7ZQpUzZu3MgMZABgDqyYJ0+eLFfMe/bs6ZrvgfLw8MDCsaKiIjk5+dtvv6Uo6k0aPgO+tC9atMjqI49dH6zJxo4dy/987LHHCgsL8Xkt/HZjj+lsm2HeRkyiHZz+CCAGj6V33HHHk08+uWPHDiYlKysLj7oh9GuHrh94TZyQkFBfX4+vLx999BGiv1GyZMkSByrEcz/hS4SKi4tramqeffZZZxgLdCfaJJoBwDKRkZHMwl133fXnn3/iWX5cXNzvv//OJGINtG7dOqFHBOhgfvnlFyfWNmjQIPu+VmMzWHHed999zFcJeNRq9ddff901FTNPYGDgrl278GbBRzv/7ZUFCxbgaWTPmCjiycyoUaPOnDnj6el59OjR2NjYH374YcaMGSUlJcx7AHtEZ22KVLENMxEPToJ58BqfF76+vn369MEX+IsXL+KUzz//3EktOHFTtCPMMw/4yMQqGdHzuk8//bSxsXH16tWOiebS0lLmW4MMeFq4d+9eEM3XIczXc0A0A+2Cl5fXiRMn5s6di+hHtbCAYL4fAXQR5K//65qoVKr33ntv0qRJTU1NTAo+nJwex+zAF0xsxNvbW6/XY5X/1FNPMe9v7jFoNJo77rgDq7Ty8vLevXvv379/6tSpv/322/Dhw/H2bKdJFMAg9NxHRkbi0wQfZvgvnqF9//33586dc3V1xXsHT9vc3Nw6z8xOoLa2duHChfxb1fFw8dJLLw0dOjQ6OtqxCgcOHCh5RV0nfvIJ6ETA0wy0L/369du0aVNnWwF0b0pLSwcPHrx379577rkH0dGxWJy1RxwzViHtp/OMRmMPU8wMH3300ZUrV/AMmfm5ffv2S5cuYUnBx5gCTufxxx8/ffo0/9PDw+PXX38tKirCy6+99lpSUlLnmdYlwHO5rCyRR9zyO3msEk/TNqOAnoCTRPO5A6te+fh3evHeZ9Y8emuba8tFic9PGNBWs4AuQTe/M9vtCQ0N7WwT2gq+4NXW1n7zzTdHjx7F3dmzZ8+tt9o0ytjbd3udzT1g2zoFXjEjWq90/Ou9eyrmDjBJYMDPP/8cHh6O6EdOH3300Y6wrPOAkw7oRJwimn/e/IoubNma5wcw6nnzz22WzQAAOBEmrrH7wr+BAaP4SW0L2NV3G7+S7XD9AGAvthxgeA55XUXCwEkHdBbOEM3nzpy6KWwy4xYeMOH5NVayAwAAAAAAAED3whmiecBtYeiV3AO3ieIpTAEbN/11GVnz8+ZFbx9kV5IQDp8Dq3JPD0EHD/6Of91+lFtJryILP25e9PFBLgUc1wAAAAAAAEDnQT+Mrm5jeMaACc8vQ6teWfQx4iTyuQO5goANWlDf+uiaNUyoFZ1yLhGh308NXrZmzQCir9Eza9YQZYyl9aoDz4Sh3z8+/Rc6P5P5VohvBgAAAAAAADoHtVp93333oT1ftf3tGSQsYwKiRS+WyIlI9/vvvzMqmnDTj+cmTECmhwWxtKb/ht1GVPWPOvTXRNaXjKX1rVgo627662TwLndb8IHV2SYAAAAAAAA4DaPRyCw475Vzt95+79tH69BgWVQFVtNC37PTGgS6FCkpKZ1tAgAAAAAAQPvgFdMm0UyiK07/hVXIPx89eNPgyQNuC7vp46M/P0reCsWuvh2hIYOYGIu6078jwUfg6JDoPT9PeJQNz/hs8DNhbbEH6Fx65JtouzKXL19+4403/vGPf8DL9juS6upqf3//zrYCaC+ut/3bHfvbHW22TA/oUVfugqJt9r6JhfEMtkk0D5jw/DObFy1axPy695k1JP5YkEainLEe9vnrZ69wmdjwDKUKSHmfAzqFdrCePno70ebyBQC4TsGKOSkpadKkSVg0Y+kMuhkAAAAA2pW2hmeYHvIzn8ZFPZt4/nlzmSeYVg3gl+lwZ+UFALgeYRRzfHz8Qw89BLoZAAAAADoA+Iw2AHQzhIoZ/xw5cmRKSgroZgAAAABoV0A0A0D3Y/78+ZMmTeJ/Mrq5pqYGRDMAAAAAtBMgmgGgm4GVsVAxM2Dd3Bm2AAAAAMD1AohmoD2pKZrjvy26OifGj/uZhjK4XwDQcyCHeiz/Rs1MHZUSqpRHcvxbOCPgZOla6FeqSiJMe1Xys6exUqVCwmOYHN6VyV28v20/ZZgaMlCa/Dy1enZ3XwS9a5eutXf9TuVvf/vbm2++aSGDg6L5pZdecqwgcP2RG5tmks0A0GNJLGSPc3LpLaqx/ZgHfQwgwWHQBY6HWYWJaVU1KJQ1oaZ0GyrMsFXtdAH7LeGYefzZTcqrVipOILp4x5XRrySOLSrHj1G3K/XVAWud2QuH6u+kLYkVM7Kmmx0RzYsXL3bUJOD6I7GwMDh2k76rzy8BwGn4DQ3OLanOQbaO+H4xOTntaQ/QvegCx4NfeDRKK62JYWUi1szRGTYLmC5gf3viF5NRaN+suCtTU3UsMXoW0xO84yjyrzN3n7z+miLn1e5MGMXML5vTzRCeAbQ74bMKt4mHGP1KVVgqu0zu1/jjaWVlMEpNzcUaWxe9LSw2l5vYm+7smGb6ANClIdeJgFlCZwl32xehyk1zVKnkgBbcqORyIu5gJ8d6OFlTulIVS58pbG7J6YD4E6fr3/bsmdQId5l8vJLvoBpTSmZmaqppGKwOWBubm4tyUWE1Ex5A/40OjjVzALTziChUzbxmNt+7wsJjsaZDt9TkMmfz0+bTx7m0R05HqRXBbsLXF24758RUS69EtjXBzYrFxQV7UNT3rn3lIjvaP61IYCI3HAl6x+0+B3okrb+mKM3C9jcpAYzpXBCPommmPE47iHjFjLWyZX8ziGag/fGLSQ5WEWczNySFplAU89Vt5kY2FhO5xwKqKSoDn5ZrEbNARuzw0jTBnZ20ovAuPPgA1zu5sf4COeOHlBwqualIR1E57I1KapZwnX5TbDBeSV+cNumrA3CFlfg3xcd7yE4H/sTJaf/eAQqIdxk1q8qWHWRKYT4xxmQunZVRmIhYrcnllB8ATHusgGhPTKqZ08xY7pjrnX4lCYEWHLpMrzhrTUe7tEftM55LWxkq2E0lQ6u57Yw7Kb8S2YR/QOKxqhoUIyou2IPybdV1r1x+MTnVaI6/KhZxcyEW5jJNR7NHhDreI1n9GRa3P68E0sTnghDuDGKPK+fNvRiVzOtmRUA0Ax1BaIquZI5gSBL7S0hyYnQ4ORsFC4j2cOQSuGKJ0RkxXXbsAa53JP6XGuU8s+gRHkuSxNgS/awAwTp8JU4NU6WSaqgYchOTy8xVKDsdkqPZ8wXoHKS7bK0tO4hPkQ+DEuQHgB2RxW2FU83hvGY2f/jJDl2xteRo31ZVI+9ROyFtRck8Bqu7QJnqytzgiBzzxbvZlYuETZBZHJ77pBVVC7cCO/EJVdj7dvTIUv1mlYAFuDOIHUVTQp1yTAn9yhZ0M4hmoGMInRW9Nm1TMEIB0icDrPhL4L4z0ENJDBDfDWYvLfjKolKRm71KZcSnA76Sta+JAA/rXGQfjWMicJBfqHSX2b6D7BoGOwNGNesRF5uBzPfOlkO3EzFnnqO7gN37lot3wytXaERmbkl1Br99eMnM0OYeSet3xikgHUUdRB6JATHNQCdDx2iEpbLT8eChzLUHz9hRgNn5vXAi2S3eeQQAPMLHAfnjPLeSSSGuqODkHFRlys+/nzGluvBYWpVcechPhy6nTnow4qc7GVejZJehWXbuINuGQZMJJDy0Ax+qplXzWu4ZQAuHn+KhK7BW4WjvSCydWXbuAqY6LCWTKT+kN1u8+1y5RNbpS1ITA6pNqwSS2dEeWaifxtr2t2kU7VDaKpprixcEzs5nlpfvq18U0laDuhC4b+koPSvKt53yX3eEzipMTN3GLKz1V6nY5MRC80X8YnJ0xDvA5KvO6ZrjDgAoITjOExMTEXOpJreJ6RT6cK4RyAjyUP42f38Vu9K/VOaklJ8OXfQ59B5JaEp11RyVirmXzI5GoaJd5ueH7NhBsmGQ6IMw/1wLnlr6vQ18GTvCCRyE6N7Ybdx7M8wffsqHrsBa+dHekUjMC8Xii97OVIrNVyLhEwu8x9X8HqRSusuVS7hT6Z7xYcREkaLcXHq4oiPPHOqRQv1IH2x1+wu2pMIomnhsLXMidsambZNoJop5+/SK+ixaJh5Z4+29pp10c0fqUdC+TkT87iFyk4x5yoANcTLBZuPzmwqaHhoEgK6L0mu2/OTHueQ3V4otK8ovqNDs6dCz3+3V1ZDvT3mStR0kOE7k1fFlRUcFEg+MTBnycZWh7R4laxqyGcz2zk/x0JX00E/xkHaqtXSdCq2IDDE9fmbuSqSw15SetrWwB7vRlUtqKLfRZJ1zsEeyYqFWt7+lPETTR2dQnTbytUU01x7ejvLSeXEZsqi+3gkWKeIblZXVXnUDAAAAQJdH+K7OxMLqbiHJAKBH0QbRTDTz9HS5P9YUsUHHaxDH7fEgtHRpPorP2zd9+6TZZKEia9xhPp2P7DiyxnvSUrYakuRnKkuXiUJc3fQvX6W20PSg2bOXIiQJFzFnhqgSnJCO0mfn56N8RBYxh9d4i2qTtIjEESrxeemOb1AAAAAAMEe3cV4CQHvhvHsUlZWVtmcOCGCDppz+IGBtcfrsoH319SG0mFxzpD4OofzyERX19en4dzZiFtIP147j0rO4nItCiLN6EVvNgvTi2nRBWbyMjhQwdZMCBbjqUwptzT6OU+q5GoRRFopmRI07nM6FmJAih9PT8+IRHZ5RWyyrDWcWt4h1PZdCJH+2szcnAAAAAAAA0AVwtmhmQjZCyKLvuOnx20/V4qX46eOIJBUsMDA/mZyzDxzBolnutRUV8RsRv3SS91LiIa6Pwro1W6GtvLgQM7YpmoENzieYMiVNFxQR1ybvXe0pPoVYZ+/mAgAAAAAAALoDbRDNWDYi4qp1zhNz8SP80JE1gUKnr0KTUVnEM00eOfRevq9ihDMaRtLXftQWb3dSvQAAAAAAAEDPoC2eZqKaA9OLK9gQCBKQjPZV4LQCEmpB+3CDkrLQKbMV5B+vyUK+iM+JCRrCSPCa4/loRLokP/u2jqyoRRV55emnUJwdbVnoBOvlZuo/nmRBi9M9FrXo6ydKQdOlNgMAAAAAAADdnzaFZ/hGZVWgBYHes5mfrMM2PQ8neSPmYT2sJc0L2fjybG/vfD4nQnF52UxRem2evL30vO2BgVzdvr52tGWpE/uI5xpxtfgeCcqfFJiv6MkmFohaREiQEg/hGQDQ4/H3d8onqIAuyvW2f7tjf7ujzZbpAT3qyl1wom1tjWlmAyYsJPFvi5Ms1BYjND29XvQqOXlt0rKSDObaQrK31Jkzg2B6/lDyU6E2uYkKmwAAAAAAAADoUcBntAEAAAAAAADACp0nmuF7JQAAAAAAAEA3ATzNAAAAAAAAAGAFR0Tznj17nG4H0GWZPHmyE2urKS7yT68TJATqdBNDndgAAAAAAABAO+CgpzksLMy5dgBdE51O59wK/aJiqCh2GQvoNBQCihkAAAAAgK4PhGcAnUXVpvT+ybq+nW0GAAAAAACAdUA0A53EkRPH0kNSOtsKAAAAAAAAWwDRDHQKF4veOx/9stTN/OmBk51iDQAAAAAA1wkPTRjmWEEQzUBnUHty28jQHF9pssPHMQAAAAAAQLviBNFct/P5sKQtzPKLxSeTRre9SqCHU3O4Mvi+mM62AgAAAAAAwFbaKpqJYt4VqTu5yof8KsseNizbFt2Mi2WgtFVTfexaBfQQLpZ+jgJe7mwrAAAAAAAAbKatolm/C2Wn8QJ3dNLJNsek+kxdtaqtdQC2cPTo0dtvv92WRGdzsfLr/hGy2AwAAAAAAIAuS1tF8y4UmSb3CZsiNuh4Ddp5HBmYlPQqk6Qb9n7Sli1oC8rWrZp6OntY1KtsOZJ7MO1pTkMZoiLEe83XOpOUM7VaplSDsOz4Q8OiEOsAx5nfH6YDR/aVK1c2btw4ZcqUyMhIPnHXrl27d+9etmyZl5dXezY+NEU3tD3rBwAAAAAAcDLt8SBg3c6MpMDikycZmZtddjIWoS1JJ3HKSSb6Qh+blj0TsTEYPkknTyax5Z7P2FmXxlUjKrKzbtUNhUytpNLCMkEMyGh5DeKypLmwQ2VJo0ejskOvvvjkyetdMWOwLMbi+JVXXsHLjG7uKMUMAAAAAADQ/WgH0VxHh2zQktYnNHLmrj/JR5NnZseaC3QWPkg4M5vXzLIig4fNfDVq2KvEzXxyqpUaJGV9pj754jCimhHWzOPhrWYMQt2MAcUMAAAAAABgjraK5ki0S183tQ3BDmXZ/IOEdBSHeXymrjp5chX9sOEw4Vs6bKph9PgXow6VjUcV2bFJDtva8xDqZlDMAAAAAAAA5miraA6NRGEZO7kYYRJdjIp1OI2Jn6jT79oS+OQq9KfFOgJvYDT36ZNb0LA0c7nY93Ssmpqky67I+LMOjfaxpwaimqOiZmbrIDRDDKObmYXOtgUAAAAAAKCL0lbR7DN1lQ49HzaMdd+yHuC0bJxEPlNBYimwdpaJZp8bArdEhW0h2WOz32fyIjq/hZbSsneFhXG1mrTvaNtqwKoZzRwWCppZDshlAAAAAAAAyzghppkNm7CQJHyLHLfMP7yHZMWZDPIi8pzmDFAoC48AAgAAAAAAAI5yfXxGm34p3cxsHYQzAwAAAAAAAA5wfYhm00vpAAAAAAAAAMBurg/RDHQ4KpXKrvwURbWTJQAAAM5iz549kydP7nmlAACwBRDNQHthuw4WKuyaojn+sbmClZk6KiWUWdSvVIWlikoKVloDFy6JYHMLK0osrM6J8bOQ2ZS0NkCeVSGnqAWxhVwl1cqlAADo2rz00kvNzc3Tpk3rYaUAALAFB0WzTqdzrh1Aj0TR32xZTPvF5FBUDvsDK+hNQ03KMjSFolK4H0SWooCqOXOqMuSiVwSvwzMFR605ua2YmSSvxRq4UJ57LdLlyOrRrwxLZRrAVs4p4qS2qZLQFF2JaqUeZHNPAB8yacjaQWixuGCaaOs0sI2NAo7yzTffvPzyy/ZK0q5fSkY7eRnaC5OJolNI0alBX1dy+K6ZMpipxFQEyTLY0K7VredM5Jtd0Q+FlL06XG5TKv0b0VaLKrKhIyT/tmg+WxcassgeSXH05rYjohlu/QAdg37TtuhZOcqrVoYdY87aGKvVMDqcjGJsQk3VscSAWTZmpgsUpW0Lzkw8JjcwNjhCfurpS1LxkEKPOVjncx0QVxI6q3DtJj0KBdUMmC5A5LpSVNMlriuAAjk5Ofjvd99918NKiWlHL0M7gY0IQzqKCmXsod0RZgxD/HVFmkGpElGRDJwqyeBftBZfhyh8wvKnrl1bz9kobXYFPxS+vrFm4yWZ8yYxMfFYVQ0KpUek0m24L4n8Oq4jdHfDrY9UubFp0R03c7KV0JRqxw9NCM8A2heJX9mOWGd8/h+LzlA628johs/5FD928pqB0tIqg1FqKjNU2TI85cb601Nmmyb+RBsnVweslX43B4vjzAjdSpXqmGkiHqyjZlUdQ8ERMl+MpBK/ocGpJfoUUM2ACXxQ5JZU56Audo0BWJiPp2Leeeedp59+useUEtN+Xob2ghjBLYZHJ26jJZ+SYYi5O5icQ84wSQbFSoRF/JAsA6rMDY7IoVO4U9euredcrG92dr7gF8qpaP8Ak0DmiY4O3lZaE0MujNWVKFOpRhtHqsTCwuDYTV3wlqqfdWebOUA0A+0Lr5KxeuaXhYnmCuIpbjAztklXFKURaSqWurnHAqrJdFrmIlCiujKXFct09qGWs+tXEv9DKCqSGUIPhqExFNbNaUW66G3ELFxVTRWemZfMUYUJNLxCJYrDFdCNEd6+TJTc0KSPAzLHY2Z3ZqZ23PVVeEOXZPUX3OhkbnrqomWNck1IcnY9P083Yu/evQ888IB8mFpAwyx7e3ufOnXK09OzG5WyG6d4GToC4hrFFw6z6y3cvjRXiUIRNoNQD1saz+3aeg5jdbPL/VBmtlZ4RHAarZr1JceiI6K3yUWzzTOB8FmF2yR3zyRDlg2VdClANAMdgVAxy38qYYp8YAUErz5pHSA90xKjw+mTkngAYq05cE0xExKPggJknCnMSMELlurTBavCYjOJKmaQaPhZVdYrAbo57GSOvXmbJkrhjgPTkSGCu6YyV1V8LPrx0fvcXd/kzNi1pRn4MkYuc5nJOf5V25BSEymynKCY28D999/f3Nw8YsSIP/74QzFDcnLymjVrul0p+3CSl6EDIOcDYkPjlNdzbmabK1EoYspQZYNN9m09h7G+2SV+KD56WcEc/wC0FqvmoVgzz5qFtplWpIapmNk8O1JZxy8mOVhFnM3+XLPSIaubyWYQzUAnwChmS25mTqoi8eN/TChziuWTNTHA31mG0jNxAvszFym6CvC0G//l/Ax+Q4OFGn5bld6mSoBuDT5SUGFGqHIKfzeXn92JkDugxE7rDDoGHhHnTzhXaZWZJkJlOYE24eLiUlVVlZaW9tprrwnTtVrtt99+GxIS0k1L2YGzvQzthPU7Kza4maWVyIqI7uXYYpY9W89hbNjs0idw6DiSjKI5qpXJMuGKLUWbqvWVqcERKaKZAe8bVgqGNgN57H1OUU0GY6jCkNW9roUgmoHOweI7NMiJJQ9nZh/UUBwScyuZ+CprN+fYevwrmXECjyMoutrCOWt6iEL+7C8X1oWYqbOuRJXGvCgjNCI4jInjYs1RrKSaD4cDABHM7RQqx493WjOXsbRSPWLPDAuXa0lOwBlkZGS89957dXV1fMr9999vVY92/VLOxjYvQ3s0bD0WybqbWVaJtIgkgzCyt1PHc+ubXeiHEmBOuOL0Y2lrUWZyihl3ul3RhaGzotembQpGKMCm3nRt2iSaj6zxnrRUnLR8X/2ikLbUCfRI5MEYlpzNdGwWJdPM5Dne3FyV8E3NiYmJiA7uTDy2VqUiQwZx2lmZ/WIhTJ7eoy1KZP3WZl63bJnQiMywtXOO5eYG07e4QnXBKv85ZLSi3yjHNKB89wvR3unMCNkYBnRXiFT1Fz3yIkjh5nK23M1lCB7KHP/4UowCMvjqwmLxESuYt8mbMJMTaDNCPYr5/PPPe0YpqzjLy9CO4Gmm/EEXaR5rbmZ5JZIi8gwm6Wg2yNeerecwVje7yA8lMMmsl4kMIrGVZBagOD+3xTslsi85WBWWmliYoTxkdSfaJJpDFtXXL0K0eD4wwSliubZ4QTpKz4rybXtVXaqt6xVz7mQr3z0JTVESmqI354ioKUJ4QKByFFcqVip647NCkwoW4OZl9ZM74ZuGUlzeUNOrH2UNSCsx87Y6oNviF5NROMefmx2SmApBCjOXq7FRNJP3EfI14bJsA+HRifhAF4V3yJowmxNoE+vWrWMWli5d+uWXX5aUkHcjbNiwYd68ed26lC04zcvQbuhLiCuFC7dVfN6OhPzKPTEWKykMjhUVUWqFiEF/5kzN1ClWr7T1OgbBPhL7oSQmKXuZBC8TEcDHNJt3BymDx7TE1G3I3JDVjYDwDKC9sPdL2t0RPIFGjnykhHtoA+gB8DMhflpHrla0p1gy0VOaeCkmKk8QSWqMaTnHfFZhTsAZrF69etCgQZWVlV5eXvjnmTNnRo8e/fLLL1uWpF2/lHnaw8vQXpjxUSCBYcqeGGG6QiWUNKu8FTNNW9567YhgswtskPXerEny3WZ5qLHNFCQck+ytp4vhfNEsjNkgwRp+xQvSjwfh2W/+8n0VI7IDZ+cz6+LzKrKifGuLF7Ap+Hc6Sp+dn4/yEb2KyVbLF2frC6lVrFCyCpkiRURNZEUhYR7SVl7Q7NmIzYuNzx5RAd7nbkZHDs9SzI3F7VEK6MpIvvsFkTc9ilmzZi1btoz/ieVpbW1tQUFBS0uLVqvtvqUAALAL54tmLmaD0bvFtelYmZaPqKivzyLqNWhffX0IGxpB/knfPr2iPsuXSTmcnp4Xj2QhE2xxWv2uOVIfp1ChbBWXgjW7qInicbw96Vx4Rm1efOCBI4tCQtCRA0uXJ9WDYnYCVgIwAKCn0ZHuJKCjEepRnri4uO5eCgAAu2iH8AyTZ5f4dtPJ3+njiGY9vB3lpYcIcx7enk/gfsdPT5quUCFTHCHfcdPjZx84EjdCXiFZtf1UrVJmhSbY4lyab1TScm+imhHWzBPqnbMVAAAAAAAAgJ6D00XzkTWBQs+u1fzi123UFm+3nD1+hB1h9Gxm602ETFg+6cCRCag8L26R7dUDAAAAAAAA1wnt8SBg0BAmwKHmeD4akc4n+46bjgILjggELOsNJoERtH/6eFLFCIX68o/XZCHGs5wflJSFTskrNK2SZPb1s6kJoponTYrPq4DQDAAAAAAAAECG00VzSFxedqC3N/srPk+wyjcqPW8Bv45EbvhGZe1b482kkKf0QnyPBOVPCswX+4bjy7O9vfO5LKj2lEKF/CpJZoSkTaBirvQQQVtYNaP4EeNAMwMAAAAAAABynCKaQxaRh/tYsBAmD+IJyMqSrSNvdmb80abnBpHCT4bp6fWmOkgl8grNZVaoky8uTIdHAAEAAAAAAACzdOR7moUvo4vPq+gy0cO0XV3JIAAAAAAAAKBr0ZGiWdGLbA2hX9m5mXkcsgsAAAAAAAC4foAvAgIAAAAAAACAFRwRzXv27HG6HUCXZfLkyZ1tAgAAAAAAQCfjoKc5LCzMuXYAXROdTtfZJgAAAAAAAHQ+EJ4BdA76tevD0FQqeWhnGwIAAAAAAGAdEM1AZ1B7dO0vgZlIX1Q7NAZe9AcAAAAAQJcHRDPQCdQcrkQP3j8L7U07fDEmqm9nmwMAAAAAAGAFEM1Ax3Ox9HMU/XJfPxSA/n2yJup2v842CAAAAAAAwDJOEs1l2cOiKrJ1q6b6IFS38/kMlJaGMvBfOgEARNSe3IYCMkhUxrBotLe09nZJhManB052jmEAAAAAAPR0HpowzLGCzhHNZYdeffHFF3fp66Z2vEhmNDpW5/xCR1sA2AcTm0F7l/uGP4j8N1dJHgd0+GgGAAAAAABoJ5wimuv+rHhx/Krx6PlOUc0cPlNXreqstrslR48evf32221JdCpVm9LrclFBbjqfckKfPDS0PZsEAAAAAABoI84QzXX6XYHjV6HBf6L3iWpWzrPz+YyTgejVV7fgHy8Wn0wabUp5sVg37P2wJLJGuopLYWpg88wkcSBImAdtQdk6PiBEktPHVJT9DSB05cqVjRs3TpkyJTIykk/ctWvX7t27ly1b5uXl1V4NHzmRend49Vo+jvliUXJByZGJoSHt1SAAAAAAAEDbcYJoZjUzQqGRKAOrZnM+wy0Vw3QnT66iJWx22clYPoUkBBafPDlavopLSRq8M2NXpO7kKjZmemdoGpcnzRSewZgjzbnqhsIkunpSV2EZI8Gve7AsxuL4lVdewcuMbu4IxYyQ/suKxAfjBE/+9Q1/0Cf2y6qUEHhhMwAAAAAAHUFAQIADpdoumrFm3vLqli2vMr9mRqaZE80zI0NpJ69PaOTMpENlscPYFFwByk4bza3a9WedUuZdWwimup6M5IrLzRHnTEsbNvPVqGGvEjfzSWU/+PWJUDdjOkAxY0KT5+eIU/yiYqh2bRIAAAAAAKDNtFk0Ez8z7SWmf+x8PkN/OtJKEczMYYNtb4LNzMVpsO3u3GW2gDgnZhVxWpdlDxs2TLbq+kaomztAMQMAAAAAAHRT2iqaiZt4WBr3y4dEaBw6iZDS2w+2nDy9CjGe5S2BT65CfwoKsWETplWSzD6DaYdz0ujRTHDzySd1Zl6wwLqmRTnfD9sVqVs1NUmXXZHxZx0aDVHNAhjdzCx0ti0AAAAAAABdlLaK5sIkFKkziVAigJOStszMTpNnnVnx/rBh3ON4WCD/yReampb9fNiwYcJVkswITV1VTDzFiE/ayZW+IXBLVBj9NCFbmySnD0rL3hUWxlUPilkGyGUAAAAAAADLtFU0J50Uv+YNS9aTbJLsBXCRaScFacI3xAlKKWcmjE46eTLJ9JMvbkqXp5itHgAAAAAAAABsBj6jDQAAAAAAAABW6CjRbNeXR+AzJQAAAAAAAEBXAjzNgNPQ4/8BAAAAAAB0YUKRg58hBtEMtCNJqjDhz2ydTr+ewKdgla2jdB1uFwAAAAAAgH04KJp1OhA6gBUkipklVDS9wz/CVGGgmwEA6BZ8u+fbOyff2fNKAQBgC46I5smTJzvdDqCHoaiYKYoaO3asJFFZN+s3hoVVZlanR/iJc9eUpKehhTkRA5Ft6ZaRtMJXghf8U4sFGZ/T6RIcvJkDAEDP4e2X3m5tbh0/bXwPKwUAgC1AeAbQcahUKqybbclZXrL6uczn9peejYixTwbbhaVWEjN38hKciOmSs/YqcuC6ogOmeYK5XEfP4hyblHYK7WzqsW+Ovf3y2/ZK0q5fSkj5yrCEVHopc6MuJUgxxUJmx1bxKfyxLU9xks1nS+bsGJyTgJQzlG9U6cKoBJG55ouYaUVcCRkcVituB4exZQOakBlgduMwg4wpEXd8aiqir4YiX1KUwlgngeTfP1Huk2pLt51FTQnyg5hmoMuTFKYUsKHA2dPHngvLCUNzys7GtN85ZnMrfoMDcnV1OahLnO1Al6T9p3nlG8kVSJfux1yNNpZLr+tiutQlyil0gR59mvMp/vvzdz/3sFJCzhalJ6CNOiqIEUwb9boE/5KCY5k7KbzlccpbJTUCtVTjyCqFJtDGBDYzlpv0sa2XpTjLZv2O/dHT0vHhJM1AC8RcnOO5jZIG6CILi9KnWm9FXkn5xrDVjJDFUjW9aGd6m4cImzagKbvUgIXoLWlxoYBMjIo6dvosCiJW1pTtx31J5Nc9t5GpmXYkjbZ+Mhanpk3c2ZNGIRDNQMego6gwlcrW3PhEDQ5LRz6nUUFZTUSEn8jHhhIzFyJhCncao1M75oStzkWiE5vNozQtlrdi1p7TlYlDptnRXeB6o/2neeQgnDiNOUr9ItJtumEDOJkNr2xgFra8s2Xm0zN7TCkhA2PSuVC5gaOjo/ZXncVDazEZKknK4OBiXXU64kfLakdWKTQRk6DLYVJ8hiRWnq5BQaGyFPNDtD02ny1Zi+JyBiK9PMPAiBydLoc4icXVs0UGIltakVWi161OzNxJq9KgFF262U7YgU0b0DRJkBsgKx4qHLQmTgzez14Tq0+hzOeijskssNGRlJiZGZy6Q9+jghtBNAPtzhv79iHyBGCoXm/TO+nOlu4PiEjHC6Oj0VvEdYdK0lIDdDpdKH2baS3JwqfgOffUleW6WQjlriYPqOZwKSk+JWkCz5xsWixrRXz656ZOzeV/EBXek+bKgJPpgGme3+iJaOpbAjcVucGKTDdbCwKIA2lqLCkdVbhx4rbU4lxULL2vSleL8OlwKgCtxk3TORNSyQKpmZw7bA1K/jDa1zsxODVVdBcY64ME+tYvlyLpaY2pOZT43HPMgkKXJZmfey5z9epUtuXndDuHrDXfI8UN7gwO7z38zAPPyIPKMhZk4P+Y5d7evT879ZmHp0c3KmUbZ8u2FQckp5+tqowKYJ0GPgFRlQKN5dgqeROmBOLaDIjLQZZS2mIz42a21TwkLGJHK8KsVZUoOKz97pda3YAWDZAVpxkdEcBcE8tLKidGTNwvF802O5JGz8rcLwluVBgJuxMOimYbnwXcs2ePY/UDPYZsnY6JyggNtXGySU7j1bnFzGUYJU5cGI72o8yFTGn/IVGIHhe4lIHhE6O2nT5LcmZO41NideWzhuzPLS7O5R/ni5qYIXQny1qROAhNMc3kBpZOnxDUg+bKgHPpkGnewIicnWjO1LBYxCrFWZlR/rrylKAgVK5LfS6OqtuhCthI6Yju9NcNrs7EZwodzHBWWi2WUrmVQ6p1ugycswAxC2llZ2MG74jla9ihfEM8N/UUtpniA/1Hl81JQExPiXpOL6leiBR6yje3nyyIumwmcw6uMCEhhW6UtFU2LcN8j7AZ0g3uHMbdP660ufThEQ/X/lGrmCEuOS51TWq3K2ULZ4veIsGseJNWOVDazibYn2TOhqdeQchsiq0VKtvMuZntsVFexN4tE4V06aoEcilyXkyz1BL2p/LmMmeApLgJ/yFoLRkQdMcmTpuFr788qxNUzDWTDEE2bUe/iLjgMOJs9mfblJ7yTt0gHYDjnmarb50LszWAFeix5JWX+/uz50rm3r339+1rvQxx2jHhVogWrG+VVU+0u+HEIT7kH/MTWXkrNRERynUNjEh+LqykPCG0m53bQEfRMdM8ROtmWk1iXZhWgid1cZlhZDqHdKvxAvI5nUguacRJTEWQJ10YiOdJXG3yRGzkaKI4kWmB4DNEWIMinM2myvmeoqAEKp2oWIWeipsTdtlcZmTeeazQI9kGdx4aF832qu1vpb2V81qOMN1F6/LBtx+MDBnZTUtZhgiabWw06lkHytvZBAOJOqAWlswJ25jM3tCXp7TJZgWfsTVkRRzYMsXHhuykdOmKAcRtwJYNaMEAeXET5L7Wjjr9qdXBYQnotGAFf0m1HmjOE5SyUTen5Cxz20NhJAzqXndxOzw8o7Z4QTpKz4ry7eiGzdMFTer+6Ol3yc0OCgqleWHz5qamJlsKni3djwL46+NA4rqrGjwRJTBxUXhtMZq4kL5VbUoJjkvHJ3buKSbEik3x85mYmMp6iMnV91Sc4AxXaKX0bES4GZtCw54LY1x6ACCjY6Z5QvABSQcUBkU8l1BSHoYqM2cl4GRGUpevDAtTPbexeoiggLjampL9sippBopqaO87p2yXzSF+8DFNstbGHjmNhRkLt7237ULdBT5l3P3jrOrRrl9KEYmcGjg0oLikLp2OX62rLGZuqqA2rJI3IUAeZasYd+uAzSKfsWXz+Folbmbbt4xwO0RFjx5oc0dsxPYNqGiAJcXM5qx8ay16LhkPLKeVMlgPNBcQNC264K1NAQgNsZ63y9M9Y5rbQ+aCdG4fmDjmRwMCbMteviMWTaw2nch4Moroe837/ek7F4lRtBtpYERGZjqbkrkzJwjVnDbdOWJSiIbYuFHF3O8g95KCrLSyo7za3ClNPHAQoQEo0kHTPHyRq4xjb2WSJ3uG7ETMdC4hAR/wfoIXPKXszDz21mn+YMZNS6o1d5xLarDliijoF+18KhhSvVChpzzyLlvIjAIGMwZUnypGQxYKG5VuqGmievAGt2a4Awj1KObrz7/uGaWk6DdOJVE6AjnlP4R7ncLZ08eihswSZHZslawJweHNhQvLUtpqs8RnbME8U7XiInZtGZ7QsIAwJtjJho7YiA0b0JIB8o7IINfE2FNhOfxtKDH2BZqjgTFxAaqE1YmZSiNhN6N7image5Kt01EU9fS4ceaz0Hd4hXAvCkinxM8dk3RBiuSnqTZdgl2t5HA/c4SriQfOvM3A9UzHTPPIjdeNxAHM/HqOu+AFhWWiqADajeQXsbBw/1R/UprEV4TWncpNmJpLPLKyakuQIpIabPIhDRRUTh4EJPEkCj3lSKwsUIUVC7tsNnPQtMKCqfw3khIz6Qf2zfUIBZnqiXJueAbD5nWbmYV5S+d9/+X3uhIyIBRtKIqZF9OtS8kpLyHHJBe6yjwSSsJSpzLHXuZGHTkwuPcQ+zmyCik0YTq86aMXSz1ZSptsLt/oj+IogUpUME9a68YwURHbtoycoASdLow5knEeZ3helCyRby7+XdFSA8pXyovL9LPyK3r4mGZke6A5DT6do1ZvQwojYXejk0Qz7dadHjR79lLya/m++kV+xQsCt0+voD29tdwywguz80mW+DzmZ/rxILR0KZ2Uj/IqeMdwLb9q+b6KEdnCUr50fXQC+T3usMmjzHiX0/HS8YL0pfn5bJ1ImB9cz87Dxi+bAED3oWOmefS6FJ0uRZLGPALI3YclEY18lQMFVUmqjZBODvkFUQ1i4+kMpsmkaWIps1neU74UmriQSk+3LfNAmTHme2RuezqND1d/2H9Q/62VW3t59cI/z585/9jox7JezrIsSbt+KTlKh5k8EW//IMdX2dSEsiUO28xbZa1+3v4gSRHbtoykEprQBB1l7rR2BHv3kcQASxtW6jASjxJ2nWLiqsjpHONQPe2Bn5lnNmyg8zzN+bOP76uvr2eUa3FtVlTS8tnZh9OjonxrD2/PX56U5YtXYOlcn+XL5hmXjkuVj6ior09XCqVgVmWRrKJSWUMKZgfhpkKIdi44UjFCyZoRcel55Yip88gaYf76RSEdsDV6IvLXy42z5GMGAMAe6K98RRXudObVGDDD1FlT5y+bz//E8nRX7a5dBbtaW1pdtGYvo12/FAAAdtF551J8XlyIKCEkLg+lH66NGnd4O8pLD8GSd3s+gS8wPWk6/jOOqGHFCplVh6Wl0tNHxC+d5L2UuI3ro3C11izzE+UHHEJHQTwDALQnznZftTtyJ1b3QahHeSLjIrt7KQAA7KIrTUB9x03HqvkI2o6mp7PKmARuhPAZsIy2qSJxKUxWfX0WOrLG29ubBG9YtSNKmB88zQAAAAAAANc9XUk006o5cNLs+LwKX+ZX/OwDRxaFhDBRzseTrOtd5VLZTIT0ooq88vRTaEJQ/oGaLESaqDmej0akS2rgI6qZ/LUoBKKabSMUwdslAAAAAADomXQp0UwrXoToMAtEe3z3EW8vWSaxEiGIi6zwHRKUPykwX9ENLCvli9LztgcGerO/fX1r87ID2fXx8WiEvE5x/nbrbY9DrxDGDAAAAAAA0IVw2MfX4aIZa9os8i/zV5jCLovCiEMW1dcvMv3kc0rSxZXI1rLxFmZ+8saYSskyAI6RxL8xygx6iH4GAAAAAKA74Lhohq9kA5axqpgR/dXAMFUY6GYAALoF3+759s7Jd/a8UgAA2IKDonnPnj3OtQPoYdiimBmUdTN5nVZlZnV6hOR18fQHdRfKP/5pLt0c5ENiqfyLVKIyn0PHhlgvbrkVcZ3P6XQJ/nZaZY3ylWEJqfRS5kbm43DyFIEx9Nfd/MSWy43kb1JJtrliTnu3MwD0LN5+6e3W5tbx08b3sFIAANhC14ppBgCG8pLVz2U+t7/0bIT8S0XOgnyOiBN/tBZ0Zp2kwpKzGc6ok+NsUXoC2qgj76s/WzJn6kY9EeUFxzJ3ko/D4ZS3Smokc4zi1LSJO+UCV2Ikl0Fhm5vJCSjQ3tM8JJrGiGY7HUA3miy1s6nHvjn29stv2ytJu34pIXZMztu8ij+SFTLTbyJXLG7OcO4beKKGCgIkX7zDo+WOwTkJyI5u2ltEbIndHbERUSvkS9qxZHhQ/sKfjRuHGWRMdpJrTSqiLwQiN0qUwlgnwZzjxtHeOpOaEuTXXWKaAcA6Z08fey4sJwzNKTsb0zXOMXshn/zV1WUMcWKV5ItK3OLo6Kj9VWcROlUcHJZOpwwOLtZVpyPhKJaYmRmcukNvXl0xRuYgegtb3OainIAC7T/NK99IrkA68nVrcjXaWC6+/knpUpcop9AFevRpzqf478/f/dzDSgmxb3Je49Aq/cYEdhVWcvSRrJC5fGPYakZSY22XXqQoBE1WE22Xi8gX5oXJuFqsaAvFefU79kdPS8eHk7jF0aWyjoeKiizEqtT6lpFbYldHbETWSk3JW7EBGyldENmkb5WIFK09GwfRH6I/dvosCqLdJWX7ccFEfh35iH0QYt0oo62fjGYcN90ZEM1AR/DO4cNP2/45QHyiEi3ocxoVlNVERPiJQwUSMxciYQp3GqNTO+aErc5FohObzWPDtJjG5DbgXCCi6Xs4SS9bGZYq9pEodeF0ZeKQaWaqDSsJI6Mz56ggc/3wMpGpCA9JpwLQ6tW5fO+EnC3bVhyQnH62qjIqgG3EJyCqEsvoUNHoNHpW5n4LHmKhkfJtbr47gIz2n+aRXTBxGrNfuC91Ax3Mhlc2MAtb3tky8+mZPaaUEPsm59UOrQpN0OUwSz5DEitP16AgeeZq3erEzJ30ABuUYvWrywMjcnS6HOJMFSSeLUnbH5AZVSnKebZkLYrLGYj00hYj5B1nh1O2yEBky5aRWaK3qyM2otTfxCE+dCNhmRIHiu0bh2HixOD97FWg+hTKfC7qmCyLjW4Uq46bbgjENAOWmDx5ctsr0VFURoYdkQpnS/cHRKTjhdHR6C3iukMlaakBOp0ulL7PtRbRJzybQkTtynLdLIRyVyOcksOlpPjgQcHkmZNPi3NTp+YyS89trGZdwnhQ06XQS2xAwuAdzPSd6O8d5Thbbuop3AplJmLBVCfRvgNRiWK10zIyo/x15SlBQahcl/pcHIVK5ohNxVsrt3JItY67tIi3T9Fb5H4Z3hpV1jalX0RccBgZs/wtGKm4zQeaywko0AHTPL/RE9HUtwRuKjITE0+9FqK3uAnexonbUotzUbH0vqpkSsbkTEjNZW/pWrnDS/t6JwaniieN+GKcQN97FgS+C3taY2oOJT73HLOg0GVJ5ueey1y92jTV3DlkrfkeKW5wZ3B47+FnHniGoqRzlIwFGfg/Zrm3d+/PTn3m4enRjUrZhvXJuWOrTBBHZkAcHrRLpZnPokoUHNamMUe/IzU4bmdAwVviROJmtmIe23FJEQG2ui0Q3VBbO2ILZHx4ix58yDUlzOqkWnHjcIyOCGCuAuUllRMjJu6Xi2ab3SgKjhuFkbA7AW/PAMyCxaGzqkpLS9vy4ou25SXj0ercYuYyjBInLgxH+1HmQmaq6j+EvJIQD7VcysDwiVHbTp8lOTOn8SmxuvJZQ/bnFhfnmh72m5ghdqCKY5oRtyC+9PoMSVydoFpNNAQVQbJxrSgjrJPUxi+Iq8VaNjNMp8fjhW41XqgpK5CYmjwRd3y0kmucyJpt7A2vs+YN4QlK2aibI46ulhhJ1yrd5oy7VCEnoECHTPMGRuTsRHOmhsUiVinOkky96nao+AmebnB1Jj5T6GCGs9Jq+SlZBs5ZgJiFtLKzMeIpouL1TDppHF02JwExPSXqOb2keiFS6Cnf3H5mKijospnMObjChATTVLOMTDXN9QibId3gzmHc/eNKm0sfHvFw7R+1ihnikuNS16R2u1K2YMfk3CGYGRqeaAWZGcqikC5dlUCGRUdCgcs3hqGNVBAqErXJupmtGMZ13EwRe7dM2zpiIwMjMiam+4el0oODtTYUN44A/yFoLRkQdMcmTpuFr7885GpIL9jsRpE6bmQjYXttkPYCwjOA9mXHmTPrk5LWr19vawHitGPixhAdjPVWWfVEu1tlb1TZO5EVh42SRwOZG1vEkxemMjmk7UReLQqKeC6hpDwMVWbOSkDotNTUmpL9ShUJFTMxbmhAcUldOn2LrK6ymNFtMoKmRRe8tSkAIfPGy7d5TUSEQ129LumoaR53NBJdmFaCDwPR1Av5nJZM8BiIM8/MlKwGmRYI4imiIpJJo6Bf+EhLoNLJEa7QU3Fzwi6by4zMO48VeiTb4M5D46LZXrX9rbS3cl7LEaa7aF0++PaDkSEju2kpy9g7OXcAEgdCLSyZE7YxWafosyw+NmQnpUuXRxjbwNmigsrChQkS4xV8xvKCojFWXsSBLdOWjtgKE/HPtpJekmEpHFF54wghfusddfpTq4PDEsjliYe/TnHB6DaYJnLcKIyEQd3LLwOiGWgX9PS75LBiPnnypB2KmXbaoQD++jiQuO6qBk9ECUxcFF5bjCYupG9Vm1KC49LxiZ17igmxYlP8fCYmphJJwd4vPhVn0xkeMJgZa6pPFaMhC/nnf1N2Zh5767SDollWLV4IDXsuLCEhMXMnSR8tNVWxIf3GqcQRKPA+Yn3APrFx9vSxqCGzlNseGBMXoEpYbf6etcI2Lz0bEe5YT68/On6ahw8eOqBQPPVC5id4Nk3JpFPE9r5zynbZHApTTQE29shpLMxYuO29bRfqLvAp4+4fZ1WPdv1Sitg+OXdslQA2OFieeSAKiIoePVCQRyG6w3wP8DwWT6u4eVUxIuFGSOgzVjRPqphlbmYH3BY4Txs6YnOH8RgevZBrRRBip5RXaeNIMuNKKt9ai55LZnw6crhgdBueFLLJcdN9ANEMtCPTBg2ys0T5jlg0sdp0AuPJKKLvNe/3p+OBEqNoN9LAiIzMdDYlc2dOEKo5bbpzxKQQDbFxo4qJIrLljhUi53ZhwVT+DdOJmcgvYmHh/qn+JIW43/zLHLo2y6qlE8MyUVQAO5jKTC2R11JeQnrH3R1jok7Jna+pKvp35kad2fELGxC1epu5tYrbnA7gBmygY6Z55GpdGce9iku3OnHITiSeepmb4PnZNiVDshpsuSIK+kU7nwqGVC9U6CmPvMsWMsunmuZ6RE0T1YM3uDXDHUCoRzFff/51zyglxa7JuUOrBAczFz0sz+wXFhDGxAiJI4xtgrsnQ7f1FlpIRKF+o8hnLG9R3nGJm9kxt0VoWzpiK0S+ry2jw+qstqK0ceSZ8FUg9lRYjiDIUAgXjG6rebzjRmEk7GaAaAa6FPQdXiHciwLSKfFzxyRdkCL5aapNl6DYDs6fo/ST3DEUVyNKEZSS1GA5RV4tG4fKj1YSU2VVCZ8mtJYoN4bcCY0xY6SFbS6zQan4dU4HTfPwHtxIHMDMr+e4K7dg6iWZ4IXWncpNmEq/fcWWKRmS12CTD0k43yMPApKbwgo95UisLFCFFQu7bDazfAY7OMBsj1CQqZ4o54ZnMGxet5lZmLd03vdffq8rIc97FG0oipkX061LybFtcs699NfPoVWCg5k+VvG/8sxBCTpdGHMA4JS2hjSQKF7BeMvG2gpbLN8k6XhmQKyoiKNuC+d2xAyhCRuFlrCTWOmLme1A+RU9fEwzYoLRbYZ33MhGwu5GdxPNZdnDoiqydaumSm7s1e18PgOlyZLbBVlbxKhX0YvFJ5NGd6wlXRgdpbP9o4DX3We06Xfd4zFXWdAD3YmOmuYpT5BEU6+BornZQEFVZqZkfrIFhdmdKIPSpFFms7ynfCk0cSGVnm5b5oEyY8z3yNz2dBofrv6w/6D+Wyu39vLqhX+eP3P+sdGPZb2cZVmSdv1ScmybnOPtH+TUVUrthiboKLvGSFP9PPgoSqf/la+StKhgAGUpv4VEqSV2d8RGRK1Y2NpKPwncxhFgwfVj7ylmwXHTnqeqTfg5/sxONxPNZYdeffHFF3fp66Z2IVFKjCKCGcvl51EaE3tni3Tu6fI6+3qTwrbTXmMocD0BU68OZOqsqfOXzed/Ynm6q3bXroJdrS2tLlqzl9GuXwoAALvoXudS3Z8VL45fNR4935VUMzZq5jDyGiifqatWESlsa0EmPwAAgAN0u6lXd47tEepRnsi4yO5eCgAAu+hWorlOvytw/Co0+E/0Pqua63Y+H5a0hVk7MzuN/NwVyQRvcMs3FJLYCQbiEB5M/LuRgUlJr3IpoxEXYSFIMdU8M9tUoaAttsqybDpxy5YXi3XD3s9gPM0nCzNe3bIFbUF0UUlVCBtwMhC9+uoWOiENZcjtEbclj0YBAAAAAAAAOpLuJJpZzYxQaCTKIKoZ7cxICiw+eXI0LXrfJ77bJ19Mel+fhgU1zrzlxSdXYbGZdPJkElMeq9WddVjUbkk6iUud5FJWheqfj0JMPaSi53cSJYsF98lVPmyeUJxH0hbL6CRddgUTZWHyMQ+LTcuuQEzoRd1OSVXEgIphupMn04h8J8jt4duq4/J0B0JRD/pWJgAAAAAAgIBuJJqJDH51yxbWazwzMi0U7ULZaaPpn4OHzaT/HR2bTQvqUD2/Tu4hnpkdO1pcMV8PFsEnV5EiWwhcjpmRTyq0ZbPVkqoi8Z9QoqH5NAv2dCf2HDctT35dpZhHb+ZH/War3/0EgK6IS+MFxXSD8EeraZHy6teu9gBORvaFaiuolIc+AAC6DpNHOFiw+4hm4mdmvcGMA1Z/Wilay4d2Q5dhjRuZRmIayrLDhI5e29vjAjfY1nfuctx0J1bVvdFbzwIAPQGD9SwAAABAN6PbiGbifh3GfxWKlsZ/3hCJogrLiCAl/lyskrlVYVFJM7N1XBxw4A3M0umTWwRVmKBLMPUwsRfDdGmRM5MOlSWNZsOLTz55MpbPI2jLBnDlkqp0w6wXMdnTc5AqZhsUNIWQA06bjiwFAHKkirlVMZcIONS7C98f2jNm/GR7S313aM/Yrl3KHK2tLS4uWvtLtbq42K0uHCslh6Iccfd3ZCl7e9r1xwer26Hrd8FGuotoLitMQpE60+NwtLA8dIMue1fYMCJCZ86cKViFl+kACETHa7zPZCHMzFaq3GfqquLsYWymF4tPksfuTCnkQTwsX0enZT8va8ssPjcEbokK20J8zFOlVVl9vYbPVL4tJHzosLuRTaEkcugqyGOrirls5QMzji0rzbnXhz36mVukqrqiFSvQU5kx/bmMKuYMqSt6fQWay6VLzhlKkBPxq3BV4bGM13/+VuqRwWwNA2S2iEpJ4OyRlyIFhTd2VW2+ayswGNE2PzrY1Lrz2tJvDigJqUxhPr/7ywbVM6/RS0t0X8wTxaxbWHXd0asfukaCNBQczFYVs6Hx8hWDe29PF7X4UDe2NDYi115afleyh7o43aZDHRe5fKWFXnTz6qdVsTWoZbZYOtSNZkvxBXnaeqgLDEa0za4Cm53XlqH5Youmr7uG+dF04VojveTep7ebRtyGig/S+O8bLye0NN85cZrNrZBT879vvNTS0nwXXcq0j8Q7T8XtTT5dWIqtS5ATCUqbTn+VipRqbr5z0jT5lrG0f83QjLe7G3LR2qGbKVKqAbm7M2pbYjOPqb+mtkylJAZL+2ulF3h72DcIUuJSttssb8uCzXw66ambu0artd1Ge4UgJS5lT49sG1Wk6da3eed2wVkyuruIZjrUWAgWuifJv6tOnpS+t42smir6Jc5ietGb6aVvo/nHBQUtilPkFUkq4RaYv4LikqqU80urYtoqyx526Ibu+OoMvZ48FYj/KjwcqKSYJafBL6Wp85dkHvq+5t5IP8p8NsUUszm584asonQfhW+9+5AxdRBCZ7dmhq/8pTTATE02wVQuOku5JBX308ZhXF6VidjCAkYi1xatWFl0brFz26o5mOqfXogXMt+mf5/bNecZpPuiMpRZtbmMepS7+2Fh1fWGoRVhhWU4unZy/M+v7Ft3r/B0xYq5rvj1NWjev6L4aR57ZNLTLTxJ825tcHP3MBiMLmq1lUOdnjXtppfnbTVtcAsnBb1gaLncrOndz01NxGjT5UZjb42shM3UKcwt+eb4a5uNlyhLGk7r5clIZGxzY4vR3bltGVuvXWwgqtyjF/O75eo11Kd3Xw2zCiFZ3Lmh6fJVg0fvXuU/fPP+qn+aRDNFq3kP01yCtZCYTc9t6N8/H/km542X75TJX5GFZO8I5jYahVKSsuyC0MtHUaTUqpexaLa+USxA6TbfXHJHZaq/obWpqeF4jis/Q949N1Q4QFVsUD3LrHpBt3s+O9wbcKnGhsp8V2YV8UrIxgcK6T8K2HvHb/T8XKU6v2tO3IJcvDglq3pxJPm23i9czXxxC9Hlwjn87rljcV5DU/21xiNbx34Z/NNLIfQsiB/oDjy/ofey5JvxovtvO0btv0PgI3j2dXrpb3s/eyZCazpR8Ci3aVBmCuI7i1uZF0q1XP3hHa/UN00pRnbqdeTTsfpQulq6m2Hr2XoS00tz7vGht09TQy+LUxHhLM6Ltp8e5w3Nl1o1fdwr3zVtnEdHG1uuNas8SKZfNqgLfU4sjrmJOSCNfCVuvas3arcOY7at0KT4F3atCx/ItVJbuGL8zN1/21v0RAidcgYP76+gLQUrHu59vPA/kXG7JaXwsd/bU6PmdqnwXMRjRfjW8Ydy7h1Eb/uz7IjXH7FHLG8bmRVr6N7RhzFOb1b1dXflTinBjNDYfKFF3deNnG2GlouXmth0V3evXi5qxF7MmPPIrTe90XAKOaMbkVfvXoKtXfsRGvGIhY1vge4imq8rTO+/o53TSRYzd21CQwP+trYyYTytoNm0G4p/+vOTN4mg1rNJ+B9xUH7NmV8y78iMQKml5yNNTmWnwF5rz1SdiJ0x2Zc+R31iUivJGe7UdtjGTG5C5z4eNGjo8MKSc4sFQt8Jbfndm0l9kUk8zczvAZE5X3CrgqYkHqqpQaP9rK66PvlFt+zpF17/6rvaex/05b3LKq8+1CUtUpkc0HiN2FNrNBo8NHg0v2agtGqLu03/Ufi28aXUCwNaGk9tXR2x8hfuSq9MXVEmc0/GaDRqXV0ZN7Za69ZXiy8qDnbSIirZgnNQq9UtLZS7SOi3uS21S69+vWlPM/tb69mbb0/rKi9gMJC5zc6PyIuTfv3xO655lUTHKaq6XYW5olLKsHMbdzVWz814brPziw8tleJFOW0H4jbF5za1ZRl+8rxiTTORJWd3Py2cIX9URj1yO5sVT56fRbrdwlWjUWtzMzHw2JvP/lJYUIkHcCzRJIcryfwKMz9nBqvawvULbs387vzN6MiOsWkHS3PuPb1SWtz89OjcrsRnmvcWfReC0MXv/z38ozLjzFtP7E0LeH0b6cVaw6UWQz9eARu/f//LyU+92LeRt2EdInsOq/ZnqUNFZWGevc5+ler/8eGGuHB39mwt23RoSvycTx+f1YhbubtX3wuHcGePNj/kuX1X1ZaC3x7ufanq0PLlB0+/E9LnypF/D6WrfXWMycDMdXT3GfNbmO1jsPTgAz2L6+3VBxtNtTZcJParjXihkZnplWUyG2cAuTG4sqJi4VCtq7uKaq3a9DEW/SvZSii2EhciHKs2Fb6G1Fl8C6+++fMLo1DDVYMbEZe47DW6FarV+PDsKVX1zX369mloaK39+hDuy8NXr1y67GrqiKGlcst/3tk3lps8Kz4rSxlx6gevrJxRgEchPge/YGi8ZvDy7Iv1Lz4NGw193Ng7bcbmZqykPZAgP3dto1epevEtePTqQ04XUwaKu1WjddUaac8RTsEbGm80rchEC7Mvq4Bo7oLI3d7dm1AdpQ9TofnZNzx835/LEgYPDvqT9j+H6nTrw5RGwbrSQyMjFiP/M2jtT3UxJEKDzFlZHxuKLXwKsbEKdAo5jQPJQuWeVNX6QsSPUII89Px+oKCJQXePR/7v7iLTbqEFP21QvSL0bWDlwUZE8K3gQYqdo5M8g8jsmD5X8cg+bn1sYcETlXEz0NuVKbeg7z5i4xxwkbX+pTmDtnK+EFy2yPiI39bM8G13k4k4hc4UrRiPJVHuvUZ6ok/bvOzQ+/Qcnbs7bBQMTUT0B/Bxi79sULMOEtqqkFIVucjNC8VTdLyKeBfGlnIdeWIZbhEVrVh5fDhKXV+4Yt1vqSNVzEjD3w2j/xHc8FWhmvLduTc9kaO0ey2sun6oOfPbv0LemIgWl5+f7NvfrZdK60I1XlWrNQZaJKv79Gu9dEGhHB7QNVpyTUPNBqOWRGgIIxO0XuRCxThOzv70a9RfInzwT4QGPvT3soamixeu4MtGX/q6bnJSCh0/NGqNBl1sbiHuGeGhbmi6cJVz8xA9YaqB1EkLDHwxY305dFCHyejWixcua7083QxXryDaAEMLG+dArn/q3p6qFs6/xQWENBFFSEJQ6IboZWSymYlOUYaIfg1/oTJ5zuiaNa0XiIfYTUPRq4gXSmMQVYtbaTSoUUNTC7ut5Ld3hT9VuL2WZqyhJUZQZG7jkv/Wcub3p/nZD8WbBmn66mzuQqz6YM0rzFLx/9556PGnBTlN7mFyJGi1bsxGUGnd+qA8Qamox59GgvNR1gSFKBVFn8WmtjZlkVLC/FwN/G0o3hLxNJtMnnev0H108z4izBHqf/+6z1iPPJkhf4VnyLezNwD7R+Zwrke/UQ+wk+fmpgaSEJT82f/r5UqM8/eLPXamDo30kTSh/+hmdn6O1CrjwzfS/pGQ4NT7j53OQaNTdmcy67jiwgFczIDI3C8icUP4OPS49YEnvq45rR49/IE3qCmriAsAz4LwQYQ0zJ2cmq/+5/rXzBvwErZh16sH82/9mtkYXF/wtvAbNeWJg3XVRuMINdkjNQc/QDMybxiE/rebPtRJZ6ckHqo+jQYe333LA4uRxujeb9DI3GN1OfcOvpF0LfNwQcBuykhPketMYzWj6djtQ9Rzk9bVje+FcB8wszj6pijSaF2baftNMz28cVaoELtty2qq0c1DcUs1pWv33PLC7Eq+Qq2nF1tzbenqnUNTnzjFrKj7vfLhgAgyIHh6aZkDQ822go9E1Yx7R2776cyM8d7NhtPH0ZLMKb94efXt7XaWqxdvTb9hNxV+eTYT9RfcvpWgUqtUsYXLRsbuwVOpYHrgQuyhRg48jTv9uXdE3MtaAxbY9KY2tja2aNxdTfMJ7shUkZitFrW7K3cnB58vahfTbJGDXa3VaOgRlTRmQO4eWoMoW1sm9iCaAecjPIEqr5WForvxwtCYGO3Z30hS60XLxc9/v214eA5eGDUFvUsiNNCXK2KHb6V2k5dkr5zyASKjGJdCbupt0H8xA6HCVIRTMtmU3fP8D64gnrnFPsyt8KKgFUKn9eB7V1Sjxf5TFiAiT0uxjsQ1xNbgGn6jJezKwvMr7v5pRexNglZwnV+lhiHGEqKS53y1NZo+67E+fsuvlPqCXBVq0mPT8BB/S03JepQ6vyxl5OCq32OjJ/ugAfOo3XPJEEFHYBedXxE7Y0ls0ZGMex/0O//DJ7uXLFo8sObg4k/GH6IW+zJR2kWjMmPZeGVcCg9xhbFxhYz9xOYBiPWOj8Q1z6cHArqnkxcXRoaXVMwdO1L13Q+vZ8ZUooOp2+4upVIHUiQWZcXWUYtxVcewwbtXsLN0tglSmcq0B7lr6bldaemosEApAMPCqusB1vlVV/rVzfe9gAbXoayf6iZNGOGKTm95bfwjbAB6dD6RV3XFKx94gp/m0V63yi9SXTdspVN+XjDMYHQ5V5QR/tc9ZFXisq/eCSG3E/FV5Iraq59X3wcmuPiv337PS9MGoZYG5NWvepPqWcOXRU/e7eWmKs9y3RZQPV+dxt3g1o3fHburEO1CJJ6n/9W9K9lqH3/50KaJaOt/Xi0f5rLsv1vRlHWl4z4Pf/UTNPnN8n/85dbmPfwt8lP/uLcXbsWLyGcsFK4avBj/q9HY3Iwa92X9G40fGZvOzDALG6bd1OBm+HHLSMF8kj4k6AjsFqqXVut+pcXgQUJQDM0t7u5uamPrNTZohMmjEcQrk03acuUqO04Q7atGnEvYrZ+XG52BLuXi7qW93GJww9MEg6HRQ9sX8dXSvlh8AcZVGVS9+zFXaHlcJg/rzGppwBuX8zqj77/euzjhAbkgXv3PBfg/Ztmzt/eHh065u2ubLl9lZh2//HRoidVSfbw//OqUey9PNrhC4/LjN5+mzYux1lbfd3f+2HvAYE3LlZYW1HLN69cfvnxBsa2lz+D/+FI5B6q8+/ShWq5evUbcnNpefd2woJDp79bW1oarl+nFy03oGtGaNE0N1/B/CNV+tz33hvg3WZu5Rg0GQ8PV3777LNc//j9XLpomh2yps18cKBwx/Z/1iOorbNHQ2oqbuErmfngnB91pXP7L2b+EDzyiz3wlOP7CFXrv4xGoV8OhQ4XBM1YwcbMqg4G1sHdfNoSGYqQlu3i6/IsPhifksD/JOqOhpVnlyvknic941mK2hMHQ0qJCSOwpxYVO//T5B0MfyVap6PObL4LYeQZF1fy0O3d4wnuXTpZNvjGRdKXRY+BNT5yorkHBg+lsBgO2nZ8HcuP2lLer/zbRW7ZV2Z569fFmGxHtEwrbr3bzVFpFO5gKb53+Kh3KULbplZHJBUPfrLwmyYSosrxXRszNG5aTy+0w9Elc/CdxiAmGmTKY2Uq4FYoyqFWaUeHB7x45fc/9fX75umz8PTMO/SJruuaX36J8wy9eaGIOJBm8A2bUjMJD5GI3oz8fbSF2eI0knmCN1oOuxNDcqHH3VDcaZCKcIqvcPNVNzXwSPpgvXkXMwcyHR3FnuMaFqGYXF5Wx1aBxcRW69dviZkYgmoH2gDmHiHc5lHiUm5qIu8pgOMuEFF26ZjrHQueTT7/q168XlCbj0frCXDYpNnruGHQIFc5lX5IdMAXRIwWX0n9M9JTdVedIzsLJfMqCkl9mBBwqzN1dmMtVmzg+JeZeX/aRBVoqMt4OCpW9MWVFUcFirgb+lDorbeV8XRVOeWo0c2KGPlKZg0XqocKZZEB8Qbeb9aP4DRqZe+R0zi+lx5ZtLfy6VI/CK9GUWeQ2liAmFbc1F6FbZhSiFaXnHwwv343SF4disS61eXHsfT78FkV44l6ApT//4AP/qm/iqBZ44n1iZixRHSn7x0i0d/0LEbtrvy6SVPtENN6wo3wkj05Q3MYR6YpzeMKwO7pA6WFHC6uuE5htVHfwo+F3vYOQ26hIlH209r7h1w6ufGT45oslYb2N370+eSMiTqC3nhjx8dXPb2mqP/R3MgGbQaZ5VMH5oqXo/N5nn3rn26Knbj782ta7SppfGKolD7y+9mnAv2Z4kpu4Xq5EueLDtarlH0MeWISXZy8r3XjvjMIp4V+djA8L0v7w/apXpn7382djR5Ab3Gd3vhVZMqi0EJ8pdAQhnmF+em8ptQTv7tObX33to9FLECr+9UY8ZVqCD8i3UEnzriVbX3+t7PJDV/csCF73a/MwEv6R93PZ86M0zKGu0fb1xHKyFQvZS9eMGjp8sDC2eiv1+U8XDBf2/WdF0bXMew/j+WRhQ/EoV3ft95sDEkp2rRnHuAZpf7la64XwpZCODfFw1+B/8EW6pYW/ArpqjFq10NlMxzQLvNv8ginwl9SsJnLcYHDHqrrJXeuFL/3ial3cXJHWVSNzYyteOI34Mtzi6imIfRxz9/07f26aPXFE3elTigfAjIRnEhf/x72Xi+HaRbWnN55jUK3XRo6duKP86uyJt5yt/VO51BPPzk1d5erhKjiI1KERD336fe2cB8eYK/XQY888+++3NHi2cKVF3Zu4CF17acfcPenT7y88OW10Xc0fiqUefiI5+Z8rGxuJI7b1mqZX335qEv7RbOyj4Hd3cXHx6tPv6pWLlFGhqvN7l7+uyS+4y9v0uCK9oNG4NJdmvK7Oey9IXuTZp1Lynyy4ekfvXpKZikbr4oY8VHivExHpG75o2prI/q/TwbI30xm0rm5Xv3xmxoLc+UXGkUwkDJlcYAu9r165xNdDr2EV/IW9L/8LbRHO4SmEpbmnlhV2jM/Yj9nqdDi6hzzA/+xnKa+0fpAX5qYhEl9QBLF+hPO7lpAw39Fq9KcaNV68cqmPu1cvvh58AFy91qBCnI47XbmbfhalP1VzcLH/loHXHrpZ2iLuqZuHKexAuFOoloZG5OUptpKitzwTBT63oCGINKX/aAZa99tYpPBGW/3mGS2ZZfdov2QuAcbWU5V7GJOYoJrBxr8GCVrBbQ8agT4ovXC/zw+/Pjx1Jr7+UnSTmNRnA1LpTGQIGtqXhAu3qLy1so1o6gK+GN2iIs5mdhPSDq8i4+7b6Sj2dw4Wxd/m5ulN3wUztJA7VxqkED5GVnn0cSE7k8FobGWHCNoGdT+tWhy+o8L1GCgXVatBq9WKHtGW32uyC8dFs06na0O7wHUEFs16hG6gl/HCLZZzk9gMJkgO0aFvaT+djpbnsnJ7JTaAvl7zLj1ukGcLkluZiD95RkfMLyw5K4wPVivcAeUfPBL9JCETK9ZVzj5Dx/Mxz2aNDM/cWlOEfn148vyhNR9U/TLs2E1+5NmLzeHbeC/yihV0eZ/w8SjtpzL0NYp+CmuaWtrm31K4eAkbbyPpPxq/lUS7sj511oZnvtbfofoxPSZVhf5QoUwSMcJHf9UVfSWvxuRpNnUfFLMN1P60Lz/7k3z21Tx4t4/vdRB99ORt9E/fEZFY8dWVfoXy5wXjk4GbgOFVMzZPGE0evvG695Ep4bo/ok8f3Jq3Z2se9zzD7HHPzRg8RNjQ4PH/r3nXG6j5u1VReJqXGTPjBZXu1+dHue57/29TPu9705XY+1PHLovMql5S6Yd3MbsTiS9KOGWadd+T0ejhh0cx31ea8fCt+FRhfIvkVm/qs7ekTn6z6oVfZzRzURCCI9+jV59eaupaq8GLmWFqDB4txlYj5eJy/ttvqM1zRxnURPmGzPjuHRXzPhD6nRsEEiXSYDC4GhAJsKZFsNl4CfOYAn8RV7PGxQMbpEEGD627itTLhawg1iGt+P4S+YnFK2aJwNZo1Bt3H12/annh+28K011ctOuKvg24dRQxw2hoRZ703AZfrF21LUa11iXni+N565Z9+M5rotpctJkbvxgeOLqlhdyGFjvp1G5ePvmHTr33euqH61dKSq0rKh120/CGS/Va3L2+alNgutGABcT67T9sXKtg4ar8r24dMw5RzCxCpdI2XLvY4MLUwId7SLYMuWffp6lR+owakb8HZxasmtmfuw/FllSpzn8+J+6LGQWrYryaGpqbGoWl+t+/bmfFiq/TPD9yNT5yu8Kw6tG7r2tjQ/OfH69Zg2Z/d34Rqi1d+mzponX339QHH0tuU97f/VvGwcXqj56gb/FzYAtFtdAxJ+c/f3L2vof/96bpjiI+RpqRulcvV7Zhgc+Y4na3xCas5OL3zSx4c0afhvoWVT/tTwI3M82FvXNnHZpZsGJGf2NLdSuuva9XH/fWhmut+NDT0KOo1tOrr5caXSPeTZzCx5mo/EY98MTBmtPoZm9hi708e6tlr59jTgpiZKtWZCTz0Df9m8ST/JJesthjixs1uWbtibczHkGq8yrpBPH8Z6t+e/O1R3q5XmAfDG423PHC7jAmGx1n8seJqzffyLRCMW373j0e5Z09Vv7+LVMeR6cET8zwl1Q20PwWrWsThefCChcqFWfwyHm6HxYXnWc2otThVdfct6/7NbKpXYyNxl4eWsVnZFsaDXiV6QkCU3SHKbBErRZZQQacZsqAmjUurrIqOyE8Y/Jkp70GEuiRcI/46VFS0i17H8OL7hfqmbQPU+9nHgEMRdlI9nqN899vQ8P4j9D4kQiNmqHjUdge+hETvHY3ip5LtKa/KWVk8guoSlVYyYRYMSmLffzHx8b+UJYycjTzGG/ljN+YZ5npVrDgO5m8m3lRWlnJ+tiAApMJ3AklbmXXyORUXCedgsUx/Uz0Wv+t0bRA9xuZUrhiPPewy+iIm2aEnXi7uj/ld8fIsGcWYMHKjHXBgwbRuvV05S404imyhIdRFDcjFgsdEoYxKJy1+XbGLV05gw2kprioCXZMkw0rwYMG0plIzQFP4cbwTGBG2LOxhQXEUR1+d2zskbKUW4K5aq28KoS7W1m2Mm5B8NuVSrLYwqrrjNa6wwcD9n7+Qwhedu3dWPK3f/xUE8usam64jKeM9NZ0UxKG+JLLHWyxN/u6YLXx+pqyeTe7kSBj+qJOhn4XdLGVfoyJBDZo3N2xLrxlwrzCr/DRfsu4//ds6ZEwl59ejp5vMPQjd05eb/lxneuUBZnrSgPYO6Qtja3o9XWVi8mRaWi80qTxvLxVOmUiShcrTz86yvPqD+96Rd6yYk3Z3JsN9FPtJDyjUe3lirQaVTNWMu6Gqy0UokWVRqtuaMTCgVShunbtmqZ/X/buKOs2pgwtSONKDlp8bUNXr1zBmo+EYeBLmpb2ELPh1AZtX3e5z0/pUCc1k0Odq5nSaN2uXLpGYqzJWmG1jbhaG18VYmi8SrywSq/howytmt4LXlq1Z9umi+f5mzso5O77RwTdQVGWnqr8v5SMHZvfE5Yac/f9o++cwNTLt8DFhbJy6KnFGTs+yrl4gY8hJW0FjBqLF7xwtxovXLnm0cvUL1yMzBMWvPwfmYURI269Q2AOCYr1wv1prr9yEc9/2EevJHNzxrfg5uEhfIUPUcwHogr+M1P+WDYZS7+Ipj2peJT3aGluEsaKYLmvcRlClNnp0+h2hWeFVST+xuNM2Q40aSldue/ISSjvx/MPBPTjDBqMtSaJlg4WFBe7NSjWjBl5y6cLFPO1a61YMPEix+QzFitmQTeZvpC7eSqKSLE/RW5mkuH/Zu17OH810eX4AOw/ZPTuw38uRoPVLujMyQ+G38NPTfGJ7cIEUot7Kw2JwdtHrVGQYaxibtF6eogUs8hcZGxtGjz6wcT/1uh/2k0mxlx8+QdqT/YNJFTL8e92/6/kk/+V/I1dZXzzxOKHbjLV0drSanRhNwV5dk5Dnt8jF6Zj725s+b/EFxFi7rFIdCYbaH6Lt9x2Uxe4m7qhk6esfXcrvvwoXXcoFa16DcytJ+50am5ScUEXFAkdaW1pvsKtovDhrpUeADIhjAccQ3MzcnMjEVpKtjkIhGcA7c6H9/fFfyvfzNHrhWEYaH2YignPEKDfswCNLzUNUngyisLJveZD4SoSmBGbSP4iv3sWF65gUwoLMkNRXRXF3zliUshzHrqPAug8dASw6dltiuo/JWfdu6op7CmMZ88x/U1vz+BD5PzuXVyYKWyFq/MBOt/8rdQ9gwq/Yk7WQTPmvj0nLmBOOnm3tL9/LBlVcDUj71qBXph0CwkBDJuc9VbczdwYGlvIlOsfEo3rHz+G6bKfyOZDrM3MY0b0w8iK76ILnZy1Nu5mXn5toX3GoSFL0JSh4f3JFWywsNp0sikEnaXoB4OYJtjus+P6L6Vkez7D3o9DkeRVUNXMW5yRwqrr9O0Z54/uQDcuZZabL7sHTULvVw0Ob71v79Hzfx1F1u5G0/7PLegeVdAXx67G3sJN6tDvxq0n6jPVfvw0b/Cgu6KGlv329xHDLlw5W7wm8o/ostRReOh392q9fKEKq5bq53Y9exe5l12+e0PU8PcuXrgaOHneX+8kU6N5fVDlxlcjd9y5a8OkZ6uXVaWdOc0e3Cr/SfdF+39bOs8/iLwH4e3IqhmHhsk6QUvh3+kaSnInL6hedjzt3NU+N7dcYHzQ5JE7FeeyVbu4eTS2NhsM5DknlZqIZzWZYar8D1Q+PptIuyNFY1f13/VWOBeewVqiccV5XVgZgQVcnxYmnpWNWqbzCMKDlNC49Gq8ykfN0jWrsFB2R1h60GVF1ZJnIlGL8IJJmWnC2Eqezbp2kX1Ci4+XJUVaW5CKvPFOqEcxui8/Z9a2IK2rCqumS60Gb35u44YMVIuR6qVUijz219J4xehKB0gwwcFE4VFuXm70FdnQKlTMGD0uZWhuvNLi4tXLxb2vu7HBSHGiWe3ior3Y2uqGpzeytvhb9XQIA1NDb08Xt77uBlyDSs0rd9F7hkVTdEL52qdSbs38blp/wVp6vQodw5Pn29b9xjh36bkMVyXR2afmkTeXISYC+H3RFheGEVOU9+BbS/IPz74/qj+q/WVf/tD4dUS//r5w9/wwpDr90xcfDH8iV1xcLJLoOfy6yhn9uNehIEPTtQaNRx+BK593M3MTJOlQiit5JjDzx4fpvtAxvr/mi9zMpJXb1nzHZEAqtaZ1wE1Tfq06j8b0af3j7K9P+D189UqTO/2mMzxYt9J3XYQOGnJ1C9/ni5DJGW9oNTPpYo10VUneO0HvKeIOx3X+320G7bmf8bZ94v17Vxh3ZzKrEtdffSWFGY1JJf4Rq6gH/kPvkc8T3zW+8twDQ+t5kwxff5asuu/QjaZNoUZqOjSnf8jDxmcqQlZSXBCgaX8RNV9LB5pn4iMVufQ257c13dvtH5k8PCBsfWwh5/Ay/jXo6h/fbqVHQnwOkXBqMqPj6m+iPLgwZbKnhauakYebi5rYYGQ2dWvLNWyDwnPEWIxTJJpMENzlDEA0Ax2ERDFzqcTTLHjlHB0oLMQnZjH9MPDiSmqxNF2QIvlpqo16hB/jTaEV5Co1cq5x91xkkqG4hkwuw8CYFzIVqqUrCH20knrU1EQsm1OlGvBg7hfsc8vEY8ekottTv+Bez0Re0ybpHc7hG/NCZQxvl6x+3mQV8uXa4q9xvM0KNeuPvJYZU8m/G0RSbQxvtqgJQtijlWGM7YHzqC/mSQzxe5SJnFFYdX2i3/s8uvsLX/53/9unUQ/s9fnig68f6P8g/v1wPD1X8b33b/mvT/IkKdw0T41eWnTLSwiZpmQRq/HcxjWKJJFp3m3M/Ufynrh+Q2P+t26DKtI0zUsYShbuIlOjYeH9kQYFJDydtScu0ut15uGe0dU1hWFxheR26n2rdKcD+sdw1eIpk5of+LEC7qVVX8UKwMWNqSHCla3BB8vQ41tNX7rRumN7rtKni9Zd68o40dQuHl70gt99b+hqAlzozpL5JD0jFX0oB+tr977sTX/6UNO49u0nf7ubiu6yey/BT2GK1rN3X8mrLZhHAHmnvaRaU1WiJticrPTUuPXr7SbNxlSO5bSmt/qTvHXM79kLXzr6zcGjh/fj5aKcNVPi5mqZ7eju2Xi5noh1EmqpwXMbFWrYsmEtWyp56bHDXx4pLWFLxc4l8wT+5FOp1K6evZrYp992bM7lS5V9W/LDN1/i5c8+yp028/GrV+oR8+SThqJaLl29SHzM9Dyh/qPN73IWvnz024NHv92Hlz//+L8PPfG0inHEabRuvVquXr7A1kD8zEbh512EG4h5LRrG1c29Qr8ML6SOXcakTHm7evGD1R/dXHLHb/9AX5Np87M3s2Pk5DUnFt57YuvYL8f+mDo8Mjvzv31ixnJFSGyG/qOAEvalyOxzhGSqTtoKSs68uf9TdGb0t71FQcjdI3tdjjvj1yDFR9MjOMU5a8Wxa8z0ngu3Jfn/MYnMcxoukccZr5Hn1X77ZIbxoe/6EfkkmiBdaiGVkpcfHy8lvUi97SW2L2s/DkhGMyoHtVxs1NABP0wri8a+YGpl4pTIof3jmBjlFw7v9vM0NjM78YoBeWjozdo/MgefuXxHon1QcxPZqgZDq6GVzEPJOzTc3CTCUzKL0/LP29GTkn5T3l+3QT2FPq/IqcoErrBOD04hUrrNIz8b+V3yzZfYShoNRmMT0mrV/XHxd9WMSREry2e41zMHHmkFuahVV69cvODqfv/Cn2Z4qbmbPewUio9pRombzvtfvGTERcxpZqPAKjR28tuJ68lrSokrakW4OhIvRn/w3rKAK5cu0sezYhXkXSXqPuRg55PYWHqt6Xxx8eiD5xb80+vssUW85lr3Pm0JxFAGRDPQaegZJU1HcsjuD5oSJT+tYq6U6LYY98NMWwrRxKKH47o45HuKqZFZ1XLxDTib0L/+sE6U4BOV8gP5N+WH8ylcmgGhpn4P/u2H83/DKsSL9mL64MmSaT7GHX6iaZ4Efg4jOGj1P7yWOaNS8PJs09zJTzBNIlOmR0ylyJSJQuykS4Wksy/RoR4bIIrA4XKaZpim2aZ8vhfKTrHaD/I9xQZ80VV4tbJz0Gj7ENFdmLPGe8CgD0p+8+hFfF71587M+8vt/8t6NWbOIiYfRd4T5+3GTz7JDKHf9g83kFL7KnvRpS7gUtNG41KxTz6n0BIn3Ld/+DZXyqP5Ytrl1ktJ00a/v+rl6Y/NE04YBHMDMk9QbGvjW8uin3haMuUQ7V+tRnqw0fa3NI2K+T4I58Y/Rz9L7VpgvEY/e+fJvuHB7xFmz86nvhDcLLx6+SJFec/+bRKzEe541rg1kega7r0Q4uNBxc7PrzY34vwhC41fJNP3uyh07crFpsaGQHHlohFcHORAXh80T+SLJY3ijUlNwsbQKeMeqRzH5hZNkCIexxkwfV2C6Obo+4z0JAOX+gudhZtZCZ0IFNfWmGRqdzKbRGKF2MojZlVG8G2YzlyKam5uwluD2T5GI4V72tzU4OomnbExb4lRwsW1L5FtI+eTNyaZtge3MODBjUvYpLA4evPyw0Xvv2xM47ae3CHCZvONfWGV+CWMvLMm4NEXKh99AclKmd68JMY31jRK4MnDgzm7H6SXlD1cgiu11pP7lhE7reXtUWs9+Tc4yye6nGwmR7uoC2rZzNnXwS+bIBDNQEdi9ePZPCrZMqWoZNujFP1CdHmp7iGXGUanfFGZYj0b0G5Y+m6BGMcPWvHUyIkniOBn6KOZXfsD6Rr33n3drWdrM5Mffjxh0TL+J5anH31zet/2gtbWFuFnn6Wlomc9ISjVb8Cgj7+tLdle0NLaorVaCs8HLl7C84EBWntK2dCWYP9qXHspu/hctK6u7rw+wbJDjeVya0uz5YPMRevm5m7aHWo1eY1aS0uz8JOF5ksxAWLkdRq2lFJGUkD29RkzhQQ33JDZS4BiKcrOUnSILYuN28cB2nIppMTLNm4Hp9ORXbALEM1AOyG61uqlgtnSlVjx+LZ60DuzVHcSyECnI5IdBqlgtvQgWpsOWvHUqJ1OEIBBqJh5Jk2Ps1zqCaVSETaWEs8HbC1lZ1vmECpmHhelbyUKESpmHq2tpUTqy2opBRQHbmuHuKLms3oJ4Esp3b+0ry1Hemq5FZsTFTPI1aq9bbWdjuyCvYBoBtqFgM2iNxJaflkDAHRfNOK3X9n2sgag29BOjrQuS3fsbXe02TI9oEdduQttsc2KaD579qzlDADAM3mE9TwAAAAAAADdEUuieeBA8996BwAZ+383LVfs0stCMpQZ7+a5ePHzm7+pbSerAMDptAreYWRoMRiQ4gc0pLioyKuM+Y/lAt0C2QeqrWTv7p5pe19h2xV62x1ttkwP6FFX7gK27QFHfXwQngG0C+v1BP5naCjif4WK4plDyVusAKDb0kReHWWKY9a4IEOraVmApm3v1Ac6EVt2XBfULQAAOBkQzUBHsCwq6hV9sWm5uNj0LCD+d2tn2QUATsZDq23gPlhAlsm3Nbg4Z4h37v58//XeMXffz/6QvTDYbKlDe8aMt/szuh1ZyhyG1laN7CPPVmltbXXpqFIKOPS6BMdeYeFYKaf11CKOvTXCwVLOfgFIm4xpzymso7ut9tOkwAT+y8NxGyuyH/IliUvRcrIEADz6i3v3kn/QK6G0k/m2225DRDRbfING2cpJDx/717c59/nQP+uKXrszdmeabt98plDNl//w/ycq3PJGzABmFVfu6U+ox0ZLKzv3+ZyZT+dayGAJXP9raN4bjnwvuk3t2mlSe7UF2EGrd+/eiLxAo4HRGRoN+0E6S+MsedOwwaO3pwvzTSvy8ecrLe59erOv+ze2ki8ceHn10qqYVVw5Ny/yjWsJVMvVK9eaLWSwBK6/Ebn1kn0pzQba1K6dJrVXWzagUqnef+OlluSld06chhD7cUFrkBepvffGS0+0NDOlmBer8QqDYr/WQNcmjAVRqf77xksJXClBZoE1Su3JSwmKI+WPipoB52xubHB1c9dotcjW/pI8uBRyd2dexid5w73w1fiS2oSlJJn5IrbYzHzmlMltu8301mW3qe02C0vZbrO8pxaQNGpPj0zy0Z4eKX5ZXWSAYoOU+dCkrtAFZ8noNsx1WKVMg+VyElq+nFu2Kp1BXl8fYJG84987zp4925sWE0za+fPnTTEaZoRzxdepT6dlfvVdzX0Pch9njk2cWlF1DoUSpVhX+lUhTuFyx9LqmSxhMa36cI5IMhI1uSt6y4mcAZThav2BzWNV7286PyPI1auvp5b/9GYblLG54qZ2yS/9h8NVH9qiZR2ypCPbAhTRVLz58KMVr5S+P2EQPTjXffKfSfElL3z7yRO304Ps6UMv3fRvVPD+skivuqIV4bH8B47nfXQ+5jaPVoPRRc0djlpXrcFIIfqrE0b6O7v8tVVLq2eyhMX0hWY3kWQkarKFHNi0/GptvnShydObZBBey9qgjM0VF7ZLPq528UKzLVrWIUs6si0RhqYrV8ncpvzINzmr/nnnhAcaL19tde/t5cpcQ42tDRcbkaenh2xu40m+rf3zkW/ef+NlkfxVvoqreFGLNUi5uJRIXrO/TdKQp1zWliNQOvLNv8pUf0NrU1NDLyya6eZ+eVf17Gt0hhcO754Xhhv+ZYPqGVNKKGOhAZdqbDie78quWqLDq7CRpsxLdF+QzCTlWS6l6NER8lJIoIqsfejqcH7AF2Mq026l8/6yQc3UjE+xvzDvb3LvQ394uebA8xt6L0tGH/RPfVPYkP6jm8dx362Nf2H/xgeGkHPQ0HThWmNt6dLNA1e85PmBC2vb3/aSL4S796nOdXn2dVEK3YTp24cUWQ7jqk1ML82514fdPi5eVkVza8vFVuZ7hBgjsYQsMAcVuyXoYaLlWrPKww011Tc0CXtqaLl4qYmtinys3kXNz83wEdui8nBXNbN1IrfedBGVUZZCN0E+zsdYQomrNU34JQc1Gei2jcf9HUjkNPm5As1dMaM/4r6vLd6LFOOsFny513Qm8JlUKkqokukilFIRZKYVltqP0AgHv2/ipBsEvg9lZxMpbF9+oEfD6OKXXy6KivIbM2bMvjfe+Mf//qfLnv/zzz8vi/Irrqlhso138/zMVfKiypozFZlj3ohA/yg99yAv6aLvCdz2U10M8T2frkRpmVMr5G363bek8LXXis6ZhGDNT7vQv5bwP+9+4gRFRhtjy9WGFo1ANjsbSbuhj51ov3jWjmwLUEDjgn775qX/+0fGQd2f9027oXevXtcuILfYxMhfqxq0Ib2NRlT3zddbEZrByVfy3Wxmf/25/+/9i/6vNSbAQGn5zyq7umiaDUYtuRRRBuTuoVX4Voraxd2rsbGFMglBo6EFebjzPzVuffsxS7ZFEDiMtF1Xrt1u3pYIg6HBzd1j58fv4+Vff/wO/1Uxcxt8USafT2iVzG08ezFjC1Yz9Z9t38aXolHJ3GcK7CrMFZdii5peRiv7rCnm8y05CqXso+Zgqv8rhXhhxRr6Y9pGA3f8nSna+kthQWVMf5JnycEzufeq6ZTfYvqrar5KTfvqbM49A/F0jUwZjLXbBJnTDtbl3IeKJCn3cCkDUM2+5xeXnl0TjrbxKV8ypXxMW03eXw58Hg359yd44dW1zOqylc8ybRm/+d8t66srXxhJ5pkNrUZPl2MffBXx5AvN+zKrPv5f2dT+7pe+fiHtYG3OvYNwsYw3y/4xipxTbGYtamkxeHlWvffd9Kfm7HpiFqXb/evtTY2nDy8buqPKENO3oLBiS8EvUZ5NtYeX/fOH5ol3aX/f/4+Af29F5Fv3JpvJ1+wDOVtbJFtVGXKLqZFsSA/2Y3aGxmvYkr7Yttbmi01GRkkz57ahuVXr6k61Nhk9PftosYxke6qmi/dxV5ukpIrdlsYWg9bVtfXqVdTHq68GUWTW12Lsp1U1NzOtkJQGA+WpUYks4XpEvt/Oz1XNPyyb+8qKhwtW4D3O7zqhrlX0BStlUPZg0xkoxTplKc4LH3GSaGY8x8TTfKJg6dKCAlSAaD+0KYqD9ksjnO3EbQjnoBOW4yUUdVtCwlKSY3lJ/aIx4sAPoTMb6HaQJ//IOzT4RwDz8vJOnTrl6uoaHh5eXFTEJPbv30dasK70q8CIJcj/DFrLqmSaUXcHb6B9zxVfH7vn7uivFEQzQj5DbyosOfsGGsBXhaLn+UhzVbzrmpTBLj/9SfUNObE7C9FOOt7j7HqVYBX12GCy8NN61T8RGxxSsV5VNKx6HkpjwiGmvqO7Z5epuOV2kSmYJDP7REog7eu9JzD2nxkyS5agDa9V3oRS3ynMzP42oEhYSr65rLSVSAJdkPm2RFEufGaudXmLgITW03W//iv4X3dT/zzwx30PYR3n6ao1oofuGflJxYXYsL7NqPY4Ss2Y8qts1DYOuusfH69ZvbX+lan9GZVMo3HRNNG+Z0OrwcXFtVXx8qpWq1tajIhzORkNrcjVTTYLNHDeKUSCGfqqm660tKCWa8RjbRSt6ueqYvM3IDY4BC+3qPu6oQYmHELbq49Li6m4ymK7yORwpa+vtK/XRXOloVFmiTtqajSoUUNTi0ev3poWYSlpnVbbov1eyHxboigXPjPXurxFFooyeKg9XPLXvsL8Ls5fPyVmvoumxWh0Jd5IPC8yO7fx/N+adObHp/9756HHnyZLKuEVX/mrdRvXvCItpTT1oUxONVLVB4JSUfFJpnwmiW366jHrupa+8cPv3kxq9wrdRzfva2lqYJJampu0WjdU+9vukfeTDyBTgwfd8sEPtblIVblrZEQqXWrQyNwjp3OQj6qZKVV3YlfAlMXENrLqB7wKiTIzKbtHRtBfZvbrNyLvaN0aLCGYUqY84pFNcsue44aJ/6Em/od4mpks52uOTXlgNtFq1B33rnn7mzI0crRajeei1KWDucapr/qrfiFNp5AUuqFaPB2qOjFjxF0aFe1MZTJ7Eg+r5tzhD9CMzBsGNr31mUs/RDW2aPxHTUn8uqZW1fLrnpF/WUIZr2j8fOnuq0f2G7+C+uIN/eaAEta0uqoTsQGTBdEFzdxWbcZb1dX0JWhxj9Quvfp50Z5mtuNGg1bLnKMal15NWHKruTO/tQlpPdTI2Nyi0dLVccYbjUatWiMNYKAnebhIL7WK6uWlYlaqNVrXZnwYY4ms0bqTA4OtRKNSYUt6k7s63O0TUi15yFkQL2FGNccWLhsZu6fM+MjtyutFRqmUdizXgkIMBsWvEScqVuK8gGtLolnxJc2m99AVJASy2nZ5ScVwbv3wuOUbf0RM6EXtp0uLoyrqs30ZVf3pnVhVF/w4vKK+fjkR2UwlJ0rq6+vZDLXZd367NOE2nDKGFeKWjQE6EctvJCT3ukKZf9kIDF32/EuXLjU1Nbm5ueG/zDo3N88af39J2XPfbbvp7hy8MCoSbRBGaAwOQDml5x4c+n1F9JQY9JVyy/43xB47U4cC5SJSQODc5u2zkIenVk1ka+mUJYVTERuoMGA+tW8+nYmsKjq3hCyOiimcemdJxfzQQKT/PiMz5kT17uHB2ScoonrvLBn0ram4RWq+fC32pk+ofaPpgIr1+n0xCBXG/olTTjDNCSypK0KFx274ltr3BgnglpayDm5r2z3fUkt82I6MWmK+LeXMTOu2tHVdg8fQ1gvflt4y6e8uN9ap3v35wl8fHOZGNZIxOnh8cPZ31WERAyu/+fHe8IcOVUrlHmVoVvvdhKd5F15FfYQRGioNajFQWspgcNVqzb3QTqXWGigjvrpZMk/j1s/Llb5kENlq0LqTW8JMoAJe1Zu5ZJNVLRT9XTaN1kt7ucXgptEgg6HRQ9uXarmo6dW3H1G9l1tUvU3FLWJsbbyi9urXW0MHVDQZeuNiLVeMuMW+MkuMWM8a1L379e5FfFrSUtbBbTW79O5HPG90RzTu5ttSzsy0rlD191/vXZzwACXzpK1emoz/Y5a9+nhvKqlw7e3Nuw5/+Kbk5XlTFUr9cwH+jy+V/9Updw9P622JS32IS/UylTpSWmJLqXy+FH0H3OR2E4uR1tbWhquX6cXLTegaVkdMelPDNfzf+crvIwY+dPVSvWfvvgNvSjxRU3NedSxy2CxDa0vDtStuA+N//e3nK0NZN9f5mp8jfB+9fPECXnbHqyorznmUTRk2i1k7cFjiiVOnqhq/ixgYxeTxviG+qqb2PJKWooJHCjW9gbOwt/BGCtsH05sg+/sF79749dzIGG9DdeWeD048+Boa7adSuxqPvntoctxzatX56mNThs5CKleDwTBw6BMnak4jbPjWuKe2kuJT3q5OieiDVxlVBu1P/zs0ZTZR/7g4hjK4qM4d2Z17U8L7F/6omDzkKaMRp2gH4Eqqa1AgKUVJ5l6FsXGFbLV/m+gt2arsflCp+JdRKipQlVrT0oSHA6x0KWNLs1HrgTT0md/abKClN1HValemvIo2lTx53HL1Wgt5P5W2V183FxUd7k3CmnARF1FjRkNLs9rNE1fionblWqQrUauYEHERLVeuXkSmamXwXRg1o/DQiqLzmbH9+XV0fNpuskQc8COR0B8sq4VR0pQo1oISFpFuJnOVKNjmGFY8zZaEkTimWSFD7bfFBQS+QNTTUfjPnURDmyqJGyMugjYuH4PkwEujuxRW5zBRUX76YiyLQ5nYDJxSV1fnRsPo5nljx/74I/EVB165Ii5a89Ou3HcKc99hfsVGz+MjNHzC70GbzpZVvhMY8RiqMtNy9Z+FwWPMSr2GSxfoWf7ZnW9HPr6bbaJwnjCL8MlCfpVPTEya6vuylEBU8k5axD7kfyY2NWl46tR3qpeciMFFLG8NrubSr1DhPDrUeMDY6Km7qs7RTUwxF3wcGz3Kx0wpW9oqzN1J3+GlSbxnTrTZtpQz060D1tDimdcPxcPves9Dqw6dql5ffjZyKDcP9MXTvG+uTrnx6K8PPRCNvjZKhmtyoWpq8ewX9V1VVbO/n6sbH6Gh1rigZqPB0KTRugqkgBh87dRolKQeu5oRUsaWpitXWR+R1stNmEMYfcuvUmu17lcMBncs25vctb2RitI2XLvYgK+O7n21uEgLsgHiEvZiHmVUaVy1LUZKS5rQmnHkIq0rEQCKpWxpq6W5paWZ++3q4uZqti3lzK4aMxOPMXffv6OiOWHi8LqaU4oZHnr82eR/vdl6zahRmb6ffsddEZ9VND8xcURdzR+KpWY8kfzs0tXMBZ6/ypO2fm5OmGSx1LI1kiiFEFKqKWFSgJW2FBQG4+UWaQgXFxevvv2uXr5ImTno1FpXT6ztxAeyxkWLS9WrkblDFZ8jLq59JC5DlUbj1csVNZqd8zGlJFEoGmxhn35Xr1zks9GeepU0RGB0yrpb1HE346XHn0x9gut97aE8NOM1WrbIYsFRbeXu6P/lvvaov/bMwcX+Hw+6Eh2sYorEvOHH58LNnd/14itoS8FoZJRtchUdcy7aR6crd9PhWP2pGlztloHXHrpZ1lNXNzcP05ms4FUlPXfvpblAS1VXV3c+oJFqbUZaDzNzWMrQovX09HBV0SEWLSomEpou0ku02anWhkbk5akxuwdFPSLVkgAkOoiFr1aan+2CT8yMW1R7yqhHBjPJNQdXxA4vMu4ejTfjk3Eb9EzYuvn4MXH0BSWMT5JktDUKTXnz2kx7v/SEjblgqf20uJ3bA7oOyeMnrD10ABWH1tT4u7n9fNNNQwICAoYMGcKs9fHxqaHDmi9dulRUVGR6VzOJzdDtO8G/JSONRGiw6/xGRR7bkIOenpOCzInmuqrfYwOm8D+Jzk4TxHh49OmH1YD+w7E7w3c1LLnFXUMHSAjQf3in0OdqWhF4d2bS1/ox6Ni/YnDr6L43iBe2Yr1q0nASPiE1Q9pue2K2LXFkRV2RGd+8A5kBIaePl2z679ZN/2V+zZj+1AOxPhSlRmo0KPw+tOn8T8c3jLzvUVUVHvI9vbwQFxFBBJymT+9exy8Ujw1Z3dfjWgOJY2bXqTVaQ1MTcnNzN3sdo2+SmlQl0dkNBkGMB602DM1XWjRe3u4aFfMwnABD82Whz9W0QuPica3VoEEGDy1xPtM3Z0moxuWLJHxCaoas3XbEbFviyApji8WPzdiVGWk06g92Hd2wannh+28K011ctG8Vld500yjK0NqEZSOzm7hYC43GJf9g1buZaR++85qs1LcBo0JoBSC9yuNS/ztY9Z5SqXVF344IukOYyD8lhRu30NbNuC1x1CnztBXFVSF/5YGnV5+mRoX5Si93rVrtYe4hxl4erupmN4V0rz7NrmaUhgq5ePR2dXNvbmqUrJGXMsWAq5AXuYkgqUoa5TJynnH3PCwHr/30ntcpRG+ZYx9+MznxBYSaTaWQqS+jUz5/jXkty+BRUxIP1dSi4JuYIvcLZNaF3fMT98YWrCRxulLXkTwogK52dyZjoN+oB544WHMa3ewt6Sl5zY4NqN36kaktRRmb61uQB0liopnNFdC4e3kwhtPRF4IAaA9Bj/AmuorFNX37yKqaVDHV9mKWSbVNFJ7bWlKrI+cd/mFx0Xk65gadLT2ECufeTg7B/iHRU76oOk+N7W+puNKTfJRsvmfve2HaQHuKZt87o+ISvvx+0Rg2UvnE06YoDvNFUGDB90KhDXRLiotrxo/3XBYVtXHjxmL6BXNXr15taGgQ5snIING1vr6+s2fPfuNjHZN47rttaBgXU0xUMh2hMZb9PWBsNHq6kjiS6xSbpeMf5lCCMAlSw8zXirho4+83Dx+v+gS3FTzY30DuX52u3IkCRJ5mFDyIUZ+SVaMjnn44LCm2cAujp4m2zrlvfvW/KtLOnJaJZmm7+g+Hh6FPqu9B/rvLyHstcDd3BiYvMesvF0A0seVSZtqKjSWu8dGMtZUxcmUvbML2zICYluqvD438evcvoc3N+Kp0+tBLS3/4Y9rdqAlrsSuXvYbe9/0H76L5T/5NpfpDpVZdu3q1H1eQMjQjLEHoad5kcvlBJI6Zu3qqNK7omoE4kpU1Mx3/4NZPcJkgNVxpbOGijQ3NFy8jrz74EqdW0zKHMrQgjVjU0PGbtCmiVRqt25VL17Re5ApNvNFYW3u6uPX1MDRQ0hvPiu1eQl59XdDFFgN5rwXuZovG3d2sv1xUk7VSZtrS0q5xDWOtQStX9sImbM/MYMQTiN4LXv7Pnm2bLp43jTu33zVpRNAY1HqNmduoGCVGCa/j1FMpGTs2vycsFTL+/oCgEERLVXlMBcPcVKVSo0IoSvguNVGQBUVKvSotdTcpxa0XCgqVMEXpVWEqNw8PiQbBG27gkNG7v/5zMTUYrzl3Mnf4XTn9VcG7SqtTEXHEnj2ZGxCeo1LVM/3q73dryeGav7sMUWs0eNXw8Jz+KHh3afULXOab+BR3v5bmpvOn8oeOW9cfsaU0XCnFRyaVZbtKYd6mUtfV/IKG3+NHfJwbW6Mzb1ChxpZWisRvlFanGN01Lp5nT36AG0J0GG9rK9cO1axW136Vp5r66mA2wdh8ce+zs/ZEv/fqjAH07us3OHCPrmaJegAuRSq5O5cyXlC7eJr0qNhm2hEt3apq2xSzoEuU0YDUZOJobG1Grr3UTAADid9opdxo7YhNxWbISlIkZLmZDoDmk1qvYsVMJjzsrQdNq4GLimArof345npkE6GTp7z17tZghMSXFd4KofNYWKlFLS2wg1XMyqLf2Uq6HUSz75DbCiICC4iP+aHskjXe3t4klQRzjEFWX6/h+9DyjUmBTBFSaLnz7QM6jvPnL02fHs086sf4m5n0Q4euXrjwRVpaGqOb/U1hzfrdT6N7vjXdCyMq+c5NFbyG84lZckLWTGHszEJ2Uf6K4gEP5mxBc2YOZ19Ql0RnOJf15sxgLzZHbCH9+GDYTPqhtynvrJ05XGVaZSJ0TBqaOix8AG3GvHe2zbyTZCMRGqOr/+SKB5pplzVsSeFrd6omIeY1eaFYMEn7wltikq30K0EsllJu6w3dh8PpUvSzfYFIFkMi6PV9VjMDZrjww6do6P/DV1CtVqtSDb0jUv3uj5cmjSHxye5ubr3HRKO//xb07wZERyGp+KhlZGi5hlx61x5cEXvTE/Q0D6vky80GXsOptSQcQkLLFf6+tPwVxSqtpxe6euXiFWEGqlfjlUv1bA6tF/344KUrF4m3VYtX0cGj7CoTGo07whdzFW2GW6/mK5dJNhKhoaGMXHGNxXaRu1fj5QuXEfOaPA0yykQzb4lJttKvBLFYSrmtXn2aL9Kl6Gf72JdjK7bV193FamYxZEKB5zYUEupRzHdf7aY1hhZdM2o8KDOBqEZJKd2Bz00rFR5OYsM3FUuxOptvSsU527ioXmmpLz9H5oQ5U4FiKnebW9Il8u7DwQFTfv3jPArtj2rO/JLo9zDesAGRv1SZUmYIGvQZHvHbqbrWkKH0Kv8ZuFKS+RyXGadgFTWFTnGlTp/9LX7wX3AKW2oYqqmjK0QCJWT7jfXzu+bEnUwmt/5/LHh922vrViFUlvd1xOznaU8pee0J7ssvv5813NpfW3Pm1yf8oukivy/4NGGsER3Zs4C6q+RG9Y9ZX0+ZvYj2rqjwsViWNWth8LpfY3wb2RTK55bJuPuq23sZq2t/fcI/xkgZXFVaM5Yg/Z4FKHyfLzLdbKK3quiJOrNQLVevGt1J9JKhubHFo1cvYWgyc8sA9wsLXjUxlTaDLuJGvxXR0HoNaXqrkaGJDYBmm2+6ek3Tq6+rmt/ZarVLs5FSabAyx5WoleKjTJbQ1br0ti5L+0cmDw8IWx+7Ze7Au8cjf/JoYDA6//223SMXLpZO5ySNiV3IgocFKVMGcUS0mSdrnYWjolnyzjjuJ/N3UX39InbFGMEyhislzi+qEC/U15PF79d4fzkEXp3RXQlFJSW73caPH+/miaUz1s1+ftV9+gzx8vLy9PS87z5XV9e/+Pj4uLkR99Ynn3yy/3e22GMnckT1cCp5iSRMGae/wWeglli0BWvKfbha8p7mS83owoULSH3Xmp2/bRQ+Kv/YCeoxZonJLIBrmnkE0E9UJ4ufqbi8XWl3BNbyvRAs81WJVpkrZaEt+t1zAqsstWUpM2AJ/Z7n0J0lA1opyoXWNP3HPIzuyfvtUIBKrVJj8XnjX1+qJJoNNZK4WRKecdX0YBBm/lbqUWaax6lkaZgyTu/FZ+hn9lYsDdaUvfsSDxOtXeg/Lr24txqzuPbtx0ZEcpl53Lm3W9GPAKoldUqLK7UrMltoLd8LwTJflaaXDaUstEW/e05glaW2LGVWgFEbqk/y1jG/Zy986eg3B48e3o+XPyvYEPXYPA8mUoB+VErFXLC5x6R2bH6XKZWQvLTs8JdHSktIYsGGvzwmurnFi2dGRm/buE5e6rMPSSlJgC/FFVaZKbWj4F1RW0r6REG7q9jXomFc3dwNhsNbbt8X/F3ybX3/EjPSPY4JyV2i2z0I54yZMVLFprxw+LM+jU2NR7aO/XLsj6nDB8/4y819nhrLZv6C3L6jMweIUmL4lL/t3X4DbkteStxfWT9MCAKx+0e+t/ot7RTasHkfnfe/WJI3oyHyp2F0YI9Wq7lw1XVS5ND+s5hT74XS7e5NLpE56zaoH6JTIlaWT/P9qTACzai8UdvERBKj3w6/hP8+e0sq0wTOs2jaI7GB2riRrP1FrhcbNH16i/3d/Um1qil0H6e8XR3tg5qbmK3aamglkUGt4ndomAMf9r0aLzBzZjdPbzXV2nwFufThG6OQysVFXX/1Ev3LvbeXisIneK+mC1foFBePPu4qQ8tlRM5rNjqHvEgR/yVfT0JcHq2rKxs5Tb+nWUXJXzyhYqrlHwS0yZUbOjkrcf1unHXwvSlbVoxXkxDK2MKCFaGyfWmaFNJ/+FgiZJLGygEbXB7RjE8l+scZdLXPaGOlHMG9MyNuY8Uii5mBrksoCtW7oaZDh7acPz9v3jxGN1+6RE5ffCXH0hmrZvwTi+Y+fWSvnGsnVBrPfv3kt6xsgnyhkDz2J1fGwPVNaNzPOfj6R7W2NlMUPp6pgdGLfyFD9OLXaUcgfe+bqNeBM5a8QdJbfWIWV1KL29kss9/msgr5QiF57E+ujK9LNNo+ZMwozFntPWDQB/sqPTy88BW4/tyZedNG56x6OYqXpEpzm+0fbsClNuJSvYgjH5eaO230f1e9LBHNEpi2LJeS711bStEwvmDzxwe9pqVpVMz3QXh2Qv+cMOvX+65dudjc2DByHvWFuD5hytXLF1WqMbN/m8Qcfnc8a9yaSLQV/14IxeLbHruIbcJtmSul2F8l7oz/7U6uZy6jkqndC5mu4pSIhMoIPh/z3pgxydQXyZxrnM4UOJ/aPZ9VYDjh0cpxZBX3kpkxC6gvFog2Is6Ei3wx3+Tv58670EcrTR/uCuR6jUs1NzfhfjHZjEYKb9WmxgbzotlF29ck0tTu/bzc+a3h4iZYxfTaxb1fb3fR1ELDhEFzP12ZItzOd+HfnyOYkDAbRzY/wVNNk5OJf/EO23HF4QYPdJkm2/DkYXck/dM3Fg+AL5jpMJNZ1Dr9QRPhT3l+SRdU8kok+Dr4ZRPU9USzxDMNdFf8/KrHj/dsahqv16MtW7Zcu3YtISGB0cdXr17Form5uZlxMzMv0+hse60xOmXfiZTONgLoiqjVRloWuxgMqJn2z+EJITtqW/iwbJdF4967r2V39nUGHRMw+eFZCYuW0Rdi4unqN2DQx9/W7tte0NraYuFjyJOjZz1BSrF4d4lSNh2SLlo3V3eBx19NXojW0tJs+RsRuJRbR5VSRlCA1VsKz1vKC3VcKfrRXhZ7e8rHdlu3rSNL2bOTumYX7KKriWaghzB37lysjJllRkns309uaGI94evrGzp//ryxY5lva9fV1f3rX589nja/E60FAIfBk0DJZaOFjpJV0bjgGaGLC+dYMjY2tri6d/kpIiCE9iAmLFpqcl1xcbsT//Ko5HIsUT9CFcszaXqc5QY7spQ5hIoZcT130UpvP0jkiJu7wnRLKyslwbFSCohPQ/H9eVG6SFopaT6rOtCJpWzvqblIXfljngpNW6vciaUs0AW7YC8gmoF2YfM3tZYzXEXop6v0P6gPKGag+yK8iawIvh4YuAs4KOZuh32OtO52X0GOXT3oIt3tjjZbpgf0qCt3oS3NgWgGnMbEmzrbAgAAAAAAgPYBRDPQQWRkZKSlpSmmv/jiixbfjAQAAAAAANDJgGgGOg6V6pX5umV6+qliPULz9Sg71FoZAAAAAACALgCIZqBD0XMqGSvm9Xp9diioZgAAAAAAugGOiObJkyfbkm3Pnj0OVA5cD4TSitlSDv1KVdixwuqcGD9LuRSLIR2VwkvxmqI5/pXJOAEvpKEMe+uzqUHmXfeJ9ltrEWJ5bK4gIVPSr/boDgAAAAAAZnDQ06zT6SxnCAsLc6xmoIchD2XmFXOo3qybWV+SmpmZua20JkZRFvKSUaodQ2cVJqZV1aBQNqGmdBvKDF47p4j+XLfN2ChJWYlOhTJF/Ocg5+pmqzqcsTMDpYGA7nTMTPNw8toAkmqaXvHgadCsKsWpkXDGxE6WJMckzJo6BrIntkXzu7VjNru5VuTp7WgPPmBLIrh5uunoFc3dlVfxR698AJNntlCzveYq1SPqBQc2cNPQnBTkjCI2tctnalMf5YbZ2oqZPaLUUyarqQb6N6KLifw4NjiJOuXcsZGaIuQX41jRjg3PqC1ekI7Ss6J8FX+ay+aUtixXa2+LNnbEXNnA2fnL99UvCjH9RnkVbeyvGY6s8Z60FJla61iwYq6oqJgzZ05ExBQmRa96hfcw61ExylZ4tyg+oquOZUbkRKA55lQzh19MTo44ITwapfGliGaOzkghP/BJ4mRqitYSkRTKW6KrVG3St2Xctxum+87vGmA3ytM8fIzgqxj9xezQFIoin8cRX6hqquRXH/ZaQ+XQiTi/aiW+hPl3VE8AKbmxadE2TV/bLgi4aXCnwoujTB33m3MOkFUr9aJbXmQUpHDHielFNTkxqCgtNpjOjQ/dtCLhhlPKLE1xaAsqWSjthQn9pm3Rs3LwemnTVopk4NWSVvzl9ssr0a8MS2VUKN4ic4oc8KzI67SnlRr5HjHfU0xiYuIxzvOEL6E4WyK/TjAxSisKt94TG86d7kYXiGl2ikTuss0pEh8fX36qFoUQG2oPb8/HKe1k2JEDS2nBjCtf0KG9ZhzMGKFi3rdvkiQb88UTKfhEDY7IQf5VaC0RIYhcSKKDY2PZWXR1wNrY3FyUi6e/cierUDUzmhkXn8Nchyo3zVGlMiMFG7BRGYxSU3Ox2klN5byAovpF02uxuiGjSXByjsBs/4DE1BJ9Sqi/dFovdUYInY4kxd9kiRVHhHCun1iYwXVByVppH9vkxgGsoDjNwxerbcGZicfsrAoftYUZppsnKcyLZWqcZyxgF4mFhcGxHTQd7hLTYGwEReWQ2Z3pN7cqPDpxm+BWHqquzCVjNVk1NDi3pBoP23iLBdBTvNCITDqFHzPlmZEsxSF5pWihpBccWLmjZDwh1cubtlLED8laUbBfVgmeT+MrAX3w4JM5x9H+iQ2zsxXpHjHXU4bo6GBu+l9diTKVhjAbd1dHnjsdRRcQzb5RWVk9tzllpk8P2n64Nopo2JrjaPny+PL2Maz2VHn8CAc/CdU2sFzOoIVqbm4uL5oPHTokzxkcHCxJYTUzQqz+DSfz1Uod/VY6ogJLZ2UU4qkvE54hq8+kmhnN7IdK2TW5qcRNkMN5CWbhlGMB1RQ9wKSkMB/JltRP6x7W6SefW7MjEd/y0GBUSZwSzLSeNIOHi1lVvBOEdwGwTke2zpoMoSUCcmP9TXfu6Xv5nMeAvuvPpAdga4+ZrGUzKPURaDck0zzmECEHQjKegSm8Z9FyVfRRC3QdwmcVbpO4QUWzU3JimiauXBaFuTF/t5q7cz10k3z+bPI0y2pA0pm/gj3OfrhChNRVgCeLiQGzmGX/AMZByQ/A5O5LhOBVovLMNUhevI2my50ZYhg3s7LlZprmishbsaUSnAcFR7T3CW2pFT+ze8Qc4RHBXIFj0RHR2+SiWdhzy1VZOXe6n5zuAqKZ97AycQtMYnxeOuIiGZjfwvAFUuR4EFq6lKzjPKm8m5ZZJuWPFyzwNuURN4e4uknV48iaw2u8Zy9Fptzy1uUWmhC1hdZ4T0Jsm0fWeGePkAZfjJsQlE6r5iMHyqdPmL69XOhpZkIqOEv8+M4u31cxIps1QGoja6LJQpxhwgF6OT8/Pj4+Pz8f5bdbEIgiTCjziy++yPy8ePHihUdGzCfvmkNJSfqZM2cy6X369BGXI+NRam4ue7FIjM4IJxeCWRbPLfbqQp+D3BARLlUfXCXESxBbop8VgCsP58OthB5ckS0EvoroDMHt99xK0VSbjFsognY4h6nItD+HiqGdFIUZrPGcC0DeHG+JEMnlT1gVbkS+FRgfJd9H2hOiXDPgVKTTPOb2ApkrhSKrTkPJ1Kg6wLac4gMVaFf8YpKD6dgrdpYsmZ1WU6ZptolQydw4JyY5M3ZtaQYzn8/NJO5OJJ8/W6ghQ2nmz9pjfm7vPEi3EevONI9fTEb0HH9VLD1+dbAksmYh52a2q0pZEVMrVTZVkYhK5qjC5DMd52K+Ffv3iH8APf0fijXzrFlom2kFubQxreGqbNqOVs6d7ueF7nDRnD87MF/w0yQ9a4vTZwftq68PYWQmk7J9ekV9FqNW04vHCQVffvmIivr6LFolrjlSr+hNzV+KhauZPEcKmNbIuoIjFSOwYcfx73q2rdqscYelreMUiYUW2sqLDzxwZFFICB0gkVQvU6p+I1A2Vs1DsGaOi0PbTStwBURvk1ZIMwuK903nOkvqZgxgW1mERL2ojzvFWUhnmFBfkVfOTkim4+o6KyilurqqoqLi2PjkUL0+dD7+o09O/vtNNw1Rzk0ECOuYZR2/1dFWmzBdXRA3sdYjVjMr3tcWOYn1K/2FlxxJVjPjnOxGJbn5mImlk18oufNFx6KqFDWQ5eaAbodsmhfDxGpmpNgSVSGbGtmUE46cjiU0RVcyhxO1irNTObK5ceisQn4+z5Y3N103U4PCzB9Zm9s7CcljXZbypaEMVtjPKerAJ7+sW6jgM7aGrIiwFRtjpri7fe2rEs224sAeIdfQTdX6ytTgiBTRzIC/GuLrm61dsXbutPXmQgfT4aJZ6DKmfasstYe3o7z0EHrZb0Q8k5JP4EtOT48yib746ePoZd9x0+NnHzgSN0KxrbgQc3lwG0sneS8l5tRHYUv4zCZ7JK0nIamFFtpatChpuTdRzQhr5gn1cttwPlRQc+T40qAJi9ApUbt8KyhkES3DtzOdFawirWw/VYvGSXqRLc3QVfj3v/89o7YWa+ak9foov6ibburj6+s7e/ZsPf0aDeHnAMk5FcBfO2j9W1KJkHn3mwJ0qbWyu9ycY5i7gSccC4KHMlmx8BU0z12aUkJDBW+v49aRGbT/StODEeTlCSmmMfX/t/c+8G1V9/33ESSBQEgMCVEkTEgtiqdOWQVSWEp/ODZ/RlKbujY/5mp2Hvm1FZts2GWb3WLK4wqPpwpzeAoxnWOz7pFmZ6rHsOvGhqRtsGN+oyaRwGtMXbXYgGMknASihP8JRM859/9f/YskS/L3Pebee+73nPO9N1f3fs73fu+5TYH+yZZZVF2O9GxSFz2VQoNqd9F3i2mKej2jXFpRYiDdRyA1yId5wc1IpGIkz+0jIn6VFcgYLNXlHS17TTFfi5TGxpLxfJTxc7TRtWjkn9on3Wp6VJjaSmcsC9KLpKey3FiHpCVJ91BkIogZy52JWkXeSyyNYBv2aV8KVWKEXiL8i0Rob3P5ZEsHam9oUgmnx5VNE+9vJ6PJgPSMSMQ264OtIPo/nNRGW9ZJAsMTu/Py8kjaQ/TesXiN2ougL21RW/HYRBGa6q1qVDLCsnbK0YXa6vHWOSWDWIhlLxYMn2Am5ueff76OWqivr+9GaGpqamCARNRkX8/27a1E5QHxe32VlW5JDIZcq6x6t+qzbKrWoCwzlH20RD+kCnLXAkt1f4deo2HW7P18++GmCpeXhIz5agIsTWFuIx8GrHD2D+r1GqaIvD3CG+EWSeqxpDs1xI/jSWvO/lq6pt3Op2cIveUNJPsIpAqFYd44crnCXCZOnNMqUEMfftYBdupxmD1joaFGydZmfC2KdXQqHxtTNa2V+NepU7WJ2ILiyD/S2D4ZYPVOnqgrncS8dmKyXIkOpnNQ5OnFMmOsomQlyfaQtxHHjBWciVZF3kssjVhKTFbxyZIK1Hsh9we1fxF1qHvoNBkFKIbT49yViL+dLCNjRDOJvJIMA6xSqfkkSh1szNZsplN3Z+qFEtYzE+xEdPjVY6zv1CKjZ4wuQcEZDypwyG1EAV3c4HCpv7OskWQwzAVlclOh9yqph0J7aV8ImbFqLi629fpVUiLIHtfMFGHTeUkp0wuTDj1aqnyIcC+SvUBVUoPE5XiSsVgsgUCAXj527Bii3v977rnn5IbSF3/p13yFq9QKl44hmXJOUKtCUsUleR1OMF2dpBNh+5LUDwV/ZRtlrUmN5N0p7IXciCAtlBwNtcMFpAylYZ4+nvfF5UOjClcAUSmIFOw8zclzGUgQMg18M0nw1ElHp/iCxg5cLbyxwtiY6FuE2PcMlG1QpBYUR/66SGP7C8Y3Qnpkk1npUzTAzJxIP2/jQgJ4t3RNXmEJ84RNxRjJS7g5GeULcXko0c/kHYOGsKBQwRlpq5IqSr1EbQTR6QnMPw5zQFKBvBf2uFnk/yIxIJiRRACX0xzvrkT67WQXGSOakbbM0bujMC8PUTOy0SWdoySESpZJAoJZaG6b6srL8wi2VPV2FTK2uDotgknqAl97XqAgSW/DhYV5zEbdEVkUWaF3s9RDIeK+CFg1I1vBJtU0YhImVizl+iWx7jIdF+EWHiLOI8FeaLVIYsDtsjbf6Cku9CzUfM3o2Wef/frXv75y5cpwuEvT/XxXneUb6EZf5I8CAkAWoDjME625pPYWsbHC1CYKxZKGYDiUHsTHmR+MS/+FFEbPyv+2wvG8+viZ6VS+VXXkH3Fsnwj8iaoYGYiwVVYSqSl1Y/lCJF9Vdj5SIyq1VKso2kdrJIp/8SDfhci9RP4XVGxQ6cLClahcrFSJ9bezECT6ZROUbtEsmVWNXWUKmVwDIebGUEgxuQGhUkdI2piktnRd0p3IXuAY76SsdwUPI5SrvAIon1pO4pi0X7Fv4o6kBZL1CPuSRugJNEZHR1es8CMq6lzf7bN0dy+QOwAAAAAAAHGToGiGr2RHgZo1ztbrXyidmglwJwmduKzRaJhE3MluOt9ZltAMAAAAAACQoSQimg8ePJh0P+IjIz5QEpGFDOxmChJNDBIZAAAAAIDsJXNymgEAAAAAAAAgQwHRDCSNxxfaAQAAAAAAgMh8P9GKIJoBAAAAAAAAIAogmgEAAAAgJt44ePD622/PvVoAAMQCiGYgI/Htesg6WRNwmeBjwgAAZAwHfvCDL86eLdy2LcdqAQAQCyCagZQjTx46c+ZMIBD4kz/5E/oLRjtlE2u8M9K8rb19ajxoiuP7w2knOPBsC7rLVbFyoR0BFhJ8Gugrfe3encw3y4KTtfpe1P9wak6Md3ZpOprRNm94i9IHH84M1P6okvnAoJoNcCEce+WVXz7ySLySNPNrZTv07wIJTnuuBPG/TRr8C917pavpGrLsO6QZuT5ML0evgmQGKlWEzeJl6wtMuX0RRYLIhXHQyO1vRt0ugwMJf98ERDOQcg4dOqRYjkWzSo3gqcn2610lqHb8TEVm/MYAIAJ2u2Vy9gyykHM1OD6FVas9RTcJ3xvN7Q34Zowbr5U2ThTzYPnDYRdViG/VmkOp083c3mXUvTDF+KhPnL3z6qs5Vivr8e3qmOx/OIxPQnza73qH+oG8zJRgvdsyGRRIVd/eqfLqe+nBLRlgtjfQ5dGq3IV/X8i7k3xFj9Q95Atv0curyJpF1DKryxcZ7t6W8hSFDxYKEM1AytmyZQu9MDMz8/jjj+v1eofDMTo6qloByw5Tyb1Ifwp1zAYrTAjflafXouYX6CsRrRgkJaL6/MieiTrQsUAkrI6MpspeLjKhl5WIanHhAWHLgdUdlT438tExRYUuaA8X7eVyUVFuNA2ScxWfJIFp1N5umSRfar3Xlex+grPH7YYb1bYNohond3+ybEnPzOip2M1M5dePPkovvLJnz5/ff3/O1Mp6LE07XfSSfrV98lQQXROY9pGbCEZ3pcn9RsCFGAUcnOxAt7jIiskV3ukiIWGmkWhVViLXTsZUt77cPjUbREheRSdtNtJvNtex99eYKl/z5dQjLxDNQFrZsGHD6tWrI9ucGR9cW+LCC+vL0YHxoGkzHq9Org7gKxEVS9vl21ktK+Gfi+GBvhV5wztJAb5y1U4GnKilci1VIqhe+R4uCdMBs4EzTlmJa/Nsy6AxEL5Xx5SsxyWilluQtx8vUjG24KRCF4yHwGJgfYnpAJVN9M7IpLGkfGpSGGkWj+L0ggFVwPCycKwlyK+w9AfurdCJx3slb1DLPrfdYnfzAzbaAzzUROV3yZ/8qg7n8C2tfZtk5Kk+9tvW3vxCM9OkaMToRAe4kHPkoWkW3jinX3zxX++4Q/5hpoEdO/B/9PLyvLyWublll1+eRbVyFvKcx3QLvi+MT1oM1XTZFQb7cSxwLdRvgwkzK3BmNvYqeIDqXtvgUq0iwV35IypnivlRLybWV/dPkfupINgsuVAsmGsJkohovj22N3MX/sOBQObx3HPPLVu2LKIJuR694HYzSWD28rs2k7/rqUvNys3llsqRd6oN0pImC/PbI9Kh/y7m9mzZEnaRnyhbQowHZ8+QZvtvlNzCJSXk4ot1iZvbbGxA8panZJ0KumA8BBYFegPqGD9Tsf6NyfIbq9EUv0E2ivOWswMq8iRXNNZqQq9VmhrCYaI49XvfCVefEg3GSnYG+o8zCrUcoViSItSHc06ScSgeeeojjv2atjTRTWI1PH6jkx0xBgfUO5IMRLPvKa3httv+n7NnHy8oOH3smKLBLQ0N39y9O+tq5ST0gBMPz8jgU9mEDzPHjEKVMwMt5KUF/AOYjaGBwLTPTg9uqaSO9Vk5ekwcXcUtJg0JNuvpddmFoinLDkeCkWav1xvZwGq1JtYykNv4fD56obi4WPnD2iQ3g84bQ5TgaJkNlIsM7IYrJFXkJclBPA7mJDIAyNFtNqK9H/imXzCVbBHeS5VGcVP0gEphrLV5tb25Q9NMIlLhCpJkKR+MxUWE4VxQYSwaaezHx4fICPOumDqSDU2zkIuWLGmZnd3f0jK6c6ew/OKlS//u8GG92ZyltXKPlRWunWHnZK3mUENYOR1CPcysiqwK8+YANQKM6ffIp46wSR2K0ejc5Zom7xu11ONcpHihsGTXWDrt6RnzQzsKazzUYttoqFE3tMOBHJ1l2nQ6kPQek9JmKhzLDGZmZuiFY1QshJsrQ/ELgmfGB5HBya7pSIbGyDRyow9caCW11WdquBeLEve0uISrgbWLnk2i8h3SdKwOOLkSvnpUcDv2yjd8Tdcwyc3Tt4SrpS17y3njBLoAcgp8rk4e6EDbGppiC0ApN0IlRJJX8h/SkOSNeKrik7CFyatOgCgjT98hvTBbKaEuspmtTueRn/70oxMnuBLDbbdF1aOZXyvnYITpyvUm30jgXior+YNpN5XvFyXMHEsVoWJWqQLIsdxY3nFgrwmfkgvtSRJIsmjGqqiuru7BBx9U2T6xu3C41B/q1NLqefeEvyC5DmQ9sUtnzjLj1fapU6fohRUrVpBnFGyw2WKxPCS19b1WiYwB/iKFB6OostJntyONhlQjz7ksKDiL7JMvC0t4sOzwHtJo6Ja3ecNEQzj7n9VTJVz16AjbIS8CXoNHzJKWLb733NYfUa/6mRLpAsgpqHN1+noXFcTlkI/iIoy1uEmamgI1ky2nUHU8gzEywvxRywB7RyeJ1MgbiNSCZOSp00fsznQl/bsMTPuQQRppXgTjRqEexfzhwIHcqJUDEC073UA96GeyjZHewE5oEzw1aV9dHUOYOWoV364fkewpQZaRvEok36R3t8XDyoqGtRrrC/b+uxQuFFlGMkUzrZgNBkNRUZGyxfzclK20ihZ32rLOEFF+SXQgF8CHpTP1VdJLPLk61PNrIbqKewP9qAXdFXaJf13lshJhI+EtkkbC4XuFqy7psrxEoR1piWA1QhfAIoGcAwql0lGcnsvz0UnHWshyV//gj/Rk8nKSoaHTqY73dOvXsgM2LoNoZYXrYVT7I00lYvsiSj3CcE428lQf+1lu7O/4ETWrOlWxn3eACYfL9iW3xo2/+clP6IXbW1vfeuml6REyN8LhZ565+b77srpWboDP/AbycIYskx8OOZdJKu2P6BO23btT5zukR7eEIwpWXZQq74yQd1o7NMz7sNRbfZIq0X3bshg1M6IuIPYXBpHSRS/LSJpo5hRze3v78uXLlY20m0pRoWPIL4mKHtmdV9NKFkjChlmYwkEVTOzOK0bUFrw0VsQsdBUIm5FUIcHXGSNqbcVFtrY2eoFtXt4j6aGVaYlLGik11qh4ZeuluxakmuAyh2CPlBpk/ZF7KHBMEGnm21By0l/QVePxIA/q9WN7LuQsPQjSveBM2H1IB/JvlwBA7iAfIElHYpKxlnjMJhxrMXmZguZUB2PyEZ1S9UgtIIWRp7qxvGXOAcYmhqFp9vLfTz21Yu3a701PL1uxAq9+ePz4kxs3/vKRRyJL0syvlTNc0xTe2RSpZEtYUZ9ZhOWRq8i7UCuM3OxiQfyrJxeQCrZcfNFbABL9sglKWDQfOHDgySef7O7uvvbaa1GMipmgLev0ox2FeTWIkW34fz01M6OhUIjWi0PznZuOOGqMuMTMZHCEGqt6bY65eWQOjrWi1raJRrNOELEmzA9JqlThZqcK/KGQA68Pk4VO4SZJj2XmxlCokWmJlDgUvRIkljiGNgn8pDS8aD+VGpySuSErQYI92kEGCqRx0voOMtAQtXmkytFrQ4xWVj8Ikr3I76NNiEXfBKfUMxx1UQIAAJAGzNXVd/zwh9wqlqePzM//tq/vi3PnLl66NHtrAQAQFwmK5qKion379mGhjHUzXo1NMdOQtAysFIkUdAz5HUQ8V5kF2+ePDKNeB1Wi3VRqGyZqOd/oGQt2ToxN9Y72Do9NoKIZJNLM8iq42dJNROCyC/SmmrGJqgJpj0gpZiz3ykNg122l9YjrFOkKbJK9VGhQ7oasRGmPKAXeqdymqEfFgyDZU+xoa3FeKxmvhMoQAACLFhh5xoNQj3L8WVWVvDC7agEAEBcJimYsjrFEbm5uxnIZr8asmAWYi9qwEnbE9CIgtu2aG0JTpVWN+TNdcxMFU8b8hFILbAVKCUXi1xMdapUFSRSIWA6rdhOtQbkbyo4l4GRkmBELHrDk5Yl3BwAAAAAAAFAn8ZxmTjfj5RgVMwmVztQzUm1irNVW4JcbUXnPdOoACe8a60mU1VxkLC6e6vVrkZYs1WDBF7nKHL/VMxPsRFqktImHFeHBGQ8qcCh6RaLBjWQCH2Y3qkSdolJxLVmDcjciOCbYI8QkcNdHcTLyQaAhnmPl3VnW6O+dojJekprV/P1kNgYAAAAAAJBBXNCLgFgoP/3007Hba8s6R0mMk17DwpfLxxVbOXp3FFJWJI3ATBVSCRCUZjQXtaG2InPkKvMCvWib6srL8yhuYjBX9XYVsm5hs2i+M26Z+U5t4vQMpQblbkRyTHSoqCOF5iVtavONnuJCD3knMPpB4I/TcGEha5LS9wA15E177vMl9fX1t9xStOwrTE7I6L9+D//t7u4mBvQr+fCyIAAAAAAAGUy6P27CvyFHI5wujVtm057FdiG+CbOsXUkV0SxspY5Qp/ImblnWoYKNzHclP1W2kLGB2A11x9S6k/fGGSgft9j2NEUQxUwpZ1o3Y33c1cW8LIkL6+rqir/zz/QKZwwAAAAAAJCxJCia4SvZQGSwViaKmdXNLhcfv8fL3/jGX1x99SrbzeQtUmFAGgAAIJM5OHfw9vzbc68WAACxkIhoPnjwYNL9SBUZ8uEPuRsZ4lgqwVLY7d4brq05ceJEbW0NFsp0OV72ngxfTcWY3VhM19YoVPbt0lgn+wOuiqhTwQcHavWVbmqx3Rtuin2udFyxBTnVeyAuNKu0y22Lr0sAALKbH7zyg7Pnz25bvy3HagEAEAvpTs8AFhu+k2HLGo3L1fvrt5bRJXgZl+CF7q6wz4RX+SwOvtZIc3t7++B4sEJR0/J617dLP1geCLt0tHre5YuqYaNpZc7KirxhMkG9vF3fLmszrZaxeK4diEXaAzkNP8Ain7liTgjBcA5xw6sIp5+ivdxGUj228zkSF97CYuKV4688cviReCVp5tcSkli8IAOiDLibkRK2A/U+8Rm/d72rCckcVt+FeKuIPFmkQRZyQcN3Z/bKklHXmeBAwt83AdEMpBysm+1rNJ7DIXrVToWWiZhG6IqZ0+grZf/BbmIJzk62l7hKUK2KatZVYKnNGNrLq3VsYfKyPASN6TaX2wdng8jCOoIVPRZG1KXP0iT5/Bqw+CB3RGaAxaxyAymhgG4ZCEa9YcRrz5FRN6TcxfV7F/776olXc6yWkATjBcGBjsn+QBivy8/dNEQZuBFnu5frk/EH9ynZib2D5dUuXEPs8OZx9R2nqjhxqcRAL99rmSeLOsjirmwpz7EdBtEMpAO3q9d+cx7Wzbab8xClmOnyGwpW4b9/wNJZSHB80FTiQvpZ1EFUMxIMWOnBq7d8sIOSCFjQIn2L4DLECBg2BtCB2tGkodxUWcmM8wOGjkq3G7lRf8BJSsZ3aSqjhACwN25Tg4tfn51EppJcugoAFwAtFlz8uaM4kNKtN7lHAi4U62kTtz07jARSyaPeR+mFPa/vuf9P78+ZWkISjBcEpt3koo0Uzt10RBmI12EXie/S64JwiqW6v2OvD1mYnyj+waIGF9bSUocrVHecqaJDMgMk32upJ4s6yGLv7zdV7o3+/DebANEMpJbJob0vvzzW3d29jFXMGoS8EaswmhkhrIhbiGquaGiv7Bh3VuBRPBaw7Q0u/ewgY4uvUAFUq9dUIiZMV91v14/4mvAVkqR4NGCRrK+c9lLZHyQWMF7t7LcjSnAHB/AwWLBJObAXHGipRMwlj8OORmo1VjqakFPXAyBe8BmJyp3RM+/xPdxQHUezlL0wfkwvk5He9N5aTbPk5BMmLCk+LiYG0ybU3OymRo5MHgj1k0ECG2G5TpR1QrfGmTAWsio5xovvvHjHvjvkbyrvGNuB/6OX8y7Jm/u/5i5fcnkW1YqNOOIFwhNcb7BPCqT2gkQZiIal7xnUXkyWOxl/6DBzRIelO85WEcAYRGyENV3cQZbN1f2Dknsrf9HIytsniGYgVdTX19PTzNnt1WSBno+ZymmOWI9cj5rdbuZmbS/HFz5LdT8lnzdjhdLvxL+yWYE9PbKnAstUzLmhXUNUM8KauSSMLe391Wq/ywibaFfESVkc7klDgPQZYxo1sDjgNCYnIN2VeiZJmRRFv3FK7QeUbJrJI2Lu5BMpccGjdfmjYOasJfKZfw2gZWCzk63bMigqd1VYmsLhJrZhcudbv7fSRJonfe/Ffc/KquSYOLjtmtvO1p0t2Ftw7MNjigYNGxt2/6/dWVcrFpIYL1iAKIOlyWvS6Mk9x97ebmdL2TBzRMQ7rlCFN5hVqi9jUQdZdBUNJg0JNuvpdXLwqItItt4+QTQDKeTEiRP0wtVr15LV48fxX/vatb6T6kE3EmfmEkSp4DDJa6aCzj7ERPWCShUtJe3U8zH8v9YRXwma7K9uivWqpuiIimLWrTfZyzdThbLHl8BihtaYVNCXId7wq8Re8TxnR3rk5Ksc8VUb+E1BdlDJeOMSV6TOWjImJfClDeVMXUm5k86MquRkvJNE05qtGvK02RWuIHJCXiXnfgpLLloyu322Zbxl52s7heVLL1p6+J7D5jXmLK0VmeTGCxYkysAN+fDwcRJRQ0OFmLEU6Y7LqggNFH+gchZ5kAWPX0ZqB4L04FxwjcrS2yeIZiCF0DNm0FkZ9XV16JFH8EIdNZ8Gl9YsgfymDE52TcdmaFDJy9ZKfLcW/sDIRWi6gbkIkdQxQwBR6tlqtdKmMV7V5Ph26cl4WEkDWEpMVjpNS/r4Elh08GfoQvRuN+gTqSaOdwUHBhXLidgQBpIR91QHb9BoSJrH4gmdOTc7f/r7n5745ARXcts1t0XVo5lfS5EE4gXCRGY+vTlarbTA5UeIYsaKDst2XBpmlhhE2GuOhd79TMBSXd7RsteEkCG6bcYDohlIFd3d3bfcUsTMleEN1wk2+VR1s29vJSoXCGNKLFMKFV9vEGIuPtzWCpd3l4bN+2hnNS5WzVhObFa+MpHrnFXvpm/5qmAFjv9aNWySCIkABthZhMjImekV97kYJAOgCvX0Ub+L1Y5ksOUmQdmktC2+J9OjSfc0XcKO2ATPUvhfC6LfgzUoCB86QE2y/plBJ/1DkJeHSxAyraer071zkqEp0D/ZMouqZVVyWUAL9SjmwLEDuVFLSmLxAj6lV5a/vxBRBv58xLcUfLV3yWLGcoflOy6pIjeIsNccEGRhrpLWZnxhFFyjsvRwgGgGUgV5N4VSllgxiza8hehCopslm+TPlLl3uclCBV/o4iswaZc81CuAYZ3Eklvmasg3Cf2QNatr4gSy0mZgkYJPBn7oZu/39ts7ItrzictRA7XkxX893bLdbmfiNM3MWM5OTdoRlOT38660KwsfoQ3dxIBKOdJzvVNl2MTZP6inE0VJzrUOyapIZ6jNFX4y+RN6odXa+lLwpZF3yNwIz/zumfu+cl9W15ITZ7yA/eemB4/cmacTbFqIKIPwbKb69O2yIuamwFpIHPbtlex4v6lSVEXpyMj3Wg4EWRB1KbM3k0da5CJSS19W7KJph7KFRETz7bfH9InObPpwIJAKqN8Fycrorlc2qKvrsmqwQXd3ty1ZX9KmXsbCP0aQtED6EA+iKlzU/yhOA8e+tqqAkr3cXLrO1mLrqoznRI1LbCrU6io4Ky2Rd2dpykVd8NRvn1q7fO109fSKpSvw6vFPjm/s2/jI4UciS9LMryUnzngB/88tq2hJe5RBdO6J+1Q4LSVOKfgYjmQfoVDa3eIMsogvaHzUK8I1MG0k+mUTlHCk2euNPGkYslqtibUM5AiUYsb/H6Ym0GDLNMepdwFp1q5d240NsGROYr+L8/IEAEAqqb6h+ofWH3KrWJ7O1873vdF37vy5pRctzd5aAADERdrTM+aHdhTWeKjFttFQo25ohwM5Osu06fYDSDkaOkNDzFpqGg2pWbpcAgAASAChHuWour4q22sBABAXaRbNE7sLh0v9oU4trZ53T/gL0usA1W+OyfTM3CO5XlYuAwAAAAAAyALSK5rn56ZspVW0uNOWdYaI4EurAwAAAAAAAAAQP+kVzdpNpajQMeSXREWP7M6raSULJGHDLEzhoAomducVI2oLXhorYha6CgTNcDVsvf76mULGHDF2DuRgt46WDtd4PMiDekltviMbWUdDOxwzRtTa6qEti2s89Aaht8QbylkVb+dVGtl0hCvnqirVRaXGGpWjwTkptPEXdPF7hATHIdNCzwAAAAAAANlLmtMztGWdfrSjMI9M3UtLQIQ8NTOjoVCITjMYmsfq0lFjxCVmJoMj1FjVa3PMzSNzcKwVtbZNNJp1gog1YaKPrkEq9CF/r61wDFthbT3W2lYfCvblcVvH8vFWRCczzA85BLkijqFNDuzMVIE/FHJgyy5ELziOzJcJxTkR5Ng3Sj3vGCKCXOxtlUojm9jyTm6/dEMKdeVHQ+6k0OZIlYPbo4ndguMwQetyAAAAAAAA4IJJ/zzNJC0DC0eiOR1Ec2LxXGUWbJ8/Mox6HVSJdlOpbZio5XyjZyzYOTE21TvaOzw2gYpmkFAzI12BrbU4r5XI8BDR4fVteUQ1I6yZi0JINyfcyiWE4I48BLYRW2l9Kf6zichTxC8IEfiGkLmR1r9Sb5FqI/QqbVkzNlFVINtTpaOh4KTYRv04AAAAAAAAAElh4T5uYi5qw0rYEdOLgNi2a24ITZVWNebPdM1NFEwZ84W5B4wQxzo8L49KaihqKx6bKEJTvVWNeLNoq+jVQzZNgmZ+aDgpuxYLtoKYv6QZu5Oy43AhHgIAAAAAAAAsaRXNJGtgpp7RchNjrbYCv9yIynumcwtImNVY34mIajYWF0/1+rVIS5ZqsCKUtDtc6u8sa/T3TlGJHEQ1FxfbSAXp1mAB3xGJ95I0DsazqFN5CHzj8qVl3s6pVvfMBDuRFrGWWl30unE5KT8OkNUMAAAAAACQDNIqmrVlnaMkCEqvYeFLXsVTsHL07iikrEiegZkq1BXYEKKiy1gPo7Yis7TGcGEhW4O1shVQ2RCSrebgjKe40EMCsQJ36J6iTuUh2gNqBxCSeDuvLpptU115eR7E75d0TxXqaqM7qc03snskOw4AAAAAAABAEkh3eoa5MRRqFKxjTdgpW2bTnsV2Ib4Js7RZWQ36FUCt0latwAWJOwIHJAvqeyDtW16XXiDDg1JHSNyeWl3RsoqTAhveQH7kAAAAAAAAgAsmQdGc0V/JpiaFs/X6G6ObAgAAAAAAAEB0EhHNBw8eTLofyUQWC84IFILWi5PZXdb9zexK+7/WNZkX0BkAAAAAAICYWLjZM4DFy9X9wxUV5I3I39aWHvJ5t1gW2iEAAAAAAIDIgGgGFg5tnglNz84jC7yzCAAAAABAZgOiGVg4Jt5stlvCoJgBAAAAAMh4QDQD6edEZWk3tVDo9a6XbNs39nb6HQIAAAAAYJFwd9F1iVUE0QykH0FOs3WgnF5mSfhUBgAAAAAASB0gmoGFQ3td+dfGp4MIQYYGAAAAAACZDYhmYOGYf3vwN1eXP7LQbgAAAAAAAEQDRDOQfricZjZPAwAAAAAAILMB0QykmfVN3rqmhXYCAAAAAAAgLhIRzbfffnssZpn+4UAAAAAAAAAAiI0EI81erzeygdVqTaxlAAAAAAAAAMg00p6eMT+0o7DGQy22jYYadUM7HMjRWZbdea3zObEXAAAAAAAAgAppFs0TuwuHS/2hTi2tnndP+AvS60CcAjcxNUzXov8DJQ0AAAAAAJD9pFc0z89N2UqraBWpLesMEX2ZVgfSA961zhzdNQAAAAAAgEVJekWzdlMpKnQM+SXh1yO782payQJJ2DALUziogondecWI2oKXxoqYha4CrhkS2Z0xotZWD1uFL2kb9Rd08a1VzTlqPB7kQb2kNt+RrZdpjXRG+YKomhGNBakmuMzB7Q/bu2pdxDts6x0tHS6u8TCNcoacQwAAAAAAAMCCk+b0DG1Zpx/tKMyrQax8RMhTMzMaCoVorTk037npiKPGiEvMTAZHqLGq1+aYm0fm4Fgram2baDTrBBFrGs9UgT8U6mSrVHElpEDQWjDk6LUhOmtifsghyBVxDG3CXe8g8hwbU+rZgUYjGrN+UhpesqcFVY7eKbW6DtY9B/apC9ELjiPzZfl9dJPE174JagSRM9CTrrz44ovhcHihfQEAAAAAAIiP9M/TTNIysLqlROmQ30HEc5VZsH3+yDDqdVAl2k2ltmGilvONnrFg58TYVO9o7/DYBCqaQWLNjGylm7RslZqxiaoCpkShNUFHHgLfRD3ijBEyN1IafDgWY12BLcIeK9QtZd1D/ALTUGtxXisZT4TKoh/LjOcv//IvK5qfuaFgle8t3/VVeCiDrr++yu3e+5npT3w+dOXMszt37lxoHwEAAAAAAKKzcB83MRe1YSXsiOlFQGzbNTeEpkqrGvNnuuYmCqaM+eqpC7YCXaxOMPkgDJxEToJxYnWZEQUeUOTliatkIfXd3d/v/M8vLz2D0JlHH330o48+osvfeANdfvnlV111VcEtDd3dvvp6K8SeAQAAAADIcNIqmknSwUw9IwUnxlptBX65EZX3TKcmkBCtsb4TEdVsLC6e6vVrkZYs1WBBKa7lmQl2IjqyTFWZU29NsIkEpRvNZs6zKs6YTrkoGC2NxZi0jEodarstr6s2ZwjZOlzq7yxr9PdOURkp2ZzVbLFYsGK+5JJL6HAyFsr4L5bO9ML777//8ssdt9zS8P3vf19ULThQq690Myv2/oCrIuYxUKzgLlqQU9iwqFNCuzfcZEl2vwAAAAAAZC1pFc3ass5REkOl17DwJS++KVg5encUUlYkTcFMFVIJEFR02VzUhtqKzJJKtqmuvDwPV2V+LkJrRk9xoYfEcQXuMNvMAgeJf+aJmQjGfMs2hfQMbb56RyoTaxBnhwsLWWezWTHXd3fX3VN3ySWfYdHs8/m48tWrV3PLWDcHg0NG40aNRiMONrOSlajbgc0pkM0KpEafAwCQxZDh9GA5d2mQj7dT1KliL4qj/TT4kzX4dmlGSphwB162NjPlkos7Pmp717uaEGchipEIG4lexRdLI5xRKoMxKp4o9B8pRkRv4wuodUQdv3jjWQvy24mR4ADSVSRWNd3pGebGUKhRsE7PziZZZtOexXYhvgmzvOFSR4hvSdqsqDWhC1J3ZCURjRX8FPWuXlewp5IFlSazDouF/OSwYuZWdYEAXvj1qVP476effnrppZfihddff33DhutVW9GtN7lHAi6UET8zAAAWI+7KlvIoCiFZgoBux3mBrSxCOEHXLvhYsYpE9e0dLK924RqT/YEw/iejYjNBoSpsl37xmKrixJuRNxy20N3t8oWb9AMd0Rvx7bI2065g8Vo7kJLgDO7VKvFNIOCtjJO4f2pLhSscdvE1964XHSW73T45G0QW4mVwfBDvi53bFm88K4bfTraRoGiGr2QDsXPy5MkynQ7piGi2oCvx346XP3v//ffxwmWXXfbZZx+p1gzOTtoN1UiYPkEGuOv3asgFgh3odxgCrs3jrAH1q6buPeWmykrh8F44ULb3R74xkaG5ahfMIJtrD4LUAJCz2Pv7TZV7fWnJ19JVuFxUGAyIDx2lA0l8lyng7h1SggMdqMGFBeS021TiouqysRlZI+IqOuRin4fqNpfbB7GwRDE04htpxncI6uSxNHFaNcmQXiW+WZhbEjkS5dXUiqW6v2OvD1kEZzI9ghA3Vl5uGhwPVpB7WmAatbfbJ+X9xRbPSudvJ10kIpoPHjyYdD8uCGFcGcg8ioqKhKs+H2q45JJHI9Votmro50xEjhJ12jJYHgjjJXqA63T22/Ujvib828cXpPaGMBqorTRRw2xmlF1NhrjTXirpgwkBbB5vYWwoFSzr012p5x9YtXsD8i5EPmzG0p1uj3SZY5cFAAB4Nlf3D9JhRK6IH4HjIXn1bEul243cSDR6FuYHkHG7XvC0mn1yTcb/EhtBpFnWAv7f6b21mmY3koZRxWEFGMIT2Eu66IiwIlEoqvUGPrSqgIKuJAFYU4MrlkawDTKVpPEfhPGNWyf6tmPcSTQw2TRZ7uSdxMMBvC5zbnOJqYVSzb6RyfKS8kG5aFYdk8iaivLbyb775sLNngEsJj4sLNyyglkmqtWCdN2+N95446qrrlIy535L1OOkgGHQTWC32sudroZ2DZG0CAvaknBwvAP1O6kKXAQAXymrhT9HfLlgbcjlTd6n7F4j7ULqg9NgJ+Ke1AsnmB0FAEAWoKtoMGnIyFhPr+NhvHCUHgjjYTySpmdYmsLhJsacfnTf0F5JqxciXtpJuBNJbMTPv6Qt4K3uZvIQ3iWIDjD+SIb0i142B6bdgieCu9azWQV0mDkOFKqQf35EBY9nY2rCjkZqNVb5SCcV8L5xWJq8Jo1eQxxpbxfd+vB5aFI8HHoD6sCqeT3WzNXVaJDfIIlnxUCU3072hZtANAMp5LPPPqPTml944YUVBafoRGdE/cGKGdFJz5YIvxlq9B4wKFxsStqtI74SNNlf3RTrpStOLNIuZD5QiWFY12s0WTliBgAgRrDwGKllRa1gBM6P0uXI8sEs1f2IRPA28/Uj54zJt7KxANJv5Yiv2sD4Ix3SVyx21cxnQgjSFZRyEaIgqyJ8vU35312Ge9IQEIx0UnerkLx6x8GNvvDdahJxZ5lvb6WpRHG6V3zM0N6Ab7rZVNIkur2K41mx7Uq0345ahD9DAdEMpJydO3f+5V/+Jbr3Dh8dZiaQGeguvfTSK6+88orz6i8CMg+a6PsDSZWgrgrTDfi3SiSt1YqHu+QHh3/hTIYE+2hKJqN1YhtUHv1lG0kXEh8Chg76+tQU6J9syb6fPgAAcWCpLu9o2WtCyBCbvW+XXhj9pcrIVahl3IcGEf1MXMkmcgtC7AY9vwLj9qiIYsbCpNwAl5kcsQqSqdJYGsE29vLNlH1qVaKaYhaaCFNFSGpGv7NJ2RK7OtnSgdob1GJSUVJaxMT728loQDQDKaHeavWeDHOR5v/8z/9k1DLWy/wEdKjg3nsHHr9PVpt7BkRuBfhOYHF5STyXFJCnQnS8uqQd3zWYi1GFs79WTxnQ24Py37nQxq6QniHKaaaTNcRdSHzQIWf/oF7P9gmKGQByGuo5s7XZ3u/UxTBKJ5jW05cFrKeQgRqlUzWtlcxIXNkmYgvuaVqjifrVKYUVkrz3WYbgMPj2VqLyAJk6QhQz5lWfen6uJMyMRzEks0CgSmNpxFJisopPllQg942FPxT4SLjbvUz/JOSrkM7MQs7UymkyClAMp8e5KxF/O1kGiGYgJYTD4W6sjzdY0Hvow8lDuGSF3+/zUVPRWUjE+R8LC1eYtvje8j377LOiSZp1wulwOPjsPhb6/Tydci36JXTJsnLLETaJu5D5EKE9AAByDkt1v72ZJHjKRulY3rqtercw3EtmKqBNEGVG/y/RtwgxkUcVGxSpBTagIIoOyIb0yd3vLERyRJp0WFQiwcWc0XF6+ujifzcF9ejbZRVVwfcD/JcL6FCBlaiNIDo9gXGFDgKlACXfAsxc0YJDwfdPUjMaVBymEMzHIUAaz4qZSL+d7AJEM5Aq6q3WLq/3ivPX36gln2lZdu21d9yBjh07hlBhIWXwh5nT9Tcn9A1t6q1ycilMssvp7QIAgAxHOPymhUQFtyQcMctH9SqDar4JZRu6O6ZT+VbJOu+eggOLD3wQLMIVwRHRNck0nsoh4xqxSKoo2kdrJJJRElHqgd9lha3SneMqiU54UUm8UaJYfzsLQaJfNkEgmoHUgdUwHt5+7Wtfq+2gJnj76COSvnwZ+SLgBxe94fP5uuuLE1HMKC03CLgHAQAAAAAgAEQzkEI4TazhHjIyhRZksXTV1S2QXwAAAAAAAPEBohlIBwlGlAEAAAAAADKDRETz7bffHotZxn04EAAAAAAAAAASIsFIs9frjWxgtVoTaxkAAAAAAAAAMo20p2fMD+0orPFQi22joUbd0A4HcnSWadPsQ/o7BQAAAAAAALKWNIvmid2Fw6X+UKeWVs+7J/wF6XUgIiCmAQAAAAAAACXSK5rn56ZspVW0JtWWdYaITk2rAwAAAAAAAAAQP+kVzdpNpajQMeSXBHOP7M6raSULJGHDLEzhoAomducVI2oLXhorYha6CrhmhBFiepn8N2NEra0evlVhZgiy9TpI3DuvuJXxoW3UX9BV4/EgD+olDfPGNmqdr82sAwAAAAAAAIuGNKdnaMs6/WhHYV4NYsQn/l9PzcxoKBSi9e7QfOemI44aIy4xMxkcocaqXptjbh6Zg2OtqLVtotGsE0Ss1fBMFfhDoU6uEd0Q2ywluYmJuTEUaqSMSddHqhy9NkSL7/khhyCNxDG0qTO/j65NmuuboFU4AAAAAAAAsDhI/zzNJC0Da1miXB1DfgcRz1Vmwfb5I8Oo10GVaDeV2oaJWs43esaCnRNjU72jvcNjE6hoBkXTzMhWuknLNlIzNlFVwDWLdAU2pi9p7Jn3wUPg23I4CmytxXmtROmHyi5k/wEAAAAAAICsY+E+bmIuasNK2BHTi4DYtmtuCE2VVjXmz3TNTRRMGfPjSZCwFegUSsVvJTokW9mkDg5K62Opn5cn2wQAAAAAAADkNGkVzSSwO1PPCM6JsVZbgV9uROU90wkQJOBrrO9ERDUbi4unev1apCVLNVi2CqvQkWhEdHRwxoMKHHjBM0OXMI1odaJmUSmxQaz25mpxPpDodKPZzDrtL+giCruzrNHfO0XlikBW8wVxeqChr/I31OLXNgc6/kxpVAMAAAAAAJAppFU0a8s6R0mkll7Dwpe8b6dg5ejdUUhZkWQIM1VIZVRQCtdc1IbaisyiKuaq3i66BrLZbIiKXtumuvLyPIJGBM3abJJalBklvosLPSSQLPCUqq9Fjt7hwkLWKVDMF8L8b2tLx03/WhfuYFYHJlCFeWF9AgAAAAAAiES60zP4d+9osI7ulC2zac9iuxDfhFnarLQG0eKljlBnZyQjrKOlBQLvFDyVOgUkwumBx4hibjKzBdo/q4BBCAAAAAAAmU2Cohm+kg0kyPzbg78pbOhYaDcAAAAAAADiIRHRfPDgwaT7kWSEAWwg0/jalfqI2/1vh9LjCAAAAAAAi43C6/ISq7hws2cAi5bfnAogFOHNv4TPZgAAAAAAgBQBohlIL9rryr82PjKxxWJeaE8AAAAAAABiBkQzkGZWVfxNoeY73Yh7F3D+twPBP4PZMwAAAAAAyGRANANpx7wlPHxlbWm3hl4l8zQvrEMAAAAAAABRANEMLATaP3N5/8y10F4AAAAAAADECIhmAAAAAAAAAIgCiGYAAAAAAAAAiAKIZgAAAAAAAACIAohmAAAAAAAAAIhCIqL59ttvj8UsCz4cCAAAAAAAAAAxkGCk2ev1RjawWq2JtQwAAAAAAAAAmUba0zPmh3YU1nioxbbRUKNuaIcDOTrLtBfc6Ex9qNHM9WAcZdYmducVI3YlShtJ8ETokWA3o/a+CHA6nS0tLYrlDz/8cDgcTr9LAAAAAAAAMZJk0Xzs2LG6uroHH3xQZfvE7sLhUn+oU0vLyt0T/oJkdKvdVGobnptHZtLukWFks02xa3NTqK0eS/MdyRPE0VHYza4kKvKsRaN5tM77Q5+FLPsQqvOhLstC+wQAAAAAABADyRTNtGI2GAxFRUXKFljC2kqraOWoLesMEU2ZlK61+UZP1xFHGValwRlUWl863HVknl7ztBV1as2dnUnpJzZStps5gI9VyVgxd/t8XRZQzQAAZA0HDx6M8a2e7KoFAEAsJE00c4q5vb19+fLlykbaTaWo0DHkl4Rcj+zOq2klC0wmA5/bQBXwGRZ4aayIWegqEDZjLmrzjAU7kXZirNVYFML99AVxf0S+FlQxqRfUf6XGGpW+ELL1OlAcvW86whjaesV7JN3N+SFHjceDPIiyk7RPfJsxotZWT9uov6CL2SRtknjRyiyzaS10LXk7CjsnbW6hsVCKWW1rcKBWX+mml9u94aZ4dbWgfhzVca0W5HRV6GKw9e3SWJsVOhB6Hm//AABkPj/4wQ/Onj27bdu2HKsFAEAsJCiaDxw48OSTT3Z3d1977bUoRsVM0JZ1+tGOwrwaxAg5/L+empnRUChEZxUPzWMt6iApySEzk9oQaqzqtTlIukVwrBW1tk00mnWCUC6DroBKycBb2ooakRYZqbUjw6jUIbBT74tSwogWuLH1PtFHGxK7vglR3rJsNx29NkSnZ8jar8JeTRX4Q6FO4hOf1OEY2iQcFDSGQo3UEu25g6slb4fzHKl7mD7kqcycYrb4FPQk0Z2D5YGwixKvWJ1qdsUnPH27uPqkrV2+gKEjZjUci3TGJlbkDYctbAe8e7oKVzjs4u32rgfFvBjI/GGeYJxn7w/EWCc2HxLwPJt55ZVXHnnkkXglaebXEpKNQQG5z1yJzEvq0uyiy7DVSAm7XW3HuSpIvRdxFWGzvEkSf33yvVPfX4Vtqsb0vzFfSq0jymvRP38MO8Lcy1mzuK5XqYXsfVOir1ElKJqLior27duHhTLWzXg1NsVMQ/IVsLAjItUx5HcQVVllFmwnOcm9DqqES1XON5Iw8sTYVO9o7/DYBCqaQRLNTEV3+4LzaBgV4DaxhkZdR+bzZzzGItzXPGul3hdR3XH2XmBrLc5rJaI4VBZ9N1X3DntVuolOxvYQOF9LqXQTtqIsIk7XotupGZuoKpCWNFZF9DAdYMXs9/tra2tLSu6kS3yaR7kIsw8Noa4fimsExwdRv5P7XVniPrODs5P28mq6PtGw5LcaR3VcxRXdhPVJt7ncPjgbRBaF64Bv72B5dbS2gOwn84d51D2CGedRXdSi5Ny5ZZ5njIRKES7q6vDqq6/mWC0h2RgUUPAZ7bJO9gfC+DTHZ7/4zGQuzZwGbPeqNWIRVXHiUomBfqCD6YX8DgeCQmnZLphiLNmjC59s7+QlIutm2gO8rXYg4Fq/V90Y62G7fZK9q+EbMt4Xu2xHqN3dHP0q4q5sKU/iID1JWJoC/QlXTlA0Y3GMJXJzczOWy3g1ZsUsgE6ocMT0IiC27ZobQlOlVY35M11zEwVTxnxpsoE239g61tfGqGlKQx+hw84XilrvtCzGqjgvT32GjHh2U32mDfGbhQ7ZdluB9KQkJVpzLB6mBjrAjBEq5tHRYonZoUOHROtEM5c7Zb8w4VCd/Gr1+Bc7bULNzW484PWWD1or3ezIF+tYpG8ZEAxvWyrdbuTGY2UnauHkBSc1hKNne79ToTzC9Y5cUUwNLqUt+GKqsCNAzpH5w7wgdWN3WTh777RmbzL0rdzzXOfRRx+lF/bs2XP//ffnTC0h2RgUUPC5oomV93oDrwER9XNADdQIlxoCkJCwaiMWnbCKDskM0LTbVEL1o1tvco8EXEinkzRL/UwM1cndYYt07/T8b9FS3d+x14f414V8I8347mgR1lM7ODTl5abB8WAFuagFplF7u31S5gC3u5H9tPf3myqTcrFJMrqKhKsmntPM6Wa8HKNiFs0MNzHWaivwy42ohGA6mYDEXo315BU+c5GxuHiq169FWrJUgyWgrCKWp8XFrW2jtEomGrq4xtar0INqXySVI+beyc5gIdtZ1ujvnXIwk3VE3U2F9uf4TVR82GyWNEHDDhOCMx46mO6ZITncSNCOpETdwzSA5TLWzXjB7XZzovnll1+WW5pMpqitESXSRC3R43ncsHvSEAiHydi/A9ELLfTPHF+zAqhWr6lEzCMkZz8eJ9M6WNYwkdQmOnaAr3IdCuURImjECDEXI+mm8UETfWEGcpvMH+bJR3b4Rtk84que7WBdEgWQmEYo7xBpvNxUWan4JFfqOeO+yA1hIJxeJjtF94sNSkYkD7clDiz0T+jFF1+844475BNi7qCgl/Py8ubm5i6//PIsqhUb2RgUkPksKYhJ7IvrKFRhDIR6WFF+Mrgr9Sk6p1lPiYjtGHeSOyApwv84/ChhdhKZSpR7VfkX3lxiom+nvpHJ8pLyQblojnkksLm6f5AOwfN1YwlIZS4X9CIgFspPP/107Pbass5REvWk17D0JG/FKVg5encUUlYkscBMFVLJE5RsxNoYtRWZFZonNnzIldjZCjZF1onCvmy2uHonhsOFhayh8D1A+W6iCaOnuNBDwr3S9ufnlOrxfdM7U9XbVci2iDdSf6e68vI8wnYkJcis5mF6oFOZH374YXr19OnTp+4tqCNzzaH6et8999xDl69cuTJ6WxKhQP6WbyYPhQULPOxTRKxc8C3dGaFZKkpI/2rxNU+pXC3YIsnXEuPbW2kqWQSBN0CNzBrm2Q16YRv4BoumyQLtkkvwsLlFkG7RMrCZuF057aUkGff8WdCQ1HOdzA3F+yrTb5B/3M08N8aCWuzAQsvm22677ezZswUFBceOHVM0aGho2L17d9bVioVsDApIfOYSdPkCNswccyMKVXiD2Rh8Cky7GbFM/SbWJ00nivbO0uQ1afQavGRvb7dLLO1opFZjFY6OpdUl6A2oA1+d1mPNXF2NBvkNzVYN/2pETCeArqLBRD3Z0rPdxhCQymTS/XET/oU2GiwUO2XLbD6w2C7EN2FWbJvYCFJ3sV0nv4VajKmvmHtXMBT0LdpNYYGkmvAIyOupOUUGG6WOkGQmPWlJBA/TSSAw6/f7J29psPh8ljr8x9fQ8PcbNuQrmJLYFSMlBIhTJxU+kKKCpaTdPRJwGi50B2REVMz043BnU9J7BbKIjBrmuadFD1JJ6AmVcC7RVSpHfNWGQTeBtbOXN5Rj56sj3dSknsvcUII5AoJ9oZ8b44MmccBZseDB5iVLlszOzra0tOzcuVNYvnTp0sOHD5vJk8GsrBWZbAwKyH2mzk48PNXsaqC0WQxhZmkjsipCA+XTWwKfShEp3SUBJHvHDdTxb3ESiS4i0tGxRaG6uGl8I94b8E03m0qaRCMD4WuHsQperOdHaqnAAYopIJXhJCia4SvZQFw89thj35qfx5q5vttXpivbsGGlVqutqanxUdNoCJ4tSp740m8weREyrad/WHjUjgyRRAW+Kkyz1wCSy2UIcNuEaVh0O1RvdMYV9cJDuVPgBV8ueX6FNTwZKqvdzVUe2AM5SeYP8+S3Jnzyt5e4JFEyJhotnS5hEMVG0jzP0Ce2Tqfzpz/96YkTJ7iS2267LaoezfxaimRjUEDdZ+4HgKKGmWWNSMPMEgPJLYVJb04r8p+3NB0DOykcHYuN1YQrLp9s6UDtDU0q4fRI2SgyLNXlHS17TQglP4CVfhIRzQcPHky6H0B8iOLTKiULjU8wE/Pzzz9fRy3U19d3IzQ1NTUwQB49y1PxhE98EXsLDfZ36DUaxsIe6b1X8prTLg1r205JW5/JbdVTk+hUc+3Y7XbyA9ZVOPtr6SJSImiGL+ffoWL2a4Q8n2KfUtGPpQP8BEMkCtMQBs28WMj8YR71fFS/i89aJm/OU/dCNgLNVNHpqYBzk8XCuhWIdJNT8Fzuhg5Jd0F85NiXhEiuiSHglDqQSQJaqEcRNe9qbtSSko1BAZnPgtOH/UH4dkUJM8t3XBJmlhvw0lE1yVfgCb43oPJAEg6dfO/4EtwJvtm5BNaWEpNV9KNUODgyyK+zcpqMAhTD6erp7opQ1yBrs71fegWLo41MId3pGcDixGKxBAKMGKBz70wm03PPPadoLJrYSKWEmTGAmzpAMIcAn04qL5C1I2+ab1BqqtY+sW7iEsMsTUo5YkDOkvnDPHJO8n2wLyORRJHJDo3GLagi8IUuijSPh5LnSO6GbBeUG2DqSx3IFH7yk5/QC62trS+99NLICJkb4ZlnnrnvvvuyupacbAwKKPksOZPwqAxF9lvWSL+pUlRFqRdqQMqdwUrN68SeNCXj0OlkP1Rk4UvYNGVurmiSHyHaZonhZ6Y8Hw6X04yUk6FVsVT325sHUZQrVTYAohlIB88+++zXv/71lStXhsNdmu7nu+os30A3+tQ/CggAWUSGD/MU+6Aod4YlE9ZJ7ATz2SnNbafQqswN1UOh3ICyowvOU089tXbt2unp6RUrVuDV48ePb9y48ZFHHoksSTO/lpxsDAoonjTiQp2K3/z+KDQSlppG60WhWXWbCyKGX45F9K+meokRI/+ZCy9ZEa4w0ZoitSsSaifDANEMpBx6Ao3R0dEVK8jkexYLyWy2UJ/FAQAAyHyqq6t/+EP+S0xYns7Pz/f19Z07d27p0qXZWwsAgLgA0QykCu5tUTpxWaPRMM+TJ7vpfGd5QjMAAGkiho9fAhxCPcpRVVWV7bUAAIgLEM1AqpBoYpDIAAAAAABkLyCaAQAAAAAAACAKUUTzyZMn0+MHkAP4UKQX+37p/CX9jUAJTqfz4Ycf9oa9KfMLAAAAAACAwYISfKE1kmhes2ZNYo0CgCIazaN13h/66OlwEKrzoa7MexEbAAAAAABADqRnAGnFx6pkrJi7fb4uC6hmAACyhsMHD998+825VwsAgFgA0QwsABZKMattPTng2Fo5RC9/1+vdrh9xtKAHXCVJePARHHHom4cEBaT91Ol2X4/V+hRZaO/xNhkFG6Z6NNufYpbL2gOOkgz7WAAAAIr8yw/+5fOzn9+y7ZYcqwUAQCwkKprn99W3orauu7VJ9QbIPbhU5l/i/6PgFLPFpyBXiWIe3LI/7KAkMhaX1p7+9kQ6DqpIbXv7/nj1t1pTUZjqsT5Fi/KpXVbHwH5HhbCB7/aEtxtV6wLZRO4M84BoTL4y+S+P/Eu8kjTza2U7+Bq7nf5WnShCge8gXqv0SntypPaFda7tKBlVYupXNXqShP3lLwjqvUicFF6vKAQ3I/qCw7eAd3xrM6JumqJrUQyxHmJ/aAtnluBtNDUER5AuBTnNcaCooWMR1qkT31zL8oWk9wWogBWz3++vra0tKbmTLvFpHuUizD40hLokc4uePDqI2p3c78q4PewlP7bBNDmsjK7E4Yq/ls/7FBbo1A/T2OR1CDcF3522529LhmvAgpNDwzwgCvtc+/Df37/6+xyrlfUER/om2/eH8QmPRd7TI0Es1Ci1R74R/90eibHvhUPl2xz4NxJnlQfwLx31eMNGWkr2+MjwOIZ+I0dPEsLXs53pF19weqaI5FXtBV+gtkvcrnB4ww7u0Dn2rhNJbHtZ2eS7J5GR1A8ePYT3xc5tY+U1ucKMbIx+hRlqbtkS9+Urs0mSaNbe3dWV3ooZ3teihw4wW1osQsU8OlosMTt06JBoHf9E0ZYHlMavR3dZm4UDa37Uywx5+cE0sdmf39E85MaqPJrgoOTFFlOzSuOUZHGip7EEof6qW0pH3idnp5HJqtq1u3mrm6rWn4xrKLBg5NAwD4jGM48+Qy88t+e5e+6/J2dqZT2BuSGT1UGW1qwzDXkDDqRbU+Lyel0k4is2PTnSgapca5Av7iprkIPdsGZjedmh2ZMISRvZ0/pfaOl3vvMdXPLRofv2MLc3vL5nzx5qaZ3/v/Y8n4Q9/s5S/3/d56eWENORai/rsMme+yhflnI2POuQn9lKry5dhxDbOKmM22VW13F9ETPE2aghrBtjlaRw/zP3p67xJEea0b76wu19uKCqZ6RsaHtfH+pDPX4uuIvNCofK6HV6GVvtYcPAdE1cFRsEdueVoJFQ443otd15L93KLOz5Et8Wmuf7okpFLbShVrr3NrzEuIGXWqn1VlT2p9u3txLTNqoPQV2mOSRpHIiTv2j5C6fTiRfcbjcnml9++WW5pclkit6cu3nO6/WGmQHuSdfGoy2HtgS8Dh0/5DU2eb1NlDEpObrN2V6GlIJtrFql+G5PIF+p8WYDLrEwkjouN4TdlSGvQ7OdSGrJ8zJ8iWfCh9TQfz08cM9acmiYB8g58uKRv73jb+UfZnLucOL/6OUr8q54fu755Zcvz6JaOcbJ2ekyA/Po7mpD2TSWsxaV3xAdZk6oirDDo4NDhgaHvBGsN5955pkL3iEgce67776Uth9JNCtO0hxxHrrX+rb/6UgodCPRoC/l+3uqkDgdQnv3/W3b9xxuuxuL5MNDfW33d+nnqMv3/L5WLKZDXbSYbt13c1dVT1Xr3Dy6MfBSK2pte63xRv3c61VlVVrFvvpeC1XNiVo43NbG9j7/pdeZhX1M1b7tb+KaIaav+a6bD7fSbTHqX9Y40dVqB2TREnVGQjqV+eGHH6ZXT58+feregjpqLuf6et899zBRkJUrV0bvzN6+TSgryTOjoSE3l5VVtsVZggdZQt3wgHpTIlESHFFoHLU/oKhiY3FDoEKGJvP3h70O7qEYV9ey3euil9iIhdr1GshSsnOYB0jYdNum8bPj3yz45vyxeUWDqoaq5t3NWVdrscKGmS+sysmBp0maL/65zSbXPSALiBJpjnOqZv2XqlpL8lpJdDZ0N+JEqoAbq3pQ6+H5u28+PIR62rAWnSOlREETWKuqsra78/+076VA12svvd4z0jP00mvo1jeRUDPL+tojaeH+MlU3sSC/UbA6z/qi1jgLTFzNEdf4IRCY9fv9k7c0WHw+Sx3+42to+PsNG/IVTHUbt6CnjwZLYgiASV6km+rRCNVA7N5dIKrv861Zbygr30idMaCMFx/ZOcwD5Fy85OLh2eGnW5527XQJy5csXfLvh//9BvMNWVprMaIQM467CvMOA/WThCjaIiS5U85p7+4KhbpIIkVeXtuI/0tKJjeXYdX8GhpCZW0kKsxtYBIleG5t2zO3D71eVtWY/+aeude+9Pqf5gvTJOR9iVuY3yd8O/SCdkTiGBA/jz322Lfm57Fmru/2lenKNmxYqdVqa2pqfNQ0GoLPAWJ9iba2jLAqgUzNhuSvVWFtbW/2+rYbmcfNc1VhK0KGdfTtPzA3hPJVJUhUiHDf+oIvhpQJBTcEAtpiNVhfoF7RYJ7lcVvIZXe6ikrYmHqhEm0JgJjOWnJomAdE4AHnA4M/HTx14hRXsum2TVH1aObXyg3WrDcMjZxwIHIhPTE9ZChxKFmJYsYJVEFixazYyEdJ3CsgI0mqaOZSlhv9Pa+3zgWURDOlmgtLtlf1+LXCsqrtL73WeCOTXvzm/Vin3njrn5aUvE7MtGRpOxav6n2hKmkLipJdEcojPglD3vg8uhGymuPHJ5iJ+fnnn6+jFurr67uxXpiaGhgYQCK5zLCmwrEfObZqmOeJzARe0teq1pS4eno0VitZJqmZWARc3d+3VWNlttvbkW6dwb19q1smEUQPu3Hl7yIkiXmvKXG2O/RWK9uUuv5WcEOAcbvXa6Vdau8hj865eYgqHD27rFYNVa1//3YI9WUxOTTMAyIi1KOY3xz4TW7UygX0+eyEDyffnSzLr1aykcSME6ji69laaegJCx77yBpJx2tuwIJyAaK5b3shnw1RVYXKkPbutp6hwsI8RL8/d2Pgzb6Swj5ppJYoZKwVbpaEjUdIVBexVcmC/kvYjoou33hrG2q7VRTulfSl1SJJC9rX/pTp/VZmQVVGk7bqC+m6pHabtPEEjxDAYbFYAoEAvXzs2DFEvf/33HPPKRqvEU6IQxBMBcBPC0CmKdgeqRaSGDDVw+LZ3yRbXWIzX491ZN0anZEuj8UNEZbt3rBwIzZmJAqfzwpkOTk0zANU+c+f/Ce9cF/rfa+99Jp3hIz2B54ZqLivIqtr5Qi6kiqTdSsVhiARCoUwxFSPFVWF11xIlakRMgvydg3zWSpq4iNpIyCac55ERTOTvyBDVKxtDIUalevezS8z5jfKjIkd4jbKMiRkLkha4FdvZBfovviJ57jeubbIXB2UTlfZPyAxnn322a9//esrV64Mh7s03c931Vm+gW70qX8UcEGRfK5PVRIDAE3uDPMAFX721M+uWnvVz6d/ftmKy/Dq+8ff//bGb3c+0hlZkmZ+rZxBJQzBxSn4gEXCVRTtFzD8ERyo1Vcy4+l2b7hJ/qAJW7Qgp6si+rPM2C3jJXUtXwi6koSrwme0EaWUS1qZ5aoev4LOBy4EegKN0dHRFSvIONxiIZnNlu7uhfZLDVAVQHYBw7yUs7V6a90P67hVLE9/Of/LX/b98vNzny9ZqnobzfxaQJZCFPNgeSDsosSob5dGs0tRNwPJBn5LSCnIDSQBK/u4mE5ctmqsdjv1ZaHJbjrfWZ7QDABA/MAwL+UI9SjHX1T9RbbXArKT4Pgg6ndy4VtLk2yibiBFgGgGUoVEE4NEBgAAAIALhWjmcqc844HP2BDna0jKScrEtAk1N7tlaR28pb0/QCVVCLNA6DKJDSIJGOWmyspmQcfiWs5kH4AFBEQzkDQsCB4OAQAAAED6CQ60VJq84bCFkqy7fOFq9XL3pCEQDrvkLbA5H0RYD2x2bR5n69LZyQo2WBG7K6e91FcpqZKgsJZvl6YjzcchtVIERDOQNE6fPr3QLgAAAADA4oNO2aDkom5zuX1wNhih3F6+WSFQPT7oJrDr9vIGxNVVtylH9v5qiQ1XS2+wJ20PYyUWKbJq1arEGgfRDKSJ27/3Y/pH+vvTl3/00UdTvX+/wA4BAAAAQNaBxS9qGQ9WpGBOCmleh3TyzFhtchYQzUDKwXK5zKK3lNXpfENBS9n1p2ZXzfzWWt/t7VJ4cwUAACBjOXTo0JYtW3KvFpBVENWsbxkIMFO5+XZprMgbwGV7fUTPknCwqcGFZjlbhXLFVu2VI74mC5OUPN0QrubqqtoEDIre8T2icshpBoCYMNb82HE3kcso6Avo9QhZyF+9/u6Z395WXf297/14XwDJQ87zQzsKazz0cttoqFE3tMOBHJ1lKfnIjKCzWPuap2zo/1LkFQAAGck//dM/nT179s4778yxWkB2oatwBVCtXlNJrzKxX2c/LiLfWiFv6GHFOsvYKpcrturdpaEsGVNk4eoi+pU+uc2AQjt8j/b0p2eklERE8+233x6L2cGDBxNoHMgl6u5G+3RleCGgsyDySUAdor4L2H13nS4QsOjwYFX6fRMiYodL/aFOSoxO7M7L293bm0jf87FI7YndXGek490T/oJE+gIWMzGdaWJ74TjNrGCCz/viVtWtwALi9Xofe+yxeCVp5teSg0/CrgK/5Lymz0yC9OzktyBk65XWSzkqjuHisSLpzwj/AvvyO+lCkYH63jFVkMxAvUrKwepV+iqfpAivuiKWK5SQ2euaJJvour5dmpH1OgUbQWtqPWYW5B/t/050kr4EI834ZxnZgJujF1i0/Livz6erw7J4CFl0JMzMgxUz/Y7CuhtLjTU/FgSb548Mo14Hd701N4ZC5Ho1HH/32rLOzmg283NTttIqLWsfItfG+HsCgNiRjdMU7rQTY63UHRgb7ICnGRnEf/zHf+C///M//5NjtRSYH+rCWrBXUrajGI2GQmaVc3fBRnlKjnFj07ZRifVE33BpVSeSGkTaO6qKA5dKDHRDXVO9/hD+hZKh89B81FtO1kESP5qZZXt/YIE+fphkzI3+hCJxFGlPz4gaZYk3bJN+EvNQXivz9/QC0emwMiaKGelRQLJNjwesQ1SaVJ3wrVuimUsdKkdEGMqgTx7ubKIjG6LVTUfYw6seC9BuKkWFjiFpVOTI7ryaVoE9f9JS/SRwKACARj5OU7YpqEqnV0Bs7Ny5k174t3/7t7/+67/OmVoy5occw8Y225S4VHDC4kunbXhuHpnZK+eCnrSKjuGyUCcJJItt8WgA1VMPMiUG6nvHVNEimQGa8RiLKKWszTd6xoK5J5plgefcQJv4bTzNojmWKEvMJCA6c16nZgw13/vx3WVYGWPZjKVzgHqmwwebg6yILvMN6ZFeHGxWxcx9uZEZ1ef31RjJwJ+cS30ToaIx4SqTaCEIHxD1vEOskPF10o92FObVIF4Qe2pmsH2I62XTEYfgpHUMbXIk4fgAuQaTV0SdXdwy4oZb7HhNcZw2LzQrGqOWPR6bzebxeJAHpf9ZN8AwNjZWXl4elj3J/QcKennVqlVTU1OXXXZZFtWKwgS+stb7C7ocqhbzR4Y9xnqxRvTUFPKhhYU6YZUcE8KEmeNpRKEKYyAcKegKbFNz85cn7jmQHaRXNMcSZUkpsTyyB5IB1svdQYuOUs0sfLRZh/RYN9/4zjtDeosFl/ukgWhlhG8I2nod5DLVWpzXSq7RoTJyeglX6UQLOt3DTNfBqlv+z08HJChFjbWMg7RcZRZ2ii+PBHbdVlpfGpO3wKJCW1bfVtN1xFFWpiWnTFt9J3nyQQ/jhCEC2TgNmzmEZkUhf+8UPbafJ2caDPIXkKKiohMnTnz1q1995513FA3q6+sff/zxrKsVkYndJM5gRuqpauSUxWM5s6AoOONhxDJ1FucvTKKGgmOS7WyYOeZGFKrwBnMX6C+QfaRXNEeJsoiffUvKSQ3hc3Y8DK6RhmGEgWR2Gckf2VP/lRprVB7By0fK4uf7VNQ0yhN8qbdMLb41bOXAyzN9O/JaPXwz4pgT9drBFJ95YKSndxB3JElRSPCfJuno9UQIB6ndpgPOfKQ5QEeaX7voGmIhFMzkDHEcmS9T2g/xYwoH4vQueVswjxwu0Wq8r/SZi9o8Y0GHYi1xWsf8UAIp1kDOY67qpU7eTcxAjZwnzIBN/LhXOk6TmQEZxJIlS15//fVHH330xz/+sbB86dKlL7744saNG7O0lhrzJE3X0YgXVA34Zyo8fERClrmRLpQdExJDmFnaiKyK6JGSUgs+2dvtQC6R5vQMxSiL4rNvWTkRvMLn7A402muLHoaZ6FN4ZK/4CJ4J9rCCjEP2fH+0NPoTfKm3VC2E2DeSQyHKEnlaiU2n4LUChyQ0FRolN9bR0mFKMZPdkHQkSVHIlLft9+0L1NUhX9BCIs1YOuv4lAwC+6miMhQYCgovMZJxFRlgIH72DGM+/Y8dnPGgAgd39Wokobm5iaGuYsFqsIBrjz0u0tfBSQMz9cwxmxhrtRX45XtCbgE1YxONZjNbAWbYABShh3wTiMnLjyp+I43TgMzihz/8YU9Pz8mTJ7mSoqKiqHo082vJkDxZkyYHRRemC0QMjkUPM8sakVaRGLCJzGQtSKU3q83lBuQM6Z+nWRZlUXz2rfBMHEmfs8cU8BM/wefmRpA/gucbFyN/vo/7jf4EX8lbOuWrbTTE/QbZdhhhVlUgD02ZG0eNecU1baOUoJd15HCIUxQyhanevzfW/NiiD5SVWYaCTMhZpyPB5mCQVs9BLKod+wK0MVdROK5C3NzJ5F/aXNXbVZiXx9jZerGpo3e4sDAP0SMws3aTcFV3ZJhpb5SEntnWhNdU0TZ6o8LsGUIrqp8Ijy2BRQ01RCuuwWeJFokGbFyOpMI4TcEMHvpmIkI9imKeUzXza4lhb9CKbwBN7KaedyoIU8GJPdFXg0r96Z5wTs0xgU20MLO8EUkVuQGdyEyC6kx6M4jmnGfhPm7CR1nUnn0n5Zm49oIe2cdBLN5im6o5tfcfbQXKX8TEP0b8d4p73CWbdEScoiBveKGgpXDfWF/ggyv0H5A0Z04uU0HnQHcwoPj+H3/ZZmAz0aXl0hJxRS5/nX+BUI50mzDrXavWAlMO+fGABDLWRah0E/vehqN3Bz3Oo0dbiuM0fD5JzOZZ0UwCWcWFnsz6XS9OnnnmGXrh+9///ssvv/zSSy/hZbfbHfnTDZlfKzaYyYzRGMk3LM5j5jCiHhYHmXmOxaGFxjRrZgXHJB6QRO36UERRLW2k11gjqqLUS1m9MY8K1DDhsNEL3xkgs0mraFaOsig++5aXh6qkz9lHZe9jSR6WyJ/gB1VEs+ghfoRNav3G5i2RxVozuUGystkzQ3vLRJi0OlnMiXlJaHQsj8pZUDhcXcIdXIBEsujoP8CS+QP6syYcOj36/e/hVWMg+5EMtIQPfGTjP6Q4htPKBn8xjPeAdLJnz56rr756YmLi8svJVevEiRO33HLLY489FlmSZn6tCAjOa3wemsn/KpyOWmbTgp6s6l2znvMLagZKjYSi9wI/0cVGWkWzcpRF+dm3/Jk4Mkues5snZqRhGMETfJvNhgqkT/CZR/ZKrnHBHkTPzKDsNelXJ48ix+AtV4vpakcvEd+tzLCVDUSJY0465u0/0twoHtDuwGWSjrRItIOZp5j3+QIW2SzNhADyfZR2bwAAAOLn3nvvfeihh7hVLE//+Mc/9vf3nzt3bunSpdlbCwCAuEh3eobSsEz52beSraQkesiGbk/+yF7hETxXkzyJyheLTzUPI8eEVGtRXVFFsiiULMOANmRaoy3kCQXyZjKH3r9XnYD5n9PpBwAAQKII9ShHZWVlttcCMoypHs125PVu5775FRxx6OeqwtuNkavtsm5vRt8VVlQDN9iCHnCVrEmCt/H0myskKJpz7ivZwo/NkYysBXUGAAAAAIDFhnFbf9nTsyeRhdG0J8cPof4HVBUzo4DXeZu/24OFNV6tTZogVu+uZE3C/SZVsi8IiYjmhN7JzXAgMSkJrFq1aqFdAAAAAIBsZc3mLajl6MkKWlaePDqItjjVFaauxOEiSnTanr+NW00DC9VvbKRUiizc7BkAAAAAAAAAh27jFvT00WBJiQ6r0qOH0JYHdHSSRjP1vldZe8BRgkYcLXMG9NRTboTsZWXuIbxpyP3dnkB+HxcJFtqLWsBV2h8QdUlyQp6ilphEiwjd4Y5Q+34nerrlEJL3K2uKzt9ATMn+/I7mITfVgqKT2QCIZgAAAAAAgExgzcZy9PT4yZKKNSQ3o/yBNejkSMuhLQGvg9a+LSMbnQi5p/MDXq+TynYIbEGsVqZakNm7Nh5taTZ4vV4siH091g5hdydHakkWNdlEJK9jJPAAitwd09EWhX6lTTlKmrzeJmojaeroNmd7GaLltdzJ7MjZANEMAAAAAACQEbAZGhuZ3IzgyCH30JCb+6hW2ZaGLci+ZaOO+7aumOBRmT06hNofoN/V0+eXSYy5Tci4PewgEjau7iI0hdQj3HInnSVZEWwG0QwAAAAAAJAZ0BkaPsTmZuAi6n07zgDL6ChNxGuf3OocUz16YTg5Yi9ZAohmAAAAAACADIHK0OigczMoDW1v9vq2Gy3sDHSB/Ei15fbhbVvQ1hd8JMn45PihIazFhcbsJiqnoi8/8EB83UVqqgohwzo6fhyYG0L5on6lTmaHgAbRDAAAAAAAkCmQDI3KQ+y8GWtKXD09GnqiX/LOnBGNRK4ts0dGZ7tDT5XYy8pUjcnbeyRHQq073TqDe/tW6s2/aP0yTZ3s79uqYWcotrfzLYS3y53MCkA0AwAAAAAAZAy6Eke4RLBu3B72budX2Sne2LneJKsye7pBr0O5M5mxWneC8hj7XVPh8IZF3QoM5P1mASCaAQAAAAAAACAKIJqBNDO7y7qfnbcR2R1VrjL4JAoAAAAAAJlOIqL59ttvj8UsFz8cCCSFq/uHKyq0iBLQfZo3t4Yb1i+0SwAAAAAAAJFIMNLs9XojG1it1sgGAIDQ+qbhzZOlb/oa1lsW2hUAAAAAAIAIpD09Y35oR2GNh1psGw016oZ2OJCjs0ybbj+AzEB7XfnXxkcmtljMC+0JAAAAAFwYH74FIaBcJsmi+dixY3V1dQ8++KDK9ondhcOl/lCnllbPuyf8BUnodZ5S3vR/SdHf8yDlF5J9Y28vtAsAAAAAAGQfsUiIu4uuS6zxZIpmWjEbDIaioiJli/m5KVtpFS1FtWWdISJPk9AxbqozSU0JGwTSxNUG8cczEz6bAQAAAGCh+EXPQnsApFhCJE00c4q5vb19+fLlykbaTaWo0DHkl8Rwj+zOq2klCyRhwyxM4aAKJnbnFSNqC14aK2IWugq4ZkhgeMaIWj0e5EG9pJhvwUbWEWPQ6sHro6XDxTUeegNvSK8yDglC16XGGpFvHII8E1KZGNNdtI36C7qE/gvj1nzLjD/ynRZ5kvPMvz34m6saFs3uAgAAAACQpSQomg8cOPDkk092d3dfe+21KEbFTNCWdfrRjsK8GsTKWYQ8NTOjoVCIFpRD852bjjhqjLjEzGRwhBqrem2OuXlkDo61ota2iUazThCxZiiocvROIVqbzg85BEkgjqFNDtzLVIE/FHLgFrsQveA4Ml+W30d3RXrqmxCrYqTgm0BWs07SOpgyprroJG2J/K9SOhKMMbePKIonucnsrtJx07/WQQoYAAAAAAAZToKiuaioaN++fVgoY92MV2NTzDQkLQOLRRIsdgz5HUQ8V5kF2+ePDKNeB1Wi3VRqGyZqOd/oGQt2ToxN9Y72Do9NoKIZJNHMSNyCh8Cu20rrS/GfTURDI36BoCuwtRbntRL9HipTaErim5KTAmO6Zbn/StDGtE3N2ERjVRRPcooTlaXd1MLV/cN1FRBmBgAAAAAg40lQNGNxjCVyc3Mzlst4NWbFLMBc1IaVsCOmFwGxbdfcEJoqrWrMn+mamyiYMuZHllriZIr5oWFlM0bBYwGflyfNv0gftgId0pozwZN0sL7JW9e00E4AAAAAwELj+9mXRm58s6lQefWC8Hdr6p3o/l+Ev70xmumJgZ070X1PVKxOc79ZSOI5zZxuxssxKmaSejBTzwjCibFWW4FfbkTlPdMJCiRkbKwnr+SZi4zFxVO9fi3SkqUaLCvVu2GDt2Yz26XaHB1k63Cpv7Os0d87RWWAxBj1FDgZ3X8togLliLQdnPGgAgde8MzQJYxNwp4AAAAAAADQMAp4/WvO9i6sv/HqPyZNEKt3V7E64X6TKtlTzQW9CIiF8tNPPx27vbasc5REUuk1LHzJi3gKVo7eHYWUFUlWMFOFugIbQlR02VzUhtqKzAqt5xs9xYUeEqYV9EM3oTKxBulquLCQ7SoOnSpwkqrsiOh/VW8XY2uz2RCl4G1TXXl5Ht7GnKgnAAAAAAAAFFdXPPQEUaJvVRru5FZzuN/0ku6Pm5gbQ6FGwbpwcjdumU17FtuF+CbMSLqRsha0LelH0LJkQd6VYKuCbyKPqJpkSo98rdYsMhY3Ki0gQ4VSR6gzkg0AAAAAAIsNKvL69cLK/9tJ1kiew7qBnTcPfv2w69arqa30MsILlfuJif2f6NWd0xtQ855+hCrtW/vdeNP+/vauw4YBLhIstGeaoktwlf77RE74fvYl6x7EOrBRaCzrDneE+p97CD2zcxDJ+5U1RedvIKYkcI2rcn8/1YKikxlGgqJ50X8lm0yD18os23r9jRGNAQAAAAAAYqO/8p1fhEffpAX0wHtPVFS0VA686rz1Lt17rw7ub2l46OrgS/+IpXP4oasZm688hGtNXnM4PPoQle1wuByxWplqMfjSTrH9E5t/t7NyA+4FC+Kju4pdwu5x41ZEbyKSt/alw060M2J3TEflCv1Km3LdWhceraM2kqbG73yofyui5bXcyYzL2UhENB88eDDpfmQb0oh5fMDHUwAAAAAAUKSy/07xW3SFFf1o5/h7d23+3S/RPz1kwZryv/vd+/vd7Hb712vLUWX5V4jcVGrwxLjMHv036r+P7mWdYavEmNuELN9+00UkbFzdRWgKqUe45U4+VJFpweZ0p2cAAAAAAAAACOmvqZw8fgIV0tLwxCyTECzn6s1fRy2/O4qVbvl9jFSl3rfjDLCMjtJXvPbJrc7h+9nNwnByxF4yDxDNQMoxGAwbNmyoOn2aK+lbtWpycnJ+XnkOawAAAABYBOjWFrpfe9eFaNH87vT+wpKH0Kyi5Vf+At3zzcqtewIkYwFr6MrK1442FTLZxtMVhw2R+pHbv1n9daT/1VGSZExSPrAWFxqzm6icio5rDjvj6y5SUw0ImdZy+4sMon6lTmacgAbRDKQQrVZrMpm+f+WVlqrTyFJnuIz8bj69Mq/Qf3zFf/yj1Wr1+XzhcHih3QQAAACABaCwLnD8HzXF1Ot0qLL/uScs6ISiaEarbyrfitDXb9JRa7pbn/D+7EuaYrJM3pkrRAMR+5Hbo8KH+nfeTJVU2reqGpO390iOhFp3V6/f0G+9h3rzL1q/TFPv7em450saZntlP9/Cm01yJzMNEM1AqsCK+VvXXlt3/WlLXV3oMianCStm/Pera5d9+mhP1y+e/F7fKo1GA7oZAAAAWJRgWRkeFc7OJpysTbL8ZoXAzvLtN8Pf5ldZS7aKZFVmTzcYfkjZK5mxWneC8hj7XX2Xa5RObmYRGMj7zSxANAOpwmQyYcVseLDD99JRhI4iC0I+/ItAhss2TpMSdM03H/xn3/btQaNINwcHavWV3IsA7d5wk0WpdWzWgpyuCl1ynPXt0oyUyLrCpdbmCG6IanHG6k4DAAAAAJCtgGgGUoLBYLjjyisRKx07Xn75m3k3nkS/s/gsb9y09MgXX+BC26mQxWK51eebklS29wcYNYylsWZXQ0olKCfS272SLb5d1sn+QBh7gvXwLp/IC2ktvG5F3nDYQm+SWAMAkJWQX/NgOXs9SvZYXb1TxV7k5enxJ2sQRjH4IIbwjkKBj9re9a4mpBzmUAygqFaBWElWEhxAuoroZkqAaAZSwoYNGyzXv4iQZfrjo4ZbNz55K0nPmP54OZXWfO76YjNezfuYxJvrLOjXp1S+c47Pa2d/bctAMIV3BV2FKxx2kQuldIulKeyil/QG++RsEFl0qrXIOrtpc7l9UGwNAEDW4q5sKQ9EvgQlS7zS7TijGwJiFGMfag8I9w6WV7twDSYmQg46dY+JEEAhVZx4syQyoh/oEDeSuj0EMgQQzUCq8DH/40MW9OGHJKH/zBkdGnJRm3ycBd5+peVK1VZ0603ukYAL8Rc0OmxAbxXeq7hlYYIHHWKQ1I33zhYcH3SbGlwpsQYAIKOx9/ebKvem59kRHny7qDAYEB+y2EdwdtJuqFawDA50oAaXDvmm3aYSF1WXvceoBVCYKjoki4wgWSNArgOiGUgVFvbv29OfXGfwU2uFTGYzvZG5CfmWLVum3gwd5Q3OtgyWB8L4WkcP6TerBmOCAy2VJi4c0EKXiOvGI5tpvd3uDcd4xyTdo/4APKYDgFxhc3X/oOR5Fz8Ox9eG6tmWSrcbuZFoSC7MDyAxT70g04PN+li/V2YjiDTLWsD/O723VtPsRtIw6gXGBXISd6VefkToMLNYVMufJIpgqwhgIiPyRpYitEHzdvL3BcgYEhHNt99+eyxm8OFAQER991d7OtDa2mlfg8VCZYMxsWh09uxZ9WoBMpZ3jne4CWyhvbyhXNkcX81Qv9MiLpHUdVbEflOhgg/OGFOrJQmQAADkArqKBpOGBJv19Do/Mqee0wfCzn47kqZnWJrC4SbGnH7+39Be2TFOrj7kmtROwp1IYiOOBUhbwFvdzSRBwMXmB1Rz/iQeF8hN8H2DEcvUoVpPX73ZMHMcKFThIyPKU8MBuUyCkWavV5rzI8FqtSbWMpAzUHkZyGdBltBy5EOGno7pJ11fbm+/5tGed37xJDbAypnWzR9//LFqK/xYXhpZGYzDlwt8RyOmNGVQzACQq1iavCO1rKgVjMy55/QKiPPEcFVLdT9qGQ9WbObry2wit4D/VnP9Vo74qg2MPxcQF8hN+DdSBFdvhZhxNGRVhNd55X93IKdJb3rG/NAOB3J0lmkVVyMbJ2C/SKB3nP4vY3b/k08+ofSyhUrCwOq4+6Jvf/uaRx/8Y3Pz+sceo0wsbNqz5b33fq7SDBXRaQjrdEHqFtFkYd7BmG4IUHcLLhsNUaEFZHDiKyTSixIQmduLoG5sAlpgG0Oasm+XnsSeFvutCgByFEt1eUfLXhNCsX0IjVwRhNFfqoxcnVrGfWgQlTt1KjaRWxBiN+j5FZi7ISqimLHk1sFkJkesgmSREXkj/hTvA7DgJFk0Hzt2rK6u7sEHH4yjTrxiN3b75FqmSJTH2Gy2DQnwmbDRoqWDzeRFwL/6qz/+7GeWv65Cjz44u20biTpTUzUjn+/osmXHjx8XVWZz0RB/K9BVuLy7NBrqI0LkqZuF+RyRpbq/Q88U2+3kfkZNuMEU0eEZed3IsFMOKVRTns6ZbBghuYdWTTPbLUScASCnoHI0rM34kiIYmbPjacXn9Kb19DWAHs9TbZCa1kp8fdCp2kRswT1NazRRv4nGBXIYwWHw7a1E5QEycagoZswnMqu+MygNM8sjI7JGQDTnPMkUzbRiNhgMRUVFcVTTlnV2xtNNvPbJajMV/aau2YUGnwxWq9XCTqHx1bUb/wcV+v7ue3j5wyfYDxz5fEN6/fQrr4i+CEi/wazQJJ/gR0G9Zk79r9Sca4FIXPqmI6mr2LhFviyrJjSLbAkAQI6Bh+j2ZpIWJhiZs+Npk9uqdwvDvYLxPGVG/y/RtwiVb9ZFsEGRWmhmRuZ0v0FarMcbF8h9JEekSYcFL2oI64QWeAykp48u/ndTCHH4dllFVZQiI9JGnk/N7gCZQ9JEM6eY29vbly9fHkdNLoaKFwprPHShrdfvIP97ZHdeTStZaBsNNerisvcXdNV4PMiDev2ihJAZI2pt9eAao6XDxTVkwd+56QjdJmKbtFGV5oWrtA31X6mxhvfKTDUr9EQx/0SQRCGqrlMpNyNB79hVfl+Cu/OKW5mDxx8W4fFknKFcQdwut/X2TtUI9i6Of6OE8Pl8y772Ne51v6/euhE9WEsvkzCzz/doUP/aa69Jw8wX3K14TntQsgAAJIqOHZyza+EKbkk4WFcYNSsP//kmlG3o7tQiAtJ13j0YtiNJUEN8RHRNsgmQVA4Z14gkRKJsn/zjfnz/P958/3Mt+96q38ivoz2Hn9i6Nqn9pBW8E4+j738fPY7/ZsKOJPplE5SwaD5w4MCTTz7Z3d197bXXorgUs6em0CNYtfU6mKX5IUeNcTQUMjP6kjaewSUhumRo3iFsKKr9kSpHrw3JUho8UwX+UMiBlWUXohccR+Y30dsm+ugmie7smwgVjQlX/ewHOCReYTUt9yTiEVDeKWmz+QJnxvL9/L5oG0OhRuYYKB2W4VJ/qFPLbN3kYHe5c2J3HhLsHVH7KSUcDuORfshofOONN17+7LMGkqthoaZo9v361Km5ubnp6WmsmEVh5iQANw8AAAAga7nnnnv+8M5xtJGIy+Ov/uo5XMLqzsiKMxabBIix2RT1nmEkKJqLior27duHhTLWzXg1jhizLBDLMH9kGPU6zFLjKkkJR7z2vE3pJiIoBQs8ugJba3FeK/ExVIa3zQlX54eUe1H0JJIDKk5Ky8XOcL0jaWDbIayEnfEQ+L2tL2X2VLp36YDWzVNTUwUFBZNXXrns6NGzZ89+/PHH7733Hh1gTrZiBgAAAICs5s47b/jVq8e3Evk5/zZqabnnDwit3colNqoSi00CpKjZ7CRB0YzFMZbIzc3NWC7j1USyMjIRbVlnKNSJJnbn5eWRxAfRql/tU89pcYbvfWJ3oTCWLK/I5IwwzA8NKzaY+kgzDchiAAAAAIidm2654XFKNR99+Q933nLnr/7Ax3ERlb6Bbe6hUjaOC1dvepXLgrjzhvvvp14sZRI9ODuuJr0sDA8LkihE1bUq5RuRoPd9d/7q/ueeQ89RmSTzXRvuZl9rpVoQ7x7vDOUK3qXH374BOZ2CrJSMJfGcZk434+UkKGbtplIUT9JAvPaxQCK4WI92ljX6e6cccxNDXcWC1aCKaI7giTbf6BkLdiJywgRnPKjAkbAzot6N+fQpKG8TO2OrGZtoNJvpFmbqObUtaXAembNlJg4AAAAAWDxor0MurJqvwZq5ogL9it9wdOD+G/a99dZGojsHjr51y8vC1cPXMVbP3f82Ln2L1sH7j2M1/ThtxyjjKEiqf1+l/IlrBM68fM3hPfcgRn+vrX/rrXqqiqQFuujxX915+K0n1jJbb8Jbn/vDdYffeisb4tkX9CIgFspPP/10kjzRljl6dxTm5dFrkqyDxOyJZi0u9MQcVSVNDhcW5iE6i8Ss3SRc1R0ZVq+m4om5qreL2WKz2VA8sWqpM1ggM/vCt0ltk1brHCWhZMTWQ0PKDaZAMfvYuTIQmWUujhe4a2trG1wNyXcIAAAAALKOtTfdiQbmj77tvOGWevSOYIP2unucd29wkgjtW1ux6nxHuHp8P2N1z54KYcD2+Ku/Qnu+H3sIV1JdtVzsDNc7kga2xZr51V89R+AavbP2TvznpuSlQguliBpxSRQh6f24iWR6NXaVKWTSB0gCQt5YvlZr5o3FlrHbc6/MSR2QLTCrbJOcuWBVbClpROiJuENhg4rVVZsV1eVf/0MqbbItmMV7zR9zuTMZgsvliuUsBwAAAIBFAFbNf3jchVpq65FINK/d+gSJyB7t2rBhA0lmEK1ykeZ0OanS+9Gum4WxZHlFcRrG8f2/kptkKgmK5hR8JXtCMJGardffGNE4AfvUkTmeAAAAACnk8MHDN99+c+7VAjINEmu+/+1bnsCaUlBKIrhYjz6xtf7wnj88/s7R/a67BavzKqKZtEWSORTyhddec8NzL88/gUicd/7t59B135dXV0PijKj3G66hI8fyNrEz99z/8tH6jUym9du16db6F0QiovngwYNJ90MWH026ferIHE8yF2s38tYxy/XdqO4eZFmtYhocceibublCvuv1bo/3KQpuoQU94CpZk5CrAAAAavzLD/7l87Of37LtlhyrBWQcJIyrUPj9Pb+6+eYNiH6HbuPam4Sr2ldVQrak2j/evGEDvSbKl9hYscfFbLnnnntQPPpV6gwWyHffTL3Mx7dJbZPt2D4Sm0ZsPbQfZQ/pTc8AFh+eI6f/6l/fwAuaeuT9kaX+OfLRk24yZbOFk9FS7O37Gcl7cqTW2tMQv24GgLSROcM8GC6mnslXJv/lkX+JV5Jmfi0hU7us26kPRKmczFM9Gq81vN0ortJn2O+o4E+9kwOOrZWCmVLRd3vEVVIA71jE3vFt5YV1ru2I3U3U3uNtMiLBjnMlKPEqiSKf340tYcrplAjBRsGq2FLYGmd3tGvDy9cI84fFLShXV21WVJd//Q+ptMm2sJG3FLidPoIjSJcVOc3A4uOJ11bRC1glW1ajrnuQlcpextLZ955FNd7MsKbE2e5oGTkJOgDIZGCYtzjY59qH//7+1d/nWC0Rvp7tk+37w/h8xhq0Z0qkdPHpvbXZjYgGFVYJjvRh4Sj+CviaCoc37OAMHHvXpVIxSx2L1LvvhUPl2xy4kNlNXPfpkaBj47hjO+rxho10az0+wa+YqvIAFuISA/1In7iRFO7iBXFUMAXcPXsO10c0BiIBohlILd46VO+ztH/5zMqVZBWr5HCXRZitEQXdOoPbe8I58nTLnAE99ZT7uz2B/D4msEcFD0h0jd6EBOGEuRdqraISPhxISkjAYJISOlS5IYHoIAAoAMO8XOaZR5+hF57b89w999+TM7VEWLZ7XfTS1fn26XeDyKjjtq0pcXm9LhLQFVQ4OdJyyNBeNq3e5NTeQ1uqHYk4EyuKjin2fnKkA1W51iDf3JDJSpWuWWca8gYcJVhns61tLC87NHsSWdYIq6xBMgMkbSRFu3fBSCK7QOKAaAZSy5kzZ7q7/9htQZ/aTZdccgkuqfeRMLO1Wz09QwR14Q7kI/d0fgBfFskQH2tcr4V6ALdryluN2E3CkqeQV1DSdPVIS7OoVpO3Z5f16YGeLYOgmIGksuDDPCpJY4uJnkOfe8KO9cT2p5CwBIjOkReP/O0dfyv/QpNzhxP/Ry9fkXfF83PPL798eRbViong0UNuQ5UrmpnvhWZT1X5Dn+rss8GRvsktD+jUNqcYSe90mBkL4dnpMsM2uuxqQ9k0L5ExJ48ODhkaHJIqAhgDeSPrUrgnQEYAohlILaua/0j+x4cu9U3W1Vm6u5mp5bBurvdZuqLfvE/MuQ1WfPG3b9moo67jqP0BqtaazVvKBt/Fg31mE11S6Z2qzkf29m0WUYmsltHY1GPQbG9u7/GCgACSSQYM89zNc7humBbQIyddG4/WbkdUa5R6dowEHCULJWKyik23bRo/O/7Ngm/OH5tXNKhqqGre3Zx1taJC5wTj8VW0nIqpHivqCRvRgHpT44ewvlyoBy/i3tkwc+QqA083o/b9FtUqvMFsCjwGMhsQzUBqCXdZ6n0Ia2WLxeLzkXcBrQ/7EBN4jqF+8N1pe/622Puz518dtYRrGf+dJAIanqQDySMDhnlsawwCHxAybudyPYEYuHjJxcOzw0+3PO3a6RKWL1m65N8P//sN5huytFZkqJzgB6Im6J8c6Jvuf2A7XlA1mXqh0mCVxsHThrh3hZixFDJaGNyyn0uvklURGiju9XUn1Q8GkP2AaAZSTpcF1dFaGZG3ALvqLN0+FJNiJtlyzYYG7xo0whToNm5BW1+gXtE4OX5oyFTlQO8i99wJF1qD1Et0V8tqnaQjeT0j1qcHRC99A8AFAcO8XOQB5wODPx08deIUV7Lptk1R9Wjm14qIJLVXDslSGHIPsbNUDKF+6bWUU9ULgrh3Ucx4zXrD0MgJB7lLoBPTQ4YSB5IrZlmYWWIgb+Sj9OwYsHCAaAbSDYk3R85mdjdvdTOLTP5lkNtGvWilpz6uQ6YsMGIlgezTfRrrkLAEPbVdQyVw0iUIiWtdTV61NlERO0uPQbPVIbvWA0BCZOQwT+ADlZ7Rlw/pGfEj1KOY3xz4TW7UkkB04XQVNXuaOLVXAfr1O6bW0+gB2WmJW0BbnAuWmiHqXRIz1ueXMePPk+9OluVXk2lDtlYaesKCV3glVeQGskb8Kd4lYMEB0QykA3rSjG4fqov6ZFlX4gh7HfJCVwSDLQ+EHQ4UwUBaSK71zKJxe1jhhWsAiIOFGeadkE+XqwIWNz09GuY7rthDSjErzLYLqPGfP/lPeuG+1vtee+k17wi5aAw8M1BxX0VW15KzpsLRs8tq1ZDlMnyaMQOt2E8VgTH1jqB3oYZnot5J7nVVWCDfdSVVJutWajfJFMs6NLWX/ACZnyHZ93ZDpajK1IjEAP8GpY2AaM55EhHNt99+eyxmqflwIJDFRFfMAJB1LNgw74Q0kYPtVNS1i68lfkqOS0Awx8rPnvrZVWuv+vn0zy9bcRleff/4+9/e+O3ORzojS9LMr6WIscnrbRIViE8VhTMHS22HfKtle3pfsxY7JupdwWfJbsr2GqFwJPsIhUCmoytJuGqCkWavN0pwzsoENQAgOr///e/RnyRaWahOAGARYdzuAtWbJrZWb637IZ9VhuXpL+d/+cu+X35+7vMlS1Vvo5lfCwCAuEjvb2l+aIcDOTrLtIqrkY0TsE82E7vziltR22io0RzNNPXOqHZK/5fmrmXU1ta6XK5YLLFiNhqNXsiRABYJMMzLQoR6lOMvqv4i22sBCwk/eXpZ9NdqyDcHkTO5LyMkpc1UOJbBJFk0Hzt2rK6u7sEHH4yjTrz6Mnb7C1SuXHVmIX+slRLMeHVHClRpjN4uiByPnwZXgw/5YjL9EwSKGQAAAFhEEMXMTp5OJnN3oKx+HT126cxZZqfaTqZophWzwWAoKiqKo5q2rLMznm7itb9w6B7nh6ZsBVWpcyD9+5VsLAhylgEAAAAgMtRsePRrloh+U3dO88JUFr+Xi3fBkfoqsZFSKZI00cwp5vb29uXL4/lcpzCgW1jjoQttvX4H+d8ju/NqWskCifHq4rL3F3TVeDzIg3r9orgsnWTBtmmmGmTasRFThNufMaLWVqqIVCcJD8PIgxvDf6iGpQ7YmD7ELjnk+4hESRSlxhrB3qmUm/lWbb2jpcP8TgW5PREeH2GnyvvV1ts7VcM06M/4mDUAAAAA5BDy2fyuzrc/5fVte7fj6TkTeqp5CKGy77bTC+yUPJjxHmslldDR3kNmBfT1WK3MZB5UydUkdltuaBbaUGHsZmp2HzYJhC/BZe1OgRdKDbL+0G6clJUwe8SFjad2Wbc3I94BcZv7DX3N7iHkRu2BB1ALF3Jm/OG6kO1FxpCgaD5w4MCTTz7Z3d197bXXorgUs6em0CNY5ZXl/JCjxjgaCpkZWUkbz+CSEF0yNO8QNhTV/kiVo9eGJJkMeEMxomsR9bxjiCji4VJ/qFPL9LIJN+WZKvCHQg5enSNU6vCXIn6VdkBcsXPTEc4l3HZXtIOotneS8s78PrpVIoLH8v38TmkbQ6FGdrcUjo/KfnVi5xDbYN9EDBnaAAAAAAAkjbJ8vXB1zToTmiMLQ9OG/dTXGLceIgsOFBxx6HumwtvwpubpHiqZkcjKkaCjxLLdG6bnxKFLHpDbbBx/+lD5fq9rDVOymZSQ6SvJbCJk0naRU0oNTsvckJXwnBxwbEd040Q9O8ic8qI2j1Y/0G5HjFZmqrD+RNjTzEnhSFA0FxUV7du3DwtlrJvxahwxZmFskxO7ZPnIMOp1mKXGVZISjnjtFWqZG0OdxAePhwoiM02U1pfiP5uI1ozWlLQi4hvXFdgi1o7krbQct9VanNdKjlyoDM0P8VvUAtvK7rH7JWkQAAAAAIB0MjQXcCBeC558dxIhMhFa2ZbN9Be66QXq20T2Zq9vWz4qa6+WxFzlMWOJjeSjjaisvAoNonYnbXN1vl3ilUKDcjdkJcLuuMbJdHwO5TZFPfJVSIOH3g3K9yKTSFA0Y3GMJXJzczOWy3g1kayMDEI8H8b80HDKK8aFtqwzhOX9xO68vDySHMKWT+wuFMaSY3dP3CBEmgEAAAAgbci/UH5izv1dqwu9q2wvCUszTO3aKowiq3UmSKJAxHJQ1a1oDcrdUHYsASezhsRzmjndjJeToJi1m0pRPLkC8dor1CIpFAV+R6mtZmyi0WymA7cz9bwqjdaUpGKoimucxHlRqYM3zjd6xoKdiMR5gzMeVOBQblQJ0jgWx51ljf7eKcdcUOieMZ8O2svblLvH7ZekwXlkhqxmAAAAAEgTayqqDJqtPYycxWpy+3T//u1IKJrZUHTw6CG3oUpFTxvW07Iba26ULw3iIlqdN49Mbbcwyc1zDd5t5Wjr3imSKExaRluckRuUuxHBMdwd2ziVntFn2F8VxUlBlYh7milc0IuAWCg//XSyBg7aMkfvjsK8PHpNkmyQmD2RqsWFHmEwVVvWOUoCrNQK3kAyRfgSkrBgRkPS6soyWtgUXRGZOZdsNnF6hrmqt4txlmyKTZfzOzpcWJjHdoMFMrNTfJvUtmjuDSk3CIoZAAAAANKJcXuY/7Y994qewKBsusNqJVkNZe0BhxGdlEtJY3V7n577kFxZu1I3Cp9FtzzQXruVKikrE6dnKDUodyOSY8LuyDt8eKeCkjbXrDMNbdcPfde7P5+pwvujtqcZRHo/biKZVY1dZQqZrAEqBDyWr9WaeWOxZez23JtyAsyyQkkJ5yRfLu1XZsD3S7uktOuSLVH2TtiRqC7/+h9SaVPFPf7gq7sJAAAAAEDqkX/bXjQL2xanV/AdJOEmbrnEEfbyFTAKNvJPfeNNXq8LKaCTNEje1RO7oe6YWnfSNhHiDJgqEn8U9zRjSFA0p+Ar2ROC+dNsvX6Z1r1QewAAAAAAAABIkERE88GDB5Puh1IAOLn2QIYwu8u6v5ldaf/XuibzAjoDAAAAABlGhkRY5W5kiGMLR3rTMwCAcHX/cEUF5FIDAAAAAJA9gGgGAAAAAAAAgCiAaAYAAAAAAEgCj1ss0Y2ArAVEM5B+TlSWdlMLhV7vFuEFZt/Y2wvjEQAAAAAA2U8sQuLuousSaxxEM5B+VHOaEz6PAQAAAGBh+UXPQnsApFhIgGgGAAAAAAAAgChEEc0nT56MbAAAAAAAAAAAOU8k0bxmzZq0+QEsJricZmR3VLnKVi2sNwAAAAAAAFGB9Awgzaxv8tY1RTcDAAAAgNwmOFmrf68hTL8Rf2ag9keVpoZw0zVkzXdIY0Xe8Jaos3EEB55tQXe5KlYmx6OBZ/WVPmpxWyy9x4hv10PWyZqAy6RLUoMLBIhmAAAAAACA9KNbX26fmg0iC9aSwdlBZLFPngqia6i146j9Fv3As7XJE8TR8R3SDxoD4Xt1tHre9U7A8HIyFPk7I83b2tunxoOmiuxWzSCaAQAAAAAAFoCV602+jvG7KrAqDbyHym8pH3yZVpaBaV97yb06y72uNHqDlbq9/EZa1uoq7g0T6ZyUdk9Ntl/vKkG142cq0jYASAkgmgEAAAAAABYCS8k298gHLrTSN/KCqWTn5nK0N4AV65nZSYuhmkm9cKIDLchoquxtJjWYrAlBHgWy99+FhCXtJMeDZEQgKtnDd0gzcj2z0LE64Fo/XvujSjfpvD9wrzD0q9tsRPoDA1xhcLKl0udGPtT/sKtipaR94tv0WtT8gru9IWB4mdlkV8jBCI5PmUruRfpTqGM2WGFCXEV5U2xJCo/4BQGiGQAAAAAAYEHQr6ZSMq6YndxW0oR0aO3k7Bmknx1ERqdAe7or3/OGd4bpDOaBM67Nsy2Va3GJhUoX7kC0wKVLSG70Lt/OpuoaewtJ9giMvICat/martHTgWTfayRzOkykqn7vOyKFqjO5AqhW/1AlYuSvsx/3QKVnyNqvxl5Nrg6Ed7qCk7UtfFJHy8B6cTrHmfHBtSUuvLC+HB0YD5o2cxXlTXHOZ+iHFUE0AwAAAAAALAg6LCVfCwTRIFrtRERDk3Ds+vfcputdWIOyVvb+G4UyMjg+hfrvokv0Bou4ZOXmcssgVt6WK03uNwKud0Yma7z9UyM+VDKNyquxnF1tb+7QNJMwc7hC7o/JRcQr0eItAw87FXpk28dela/XUZvcbp/bzflqdFYIgs3B2UH3C273C8zG8rs2sxXppipH3qk2SEuaLJkZbAbRDAAAAAAAsDCsXG96YWTvNkQnE1Maenz2eHvJlgtu+ZqS9pdnB9Bk+Y1N69/rmH3HMLmWUqa0LH5nl+YhjXouBJ034jTE1pV6OyQ3w7szTAt8EpOeDZSLDOyGKyRV5CUZA4hmIOUYDIYNGzZUnT7NlfStWjU5OTk/P7+AXgEAAADAwoPlqdX6QruXVslEQ1srLf2BSFWo5OPXfCS5+cz4oA+V3yUpMTXcS7W81mo93h9YiXTXm6wdlVja0qnPg8aAy9QUqJlsYSbroCCpEdMNTGqEb+QFu+FhtR5J+7P8JnvlG76ma5hM6+lbBAIaGyMDF68mQ4IDI9PIjUgaNxI05Z4Wl2QoIJqBFKLVak0m0/evvNJSdRpZ6gyXbcSFn16ZV+g/vuI//tFqtfp8vnA4vNBuAgAAAMBCoV9tRxaDnlnDGhrZV2+OPDWbzuTsf1aveQgv2u0WaUn/wy4L1zKiosvXlLSj9hKiZXUVd/UP/kivQfSLgIJ+Vla4Gkj4mV7DCrtiJfKtdVt/5CaBZGn7wVneGZf3kIbaRGVCC0LOvtcqkTHA97FyczmqrPTZ7Uij8Qmbsk++LCzJVEA0A6kCK+ZvXXtt3fWnLXV1IUouI0ox479fXbvs00d7un7x5Pf6Vmk0GtDNAABkBQcPHrz99ttzrxawoJA0YhO/atkSdrFbKugp5/iJ59gSakq4sCgiKy+hWmZbbdrJalEsjndyXYi5pim8U/T5MexMeIti+5wnEjMRgn3hagX6UQu6K+wSu1ouK8lEQDQDqcJkMmHFbHiww/fSUYSOIvKSL/4FIcNlG6dJCbrmmw/+s2/79qBRpJuDA7X6SregnXZvOAnv0eJmW5DTlax51X27NCMlMr9wqZWaEkjNZ2zQYQhIvZBV446BvZ81jtS0sjNqVVgfAsq1AABQ5wc/+MHZs2e3bduWY7UAAIgFEM1ASjAYDHdceSViFVnHyy9/M+/Gk+h3Fp/ljZuWHvniC1xoOxWyWCy3+nxTksq8VLxgImjlBGU0J2jbvZItvl3Wyf5AGDeIdekun1yPBgc6sIjtl1drpmUtrlY7EHBtHm+pNHnDYaqgZYAcC5mNwGvcKvLKn2apVOF9sDR5RxTdBABAjVdeeeWRRx6JV5Jmfq1shwsRiGMEigEFfA3fu97F5O0KDVQa4asgmYF6FUAdUYhapSSFkH+0pkSfb4NoBlLChg0bLNe/iJXZ9MdHDbdufPJWkp4x/fFyKq353PXFZrya9zGJN9dZ0K9PFSyAi7oKlyuxauGwi1xqpVssTexjKL3BPsl8GJUnONAyaGq3T0pq+Uaa8SDBImggSN4dprLbLCXt7pGACwVkNoL6eytNJfKfv7xZuQ+W6v6OvT5kgSs9AMSCi7pkvPrqqzlWK9vBktaKqDgDFdSgQgERoht7B8urXbLwh1IjoipOXCox0A90MIESEoMZCLrStsvABWBpCkhjV7EDohlIFcyXinxYlaEPPyzEi2fO6NCQi9rk4yzw9istV0ZqiFygBsvpUCm3jLgsDioujVdbpk2oudmtEANwo/4A9fLu+C5NJZewoKcizU7U0oLKTZWVwkQGYYpIAmHv4Pig29TgkhwOLG4bAoaOFont7CQylYja120uRy3jwYoKHVa+7VgQBwdkNnyzxMS7S6OZpPykPDd5w9XyZhV80K03NY/4mkA1A0AsPProo/TCnj177r///pyple2QSAa7uLncPkhFLFSiG+TJXIOLXBolBoqNCKvokMwATbtN1Ec7yLWUCnAAWYFOPjt1rIBoBlKFhf379vQn1xn81Fohk9lMb2S0mm/ZsmWimu5KPZ/UTHRsQ3tlx7gTq0giR9vx5QtrQyydwy5aRrcMbHaS7wkZAuEwiQbQOpDISS+lEJ2UmsTNTnup3Gk6KODkuxOVC9Ij6BSOuKD1NnZaLER9u0gQw4IGFKrY0UitxupGnGbXVTjLa/WaSkqwW+jQs9SG7W520m6otlSEvSSTw1s+SDxvot9FllZR8EExJA4AAM2LL754xx13yN9U3kFBL+fl5c3NzV1++eVZVCt3UYxYCGDCzPE0olCFMaAvv3QRfS1ditAb992XmOtAVgCiGUgX9d1f7elAa2unfQ0WKrbpY2LR6OzZsyJLeXC3up+KvW4eH0T9TiwJBwbdBK5CeUM5/kNN0VPR0K4hqhnRUdpZYbPViiFVSXmQ6SQxqPgGVu6aXQ28uA2Sh3jOJsHXnYTQat8leORHQuBMSe2A07VZbiNzz9LkNWmslQK1LqlSPRvJBwAA5Nx222346lRQUHDs2DFFg4aGht27d2ddrVwlONBSiZi0NOXtbJg55kYUqvAGs9K6zzzzDPW/glRp/u1vcimeblhkmc+inRa8SMQsrt9LH6jsOTYgmoFUQeVlIJ8FWULLkQ8Zejqmn3R9ub39mkd73vnFk9iARIMp3fzxxx9HaYvOWPChQVTu1NG6TxJxHRhkFy0l7dYRXwma7K9uUriqpQPp071xkcYn2SLcoEC33sSofbZWcJbZSz5RQ2ajEBsmeR4IsXFjWbO+CD4AAKDGkiVLZmdnW1padu7cKSxfunTp4cOHzWZzltbKPYR5fMrEEGaWNiKrIsoWjMUt/p0S9at3bmNnJ6CW3AmRvdzpNNibrRryAo5L4YPe6ePBBx988sknI5fQgGgGUsInn3xC6WULlYSB1XH3Rd/+9jWPPvjH5ub1jz1GmVjYtGfLe+/9PFp7RD7qrZX4p6Wj1+yVTDIuPUINCD71SVSz1UqbJhBWpbraG/+sEoKhsuQRIZ1dx9hIZ+ywlJisdG9MLR0yuelkFK4dmQ3vLJtJN0CllHhHmOk25FUUfQhwKXkAAKjjdDp/+tOfnjhxgiu57bbbourRzK+VM0RXzDGEmWWNSKtIDNjLL1xLY0c2yQh1Y/Lt0mg0Czz/iFAl42U1MxDNQEo4duzYRouWDjaTFwH/6q/++LOfWf66Cj364Oy2bSTqTE3VjHy+o8uWHT9+XFRZlNPMJGsQnYwQEzwlMpS8/KZht4uThbFqxoNbypRc1ax6N0lujtl3XYWzv1av0bDdOyObc0/iZD6pzqAsrEVP/UZXY5IrSKaFnu6eKZHbCPbV2lE76XabqHILqVpLjph6FZ7g7GR7SZPiJgAARAj1KObAgQO5USsX8O2i3n+O+OwsaphZ3oikityAfylEmN4sQhBM8e2tROWBRRZmFqIU7eqgRyFNgf7JlgWPwtO6OYJiRiCagRSBRbPVarWwU2h8de3G/0GFvr/7Hl7+8IknGCOfb0ivn37lFdFbLHxYVgwpFz6+sTSFwwK9J5w/jrwC2BDWScx4A3ayOeFfYTnvA1G265V+xbhZi3xZ4pPYTNSDaJNStbBEyyoUMRuq+9He9WGhC5Gr8D6ozFYHAICEn/zkJ/RCa2vrSy+9NDJCplx45pln7ov41lfm18oN8BUf/7Vq6AmTFWc8Iq9BszeFGBvpN1WKqij1UtEgDHAoNS8J8DQtYs2sEO3SIWf/oJ46gmR94Q4Op5U5xayYm4FANAOpw+fzLfva17jX/b5660b0YC29TMLMPt+jQf1rr70mDTNfaK9knjlybbrAJpjlC2spLegqGlAiHylhJ9MAACAaTz311Nq1a6enp1esWIFX8VVr48aNjzzySGRJmvm1cgPVkAIfm5DGL2QGSo2EpabyXlS6FnWn7t4iQPo9BOnBUIuSpR9hjFlNMSMQzUDqCIfDeEgZMhrfeOONlz/7rMFHfUaDTNHs+/WpU3Nzc/j6jq/s8smSLogkXJ+y7hKndj9IRS0AWIxUV1f/8Ic/5FaxPJ2fn+/r6zt37tzSpUuztxYAABy0bo6gmBGIZiCl0Lp5amqqoKBg8sorlx09evbs2Y8//vi9996jA8xJVswAAAApQKhHOaqqqrK9FgAAQiIrZgSiGUg1IIsBAAAAAMgBQDQDAAAAAAAAQBRANAMAAAAAAABAFEA0AwAAAAAAAEAUQDQDAAAAAAAAi4XTp08nVhFEM5A0EjgLp6enU+EJAGQCBkPs36EEAAAAMh0QzQAAAAAAAAAQBRDNAAAAAAAAABAFEM0AAAAAAAAAEAUQzUDKieV77gAAAAAAABdO6lQHiGYgtYBiBgAAAAAgbWC9QWsP/De52gNEM5BCQDEDAAAAAJBmUqSbQTQDqQIUMwAAAAAAC0IqdDOIZiBVpO75CAAAAAAAQARSEbkD0QykENDNAAAAAACkmRQ96wbRDKQW0M0AAAAAAKQNmD0DyGJAKwMAAAAAkB5SpzpANAMAAAAAAABAFEA0AwAAAAAAAEAUQDQDAAAAAAAAQBTiFM3vvvrz8VmlDes3f+umdcp1Pnxj5NeTp/n1VaY7Sq5fodCsSht0/QgdqFVR6CjtSDzJHMcyBIPBsNAuAAAAAAAARCdZkebZ8Z/PynWtVC9TnJ789c8ns1A3JiDeFxlNTU0L7QIAAAAAAEBKSEg0y4QjrSdnx1/VCzZwilkikKmwMlbOr65ImfxccX3Jt65PTdOACs8888xCuwAAAAAAAJASdH//fHIizSuu32Q6hhXy6Q8/xCtU0YdvHCGKWSGivO6mb92xEutpicYGspvTp6WPFAAAAAAAAHKGVL0I+OG7xyjJvEkxB2PF9cb1k+Ozs4F3b1oXr2rm04LXvStI/hBFv1UzidWrEKQZ27wBv4XkoQiHArIs7/gTTyRJLJIGuKyQGz6kzSBBBAAAAAAAIN0kRzQzYeX1RlbsMZr52nVq6nHdTd/61k0X0COVGC0swGIWRVaTkasopV8rJ2rzKL4WSbo5E7OuVeiWNHBMqrwprZ7p/PznP19oFwAAWADsdrvb7V5oL5JJ7u0RkNvgMxae96aBhESzooITh3rPUMnMK1L6qh8fkmVyqqMHrlWrvPsHWRBXaEE0/g2SFwE/fGOKHAWJqqaEdKwhdKUcFrrbySNvrJMErLMiwvzKK68stAsAAKSVhx9+mF7ImZ9/7u0RkNtwZ2yGcNHpt67Y/zcL7YWIT6x/f9ZQduHtJC89Y3Z8ZGX6ZsQQ5zCsWHftqsnTwpTqxKqI1qK9Tai8fZ1+PZqdjewJC6vURUcNN3sHwrp58g/vXs+L5KxQzDROp3OhXQAAIH188MEH3HJu/Pxzb4+A3EZ4xmJu/d8/ib3uS//1d9xy1+8+ffPM+VhqfeO6ZUU6BQGJ5fKK157SXHYl+nYfWnI50mikFksvR1+cRefPxe7hBRNGn3+y/HcDyw/+7YfmB75Y/ZULaSs5s2cwAdaUzogRkRUrVmHJewFVGK3LZnDEnpisOKtebHz4IVVPLfMiNuENAAAAAABwwcSomDHPv31WLpovfu93lwUOabY0o0tWUQVKrZ07cyEeJsiSS9CffRt95ZuX/8/PPvn45LlrixJvKUkerbvpDtPpX0/OTr1xwzqsNlesJIo0ObKPTvVINXwCBlnj1HPECK/qp14AAAAAAAAyi45/+sstm8kz8vPnw+a7VJ+irFl+8T8VrcULf3sgGI6t5YtOv3XZO7++6Mu3oYsWSBnHgMZUvvyNF9ExlLBuTl56hihyyyQ/HHv3w+uVA7bibwBG0th0PHbVyjTEXAUJF2wAOULSybuvUopZGpSOV0ln4WdeYmBid15xK7vSNhpqNCfWSFeBv7NMmzy/AABIPdzv39Yr+AGTUiS5GMwP7Sis8QgKhFcLqhnZ5YOqgqiGk3KdyX7EB1bh4LNFon+OuCAHfbg0OVdj7sJ+YVf4ZLoUAVUn1U7dyAdb5HV0U7YDxuJCT3jfC99fuuTiWCxpxYxp/vPV//zKe7FUWXH4nzQ316ClS9C5DyJb/p/X5/F/pMqlS75xc37BupWxtK/Iuc+x+A9fsjSmnaLR6K6/7Lf/9eFlaxLL00ieaGaSDRgY1azwPhtly7xDp2eCuLTgVtTY9DwcqX6nUAaln2nlrKL8GTGvMqleTH2o7XXEr4pnDex1gPzMdxct1tsZACw65ofmikKhEKJ+/I4hch2g7v/GtjaZrbasMxTqZOvtcKAqs2i7zTbVNTQvVBQTfURI2DgD5jpDetg9seiuM7IDq3DwJ3YTSR0y8yXx90P+nWJ/iSot8Y5YXYrqTILeKp66dFuhkFpb1NlrK2XqRPh3YcR1qJMZ9ewO4h7J4gWd8LRiPvHeh7d/e3eMVTQatHzJRfRyGIU//Vw57nzx6Tc1Sy4KX7ICff5R5Abf++CzPfuOHvC9u+7KSz49+8W//OL1n/ydZcvGteFw+INPPj/7+fkrli+5dOnFWAp/du78kos1H+Iuwyjv8qUXaTRfhMOnPzqHZfKK5UuWLrnoxOnPOn7xx01fvqr8a/pPz57H1S+/9OLLLlkiS6MWc/4s0py/+KPAgopmNjDLTzLHfu9EPn8aG4pdZbqB04RcSvEIEtpyCcOcvE4RtE/SGZKV9DoXDleSvHEmOK+7wbRqdlKy17iNcdGIItsxF7Whrrl5ZIaAMQAsBrRl7O1fV2Bji7DAwLf+1jH1alhPGOtlasNoRMNH5sv4cPVYa1tbW+uUrNN8bLj4rjOyAys/+OSIFYXIkrmqFzmEBxNIDtypOzE21etoVD2880NdqLfXNkwtHxlGvQ4zWZT/u8wPOWqMoyGuwNzYKG3rAk74b32nO3bjDauW/b+38330+8/86i0FWbxi/3fCN/wJ+iiALl0TucHQmY+OHf+w8ZtfavnfN8zMf3Tf7onnXzm2+cuXH/yfk897j3/wybkv61f83Tc2fHL2i72H3rlqxbKpYx+c+ujcd79Z8JVrV7gOzh354yksmo3XXvHnhVd27397cDzwD9+6/svrlmHjd977RHflpfVbr/uSdjlW+yr9h9HZ02g5Wv7qE2fX3xH7ceBI3pRzSBp2ZaeBOC2bIJkgmTNi3U2b189isahim+qQKydfZZ0LpT2BtqGiwOJ3BxOB+5KirJHU73LawJdsW6mf/tHxz5skT7IEj5pYG1tvr5Fdn6kXPHqElA0AyA6CMx5jUWdstkRvVMmkASqoqkeFfRPc1aELq5L6GbloJtJQLrkXM8zBnz8yZSuooouw0PKMBTsRd5iE11Nx1kSvsaZGmDkQeavwyj6KiqmLeqGHvqorXOTlSG8NpBfUhlpbsXSsmpPcNqTOK7rE2YicEeY8iLyLy1sJ3KmLT0J808rLU065wEp4pr4T781wtAaxoPa01Uf+4SzQCV9ZuFJRNBM+DaH3fouutpC37tQ5/cFHsyc/NuUvvyj8mfYK9KfXXvb28Q9fmny36adT225a/bWvrnqk942Vl6JN1698et/0HV+96t6vr/v2rt8a1i67esU1v5k6bim44v0Pz+3+xRuuRtP7Zz7OX31JoX5Zm+d3/nc+bCrf0Ll/7opLww/d86WLL1IRzee/QO8dRZ+9R9RzDNBfn/jWt77FlSQtPUMxmUCQ5BDNVPImHku6Mn6Jp+ukvUsmqWMUrtBj6nvg4o/5rfhDPDnN1BGSpEFne14Gg6emkL3OdZqpkond3POmid07qGeu5sZQiLrY4KveUBV1+SskI+wQfXFDqBdpy+rb8sYmGs2kEbgzAkC2MLG7eKrXL9fBShA1XOpQ/GWbi9qKmQsAic4Rqxl+K3udIRca84V6nENwB38+kdqempnREBXCzivuq5eKR9lWEmmlrto0oVEkiG3ILvJKzkpvDaSXKTrPAe+JsPH4HMadC53h7y/UDWbHkL+zMW5vJYhP3VbOa0nKBZbMw6UOLITn6HUygGFcJRoZn9eiVm0FOqYaG0RiGkvwhP/tr/iJnP974B/IX+/Mjpafxd4CzYO/fldtk+bzj9DJ/wmf+wBp/xwtWa5mFvrg4/D58DVXajTnP/vss7MnTn+6+oqlntG5jz79/B/u1uuvumTnf80cOnriy9olX5w//507tLcUrsQC+KrL0aeffnL5MvTL1076Ax9rUPjL65Z+/OnnxvzLrrnyolf+EPryuuWzJz4+9/kXfwx8EP78M3Sxkmj+/GMU+G/Nh8eIdA7HOk8IZtWqVdyHY+IUzYl8yC/afMdxmqpMjyxyTGITS5VYepcbKFVJgidxeZWpUD9yhH/xrOCdn5tCntZC9s2JtiIS8ODH9bZe2sbGPLIiYhl1kSX+pqkSjAIAILOI8y0tLBuM9Z0qtuaq3i4HUVJB5in4hGCjINaZtyP1r4VlBRf+ipytl84tV06uk23VFdhai3eoPQKUXOQV/JXfGohx6SaqtciNx+SwsKO2esqQusHUiMLuMXorbVN86rbVM+K7qE0Y1Gcks1YwiDE3+nt3FObl4Y7a2mySVpFnhq5M5d/Uk7g7t6dJOuF3/uRXsZi9GTob44uACEvV859pTh5F7/8eXfUn4VUFaOkKyTzN58+jI/6TuryLLrvok08+Ov/K7z9+5Q+nnqjRP/dKaMlF4TXLP/3D7Acff/bFhqvO+/548oZ1S/UrPv2l74MVl2rWXn6u6f/zv3Py09b/vW7Ai9499dnS8x/89u0P77vtqs8+PvPFF19sWI0uQR99w3z5TV+69KJzIfSFoNdwGJ37UHN6Br3vJwnNrC+x7NO3vvUtrJiFJcl7ERAA5GjLHL07HPyLPOInXvybENR7FKowN00HUg1GAQCQMVA/Z0dITQQrVMDCI0Iah3ZTKXIcmUDDJGFU3cZWMyPXQIsO6cEXpmSQoASbqpFMKGVHVFyeR5rUEOtFXlJvIqbGk06s3gpqRD51Gcj7fx7k4eba8NCzv7CvEmKhjvIFjcSSrxznCf9nd/4IsfHmr1f8vx98+GlM1ZDCx0lU+eJTVoh+it49onn3CPmOycXLhCbh8+h3U+tOvn/pMwPeJRehod8vLfvSh7cu+8MX11zy379b+9i//Z+3Tl2sXXq+9kt/ePy/V1+37PyqwNGXX7lq5cWXac+89PnpK/MuXvr714//n98u/4vrP3r3t69/8Mm17wffvDr//a+uXjX/7odfveKzmXlkWHfq4mnxl1O+OIvOyVJKzse6Y5KPk4NoBlILHs8bmedU+EJQI3riFZzx2AocCPGPp4SPrIa6Wkl6BtUIuWn29SEEmhkAMh3lN/qkRoJsWpJ1UeCIYExdRYprbL1+9Xes8DXEJnnEvRiRH3wSqWWe1PXVoFK/ZBsb0pwY4663iYEloL8XOYjWE5TKL/IKNWW3hkiNX8AtgOqITfXBN5i2+pDYIBZvRYhPXfJQlN4PrnXmPGeSPhA7qBHNByNPYyKvBhYW7o40RkjxCf/x5+cvoybN2LBqWeddOq58t/f9qfc+k9t/Yvnu8tefQMvPikq/kEpzTVjz51ej1UsuRWeJwHZ87YOv559Zd9HZyi9pPi86c/TE5X+68ot/+Oop4+Uf37L23HWrPrvii1OGy859x7Tkprx3v7/pvcE/rv78w3N/sxF9+cpPr1t6+pGvnb9YE77885M/+l/H9/3xqsDxi7dde+ZLl5xGH0WLIp9d8tn1f6W2UZjHnMKcZgBQgfr9U7KZehxVmEcXk6ABdWXIEz6eMjeOtuUVkxcpbL29bYh9Y4K+aaJRSGcGgAyHPANvbc1jp5ONYW7gGN4XxFcRG8pXaIdL8Ux8DuJcQungl3WO7s4jaQDkois+RNQbI9T1FrUpTAgYK6K350hOQVGbp5h5tU5+kZdjlt0aIjQeL2aBM3xKBH1szFIDdW+V30GXnLq4/VLcfg2KJeWY2zHZPwsdXmf/1Whf2Tk50nTCP/rSicdLFFpvtF6140BQXn72+m8un3gKLV+Cll0UodmLw+ivLR+dD39Mr16+7AuEluH/8P9Xmz/99POzF18UXnaRJowu/xvrR0suCi+9+PK//LNPwwg3fNn/KgjfeO37yy4K49XzYc0lF1/6UFHoi/N4YclFFyGj7jRevnTJeY3msij7dj6MPj7/+TW3RrYS5jFfQE4zAMSEuTHEX0j4+TSFM1tSSNcR/yIGQTwNZ1uROQWuAgCQTGS/cg782zYLljuVyiX2nA1utVFWLrxYLGb4A6h88CMcJ+GmRq5I+E/TqbIgWNZK2xe2KvNIqSmZ3/wmVecjuqTijOIBisXbiT7Fd9Blp660fZk/2KAzyo4p+R1bleRx5uz5fz8a+r825knKH3v5hFqVD0s6Vrz2I7TqKqSJpJvV3hDUCDYJly8V2FwurrJMZTkKH5z59Culn68xqW0X5jFDTjOQndAzTcHtEQAAAEg3/GTXi4ffBD7B/8Vu/8Xqr3xcWLc8eECz9jp00dLUOZY44fPovTc/veqmz264J7KhMI8ZcpqB7IKecoc8ilr0j14BAACA9KP2MCTX+MZ1y55/+2x0O4RKr1OI7Z67tgj/XT73gubSlciwBV2kNGEz/WphOKZpkpNG+Bx65zV06q1PV9+sqJjV8pghpxlILQ8//PAHH0T57nycXLbln48d+2e8kOyGAQBIKin4+S8wubdHwGLgpf/6O8VyOmj6vOtv1CoW6Zbg/y6ka6ybz1+25qKPT1z2yr8hzcUKFlg0E8GcXtGMzn+WX/L5l7dHyMpA6nnMkNMMpAS73b7QLgAAsDDk3s8/9/YIANLAF6u/8sVqdPraLQvtSByo5TFDTjOQQiSpPwAAAAAAAJmPWh4z5DQDAAAAAAAAQHwQ0fwnjv9eaDcAAAAAAAAAIHP5/wGZzMTezz7rYQAAAABJRU5ErkJggg==\"/></div></div><div style=\"clear:both; line-height:0; width:0; height:0; margin:0; padding:0;\"> </div><h2 class=\"P59\"><a id=\"a_2_1_Application_List\"><span class=\"heading_numbering\">2.1 </span></a><a id=\"__RefHeading___Toc219_1595950343\"/>Application List</h2><p class=\"P2\"><span class=\"T17\">A</span> list of applications that BCU managed to find in your system <span class=\"T17\">takes up most of the main window</span>. The list can be sorted by the columns and filtered using options on the left.</p><h3 class=\"P65\"><a id=\"a_2_1_1_Highlight_Colors\"><span class=\"heading_numbering\">2.1.1 </span></a><a id=\"__RefHeading___Toc221_1595950343\"/>Highlight Colors</h3><p class=\"P2\"><span class=\"T15\">By default,</span> many items on the list have colored backgrounds according to their properties. <span class=\"T3\">Their meanings can be found in the Color legend in the bottom right corner. If the list is not visible, it can be enabled from the “View” menu.</span></p><p class=\"P3\">Items with white backgrounds have no special properties.</p><h3 class=\"Heading_20_3\"><a id=\"a_2_1_2_Certificates_and_verification\"><span class=\"heading_numbering\">2.1.2 </span></a><a id=\"__RefHeading___Toc223_1595950343\"/>Certificates and verification</h3><p class=\"P6\">BCU can read and verify certificates of uninstallers. Their details can be viewed in the properties window. This function <span class=\"T4\">not</span> meant to indicate good or bad applications, use it only as a hint.</p><p class=\"P6\">Verified certificate mean<span class=\"T16\">s</span> that the executable is guaranteed to not have been modified in any way since leaving its publisher.</p><p class=\"P6\"><span class=\"T15\">The following can cause a </span>certificate <span class=\"T15\">to fail verification</span>:</p><ul><li><p class=\"P69\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>It was impossible to verify the certificate because of invalid root certificates or no internet connection.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P70\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>At some point the executable has been modified in some way. This is normal for Windows Installer (<span class=\"T16\">MSI/MsiExec</span>) uninstallers –<span class=\"T16\"> </span>they are modified by the system <span class=\"T16\">to save disk space</span>.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P69\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>The certificate has been self-signed and is therefore impossible to verify.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P71\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>The signed file has been modified/corrupted during its travel through the intertubes.<span class=\"odfLiEnd\"/> </p></li></ul><h3 class=\"Heading_20_3\"><a id=\"a_2_1_3_User_rating\"><span class=\"heading_numbering\">2.1.3 </span></a><a id=\"__RefHeading___Toc225_1595950343\"/>User rating</h3><p class=\"P7\">Most applications can be rated by users of BCU. The ratings are automatically synchronized with the statistics server. <span class=\"T5\">The rating can be between 0 and 4 stars, color of the stars corresponds to their number. </span></p><p class=\"P8\">If the stars are black, it means that they represent your own vote instead of the user average. You can hover over the stars to see the average rating.</p><h2 class=\"Heading_20_2\"><a id=\"a_2_2_Left_sidebar\"><span class=\"heading_numbering\">2.2 </span></a><a id=\"__RefHeading___Toc227_1595950343\"/>Left sidebar</h2><p class=\"P8\"><span class=\"T16\">S</span>ettings <span class=\"T16\">S</span>idebar contains mostly filtering options for the application list. It can be hidden from the “View” menu.</p><p class=\"P20\">Search box is the same as a condition used in advanced filtering, check <a href=\"#a_6_3_Conditions\" class=\"Internet_20_link\">6.3 Conditions</a> for more information.</p><p class=\"P8\">If Advanced filtering is enabled, the sidebar is automatically hidden.</p><h2 class=\"P60\"><a id=\"a_2_3_Treemap\"><span class=\"heading_numbering\">2.3 </span></a><a id=\"__RefHeading___Toc866_3080419501\"/>Treemap</h2><p class=\"P31\">At the bottom of the application, just above the status bar, you should see a bunch of colored tiles. This is a treemap – a visual representation of all the applications currently visible on the list.</p><p class=\"P31\">The size of the square is based on application’s estimated size. If an application doesn’t have an estimated size, it will not be shown. The tiles are scaled using a non-linear algorithm - size differences will appear smaller than they really are.</p><p class=\"P31\">You can hover over the treemap, and the application currently under cursor will be shown below. You can click and right-click on any of the tiles to open context menu, and left-click to select the applications. It works the same as the main list. Selected tiles will change color to the selection color.</p><h2 class=\"Heading_20_2\"><a id=\"a_2_4_Functions\"><span class=\"heading_numbering\">2.4 </span></a><a id=\"__RefHeading___Toc229_1595950343\"/><span class=\"T9\">F</span>unction<span class=\"T9\">s</span></h2><h3 class=\"Heading_20_3\"><a id=\"a_2_4_1_Uninstall___Uninstall_quietly\"><span class=\"heading_numbering\">2.4.1 </span></a><a id=\"__RefHeading___Toc233_1595950343\"/>Uninstall / Uninstall quietly</h3><p class=\"P9\">Begins uninstallation of selected applications. Quiet uninstallation <span class=\"T6\">means that you do not have to click anything – the process is automatic. If it is impossible to quietly uninstall some items, a dialog will be shown with ability to remove the “loud” uninstallers from the selection.</span></p><h3 class=\"Heading_20_3\"><a id=\"a_2_4_2_Uninstall_using_MsiExec___Windows_Installer\"><span class=\"heading_numbering\">2.4.2 </span></a><a id=\"__RefHeading___Toc235_1595950343\"/>Uninstall using MsiExec / Windows Installer</h3><p class=\"P11\">If the application has a Product code / GUID attached to it you can try using MsiExec to uninstall it. It is not guaranteed to work on all applications.</p><h3 class=\"Heading_20_3\"><a id=\"a_2_4_3_Uninstall_manually\"><span class=\"heading_numbering\">2.4.3 </span></a><a id=\"__RefHeading___Toc237_1595950343\"/>Uninstall manually</h3><p class=\"P11\">Skips running the uninstaller (if it is available) and instead gives a list of files and registry keys that you can choose to delete manually. </p><p class=\"P11\">It is not recommended to use this method unless it is impossible to uninstall the application in any other way.</p><h3 class=\"Heading_20_3\"><a id=\"a_2_4_4_Clean_up_“Program_Files”_folders\"><span class=\"heading_numbering\">2.4.4 </span></a><a id=\"__RefHeading___Toc239_1595950343\"/>Clean up “Program Files” folders</h3><p class=\"P11\">Search all folders that are defined as default installation locations (usually only the Program Files folders) for leftovers. This includes empty folders and partially uninstalled applications. You will be given a choice of items to remove.</p><h3 class=\"P66\"><a id=\"a_2_4_5_Find_by_window\"><span class=\"heading_numbering\">2.4.5 </span></a><a id=\"__RefHeading___Toc244_1595950343\"/>Find by window</h3><p class=\"P10\">Opens a small tool window. Drag and drop the cross over a window you want to scan. BCU will try to find the application that owns the specified window and show it on the list.</p><h3 class=\"Heading_20_3\"><a id=\"a_2_4_6_Uninstall_Windows_Features\"><span class=\"heading_numbering\">2.4.6 </span></a><a id=\"__RefHeading___Toc241_1595950343\"/>Uninstall Windows Features</h3><p class=\"P11\">Scan the system for installed Windows Features and add them to the application list. They are treated as normal applications after that point and can be uninstalled in bulk. The scan can take a while.</p><h1 class=\"Heading_20_1\"><a id=\"a_3_Application_properties\"><span class=\"heading_numbering\">3 </span></a><a id=\"__RefHeading___Toc246_1595950343\"/>Application <span class=\"T7\">properties</span></h1><p class=\"P21\"><span class=\"T16\">Some</span> properties are displayed as background colors, check <a href=\"#a_2_1_1_Highlight_Colors\" class=\"Internet_20_link\">2.1.1 Highlight Colors</a> for more information.</p><p class=\"P22\">Additional information not displayed on the list is available in the properties window.</p><h2 class=\"Heading_20_2\"><a id=\"a_3_1_Missing_uninstaller\"><span class=\"heading_numbering\">3.1 </span></a><a id=\"__RefHeading___Toc248_1595950343\"/>Missing uninstaller</h2><p class=\"P13\">The application is registered in the system registry, but its uninstaller is either corrupted or missing. It will have to be removed manually.</p><h2 class=\"Heading_20_2\"><a id=\"a_3_2_Unregistered_application\"><span class=\"heading_numbering\">3.2 </span></a><a id=\"__RefHeading___Toc250_1595950343\"/>Unregistered application</h2><p class=\"P13\">The application is not registered in the system registry, but is present <span class=\"T15\">on the drive</span>. If the application still has a working uninstaller, BCU can often manage to find it and let you run it. If <span class=\"T13\">the uninstaller is not found, BCU will automatically generate a simple uninstaller</span>.</p><h2 class=\"Heading_20_2\"><a id=\"a_3_3_Protected\"><span class=\"heading_numbering\">3.3 </span></a><a id=\"__RefHeading___Toc252_1595950343\"/>Protected</h2><p class=\"P13\">The application is marked as protected in system registry. This is often used to indicate that it is a part of another package, or is required by other applications.</p><h2 class=\"Heading_20_2\"><a id=\"a_3_4_Store_App\"><span class=\"heading_numbering\">3.4 </span></a><a id=\"__RefHeading___Toc254_1595950343\"/>Store App</h2><p class=\"P13\">The new Windows 10 – styled applications are all called Store Apps, even if they do not come from Windows Store. They normally require a completely different method of removal, but BCU presents them as normal applications.</p><h2 class=\"Heading_20_2\"><a id=\"a_3_5_System_component\"><span class=\"heading_numbering\">3.5 </span></a><a id=\"__RefHeading___Toc256_1595950343\"/>System component</h2><p class=\"P13\">The application is marked to be important in some way to your system. Drivers and parts of bigger software packages are often marked as system components to hide them from the user. They are not actually required by the operating system.</p><h2 class=\"Heading_20_2\"><a id=\"a_3_6_Update\"><span class=\"heading_numbering\">3.6 </span></a><a id=\"__RefHeading___Toc258_1595950343\"/>Update</h2><p class=\"P13\">Means that the item is an update to another application, or the OS. Uninstalling the actual application will usually remove all related updates automatically.</p><h1 class=\"Heading_20_1\"><a id=\"a_4_Settings\"><span class=\"heading_numbering\">4 </span></a><a id=\"__RefHeading___Toc260_1595950343\"/>Settings</h1><p class=\"P23\">Settings are automatically applied and saved on application exit. It is possible to reset settings to their defaults by “Help\\Reset settings” menu option, or by removing the “BCUninstaller.settings” file in BCU's directory.</p><h2 class=\"Heading_20_2\"><a id=\"a_4_1_Uninstallation\"><span class=\"heading_numbering\">4.1 </span></a><a id=\"__RefHeading___Toc262_1595950343\"/>Uninstallation</h2><ul><li><p class=\"P72\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Prevent shutdown/restart will attempt to stop uninstallers from restarting the system.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P72\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Intelligent uninstaller sorting will sort applications during bulk uninstallation to speed up the process. It will place loud uninstallers first so you can leave the computer earlier.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P72\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Disable protection will stop blocking protected applications from being uninstalled.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P72\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Turning Simulate uninstallation on will prevent BCU from uninstalling or removing anything from your system.<span class=\"odfLiEnd\"/> </p></li></ul><h3 class=\"Heading_20_3\"><a id=\"a_4_1_1_Concurrent_uninstallation\"><span class=\"heading_numbering\">4.1.1 </span></a><a id=\"__RefHeading___Toc264_1595950343\"/>Concurrent uninstallation</h3><p class=\"P12\">Concurrent uninstallation is an experimental feature that will schedule multiple uninstallers to be ran at the same time. It will do its best to prevent any collisions and sometimes this functionality will be completely unavailable.</p><p class=\"P12\">It is not recommended to run more than 2 uninstallers at the same time unless you are using a fast SSD.</p><p class=\"P12\">You can manually force uninstallers to run concurrently from the bulk uninstall window. Doing so will still be tested for collisions, but the check can be disabled (not recommended).</p><h1 class=\"Heading_20_1\"><a id=\"a_5_Advanced_copy_to_clipboard\"><span class=\"heading_numbering\">5 </span></a><a id=\"__RefHeading___Toc341_1601368371\"/>Advanced copy to clipboard</h1><p class=\"P15\"><span class=\"T8\">The pattern is a </span><a href=\"https://msdn.microsoft.com/en-us/library/txafckwd(v=vs.110).aspx\" class=\"Internet_20_link\"><span class=\"T8\">Composite Format String</span></a><span class=\"T8\">. It is automatically processed when written.</span></p><p class=\"P15\"><span class=\"T8\">To enable use of </span>escaped characters <span class=\"T8\">(\\r, \\t, \\n, etc.) enable the “Unescape” check-box. It will convert any </span>escaped characters to their unescaped form.</p><p class=\"P14\">To insert a newline add “\\r\\n” (standard newline on Windows) to the pattern and enable “Unescape“. You should see the newline appear in the Results box.</p><p class=\"P14\">The combo box contains all available variables that can be added to the pattern. Selecting one of the variables will automatically paste it at cursor position.</p><h1 class=\"Heading_20_1\"><a id=\"a_6_Advanced_filtering___Uninstall_lists\"><span class=\"heading_numbering\">6 </span></a><a id=\"__RefHeading___Toc343_1601368371\"/>Advanced filtering / Uninstall lists</h1><!--Next 'div' was a 'text:p'.--><div class=\"P17\"><!--Next 'div' is emulating the top height of a draw:frame.--><!--Next '\n            div' is a draw:frame.\n        --><div style=\"height:10.029cm;width:17cm; padding:0;  float:left; position:relative; left:0cm; \" class=\"fr1\" id=\"Image2\"><img style=\"height:10.029cm;width:17cm;\" alt=\"\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7wAAAI0CAIAAACxtbJhAADScklEQVR4nOydC0AVVf7Hz+UhvsXSEDJNMFlKWhQ07KVUmq0ogduSKeL+NyVLcbfAZNvoRruLhbapFVLbLgguUQlhuJmmqJWZXtLCItvQNANRUqjMB4/7P2ded+7M3Cf38vx+tsWZM+c95858z29+c8Zr2B+3EAAAAAAAAIBlvOj/a//xm46uBgAAAAAAAJ0U/z/916uj6wAAAAAAAEBnB6IZAAAAAAAAG0A0AwAAAAAAYAOIZgAAAAAAAGwA0QwAAAAAAIAN7BXN8+bN+/777xWBV199dUFBgaurBAAAAAAAQOfCLtHMK+aHkpIU4etzcugh6GYAAAAAANC9sS2aJcX8u/h4nU6nOArdDAAAAAAAuj02RLOkmOPvu4+0thJPT/lRFgjdDAAAAADQ41GbVuUYjcb2rInBYAgPD1eEV1RUREREOF0Ta6JZbmOm5UdFRcmPXnnllW8VFf3Wmm6uWKWLSBV3sgzGFGXl5THXBdXkxvpLG5Zi1pYsCIjL4zYTi61FtAtFcVZLZyWXxrS5SPOCbLbXJqYOUfewdAJUXSU/NS7oRzFPdVvsaSBfGYvVEOtqFsF0NoTDitabjT1ZSvWY1BylVgeGbAy6rPMAAACAro8lPWpdT7scqpgn3XLrxx99KNfNVDHTQHrI6WytiWa1V8bVV189MzqabpRu3lxbWxt1113l5eVMUnO6WSsPUVMwnbGqwopstgdOrIw1GI25wm5JBYltU46O4B+ba4y1O3bb1bCd1IxYynWIuodrS05E8aOXViatRFkZ4dSwdOqD2rivURanVHyRRqOiyIqNVLUmxrDN8BSjMWqVrlyVVNKzNI8AnakEtc51ZJQKat2Y689Xb1UNHRr2NxQAAAAAboZqZaqY5bqZV8wKGe0otn2aFZOD+Pvv5/9Khme7Zg/+I8aS0hO1JLwtJtU0pphNisY/FiY+bmBw/7IerjY7YuqfgKBEi+n9Y5dmxa3bl9k5O7Oi/HBxZoqyZrUl60hxcWKpnZmEp9QUHw4or0ix9UOxPUqFQSj1VXhKip2VAAAAAEC7IdfNdLftipk4uk7z999/L3fSKC9Xm/csUFGemrXUKJj9JGulFcsl99Bcbn+s3Veal7U0VzPmOpJFUlOZoibSs3YhLVeEIaY0gj1Pt/tZOpeqeGxcnNwtwNynQnlU7iZhIBFcLQLylB4AVpxUlH4WZu0KF2NULxUzUHoQ0B6OsuCkU1OdNzZKo+us1MHMUYGrhuCPYKNRNUIOGl1tzZHEFEPwgOFbt7Q6dSyblpl5Z1DhWr00d+6JBfaKZqqGI2MS42yrZtMotYDFQQgAAACAzoWkm+l22xUzcf/HTfLiAiQNZn9dqXiKIAajMkViUICFUg5LT/BTjEZm+2Oaq2QuL7Ly4tbF0MO5jjgisFTVBubcwLThxqVKkac6WrGRcxwRYxkNRCZpwzVqpaBilfTQv2LVgpLa3FjzdjGYUVgnSj9J4Ala1LIcr1gVcbi4xpJFtLZkXWpiTA0/hwkQG8EyXSD2FV+NXIVO12qUla5WN1DdC/6xuYZq3cYKY1Q5O/9sekJShT4QXUxISVppTCatzAkLDbKJfEzyXebIKBUHYa3l2QEAAADQnnSeN/C6N46JZvnXTKI4bBmbZXZY3QI736IrTQsgNKpaveRV1+Rq+o8mxkSKwSb7Z2KxVIdMrljOEaHcQhYaNZ/L1SA8KousUz2yVx0NCEpMjVhgyeFXo1bm1J44TPJSA0RrbhZvF5a1i4cWF8GrZua3MJcTwszXmipaWoRunUrAWXl7Ua4UeQsurUPWUsHZQ95XqmpYbJTlrtZooOZpCE8xlOt0ESb1mrVU0OhRWXnlNZkl65hkZiNKK7U1pCmXVZ9mm6NUHIRcty9lZngAAACgQ4Es1kTyYyYd4p5BKXr9dfr3nbIyx5Jxz8ctaV5zmPVOQx7b84TdZKGmW2nqw1S4EbMlQMydfdnxsVHOWQ05DcVEly5PafO1USsJ5foPWnHC5xavSyupzSTrDsdkmtWUqs0snfmUgCsuU3hlTUXbTKQOdzWxsYCKXZRvjMvLI3mi9KZjxb5GMLeKsbbdKkyj1NLAaLtrPgAAAADcjuLNP8V7gc5hTTRfffXV/JoY0gIa33//vbRKxsCBA0uLi0lLS9Gbb9JAGtlaOUy1JMZkEk6nipK4ojyVEJXllUbLXbpRt0DpSME5J0ToiKS8aktKamLNVs+oqc5LDMoUiiNccZS8Uv41Nw2HVP8RY/Mi0gTbIluRIctgdtxBqHKuKSZpTFXZrJUiJVVjcZZcN8wiRsaQtI0bCZWA/PINFRXC+ae9mRhUQ0xOFDUb48Za9dDVqoMwLWFOG1lLrUxcHe1qextYsYppcUO5jlvFglnW+URChVKM4pt3/IzAzkU/OLcT278S0yi1NDDopIUEBKxqs/oHAAAAgLtQr5WhXk/DCayJ5oKCgnnz5vEqOf6++8rff1/xcRO5YrbwcRPJB0Cyawralz3Xz8rKslB0eEpNzIIAXam5HTE8xVgTRIMFzx2WpSIZJ2no4cSsLJOlMHFsdZpOx6qhdlllCyss4JIIGTqrhcxei2NP76Oy8iKEd+Y0a6VusakiXCoLEZlqjmMakN8NOLFOF2HuZiHAzKOpqToHVmPm68B3r2ZfhNtqlJWuVjdQ3dXMfM25X/sHFK/jfar5gRCnlaMt5GNP3jNSON8nRGuUWhwY7ImCYZVONgZVa3sAAAAAPZR2Xo/ZEhEREeqPm/C62V0fNyEK3cwtNifHlmIWXxWzEpwiBeWab3DuDuq0ggOvIrtcK4cpQXNzjSmqUGtJ5Hmq66Z11F/ZVnkrVUVoZaWqSIq6JVI8a9UX89TsC2UFNPLWzk3csdmoFLOuttZAzeJjNba0UtFwa3lZGHsa4aozZ7O6lvIGAAAAejCdx7XaUk2obm5LJW37NMt1swKrihkA+0mN0B120sda+iKg62sFAAAAACBg14uAlnQzFDNwBW2z3MLuCwAAAAD3Y+/qGV1WHFvwQwAAAAAAAMBu3P1xEwAAAAAAALo8EM0AAAAAAADYAKIZAAAAAAAAG0A0AwAAAAAAYAOIZgAAAAAAAGwA0QwAAAAAAIANIJoBAAAAAACwARPNjY2NHV0NAAAAAAAAOi+wNAMAAAAAAGADiGYAAAAAAABsANEMAAAAAACADSCaAQAAAAAAsAFEMwAAAAAAADaAaAYAAAAAAMAGdormQ2t9p6SLO3MKjmRPOLA4eMuMI9nRfvRQTiDbcFmdlDnS/T23N8SfFEt0WUFW+Wbzk3kHxJ0Jic/MGm1HonP7Xnn+8xsfXRQ52I01s4tOUBPWg8RSx9GDO69q1+q1f4kcHXcizH60HOyXa+/vx+W/a3WGVopw/VXFLG+xXxzpECeK6YjW8dSV2X21dH9lAACgu2C/pVlxf4nOboh2R4UoYbdnFO6pzSZCYYf2pGfc3kD8wtxXogWumcFrHaZ7Nn9jj2weHLnomch2qJkFZLqwg2vCOm3nqQkTyM5950Z3/BSivekUJyIsuaEhmUAVmcEUc1XBkQauN5i0XEy6Y9f4ufH6DAAAPZZO6Z7hHzgnfc+h5LAwtiNo5o5k8JBh5PP6c2R0jxN/znPuyOfkxvtuI2++eeRcZM9TzaBTUleWk56xq0EUyX7R+oItwUWHGpLDOrRaAAAAugROi2Yt8xUz3MwrZFv0xtSG+5DfhBlz5gmq2aSZZSWaF0Q49w2uPPM4RcOzXXI3/ObLAxPueIYTfianDcFjg1mht3wnBch9ABSHZBmajkiHuISJN36ex8JFE7c6DxaNTCAHDgyju8SsMuLe809uEXbFmlgqbsawLVtYCrlFXbvCDsNr5sGDyY1ErprFEq6ZMWOYuH/6DrEssfN+UHayZm21eljdAmWJimp2+xOhwvTbkf1KNQNVCdr2q7azVopCuF/0rhlbprCjbfWmqDuwpTAjKVsWwi41W07WkTA/CwUpK8ZFKwiZN485eGjUR4w/p6AgxHrraqWYfCbyK6rGtY5lOG+L2m3NwnWPiCEWKmyjnqbWuvfSCgAAXQr7RXPhvGD+cmrp3nloLfOia8jmrv+Ly+racHuT3co07Myqgm7PmMJL7EN7quaQqgN10dF+9P5IAvXOVoDnuy1U97ANKl0E5TJ61jNUBvFaZ99toyN/+GALVU2L1LpGcGV9ZpHayPrN5ufFRCzWK/sEYfbdlp00wTODWeCb+4JpII0p5vHN5leYowOLduoqFovlZFaZRbOeSSQmyf6N7eKoXKXp2Tzgg28iqeC31BbHETQz3QqWqWZTTVhFCJlBBkfeMeHJL7+ZNZrTj+LcZLCikzVrq9HD6u76QVViDzsRSuhvZ17IroaGMME3oYzXVRqBUooi8VjbMV1DROYUCLVSXDrMU+XQgw3ZrG76sjY6U8wJ9FfV6qjgC6YuSLNihfOO0g5p4Dw9ipIUEl/sSZYHIZZbZ2ejNDMUCLN23as160BlhS3VUzUM3HVpBQCALonTPs0q6k5WkcJ06aaYcbvklOwEVDUTPb1CTzhZNScw3lZBEwLnVDGJXbunakbSjC05LCG9sM/Qt9FVUWb4e/KVen7bZGq+himwK6+65kDeK+r3y6hq/G7CHRqKmR6qP0Um3MErIiYat3z5A93gMryPy0UKJDTmdwcE4U6l+/V8uTcGi9kqKqOJleJu40JHXz+B7GTOJ5ba4jgmzUwGU9X8vKBy60/RJo6WKrJTKD2PV83ffHlqxm2zLLVLVVui6uFzqu7SLNGenukuJ0IJ++1kJIVx237RSRnz2LsDRCtQ+ukwX6kpi13jE624hjDjpVgrxaXDPJWeS6SumxNIClmWv6ijVQURzYrNKYgPY/9S0UpyuKm9mBNtCM2DO8jyIFZaZ1+jNDOU8Ldy3ZOLZlWFiaV6qoaBtSIAAKDH4VqfZtc9v+VV8yFi4fqsKMifk9jDj1bNiE+eQEhRbZ2lhE5Bhd81W04z8bTvFbYexDOc4fJN7hB7zYuJ6ie/c92TdCavCC/MlM/nv5HFUlWmjbisLd98sOW774ikMSmiMVmD0bfN2PnmvnNXkp2neJ3dpnaZV/xcveOVl9PVT4QrYK+UNdSVLfb1LXSje4bKK0MrDpN15PY2FCL3+xKyPLClMCQpWxFPXpA9FbOJlUza0CjBtOC26177FAEAAF0H14lmv+EhZF5OWbyLXkVnV+vgKfPmFBxRZqdREHdp1+dwF3O6XVVURMiMeJdd2JnZ+JobryTkh9PfXXPVlUIIuVE8TkXOo+SVNzn7pxjEdLbkW2AGe61wi6Aiz+3beWDCHbx5lXz3Oe/HwFupWVYspnYmxGJl7C7OQnRTW5w1c37z5QGZ3zHvi8BVYMiw7yTXip0HRGcJZot+84MPyDDBbGxvu1Q9PFjVXYO1S5TH784nQg332xFUI/dSXFIDDdUMNE8XnX2kgOjNzKquw8alo3DLAX00PaT2SHa8pOikDN8pawU3Xc4hgRQcCbNYkIPXNNqQQsEBgnUk7/ag3Tp1Wf6Bc0Qz+KE9prTqDGXlOXnds1xP1TBw86UVAAC6FC60NIclHylYHBzsy++12SrFrEL0+jxBfX3WKIhd2udt4Q0g7NJOt1Vi23Ekn2ZRAw6+bcbO51nYNRMmXMNFMXsxkMb4QUxLNU/i6SdNPtEye+HoWY/OeOX5J58UcxaPXDPs9JtPPvkdMflQ8zFFky33VpmJ0arKcL4OeeL7Z7aKU6Fsi5MwzXzjo7L0nLzl1OKsxAlP5j15gHstbwL53HScbNkyLHGWxXZpou5hdXdZKFGgm58ILfjfjq8v22bOEmEWA0VMqxrTX5qbxJL6Fy0/OifkqN7Xt5A/EqZK7GhRDbvW+vqaipK1Vl2Q9Ypp5b6LinLfdO4FuwyyhVjMRF0WL+hZWpKRkWEtQxPOXves1FM5DNxzaQUAgC6JnaKZ3mqyLYTIDnFPcttkCZKjXGrUakHyyK5Zo1R85c8M1aK7gxWxaKrRsm11DtrZ8Fx12yJlAlVMWf4auciLNMXUjjhaua1si5PIszaVr65fZKT8eKR5dPPqatVWmZ3lpBolWo7P0T1OhIj5j1fzR6oRKKbyE1Z7dnE1FCGqCsgjB8ZnNyS77LoirV+tRqMgaxVTt8g8c7MrkkYmycmqLpfSJqsC68oWk5DbFXrV4nVP6/os37avnlaLAACAHkenXKcZAACAjENF8wrnFOg7uhoAANCTgWgGAIDOiWzlZCL7KgsAAICOAKK5k6B2agAdAk5Ep0LLBaJrF+QQrvV4AwAA0CYgmgEAAAAAALABRDMAAAAAAAA2gGgGAAAAAADABhDNAAAAAAAA2ACiGQAAAAAAABtANAMAAAAAAGADiGYAAAAAAABsANEMQJfH29u7qampo2sBAAAAdE/ofZZANAMAAHCa5uZmLy+33Ed8fX0bGhrckTMAADgHRLPLqKioCA8P7+ha2EvXqi2wjtFodFVWp0+f/uGHH0JCQlyVIZDTtX53O3fujIuLsxLh0KFDDzzwwOLFixMSEmzm5mjbn3nmGfsjO5E/AA5haYDdcsstX3zxhaVUAwcO3L9//7Bhw9xZtQ7Dzh8dvUPpdDpp96effhowYIA76+UW+PssRLMrGTRoUGNjo1uLOHny5CeffGJ//NmzZ1s6pFlbF+YPOjktLS1U9Jw6dSowMFBSyZcuXZoyZUplZeVVV13VsdXrrrTDVcK1fPTRR5rhQ4cOnT9//pdffvnnP//ZHtFMHGn7n/70Jyo1li5d6kBF7c6f3r9nzJhB7/eLFi16+umnHSqiy9GjGutunPjx/vjjj2FhYd9++23v3r3dVKuOxXqftLa2LlmypLS0dPPmzby8vnDhAr3jXHnllcuXL/+///s/R4u7fPkyvdrQO9fZs2ebm5t9fHyGDBlCx3ZycnKbmmE3Dohm2i+rV69+44036PbcuXPpRa1///5uqxjQht5I/vCHP9ANLy8vDw8PS9HowOI3HBW17s4fdAboHXTq1Kn0ciYPjIiIKCkpIZxuHjNmDJ6Md2noya2vr7cnps3Z0Q033KAZTm9U+/bt69WrlxUzm9McP37cHdlSBRMXF2cwGPjdNRyZmZn0okcb4vLiOpYe1dgOR/OC6evrSxXzZ599ds0113z99deDBw9u93p1MKdPny4sLDQajRkZGUVFRfS6tHPnzqamplOnTjnq1kXT0vn5+vXr5YEXL148efJkeno6zZ9ejkaPHu3S6mtgb6VfffXV1NRUaXc1xyuvvPK73/3OPRXr5nzwwQczZ86Uh/zlL39JSUmxP4d//vOf9957r6Wjw4cP//nnn52uXjvkDzoK+pvdtm2bOpzeXEeOHPn3v/+9/asEKK+//rrNOJMmTaI3G3ob9vHxsR6TKmY687GnXHtmR3SS/NBDD9ELvnSfe+GFF9544w26u3nz5oEDB9pTUMdCb970jvvWW2+pD6WlpdHLr16vf/DBB/v06dP+dXM5PaqxnZzZs2cnJSUtXrz4xhtv3Lt3L1XPHV2jdmXYsGEjRoygc+Ddu3crfFTmz59vfz5UMdM71/vvvy8PHD9+PJ1aX7p0iXAvV0yYMIGO+TvvvNMlNbeEXaL56aef/sc//uHn50c1/k033eTt7U2rTmerdCh4eHj89re/tZDu0FrfKeniTsauhuQwOwqrK1scvGXGkexoP6vR+LznFBzRE70QnwblBNpM6ERZbmDhwoWKkG+++aa9K+E+TGfe3tPunkpYHg/S+LH35Ds+ujoldCK0a9cuujF48OCsrKyJEyf27t37zJkzb7/9Np0G0wvTihUrLKe28xfdlr5qQ1pX/pylarTfeaeq1HqEiIiIcePGxcTE0NN07Nixfv36ub1OInSSTHXzuXPnNm3aRK/5xcXF/IP+VatWRUZGtls1nINW+Pe//z2tuZU4LS0tTz755MqVK+lNLT09XXVcMQysjooOHYc9qrFtqE+7Xs/nzJkzYMCAefPm3XzzzZ9//rmWvVl+aXXgttQm3Kl/6OWCf5qh0+noeNOMk5mZSadwdmb4+OOPKxRzdHR0QUHB1q1b77//fj7EaDRSYU2vjW6dxtsWzbTxa9eupZWgJ1syb9xzzz3V1dX+/v5//OMf6USqrq7Ogp+7ePrZ6Vl7yB795Bed3RBtK9KhtVPSpXu2Kr7dvwe7ymorvr6+9kR7nePrr7/u8r6k9FxPIbsaGsK47bJDJCysg2ukwmz8OJy286lnO18EPHv2LK+Yw8LCduzY4enpyYfTIXfDDTfQiZwdtknxF80u8mtv77AZkRaO/Zw743m0gp+f3+bNm0eNGnXp0qVZs2bZr5gtGZJPnz5tpymasmfPHiqOy8vL6cgpKSl58MEH6ZCj8n3KlCl25tCB/PDDD9ZFpMT58+fffffdlJSUvn37Ol9eh47DHtVYB+vTkT95XuFR3Ux/dGfOnNGKIlxamVbSl7mtmrJOcKf+eeCBBz7++OOHHnqorKzs5MmT/fv3371794gRI7y9vS9evJibm7tixYpnn33Wy8tr27ZtBw8epBpSuh+poUleffVVRSC9hTU3N+fl5ckDqUCfNGmSOzy7iP0vAhYWFtJ6PPHEE7xi/jMH7YI+ffpIl+Nf/epXn376aWBgoMVc/IaHkC0n60iYywbCnEB/V2XVTlx77bU2b3VuWrypXak9WjgnUM9v+0V3VlHS9cZP2+F/oVdccYVcMVPotezHH390LK+w2zNIjkt/0YCxfv16yXAi5/Lly9dccw1VzPRiq7hPtAO0UHrzu/fee0+cOMG/zfPrX//6mWee+eMf/1hcXCyPSe8r06dP/+STT4KCgioqKtq5npoMHjyY3qrojZneyGtrazXj6HS68ePHv/7660OHDm3n6rmWHtXYLsGTHNKuzQX1/aKTMublHNB32lunbaiW/eijjy5cuLB69WrCrR9CrxvS0d69e1MxPXr06N/+9rd/+9vf+MBFixa99tprljKkkw11IM1/yJAh6vDvv/+eXidtOrA5jW2Jxl/4FixYwO++zKGOFhkZuXXrVvpT1M7l0J70jKQGbhCoHt2zmdW8QilAPh1UHBLyEjIILuSmZrWqZ0nCUSGNMg+WP8kg6ekhuxpu3yN/HlQQMm8eS2p6OiKmnVNAj21pyyR10KBBW7ZsUdxg1GzcuFHatv7m+PLly/V6vaWjv/zyi4MVdF3+VE4VTtGbP/UxP+n+tFuPJoknVDrhmmdbI3mYhYHBIT9lqkAuOj3p8vHjp8pcPgLVTyrNR1fXQXpG9ve//10xp6cz3mnTpjn25h/9Rc+ZcYTvFstnQ3bIdEzDeUfzrIklaZ0OzR+s9aPyWu4iU8zOo13+RNauJPEnLXaBMxQWFtIzcuWVV0oht9xyC70T+Pn5bd++Xb54U7tx6623UpkVHx9PB9JVV11FNTQV8XfccYci2j333MMvv1NdXd3+lbQCVflVVVVvvfVWenp6TU2N/NBdd9317LPPjho1ysqrzxboiHHYMxurcS+2fGVQFy677HPFmTLVuBM52C9WUNzE6Y/3q6++sju1/AqTHKZxLeVqvGvGlil8zyh1i+pKVShkLHaChb7SkE0OcfHiRaoY//3vf9MNuvvhhx+q49BxeP3113/55ZeEm5PT64aVDD/77DNFyObNm3nv8EOHDv3+979XHN2wYYPaA9ZV2BbNvGPKt99+GxwcbCXa5cuXf/Ob39C7b0BAgCy4cF6wdJbD+KCw5AZuyLITWRZPRW/RvBDhYb45gsdNQ7ZiDNMMdhHT6K61evTQWimPQ2sXl9Vls8cRhVWBRxqYhD+0R17Vo7uYbmA/5aIkfqgFC1VjVSGkwGZnWYZevB599NH33nvPzvjjxo2zLppPnz7dhurYpg3501NwhHaY7zzT70150pMyfPccSub8NsT5lPpM+clztG/MaJ4yRc7+2WYjRJW5tUumYnR1Jb777jv+OqJ+T4LO1+kv175sxF80PbXZYVyI5k+MiIfEE8XOx2L+oaOqw537oal/sFaPHjIfMw6PAatXkkNrp2gPSGdYu3YtvVxQxUzVJz01RqNx9uzZ//vf/7y8vHbs2NGB65vS+xy9gtHb27Zt29TVoGL65ZdfzsvLo7dAhxYO/9Of/nT8+HFFIL0X0r+aq0TbND2oeeqpp1577bXAwEB6N6X36f379//2t7/98ccf6UyA9jYNz8nJycrKGjRo0Lp1626++WZH8m7ncdgzG+vEJcL6Zf8QF8dP607kShRrjZ85c8amaK4ryzHZI2RaRfNayvo8h7ayIdvk1WHlSpWtsEGIZaqSDLd0h7WL/v37Z2ZmPvnkk7waNNeEJp5++un77ruPSt5//OMf1jM8e/asImTv3r233347Hb11dXXq+P/97387UjTT6/U///nPpKQk3huSKjn6S9OMqdfrVb0jm3D6Lp5h8oZMF47SP/6Bc9KnLFbLkLoDWwozkpSK2UHqTlaRwvRgcYKVcXs2V+6MCeps5xTEh7F/pefO5GTVnAI9F8Z+WyTH6VrQG8zEiRMfe+wx+5Pk5uY6XVwngHlLNeiZcl4rWW/lJ5128hT+WnVoT1VBfLLmmZKdI3vHjNYp0x4DMhSZd0Hs0SjXXnstvVO2uSjuF03omRVvNVa6lx3KSArjtrmHjntqubOq6HDNs2ZPTRQ/WD+rRy2NGR6bY8D6lcR65g6SnJxMdc8PP/wwevRoKkFWrFixc+dOGk419IMPPrh169a2F+E0ERERmh6ZdARGRkZSZU/l79GjR6kys2dM+vr6UlVBVZ0lH0S+4ZoJqXRW27k1SU1N5R0iP//887CwMDoboSVKz4tLSkpoo/jlF+vr63/zm9+8++67kyZNsidnjvYdh7b461//Su81a9as4Rs7fvx42oddvrFOXCJsXvZ51HciV9Pc3Ex/wm+88cY111yzfv363bt3W4gotzBK/SVeYSxdS2nX6bnIUiCxX/OIqPtqgisvaJacTnl3QXuW4VK/Srhy5cpz585ZmvK5aWkve32ab7rppr59+9J5/4svvvjwww8/w6GIQy9hVDFbe/vbb8KMOfOOsjMqvSVGdbSeO8T0FRPVvoXueeKtyPWQywuwyZYtWxya99x///0jR450X33aCb9ofcEcJq78TypPOgmLL8jRl9XpSU7VDL34u7Rw/uvaPmYsjwF15t0UKsIUK7SMGjVK/dZpXFwcvct6eHioJ/cm2JldrDc9DXDkJ9ZRHW5lzNhbJcvNdPVF7LvvvgsPD6+rq5NeI3722Wc3bNiwb9++tmbtODZfZaYijAovqpgJt1Slp6fnZ599FhUVZTNn3iNI85EaPw4tuQw55EqUxfGnP/3pP//5z6VLl+gPISgoiArKRx99lE5CpCXn/f39qeK0sPA8VX+yPSYyQm53Tk64YBxaY/ny5V999dXmzZt/97vfjR07lm58+eWX3377LZVu3a+xtrDnuqR5J3IZ8rUd6Mzwtttuu/322y3EbeOiGew8ESFvJzSPIklYGy9o9IcmTQ8uXLigubgh1UWE82KgPWNpMXie3r17854ednLdddc5UlnHsCGa6dXwvvvu4x1Y//KXv7z22mt0ck9rTy9ntbW1Q4cOpWK6X79+q1ev5r+IYRFmNp4zQy97S4yFEBbCQX9cRwqInjPwikFMZzv/jErIZHgIcTYTmrZQeATFnpg4654REhJC5z32ezLR8eEKi2DHcaiszJ9/iUE867V71Cednl6iLyoiIcLDBCtnyvaYEZNonjLrY0Ajc3rPKDwq2ET3OH3eOxv0Eqb4/NKVV1750Ucfyde9offU8vJyujF16lTruflFJ4X48k8DLXcvd0iwSLPzkZHUQLtU1eE2fmiuPB0a1xlicYCp22L9SqIxIJ2lf//+e/fulR4+0vvuokWL2v/LCKNHj7b+LesRI0a0tLRQfXzkyBEpMCcnx9vbm9fQnYd//OMfL7zwwssvv8yvckXvXNIysX5+fpmZmVY/GM6NUfFFjUNF86iU0LZc2ofz49Aq9NZMx8zx48fffvttqpXpKBo3bhydJLz//vv0588r5i7ZWO1LhNUrg923fvFORFyumWmH01+uj49Pdnb2jBkzvv/++4ULF+7Zs4f/EodjeWleSxmFW/h3BoUn8zTEcc1joa+cvqCdPn2aTtikGdqrr76q+bk+/tpy4MCBWzh4Da1dQT8/tQeXFez8QKlzWBPN/KJCH3zwAd3u27fvTTfdRG+o0huOdJJKL0D8K4qWFbP0xEGcRfnFF5DgYF8akJHBT2fNXgfwk/ko01O266gvi0sc80bn3kQT3zZIPlKwOFjIRPYGgF35JO/K8J3im869fJBBLJ5R6xQVFUVERNgff+nSpfa7LcpfSuWh85xrr73W/uJcn3/Y8KOSbUp40KQ66YS/Vs1jjlNiMtWZChOP2BwzprK1TpnVMaDOnHd04zIhGtc2s9FlrR/aEXp5cmjdFTrRpbKGyp277rrr8OHDUvjDDz/MP4GiusdWHlzHcbLZcvfyPc8PBnYFCCOaHW79h2b9dNiNcsz4yc6j1vhUtdfaKLI4IJ2HTmkqKiquueaa4ODgl156qUNe/qOa2PqbFfRqMGXKlM8//1weSIfivHnzHH/PzI2cP3/+9ttvnzhx4osvvvjggw/Su/if//xnwv0QCgoKJk+eTCcn9AYXEBDwxhtv0J+GOgez0y+OZWdo6zi0Bq35wIED6e+aauJ33nmHzgqofKF3E39//08++aQrN1bzEmHjQq2+ochKl0XkDADM6u1qO/Ojjz5K//7rX/+iiplw3gg7duwYNmxYfn6+41cyrWsptx1yVO/ry1SW+N6Ydc2j2QmqJOJrk85d0K666ip6+ZIWb6GTBNr26Giz5e3orUe+kIj1R/GPPPLI8uXL7a+AIx5HDmPxRkvvnVFRUfzbGL169aIyX/PXZRXR0d8M7oGNfN7qp4hFU2XLtjVVriJOtiLQLJmqQOtpzbaljOrKFjv7iGrjxo3SlMsmnp6eTzzxhP2Zqxfxdu3N1an81WdNdQ6kQJuxNA8ox4yFwqVFKK2NAa1S5ZkkS0Fao6tz4Khophriww8/vOGGG6SzeenSJTr1LSsrI5yZ2cITefnPRLbKp5Xu1ehdWx2uXjrU6unQ+hVrHVWNGXmuqippZWWlme4ZE/379z937lwbM7H0Ru8PP/zQxpzpPYLenOQ2ZsJ9XOOzzz67+uqr25i5C7n11lv5mWF1dXVhYeGiRYuoZKHzw927d1MlXVNTQ38I/A2etoX3W9ByNdS8PHXEOLQMvX3s2rWLzg2+/vrr6dOnE24IVVVV0b/0152Xl9eFG2tKeWitZnbqK4OqEWbRzYvIuD1MWWKboXMS+pdXzBL0lqrl+aZ5fs0DLdwfA+OzG5JtXGLl+Wh3gjJJWBsvaCtWrLhw4QIdWs8//zz9udFZdFBQ0KpVq6677rotW7Y8+eST9J7Vu3fvb7/9lk68H3jgASufHybcgnRUF8lF9rJly/hXGq699tqnn346MzNT8t9w30dteSFn8UZL28Ar5sGDB9OLoOOKuVvBHlHNKdA7lfbUqVOaC69qol48xSb0Ctjc3Ew33PR9TnfnD9oO/THb+YUC+nP+6aef6AmlSuKKK66gP3N6Wj///PN33nmHP8vBwcHtvwwwkHiIw4UZ2v8FE4doaWnh3/yTB/bq1evjjz/uVIqZcCte0fs3vTHzrkevvPLKq6++Sm+6dPBPmzbtwIEDfDQfH5+5c+c+99xzXX2xfKqbpTfy6W/56NGjJSUlMTEx3bKxLqCuLKeqQO8GO8ivfvUremmlAkDuAkcvsz2hzxMTE/mNRx99lLY3PT2dTlljY2PlcWgI1c104+2337aZ4f79+8ePHy+9Xnz33XfTO9d3331HuPcfqBznRfPYsWNde/2UY0000+J5J256i927d69bv0nYiZGti2j2QqtjrFmzxoV1UvOb3/zm2LFjxMGXYzpP/qDt2P+SREhIyFNPPTVr1qxLly6dPXv2X//6l/zo1KlT8/Pz+QsZAJagivnOO+9UK+YdO3YEBQV1VK2s0KdPHyocjxw5snTpUnr3pbfeFzikCPTWnpycbOfXWzszVJPJv5Zw//33FxcX09+1/NuN3aaxbYa/xTNvB5e/Akih19Jf//rXv//97999910+JDs7m151wzrfN3LdiqSJExISqIqg95c333yT7q5bt27FihV2ZjJq1KhNmzbFx8fz9mYqS9Rx6N1t27Zt7nMMsyaaaavoLPy999777LPPeqpiJlbcBQDoVNjj/zNt2jR+46abbvr+++/pLJ9egL799ls+kGqgl156SW4RAe3M119/7cLcrrrqKjfNcqnivO222/ivEkjQG9XHH3/cORWzRHBwML2n0m6ho1369srixYvpNLJ7TBTpZOb6668/ffp0v379Pv/887i4OHoHp7fy8vJyfh3AbtFYuzxV7MO9t3j+xWv6u/Dz86M6il6lGxsbaYj9n2uwhQu7wo3w7zzQkcmvVkznde+8887FixfXrFljv2im3HHHHfSGRS8+dDCrj2ZkZCxZssStr1LwximLjwm6+DrB3ZY4DnnIwYMH5bv0ltaWm6W78wfuwB7R3L9//2PHjj344IOEe1WLCgje/wp0EtTL/3VOdDrda6+9NmXKlEuXLvEhdDi53I/ZiS+Y2Imvr29FRQW9uf7hD3/g12/uNnh6ev7617+mKq2qqmrAgAG7d++ePn36N998M2rUKNqfuG67Fbnlftq0afRnQocZ/UtnaPQe+sMPP/Tq1YueHTptc98XnjsndXV1VM5Kq6rTy8UTTzwxYsSImJgYR7Ois8FPP/2U3u/+85//lJaW0vnhmDFj5s6de9ddd7m61hrY8GkGAHQV7HzTdPDgwfLvtAPgBPv27Rs2bNjOnTtvueUWwnnHUnHmDj9mqkLcp/NaW1u7mWLmefPNN3/++Wc6Q+Z3t2zZ8uOPP1IBLfmYApfzwAMPnDp1Strt06fP//73v5KSEsJ9gyMpKanjqtYpoHO57Gwzi7j1NXlsQqcfCzjaVC3HgWh2MeHh4R1dBQfoWrUF1rF/eZYu/mS2y9MNfnf0hldXV/fJJ598/vnntDk7duz41a9+ZU9CR9vuqLG5G/StS5AUM+H0Svsv791dsTTAHnnkEfnuV199FRkZSbhXTn/3u9+1R806jh71o4Nodj28x1JXoWvVFljBftEMOpyu/ruTVmCgaH5S2woOtd3Or2Q7nT8AjmLPAKNzyB7lCdNzfnQQzQB0EyTvUgAAAAC4HIhmALoDHh4et912W0fXAgAAAOi2cMYpD6Vo7lTfPgUA2KS1tbWjqwAAAAB0WwTj1I6PlKIZN2AAuhOYBgMAAABtQdLGcM8AoHuSkpLS0VUAAAAAugv9YyGaAei2dMuVaDszP/300+rVqx977LEBAwZ0dF16EDU1NQEBAR1dC+Auetr57Yrt7Yp1to66RQsXLiSwNAMAgEugijkpKWnKlClUNFPpDN0MAADdDIhmAABoK7xinjNnzsyZM6GbAQCgWwLRDAAAbUKumOnumDFjUlJSoJsBAKCb4bhornsnKTihSNyLzz+SM9OPBaaTDLblSD6OJgEAgE7JokWLpkyZIu3yurm2thaiGQAAug1OWZoFpcxBtW8SycgQt10inaGnAQBdB6qM5YqZh+rmjqgLAAAAd9Fm9wy/mTk5TOa2KTkAoH2oLVkQUBpTkxvrL+6mkUxxD4DuAxvqcXniXpbBmBKuFUcx/q38IvBj6VxUrNKVR5nOqmK3u7FKpyPyMcyGd/XSTt7etv9k+BwySZr6d2rz1+0e2iyaeaswszQfK0pPLyoiRYSzQ5u8ODi7NKHRjt1AaIyM8obkcYrk3HE+enx+eXRZgimfttYPAKAgLy7NJJsB6LYkFgvjnN16S2rtH/PQx4DIhkEnGA9zixPTTtSScKEKtftKSXGmvUKxE9TfGs5VT/p1s/S6VZoTCDc0XFs019fXqwOHDBkibBUlBAtOzRnlR0aJx0fFZ+R/QXi3irp30suijzTk+PGy+J2JVFUXfTHqSEODtl35YFHCDeUNDeOY1P5g+JH8eGLmnqFZHwB6OKafpEMkFhePjdtY0cltFAC4Dv8RY/PKa3KJvfdO/9jcXHfWB3QtOsF48I+MIWn7amMFmUg1c0ym3VKwE9TfnfjHZhY7NituAxYtzdbux+Y+zRoR6vaXFTGkBNEPRdM/Ey3ajQNGxadH+aazjBtmqvN0UhwA0H1py0wycm5xqfklpmKVLiJV2GaPugLoBL16LElNzaMa2xBTGhGXJ07sTc/FTDN9ADo1tScOJwbNlZudxMe+hFRvXKBLZQNa9oxXjEnEwc7GeiQ7sm+VLo77pQixFT8HIv1w2vOJMTBRKz9l6uuV+gTVmkKyslJTTZfBmqB1cXl5JI8U1/DuAdzfmLFxFgaAm6+IctUsaWbLrSsuPhxnGrr7TCZzIT5XfW6cK1vkcrRKkZ0men8R+zk3tkZ5J7KvCHFWbJ5cdgbN2t6m8+S+JeeUbhhl1iL7zcxhRuiDa319feXWawCAG/CPXTpWx4zN4iUpPMVo5L+6zT/IpmIi73BQjdGYSS806wi/wa7YkfvSSmNqjLn+QsxIyGbQacmLC5DJGX9SohUnlRiMxlzuLr6qwjhXfqxiY9xYepBpi4CNFTVBNMNqum+U/D1UPwfph5Pr/tYBDcxPmXHuCXtOkCkkJcV0Gdw3N7M4kQhaU4ypHgB8eYI0dCcm1Sxq5toSi62rWMVcoGVDl2+VWFvTaFe2yD3Xc2UpI2SnqXxEjdjPtJHqO5FdBAQlHj5RS2LNksvOoLqvnG2pe0Sz38To+IQPDiaPG8cvUXfsIes6mMUpiz6SMzP5SP4X6SdrIJoBcC/hKYbyBbJLkrm9hAUnxkSy64tsg3AWjjyGmCwxJjMWqhl0UhQWpVrtOHM56xqVJIlx5RVzg2TH6J04NUKXyrIxxtLfiBRZzFD1c1gaI/xeQMegPGXr7DlBUoj6MqhAPQAc8CxuK6JqjpQ0s+Xhpxq65rVlo730RK26RW5CWYpW9XhsngJtaqrzxkblWk7uujuXS0Wz3/AbiqKCuVf9ZuaUM6sxC2U+F+OI1eU1/GZm5JcFB/uKsWuOifmMs5YMAOA04XNj1qVtHEtIEPPOCJDPwq0nxHNn0E1JDDJ/Guwfm8sMkBWrdDode9irlcb850B1jHurCCQE46LwahzvgUP8w5WnzP4T5NBlsCPgVXMFEX0ziOXW2TN0OxBL1XP2FAhn33py19y5HBfNikXixF3+b3JDQ7JwYJxsm6JaWs48IeH9M8Rj5mkBAK6H89GISBWm42NH8PceOmMnQRbn94I5LiU8vIuseQSAhPx1QGmc51XzIcwUNXZpLjlhii+tz5hSU3w47YRaeah/Dp1OnXRjzN/u5E2NilNG5jp4guy7DJqqQFVsQDu+VM2p5nXiO4BWhp/m0JXVVmO0tyfWflkOngI+u7S4sUuN/qTCYnLX3bnwGW0Aeizhc4sTU0v5jXUBOp0QnFhsOYl/bK6BWQf4eDW5UMyg6yAb54mJiYS/VbPHxFwIN5xrZTKCvZRfGhCgEw4G7FMZKdU/By23aeAewlNqTizQ6fhH7sLVKNzslPn7EwdOkOoyyGR5RECeFUstt26DlMYBdwInYbo3rlRcN8Py8NMeurLaqkd7e6KoXjhVuFw/G1PsvhPJ31iQbMiWz6AxxVV3LohmAHoS5msPsYdksdwW/7RMhhBNim9KaHppEIDOi9YyW/7qca7YF1MJac3iyzK0+HPo3mt7dTbU51MdZOsEycaJOjsprdmoIOYXRj4N+7jKCLd7s5su2TwWW+evOXQVLfTXHNIurS2Xp0YpZhUxvf5n6U6kcda03ra1cgZddeeCaAYAAAAAcBT5Wp2JxTUwJnR/IJoBAAAAABwFj916HBDNAAAAAAAA2ACiGQAAAAAAABtANAMAAAAAAGADiGYAAAAAAABsANEMAACgCxMQEGA7Euiy9LTz2xXb2xXrbB1LLYJoBgAAAAAAwAYQzQB0Aby9vZuamjq6FgAAAEDPBaIZgC5Ac3NzR1cBAAAA6NFANAPQBaCi2dPTs6NrAQAAAPRcIJoB6AK0g2iuWPdKBJluXDrCraUAAAAAXZT2Fs2H1vpOIbsaksMsHMwJPJId7Wcz0GV1SRd3MixVqgvimk7mu2dOgUv7XiyIlC0O3jLDLae1e0JFs4+PjxsLqPt83dfBWaSipG5ELE4KAAAAoMI1otnX17ehocF2vLqynKqMDJJTVtdJ1JIoCZlAXHt7J5bNX331VWRkpLRrrbdd08mH1k5Jd+NEwi86uyFau1x3zZG6Ni0tLW7Nv/ZANbn7jrlkZ9qBxtjoQW4tCwAAAOiKtKulue7AFjJDH0/0+gN10Z1KFoXdTlXmyToS1mkqRech1o++/PLLDzzwgPqQ6zp5TqB/G1IDl+LmFwEb971HYv4yyJ8Ekb8er42+EWceAAAAUNCeopmXc35+ZAaRC7q6ssXB8wqZ1bcgxBRXK9B9HNqTPmfGET+zokWXDc72uWvGlikskAbFnxSOmzwXTEn4NGz/aJJoppWMp8qcbTNs2LB//vOfmoeuu+46rWCXdLLouBJcyLWxljaAZJD09BCxcfLGii203kVKNDtlF5kilNut3GVcgXtFc93xUhKUyU7UyBiyc1/djQoPjXf2HHdj6QAAAEBXoB1FsyDn6NYEmaA7tDZ4HtViDWGchCOkgFgKdAeF84JFEZsdRoSit8w40pDN+WwsZi4OXLQcGtaQzcSkb1UB2+SEZVESr6rF2nLVXVxGtWBShu+eQ8lhLE8qyDOSGvw0crZtBt69e3dwcLD1OGauGq7p5LDkhl3E5CZRS3ugKpC22o9oNtbPZhdZ5lCRmB3fGHm5wIRbRTPvm8FZlwdF3k0C3jiheB1w5u0j3Vc6AAAA0MnZnM/+Oi+aFf4D0q4ld1uTnCN+VNAFFx1iaqruZNWcAn0YF0qVJsnhomoFOl4lCcsewJwllL2UJipcWjQpTOeVNCXj9mw+mp5TccyLY07gBK4RkkcHoUkykrjactWdt6c2mx2dwud5aE9VQXyyZs42hOFNN920YMEC63GWLl0q33VbJ8+Zwbe6Tquxfra6yEpD/QPnpE9ZDJlsC3eK5hMb9WfySFGeXgo5VrF0RLjbygMAAAC6Is6LZrkSteNFwENF8woLSWGhKSRE0Kkdjl+0vmCx3mT6VXgGHHIq07D4ghyap57kVAkqVp2zDTZv3uznZ0NKPvPMM7K9TtzJlmBvBDbUlS329S2ER4YV3Pgi4KFjqZMia9ZJfsyNJUuLyg9NDg9zV4EAAABAV6S93DOY07Dcv7VOtO4ODykUHuHXleWk804CflqBdmDXCh5a+EUnhfjqOU+D4SFkXk5ZvAOGTy6JYKlm1c1I4mrBLL36oiISkpTtJ0WzP+e4uLgxY8ZYj/P666+b7bdDJ1tobBuhyvlIAdFzdnt5e0S/Z/WGCwrtWrjP0lzxwZHEu+Nlb/4Nirx7aNwHJ1LCsGAzAAAAYKKdRLP8RTsOKinn8OIreVeG7xTfdO51tAyyhTuqGehWwuILSDAnm5OPFCwODvblg5nx03ZaLgnvGsJEaxgfzFTzPOawaxZNnnOYlUyTkpKKi4utROjdu/f06dPlIe3SyRYa6zSmxbJpj9C6+92eUThFeBGwjVl3K9wnmsOXLso1D/GPjjW6qTAAAACgy+Ia0WzTxBuW3JBtHsIey0vHJH0krd2rGehizCplWjiYcxiQ11YWLUx7W5XEFKoKUEXT5qabbnLUcO7STrbQUqLZCkuR1TWSQsQNP1kdVJVSRtbIsKfg5iXnAAAAAGADfEYbgC4ARDMAAADQsUA0A9AFgGgGAAAAOhaIZgC6ABDNAAAAQMcC0QxAFwCiGQAAAOhYIJoB6AK4cZ1mAAAAANgBRDMAXQDnLM0V9H8AAAAAcAUQzQB0djw8PO666y6XZJWki5Dv5hgMFa8wpBCqsg1Gg0vKAgAAALoTjolmevN2Uz0AAJZobW11ST4KxSwQHm62R0iELgK6GQDQJdi/Y//EOyd2v1Sgc2KvaF6bnevOagAAbJC8eEFbkmsqZqPROH78eEWgtm6uyI+IqM6q0Uf5m8euLdenkSW5UUOIfeHWUZQiZUI3AlLLZBGXGQwJ4dp5AAB6Di8/8XLz5eab77m5m6UCnRMHLM1tvGcDAJzGTbNWnU5HdbM9MavK1yzLWrZ7X31UrGMy2CGslZKYtVWS4ExMl9c7qshBj6IdpnmyuVx7z+Kcm5R2CG6u6uFPDr/8l5cdlaSdP5WcqlURCancVla+ISVEM8RKZOcOSSHS2FaHuKjO9eUL3h2Wm0C0I1Tl6wwRxgSz6lpOYqEU80zYxWGNZj/YxDH3jEGDBjkUHzhBTU1NQEBAR9fCjaCBjtLY2OjC3OQkRWg5bGhQf+rwsojcCLKgsj7Wffdpu0vxHxaUZziTS7qAYgAdhPuneVX5Absn1xj0/rx6zq9S3tfN6UIy1046QYveyX2H/v3q06+6WSo59SX6BJJvMIZwSnF6foUhIaC86HDWViPteRryYnmtbGZY68whjSJIfoIQmcpNbmxXqEJcVeeKd3fH3KOnw0kZgaVNzaMxluUrCuCSLCnRT7ddijqTqvyINbzupwpbX7JV78glAi8CAtATMRiNETqdvbFrK3ePjdCToadIUWVtVJS/mY2NJGYtIfKQZfnC9fTkuwsi1uTJQkxxorVMgKpSLNbnVHXi8HscaC7oabh/mscG4eR7+FHqH6W364ENcDGvPv0qv7Fp/abZD83uNqnkDInVi65yQ0JjonefqKeX1jJ2qWQhw8aWGWr0RLpa1jhzSKOI2ARDLh8ydHhi9alaEhKuCrF8iXakzvXl60h87hBSoY4wJCrXYMhlRmLz7IUkQ4g9pagyqTCsSczaylnKQ1IMeouN0AaiGYAex+pduwh7AzC8osKuNenq9+0OitLTjdAY8iIz3ZHytNQgg8EQzj3nWseiSCH1dPa/qsowl5C8NYSG5IohKUPL02SWubTyUHMblaoUc6mTlzo9T9phKrz7WOyAy2mHaZ5/6GQy/UWZmYo9FyamZ8RFQVuXkBenx7HU0cX5k0tTy/JIGeG8jBTZEvpzOBlE1tCiuZgJqWyD5cx+O0IOWvYwztY7eWxqqtlDc6oPErhnz2KIoqW1puJI4rJl/IZGkxWRly3LWrMmVSh5mWHr8HWWW6TZ4a7gwM4DD9/1sNqpLHNxJv2P3x7gO+C/J//bp1+fLpTKPuorS8uClurrT1RHBwlGg6FB0dVULIYLY8O5Q+oiTAH0p5QXFJ9LrIW0pc68mdne6hF5EgdKkUc9UU3GRjh9+4BoBqBnkWMw8F4Z4eF2+mCy69GavDL+NkwSJy+JJLtJ1hI+dcDwaMJdRsWQIZGTo0tP1bOYWfdIIXGGqrnDd+eVleVJr/NFT86Um5NVpSgMhCafZva4zVCREIIXAYEF2mWaNyQqdytZMD0ijghKcW5WdIChKiUkhFQZUpfFG8+8qwvKNxqY7gwwDKvJor8UzpmhXpktlVJ51cNrDIZMGrOI8BtplfWxw96Nk3J4V/uBeF7qSVpno+ToH1q5IIHwLWXqWV9es4RotFQqbjfbMGuyhci5NMOEhBSuUFZW5T2ZlltEq6HscNcw4Y4J+y7vmxU4q+67Os0I8UvjU9emdrlU9lBf8mIq4UykJ5xI7WARwi6bs9GpVwixGGJvhtp1Fs3MjtRRncTRnokmBr0ugd2K3O3TDADo0hRUVUn+1lk7d95hz1sKzGjH+40RTrC+WFkz2eGCE4cPZf9IJj07SqmNitLOa0jU0mUR5VUJ4Y5d7ECPoX2meYTTzZyapLowrZxO6uKzIth0jhjW0A0y9FTimgTdGmYkNkZRNSkkYoY682yXTqaVDGWKk5g2GEOHy3PQRKyzKXOppSQkwahnKlajpebFyZtsKTKxbDzWaJGqw12Hp5fnlhNbXkx7MXdlrjzcy9trw/4NY8LGdNFU1mFqtXQybziodyK9g0XwMC8L45LyBRH5S4U3/9Qhbaqzhs3YFqokTvRM2eHhW40GveQJ7Yj9BaIZgB5BBbeW3LyQkHCOx99449KlS/YkrN+3mwRJ98chzHR3YthkkvAud62hR8vI5CXco2pTyNh4PTlF8k7y7+oJIf5DJyemChZidvc9GS8T0Bql7KuPirRQp/CIZRG8SQ8AFe0zzZNDByT3ZmpI1LKE8qoIUp01N4EG85K6alVEhG5Zfs1wWQLzbGvLd2vnO8QsB3tq0haEJlvC/MXHNMVRO1vkMpZkLil9rfTcmXNSyIQ7JtjUo50/lSYKOTtkRFBZ+Rk99yL0meoy/qEKacMhdREyRHdhk5+DOsS5OpvZjK1XT8pVYWa2v2fk/RAdEzrE7oYogGgGoGfB+zH/LijIvuhV78aRyTWma8qQyMmEe9a8O4Bz8kiM5sxIQ6Iys/RCSNbW3BBSe4oQZiQjUgjTEPn5On7BDvY4O8RGKe9WmekMOcwCBw8NoEk7TfPo3bo6Xni2y14tGr6V8NO5hAQ64AWnXqoy9VEpW7MOv3hKGsy0aEW2lsa5Igerr16ZMhfbxblnFA2vWaLRUgl1k61EJkHD+ArUnCwjw5fIC1V21D1m+dAOt1VxJ5DrUcrH733cPVIpqcifzrx0ZHI2YHj04VP1JGQIe+E1evhcWWTnDqmKkA1v0V1YFdLWOitsxlaqZ8rWPIlDPSMRHhEUwTs72dEQFW0WzbUlCwLipPdzEotrcmP9WWAayWRbwDVUrNJFKJygsgzGlG4lGeRDyZnGYdQ5To7BYDQaH5owwXIU7gmvHHGhAL3R/L1jFi4LUeyacjMkOFRKrribKz/MLHCW6wx6Mu0zzWPPqfOZAZjfWybeuUMiskh0EGfH8o9aUrx7egBLzfwrws+czEuYnscssqpsy4kmihzsurQNkWXOXgRk/iQaLRVJrC7SRZTJm2wxcsg9xUXTpW8kJWZxKz9aahEJMeUT7Vr3DJ43XnqD31iYvvDgBwcN5eyCUPJqSezC2C6dSk1VORuTwsgUXgmNih8bMZ0fe1n5BjYwxHWI/Z05RDSKMA1vbvRSrakKaVOdq/IDSLxRZuLVqJ4y1/wIsyT29YyakASDIYIfyTSOg0rDFZZmQSlzUOGygGRmitsQMS4iPMVoZG9gUPFcHtXNxDIHU8ylMTXGXG600GbqVjk3KeBHXSZJ48ceBqFV7PyyCQBdh/aZ5nHHUgyGFEUY/wqg+MSZOYBKWQ6RZaXINko5OZQ2zHIwrzwXwTSZNE0sVXVWt1RKRSYvMer19kUeoqqM5RZZ6k+X8fqa16+46oq3q9/u278v3T17+uz9ofdn/yXbuiTt/KnUaA0zdSDt/xDnD9lVhHZNnK6zVCtb+Uv1D1Eksa9nFJlwhCcYjJZ+1jZwtXuGf2xuLhMuLs4WdHf2lZLiTEnasjmCkxkpRiC/CzjUy8tNsGZjBgA4AveZsejirU7ejYEjTJ87fdFTi6RdKk+31W3bVrStuanZy9uisOn8qUAnx9VnTrTzEVK9MS01L4/kEc4ObXr0ztmlCY1WPZakpuaJz+G5hDFj4+I4JwQ+VO6TwEICpFQ0F0NMaURcnswhRJ5/D7Arss4hQufR7XUkixwmfOeYvBu6TreUkphMdfVM9edapDVIzLw6Eosza4VBIow9ucnZVlZSlM7eWU5hMMKfAQB30gbzVceg9HrqSsj1qMS0+GldPRXo5LhCNOfFBUieqDXS20VBczOLDxP+yXhtSZr46J2JlZJItizl4aAaozHXLJ9qA/e4mItTmxsr+iSIIVKqTKpu1hF+I21fbWzkPkX+3U/yqAifW5wYUF6REk4nF+WpWUtrgtYFlPJdysTfqgo2yeja3UKHTdxYOiTCxRbNVQ8SeuqFOPzUgUM29gSTsz1ZjdjIR2ExNlZ0Rx8YAAAAADiN632aNSLU7ivNY0gJYpbG0D+RCgWXWDxXoVMURkQuaaSwuqS4oZl/ZmzXkofO4B+7NEvHVDOhmjnKSE5IXeofGZMYV14xN6hrd0st57LBDQnWotIT7GwrBoksDgkISmxLVix9aoQulQ1no2M+Z52WcALlDwAAALiGdnOsMV8Oobak1HaSilUBckOpI/n3DMKjsiLKK6LI4eK5Kcov4SQGcV+w6DLdEkNK99V2rKb3j81ldnr2EqKuy/SbdSo03JgBAAAA4AztIpoFyyfzJOCMx9VLTV4c1hk7QlgVsjqPBGXan3+3UDy2Yao5IiKxuIY3uudV1+QSf97yPnZprn9AF+qWyBgSkFYiPrLgHbZraBjvJyG0SP2JTP9IszgkRnuQKKJpZiWs35Ebm1JTfDjtRC0J70JWebtJklaMskAFvJ8BAAAALdwpmv1HjM2LCOBe9YvNNTD7HQtlT7/DiT3La4TPLV4XoBOWwaTprJSkyr+HQFUzSQwS/VwSD6/T6cQX2VgfdKFuoaewhiwI0MXxu4KlN7N4AT8C+OrXqr8r7x9ripNocs+Qxp4wPZNHs5AVi1IaECBG6ZGKmXBfDYzQRUA3AwC6BPt37J9458Tulwp0TtosmhVLeom7/F/pRT7TQsMCqoXA5PlI2/zzchlCuBTBlEqRf3eFNlMufblXAI2SvovJNCr6tSt1i7/qdCuDNAeJKpli7GlHs2+8dSfsUcw82rqZLadVnVWjj1JMJ7gP6i5Rf3zVUrgl2IfEUsvEveisZeTwcNvJrZdinucygyEhwMFa2aJqVUQCv8JPVj7/cTh1iKwy3Nfd/M1rrq6k9BNX9LlmTEf7GYDuxctPvNx8ufnme27uZqlA5wSLBXZZuAX5EotruoomBl2aqvI1y7KW7d5XHxXrNnnGvkAmij9OC7oyT5Zheb1FHy9nqC/RJ5B8A1szv758wfT8CibKiw5nbWUfh6MhL5bXKuYYZalpk7eqBa6ikmIEjT63EBNo4O5pHjGbxpjNdtqBLjRZcnNVD39y+OW/vOyoJO38qeQ4MDlv8yFpJGtE5lYi10xuqeLCxwjNCyoK2qo3u4/Qq+W7w3ITiAPNdDSJeU0cbogJiOYui8KIjK94ADdSf+rwsojcCLKgsj62K9yn1bBP/hrOZA53YZbsA2niZmhM9O4T9YScLBsboedCho0tM9ToiVyxJWZljU19t8KyuuIrmUu4Hrba52YxgQbun+ZV5bNHBwb2dWumnvOrzMWBki4kc+2kE7Tondx36N+vPv2qm6WS49jkvNapQxX5CcIhKi65kawRuSo/Yg0vqakw1ZcohK+y1rSq3FcjluXLg2m2VNEqnG0r3t0dc4+eDifzEkP3qRoebpZkSYl+uu2eUdfEoYYogWgGoCey/sCBh+z/HGBt5W6mBYeeIkWVtVFR/uauAolZS4g8ZFm+oB5OvrsgYk2eLMQUJ1rDBKiFyWwgmkDoLWR6HMsjunirPpKFV66KSDW3kWg14VR14vB7LGQbUR7Brs6ioYIZQiIrzapKqD44GUTWrMmTWienvrK0LGipvv5EdXSQUMjQoOhqKqPDzS7HoXOzdluxEMsrqe5zy80BKtw/zWOnYPI9/HkRv9QN2plXn36V39i0ftPsh2Z3m1RyHJuc1zh1KDzBkMtvDR2eWH2qloSoI9cY1iRmbeUusCEpNj+QPiQq12DIZfZdWWB9edruoKzoarOY9eXrSHzuEFKhLDFK3XDhciokGULs6RlVTSocaogSiGYAehwGozEz0wFPhfp9u4Oi9HQjNIa8yEx3pDwtNchgMIRzz7nYN2XqpRAmaldVGdjnY9YQGpIrhqQMpVdMk2UurTxUoR3zUqcLq4ovy68RTML0omYQvnDEOyQMezcuKN9oCGH6+90qGi0v9SQtxWjBY8GUJ9O+Q0i5Zrb3ZGZFBxiqUkJCSJUhdVm8kZQvMK8q+7JS9fAag3hrMe+fkhdTCXcVVr+qqsA/Kn5sBDM2B1ippGafD7EUE2jQDtM8/9DJZPqLMjMVm4mZT72WkBfFCV7+5NLUsjxSRjgHG0W2pikZHzMhNY+bE8YOMZsiqu1hnK138thU80kj1QcJ3LNnmeO7vKW1puJI4rJl/IZGkxWRly3LWrPGNNXcOnyd5RZpdrgrOLDzwMN3Pcx9lcqMzMWZ9D9+e4DvgP+e/G+ffn26UCr7sD05d+6QCfrDyQuKpxftfcrI9aSajI1o0zWn4t3UsfFbg4peNA9kZmYb1RMarkgiw16zBeEKaktDIJoB6ImkpaVt+vOf7YvLrkdr8sr42zBJnLwkkuwmWUuEb8oMjybcpVYMGRI5Obr0VD2LmXWPFBJnqJo7fHdeWVme6WW/yZnmBlRzn2YibpjfeocOT1yToFvDNIQxikUTS9FGnicRP4ekzpZq2awIQwUVDYY1dKO2skhR1aWTacNDtUzjTNaUCp7K9ZYrIhGSkm9YYO5dragkl6uyz3lzqUZMoEG7TPOGROVuJQumR7AlfzilOFcx9Trzrk6a4BmG1WTRXwrnzFCvzFaakmXSmEWE30irrI81nyJqun8oJ42hlQsSCN9Spp715TVLiEZLpeJ281NBWZMtRM6lGSYkmKaalWyqaalFtBrKDncNE+6YsO/yvlmBs+q+q9OMEL80PnVtapdLZQ8OTM6dgp+h0YlWiIVLWTQx6HUJ7LLouCsw5xRB8o0h5muniWZmGxUTG24hiaM905aGQDQD0LN49/TpV5KSXnnlFXsTMKMd7zdGONexFytrJjtcauLwoewfTd8GK5i7jbJXA/lnbcySF6EzGaQdRJ0tCYlallBeFUGqs+YmEHJKWdXa8t1aGckVM6vciKCy8jN6ztP4THUZr9tUhNwTU/TixiBCLFde3ee1UVFONbVH0l7TPHE0Ml2YVk6HgdnUiww9pZjg8TBjnoUpGfvYrbjBMJ8iaqKYNMraRUdaglHPRrhGS82LkzfZUmRi2Xis0SJVh7sOTy/PLSe2vJj2Yu7KXHm4l7fXhv0bxoSN6aKprOPo5NwJmB+IcUn5goj8pQZN16+yw8O3Gg16tYexHdSXFFUXL0lQVF7DZqxOaHaNVSdxomfa0hCIZgB6BBXcWnJUMR8/ftwBxcwZ7UiQdH8cwkx3J4ZNJgn8C230aBmZvIR7VG0KGRuvp7oz7yT/ppoQ4j90cmIqkxTC8+KT8XYJ6KBhwheOTpaR4UukhdtStmYdfvGUk6JZlS3dCI9YFpGQkJi1lYWHKquqWVBF/nRmCJRZH6k+OEx1RsgQ5lMbPXyudtlDYuODdAlrLD+z1ujzffVRkc61tOfR/tM8Oni49zLNp17E8gTPrimZcoro2ITTcYQmW0JjqinDzha5jCWZS0pfKz135pwUMuGOCTb1aOdPpYn9k3PnDskQnIPVkYeQoOiY0CGyOBreHZZbQOexdFolzqvKCHM3InKbsWb1lIpZZWZ2wmxB47ShIW0QzY2NjU6nBVbo169f9+7bHtLAQYMGdXRFNLjnqqscTFH1bhyZXGO6pgyJnEy4Z827AyIi6H5iNGdGGhKVmaUXQrK25oaQ2lOEMCMZkUKYhsjP13FxuMfZdiiAkHuKi6ZLK0wnZhH/qCXFu6cHsBBmfguodOrerMqWC4zIItFBwsVUVdVydS5V5ax1QhsFr1Pmsjyd/yJTVr7B4puOtALRa0otHdXsc86BG9hB+0zz2N26Ol5cisuwJnH4VmI+9bI0wfO3b0pGVDnUkhCb787K2sW5ZxQNr1mi0VIJdZOtRFZPNS21yHiPWT60w21V3AnkepTy8Xsfd49UShyanDt1SDaYRe9hdWT/iKAI3kfI3MPYLsRnMlxZL5IlzEG/It/MZqwuUd1whZnZObNFeFsaAkszAMAa3BNeOeJCAXqj+XvHLFwWotg15WZI0CyHxs/V2mVPDM2zMQuRpVLkYD1Ena3ghypdfhVVVWUlf5vQVqC6MuxJaKyFSlrpc1UdtJL3cNppmkfPYD4zAPN7y8Q7t2zqpZjghZ85mZcwnVt9xZ4pGVHnYNdnSuXzPfYiIPMn0WipSGJ1kS6iTN5ki5HVM9hhQRZbREJM+US71j2D542X3uA3FqYvPPjBQUM5Wxuh5NWS2IWxXTqVGvsm5+I6xP5OHZINZm6s0n/VkUMSDIYIfgDQkLauSs5cnGXXW+ElaXmJVRsVDc8KijNL4qzZok0NgWgGoEdgMBrs/yhgj/uMNrfWPb3magt60JVor2me9gTJbOo1xGxuNkSWlYUpmb9qQ2N2ZxZBa9KoqrO6pVIqMnmJUa+3L/IQVWUst8hSf7qM19e8fsVVV7xd/Xbf/n3p7tnTZ+8PvT/7L9nWJWnnT6XGvsk57f8Qlx7SKjc8wWB06Bppyl+CjiI996/6kKJEjQoYrcW3EqisicMNMQHRDEBPIaenSWH7acM1FAABTL3akelzpy96apG0S+Xptrpt24q2NTc1e3lbFDadPxXo5LjozB1c6xv1Rf6RnJl+5uF17ySlkwxVsMVwYAn7e8yemJ23/+lI+uC2huRxHV0PAABwjC439erKvj1yPSoxLX5aV08FOjmuEc0HP0jPyMgo2183sxPKMNA1oEI+OKGIbmRY8O8DAAAAAOgwXCKa605+kXFbzm0kCaoZOI3fzJyGhhxmae7omnQfwklbX9YAAAAAAI8rRHPd/rIbbsshASfJekE1S0ZDSnx+BpGHZJQLD9+PFSX5phfJQkxx4jU8PQAR3Cqib0hISGd7Yscx5xgugAsJMMUUHDCkbWvnBX3eDdn5bYu0fUem9o+9wsJO41vN7qkUAK7H2OopbXtdPKcZp0W+Ixvdxv6D3VMp4B5UX6i2gU7nnnqAnogLRLOgmQmZGE3SmWom76Qn3FDe0DCOk3PrWRQphIm0tQcb4gkpSic0JEcMSQ54J70s+khDDq+509+ZCAmnSVHCMdpvDUIv1eVM3J8URfjeZt2d9E65peV96rTOC/q8R1NhOwoA3YEW21EAAMAGbRfNVDMXpRcV8ZZOEh+dMZGUkfwM/k2ugFHxfBQxxG9idHzZSfZF9vj8eCkk4YOD8aPKihhitjQjuHpoIfabgKxvCRmXzM1CyjQTymNK5wV93oNRKmYoaNBNUSpmPETpRhzcu2PczXd2v1SWaG5u8vLydjxVs5eXw3rPuVRqjEZnzP3tmcr+lra5O5idWbBz8ubK/TWOL2QeP4rzKZA8N0C7gT7vSeQYSRK7nGjIY5uKuXL1nbO+eHr/v25VfGn3zNvPriQLV997BbEv3Ao0ycTfbuM2kzY3/26Y4zk4V67TyCpM2lJnG3z6xqjysGOP8Z/f/foVr8WZ3Fba/h2LxsvjWTnU4+g7mPzCnDQ0DMw2FXPLxZ9+bukzoJ+Xh3l46+WLF0mvvr0UwRbDrUCT/HS+idv06T+4l87xHJwr12lkFSZtqbMNmi83NnsO6s272rRcOvfLRW6r94ABPuZahcoi0UnjX6v/ktB0eeLke+wuxUiTvrb6ifmqVCxLHVErLin8X6ufsLMso+RDotPRVPMuX5445R6XuImwfvchXt4O6GYjS3WB9O6tUNt8FTXaK4ZrprJUhNXW0f7QOaRljRZS2ayz/WVJSYT+8ent6e1tM11bRTMzX47KEPf8mIfGyeHRJKroINNizJRJojNYcLAp5IaHcshJUnSsJof4ETHEL4AzOCePG8c72h57CGLOHmR9y3tdjOLdM/yG31D0Ad/DpOZYET1JirPAnxf0eY+hooK9FUj/arwcaEExt1z88fwFtuEzcODxjx9PSnv2o09P3Xr3MO7YpR9/vMQ2LlFZ4imPTPr0G9jb5GBKWpsuNF5oMgW2Np3/+QLp07+ftwd/SIh3eMvEzbfsb358KC9GV3+9P8iJZjY1tRiJp+14riLurTd5iczE+ttnV9idkLadXqVpJ1iLdOrDx4Y/VUw3ns3m9s++93+Lyf4dx8bzh96obP5dqBDVyqGeRkszGwEtn6+7c85XT+96yWyaRxXzmbJn15KFz0TLJzZM4pwueW4VeTArzrf5gk/vPs0trV4eHtJBoojMc/rtrJvj+FnTwreN8aH8EdMNW4ip4ySeKZOWpp+avAYM7u3Bi9GLLQOcUZ5CfmdKnnuO/CEr9konsnAI7379eInMxPrl1t72p+TabkPGtDb/wl8L+vTl95vO/0IGDBjkxR8iROV33nLpp/N0btO36rNP/v38kyYha2xiar6P2S/LyOV4ial8bx3XcV8d+uTfq//Cp1K4SJt2aZKffjbNbTxJlSyVPKZOkQln7dSJjaepcp//CxXN1jrAJkbDG6PLf12dGtDSfOnShaO5vR5eyYWvMGx/MFyu9b9+VSccetywfZFwuW+hqS5eOFoopFr0tvE+8fogq3nFm0E7f/1NCpuf63Q/bFsQvziPbk7Lrlk+jX1b78irukdUyS1hqgarIb0uGVsuNfxy8dDb4z8Y++UTYT7sKi3WuXbPo68OeGrpaLrZ+5t3r9/96+qUMWImjzzLbf1x538fjvIWL+1GUvth6sarslKIWCVWysJwOmw+W98/9QUh5P2F4eLU69A74yvChWxpMyNeEXJK1O/LvWUo1z+XLvS1YyrSVtFclECij5ie6HPC7IPhR/LLgn196X58fDwXPDMjP0kIyT+SQ1XbSULSo3w5nw4+hJCZOeVrfbk4UhCwjZ+s35jdeGYA754xLj5/fbDQnfQsjDI/C+J5QZ/3NMLDg/64rjrhZk5BC2FXl335/eYXmKCuEILoP6NbLtFbUv/B9N5DLzvHTx15Nmx1FHls39m7qUakkvkSVdL0utdy/lJLa2+qAM+TfgMHe/Ka+FLLQB95ob28vVtaW4knd8dtab5MQ6RjPv0Gc5fPutpjMTOm8vpm6L2PH2My1P3d4TqGjhhVXF6/ggr9lgvnm1ptqGE7GXbr6uYdq5mlmd+/4u5/7RAPXT9t/kc1p0joMJuHeiZfG5566HE6zau79W4/ybqs6z/Q+KM30ZkM0M1szsfJBg9O5RhbW1v6ePb1Ir80t3ozjSgJPrrBW79EAVjxxs1vT9pnXH7l5Ysn314Tterr6seu4yKIz4fNxRgT5boHqbqlJXh7C2Zsj169BzEZ2kS6Dh4eHk3Nxt5cAxw2IFrM1Kvv4AGcpVnY9+43QCrPu5c6QUsLm9tsffPfdPt/X3wqhLLpiVk0TQvotuI8KZXc3CjBJWm5/NNlT25uY2y9fOmni+++/zqfStuqKopyNmZkx+VlOQsViAF6Nnl+bu1lZqqo3/7Qw8TwfnU4f+jNSuN9NwpRqdKlh7bLD4XSbr3MKnj4hYe/Li6qjr2CqUY6XAVhyrVXKiLrZf581hW/svhXWZ+eHU0OvTs+7cN9ubeeWvWIIrlogFe/mPnDtsSHL+8s+TSMkMaDfx31ZmXr7F8d25kW9Gwpa8W6lh+bWgZLCrj14L8/uPMPfx50kdbhaa4OLxGW6dltCx4x7i2pjOjXt/6j1IC3DlyIj+wtXFcrN348dc6Cdx544CItZVLfQef20sZ+fnlmvy3bTmwq+mbWgB9PfJyR8eGp9b8e+POhv47gsv27TOFkvcQ1nz9PTXz/tFh78YHe2PiNtopm5kQrh60bxv5lq4cpw2Uhil2BcckNDcltrFB3hfYY1185OcoQVb+J4eo+1uj2ztbntD6Q7m4n3GCsiNCRRTlXz7rt+6cShg0L+Z6zP4cbDK9EiJd7T5+B/fgtnUfjvr1jolaQgNPkxS/P3HvrFc2XGre/PD5+O3887q2HvPsMbHj72RDeV+GvL3y9nDNDVL//mFcOd7VaV7X0ulZvjx8kf4a5T+3Pu11uHPOLnNQy8p/vnVxxt5nU+/IVr6c4lwPm/BAq94h4NlvwWKCaciI/qmkcmcGNC497680F1ffNIlxkyc+BbrwYsP9fV5WI/gyScwWzdnMuKGfEbSKVOF/DO0XizIljcUF3iXtfv+L1iCznsI+9mBmYc5mgh0pGnnw87KN/RMbvkLKlpaysHkUezymW2mWdU19u2zBqwb8cPNRzqD39zTNhqyeT5VVn7/S7wqevztvLePG8h4dnC2G3XY+Bg5t/lBbZkOk+Y3OLp5c38TCSS62tvTzov8amSz+Kngne/XxoZOPlizSk/sv/Rc+IouOhlZAhs/5UeeFSY8PPpE/fgT6COVbwZ+jVe4D5FMrDy4s0Xm7y6m0+sWq9dO48543AGzVlOfTpK3gsUE35E/d8h8WRPUhuaW4895N3v34+red/Jlxkyc+BblzyGNBP1yS6OkjOFczazbmgtIrbxFRnDe8UU0Vb6U9Zkg6tl8xy9mw+xyzEnDcFnW03edBKNNNsm6VsmX9Bqwe5cKlJapd1WlubLlMNrQg0cnObwheFB93vFObMnJMkHaZnVG7bN9e4uvy1Twup/rM++oGH5L4U/P9ZANVQ3t4+fCfovH0GkgIxVdl/1s984CG5A4aqznTYCLZfqayyjdmsLELkRmhTdc1DzGci/rdmGbc/Z3hz9C4mzOkM+Y6X/itY5P1DpiZ+VFtLbvTnU14xLfd9MdX1dyXupYdC/S9f4h4Chiz979/6cqbUAP+4w6fPkDFDhTYbif8trIiKN0eLn0nw0LXOuoZ7GhM2NvWOw6dyjaEp27P4YwEBfPIhqnaLXDkt7/1pNNuWpsY+v7pr/se1pzxCR9212jj1+Yo3gsrpLKiVs6Jwda796D+97su6mlbjtizjtr9/WPirj/nOoG3ZLlTQ//qp8z88U9PaGsg9/qn9aAOJybp6KPnPdlZEExchcW/NKTLk6Pbr7lpOPFt7Dx46Ju/wmdxbhl3Dei/rQFHQdiP9qXqwa/W3cUFyH3Ohf5h6vuTdSzD4KE6qNALxLUcAehbVv1SGk0l0Y0RsrHf9NyyoudFagtaW0xX/vfZmZi+5fhp59dNTN99xcd8L8YGbm3eEcr7OuYS5BKz87SgW0lq3OfGB1w7tmE1I8eOEhmQ1fV/24PzcQ2V/GPnJys2TPvjpUX+v5u82r1n59tisGX1MpVwVufKYZ/rwO9lthdeRNIff1tAcjonOD6sjvxRKYd4I973y6Y5FAR8+NpHwNWFS+P8+Kp7B2Xr3F45dd+W2syVDiM/AyKfj/nz6TMvI/72bQ55K3Ltw5CgqcGfddWVTn/vOltxHmLW7+d1VKzd9nxEd/dhvS/ak3Th9xC8fb9r2x4WLvY7v+SvnNHJl04XqN1dn/Gd4xuxrBvt4MueKVo/zvzQVz7+vmG/AnMe3vdSv+X1jy6WmyxcC5l7YvojzP6Gp1v5nYvLGqdPKv140fkzr/v2ZT0/99Kdt6W9HlF9Yca23B9e061fQxn4RsL95x2q7TuLZ9/78FHnrTa0npFYO9SDO7Pto9G2Pk2FnSPaXZ6bcHtiLnNq08ub7BAf0mEImr86UrbprPndXznpZsLp9836Kz6vMGJb10leLR7a0ev5QsjLyt9zcJlH/0fpfM8XR2kzFd//BAwbddbtXwCtbbn7inqtI0wXSf3DtRt3DLR+U/D6yv49HVbbP20E1izxWxC/eQNNMzT5w8/bZ24vJdlJclHXvFT/tXHUzn+0DT+7dOJm8/Y+/fzXS66l/vU2mvfRxxHuT/r6ZTH2h6k+/+dXlHdIj8pOP3tqXljKAyUwqhc839+f0D9V2l5vIhfKX/0puHjP7af7p+aYL94y60Kv58KbgCfxj6EUlrcLzdDoHuHi5tY+3d+/zl5t7e3p7GFuamnx8fHR0sPJOI0YacvHiZV0fbw+ZY4mx6fz5Rt7Y1qt3/746wtS1kdnKffv7cNFoqkuXPX36ef/c3OLjRfV688U+XgONXLa+vWlenF+HR2+qTVo8Bgwe0NeuM8n5MUlWZ3Lw453LE+5SeswQsubJxfQ/frvfAN/X957s3dv7kjjr+PrLvStspeo/0Lfwo5O9+/Yz8s4Vnl5ffPJO2sJYW2UN+ufWLwZcOcyz6eemJtL0S///ffbB45plpT9M/5NS5e05MWjgQNarvzAzp3ffQT5eOrUTS3Nz84XzP3GbdL70C9OaHJcu/EL/I6Tu0y15V895QXi8wRVqZGZ4eg385tP/5gXM+cfPjaYVGIVU9e/vKQ6c8WQDMQ5ic0DukI4rixZxvvHcz3S/V8jE1oyv638TOeRQRdbTY+ec+5m7S9AK9r2w96Pisfc+xw8LXXOLUMMBgwQXGrEW/Oapqvc3jErIFXbZsdaWpsu6XuLpr9y4d+rc5UKqFjoYdWIWInQGcurL9zaMuC+Hq6yOJvmIS6ITczQaa7/cnjcq4bUfj1feeU0im0Ze7DPk2vnHamrJWM4KY2xpoXUX54HG4rh47ro99eWaP072VfWq0FI6JMQamIBoBqCnwKzL4cyifOkSM1e1tNTzDlw//mK6UIcvYp9+rXhF8Piid6yffz759d6Nr6ZsfJUPipv1h9BLBlKYOPxHZqobfC37LCzVKOSthaHsEWWfG++duvvEWRbzrbtCmR3uihtnTV32wTfTaz4s3rC9eINY1Pxbl88I73Xp/DnedubdZ9A1t6/mVCMV4ivffnOFmIOEWArlivGzpm07cfbMCSmEkPG/O/avpppN+4rj59ML4uP7d1w3kLvl9hkSvOHgsRcGf1799Oa3Pvr4CCFfGafOH0Bl78Wd2TeLb/LFFc273Drmvre8n/v8pzu8/7fb++kVt/e/ULSneEO5rM63p8Ve0adlYC9CLrd69OnrLfk08511wkg8fbx79en/y5assVLObz0cNGPGY30OVv5p1IXt/378nh3NXzxbVritrPBZMdtbFsyiHXu9JTO2OWzCsG3Wm1qvG1o51KM48+Gbo25aT6dDdJqX83ndbaN++XDVfaPeaCyPGND66bN35tMotftenB/41vn3rrvUsPdP8a9WbL/XaCxebiw6W/IUObvzkT+s31/yh6ADK9++qfzS49d4606XPPfc5sBn7u3X2txM+vViLh3Dbs063vTYNXexR3XzntqXf9u9m6ZGfnh8TkSI96FPn396+qdf/Xd8EHvAXb/15WnlV+3dNJWQB5+79wrjqQ9XvXPbPmMaPd2n3vjbyjfG0qFe9r9r9hnfX1HyXORLpPzSthV0KvX5TzPP71g89uX/XRrB3D/yv6p89HrBMOvVa5CXsfVyC5VcP19o9ezj5anTFcfVlrS+92VDy9nyf2SVXMi65UDqBLLpQtkNvXy8Pn1z9PzybWsn8KZB7369OMuZ7mKL0VvX0kT69PYixsvNTew/sQt7CZZw8dqgk3yaGUYjJzM4fWNuifekcryhpYVq7+bLvb0GGFsuNl1ukmfr4028vT3s815qpQ1s8qblSiHjJt2x9atL8yYHnjl1UjPJvQkPJy7/R+++Xi2/NHr08+1Pz1TzL2PGT3636vy8ydfV132vnWr+Iw+mPt+rD18Q1yziER41852DdQvuHmcp1cz7H37kry/SKfSln5s8BrBJTK++3uMmTXnn4Lnf3xN6pvY7zVSz5i9d+uSqixeZIbb5F8++gwZ7MPePy60De6t7xcvLq//Awed/bjS2amR1dmfGs56FRTf58vpR9JYwenp6Xd6X+axHwWsh6iSP/CGl8PdF539NZy0yhU4Te3p7+ZA+OnpumIj0i0y+Z+20K57lzAGjuTjevXzOf/DwvYvz6BxsDO8JoyOerIa+53/+UcqKOyIo+HM7//IM2VQUKi+ISvN+3l582bUfbiD3Zvnzvc65o/dRP3yo/2/K080bCiJ8PNmcwpREeoPg7LYVT7NSPMj3HuRi488/DqTzOikfOgDO/3JBR8QnO6eqt8fRuWvsFcbaD5cHbBryy8zRyhJpS336mGZ1chcUx0RzY6NVixQAQKQz/1ioaK4g5Gpum25cZzmmh3efgc2Vn4za+d9vbudcj099+Nifv6y7u5V4+AweyDRp46UWIlxcmMK+7NW/n6eGw1/c6KvYSgZ/y6pKGd+rVXgHjr0IKPo0s2e5l1r47dCoJME/2Dn+/sLhOefSR7GX4W5g+2Nu+nvx8e0e/5s19aERNbknjo/8OtB/aDM5uPlm0Yp8YvOadeyG7jk48hby+Ff/IwfIrEVDiUedlwf520vVj46UXtrjbMzs/kUjN4vNNr3OyHPwzYmbb9l3IbnXhab6srVrf/mx8cLI8X/940eG65u/fir+CUJOcJX80w3Sc/szb39kX9ugmO2g7stdhTmbCwVXtFl3Lrq574fkzd9zg4H4BU6jMzk2AStcOJb+GMiV42KmbafTPJ3u3qLbQwf09/EacOt90yINJ2NOffh2wY63C/4uZDtvwrJ7hw3nt3kH52E3/+3SttXk8qfPRz9XQm/D9z7uYfjfo9f32vXvP07dOvDa83F3pI5/amp2zePVw4x1JZym0enO7NtbnLedc3XlmHvb72eRWTPZlOkMlW8zf0WlLW9bZM/BUx++LvXOF44//r97L4teEDL69O3f18P4S3NLfxK36c5Q4tHa57KxuZWqprP7PzEWPXhDi4cH/TmG3fvpeg/mcUHFLv+En/cSudDSQn+WzHdb18rlNsjHw/TSntFo+R1IEf6lRl8fHfshXLzElJKHZ59fmps9SUtv7950ckl4lxXJhtp62c4V/yTFrJCSnp4e+ds/f+X5jOJ/vyAP9/Lyfqlkf9CvrqfKi707wc1tWEM9e3k3tXp4e+W+f7TgpadeX7/SLDcv76z890cFhzY1NXn27uVldvHy8Ok/tHDvydeeTX39lVWKVC+V7Lv22lEXfmzw7juo9yAP2rH8IV1rCxWdr2z5LH+dRg2fL/zoV+Mm0CkKH9fD+8IvjRe8uBw0XIP5SDrSr//ASxeV76gx+fvh7KLnZ18h+nTwIpj29A/vLYh//96i52P7X7pw+ZLZuLnijpe2Hnnu47R+b/Zqve9G9aVa12fAoF4XL1z+/q21a8m8T88mk7p96Y/sS37pjmsHenh4+Ez99/ZvMj9a7vHmfON9Y/lSWcVpDc1yYTZo3dn3fj9v16z/vBArXZHoGLlMPPr27SUULJqZdcLp7tWvr3L9irPbFszZNbvohXsHXmho0g32/lJIInFu54Nz984uotPR1qaaZpr7oP4Dezdf+KW5lXtHnXaHd7/+g/p7kF9a+LfWQ1Pez+IFt//1d83/sPYUGe0rL7FvvwEequXnpFo5JpoHDRrkUHzgHFRvde+uRgMdza3tmYiv+FWQpKTrdt5PN3ufa+DDXk+9g38FMJzkENXyGmc/LSOj0luFF/mGMQ+NUyMm6W7bydZn8Gj8YuuO1nsfGnrzpNbh/z14Yd5E74YPN28LXvI41YXF1fWrCb1cnv188/bgZcuvvmJCzJyqrx4ffyOVLJufG/ttXHXyNVIp7/3hvv8t2vrwzayQyvKcuKA31W0YShXt8Pe5dSHOfsqVMjRACuHcM168qngGiQu6ggy7YcVbWRNXf80XETplxL03H1t/koaHBU9c/NCz2dWEMDe2G67ifVJPV28nQQmsjGHXTyX3xcdPZZFpiRNvion/rPLRkaN5L+fqWFmdOVouNzYPGDSwjwevnqVwLmc6JbhYW94r6GE6wbh5WtLciX+MKSpi5uTIW+J++9kXf7phopitnUuFVK6+76Ebso9pyWIrh3oYzWcOfBi0873Pwuh2rwEXy//42Je1cfyhyxd+olNGTvn5qDWKkQpIyQRKp3leVG08u7Zy4Wgf5mTM3dSZ1vQkjU3NvlReGZupzvLpTQfQdZMXFn/0Qxa5bsLfHtl3MMKr6i8xSa2tg2/Nat3+bNMXL/nctfi5l/YKp5jqhmby7EvVy4MJt7zdJY9+P6mmTB70d0ClMHNm3fb385/9s/+0655bV/lgUEuvXoJ7xiVdf2/i7aG7qKNKpuV8k5G/m3t6eVy4RIUDe39Od+GXXzyvGMRbyTyFZ9OtVNx5cAZVDw9vcv78ear5OC9vqugaW1p8PAQv51bvQT5Kw6eZnpZCuZy59SmoYvGhEby8fM7/9AvzsSacUGxsbvHp5SVma+dSIS0XzzMrrMaSdkZjS7PngMVPPL+jdGPj2TNSeNikOwJDfm00Wnup8v9SMt994zV5qnGT7gideLvOrEmiRzL/Eighf1ie+e6buY3n6uVlBV0/nh7qT5t18dxPv/TpO8BTSmzk3NAf/ss/VDWMCvzVr/ltrhvZ64/9aXsuN/zcyHvDaxgc+BVYfPr0ka+GxxTznuiif8xW/97Zqhfvx3CWVHqV79N0+ZLZ2fLy9vQazjyAT50iN/qri9Mx/5s+pyvfJVPSucz9xkwhBV+cvStosGBwNQ4LuWs+c6QeK5p7idKx28iJXSrcCzJmyBTzL780e/UyyU6TzdhcMcuaybfludgrdDqjd6/Lrd+bLNNChP+bu2tW4Rqmy40tTVcMD91+4PvlZJiHFzl9fMOoW/JEIzGdO3qJdzHZT1+nU9Sc9o+Hp4YwdtLSDADoBrx+BxP01S/kVlS8Ig9/JULHu2cQ3mzc0mtg78/ef6g1svwKD1FMXDF+Fpn44bBthQemebF3KWLm3EkvQy2Dwx4u3Dutz1TCr8I2npw5Qcjji0c9ztJQpfjCeI/Wppuf+qB0PJeKexFwDHMFFbhi6qsvfNVnuqArnmXiT2P1jGG3rnjr2YlcDnwphNy6ev8bo/g82St3t1y5aR8fd+i9C9f/331BD/65/J9R1w4fHkN0fsy5bcykTPLHSaOYweFXk19eP3eUeA2ME77yc8W4WTS3m8ezyK0tQyas/HhrSB9uHUfmaT265cLPnr36EPmzUrFvJFsTGXfn+vXxQaLDdtxbnJ6+4cY0MnXYjQOYtWPYzSv3HB3DdReX7RiibqwGX3/M+lPoVUKmrT/5+N01/NuNRONQD1094+zn75JrhM9tXf6pd8gU8u8TwyKbb9v5+dnfXs+Obif3/J9PyC26kPcPn4+7jvxw8O1t1yUvJ8da3z7WkKWjN+QfDpZuG7N0+bChN0WPrPzfHwOvPfdTfdnaad/Nqky5gei8fPpd+rnhBFUtNcnbHomkWpBUbX81etRrjQ3ng+9Y+NvIR+I2FT04gBzN/9u0dydue3XKIzX6EytO1wmD2yNgym0xAfv3LQwIYesgvDztROzeEapGeOioFP6Wy6E8987FNfqjaT+cHxDUdI63Qfv0H+yluyy87e/h7dPnYvPllmam8ZgUZq870RmmLmDPN3PmhVNNcKhk/D+u2PZipOieIaTz9PbiDLeEW/DBq8+Aph8bmD8r98aeB6+RbXy02tOr76XzjQ3CHsvZyLwDelM9zz9x8vDsO6Cl0ZStJ7FrqZCWZnZt+KVRuEJI/rKsqs1NRMdWvJPrUYrhg/f4o03Eu5eOqqYfm1t8velsp+Vyk2fv3qTF2NRq7KuVysgM8Bd/bu3FO0hwjW69/MsvRp/+/PrQ7E3LenmqCpqq5fKFn5u8+vf16j2oT+uFVqMgmnXc9KO52cfDU12WtKo7p+X4HAb08/IZ1KflgtGok5x5zXybjUbRY0Q8FVXr/pDyq6xP77lCdlTQ+odXxS++4aVv2BvRXHzTC5FMZ59cWDI/jKpVzgP432Y9Lj/PRqPvsF+VFx6Yd0f0FaTu612FI+a8xPTrt0u2L4ogulNfvr9h1Pw8WUtUy5RU0mqMfan63sGN4tluufTLBc8+A2WmfNHMLE6QvD0UC3HQTB4OzvpiFie7mSe0x/8KzczMrJQb1n7KR6A979l85bVT/3fiLBk3sPm7+v/N9591/qdLvfuz55etRtLMX6lZQ44v3b6QLSC1YzGJ3OVHiMkY39JsYXi2CHEgmgHooSgUsxjKLM1syTnvPv1afvzx3Ojpn6717s9ddpgHRbMXvx5cy6VrPj3L3mrhFmBmizQPufthPoTeOptauWXjmpmC4xckJpyrx+BJ9x9rvl9Yopgz8RLJp5mMWdK8Y5msJjSH1aptKVsT4393rPl34k5T073Ls1r5l6HZKmzVrCxCAqa8cOnSOc4Je3jSf5cMZJfnPn0GRb5Q8ukL9FYuLBrN36CHzvrT4d+Qy1xkdmgCy1/wwfjx58s0xJPwL45wtWKzi3OiP9/QWctXezSdO39pYva2Y//yZD12njWvsdlrUNXnmc/GVV/b2vgji91r3H2HL8wzLasga6wS2kDhSyVjFjXvWKQ4Okw4qnGoZ1Kx81Ey6X3TQqhX3HiP8a6dQ9/f8PFdV9xN92fN4eYqfrf+sfDZKf1YSFxx0XPjjaePe5Ankq97gkghOt0dawxvBPnwU6an9uaF9uXskVSkDvQdce/Gl171mCYo4ayXqxNGsoM3ha0g00ZOulLnRYISHsp+P35a/2e5lW5TQ7+vLZ4QX/zcS9+k3Pa84VTQFbEsIVsmdgwpMdm2aOZ9e3mc5zaCfvdQ9o74KB8+h+VDaaSjbweVh3GvLRpJL5++RsGRw7u3dy8jp0foz6w/t+jHsFtWHagZ7c01lr0IeFcg65w3R+8Kq37sOqNQVu+B3iYbq86r16DBvYRdo5kM8ujVuy8XZFrfgdaTU9ReffsP6mey1LJULS0X+3gzfwM+yLPXQN9eJhnIsrIA89Xmtzx9Bg/w0YzD5LTnAI/NBS/x+/OWPPH5Jx9+fmA33S7JXTs1/kHOj8HDq3e/iz9xYt27f7++nsbWVh25sOnVdUKqpemHD3xwaF+5kCruwd4DmGOZZDf16NWv7yXh7bd338iTUlXuL//skw9Y4Jt502c/cP7nBsK/xudpNDb9eL6R2Zi9+g5samx4841/8qkSlvzls/0ffr5/F91+761/zZz/EPfynY540j5sOv/TOT6H3vyqK41NnupFRXTCsmis+3x6H6l4im6kjn+KD5n6cs3yu2veHF3+62/o5DmVhjwyWhCWd649tuTWY2+P/2D8F6mjpuVk/Wtg7HgxyY30jLC1LIRFkYX5EXPJYWWFLM0afcUf+AvPH3eWhJDefXJeyu09NUhMHiqswmjkjbVGM9X89T6uGkGpUg0fm8LmORd+ZK8z/tJ47lLfbzbf2zrz08HsSmo2QfqxiXuV8fKPzUf3sVak3vCE0JZ1bwUtJbHVVzU1XvTkeosvJXn846ZSJk+dNuKKeN5H+fED2/37tV7mT+LPLaSPJ9etV0zLfelVndSQmKHk8iXWqy0tzS3NzHWIraHh46Ow+bc2C/M3iGYAgEAFr6TF9Zs9ew8caPYJA3oj85Q2Bw423dNUMWXQm3g/CyFMRnv30UjjPN5s8U9PU4mm0mnlzVePVpRuVk8vn8F9+tgXmbl9DzaLKytILLRy9Z3jH5+2/uTvPLyJq5sMzAn/7WcvmQUMjU75jP2b8tnZFDGshU7XBt/9x8/O/pGqkP6cFdMv7vFqo/l8jOX2u2rj72T7chNg8CLj+2YTFXqw4rOVWfdWC4+P2cJb1ZLvsr8sK0W2scv5xbyGqjam5b5fnWtWo7ggfllF4UE2rTYXU4jPpX1c2I5QVJ4LiZASazRJY9+0q1N/Lk8WVYjHvqd4gUrAXprf1nMBnt4Dmeguzl3re+VVG8q/6dO3P91t+OH0wt/c+J/sv8cuENZQNbJ14nx9pIrRGcKgwVtef5Wmyt9VLaV68J5Qmiru98vENspKEoX7ltdfFlP1udyY9lPzj0n3hP7r+b/85v6FAwaZrhrclENI2stCWfkvPhUz/yFWGX7m4N1PngMXononhKt/06XrYw+G0Nh0N/QR47bFrb9w7971E1Z48L+vmvOrMx+T539qNBp9530zhe+EXz/S+nYik5DiuhB0HMq88XTC8Dh/+SKNH7ak9f2lOt6x/ZefGy9dvKAc8PKBYj5oxiw0bl8oWq/FQ/1pZxqn0MpwIRPuq54gxDabIEU9QCNQBnmFcMVxMzjxlb/fcFEGCbeh4IXG9xcKyaQPCY1baty+VAii/xdPYtTc6iipDCkhTXX58iXaG3z/tLYaaUsvX7rQy0c5Y/PwEZ51tFk01xYnBsyW3i3PMhhT1N8bcyu0AivIyrw4Dd+c7oR5PxN7utqenul0vVexSlce1e6DqMdi8+PZwDWEPrbj2GMdXYkejbXvFriKylV33Zs6Lbvmd7ajOk3477I699XRs/eAQQ58LdBp7pz1QELyU9IuladvfnJq15ai5uYmK599vjNm7nzzVG/tr7M3FZ0PNP5I5wNXejuSyrGyPHv1VVqZeby8e/XqbZpu6zw8qFxmq51of2pFSuXj09t0Ojw82DJqTU2XpQ/wWE3FvwjKltOwJ5U2qhmZpfcdzWPJJmPcvtFovaGmVEYHU9GmStv29I8rLM3zN9XwqospsOJaKwrMIYnW6fRcRyP1c/dEmhZkGTq6Kt0Us3tthVIwd+47cXuiNo2DLoaZ7GhRCma3fWU9NOX96hTb0ToRrvmaX4cgV8wSU2bEW081vy2pzOcDbirLEnLFLOGl9a1EOXLFLOFtbyqz4WEzlQaaw8vWkNMclDYHqpTK/CGKM2VZb6lL3TP8R4ZuKK/JI91X2AH34R+XZzTmMUtzR9ekezL6rU/MdjuqHgC4GU/z1a/cppFBx9CFlb5TdMXWdsU6W8fJJedsUHu8cn7gXGYhPhpKUlM3ZBlqAtcKTgVZBuPc4ytmb9hANhDOYmryN5AsqFQwRfB+41xKq5Hl7grzN8nXXTTlwvswBEj1EQLCa1Uhsvy6ij2XNbPS1DmhrBnyDqQN57bkBntpW917GqcDdHnuuBaCAQAAAGgrr3N/XSGaN8wOkPRXTZ4/KSYbKgNrjMY8JsSomDOGc5JsVY1x5ab5hBdwtcUrSmNqjHn+glPHpLxJHydGEC4yJwhXEIPVyCtm8zmzuGvNqhOeYjTyj8h4dxEqCYX68NWoMM5VhaSQjXx+bH9jRef0qTX1M+FUsdFAu6nYEFPKK2ZadXkHJtIjFjKi/anoPXUPQzYDAAAAAJhwqU8zTy0NiZnE5NfHpWTTSk5++k+KmV96vNYU5+PSDQwpi5hkIkXmdC/Ts6X2RA4InK+oj9qMyteHr8bs8oq5gcqQlLmB81MjdKmsKcY4F/SJO1CbgFMMobqI2VQ/h5v1trIDFchj8r2n7uGVcVDNAAAAAAASHbjknPnyD5YUnsORK1YFyI2mquPzAwM0QvzDmUMtM7zqdB2wBIiT1B6vpH8r6WwkvM0St+u0GgAAAACg3XGnaPafFEMEXwdmygxNziPHTYc4A2+44E18NNk4V4rMOw0ESt4FViOznEmM2bfkSehIXkLWHN1AAtmhDUf51xNN1VCEsGyp1M6LS6nZVLnCJSLU/QheFoZy3YpiWvVJ2h0ofzuT7xDFeaG9p9HDENAAAAAAACbcamn2j1u5KTGAe9OVuRYwGRa6ISJgAzNqxuUZVgkvwQrHwk0hzOwZF15x1EpkU87zzd0zwuduWhsgvV07fxP3t3KtTrdBSl17XBnC8isNCBBr2jkVs5lPMwfvmBFuCNUFJNJqKzowgLfHyzqE9VWg+Xnhe89f3cMAAAAAAECizaKZyq08yyH8MmKmY6aX9My3NUOsRlbmbPlIbTEhMSuNimoqQyzn1zmwVj/WOXwk814ST4Q6qUZu6tPRIdBqQLEDAAAAoNOBz2gDAAAAAABggx4gmq3bwgEAAAAAALCFY6K5sbHRTfUACrp9V6OBAAAAAOhCOCaaBw0a5KZ6ADlUb3XvrkYDHc3NVVkBAAAAwDl6gHsGAAAAAAAAbQOiGQAAAAAAABtANAMAAAAAAGADV4hm9g252fxnN9rhW8yy0nrSp5/lzeaw3XbuK+Ir8+KsfarFnjjtSsUqXXlUjzmrAAAAAOgqtF00V6xiH6A2sq/oMWG3qsK64mmbShM+d23kv9lHBZZuVWfQze0jPdmn+jqPunU50rQgy9DRVQEAAAAAUNBm0Vx7vHJ+zFxeyrHvzLW5RlYL+7iUbFopCUfpS3igG8B/pZBZmju6JgAAAAAAStr+Ge1JMSRgRbHJBkpVTwQRzL90e21gzUqygjchzt9kiCmdvWED2UA4o6nJ5YAzopLixBVHQ0lq6gY+ZsTsDebWVaaZY1aqba2mfDifhVoL+Uz6WAo3eTdopCUxobNnpxJTJI16yuPUBK41NYqIcd1tF2b9XGnqxlBWVRbGVYqreYDYOZIVXNqWO3vM37SSqNrYfQ3aAAAAAABO0Hb3DP+4vBqSGKCbTQS9NXfT/IDyipTwcFJRnpqVbKzZqKOKzsj0aED5yJpN8wmv4WqLV8j8OlYUT6LabUNlYI3RuJLGXEv4jRUf18ZZl3A0n9lcAaJ7yFwL+UwSw/MkR5IArbSzj9IQo1CrWqq1Neopj/Px3JVSoypWzZYau9GGp4qjbJgdYHJqpqrYaFilW1HM5iGhgt5nsxWjMFtJpEds9hg3reFDzNsI2QwAAAAAIMMlq2fwD9Y5BcbZnJOzdEw1E6qZo4wk4Pj81AhdKhPUxjiqyYREtR+XbmCImcyPSY6hfyYx3UZMGzbhXTY4ceo/KWZ+6fFaQizmw+/yMWeXV8wN1Eq7aW64ef4a9TSPYyIgUN5Y16I2AacYQnURs6l+DjfrB85xhc0MSjXzkcek9SVabVxpY6YCAAAAANCjcOmSc+FRWRvKa/LYvxHlFVGkctPcFBrMS2r21p6O+TLIEpivAGFJ5EkwVxDblmd7mR8YYG9U++vpb9ZYd7+jWHu8kv6tpFo/vM1d0oNWIgEAAAAAcJS2imbmhnA0WZBbFeWp8wNrCKeeIyIi5m+q8ZcWvMiLS6nZVLniuCSaBWMvc+MQcjHT05ooHKh59+kaGsZ7QjCDaWhyHjluMYMNR6mm9ydiTP8A22kdqqeisa4Qs5YRvCwM5bx9f5LUFsGZnHfP8B8Zys1kWEVqjm4ggSv9J5m1mrmJq9oIAQ0AAAAAIKOtotk/Ls/ArKr8XpbByMtZqprJ/EDOFcI/buWm0oAAFoP5F4RT4RYRsIHZNWVJuSOk2FIp8uIkB2oiWUdXbqJBUgGk1rJonl+5VqfbIMUkJM52Wn/b9WTCVGiUWWNdq5jNfJo5eMeMcEOoLiCRFic7FexMBPAW8fC5m9YGCNWfP58E8qdEbPX8+dptBAAAAAAAJlzgnsEWfktRhPGvAAqaUXR5FvZk0RVJ4/LyxASKDRnmuWkFqZPzG8ydOmal0TxLS2nNti3UUxbHFEFdPZeg0WwJaek9f+162uwxMRPlaewAaDWg2AEAAADQ6XDDZ7S5dc/mb6rpBAoMAAAAAAAAF+AG0dxJTJZqtOzWAAAAAAAA2MQx0dzY2OimegAF3b6r0UAAAAAAdCEcE82DBg1yUz2AHKq3undXo4GO5uaqrAAAAADgHG5wzwAAAAAAAKB7AdEMAAAAAACADSCaAQAAAAAAsEHbRXPFKl15lOkDcopdLWqLE1eQlXmu+Rh2T4F9qG+2/Nsmtj97bU8/d7pzYcf4AQAAAABodzqTpbnTCbhOBvtUXzfuHGlakGXo6KoAAAAAACjoTKIZ9Gj4rxQyS3NH1wQAAAAAQIl7RDOzGR8NJampvOGQf9oudzCYv2ml8OlAIUWWoSZw7ewNG8gGwtlTTZEF+6oU0M3trXbDeq/S1FehrJdNPco6PYDbktvvpW3VuSCqDgcAAAAAABJuszRvqAysMRrzODG2qoIquOIVTNgZwzm5t5ZFMX06kIm5j+eu3DSf8PKutnhFaUyNMc+fP1Q8KW/kRj41y25jRc/0ed0wO8Dk1ExVsdGwSrei2BBTyitm2jURhO9h1sWJ9IiFjGpV50Ld4ZDNAAAAAAAm3Caa58dM4mSX/6SY+bPLK+YGlpJNK3mpGxA4n4+jtncK4R+XbmCY8lq5MnB+aoQulVlBjXHuqnMnR20CTjGE6iJmU/0cznWa1MNsPsLmK6Wa+chj8udCo8PjoJoBAAAAACTaLpqp7Ko8XkvCeY1Ve7xyfuBcRZT5gQEaCStWBcitm4qjqsUhmMMrM4zqdLbXjegp0N6mf2Xd3wbQqwAAAAAAFmm7aPYfGbqhvCaP8Kqt5uiG0Kg8cpxsOMqHMSNmaHKef0AMEfwqWAiJ4ezKoSOlVCTQZGkWrNMp4eG8Nfpock3gWqaw8+JSajZVrnCJSOz6CF4WhnLdimLaNZOkHua9LgJ59wz5+eH72X+S8lyoOxwCGgAAAABAhgvcM8JTao4n6nT8s33mQkC12HEyv3ItH8aHEBK3clNigE7HQuZz7hnhczet5QP4hJy8iwjYwEyecXkGZlOWcvQnKzeVBgTohP2eqZjNfJo5eMeMcEOoLiCRdoup09iRuADePUPWz6znA9k6Fcpz4a/s8PZrFQAAAABAF8AlPs38YmGKwJiVxrw867FUAdKbgfK3BK2U0YOw1n7WV3wk806LE06AOqlGbsoO7yBoNaDYAQAAANDpwDrNAAAAAAAA2MA9otk/Lq8HG4UBAAAAAEA3wzHR3NjY6KZ6AAXdvqvRQAAAAAB0IRwTzYMGDXJTPYAcqre6d1ejgY7m5qqsAAAAAOAc8GkGAAAAAADABhDNAAAAAAAA2ACiGQAAAAAAABtANAMAAAAAAGADiGYAAAAAAABsANEMAAAAAACADSCaAQAAAAAAsAFEMwAAAAAAADaAaAYAAAAAAMAGEM0AAAAAAADYAKIZAAAAAAAAG0A0AwAAAAAAYAOIZgAAAAAAAGwA0QwAAAAAAIANIJoBAAAAAACwgWOiubGx0U31AAq6fVejgQAAAADoQjgmmgcNGuSmegA5VG91765GAx3NzVVZAQAAAMA54J4BAAAAAACADSCaAQAAAAAAsAFEMwAAAAAAADaAaAYAAAAAAMAGEM0AAAAAAADYAKIZAAAAAAAAG0A0AwAAAAAAYAOIZgAAAAAAAGwA0QwAAAAAAIANIJoBAAAAAACwAUQzAAAAAAAANoBoBgAAAAAAwAYQzQAAAAAAANgAohkAAAAAAAAbQDQDAAAAAABgA8dEc2Njo5vqARR0+65GAwEAAADQhXBMNA8aNMhN9QByqN7q3l2NBjqam6uyAgAAAIBzwD0DAAAAAAAAG0A0AwAAAAAAYAOIZgAAAAAAAGwA0QwAAAAAAIANIJoBAAAAAACwAUQzAAAAAAAANoBoBgAAAAAAwAYQzQAAAAAAANgAohkAAAAAAAAbQDQDAAAAAABgA4hmAAAAAAAAbADRDAAAAAAAgA0gmgEAAAAAALABRDMAAAAAAAA2gGgGAAAAAADABo6J5sbGRjfVAyjo9l2NBgIAAACgC+GYaB40aJCb6gHkUL3VvbsaDXQ0N1dlBQAAAADngHsGAAAAAAAANoBoBgAAAAAAwAYQzQAAAAAAANgAohkAAAAAAAAbQDQDAAAAAABgA4hmAAAAAAAAbADRDAAAAAAAgA0gmgEAAAAAALABRDMAAAAAAAA2gGgGAAAAAADABhDNAAAAAAAA2ACiGQAAAAAAABtANAMAAAAAAGADiGYAAAAAAABsANEMAAAAAACADRwTzY2NjW6qB1DQ7bsaDQQAAABAF8Ix0Txo0CA31QPIoXqre3c1Guhobq7KCgAAAADOAfcMAAAAAAAAbADRDAAAAAAAgA0gmgEAAAAAALABRDMAAAAAAAA2gGgGAAAAAADABhDNAAAAAAAA2ACiGQAAAAAAABtANAMAAAAAAGADiGYAAAAAAABsANEMAAAAAACADSCaAQAAAAAAsAFEMwAAAAAAADaAaAYAAAAAAMAGEM0AAAAAAADYAKIZAAAAAAAAGzgmmhsbG91UD6Cg23c1GggAAACALoRjonnQoEFuqgeQQ/VW9+5qNNDR3FyVFQAAAACcA+4ZAAAAAAAA2ACiGQAAAAAAABtANAMAAAAAAGADiGYAAAAAAABsANEMAAAAAACADSCaAQAAAAAAsAFEMwAAAAAAADaAaAYAAAAAAMAG+CJgJ6XbdzUaCAAAAIAuhAOieW12rtuqAQAAAAAAQOfFXtGcvHiBO6sBAAAAAABA5wU+zQAAAAAAANgAohkAAAAAAAAbQDQDAAAAAABgA4uiub6+vj3rAQAAAAAAQKdFWzQPGTKknesBAAAAAABApwXuGQAAAAAAANgAohkAAAAAAAAbQDQDAAAAAABgA4hmAAAAAAAAbADRDAAAAAAAgA0gmgEAAAAAALCB46K57p2k4IQicS8+/0jOTD8WmE4y2BYAAAAAAADdDacszYJS5qByOYlkZIjbLpTOUm7qDZfkDwAAAAAAgH202T3Db2ZODhO4rqiMfWUBAAAAAADQvrRZNPPWX2ZpPlaUnl5URIoIZ4c2eXFwdmlCox27gdAYGeUNyePEpHwUk4+HKUkGSU/gcqN5i9nSLa4s+jf6hoSEdBZVyE7uNCIWaJY5AAAAAAAAzqItmuvr69WBpm9rFyUEC/o0o/zIKPH4qPiM/C8I7z5R9056WfSRhhw/XlW/M5Gq6qIvRh1paDCZig8WJdxQ3tAwjundooMN8SfNkuzPyMiP53OrGyVkK9mzixKO0ZQNQuZ1ORP3p/N5CSJelbkg0zXbBUAXBZ+7BwAAANoNi5Zma/djc59mjQh1+8uKGFKC6Iei6Z+JZgbfgFHx6VG+6Syzhpk0n/XqJJYrED/OvDiSnyEPUWRuT6MA6FJgBggAAAC0J+5bcs7khsGoe6dMGcFvZg4zPB9c6+vry1usbSaxH/PM5dkCAAAAAADgIO4RzX4To+MTPjiYPE7wNj72kMmLQ4SFl0UfyZmZfCT/i/STJN52EivFEZkThjrzOjIOXs0AAAAAAMBZXCqa/YbfUBQVzL3qNzOnnBl5WShzkRhHVF4cfjMz8suCg32FGH5+RJHE76CY223ChkUZzfJKCubTstQZysxd2UoAAAAAANDTcFw0K9Z9E3f5v8kNDcnCgXGybYrGanGCC4UJRRLT7jhxQ16WWWWkvA6u9f1guB9XoHnmAAAAAAAAOEn3+Iw2VcpR6cJ2fP6RZKuRAQAAAAAAcIzuIZoVJmoAAAAAAABcSfcQzQAAAAAAALgRiGYAAAAAAABsANEMAAAAAACADbqGaH7uuec6ugo9juXLl3dIuTt27OiQcrsKd955Z0dXAQAAAOiJdA3RTPnb3/7W0VXoQTzxxBMdWHpEREQHlt6ZMRgMHV0FAAAAoIfSZUQzAAAAAAAAHQVEMwAAAAAAADaAaAYAAAAAAMAGTonmurLFwVtmHMmO9hN39UQv7rUHFat0EYeLa3Jj/c3Da0sWpJFMVbDFcOAIh9b6Tkk3D8rY1ZAc1iGVAQAAAABoT5y2NBfO05tkcztTUZ6alZVVuq82FjK4HQkTvrtIxfOe29tHLJ/Z+mgmSXt++lCXxLQ/NwAAAAAAc5wVzXMKCkLmFR3qEDtj7YnDWVG5UWQBVDMAAAAAAGgPnPdpnhBfsEVfViczNssf37Pn9v5li/VHQ0h6eiHV2LtmbJkyj21w5mnm4EH3CBEDHLBf1u4rHRuVSwJOkHWCaq4tWRAQl8cfTSzOJPKQLIMxJZxtVG9coEvNk4WY4iRqeHoAO2BnnAgeGnQ7h2SQKsKfcZPrRlvOdU/i888/v/HGG+0JBAAAAED704YXAf2ik0J8mbFZlJvi43vey7msTk9IYVXgkYYGPZVNOYTf0B+oi55wQL9lxpGGbD8h5gQmpWjqMHuKFTQzIZExJI2pZlKSFjfWYDSGc77O61gUKYQJ41UVxrmE5KUSGpIrhqQElKSVxtQYc3nNnVYSCdnsOGHxBXOC9xxKDgsjh/akZyQdCcwJ3sLOeDYnldeywVHWhnMtwLlVTAtOSvo72/tz2fGkUPpvZc7IaC6ACxlmiik4YEjbdCMiaROf1eycNP6QEDI7x9Ap3DV+/vnn/Pz8qVOnTps2TQrctm3b9u3bn3rqqf79+3dg3QAAAABA2rh6Rljyrj2LOXHMY7IpMqsiC54zYwJTS7INFu3AlkKGmGzODH203c7RVDPnpeZRCcyRGJMZSUpJcSZnTCYBQYl8FDHEPzImsfRELYtZPFcKiSuvmBtUmscQs6UZwdXDcejEKcOXqWZCNfPtDeSkcKLpkQkz5szbcyg+sA3nWsampONlx48f56Xw1jPPh1c8Gk1oiKCeH91aNs1CyjNbM5OC+Zg04r/5kG3TDMefHyrkFt4JZDOVxVQcP/3003Sb181QzAAAAECnoo1LzoXFz8jRF4UQEsieuQfLbYrWEzq77AKzM/NWZcKbiPfVxDicSWJQAPtH8twAzhN2e8aUPYduJ1UF8cmEimY5cwK5aYgrltiYnRMXKts9U7GN5KQJIaFJx5+n8nebZkJ5zGEjZ/MhmxhS1tPSpne8ajbXzRQoZgAAAKBT0dZ1mjkfjSnpvF2ZhAznjYi1RwtJoN5iGt4IyR7qc8bpo0l2iypmRA7KFPf8mYfGiRExJGJjBdO/zApNYjJZcIApZOzSXHKC5FXX5BJ/Iob4B3AG55TwcN65uXopBLRzMNU8ZcqcgiP8k4TCo7XZxI9/nBCSlO3n7/S5dieii0cnQ66boZgBAACATkXbP27C/FrTt/AbOcG+vkLwnALLSfyis3et9eWjspfDwtiGXS+HbYwjMTUmLwpOHpePqCkuDdDp6H5iYiIXHJtZvEAIKa7Jpdr5BCGpETrOp4MPISQ217BKx8WRgoAzUNVM5gROEHwu5lTl+PoybwzxxDp9rq0xNHwaiSiulJyb/z2Sd88YenXwpr2nnifMcHzq+CYyMk0Wk5mYyTQWMjtpb2VSaCjv3Hz8951JQPO6md/o6LoAAAAAwIRTopmK3myzvYZobotuNGTLIwrRpPimhKaXBkXsejksxZhrtu8fm2tk/+YazQ+wcFmIYlcgPMVoTLFZJFCiOFPcK4ANkp/yDH1DdrYyvjPn2ipDpz9fljNy5Ehu589lx6cP490zQuNy/h3BB8+ePZuMZDHTch7lg1iIIi17EbDzKGYeyGUAAACgE4LPaIM2wK0yOKfgSLLtqE5B9e3z7F/+rzyEc2U+nmSKKoZPf/748eeJnKHqIEVaAAAAAAAbQDSDNqAwIps/ggAAAAAA6DZANAMAAAAAAGADiGYAAAAAAABs0GVE8xNPPNHRVQAAAAAAAD2UriGaly9f3tFVAO2HwWDo6CoAAAAAAJjRNUQz6DnceeedHV0FAAAAAAAlEM0AAAAAAADYAKIZAAAAAAAAG1gUzfX19e1ZDwAAAAAAADot2qJ5yJAh7VwPAAAAAAAAOi1wzwAAAAAAAMAGEM0AAAAAAADYAKIZAAAAAAAAG0A0AwAAAAAAYAOIZgAAAAAAAGwA0QwAAAAAAIANIJoBAAAAAACwAUQzAAAAAAAANoBoBgAAAAAAwAYQzQAAAAAAANjAPtFc905ScEKRuBeffyRnph8LTCcZbKsd6ZBCexjys51R3pA8zvH07XCOMBIAAAAA0I7YbWkWlDIH1StJJCND3O4o6ZxB0vmioZ9cB1PMZdFHGnK4zjy41td3rRO6mbTXOVKU4trMAQAAAABEnHLP8JuZk8P0iqsr42wF+F3gAur2l5H8DEl9jktuaHAyp/Y5Rx0+FAEAAACOhQsXdnQVAHn11Vfdl7lTolk07xFyrCg9vaiIFBHODm16rs/ZpQmNduwGQmPIH/IfXOsblc5tCaGmVFwAl3n0DQkJ6ZpxWN4ZdULOQtFyc6atrKQoctM5EGCaOTpD3Svte460yhVPl/VStPNXD0IAAADA9bhVsQGbuHveYhLN9fX16sNDhgwRtooSgiU31yOjxOOj4jPyvyD8k/G6d9LF5/pMqbwzkarqoi9GHWloMJkY6YEoUt7QwMQLVc9J7zAxlXADF8LUztqDDfGsrGM0pEHIpy5n4n4xDku0XlW0YGikFbCZ1fAiPgqLUXRQVFGabe9mmE6lzXOtxJ6OdeE5kqYyqhFlsxTt/M0GYXc915ZPHwAAAABcgJml2dp919ynWSNC3f6yIoaUIPqhaPpnop95HJKfIZj7xiVTIUOljRjiNzE6vuxkHVdW/DgLqQJGxVuqoSyaxaxY+vQo33TWmoaZdjW8W6BWig402Z6OdeU5kkVWjihioxTt/M0GYbc81911JgAAAAB0Hly75Jz5E/C6d8pcmrsr8JuZw4yO7AU3XzyvV0GVJknfXzez0/itdP4RBQAAAIAegetEM7PsJXxwMHmc4N567CGTF4csDpG8Itjz9VFHMqQQZli84aEcctJKKhaHRGdYqoDNrIS1IXJmJh/J/yL9ZB0Z11nUYSeB68T0d8SnCswBnZQfaddzJI+sGFEN8TZKcSh/AAAAAAC7abNo9ht+Q1FUMPeW1cyccmbAZaHM/WEcUXtx+MniMCsik2YZ+UnBXAifqE6tcvxmmuLEmx7KS0UL6lwezUJWLEpZcLAYBYpZBT1DRwjtxQR+V7D0tuc5MquLYkSRcdZLoYPQgfwBAAAAAOzFPtGsWC9M3OX/Jjc0JAsHxsm2KZqrjCniSB4TWmVJ24o4qqK1o2lmpcwJKFF1drufIxO2Rot6EFrJHwAAAOgW1JYsCIjL47ezDMaUcK0YaSQzN9bfnrzsjOko7su5g8BntAEAAAAAugxMMZfG1BhzOTFasUqnW6Wpm4GrgWgGAAAAAOgq1O4rJcWZkvk2PMVo7ND69CAgmgEAAAAAughMM8dkqj0eTB4b5v4ainDmMlE9lqSm5qncOkwxE4trOKcKuRcIH6aIQ5gDRszYuLhUWcHmqTJd3QEdCEQzAAAAAECXprYkLW6swWgM5yTrqgrjXMvheYeDaozGXHUOos8HE9YlkbmR+8S0vHeyRhyqiPPiqmkcoxBSK09VsUq3rp37wb1ANAMAAAAAdGV4lw3ObuwfGZNYeqLWSnhiTKSGoXpfaR5D3E+MWUqktJbjxJDE4rmKOFKqgKBEl7WwUwDRDAAAAADQRaDil6Ttq411w5oUSr+OUifjdFsgmgEAAAAAugpMNQekldQIS7lVrNJFEEMNDdtYwfQsMwePXZpLTkhxNcI1c02MK69ICReckquXGudKaS3GqQnSrJ2pRBIDn2YAAAAAANAB+Mfm1pAFAbo4flew/WYW0yAd4d/Qo4r1hBBXO1wzV8MqHRdTiErCpbSEf6VPHadEIx9TiYlwzwBdA29v76ampo6uBQAAAABcDFWvylf5FEF0N9dquEYIW70uRTPPilW68hH+GnFkuVkqsRsB0dxtaW5u7ugqAAAAAKCLwhw/UoXtxOKaFKuRewQQzd0WKpo9PT2dSVlXtjh4XqG4N6fgSHa0HwvUEz3bAgAAAEC3R2V47vFANHdbnBfNRFLKHFQuLyZ6vbhtv3S2PzIUOQAAAAA6N+4VzYfW+k4huxqSwywczAk8ohBKmoEuq0u6uJNhqVLdCCqafXx8XJCRX3R2NtO1LsgKAAAAAKBr4oxo9vX1bWhosB2vriynKiOD5JTVdRITomg+Zfp57e3dXTa3tLS4JiPeDKynW0eL9OmFhaSQcB1p8uLgOpbQaEdDSHp6IT8lqSvTz7MUeXiR75QqRbgY0zWVBgAAANqbCvo/0H1xo6W57sAWMkMfT+XWgbroTqWFwm6nUv5kHQnrTJVyOW16EbBwXrDg1Jyx60igGBoYry+oIrwfBdXEW2Ycacj241V12QQ9TVUVeKShIZuP7BetL5hjIbI+u2HXWl992a4ZW+aF7Gpo8Id7BgAAAAA6Ne4Tzbxm9vMjM4hcNYuWxTkFBSGmuFqB7uPQnvQ5M474mRUtumxw/iFUy01hgTQo/qRw3OTlKzOOcmnY/tEk0XAtOZgoc25v2iSazX2aNSLQ01vIkBLMSJpB/0zQlL3qyPro6ORdIb5T5tG+CaMRnK8pAAAAAEA74DbRLGhmujVBppoPrQ3mLIthnPIkpIBYCnQHovmUCrXsMCIULVpAD61dzPxIuGg5M5jBlHlx+FYVcLZTtl2UxKtqsbZcdReXUXWZlOG751ByGMuTCvKMpAY/jZzb24rq/iXnzCcDdWVb7I/M4p+son+rur3FHwAAAADdAXtFs6+vr+auJedmk2YmflQ1Bxcd4txcT1bNKdCHcaFUaZIcLqpWoONVkrDsby263gaLCpfptsJ00RGBZNyezUfTcwqXeXHMCeRtp5JHB6FJMpK42nLVnbenNpsdncLneWhPVUF8smbO3Us007M6Z57Qj7yp3eTFYUfkhviTejb32LXHV0+nHRPcWFMAAAAAgLZjr2iWK1E7XgQ8VMS9A1ZoCgkRdGqHw1xtF+tNpl+FBfSQU5mGxRfk0Dz1JKdKmCqoc25vXPYioBy/4SGFU4K5V/2is3etFSYubDYSRlReHBYj65nPSwjnmBG2K8Q3eHFBQQh7DNATFjUBAAAAQJfEPe4ZzGlYvhJCnWjdZSqK93KoK8tJ5z0x/LQC7cCuFTy08ItOCuHsm9G0aDIvpyzeAd8JLolkNM1hvhhcMHNCKSoiIUnZflI0x3J2Nc5bmvk15lS7/N/khoZk4UCYbJtinkoZwTxytnTyWDj71ywrAAAAoKdRla9LIAZDQrgYUFuuDzgZb0yw/rpX1aqIhFSyTJ7QEjTDNLIkN2qIC2rrSLndBbeIZvmLdhymx/PJuzJ8p/imc+/8ZRDeCVYz0K2ExReQYE42Jx8pWBwc7MsHM0On7bRcErmFlYOp5nnMemoWTZ5zmOvqbxf4jDYAAADQdQi5pzj6xRP1JFzQtPX7dpPiJRYVs6CAhxlSl+VTYU13F7hMEFsuLmqI0+W6VLJ3CM6IZpsm3rDkBoXN0S86u0E6JinThmhiJdDFmFWK1Sda2jKrrSxamPa2KokpVBWgitZ+QDQDAAAAXYghkZNJWmV9LC8r6ytLyeRMywrTP0qfy5RodeLwe6TddqCjyu0E4DPa3RaIZgAAAKAr4R86mbxYWRsV5U9VaeVuMnmJP++kkcq9NhSdVaOPIuX6tJNBZM2aPEISo6Pzyuihsrxl+TXDiyRLsDy+WQ40SdYSsyKZT8gabktwtLBSHC2IZG3NJC+m7SbqclVZ8f4bRAjZOnxdalkel4NmJbsCEM3dFkdF83PPPeemmgDXsnz58o6uAgAAAHcwJDSGvLivPip2CPPNiFkyhNSXp+2eXGPQ89o3rTw0k5C86uE1BkMm5+1QM5mIWpnLQRU/N7QyLTXIYDBQQVyRH7FOXlx9+QLmRc0OMcmrL69ZQqwXJxQ0WaNcZVb6qBSDIYU7yLKqvCczK5rw8lpdya7hswHR3G1xwtL8t7/9zR01AS7kiSee6OgqAAAAcBeih0ao4JtRW747r6wsT1qfKnry0skkcXIok5ta6WsrVfHJbpK1hH9XL2B4tCKydIiEJBj1TMI6VJyVrIhlC7e6kplRXcLYDNHcbYF7BgAAANDF4D00Kojom0GDuPftpAhURtvIwtH4rk0uUZUfIDcnWy2liwDR3G1xyzrNAAAAAHAjnIfGOt43g9PQiamGioSQcHEFuprh1lKr4xvvmUymv1vBnIzr9+0uo1pcHlk8xPlUFA2vWeJYcdayiickaBhvP645WUaGm5WrrGTXENAQzd0WWJoBAACALgfz0IjbLa6bMSQqNz9fFxHBttk7cyGk3HpqVXwSkpmlD+BCEqOjLUZmb+8xHwlLxfkPC8pLmM69+WerXCGr+uKi6boI4XhilikHY4K6kl0CiObuiYeHx1133dWmLCpW6SIOF9fkxircjGpLFqSRTFWwxXAAAAAA2I9/lN4YJdsPSTAaEky74hJv4lpvil1VfD5Dg167MFVkS8XJwu0sd0is3mA0K1YWQV1uF8CaaKbCq93qAVxLa2trG3OoKE/Nysoq3VcbCxkMAAAAgB6Ptmhem53bvtUAbiF58QJnk9aeOJwVlRtFFkA1AwAAAABYtjQ/uWJZe9YDuJxnVq5xPnHtvtKxUbkk4ARZJ6jm2pIFAXF5/NHE4kwiD8kyGFO4dWaqNy7QpebJQkxxEjU8PQAAAAAAugjW3DMiXmm3agBrGBaRxsZGh5IMGjSoLSUKmpmQyBiSxlQzKUmLG2swGsM5X2e2NHqtFMKE8aoK41xC8lIJDckVQ1ICStJKY2qMubzmTiuJhGwGAAAAQNcELwICNVQz56Xm5Qkfv0yMyYwkpaQ4U1gaPSiRjyKG+EfGJJaeYEtJJhbPlULiyivmBpXmMcRsaUZw9QAAANBt+fnb8I6uAnAjdovmYGKYTMpKiP6MefhQsuUO8tci8jGxLxx0fpidmbcqE95EvK8mxuFMEoMC2D+S5wYAAAAAQBfGXtGcOIocOkEmBBFyxnZk0KVhRuSgTHHPn3lonBgRQyI2VjD9y6zQJCaTBQeYQsYuzSUnSF51TS7xJ2KIfwBncE4JD+edm6uXQkADAAAAoGtir2geNYh8UERuiyeT9sF43M3ZGEdiakxeFJw8Lh9RU1waoNPR/cTERC44NrN4gRBSXJNLtfMJQlIjdJxPBx9CSGyuYZWOiyMFAQAAAAB0QewTzUPJhEaip9KZkLuHko/PcN4XscSPP9ooxJFC1r1CeD/WP8STdYNkIbI4Gp4eoHOQYsw12/ePzTWyf3ON5gdYuCxEsSsQnmI0pri+jgAAAAAA7YpdonlSEKk9xjbeO07+wnlo6O8gtbvJjCOcr3MYOySFTIok66aTvApCqFzeTSKkkK0szgFeK3Mez5Pg8dw2Dh48OG7cuI6uBQAAAABA98cu0Xz3SBJ2I3sRkNFIJlWTCYT89Qi3e5bUEc4ULYZ8XE3qqCDmYr4mhcSSRBpnEPGLJdJ3zwWjNXAKqpgJdDMAAADQVal4fVT5uGMpwdq7beLIK7qkTPLQZuP9obainilZuZIsXB17ZTuX2wWxQzRzvhkRRcKePp7cfYXj5TSSr7l/Jc8N0BZ4xSxtQzcDAAAAQFTAIw5mZuVQ/U13H3OZILZcXOyVTpfrUsnubmyL5klBhDSYdpmHxmBygJA/BJOPj7CjzEf5jHlII+d3MYiMIWxDCKFxGsltwSTviODc/AYEtFNIiplqZdibAQAAACAwNHbFaqZEv40LmirtduNy2xfbovkPNzJHZImPqwmJJcdKyIRYzmGjkXPPIES/k+lgPmRpEZPFlKWLyFIihtA4ReSfiwQ3j7ISKOY2watkSTe7hCeeeMJVWQEAAADAYTjL6y3BcU9yS78yP4dhJSsnlt6yP/e2odxRfpvQjbitLEriM/zuyuprSer6YkLiEqcX59FDW4uzcvYHlUiWYHl8ISs+hCYpXmhWiYrXR0WsJ2IFQuWRVcXRgkjxphXk1ZWlRF2uKivef4MIITVX58ZtLeZy0KxkJ8O2aH5Q8THtM2QGF5JnIVx711JuwCnkdmVX6ebly5e3PRMAAAAAtIniuO83G3cd4wV0yQ+rY2PT4ko+zbztbv8fPi3dmrZ0xdDaDx6j0tm4YqgQ5/oVNNXhq/cbd63gvB32xxBRK3M51n6w0jz+6sgvV8ZdS0uhgrhy1ZRcefE08wjCH2KSd8EH+zPJSqvFCQXFaJSrzCr3tkXGXYu4gyyrfVNXFE8nvLxWV7LT+WzgM9pdD7UnBnwzAAAAgG5CXPFU87fogmOLycp9P9wd+eU28syKcKopPyrO21osPbBPvGVBDImLuX6ohS/Qndmnik8+IsUL+VKGBU1XRJYOkfD7j+UyCetQcVayIpYt3OpKrojtbMZma6LZsKjdqgEAAAAA0KMIuDru8OkzJJiXhmdOCA7BaoZG3kLSvqykSjdmoSBVufftpAhURtsoy9H4rk0uUfH6RLk52WopnQ9YmgEAAAAA2h//q4LzDp7K5V8DI6eqtwZHrSAnNGNeP43MnhU3fX0N81igGjou7mBlSrDgbVwduz/IWjnq+Mfm3kICtlcyJ2Pm8kG1uDyyeIjzqVh39f5Mx4qzltVSQsZeJbWXBJmVq6xkpxPQEM0AAAAAAB1A8KKa04/ppnCv05G44k2rw8kZTdFMrhwfM52QW8b7c3v+t602vD5KN4Vts3fmgkmJZioRdXwSvKJ45UQuJC5xusXI7O095iNhqbihI64tjpjNvflnq1whqx/Wr5s9Siccjys25XAsRV3JzgZEMwAAAABAh0BlpXGXfHU2+WJtiu1jsbJ44fcfM95v2hVjikkUu6r4fIbGFdq1UkW2VJws3M5yr7w7dxfv3Cwii6Aut3MB0Qw0qCtbHDyvkN/O2NWQHNahtXEttG16os+O9nNTfAAAAAB0RyCagRKmmLfMONKQzcnEQ2t9fde6STe3px6F9gUAAABAG4BoBgrqDmwhBXpJXIYlNzS4qyi/6Oxsd+UNAAAAAOBCIJqBOUwzz9Cr7bEmjw3OX4MZbo+GkPT0QjKnYNeMLVPmsY0j2RMOSOGSZ8ehtb5T0oVsWJC/KS2XJpqIeXN7flplkRkh8+alE6JwF7FUDbNMaICe6OcVFpJCwjYpB9b6muWmKJGYe6jMKdC7tI8BAAAA0OWAaAb2UFemnxeyq6EhjBOTaw81xBNSWBV4pKFBT/dzCL+hP1A3QQzPFmMmhzFjdbKQzWJ9WZ1elpZuk0NFfN4sQRHN+qRGWfOO0pAGMQe5l4VmNaInHNCLLiYsyQG9vmAO4dwz6spUudHI5iVSXS+GMMmf0/4dDgAAoOtxre54R1cBuBGIZmAHvMtGGNv0mzBjzpaTdXRrzowJTJLKNnj4XT7mvD2HqGhWW23NkvgHzkmf4pvOLMQN0VS35miUVRAfZqFumtWgFS5kmCIlzZAlMc9N3bq6k1IIq52j3QUAAACAbgdEMzCHykbCTLWueWNuTqA/ObQ2WG701SgyOptZptkrh74Zu44EuqJgolz2o65si4vyBQAAAEAPBKIZKGCqOVhfdkRwgWAOyWTXERpWxFwtOBtuSFI2OWkxg8KjtdnEj0gxKSHDeQlee7SQBOoV8YXVOrKjk48UVOlPkngHyrLSCMHKzed/NMmKFudabFain79ZCJmhrDMAAAAAehgQzUCJX3T2EbI42HcevysYbPUFNMiX8C/rUS1pWcjOqcrx9S2UYhISX5DDJ+WOFqjL0xdsCQ4W8/bzc6Asa43YxSzXRMzF71BI4ZTgQk1LNquBWYmEyELmwD0DAAAAABDNQAPBYcJKkLRanGKjroyQGfoGs6Xk1Lkp0yoiWCqLqFaps1QNhun9Q8WuRm7qKmp0AQAAAAB6LhDNAAAAAACdgNNbH5v40Ka0d75NCjXtk/X7V0+/qoNr1gZoI54ljz9OnqV/u3RDIJqBi8H3SgAAAACnmT179tffnyahTFye/nT7Jhoi6k7ritOeOE5gZ7ZuKr2TAdEMAAAAANBJmDp1zPZPT09n8rPuOElLm/01IVdNX73aVjp74jiBm7LtmkA0A4EdO3Z0dBWAXdx5550dXQUAAADuYvzNY57lVHPl3q+n3jx1+9cmOy7h3DdonNmcy8Zp+e74TyUviKljHnook2UlOHpI8aSU/LbcPCxzojBL7mchPJTISn9n6vaHNm0imzhPkrqca2dmCm3hcjBvnqkyXFVok549PoZkZsq8UjotEM3AREREREdXAdjAYDB0dBUAAAC4E7+RJJeq5qupZo6NJdtNBypLHhrzzrffhjLdWVL57c175bv7RwqxNj10nIZ+y+vgraepmn6WjycoYxsokj9uIXz11bLK7L16//rZRNDfVyV9+20Sl0SRAx/07Pap+79dfZVwdDw9uunrkfu//bYr2LMhmgEAAAAAOg1XjZ9KSuoqj2eOuTmJfC874DdydubMazOZhfbb6VR1fi/fPb1ViDV7fazcYHv60+1k/eP2m3AVyS2Gm1dGKp0oDdvmmvnT7ZsYUqZTF0ylf8Z3EVdoiGYAAAAAgM4DVc1fP5tL0hYkETPRfNX01cwiW5lz7bXXMmcGs13J0txelbRQemXORLktWZ3Q3A3j9Nbt6iidFYhmAAAAAIBOBLM1P3T85tVUU8pCmQWX6tHV05P2r//62e8rt+bOlO3WWRDNLC/mzKHhL3zV1WM27a1bTZidt+74JjLycXVySygqY1b6mKt5y7E6T1qZ2Q/trUwKFTytjy9ob63fJiCaAQAAAAA6E8yMqxH4+PrtEydeS/h36EKvGi/f9fvUgsmWJXts4rXX8ntm/hKhsetzhSOzZ88mjuhXZWWoQJ45kXuZz5Qnd0zVsHeYbZqI6chW0nWAaAbanNn6aESS4HX057Ljnf2NVgAAAKCro17fTQwRwnmXCNlB2a55THluUrzKnGv3Xi33HzbPQTu5xWzN0ppe/yMW8hRzCDXFlFW7SwDRDDRginnbNMPx54eyvcqckSNz7NHNNFkmSXt++lCHDgEAAADAXVTKloCbvX5/ktXIwBoQzUCDim0kJ00SuKFJx4+3Nceh059/vq15dHs+//zzG2+80Z5AAAAAwD4Ull3gPBDNQINtZFqa2iZs8tjg/DU44/G04KSkv/NBhpH/TuLWNs8xPD/9VM7I6L8L6VjsYZylOY1kmiVh1msp19ksnanUSq0c5Glv3jsymggGcBr53yMNXdqQ/fPPP+fn50+dOnXatGlS4LZt27Zv3/7UU0/179+/A+sGAAAAAIhmYCdntmYmBZcdP87L3JzK43GEbEo6TkOO894XFXFpObOJ4IMxNOn48SQh3aOZW8+kidmYJdl65vmri/lcWabFlTIfkFB1DuZpWXER/Du4lXv//uffH+/CiplCZTEVx08//TTd5nUzFDMAAADQeYBoBvZxhnPZ4CTt0PBps7d9f4Yw43CcJUdn+YuEs3MkzaxKMmzk7L9Hj/w7MzMfn24jB0XaodN//+eRTDUTqplvbrMHSccj180UKGYAAOhajKyv7+gqADcC0Qw0mEa2VZyZ3gZnh8oc6UVCzovDMkOnP3/8+PPcy4Yj5at02JVD6M1/jt5beTM5khPXTfy15LoZihkAAADoPEA0Aw3Cp5GIzK2ijzDzLiZlBhrG+0+cqdi2Kfj3z5t9pkhN8NW85j7F1jZPsxRLWKfj+elJhpwjmd+fIaFDHcmBqebo6Nk5hq7tmmEGr5v5jY6uCwAAAAAEIJqBBkOnP28gj0aMFMy3ggU4LYcGsaXPmS8F1c4q0Tz06uBN0RGbWPS4nH/zcQkX30pJaTnbIiLEXE3aN9S+HKhqJrNHhncjzcyAXAYAAAA6GxDNQBvBbcJKkHwVOXFbenmPqJLzEdRJ1DEtVUAjbbd4BRAAAAAAnR+IZtBl4Ralm51j6CbuzAAAAADoxEA0gy6LaVE6AAAAoEtRla9LWMNtRRdv1ccOsRq5vnzBiyRTH+Xvwgq4JE93VKwTA9EMAAAAANCOMMVMDAZDOOF053Q9sambOzP2S2cpZtdU2xDNAAAAAADtRn1JUXXxVn04vzckKjf/pO7dKmNCSMdWy3loE/TuT9IJgGgGJuist6OrAAAAAHRr6itLy4KW6mUhQ4cnrjFU3HNq3Ysnx5I1qWWERC/L4jfIMoMhgZfX+/Ij4jiHjqx8Q0oIqciPiFgjZMBChjLbbUxQqjwOZ8ZOzWMBohOIKYSGZcm/gqCVoVgfvhr1qhChRZLZuGpVREIqMVXAPM+tQUWpeWUkj2TVLCFpkslZqI9UhKoVnQaIZiBw5513dnQVAAAAgB5A9PAA+e6QYWPJSbZRVh201WBcQnXkbrbx/+3dC1RU950H8N/wUkARRR1BlAS0dLKYTAq2Nt0ibFofgS0Rm6Wz4mK37c5x29CuB88Gzx46pXvEltTT6nZn2ZzdwDo5s55WrC1EY9b1kcbVZVipklCSSAIREEUdHiLPmb3/e+dxZ+4dZuQ1A3w/x5g7//u///ufQS9f//O7g446z+vijjVZt3O79t88ZrKahIR6vlOXmbrbZN3NHy60fE/aZ8OVf7qYc8ZUudzWsom17E/h+qj4EpHjLpOSG/CmZBqSFqfuk7rdJAzO0rPuJBfTXca8set75QVky8q2Q+zzGeeZBk4JB0IzAAAAwAyqudWhI2cW7L7dSJTJbWRv3sQCrn2DKHbD5oL9pvrt8ZRdvsttzVW6ZuzWhy1p11TV1NgfZ+fk0SkqLxP6rIgvcJuVzIDSaUhaxKdzDE6qIpNOfkyXMzoPYQNevN0pfRaBBKEZAAAAYKYs35CTfbGtm1Idd/7dvVX1/bRKui3f321Z2qbp1W3iVWRPJxMVURDrecrjtLwNKJ2G/MQmMMlZA6EZAAAAYMYs35GXpNh2zBZnuTS5+2b1md0kDs32pejOGxerkvI85OmktULs5jI3xbsv4pKQzvefb9qdaituvvWyaXsObXujiRUKs5Fpc9n4A0qnMc7EuNPZB+fLM44nncnzMknRIeM+00CB0AwAAAAwg1S7rceOKdLS+AeOW/REHbJvHk1LY1UN2eUdOhV1S6Okalf58TjbCKyb3GmW79AdezUtTWE/C5fRU79Xvmcb35Kd7VqeITegdBrjTUx8OnYPH/ekOt3GXL4qpWZ3XM33TWfibYc45+PpmQYQhGYAAACAmcXlZtNulxaXT2HbXGbSVcrucmxn6qwm5wEcmT6stthU5HYWk6mSZMS6Dcju1XOdhueJeTqd+5hEjg62Q9zmI/tMAwZCM7hrOBKdUeLaVHrBXKj2y2QAAAAAAgFCM7hTF5rNhcSH50vpUxKWu2r26kinz1ZOfqiAOhcAAMCUC5AVVuk0AmRi/oPQDAAAAADgBUIz+ERcs8GKNWJr9upaVFRSYiy90JxYkZxvFPZpDM36bGVXzV5bC/dYR7p8o5GMxO8SunU5DreNp+6SHdBtFzkrRVxOoc8mcR92LoMqP59sfbnJVyQ2Y/UZAAAAJgyhGXxir9kQ8m5Nl45Lpk2JzWaznqVX1QWzWW0rjWD/09VmNZv1SqGlTqczaEhSMmE7nE+/RxrMeTIDSnbZW7jM7nKKmo2O+ejs5RldBk3ypYZCtZoaLpWUas1IzAAAML1+kprqvRPMWgjN4Bvnyi5b29Wx37M2ssxaV0sGnVrcs67WyNgfa7K0WTIDCocTKTdmafIvNeQlSgdku2pvdcl1ljmF7XB7mzJbWxrNUjNxmTndPDWvAgAAAMxTCM3gi4YjyeKVXa/9XT9uo6umdvzumsTH+Mnyts7eT6FOL8241JBOTYa8Qt+HBwAAAJBCaAYfqeKFAofOFiMl6hzNyo1ZlHy8QRRgbavBrDCCX59u0TYnyoxnbOnUk7CybFRp9XRLOqBzl1tnZaxPp2CpOSNDY2hGaQYAAABMDkIz+EKdZ6hIjo62PdIYRLuU2TrDXsc+VrmhzNZfOBIttLC79NTKBpUxI9noujasaaqIjjbau1DXLZkBHbvcOhO5n4Jq7EfHi87FpWbSJG5EZgYAAIBJQmgGT9SF7OY+Gy4IsxvxRPR6yT72yc7CerTzvkGSeSjI0pmdY7BBpAN66iwzpuNwcTtuAQQAAICpgdAMkyT+MDqNoTlgqof5eQXShAAAAMQ6G/fE3XvZupn/yI3ek3sO5qa8bC1azR7VX1Skkcm2a9wxTv6qmLZW7oiamhmd/FVcbj2/ud2Xs/uo/tVX0hrzOypTHuMGpkCE0AyTJLuK7I14XXlqOztMaF4AAAAzJXZtTkFTWyelclmys+0UpRY0Puik1fyjO1T+XNzJX+2ZukDsXf3FuFOqDutLsUJ6frW9I+nyVCTy9vP7t5eXN13pTNkxu1MzQjMAAACAH0StTak/emXrDi6VdtyjnOdyTl0WkmXHzfryzJdiU1+qnMHZcEm9IOdZIdbG7njJyqLzlIz7oLF8XWUm7bnSu2PG/gEwLRCawebcuXP+ngL45Pnnn/f3FAAAYCqkZm6vOt9XSVH150+nZB7alENvdHCJtbetMTVpl630oozeKiZVSq5hPzvCVjUhqqOgguqtJG4pZzUerCKC+GKP+ouK8+tsG0djOirXXtlzMLeKnby64yXx0m/sJhXFvXXS0djZWJxbX0X1VH2gckeU2/hsbjdX0v7TVeUvdyRdtu0qkKnB6LzSlJL5EsU9oKNtnTtSyHGgdCh7yzS+4pOC0AxOaWlp/p4CeGEymfw9BQAAmCpxMXxJxuK2xu2ZRRRLKxvbeimu7RSpykTZsyr3nsl6yCpUMJ/srdzUVpy7kmtJ5cuFj5IQcIUWVhv9av2hol35BcWs2KPj/Gnav72+aHWcsJBcf41VTltZVI17o90locamVHbQnrhXcskWf8uquTPw5RmS8Xdxs2qM6bAequxs3FPsLOooPrnWtZyj98qplZmV3MbaHHrrSmfKJseB0qEckw/QH6yI0AwAAADgF7FclLzW0UmnKKaMWIZmy7Fr71WlrKvkMqi9V0H1s+IY2Xmliaq3Ci1xSamuLVGbclJPcck7dWlK1Ucdle3nG/NN1U3n6ynzJuXs4uJsTMH+o4r9bJnZukM6n5RKFl5ZFi8+eaBM5oz28blZ5ayN5XdVVdVXVTnmqirbIVps7mw7VXW6quq0bWfO1k32A4Whcs+370pybylKDczFZoRmAAAAAP+IWpty+vwb20koJuYz9JW2O+WZmyc98urM8sttJ6kx59mitfeOtrUnNa7kk6kQi9tfVbyi8FwLIdSNlCX5dirP47DaDNMhqxDw2Zp0W0eOS4eCpMVuh0hbAgZCMwAAAICfcPE0Le10uUlIySxDp+WmVneMdwhffHytnhU39145VU85W91aUl5+iR95ZVraneqOKIpdl5J2NJeLtkLp8ylVR2VKUUd+Y7Htwzp4rDTi5su20oj686cLkg54OiMbv825qyD3o/qi1bZK65vPiQI015mSHOvV7J8Eb52/SVXEyrhJNFTVTdeWAIXQDAAAAOAvcTEFlJoUZ3vEZWgqiNk0/kezxaaUVf8qTvEKt1lQkOreUn2gMtUxMvGry6szy6k8k2XZ2B1bq08djFOQcCOg6DxROypfZsvPwiMuYe+IovqVVWkHq9hCsvv4nW3OyVSaLir4XXwltGjJuf5aLqk6nOeI2pRDubn1BQWkUNSLhypovCxuCVQIzeDZjYqE7OYK0+FtK4juntlXRsXFVMb9zjcAAADApLEy4hTnw9TN1kr7nh3CR845P3jO3sJ/JJzVZUVW2sKPbB+16JA9i3Lh+JDjFK5WF1kPFYkbuMlYN8uO75iJWzcXoufiOKqjmoppq7XSdao5kpZAhNAMHt24fPDAgQNn6+9um/mQLGR0Lp07NmZ6BgAAAABOCM3gyd325gPPHX6O9vklNdut2Hb4sL/OPdOuX7/+9NNP+9IIAAAwK7ksUXtoCVQIzeDB3fqzyc8dplXt9DpLzfJ9zuwra02mgwdPcA8O1LRqNzhbDtSYEl5P07I97rvsLcIItj47WR0IifvQCaowOQpC3HqucB5qezzL9ff3Hzt27Ktf/eqWLVscjWfPnn377bd/+MMfLlq0yI9zAwAAAIRmkGfLzESpW6iMS82e6vJPNCeYWlsP8xG24kZrrqOFNSTXtLZukO6yt2hXnSk7u8XUethWM30mtdjep9hZniFMx73n4dXVWn54Nlb1DSGCz2ZcLObC8Y9+9CNuW8jNSMwAAACBA6EZZHGZ+cTBEycOCo92bin2FJp3bknlF3lXpG7Zqb18IzfB1sINQBXFG+y7zrbflet89gTjHOubW+yHS6fj2rO4OGHnweyEg2yZuVV+HXzWEedmDhIzAMDs8tF3vuPvKcA0QmgGOWydmV8l5h+c2VdWf3uLl0M4OxNW+X4KW2d7nYbtvGfOejzAtSfnMFu0vlGRkJAg2TVriXMzEjMAwCzy2muv+XsKML0QmkEGWyZOKLY/WsEqNC63EiXIdD3RevswCSvLJ5K/eZjaRQfZyiacu9w6r1jFLzhrN2wQiptbv2mSOwU5lqZder6ednaL6fA2ramiuaz9Lm2Y9VXNNkJuFjb8PRcAAACwQWgGGdVa2mJyhlAWgLXaEzsriqVddza/npBgvx2PC8jtjoO2FVfsS0tIEO9y60y07XANWykmR9MZ+9Grk09kp/F3E9pGc+u5goorzqal2YefK4lZgLgMAAAQaBCaQYa21fVj3rjI2mprknwA3JbiVlGb+BPiREfJd2Y2aFtbtc6HjsOd7dIWj8MDAAAATA+EZgAAAAAALxCaYRIe6yePzKcfUwIAAABzDEIzAAAAAIAXCM0AAAAAAF4gNIOTyWTy9xQAAAAAAhFCM9g8//zz/p4CAAAAQIBCaAYAAAAA8AKhGQAAAADAC4RmAAAAAAAvEJoB5qyenp7HPeTmzZvTMROYRZKSkvw9BQCAQITQDE4+3gt47ty56Z4JAAAAQEBBaAYXXj91Li0tbWZmAgAAABA4EJphKnTV7NWRTp+t9PdEnAJwSgAAADBrITRDwJiOmIvoLOcHP/iBsPHzn//cn/MAAAAIAD5+W0RoBphfkJgBAADEuG+IwjdH7vdxvjkiNMPU4Zd1s1T5+SXsUekFc2Fszd7k2qxmfqW3y75N3Ea+kXXRGISHuhYVlZTwTUYyNDsWhrscu0ovNCdWiI9S8uPxDezxxjrnirKwuqzjtlqO60qMRtuYJO4/X5eekZgBAACkfMnNCM0wpYz5LRfMZrOQXGu69Nna0vyKOl12trKrrtZYqtUruR1cdDbrlbY+G3XcUU2JzWazTq6UQtilZ11djtLHH89XcadSs+x8vKE5UW42iXk6QxMJYzYcEfc3F6pn4NUIMEjMAAAAnnjNzQjNMKU0hjy1S4M6z0C6uq7sjXW1ZNCpuchba2QcB2Rps7jfNrI0LDugsKvO/SidLlFTkhFdwpaNzdncsN5mFuvSf17y8e0nAACAecjr0hJCM0wz5cYsLjU3UC1l6WzJmBVuqB0duBjt00CuR3H0ZrOeGo5ER0ez4g2v88gW95+XK82E3AwAACDHlzdjEZphurHUnJyRrzE0K4VHmvxLDYVqtVDl3KL1nnflj6oQKqQLmw1NuluUrjJe6tQTO0Vni5ESdW4jOCqqhf5dpJ6nVc3IzQAAAC7w6RkQKFjiJeLLLIhf8b3AVnvZNquVUJO9skIZrzJmJBtll4ElRylJZ6hNTo62PVYquwwVybb9Gg0lSsd07T9tz3Y2QFYGAABw8PHbIkIzTAUu0+rZ/4XfxS22bZcyYnWh2VzofOjo6dbuOohkr63ewsNDx2ScR0k6AAAAAPgIoRlc4KdkAwAAAEghNIPTuXPn/D0FAAAAgECE0AwATklJSf6eAgAAQCBCaAaYs4qKivw9BQAAgDkCoRlgbnrttdf8PQUAAIA5Ivbv3kRoBpibenp6/D0FAACAuQOhGQAAAADAC4RmgDnrN7/5jb+nAPNCQUFBVVWVv2cxlebeM4K5jfsTi3cXZwBCM8BcdvXqVX9PAea4AwcOCBtz5g/b3HtGMLc5/sQGiKCeTxaf+Za/Z+HiUdrfDSdle+/nDULz7HPt2rVnn312/BYAh7KyMn9PAeayvr4+x/bc+MM2954RzG3iP7GcL3/9l74f+86vv+vYrnh/8ONeiy9HvZAQlh4rEyC5uLzo2i8UEUvpG8cpJJIUCvceoZE0NkyWEd9nOGlWGn0U/v7J8HN/26/+3ljMU5MZC6F5VhKnZG7bv5MBAACA2c7HxMx5s3VYGpqD770f0XFRsXk/LVjCN8iNNtI7mRlOUMgCevob9NTXIv/wn48GukfWpE98pCmcFcwkITcjMQMAAIAvjv74LzZvWsdtWCxW9VaP76IsDw/+cfpKbuNv3+q0+jZyUM8nEe3/FbT+zyjIT8nYB4qUnPCP/ps+pQnnZoTm2ceRlR2JGbUZ4E3DkeiMEvuD0gvmQvXEBqlIbNZnK6duXgAwQ7pq9ibnG9nWRK8Awhi1WVNzEXBcTyZ3YZnKKY3D4ySdL6uN7dW1X3M1BtejHNdi9x3CHsnXhh+fDLYXalKX8frTfx8aEuxLTyExc/Z/IeanV+/5csii//2x4vP5FBpCI33j9/z9e13cL3bIwpAXPh+fuCrKl/FljYxy4d+6INSnJyVQxK6LuP7r/ojlE6vTQGielcRrzEjM4Bv7JZpdeI+kT/SbJgDMTp3xWrNZL6SwIw0TuwIos/Vm3++mmpF/Zvs6Ja+TmeBs2fnZy8pwL62O8tT2scxmmYh9K91sNgun09W4n06jaaqo6RI3NhxniVzj6GC7jE/oiygk5rv3+p//xhEfD1EoKDwkSNi2knVwVH7dObjnY0VIkHXBIhp9OP6A9/qG/uV3N96qv71q6YLB4bF//u17v/xu6uYNK61Wa9+j0eFRy+LwkIWhwVwUHhqxhAQr+rlTWik6MjRIoRizWnsejnAxeVF4SGhI0N2eoaO//XDj+mU5X4wbHLZwh0cuDI5YECIpo3ZlGSaFJfhhB0Lz/CLkZiRmeGzq9FKquNVFaiwYA8wjarWa/78yXkUt/p3KHMUFXJWWBeWGS00GXaHcFVaZbQ/EsYkamf0qFdXWdTk6cSOVlJaWljRJxuG+iLUTu4y/+O1/9b3zE0vCDj/vPEd1c+/bn8jE4kVnvm39zGfpYQctXD7+gObeh5/e6S/82pPFX/9MS9fD7xxpePPqp5vWR577Q/ebpjt9j0bWxy367gtPPBoee+Ni+7JFYU2f9j14OPL9ryU+tWZR5blbdR8+4EKzas3iLyQv/dczraeudOx7cd36VWFc5/Z7j2KXLtRuS3hSGc6lfQ/nt9JwD4VT+P/9bHjtV3x/HRwQmmcxJGaYCO4qrMlqFi6Dkjdsne//Od78s/fRGAwq++MWrX2JAyUbALMLy2HpZtcm0V9j16oJgyo/X1xkMP5e8QXlAmXw15Jko3Axkbm2SLlfkdhZqJRKSlQXzHm35MtLxp+So4/LZMRFFS6ze6zZSl7YJkNeofAKc9fK6Gi56gyHzhajKl3v3pqYp6Xk4w2Oi28Fl761LdLQzL6IWulC9nTLTY6SDc3MoJnuXacVqeyuO896+h62dQ+kxIcHWYeUi+lP1kS03ul/p/F20b81bf9czBefWfIPho+iFtLGdVH/9LubX3lm2UtfWvWNV68nrQxbsWj1/zTdSU1cfL9/5MhvP6osTLnfOxAfsyA5LqzU+H5ze39RzhP6M7cWL7S+svPJ4CAPodkyRvdu0NA9lp59IPysgxdffNHRgtAMME8Y85Pt33D0ar6l4QirBTTr+W+Fe/k3BdWFZjN/1ee+/dTk8d+HkvO571dm4bsMkYGU2drS6EsNhfyylZ8u3QDw2GxB8TGKYY35LRdYMQGLkMe17odJ9rKVVv5iITBfINE/qSXXFunppFckdpYmoc6h4UiGePDHmzB3cvFknJc1/kXZW9OsL3zs2bphATdLZ+9X4pi1TBEGP25Gk6G5UGYcdXpphu362lVXS2xI0fsC9ss4+yqO/1K4uP6284Oc3z25j/1uatlb/J++jyD4wX/d9rRLMfqQuv9gHekj5RcoJNxTN3PfgNViXb1UobAMDQ0N3+0ZjFkcarxw6+Hg6L4/j4tbtuDQr1su3ri7XhkyZrF8+yvK55KjuAC8LJIGBx9FhtHZa93NHQMKsq5fFTowOKqKj1i9NOjqB+b1q8Lb7g6MjI592NFnHR2iYLnQPDpAHe8q+j9l0dnq6+eEcJYsWeL4wTEIzQDzBL/iQdx3CHvg7brVRMaSZPstLKXpelKKlpo1BqGPxqBjvfmwTBVsy3lVdyytAECgs1Xfcn/Hoys8rX+60hhYga6nmi7J3thETUnGXk/vPLldW6Rkrkisc9ZGfrTxB/dpwuITlWr5jvx1Lf9SJ7v4Pd5s3cesq1Vp9Y5BSrW28J1eanQf3cuti+o8Q4WO/Yuh01bt0eDyBB1r+tF7J3P746Ffvu1Lt4/Nwz7eCEhcVLUMKbpv0P0/0rLPWpckUugit89ptliorrk7NjooIujRo4eWq38cuPrBg5/lx524ag4Jsi4PH/ygrW9gaOyJZZb6D7s/syo0btHg2fq+RQsVKyNHil5vbu8eLPn6qpMmuv1gKNTSd721/zt/tmxooHdsbOyJGFpAD19QR37uyYVBI2YaE53VaqWRfkVPC91vZgXN9rn48pxefPFFLjGLWxCaAeYTZbbOsFfnvNPEddGJuxBnkH1ZWed5FNtVXUfipRUAmA3UhRdKo2Vi4uTxqZzFuWij+3K2r9cWt+MafBp8yvk6W9ERXGaWFlvID60jnVk/zouv3JhFuroGqmWF0Z77aPJbfP4iPv3Vg2Rfb/7SjsN9/YM+HUYyP5zEo7FBexAdpNt1itt17OeYBIeJu1gt9H7Tqu77C187aQoJopo/hmY/2f/lsA/GVi949/2V//jvv//kQbAy1LLnyQ9+8m5MQphlSceNy1eXRQVHKHvfGe1ZGh0c+sf37vz+eviWdQ9vX3+v79Ga+50fr4i//0zMkq7b/c8sHmrpoqRVD4Jvuv7klLFhGpGUlFh8fWJuP5wcoRlgflFma1W2NwzjVZTv8tZjZ4tRk6gj/juAkbJ0/O0mRtvbnF01FSWsPIMfhF3Vjx8nQmYGmB0aGhpstwKy2xoSm8X7YhM1RlsC43ba/5pPDBdumw2kY8u8olbptUXmSMkVabzBJ3Hl4U9kL4HgrmulWrNrB19m64IVUiQ6urH34oTn4RjdXnhtXz0ef37sIp2RrzE0e+zIJqbxYWITNDBqieA/NOOJJWH6rbGO9iOm+033hqT9H6V+P/y9n1H4sEvrmHs0V1gVX1hBMSELaZgFbN0X+74U37sqaDj3ScVoeu+Nu5F/EjW275kHqsiB51aOJCwZWjz2ICli5NspIZ+Lvv33G++d+jBmtH/kWxto/dLBhNCef/iiJVhhjRztPvind3734bKOO8Hb1/Q+uaCHHnpbRR4OGVr3l552iuuYUdM8W7m9QQAwCeo8AyXzsbmw2bA3OTlaaGarN2wPe6wpLbXd2c2vSmWwO1o0BkMp1drGEK7qdAHlzACzQ+ytiugMRz2say7lb1Tg/5pTaWnphE/hcvccdwJleqkxw3ZrnfTaIqWWXJHGGfxxqUWTEU4UzZ+IFTyo3Tt4nq38rc9ud/Vx42dx4+eTe+0xKwwpKYm2f9iyx7sEuYu0huJldjlqmj0eOiV+9M7dn2TKjF6YtmzvW53S9uF1Xwtv+AWFh1BY0DjDBlvpr1MfWqwDwsPIsDGiMO4X998u9eDg6HBwkDUsSGGlyG+lPQwJsoYGR/7F04NW4gaO+NNE67Nr7ocFWbmHFqtiQfDCV9LNYxZuIyQoiFSxPdz2whCLQhHh5blZrDRgGV395fF7ieuYfapp/vGhX3g5MQDMGupCs/OK7vxgU/FHjPLcH5PzjhjG9fNQS9PV0zBVAJgGkr/sLsR/zQsdTXrRbr2HDdG2UjSIZFTJ6eWGkkzSuUvtPvh447he8WQGkHs1fJltw3HZW5+5vWqXBvfx7fMZ74sgnjN3fKGk3eNLMOV6hy3/ccP8Vxui3dr/8fJdT4f0Zx5ddO0gLVlGivFys6c7BBWiXeLthaI+ka6HhHnY9qKvd/CprNHlKZ72i+uYfa1pLty7x/cJAMC8I3wUEm4BBIB5RObj+uaq/+l4xP3yvf9YzFMDyX8T3vmWYmUCBYVO38Qmzmqhex8PLvvc0Gd2jt9RXMeMmmYAmAzhc6vYm4MozQCA+USyojy3vJAQ9mbrsPd+RFkJMmu7I2vSud/Db51WLIyipM0UJPeBzcKthVafPiZ5ylhHqP0aPfhkMObzsonZUx2zl5rm7u7u6ZkvBBx8reeJAwcO9PX1TemQEZt/+umnP+U2pnpgmOWm4Q+bn829ZwTzwTu//q5su7Bo+mbltzwdmB4bwv2azKm53GyJWB40cDfi6r+TIlimBxeaWWCe2dBMlqH4zNH1u8epyiDPdczyNc3Ll3v54YcwZ+BrPU8UFBT4ewowX8y9P2xz7xkBzICxmKfGYqhnzWZ/T+QxeKpjxuc0A8wjbsVYAAAAIOWpjhk1zQAAAAAAj4eF5s/q3vX3NAAAAAAAAtf/A6+9xG6f73ZhAAAAAElFTkSuQmCC\"/></div></div><div style=\"clear:both; line-height:0; width:0; height:0; margin:0; padding:0;\"> </div><h2 class=\"Heading_20_2\"><a id=\"a_6_1_Enabling_advanced_filtering\"><span class=\"heading_numbering\">6.1 </span></a><a id=\"__RefHeading___Toc385_1375324043\"/>Enabling advanced filtering</h2><p class=\"P18\">Advanced filtering can be enabled by clicking the “Advanced button” on the sidebar or by opening an existing uninstall list from the “File” menu.</p><p class=\"P18\">If an uninstall list is loaded, its path is displayed in the application's title bar.</p><p class=\"P18\">When advanced filtering is enabled, <span class=\"T16\">all</span> basic filtering settings are ignored.</p><h2 class=\"Heading_20_2\"><a id=\"a_6_2_Filters\"><span class=\"heading_numbering\">6.2 </span></a><a id=\"__RefHeading___Toc387_1375324043\"/>Filters</h2><p class=\"P18\">Filters are displayed in the “Filter list”. Each filter can contain multiple conditions.</p><p class=\"P18\">It is possible to add filters from an existing uninstall list by the option on the toolbar. New filters are appended to the end of the list.</p><p class=\"P18\">If the filter's type is set to include, it will only allow applications that match all of its conditions to appear on the list. They are executed before the exclude filters.</p><p class=\"P18\">If the type is set to exclude, the filter will remove all applications that match all of its conditions from the list. They override the include filters.</p><p class=\"P18\">If there are only exclude filters all applications are automatically included.</p><h2 class=\"Heading_20_2\"><a id=\"a_6_3_Conditions\"><span class=\"heading_numbering\">6.3 </span></a><a id=\"__RefHeading___Toc389_1375324043\"/>Conditions</h2><p class=\"P18\">For a filter to match an application all of its conditions must match it. If any of the conditions fails to match the application the entire filter fails the match.</p><p class=\"P19\">The filter text is compared against target property using selected comparison method. The result of the comparison can be optionally inverted (negated).</p><h3 class=\"Heading_20_3\"><a id=\"a_6_3_1_Comparison_methods\"><span class=\"heading_numbering\">6.3.1 </span></a><a id=\"__RefHeading___Toc391_1375324043\"/>Comparison methods</h3><ul><li><p class=\"P73\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Contains – Property contains the entire filter text.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P73\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Contains any – Property contains any of the words in the filter text. They are separated by spaces.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P73\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Equals – Property is exactly the same as the filter text.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P73\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Starts with / Ends with – Property either starts or ends with the filter text.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P73\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Regex – Filter text is matched to the property using a Regex engine. <a href=\"http://www.regular-expressions.info/\" class=\"Internet_20_link\">Regex </a><a href=\"http://www.regular-expressions.info/\" class=\"Internet_20_link\"><span class=\"T10\">online manual</span></a><span class=\"T10\">.</span><span class=\"odfLiEnd\"/> </p></li></ul><h3 class=\"Heading_20_3\"><a id=\"a_6_3_2_Target_property\"><span class=\"heading_numbering\">6.3.2 </span></a><a id=\"__RefHeading___Toc393_1375324043\"/>Target property</h3><p class=\"P19\">Property of the application that will be compared against. “All properties” will try to match the filter text to any of the available properties.</p><p class=\"P19\">The properties can be previewed by viewing properties of the applications.</p><h2 class=\"Heading_20_2\"><a id=\"a_6_4_Saving_and_loading_filters_in__bcul_files\"><span class=\"heading_numbering\">6.4 </span></a><a id=\"__RefHeading___Toc1266_3965964108\"/>Saving and loading filters in .bcul files</h2><p class=\"Text_20_body\">.<span class=\"T33\">bcul files (also called “advanced filter lists” or “uninstall lists”) are used to store advanced filters information for later use. </span><span class=\"T32\">You can save your set of filters into a .bcul file that you can later use with the command line tool to automatically uninstall all applications that are matched by your filters.</span></p><p class=\"P38\">To save a .bcul file, first open the Advanced filter<span class=\"T33\">ing panel, specify your filters, and click on the “Save as…” button in the toolbar above the filter list. You should see a save file dialog with the .bcul extension.</span></p><p class=\"P74\">To load a .bcul file, either click “File” &gt; “Open Uninstall List…”, or open Advanced filtering panel and click on the “Open…” toolbar item.</p><p class=\"P39\"><span class=\"T33\">To use a .bcul file with the command line tool to automatically uninstall applications (for example in a script), check the </span><a href=\"#__RefHeading___Toc918_3487566792\" class=\"Internet_20_link\"><span class=\"T33\">BCU-console.exe </span></a><a href=\"#__RefHeading___Toc918_3487566792\" class=\"Internet_20_link\"><span class=\"T34\">parameter list</span></a><span class=\"T33\">.</span></p><h1 class=\"Heading_20_1\"><a id=\"a_7_Uninstallation\"><span class=\"heading_numbering\">7 </span></a><a id=\"__RefHeading___Toc556_354986082\"/>Uninstallation</h1><p class=\"P82\"><span class=\"T35\">BCU can uninstall single applications or multiple applications at the same time. To uninstall, select applications that you want to uninstall in the main list (you can select multiple by holding shift or control), and then click on the Uninstall / Uninstall Quietly button on the toolbar above or right click on your selection and select Uninstall / Uninstall Quietly in the context menu.</span></p><p class=\"P81\">If you uninstalled any applications that were integrated into the system (e.g. drivers, extensions, antiviruses) then you should reboot the PC after BCU finishes uninstalling to make sure everything gets fully removed <span class=\"T36\">(some uninstallers continue to run after a reboot, while in other cases Windows is still using some of the files so they have to be removed on the next system boot)</span>.</p><h2 class=\"Heading_20_2\"><a id=\"a_7_1_Loud___Quiet_uninstallers\"><span class=\"heading_numbering\">7.1 </span></a><a id=\"__RefHeading___Toc558_354986082\"/>Loud / Quiet uninstallers</h2><p class=\"P24\">There are two ways to uninstall an application – loud and quiet. </p><ul><li><p class=\"P75\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Loud uninstallation refers to an uninstaller that requires user to go click through a few screens (by clicking on buttons like “Next”, “Finish”, etc.) to finish the uninstallation.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P75\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Quiet uninstallation on the other hand requires no user input to complete. Because of this they are much easier to handle and faster to complete.<span class=\"odfLiEnd\"/> </p></li></ul><p class=\"P24\">BCU is capable of generating quiet uninstallers for many applications using <span class=\"T16\">many</span> techniques (<span class=\"T16\">e.g.</span> UI automation).</p><h2 class=\"P61\"><a id=\"a_7_2_Preparations\"><span class=\"heading_numbering\">7.2 </span></a><a id=\"__RefHeading___Toc560_354986082\"/>Preparations</h2><p class=\"P29\">After clicking on any of the Uninstall buttons you might be asked a <span class=\"T14\">few</span> questions, most notably:</p><ul><li><p class=\"P77\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span><span class=\"T16\">If</span> loud uninstallers should be removed from a quiet task.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P77\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>If protected items should be removed from the task (only if protection is enabled in settings).<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P77\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>If BCU should create a System Restore point before running the task.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P77\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>If BCU should terminate applications that might interfere with running the task (see below).<span class=\"odfLiEnd\"/> </p></li></ul><h3 class=\"P67\"><a id=\"a_7_2_1_Process_kill_window\"><span class=\"heading_numbering\">7.2.1 </span></a><a id=\"__RefHeading___Toc572_354986082\"/>Process kill window</h3><!--Next 'div' was a 'text:p'.--><div class=\"P30\"><!--Next 'div' is emulating the top height of a draw:frame.--><!--Next '\n            div' is a draw:frame.\n        --><div style=\"height:8.573cm;width:11.748cm; padding:0;  float:left; position:relative; left:0cm; \" class=\"fr1\" id=\"Image5\"><img style=\"height:8.573cm;width:11.748cm;\" alt=\"\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbwAAAFECAIAAADTExz8AAA9b0lEQVR4nO2df2wcx2Hv54wieegrLCWFwN4lkRFdW9l9dEHgzgD9R2TTLRzDUsqSBqzo0cGxiEHWf1DPLyDRskgNwgnMAlRd1/xDIJ0gPESqngOYLFvZcIzWtBU0JqC7VogJKGpL54lPvosgNKHUpnjOQ3tvZvbX7Mzs7sz9WB7J7wc2dTc7Oz93vzczu/vdX/iVZ18nAAAAzPgF+n/9zx7f6WIAAMAuIPs/3/iFnS4DAADsJiCaAABgAUQTAAAsgGgCAIAFEE0AALAAogkAABZANAEAwAKIJgAAWADRBAAAC+JEs3omszbQmCz43+bztaWhrGZbQH1lNLc66EeLCTSH5lWcIqXlphPY47TYvAAAG+JEszAwV1yrTha4Mta3Nkh5Y312iJ+a9FspP6LZJzu01BjinwSRDQKboHqmODVX0ejzLif8I9QK2jYHAHSG2Ol5Ll/a2KqTAj0H6+urvcvLG5s1eo7yb2RwNrVTs5TPpZUVAADEEiua2f5BMr1ep4NLppL52cNk2Bl51jbLvQNLLIozdWa4o0FnsDOxmePBuTIPJ94IiG9d7h0eZhuDCTebYA6XWQjdtiqMlbzkc2U3shczyJDnSObI1FSvMB7lGVUGV4tOsk6K4ZiapISi+IFygPTdNr5cLyUW0QyrQ2mMbPmzcXdkefi8ps332sgcgC4h/kJQ9nBvea22RLK1TTI4ki0cnptnI8/a2tTcQIPHKEw2qCY6erQy4osdDa6QYKpYFdIsD29WGo0G143zE+zkrp7JDVMZazjSQchyEFlOx4/Jo46uuOHljXyt0ZBGvuXh+UEausRiTisxtUm5q4ONJT8pGs0LqJ4ZXalTgfJ2c7aHvybGt6uXNk2ytFTZzJyvNgbWiqTSYNqpSxMA0BESrp67y5pkbap3gGljnsyv1/uJsKAZDDVLy5HJiJSWRwpu0oRLMNnaKC3P8rDs0AQNjNyVravOTTj6w6IOc0FnaQ72qzpBE+XqoY2pTYqsr5bnJpaEpPhK7lSu7H6dG1jqz5emiqO+MuXCXxPj29UrogxUHytrmUyRDigxngQgZZJuOeLLmtX8xhzXTDZfP7++vuEtaNJhERvsOGPE6c6XtjmY6pCBpneX5rqFpUaD1jaTKfMNQ6GvucT4bSkDAGDHSBJNJpO54nBpueZ8Pdw7VRym5/AS/1rbLJfys4RfGSpTJW2qCGwNwJ2o11fmp0LTcyWmt6rKo85NNGLSLa861/rrzvjRJKn+wdKwuMrgRAuFOMFDS7VlMu1eJBO/GsW3q5emDNUz7LeKjjbPVCPFtBpaRw59iGk0AEACiTe3U9UsEeJPf9mkmg7b3BO1MLJMcrkMnfXOzZWkHWnMctG7EBQLnWzOZYqZKX4haI6sxsWsLY/mMhn2mV3diR18lXo3p+n4jvBxmhJTmxQVt8pmJscDndGdE80NYUEDa8KVr2z4Qhi7uyohvr594usllWF5eWN4Y7k2SbK55Xm+/nlYl2Zc0wAAmib5iSDpJkt25Se8sbEkRqfbl4KY3qnrBQZbQ5/9qHQeS3oHQkMhcRddhlIEgfzIUmNyKTKmJimp1NpohdB2JXpC/Kic9IWJ2up2iN81Zm0e2VAAAHO66zHK6vnhcmm5uVk+AACkQDeIpnCPIptYYs0NANC9dINoxk9NmwNTUQBAR+gG0QQAgF0DRBMAACyAaAIAgAUQTQAAsACiCQAAFkA0AQDAAogmAABYwETz9u3bO10MAADYHWCkCQAAFkA0AQDAAogmAABYANEEAAALIJoAAGABRBMAACyAaAIAgAWmonnl5YMPPxcOOnXqFDk+c/ZEj00Kz7+zfbovvOHmxWdmyIzzn3Fq+xqnxeLbyiROhwn1eNPl6URFOnfIdUGzy5hX1rzw6VSzCxuTYyqafae3t08TfiJcOuboHq+SMVcuPacRzObp1gZtJ91zEDeTvtfjdN9n2BnbwRxtG8q2MDuIYdX2w+nQNaQ1Pb954+qpIyfbmGDPibNn25hcV9I9dWyiJH6PO/vevNiJclnTVYUxoXuOAeDRqmhefvngU3zaHszCjj51gQWcOnfN/+G78jIPvHDBG3q4cXRjT2krm+MRHs0f5NIPC0feOf76gjvpOH7fUxFlCJeC/Rp/cB957rkLXtwg5Pl3rh1ZkEsVrElE1c4PcL5LXxPjE6Vgp87Rij381AUe4YHL7vBBqtGM1PK06E9duEAuEDFRygevPnMwqCyJ6p3wOMX7TMSiOiWxaG2hx2npxMGdUZvcvDjj1UiurHsE+ItF+uonHTYaeMWjaxd7NIbavYVmV1s4GxHeJ7YbrVXQAvVQ49AUlGpKhQn3oKZt1BMnOrUrUu59Sv9GtYbXbcEZl1VzkbvFIM3205poXnjqg3e2t7edZr14k55bM68fv7Z9tscNecAtf9/pa+euuscHOx/uo3s5rfnyle3Q+FPZevrkuVMzN26Svvql58hzz1853ZelQ5jjJ7Pk9cgyuCloFhAuXD1ybXv7rJC1G8ICwvnSo5WdHywd1pfPXKSnr1y7T7/qZMX2efXK9rFLoa8nbyTEFw4+pxgzNHyBOB9mLt98QG6ToEahWl8+OXPuFFFmZxeeY+U/K9RI3ztaroSKeu1IdI9rW1vo8dCw7qZSBm2b9Jzwa0R3lzM94S0WRVe/L+mw0RJdu4SjUWzHlppdKcNMRHio3S59+lrQAj2hxhFS0Le/0INM/6NKpZw4+tSkrpHKqT0pxLFD+Ix757iXi9QLxDjNjtCaaJ46d7JP+Hrz8usXGP7m4zMn5OLTOOTcDN+r54Hjp16nR2D81r5P33fhUv3slUtXz71z7vVLV8ixDwg7Si9HlsFLQVfg4w/0eIk/denKySNuiJrvzRtCOvRI4MeLXLuZI6eee/jgc+zXbfsEm5GKX29eXEiIrxTspvAhvkZSrfWVdeP4lU3unYDskXBd9PnGt7aK5giJbhOlIkI6SYMj0pNw2JhkZHE0ahJpqtmje1YOj+ggEts4avuPk6AHaZKRpVJOHG1qtGpEyl0up3JSeK0ROpbcM+51ou2FB0zT7AxtX9Ns69UeTt+x5xduXCRXj588/ekPFm5cOXL1vk+3o0lOHbF/V7BSu7Ps55f+LB48yDadEL+y0VlC/NCmjuJW1jzTHqUu7aL1NqFzf3FkoY/UocPGLlnrZjcnqoMSG0eeX8cNvbWEThyparQ4Uu5qOVtvjU6kaUFbRdP9GTrd1+f83H0wrtaExiHuNIz9UN03fpbciN3KjtP7Hn746rlrPaSHfXqKNlB4LBaRvoYLH9TPEmdkGcpazbcnK6TjrFvNyLVjy6D0EDl7gs9Fb1y5uPCw8JWcTIhPxy0mZ3F8jWKQKktrFNU77rCMRSb1Dy6QIzMsglDUeoRo2pZNPUKaaxPiKZVTWm0Uq8MmqrSGR6NIK81uXra4DopuHM0ZejJUR3JcXwbtiaNJ7Zicu1RO9aQIWuMB+YxzpudqL5in2RnaO9KkvwDvMPVnn9nYuU8bZ+bcM0d5HCfKzRtxWxl82sC7gv7Ok+eP6ZLVpUCU6cmpqwsHD3oLyGLWmnyFurAfMjbgl2rXQ2bOvX70qL9TzwPi156ehPim457YGrlR6On38NEL0u8tm8L4mYdrJPVO38lzC24O7PbbIzxPoajZyxHjEYOySfEN28SvkWaQK5SW7xZRfavDJql2FkdjC81uVzTx2KMS5baA3DjSbkph+oI6nvKm58KdhW462hNHk1pW7ppwOdWTQl82fsZlnVGw2gt9xml2BFvR7DvN12kZ4s0QwedgITiEFJkNruVNbgRpqxck5y/tJWbhp8C6Xpo7HZ/ZPqtmHZGvWhc5RK1KOI2E+JqShz/oa9TTp9ZaLqo+p4je0UYPhdi3dlRdDNtEiKbJVNlFV6/kwyZ0N4/2eDY8GhMqY9HsahkiWz60b3D5R22c+PbXl1levIo6cQx6M+mkiN4U2QuJJ1pH2XuPUYr3PNCfndRasnN0c426uWygafpOd3y4tovZe6IZ/ZuzW+8TTvVX1JJuLhtoE7v1xOkUe080AQCgg1iKZlsecTVLJNLgYy/hNUW9Q5Vtpb+66nHmNhamq+plSLqmNvvi1GsBM9HcgeOs3QYfJvjVTNspYycqK9GhLlaT3SnN2kGt7LTpRhPHbRypHI3p/gy0l26dnrfd4MMK80Wctiz37GxlHbBu1TlSa9tddDTuOucUARPRTHBPkJ+WJxH2E6Gfk3hTg/EPYgw+9C4bSQ//h8rppyOaIAi+D/5voNY9QXFYsPMNkXl95uiFoLJ+0ck74o31zDJDKbxksREazUkP0mkcDSRzBGG0kryvl0uCw8XJGzOSlYZwLIXyUoc27fVu6MQxHDRCyqYbkX4l/sAt4VAPt3Uo8rFL4qmnRFEaWTolleaKO3jYLrqDIaEL5MKkjoloxrsnKCYdMxH2E+LzoAmmBjdm4g0+ApeNGdOH/9kBpaYTYXvh/wBGuSeoWPmGhDg+c+04Cases5s46jzjwOZK49v0CIpxOZEQDD5cCwadTUOSOUL0vmI/xjtc1LdlKw3hWNIYMfQFVWizd0MHjuEYOmu6QSL9StzjVnvKyKYnwZkSinxsOzj1fK4ojRxxSsrNFeXg43CElvxqcDAYdkG0601a2E/PE006xo/H2U+EE4k0NRg/HqSvGnz4Lhs2D/8/o0knyfbCxBdDG9PWyUKi58T48weZahKqmce2b15eiHE5kRCzdiwY4m0aIswRIvcV3RCSHS6MyunbYfQomzri3dCWYziGjppuJG/VnjIRRTLqMsV0I/KUDDeXiYMPiYgZ2QXZZIeXDtOWNc3WLAC0pgamiez09ZOO0Xfs+YcvXTlGrp47SQcVN5J3SKCVPurmRm6Xd0PLNhbN0JzphpFfSSrlNMG8Owy7IFyY3THSlNBZMCTvlWhq4CcSY/AR4w+iPvx/bSbOKMS0ssYOC027bPgw1Xz44VPMGYIQ1U+ERJZEajE6/Y+1aYgzR9DvG12neDeW5Mja1uu8d0Nzx7C7b+qmG4lbW+0FJbLayIbpmx885l0gFcbU4aWdmIlmnHuC+tC+yRWxRFMDP5EYg48YfxDl4X/asnFGIYnVdDB3WNA6WSg+CHEwO4hTRx7wl+Qk54jokoiRHQsGnU1DsjlC5L5GtfbiylYagrmGzg7DS6ft3g1tO4alTkzfdCPar8StWrwnjqYQSeeFYrphmn7SwSMeDIZdIBcmumYdw3CkGeueEPOYvfTB3zHZ1CDZ4EO3V0yCsekothdmLgmxMTVOForBg2o7EuBcAgquoCR5FsRvSzQfibGoMDNh0e8em29cHdru3dC+YzhsZrEDphvRfiX6VtJ760RUQHffklzHqF00zZVw8Ahbjbsg5qhJhW69T3PX05qTBd8bBhhdCcws9jsQzQ7RmpMFfDAA6FYgmgAAYEFnRLMtlhy70VhBJI3HrsVHh/QBbaa5Ktjutdu7vgliqtz9rdH6U/OdKFXHaE00WzK2iPYF8B5HA0mwN+UKD9NceZm9vaYdS25pW5YAe7q25RML1rUlN6M10WzFICDGF2A3P8yfNs4dI96L2qlknm7LkQj/DtA0e/3gMbeG0z08/8BlrcuD4okgeAq4Py9XXhZ8AYhsTxAx0oxx7ghGrLJPxxVt4mGrC/9dzYYuA4HViN49xC+P4ksiV6QN3gSObD7zzKkL9zn3o2obKsLdo/09G+6DsN9Egu+DWrcm7Tm0ZZBNK45dUlxR/NZL9ODok0uiyc65B7tHuB+bKKWNeSBS2RTp06EafPRp05HNNSLscpwDMsaKJanw0Y3mbjY1T7Hu9HQwHmlqH55/wNkmuDz4z3VFeWG4yfWdFn0BYu0JPGKcO4Q4sk/H2RPJiat+BDEWFW6OOveQo0rxwr4kJ/2KtNebwLnfl7Z3X2RDxdDmnmX06ds8yfdBrl/T9hwRZQibVrCSh1xRYk++OK8N3jVSdmdPjD//1MJl9qw1e2zm+fGz7PdHsU2R7VE0dfc3Rfp0qAYfkX4cobPGa9Ws7oBM8jSJK3xUoxmapzTf6elgLJox/gVacwpzqwsS+3ury0W2CdCXhBs9GCWu+BHEWVS4OfpWI4F7SLRLQhDZKWQnvAn8O66tXDNIZ3pW3+aJvg/hJ+JatOdQyyCVXHJFia9RvNeGLru+k+eI4/TjVOPmxTjbFMceRVf3YJPNsFRNRz1r4uxykj1Nogsf2WgGcdrlydJJuuGWo44aEJgk3qzpg/yaU/PIu8aboCmi2rwV34eoFKKaxeigCruitFASZkOpZMce6565fIWKy/EZ99eoFVuQmBq1cAZZ2OXsiKcJaZ8nS9toh2i2bk6RYE8g5xJpE6Dx6RiXE1cdFqxMHySrEdE9RC2eNnKnvQnUksS4exgnZYmuQ5N9H5IqYmfPYXBQhVxR/HwNPDjkrjmmy45X4OGn3ORjbVNce5SourubYmoUscnksIyxyxHTMS98K3TIk6WttGWkqTWnkKJ8WjZuCFAMCBJzibQJ0Ph03JQTVxwWVD+CGJeBU1cXDh68QNQyaIsX9iVxIxvbQ2i8CUwsP6zcPeJprmcjOjTR9yG5Isb2HKYHleiKots3qrmUuiiHGY9FpYYQbwlJZ5si26No6+5sivbpiDP40B2W0jEcZ5cjpGNR+CTizVOa7/SUMHQ5inx4Xm9O0dMX44UhpxltedCEs4D6BKLGFCI5JOYxxuMz22f1ZVCLJ2XThD2EpmB9mkIlWaJEOmN0omdjPCzifR+0pWrSnsPIR0N2RbHaN6m3vVBxMTrJRCZ+U7RPR5yHhSaL8DGsKZjW4MO48KoNjXyqxpqntNDp6dCWkWZr5hSge9nTPQtXFNAUbRHNfWMvsdfv2lXY0z27pysXyb47httPN1w9BwCAXUMnRXOXP2EKAAAqnR9pNmH9ALUFAHQrnRfNJtZQsOwCAOhWTEVTZ38QZV1BpMfzvWFjvJWGYEDgPO0fcosIjCfifRPa0SYAABCJqWjq7A+irCu0PhGJVhqCAYFrCqf1GkjyTWhLqwAAQATG03ON/UGEdYXkT+Hubm+lEWuB4WFjaQEAAC1jKJpJjgCqdUWymUVbfDp2qaUFAGC3Yn4hSHEEUN0ooswsiJmVhpShiUNHc5YWAADQLIaiqbM/UK0rIs0siJGVhvwYv4FDR5OWFgAA0CSmI035mXl2rUZ97F9vZhH1wL/6vL/8GH+MQ4etpQUAALQDPEYJAAAWNCua6v3nuCMdALAPwEgTAAAsgGgCAIAFEE0AALAAogkAABZANAEAwAKIJgAAWADRBAAAC/Si+fLZpXSLAQAAXcfpZ0bVwMiR5h//4f/oYFkAAKC7+dqf/Lk2vLPT8+JiR5MHu5LK2E6XAOw/bt++bRX/wIEDUZuwpgkAABaYiubs7KxhzOnp6WYLAwAA3Y6paH7pS18yifbtb39bE3qIvD5EerZI8U03YOYkOUHIxKvkPcPsbSg9RiYOkyvvkqevyZu+QSeGYjgv2HcWSVkq7SPk637ZpK9R0VScWvOP2sK0AcOitn3fKI6SykP8g9DXhPfIk9vk+HorSQPQLVhPzz/ztZtSSGOhkLzbbXLzAHmQ8HPyEHngAAtpz4mq8LnDZJ7qIE38pJz4N39AvvqJ4OuDeUJ+EFbM9vGNIXJ5hczcctWzdK1TGcn4rdqJ5o1N8xsPuT8PVCVf7/dU8hB58jAh220sBAA7SVNrmlQkq5rgO3fuxOx0+Tb5/CHyHhWRT7KRCNVQcoscf7WZ/OM4RLK3yT9GbHxvk5BHyIPr7jn/+XvI5bfbXQChGN+8xT/Tau6HC2JHSd9tMsEH1OU3g1+ImUdIfYskvTAKgF2DhWi+8cYbjz/+OPtkr5iU7/6IfDXPFKT0WXL5R+SBvtCwhU6c+3g0NlT5CQuvE9J3gMyvkCe9Se48n0c/2E/mf5N9vfkDPpYRZsE0wuf45/kxcvM26aG7nwwvAtwil4mn3XTAS8jXbykJahFHWM5nrrZfPknmDwRlC+AZfbU/nKBQ1It0EEqCaroh3rD0srM1IrKcV5gvP+JW/ArxWuBt8lUho/jdpfaUGvzyPW6aF2+TEwd42/L49XfJNz/BZg/yCPQoOUGVdJt8NSZHAHaIZ5999qWXXrLdy0I0XcXUkaiYjJ/Qs5aN8j53gHzzJ0ywfGZOsqXGIh+kUPWceZeQA+TGCnn6FttET8jj1/ip+xgbwnz5N73ZN53zrpPPPhKKUFxJmJx+97qr3Wxufp3rdThBJigHmOwGRN2rcMAttl82kZlXWeErXG4cQaRjrmDCTge8bwfVZKt+Xql6tnjkk5GRpTJIRf06l8hQCxwK9g0VVVfNmUfiGvxHK+Sm16o/eoz9KlAZrfMpOY1/kyr7GBdcb02TTtjpvqQ/8qAAYKegikma0s023HJkpJjEHXz9Op/EhYTMGfF510meXuQycZt891ZoE51Z09P1QUJu0JHLGHnyB3zOS2MqEeLxZ+j+3DyUoMNtYXzKpUcPnYD7WVPBJfIIjukm4ZdHHiHffZut5PYMEf/t7J//JEvhu1wEy1XypFeqi2+7y75RkaUyGBbV2TdUVHVfgwZ/0kuS6unnxsiJLffXjvCB7cQiS5Aq/jeOsrFnli8ZJ3YKACnjKKb/2Uo3m5qeNwsb5fWRK1daScNVIjo0q4yxybs1zgz9qDs3lxOMn7rGEL2QSq6RKw+RX+cfQ+lzxdeX6lBs5BaJKaqOyAY/xFcqvet77/2UjTQdCWYd/Qn2A0Bl1BlrU2j5cQEddAO+YlKtbGK82Z7puSFslPeb5HvXXFFw4Xrx5aPkPW96fuNdzSY2b73trqCxeeub5LMnyWeJEsGgGI52O3NzIiV4KGKfW6R+gAkf2+WT7pIf8ULUrNnc9qB32w0fXH/zFrsU9rmjpHzNu9UprPi0VPMPsXXD95yKx0a2JrqoUjUTGvyTQVxnIv+dz3pLt9dIfcxd36ByWb9CZtb5QJu3xlehmKDLcFTS101zrKfn/g1GprNykYjryHQsQ7XSucXvyrtk5ifBqGrmbXbSsk18Lkn5+g/IPJ+3sus2dFAmRfBVj8vcvDd4pOl/zxu4Odp9edONJicYoZvf/AFLbYLw26e8wAkvZMK7DcDNaJ0tCPrPC87zSet7QjUvrrDCPCmkz6bDfqnCbaJGFqujNrJfcffDCivhk0pRtSQ0+DW+TOlcZ7vNJ+bX2CTdGUU+/S6rMstFmLMD0IWI40pb3TQVTf1d64aotxZ5IX7402ExDeIrOvveOimKYxYpwi19mk8vRu6iSfBV3VcpGtH/APgZibfd6ItBlIwWTSO7myKK+p5fBucDX4j8+mJ4gBlVzaQGf1qpdRByTa+VNIXjmmAAdgZ1Jt6RNU08HAkAAASGHfuCTjxEAMB+BaIJAAAWdFY04ZwIANhjYKQJANj7bG5uJkfyyOfzMVvhpwkAABak4qdZXxnNDZfnKo3JQvCdLNeWhrL+Vr7BjSKEEFLy4umgMafJrLjdC6mdyRSnwpGDAhinpgZq4wAA9g1p+WmWSqWNrTopcJVcX6WKWHI2VM/kVgdrjaWso5Vnqq6weQrHRGqlXxUpR7yih7+FyUZjkqefWRtIEMsOAG0FYI+Smp/m4GDv6np9iKlIbZPMzZU2eHB9a6M0OOJIS3ZoqaHslz3cW16rLSmGjDTyEtOmZsoPAADNkp6fZv9A7zRXzeraxuDA4Kojmtn+QZKbXomegTNVzY+IAzdvjDktjjTFGX1pOWoAWhXm7M5Q1t+PrQL0hyPGLgwIOcqLCqXlyuDqcLlMyiQ2BQDALiRFP81cnsxT1TxMNXNkhKy6oXTEWCOjucwwCS9fThUzjryxwCyJH1HWV6aHeyuNRoHL3XxkPG/O7s7660uHzzv7McE7X605l8xYEvlao+GrXXk4Jz4RyUQ5yNFbVCBCUmuHa8slguk5AHuQFP002aDyfK26OdU7MEm2xA10Wt5Y4mIVjDn9qzY09IwnZxHU11fJ8qyzbJnLl+JiSgNSGpupMxPmxhCb7Dv6SDMX1U4Ucz7OFXOk1SqtbtVJv5wUAGAvkqafJpWXjel5MjcxSUKi6VEYmNMsX1Jd29iKF01Twhed2J1Rrl5TYc5k5iosF6qXI1vCBSlj1KQAAHuQVP002VhzeHNgibAX1nDYyG9zwhtTrk2V8jVpH3apvXdiSbgcVNssk/ysnC6dXfM1SnZlfjD6onrvYUeSnURY9lRGl4Yma8sb00yaS/kcyRZmlxNkU8qRFlBNCgCwF0nXT1O5Pk4DKmxo5nyjozx/EdBf02ShNMvc8nzOiVcqlYgkSdkhJnN8M9saRWHET4TFXOb7reZyfD86rc6tr4bSG2XT8qiaBDnSWLSAhVBSBarKxVw58dZQAMAuIxU/Tef2oIiQ4OKMuJUvcsaHOSm46eh28ZIPVEsTKxQSlIrHlANDJVfSCgdk1WoBAPYA8NMEAAALYNgBAAAWQDQBAMACiCYAAFgA0QQAAAvgpwkAABak4KfJzC+IeL9i6I52IdDEthKWawCAHSUFP83CyHJp2vPSJOEnxQEAYHeRhp8me+Zw2vXSdDRzcBYjRQDAriQVP01RNT3NDBlZRpppamw0Cdk8P5qZYrviIUUAQNqk46cZqKanmdUzopGlo30a20od5SlSYc8rht6OAQAAqZCSn6anmv3+3DzkPumg2lZqKS2P+EaWw2vVyQJUEwCQGmn5aTqqWSWeZobdJ5seLjInNwAASI/U/DS5as57mim5T9aJXjSzOhvN8qYT4hpZtlAmAACwJT0/Te5AvOpeN5eMLLOBLXEYwQEzsNH0rDZdI0sAAEiPVPw0HdiMfCj0TbSjzEbYVqo2mnrfTAAASAP4aQIAgAUw7AAAAAsgmgAAYAFEEwAALIBoAgCABfDTBAAAC1Lw00wywWR+m84rzuO8O2KhSawNBI8VSV9jy+Abh8D/AwBgQAp+mrG4DsX83eRMv0ZJk7rZbPbswaQGv7se/h8AgGTS8NOMpr4yvxE81pMdWqpsZs6nKFz1rY3S4EjWy72RUrYAgN1LKn6aDmyCvNlLpgIrTPXp8Vy+NLVWHdmad55MzwpPqRN/Hs1n8cRPjSY1EJVhYNnZTzRGnOzRztz0ijC49bMTs84GKwiYwgOwz0nHT9OjvJGvCVaYI4pNUfZwL9mkg76JueH59VnHf7M8N7GUpXsI8+jplf7ZIDWq4muazKrnRcvOWl5nxEmHlzUymssME29FVZu1v4JA1XN0JdUFBABAd5GSn6ZLabDf8etwrDBH8r5lkQudLxMywI06fP9N9j6h+spqmREkNDHopxZBLmTZWV+JMOL0HoKnesjHnJqsg1caFSbx4DsA+5u0/DRV6BiTqdeq8Mo17v82N7BEFP9N5oEUnhkzLfOh+rgRpMNWKvMjJFsQLTtreTl3qTyFgTnHhk6TNQAAuKTmp8mRrTDpZLg3kzvjqiGbB28s1yZ5VL7cWBym48QsCQ8OnTcAh0RQ9N3kyts7sCRZdtbyqhFn6F3C1bWpUr6mzZr4b+SgCjyfx/QcgH1Men6ajNLGfCbjXZrh6dD5boUNBZ3N4n2aTCcJ8Wbg7Mq6F8/ZeUVMuDBZ2xp1kvYTL4QsO3N0ti0bcYqJ8pGsm3l01kIkAMC+JBU/Tcccs05lbnC2EbLNZFDdbEzq9xL8N5V4Yf9NxZ9TCVK3R2eekDUAYP8CP00AALAgRcMOyZsdAAB2IXA5AgAAC9ogmj09Pb/7md+lH6oUUm008DQiAGDP0qpofuYzn6GK+fLfvbyxsbE4vlgghUwmA90EAOxVWhLNYqb4eOHxhcoC/VwoFOiH8eJimwoGAADdiKlo0hHl4z3s5va//D9/efMmc4ejiukIZfLOgmdlpGmm43c5S6Z1rpdiAk1ZZhgYbraF2FokFK+Wnw9aiZGKOYhZUzgdEBSIfyfN2p8alKk4pa2+6yQYhIeeT7BEa7HanL9qvGOsjNDmrEIbmna0SzAdOnbW7DaMRHO8OP54zx+//Helj3/846TI5JJ4Q0vjjOaCx36mV/ptjgb30R5u1sF7LnOmQ2pieKS2+4Cur8yTCr9dX/xB4Q1Vby4XixIWJitrGRMf0VIpeFSVPVNFQzp0blfXphwTrJXRUSnxwshyaVp48JYWhMz1zo+utKkMir8q/SUzr6BZa3jdzfOjVZ2bW12vD1kVP8ZRW/szkFgqo5IbHyp7HdOR5kJlzPvgzMGromJSVTUV0PATjwbUuXGG353sPnPTXW3ZmZuimBvTQEN5yN26ocR9bSpChWj+fJUUkk6FwcFe7+yubZK5udJGZ1rMtQ7Q4xgDeBrDjo3B2cn2/Xwp/qr1lYRdQoUzaQ2vu9385gaWBsiopWpGZdTpA9j0UNnj2K1pUrmk6ukLKKVSqbzy+69YJOGcEuIvmzelDcOnaHTkNesZZ4QSCcw05+ampqbcYDY+ySmunZElYfkO9g4PT4n7upPrUHhBtOasDK4Ol8ukzCenNd9o001BySLSA9QrGBtsDGh+B6IbSi5ezqIioZUOd2BL5XnKN32KoX+g19Gr6trG4MDg6oY4QglbjuaEmgbLDnIR3PyDIjFr1DX+uVymI9uy385B/4uq6WgmcQekJGSfui63W2JnEdVftb4y7fW1uOTi1zrcmLOacOUIFLublr93YInktsi8VyM1Qfdg5gdecbgs1C7iSAg3hXC4svjas4b2UHBIy4Wvhw5aw0Nlb2N7Iajq6KbzZXF8kd1lZIT33Dfv9CyJ/wF3fDEajWz0T31gpjk56Tzh6MxnZxXXzpjZRHl4s8Iv9fv7asOXDgvWnGuHa8t0YuqcP1n/+UopBSdoOsYD1IskjqvKw7lgUZMdo1lt9dVim1akf33aqYl75juETaKiyeX52X2YaubICBFcphTL0cqgV1PWZE6OXneQkM9pY2TLKxKPMNBg/iqO9AwSos4ZA9V0NDNL1nm4Yp+qUIjrLDdx2V911utrTUcwSXUbkx2wmnD1CBS729VM+mvk1ohoEnSacZYmNE+cDzRqv5ecvt+r+sOVVkF/1qyP+NVUCz8SOmjrhofKnsb66rk4zBxbGHOm6gb7+T+59HA4oz2mXRzhoNHj+8U305R+nIni2hnzu+g5bCaFK9acPmruwaZ1aw/QYE2TH++06OpoSFtsw4rU1wVv0EjcQaM6TGd6db5W3ZzqHZgkWxHJcsvR+sqqU1Nhk2cE2C815rwcIQFPNfvXQ3OQ6D4KyhndWULyIX/VmHewirWmmevCVe/D8P7lqXLZHfCVBmf7iSZBtxmFDyL6fo9uipizJrLwJMm4dt9hJ5rOwiWdkv/9K39PFZOHjFUXq4uL5nca8WFNjGiyk3VkK/BWDy1iKYRX7tXn413fTK3hpjnuiaRYcyblHucBmpTjxFyGqqZNKdtFtD0J7YyN6XkyN0E3b2ljGBDVmOYJaA1PE5NN7Kwwjr/qrH3xDGHjTHdw7o73aoNtSrrdTQHCmIomFcpikV0096fk9IOjm4Wxwsull00zdM0shasctc0yyQe/dUzmsoXZZU82pXUmftPJ8rKQYu9h30bTSUfxzdQbbpqf9qo1Z0zuPgkeoF6sqOs99KQt0r0HIhuqCULeoAFuexgmMLzJ4tal0LDlaGVQ3eR2h9SYZESOkNwvXDXnw2vdcrLadovuLD8Njb+qk6dyxEpVY6urEVUWi+4lw4Z0QRF4jbYOD5KiJkFb4g5Xn4im0BQ+1B3mh8oexlQ0X/n9V14hr4gvoqTSuVhcHOOzdXYrUgL+miYbfdFUcsvzOdces1QiSr9mh5hsZkbZfFVYZyL+grc7ZmPX83KeIyadaPC/imun1nCzbiyarDCCNWeBHjnFHF8X1+Qu7hbrAeriiqO6huC8ZK4xEt9QdrjNmvEKzM8Wfg3X0PlO/85OxXI054+phRy1PqfZLJEi+P3CBMZtZ6lxuHavhq4PSn2UzdbldtMdKjHVcK1Tq71qX7sJilUrlcRk5CoLuN1N1obJYC18fYuvP65qErQk6nAN1FNpCqGp5cKHThObQ2XvYn0hKPwldF0oEo3XpSbMuVvCv2eCR4iKPBSOJmyKcu1U0xDvz/A+S2UI4oR2Di7/qC6d4RTiPUDdON59HBqHUL5dn4VabKOK+M3AblXmow3xHpgo1HtZ5Kyja6pr+FCA9D3IK2adQDA81feR7qCL6CwRJctCTF+reciNrMHp7kn5ZVNeb0cmGP4Q3+9Rh2vkWUNIUM3I7jA7VPYBrRt2BLpZXayaXRQCIbJDEySlm4arwl03Jf5mkeoZdt17f99Cki4pdnd7waHi0hZrOKqb4+1Ipx3sStdOOpxJ51hUx26pZQ18dmmb79Jitx/4aQIAgAVGomnzjDlZIBaRAQBgd4GRJgAAWGAsmtVikVQqrjcLu2GzOF6tVHAlDQCwC8jn2/acgsVIs0KKwrXxQmVhjFSlB4H45oKtw2Y6xpEAANAGzEUz6WZM25uNQs9ZZ840aSTbGjE2gqJjTdfZwQIAdoxuWNPkT1A0bbjbaXblPUwAgE7RLtFs7Z724Ilc1YhQNWpU/SV1noMho0bfzlL0HwzZCIbNFoVNvpGixmdQcasEAOx12nNze8spOC5E9S3ZiDCnMWpU0XoODvWva+wsRf9B0UZQcsYUNrnOWlqfQcmtsitHygCAtmInmoukUGX/BfifG6SVh4K4ecrsumytWN/SGDWqe2s9B/V2lhG+kyTJbFHvMxidGgBgj2InmpJitg1rg0tDzO0s4TAIADCipel5mwSUz3wnGln2foOwl182Jxs11iZM/SXN7CwFYs0Wk3wGAQD7BNuRpkuFBG+5yPDnJqvca9NCSIX34XgDQo0RoWzUmCWKT2IUBnaWgo1gpMOgK7VK2cztOAEAe4imR5qqONqMO6MMBzXhsjFPlBGn6jmYYPLIP8e4JcouhDE+g7gtCYB9g6loZrj5W8HzG84UhWeBuJ1HseiKpvJactHD0QH35wAAdiumotmQtFCRRk2IS7T/NgAA7Da64YkgAADYNZiKZrG4WK2O0/GmyYeOlhgAAHYQM9GsLvJ1y4Xtq+/9zbfvP3hfhQbRD4R83w359wUaZ2GBFMhYJpOBbgIA9iqmI83xKlkokIP3fezC5V89Rf6ZhvzB9z7GX3tOWMhd79MPb731L4VHcYEHALCXMRVNqpjbv3j/QUL+9a4DbojnFUdD2KZ/f3/60V/W7+w8oRhcM+ffiWcNJzy/6EYJuW0GFnL6lCXfNji5AQA6ialoVglZ/N6D5HvsvqLiYpV+P3fu2J9dute5PXOx+j79l0/PIyiVmCMHKXCVXF+lilhyEw49v5jzX23qSazjtaGKoGdxBAAAaWIqmgU22Fz0787kL7742cK91eK4e3tm0rvXBgd7V9frQ0z8aptkbq60wYPZU+eDI44isrvHlf181zg5nN9PXlce8gEAgE5id8vR3zx7/2+/VK0sBANK+pm9LCiwdY98Lqh/oHeaq2Z1bWNwYHDVEU3+TPf0SvQM3PHyqGttNIWRZrxHEQAAtAk70fxx5hMLY4VKpfGzn/3soYd+iYZsX/15JfFFGA65PJmnqnmYaubICPEMh+iIsUZGc5lhEl6+nCpmnMeIWGBWfWw8RGB2yW09rOoEAAAWGIoms+O482tfzBHy0Ucfbd116Jf+N5XL9+761H+761Ok+v8epDH+bePdh37pL+LSYIPK87Xq5lTvwGTIIsh7qJvqXTDmFJ3bz1TjDYoEs0tmZ2xWJQAAaALzkWb17rvdIeXdH3304Sc+PPjT98ndTC4dsfqov59sxIomU82N6XkyNzFJtL5qhYE5zfIlN3VPcHUDAICUsJue02Gm8/enPz3ihBS9a0Pf+c5vH0nanY01hzcHljxzdc/o0htTrk2V8jVpH9e98nCcjaZkdkkGsaYJAOgQFqL5EYe40ilf8Pn5z3+enIRyfVz0vPQMMx38NU0WSjU1F2ejKZpdljA9BwB0DmvR3LrrEJ1b/+N/fqxw16KjoQ7/8K/Ze+8i+qvnqt2kEKIxQdK5bUbZaOrNLgEAoDNYXAh6ZGoq+EbIqQUmowsLhX/8z18l4gYAANi7GIlmtUoKBf9mzOAmzbv/aYp+KdxVFWMCAMAexkg0J5Y+NkruZ5/0mljwNyxCNAEAexoj0fz+978fs/Wv//qvf+d3Fh07OMP73AEAYJfSBuf2L3zhC3/1V38FG00AwH6gDaI5y58Af+GFF6CbAIA9j7Vo/vjHVz888Rvu1aDCWGFsYXp6mn5cXFyM3Cfkj8loz+soYZ0JAEgdO9GsVhcLZPxXxgrVarXAVG+xWlwsVAxGl7FWwnbEaCVkFADQYSxHmtXxKqGKWfjtP/jOB4T89Ml8YYyGFQsLlf/4j//oTAltUO+iBwCAtmIhmnyYWaguVscqFSfkztu3q//rkWZuzmQT9tVBZ/Dpfyb+LJ6PS+nX6c1eMjVVDubz1TOZIr/FvkyWa/wJ8/UzmWEewqLkAqvNwd7hILwgG262bdgLANhn2Iw0q1Qe2bTcX428++67+Y3vBvuWh3PBoibTsYm54fn12aGhLLPYmJtYylJVE957Mb3STzWxvJGvNRqzVO/WqpM03+ra1Fyllp935uD1FZrsZoVffOK71GeD7ELhS/3rvuEmn8IDAEBzWIjm4aGhrep4QbjBvTo+zpQs+gpQgDq4G1kmzMm93/XCrK+slhn+DoMTg/RPP9tnaGIuw1STUM0caIi2cqXlEa1kS+Gi4SYAALSAhWgeOnSIyhUdaFbHM+wpIDro5O8F2pg492t37mxvb9vlzPzcpterZJUMzmYds7jwRXUqo97HwsBcca06QDaWRyK8OAEAIBVs1jTHM0wxqVay537YeLPK3ko59sUvfqGprLkLZnGYjkGzzrfSsDMJd102ReNhpprFohO1HplifFbnq+24zwkAsL8xfoUvU0w6E6/+25++88P/2vOzS392/eBv/Maxz38xlzPaP7Sm6U7WmU4S4szAw9aabHsh9F4gqpqklOdR2fspi7kyW9w0LHzIcJPgzWsAgOYxEs3FYmZsgeomoYr50EMPsaB72Rsp79y5Y5RJlNklCx8SvkvWmuL9Q+wS0EQjK0ULIng3G4VMNoXwoAzVM5m1w7h0DgBoDjPRpHPxcXLUV0yOqWK2Dr/PiA4+J5Ojxibhfm4tJQDA/sZINCuNBp03L1xj+DexW1/5aRqNt/sOJAEAAMR8TbPBdbOjRQEAgO7H4uo5HIwAAKAN1nAAALB/MBVNxzTTBMcpDgAA9iSmovmlL33JJNq3v/1tNVC8dO0yV2mMbMWZbIYtONvjvxmPZCvXisucU/ig0Pw7ScslBP54AHQS6+n5Z752UwppLCTomXfpmt0hOeCrX30rwW3I3+qabnSlCkQpVKlU2tiqkwIv//oqlf/SThQPANBumlrTLOhfS9mpOzfZI0BrtSXSjaIZyeBg7+p6fYipaW2TzM2VNna6RACAdmAhmm+88cbjjz/OPqWpmISNSTdK+ZG6b6/J3eHcybs/Bw7WABQDTXfI6gc436Wv0bn76cgJl5Yrg6vD5TI391SS6B/oneaqWV3bGBwYXN0Il1IwAJWsP+U4WjNQpXZSHDwnCkCHsBBNVzF1NKmYislmQb+V6UKWrLj2mktMHhxzTPbpTJVrT5E4dplMc0ZXarNkOuzOuXT4vOOoyfY5X20MrIW+8qzDD8hz6amveEacXl5ESGftcG2ZTrv1C4i5PJmnqnmYaubICHEcm4Kb7H0DUNn6c0iOozEDpaWSaifEoQ0w30xvAABMaMMtR82PMQ3XNB3qxLXXFMwxmeXH6la9viXYZVLNWWJSIrlzzs7mS1PFDHsckz/wXt8KfVVydORJzYv0h9Kpi64iYZi10vladXOqd2DSt7NTx4OqJagURzUDZYukkvcoCeLk8lg+BaBzNDU93x0oQ1fu2FFlTkps01D4q/HF+WxoxzinJaqaG9PzZG7C9wCtnsmJI0TtXiZxlNoJ3qMAgI7Snul5qgjmmGzI1TuxlM0JdplsdpqvzarunPPOm4gma8sb01vVlfmi8LUe8c4ONS//jUbOjrH2dGzv4c2BJdEDtNd1WKptlkk+YuUxHEc1A1W9RxsjoXKSQaxpAtAhrKfn/g1GbbjyozHZrIVuS9IjmGM6xpvMRc734mRjMDbHltw5s2R2eTWX83fK9otfI72N1bwK4XSosHFzT/cSTrjwbFQqplYYWZ73XT3p/roc1TiqGajqPcqK5ZWzhOk5AJ3DVDS1d61bUphsCGKoN9nMunHUl/GKIZp9VR8jOUTaSU5DylE14tTvmBVyKSQXXim4xvpTrZzGDFSpb5RpKQCgrZiKJh6O3DlgBgpAFwHDju4HZqAAdBEQTQAAsKD9ojk6OrokL+kBAMAeof2iCcUEAOxhMD0HAAALmhHN4iKpjLmfxxfJ2BOk8MuxO7RujgmPSABAd2Anmhcu3/7v3/hn+iEzTiovFMZfI9VqdbFKCoWCL6N6gse6qf5lzkx03lQYAAA6gJ1o/uk/HHA+UJWko8uFJ0iR28RR6az+SyFhvOnCn2/pWlNhAACIxU406XByvFqY+7U7d9/NvlKVbCwUxNm6EY6p8OzKdJQ/ZmCdSYTZ/Ob50UwoJOx0Sc5kihuB12RvCm/IAADsP+xE886dO4uL/7RYIP+31Pvxj3+choxX2TCzuJg0PQ+Ry5c2mNVFlD/mCPE2iSFTzDFzSfDQlJ0uG5UzmekVZgwMxQQAdAg70Tww9U/snyr5L9WNsbHC4qLr4U51k45Ak94V5FPbLPcOzEb7YxJvk2/oM5L3fSf9EGWvQmGy0pspDtNxJxQTABDBs88++9JLL8WHxGAnmnQyToeWVCsLhUK1yq4FFf+oStyBp3EqzusrzHMt5XOJIX7K9K//RjMAANAhqiT9bLWv9S1HdDg55mglYVeBFuh4s0osFNN5gcREg72+wkH1rCRbpLzpvEktMkTw0PTiuK+mqKzRSXpKr8sFAOxSHN20VUzS+s3tbLxpspopWGd6LwvztymeleztvhvzmUxZDCHsJROECB6aob1y7tUfZi1JJ+m50bReMw4A2F34WukrpvncnDQnms5FczrAHDNcOtRaPSb4Yw7ONoTnMaNSEALZF6+Ak40GAQCACMQxppViklZGmqaKCQAA3Yejm7aKSTrx7PkPf/jDe++9t6UkVOdzAABoN00oJjEUTXO3N6qY9913XwOzYwDAHsVINM3d3ugYE4oJANjDwBoOAAAsMBXN2VnTN2njFWwAgD0M3kYJANjj3L59u42pxYlmEzltbm62UBgAQIh8Pr/TRQAyWNMEAAALIJoAAGABRBMAACxoRjSbfmYTAADaTsqKZC2aUEwAQFchuhaloEt2ognFBAB0IWnqpoVoQjEBAF1LarppIZopj4EBAMCc1EZ1dtNz6CYAoAtJcx5sfSEIugkA6Cq6/eo5wZomAKCbSFmRcHM7AABYANEEAAALIJoAAGBBm0UTTlYAgL1NnGgeOHAgtXIAAMCuIFI0v/Ynf55mOQAAYFegF83Tz4ymWwwAANgd4EIQAABYANEEAAALIJoAAGABRBMAACyAaAIAgAUQTQAAsACiCQAAFkA0AQDAAogmAABYANEEAAALIJoh/vZv/3ani9Apfuu3fksbfvBP6imXZPey/YdZbfg+PGz2YZV9IJoyxWJxp4vQfiqVyk4XYY+zDw+bfVhlB4gmYFx/5hd3ughdzT1n/32niwC6BYgmAABYANEEAAALIJoAAGABRDMVbr35lVky/eJjh9wvxXGyUKFfnfBpMhts3dO02A57tblCzbL34R3/mvP5jy5eH7+/femm0owQzbR5f6E4fvTi9eEPv/KVN+n5v29BO+xPmGK+9Wjl+otc2t5fuOeehTbqZipANFOFHjEnrtGxFT1G7n/xRfZ9p0u0M6Ad9iu3qm+RhWl/MHj/+PXrO1qeZoBopog7uOJHjDfT3I8YtwMdh5x4wf3M5nG/klYJdwpx4vrEQoUvRDx6dHycN4I7kw3i8ADWgNePkhdeeO2PLlbu+Za76Qm+6rFT1YiGaeaj00rBlI5mR4VccSGW0hS8vinVAaKZGq+NF3n3fv/98ft31WSkzdi0AxuHjPNPTBrevLXHf2NuvTnLfkyu3+/+ljBeG79OQ657LfBioerFYYqx8P71YRrn2j2V69dfZDHceS+PXOhK2dSi6Wi14l85QZzGYer5lTfZT8pbofqmdXhANFOD/xj+eOGeb705vHuO5g5g0w7hkdde10w+c5V+SJ5YGL5fH+dQ4dEn3vrwFovzaOEQ3/Qaw9/z0enHds1xpnZ0dMW5xr7IdpHq+3uPplNYiGZaOEf2oeEFUpx9s/JiYafLs1NYtAOdxotDidSKuHtp57XojkCVnsxWb0lq3nRHh+t768232lbQOCCaKXPosemFt6hcXEzpV7FbMWyHo59yzq4fX3+N3LPHR5pMUIrL78fKnhCHjSyP/t6L5MNg0xPj7qIHG7hd/71uFFBeAfZr+Zh39ZxOui8md3Socehe37qnMi3Xt3JPOnWAaKaOIxcnxvf+fDOe5Ha4f3jhW8V7vDPhiYXUirZDsBb5il9hfbMIcZ7gtx/c+jDY9OLFhXuc3Z1t3QgtZYXQGjhLmO5Y8VZyR4u1Y3sx0ZXrm9I9GBDNVKA9/mLo2/Xr7ncnXNy6l7FsBzFCTLRdj98sfoXpWOr7nzp06P6gpmocKZwRXFDpZtRujepod5v7Wa2dFPJYOgcGRBOALkG88YYOnbpf/fYpEE0AuoTdMU4EEE0AALAAogkYMNkFwBCIpgzeDAGaYB8eNvuwyg4QzRCJ71Tae0S9LAyYsw8Pm31YZR+IJgAAWADRBAAACyCaAABgAUQTAAAsgGgCAIAFEE0AALAAogkAABZANAEAwAKIJgAAWMBE896Zv9vpYgAAwO7g/wPmxy1yiwiZ6QAAAABJRU5ErkJggg==\"/></div></div><div style=\"clear:both; line-height:0; width:0; height:0; margin:0; padding:0;\"> </div><p class=\"P29\">The above window is shown if there are any running applications that might be using files that will be uninstalled in the task. It is recommended to close all of them, but false positives are possible – keep an eye out to avoid losing opened work.</p><h2 class=\"Heading_20_2\"><a id=\"a_7_3_Uninstall_progress_window\"><span class=\"heading_numbering\">7.3 </span></a><a id=\"__RefHeading___Toc574_354986082\"/>Uninstall progress window</h2><!--Next 'div' was a 'text:p'.--><div class=\"P25\"><!--Next 'div' is emulating the top height of a draw:frame.--><!--Next '\n            div' is a draw:frame.\n        --><div style=\"height:12.144cm;width:12.488cm; padding:0;  float:left; position:relative; left:0cm; \" class=\"fr1\" id=\"Image3\"><img style=\"height:12.144cm;width:12.488cm;\" alt=\"\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdgAAAHLCAIAAADk+R77AACgxUlEQVR4nO2dDUBUVfr/Dy9a2+4/8QWGISMFFV9Ax8DSUhTzHZSgEkkLK1fThKywYktC3KINMxNfwqwgdQktWBV8KRNfsjDBUFHEkgwRGF4U29/ulqnzP+feO3fu+9wZZpgBns+2eO+55+U55577nXPPvfc57i0tLQgAAABwHO62zc5gMNg2QwAAAKfFxcXFJvlYI8SgtgAAAEhRDC3SaLVCbFZ8QZ0BAOicSGouVxLNirIZIVaQV8lDIMcAAHQeaIUV6J5YdtkIcoqsJMRmpVYcAYQYAIDODJZaBdnFhyS1WFqIlRVWzTbgWG7duuXq6mqPnD/++OOnn37aHjkDQLtDIKwCFZZUZDpQIMcSQqygwgobkgnbCydOnLj33nsdbYVaLl++vG/fPoUIjz322Ndffz148OABAwaYzc3Suo8YMcKiE92+2hZod8h1sB07djQ3N8uluu2226Kiou644w47WcWqMDt3IVBeQYgFc8T0NvcvEolvO9VlbOpf/vKXX3/91dGGqMJAERkZKXn0T3/6U1FREe6CxcXF/fr1U5Ob+rp/++23TU1NWOItslZ9/nv27KHzDw4OVl9EO6VTVdZ+yHUw+jKRS/Xbb79t27bt8ccfd3e3+M0xuSGwZExWcCUHwixCIySVVLAhqKGcNLcjIb5lpA3K+t///qcmGtZTuUPYTty2Hh4ekkePHDlSX1/v5ub26KOPqqmRRXX/97//jbXDooZSk//169e//PJLnDO9e5Li/vvvDwgIsNMEiwPpVJVtA+Q6GH2ZzJ07V5wkKyurR48eV69e3bp168yZM/Ho2KISWTEVDHsFosyqsNzQmLvNE2IFFZZ7cCceJrdHIaYrIikWVVVVZpN7eXn997//xafW7K8r/h3Ozc1VY1JcXJzcIdbaGzdu4CHq6NGj2Qu4vLz8p59+wmd3woQJ2Bg1iqlQ91ZGVpME/yx9//33Fy9eFB/CI/pjx47h0SJWKCuGLU5Ip6psmyHXwRQ6Hg7v27fvwIEDjx49+vnnn0+fPh2PqdWXyBVixBdcFwpBWUg0NBZrsaqpCYPhp11vFHktmXefh2lEzB0dKwlxS0nWuvLA5+aGeKivqRxVe9487EmyYjdanydBYdR2+PBh5bSenp7du3fHYxxc35iYGOWriP6VVmmScib4b05Ozs2bN/HljWUXn85ffvmltLQUHxo5ciS2SqVcWjQiZotWE1k5f5wPHrxLqhI3zvHjx/GAEcvT8OHDRccF3UCxVzi0H3aqyrbCHmuKUOhgCkKM8fPzw1frwYMHd+7cGR0d3bVrVyl7ck4w23dNNhomFmL6r+R0MDdQPFPMovTWBF9YJcRXrMiCHAjdguP+Fqx6fEzORK/n5o7wkLPLcMtY6C2DyjzNQ58wuVG/QsLbb78diyAe5GJBvOeee9zc3JTjs6U8+eSTkhGwqm7fvl25XDoTzLRp03Afqq2t/eKLLyZOnIi7FD7q6+uLR+jqm0ah7pKRBSfa6vxxTX/++Wc1Ofz++++XLl0aMmRIly5dxOZwuoFir3BoP+xUlbXQHm7p1hQh18EU+iqb5O677x47diy+cLZt2zZ79mypiD4TKduuHs9an/+9P2WmQTTtyx0Oi6VWrMUiRf7JJMTcMyxhEEdqWSEwGH9wBIosn49Zbt68desmvuW+oXxUOZoVpVKZSWVHV/DBBx/E9zKSCf/5z3/iOB4eHg888IBZg24Sw0mG8jU0E4GNgyPg+6mHHnro66+//ve//52Xl4cP4bE5Hkzh+9zx48dzk+BzgcfsjY2Nd95554wZM1TWXQw99LCo3eXyx0Lz+OOPY5PwPYfcvDnurD169MB1oWfxRJkIuoENe4WN+2GnqmwrSremCLkOxl4m4iQ4/DgFN0Qqpsme/zf8wWF7j5xrGo4HxYIRsaurK3dQTCOY7ld4oZjaQO47f0IzqEfrP+1M/rSEihHyROp0KujqsQ/fK7yEUO+pUzVYVY2yS12MPxWuONTruSeD78T5VO1563CvhU/ce2fV3re/6TXB86uvfsDRfCYsmHNvN4QufvnON73IJrUxwWv//jLO0WsntmTuryWl6WbORNu2kWPr3tynm/nypD44AbVPjuFd3Dlv3sKt/scff7Ab/AxIJFIK0qGyMq+ZL99/hX9MDtzS169fp7ITn4qbdAR8tKqq6q677uJO7e/atQuH/+lPf8LXj5rugyPTGUqWpSYCbQyOQ0fAly7+kTh06BA+DdiMsLAwPKDWarWC5F999RVWAbxx9epVwSGFuisXrRLl/Lt164Z/GPA9e1lZ2X//+1/uIR8fn+DgYPxjg/urTHJON+DtSvY0O/dDFXTAyhpz8pmAyzhrKpEuR2CGuPCXB5x/h1s6oopoOvZJZtNo4wXLzU+yXWQ62E0KycYUvNaJ7ymvXbsmFZNbZW6DH8UKc/KkV8wrk/v+emLLB/trKfG9N/a18H5Yfy/sXnHEa05Q+da9NQjdPe35eff3wOldWr7/cPXuGiK+IU+mYtHFiluEQlBJCY6F3OuzNxa/OH9kd9RvRmoqGSr9tHPZgeLR/e73+GnXe4WaJ5Y/42+4Uvzh+whNMQ576RoSs/7AdmFR/uMG/tm4Tp+qS/vq73vphXHo4lcrPz96PnBCH3QdX7t/XCfcuEkdXYKP7n/3C+roxaP7ejz80sw+TMWXPHzj3e96zosd3o08XPYZtwTHRST2oWPDfYZ342ZFb1zcv/50/3lLZpK+tz/nWKPPcFJKY7d5S5Z0Q+f355gyx5FlziSlelSuEjFoecWHTp06ha+f22+/fdq0afR0EpY/rGv4p2/cuHG4WZQKMEIsN2ZoXQQ2DhuhV69e2AA8LsY3WdgMenTAHsUh58+fv++++3bs2MEmV1N3PF4QiAXmypUrOHMs62KrcOmS1iq07cmTJ3/66SesPvi3BLcq/qk4cuQIjqnRaEaMGIHDseVnz57FrY13PT09xS1h7AaCXameZt9+KFn1Dl9ZfPXt6/EIyenaDzmbbqLxwmhmL9g/x/JKv0hF+9Pw+wLfPXt+nA+x8OLZ0sD7XvqTfBvLdTDBhcBlyJAh3N3/+7//a25uloppqsu1Hw6VagbO+xNVl1uXGj3mvfCCh8sfP+5et6/HzFce93Nx/fWHrRs/Ofbc3Pt64Gvu0p6DgQnLlnW/dvzjNV8c64+l+MKu1aeCliz/aw8XdGHXpuKr/Ubi/GvqvV5ITe3u4nLBffyIS2eb8T0tMySm5hPunob/Xm2sv3vaI/5EeT3uGxe85yA9e0PfCJA/t25SLYCFGJuLK/z7779f/+Om55hhWryFtPcMvlnc0Pi79k48xrvxBzmKN7yER/98p9eJbZvvfGrmsDuZVmUiU3vVB97PP01taccxObBZURuNDXU3L53IfIcRhqB7cEJcin/v20kWwsxlwefydwrxIVoWcYS+ffuWlJTgc7Zt27bHHnsMi/KlS/huAU2dOhVfUXgoqlwEDS6CzlCyLDURkFGIuRHwZUy/Vkwnp6uDKBXet2/fv//9b/yDER4eTmuxIGdx3fGYetiwYQ0NDTiVpAF0xcWW44ShoaFYWZTzpzlx4sSFCxcQNX/6r3/9C99nTJ48GRtJH62pqcGBbGRcC9zC+CeHnwe/tyDFnmbXfih7rhjKy8u7d+/+PwpcL3wf89BDD7X7yv7aUOc1ZgqV9+2DQwZ/VSyKpvKCFcXHpm6r+HGM1hdVV9SNCRmj1MJyHYwWYrmUWLboS/jPf/5zSEjI5cuXpWJiey59xVgb9PDzgylZweNNT1phXH7V194c8oDP79evu7r9eeiooV/91HTzZrdbt9Bdkx8O6YYvv24jxgbvrbxiMLg06Q2XSle/sZvK12UE9Sa+offQgO50ScwcseHKdxs/RU+mppLh70bqYRE1Mcx7NGAg1tOj4THr/kB3jkK59PMHN9R9DMq/jFAX1GMs2llPBd6Oeo1DuxqkNrhHtahXLCr/bXP5b/xwmkDUK5De2i+dFZWcpQ7t34o4OQgyV8ATlV2QOUQGep8ewX8a6G2yuxVv+1D/oU934GHjkFVbG2SSy2SoFN9sBHx3M1Y+wlhUjd4xHaU+OjqL/2uRyVlc97GIzJ55yBsgAZXt2E/3I6qhlPOn6U39Z+Q6+vDza5yjXdnWZvLfd0uUs6C3KPc0u/ZDs3hRf401qkereWehnVZWi/+/eatc0ZKByhcsN34g2kpt4CRmLi65DjYUmbmOqB74fwgV4rHwiA8kYt7OtXY/W9Oe49BOPbWtQT002Z/U0BE+6kNmlNk3i27dcnF1/bWp3mAYRD8xC5nzRkQ/4ySywWCyGR90P3B8xPgZCP3YUNPbqycOu3r+VA0Kwoe69dTUbP7mwohwP8OVY0WlyDCJypweEZM2fG+aYusAAAB0FrQv7D7yQ2DoJDJpazDUlJ+/OuK+7reuVJbX3Du27y2Da08N2lt07EH/+5khsODpnfvQF8mzOkO/MdMOvLdqWSG6e0QIM0zxj5gTnLI55bjB0HvKlHsNpwVvSgAAAAAsA+aG3Y1l2BULsY9nQ/7f/06e4QXPXuZHVNMvPH7Kxxnvp+yh3qAgj+soJSZTDnijn/tIRqC7j5yfej/nFTTyr3/EG2+EM8Ps4GDqDQ+L3+cHAADoDAT95eatW25ELQ23NCOf+ts0V+o9NgM9x+vS/b6nk++j32yjXlxziVjuz46Lpb2vGXiKzKPNfDIAAAC0I+g3l5nPLCiZdKVl2CikAi/yar2vcbNgN9R/hQUAANB5MKkw3ibvmLmw+svdsMAxPIvc0Ngu9QAAAGi3GJ1e+E54yc/dnSeYZrVY4hNnxBkLC3YtFeI5c+ZcvnxZEHjXXXdt2bLFwjoCAAA4NezMLTt5wOqvQHwNIgdsZlboEIgvW4Aas2gVfnbBAkH4B5mZ+BBoMQAAHQmBEx6uCovlWCDN7ggJvtqQXXrDohExq8IzY2LE43DQYgAAOhiSw1YkpaXiNTvMPKwT56tGiFkVjnnsMfwzgdzcuEdJIGgxAHQy5Fzx0qif8LSJJSUlJeIVqkpLS0NCQqy2RDz+ZUfBkoNiLmrXAlA/IuaOhXGNBU4Yevbs+Xlu7qNKWly60iXDvzYrSiu5y6cuf67Pjki5o5bBFqRYIgAA1iInHcoabXOwCo96cPR3R7/hajFWYRyID1mdLXeCWFkwxXJs+0VZxDMSd9111/SICLyxY+fOurq6sAkTioqKiExTWtyqwrRRWYYo1bFBYQEAQFh/sQpztZhWYYE0W4pg5kB8SAFZIVbQdTVDd4Hex8yaRf9lB8ht/BsIAADAwtVivNt6FaaRnMsVH5J4fU3w7QcNHmCLF5Slv8wTO583Cx4jcyco8HDYwtrRUOPZvMDo6KV4Jy6PHtny5xOER8nMRXQ2SZyO7zhCQsgxn2y8Y0gMxgmofUTvmi+6JHJHCMmMWzRKR0uXBpL0pqI4+RkD4/KwZTtYO6VS0YkE+8LDAADYClaL8bZNVJi7PAf9l4a7zd3lrujh/uKLL9K5GDgP+MSKbjC+Ike7wUR3P91Ko60iO/oC5TGZiOjWeKE0iY6Wbo3GcmcwxjKUIM7URHCiwZCIaD3Nn212viI7OiOy1mDIItqYlM9kkl3uj8MoUfYxFkUizM2nNdcYSMIQyjNmxUm1A2eaRW3Oza/L8uUbLLAfAKzCeZ6SdWzef/99NwqxznJBnJVG2VPj/uGHH0qOiLkYjP7gaWf4v/3220MfXlRvH/cLjjAKawfFcXmzKVUKDktHGdV1KFireNTHP25pyFy5WWHTkDguT+KwqOg0KhdtVHx6dFFtFuWLNS5yJJVzXXU5So+nBZONgKrLcaJgYxjKYLPipMpe6pPNBKeHZY3kG6xsPwCoA6RWEnZeGNloaiIpKen222/vStGlSxc3I1iUWXUWDI1NI2IbVcoMuZ99hv/uKihQERfLD2ePqFVgmHVCRB7lGfBo1MUlW3hrj0NDkHG0mmRJpsQgpGo5DjUI7ArmGyxvPwAArUDwdE7w7K7tsb0Q4/Ev/S4E++LE5cuX2bcj7rzzzh15eejmzdzt23EgjizKQOsbmB2SxLyThu/OsQhltcIerMa1eSiJjJA5obUXsuP80/BGXfGObBSZZjab7B3FaVHYIhI/PV5gEDYZRReVJgZTUxMZS9PjyRCE1IOeQCFhpqkJXirxtAjHYK14FwCAViJ+R0L8HkUbY3sh3rJly5w5c2jljXnssaL9+wUfdHBVWPKDjuDE2ry5Pj705Al5NGZtu/Cex2EV04alZ4cwD+tm5yGqiLj09Dgz2dB2BF5IwiNTOi+RQbTJ9HwPa3FwYkm6S4jLUuphXTraoVxRkm9YEc9gof0A0L5xknelQkJCxB900Frcmg86WoNdpiZ4Wky9uMZFWYUpqDmFLEFgcKIpiN0Wb3C2tczzOG4WbICoCMmsTPjPzjIkZknFVzSZLq8ufy4zwaKcKphncLDQfgBovzjPVLWcJViLHWWkveaIuVoswJwKd0DIBEtcnvn5DwAAOiV2fFgnp8WdRoU5rxaTuQV49QEAOjpNB/42sW7ujwuGW5jOvm9NdBTBlZ6sMIfkbAUAAB2WplMH0ZqXAlXGrvvX06+7vPVJlI+9hRgAAKDT0Ix1+KGXPNVG1z788cfM40sQYgAAAFvQXH4QjSM63PjVSw8s+oIEzfzkVEaE6+7n3vxlMEpelvP3nJyK2Nit+MAT2375eOT3zIi4Lh+EGAAAwAY0lx9G417wxDK8cv+k7y+u1rq5NX35wpu7RyxzRTkVfStbfs08lXGny9H//jdYv+uvfXNOVPtT6erykx4BIQYAALABlA73Qo1H9ucRjMEx0/46DcVOG6HB295+s1978I7X5uT+/PH1KJd66tuCuuId6AsQYgAAABtwGIViHUbX8OYruy4u1LG+Jhr37mWieE/P/L//fuha9v4dXbu+fYwZERNAiAEAAGxBaCDWYeQ5dEJ0wnenF+p0COn3JAyv/mu5HxOhfteCAbunV3348As/bzubXF1HCbF2ZCTqDUIMAABgA0IDe1L/ek78R/4n/fvcTbbJw7phyDQgXp6zu5/fHYh+WKf9fhcJ1UaltWJq4tq1a60zGwAAoOMwtie7GTj/4sWFzMwEQq7T1q1zo1fT8J6e+d//fki7wUQuxtfXtFEwIgYAAHAwIMQAAAAOBoQYAADAwYAQAwAAOBgQYgAAAAcDQgwAAOBg3K9duyZexVm8kDPmBgW9irOjzQYAAHAu/vOf/2CFpJdwxtCLN7MLOXMXb3bYKs4AAACAHJ1PiPUFCwPm5FCbqQdbEnRSEVJQyoYIjQ1LtG2G6gul/7N50fbL3CFtZR3tyFTA6elsQly2JqAwvLJlg4ZW5DVlUlKsFvtdiipzbnstMEpwR8ZJFNYiM9jITmI8YCGdTIj1NRWx4TF0J9VEbGhxrDXyYNs2ONoGSWjD9AWOtgOQwWl7DqBIJxNizYhwFJBSUMkbMZgmK2K34CNy4SRF2RqPccnUwdSDlX6Zc3JyUA6iDoojc+ZAcFgKN1t2zMK5xw8fNGdOMp1zS4JWJlxnyjV2y8HwQpMBdaxlTA78igvriPOvGoSSk3NSt2ypmMNkyGkWUlFEFYi3DocyG5l+uMxMmRExVReBtZxyqQC5bHknpCp3oUdyjikPqRMhXa/euR7jKkynYxDdkkon0djUptNBmsWa04pElTXTIMK6lPHOIL93Scdh7+b0BSnGyOyUEXN+6X4ybk6OsTyFxgQchzMKsZub2yOPPNLU1PTqq69OmjTJpnnjAUMlWhjgMQcZOyLuxJzJipSCESl0TFH4hhHHFxIVadEh6opIQQe3xCL6GpaKnEKEgEQmUmPOrpw5VThyC5NcnyITjqWGzpVcTod7V7IGIE1CS0sCYzgvB8m64KM5FX6VLS0bsHHImGGuaaJGF7MlNqVGj3R1h5NRcmpZgk5L3UxoUaH6WnAawTgPJJMtVw5ykolBG9gkWlHbsuohrFfKhpaD+MQUkJ+oQYwWKp/EhTguvw5+MSlbKqw5rUQNeZWNkWwQubogHe8MHsdmsCcXScfBGdJHNRFsZPZmhT6/KdiUTERvpBzXRygZADgQ5xJiWoK//PJLenfmzJn33nuvreWYTEng65zS0gI8gijMIRiPxoYvoK5M/XFRONagLSk6ehdfEUQqGFVSjqz1izVrVOyWGJ2acJxX8jiPZPIb0hLBmyJQGqmJzQvHf6glA/gZmtD0HpRzuG5D2eGKLQe3FB4uQ6FViAjmcQtqgcs1NgK+FYktJAosk61EJiTJnMNlMX5C41MiGPEQ1wsfSjg4yGPcHDxc1Fl4EsVYdFolKivVIHJ1QYpnEFkSx5g3Ob96zoZZAwDH4SxCLJBglhMnTthHjvFlGJqKNSHFT/j2hOnKlAuXxKLIVsP8iuAfEQ8Pcv9qDOc/hExRbx4/Q04c3DyZNQWoIjwmoXdVZk2ZX8Wg3ja4ZC3LNtZPKzaeh+iQvgaPZ1EFEX2NOILF58Xmp1WuLmbPoMo4VhsAOBL3vd/V0h90kC86qP8j+nsO5s8tZgtz88bNmzf+IFxHyNVWFshJMBdbyTEZT1QtYPph2eHkWL9KZtyVQLnTpw7T6iYOb4kJR+zdOzNhyuSrGJmMQlB4CmsEM9ZERCbqqnKQn+mQqgrgS3FDRELlloqUmjo/zjGjoInzlKujOEOjehF0oYPGkRlXDdKQLTLINA6sVELNyJsaYdCCDXLZcsmpohuHSaLRitrWqCNSzV5DzQ8cPOxBPQlQcRIrF8ieDstOq7iyNRINIlcXgvwZtCyOPGYMAFrFd6cbu3S9rYt7Fzf3Lu7u7tRnG/SnHG7M5xvkH9MGckFkm/rHfcooHyu+rFtZ0dx6u9VIMJfWyzEe/h0kQz96D0sAuS3jhJEbdB0qEMWlw5GOk5ok1pVV5YwLyCFDDInIKVsWBlAhsbH8qQldzJbMACYuPuSH1EMmAwsDAjyMxdSxBpjypI7J15tbR1GGvLEpde9NXfd4GItSQ3UWGGrK3dgIdKuoyZZMlSBOEnHbytQrpYZ+Qodj6A4O8ghYiGObPYkapBecDvJLacVpFVVWLxJiqU5lRCc8gxwzdHJxTBkbI1cqdydJA9gHp0CrGBXkedttt7WnL+sslWAurZRj0+MO2TD2BSBxXEEId1cU2TgXLUZ8xPTKkfH1I+5fbjjipTU9okMyecrUxfSSk7KZpsrpFM3jWsjdlshdKlveQbE1UidN8tCGFk7W9KbG3EmUKNO60yo8JNkg8nVRNMNs4aZseaeGeyKUerVOskJAm9HWQtwaCeZix7ljAACAtqXthNhWEswF5BgAgA5AWwixPSSYC8gxAADtGrsL8caNG19++WV7l4KMcjxv3ryVK1fKRjJ+1UZ/hybxIg98qt962qwN28vJUrbT4U6mmGd1nE8MBY6xtJZkKM7NCpM6H3YX4vnz5y9cuNCuI2IaS0bEZYeThe+HQkdRhb0bqgOfiHbQdPS7cSLHWOI3MVSVZeF75630W9TOe05bTE3cvHlz27Zt9pugsHhSgrj+8YuxuR0AoIDTuuPR+qWS72Y0vQdRu2LHWGIfTwp1EeQGqKPtHtbZQ46tmhcuTAkg33jmmN7Q5PlMwRxf46HKUYvRR4zJQ40phHLbwnUBQzb47makcub49OH5nBE4aBE6f9EqWIIUvOfI5yPpDIjTUDyHOOI5Hgsc90i7MeI6OzYNdgT+evjtwcnY5FzI+NkGcTIh8sgjyl+igVONPopEDSVy6COXXMv2FstqwWsdBUdCglOTQvbV9mFEVDWB+rhdl0C91SbpGEtgoci1kMkWQW4m+F1C2P6sr6XUVGmnS6qrb6ZnOilt/fqareS4FY/mwlMqwxHvwuP7TLHEUYvRdQ7XzwsdQgL4/m7wtct3N0O6syBnrk+f3LKW0MO8Xc73x2IXP7KWKHnPkc9H0hkQp6HEPm64Hd4Cxz1l0m6MJDxt6oUNyHzZSCttSwtHN4jPogD6CzIyDbWgBRUsFHnkkUVUEPnyUNxQgn7CcUWk5FfIglqocyQk5ffHoj4sROQYy3imTBYKXAttkOoDAgRdQtj+HF9Ler8KuT6mpvrKPdNZccwHHa2RY7u/HWGRoxbGdY7JQ43Rx4rIBYy+RuxuZqEw5xS+Cx59jbRHHinnL3KWKHvPQXL5yDkD4jSLyKGP6dpW77hHwY2RfIkmfz05cwJyqHGPQFc0EQtSPYgSI6zDoS3645lijzzqC0KSDS7jp0nSTutqocaRkCQW9WEJhI6xkJyFgj5GfTutbJKpf5rFuuor90xnxQFC/Ouvv955553IcjkWSzCblZ1Rd4PDeKhpXc58FzwyHnnMOX8RWyLtPQdnLJePrDMgizHjuEfOjZFKcLYxNVLjHl1o6rjDZaGoYksMHsqKvza2CJt421FAthY2LcLyvHmOscxZqL7/W3OldHDaVIhpzf36669jYmISExP9/MhVp0aOxRLc0NCQkZHx0UcfDRw40L4DZGU/KQIPNewFL3YBo9GK3M2kiH3xZHJd8JQVZI6T8cgjdv4itsS895xQWScyCs6A5CrIParecY+cGyOxayROiSanS+SS1lD+H0QSQZR43LhY4l4IIfHpQEq+fkSOgSzwtiNpp/JRuVqocSSkBkt8/Ug4xkJI1kJhr5NH2CXk259rthXVV+6ZzkobCbFAZ//5z3/m5uaqkWMFCf7vf/+LbPU1h5LPFAVHLTigItPDI4c9YvLzIuHvJkLkbgYJctYgvk8fzQhpjzxSzl/ElghCpLznaGWdyMg4A+I6xJFw6MOi2nGPGjdGjGskjbABtcZbfqaxF/IfQxGfQrF+IzScGFxr5V0viQriOgYSNJQE8nYqH5WohRpHQmzG1vZhBevp2uu5LqIoC9mfFlEfk0fYJYTtb+paobJ9TE31zfRMJ0UsxCfXeh4e3fBcENk+9UHvKX9nwqPXHX07rLvFBdDaWllZ2djYyA3Hyqssx+IVOgQSzEWtHPN91nAQ+kzhRlZ0OhOe0sLJTODnReigxawXIQm/MZJOXoTh5FLhWyK2TUVxiFN9maI5Oag1TrpomehKbozMuS4SZEw/ptNwY3CzU/DeY1FDSb3LJW2nOgdM/JxUORISZmthHxYiUXmRhREb5HqdFFJtreDkSCfXx9RVX/nUOidcIdYXPjfoyc/wxhtfmQJfL6yeP8TkBtOaMnr06LF3794LFy5grRRoKC3HBQUF33333V133cUGYjnmRlOQYACQwPielUrpAQBbcD5nzKL1zPaMNYfSJgmfEp5a7/PtmLrndJygsoweH/qd4wqxJnxdc9Pasoxeh5mAhsuVj/WJap1pWFU/+OADvKHVav/1r3/NmjXrypUr3Ah33HEH1mJWhX///ffbbruNPapSgh3jaMJ5XtEXW+I8tjkEC8Z/gLV08j4mzaLsY3FBjD9ibnjj3hdHzP8cb7y+jxusL9z4BnLZbHaOePu84O3k3+gPjr093vKJCSNYT7t163bffff98ssvd999d4vxBgyrMB78jh49GuvvtWvXvLy8cMzPPvvs8ccfxzVxXgkGAAAQcKWhaspdUi97YjynrKquWV3+Qe9vOYH6wtTdg5bPOmfmYV39xe2PbSp9d1LPW3os55s05+cGWGNeXV1dRETEgAEDsrKy8Gh33759b7zxxt69e7kqPHfu3PPnzxcUFGCZfvjhh2fMmIFTOakEO/Sr9jI5d0XOjI1ajPt5GwN5zhPedufCOU+9E7pZoE3ifh5p77KcpPp7X5u29zX874zVRWkTvcxEPrn9yYHzK/w2ppoR4qELa96jpoeR5/BJ0ftqG1GAxYNiWoUvUGC1xVocEBCAx7zffPONm5vbqFGjaBXes2cPjoxjYi3u378//kunksyzTSXYhqdZ0DutyVnkrkh9cYJwZ+i4FlpinG/gLO0jfqvXeWpnK5ga9W47T1Uqc+54Td1Kmmr3Tnlz9/IJ3l1+PZwS9sldZ+YFKcQ+ufYhdKB5GNpNduz7+hqrwvQuVltai/G4GA+EETUjzKowBsektVir1UpqsQNGwTacCKOz4rwMZHHOFrkrEhTXSeh4E5fG89h2nqo6Xhu2DQNmHnnttq5kq+ew8TOK6ppQkOyPVMPuD89lJ8fjDWpXSYgb9jyv+/mp6vmBCJXnP4smHPVEyLLXJv744w/B9AJXiwUqLABH+POf/8zuSr5Q/OGHH44YMUK9Lku4bqG/JtBwviwwffXL904i/sjVlCkyeoahR2qMn5neudIudXh+baj/hH5M+GUZ3ystW0MFMu6KJPyhGP0NmUaLnOKYTNS7R1FwUST0K0T56xk3J4cydsRxCX9DNDzXM7jmkpaIvNKYg+fgxugIlz2Nouxa6dBH6E/HNg6YkHyhJHkhyrGhpyq+tyNxD9TKhOtkPDQZHXxzGoF/hiQqy++r4vPC8T+VmpqczM2cZwbub6qqL+c/S75X23X+r6Fkd+5nubmfMbufKQmx19T3d6/38fUl29EfHHvaE924cSZLd1RXPEtlab6+vjt37qQnfNlAWos/+uijZ555RqDC/v7+9HD4ypUrDz/88KlTp5CKbzrUD5OFPm42RCxInZN5nHx4Tz7CSV2wgeiBpHcYkycRSma5mcZsiaW+Pas7nIySU8sSdFrGkaBG7CmG59yE9ZwidtFiLIt3662jvj5T8IfCeGDhwCmOCVHpHkXs+IbopnSJKXg/E9EbKcf1I6Q8EDFtyP1Q+HgKzxL1Xmn4CFqPaa6yXGl/Sa106CNxyDYOmJQLta2nKrVtKDapt7SHJiTZ1VlEJzdF3FelfCGZ4iQk8C5bvm+sSj8V1e8t2x9UXUequPLNOzMbZh6LC0KoYtcS9NChXvJxvaatbWxaR9Zvbtj9XCpKEQvxsMWNQw0Gwy1qZ+izNdXzb90yvkeM0JC5Zf1/++039cb1799fUosHDRp07do1bkxWhfFImVZhsxJMY8HHdaJRLVZRhLUjYgTjKYT4Z5HyDsP11UKtB8+B+Rq37HDFloNbCg+XodAqRDt0lRtECxC7aDH5hZGriKQ/FMYDi1oU3KNI+aZZKFeinrPB1EjkgQhJuZ5ZYPxAy2KvNBykvcDIOC1qpUMfyUM2ccCEm0KNNx85WunlR65oYbi8hyaFri553gV9VdIXEhtHmLnIDPPVTzHbH6y/joz0GP3yprwJ999PtmesLnqG6PCZTf2/f6BqwTBzadviE2dJLZZTYURNShw9ehSLtcrP6mhULJUk5bqFfJmecrwMFeJBB1dKLEEXmppZU4AqwmMSeldl1pT5VVCOCeztKaadwPPwIpypKJQ71FrUOy1q5WmykQMmXlPYBHvcWct5aDLbhq2prDhzNY6izLjT0kmlaT0BsUeOxXWlXiPuQgUMmffjUDfT8aGLanUu/CSa8PXrXVzayNeEpBazcFWY5ubNm6wK2/SbDrHrFspHyLg5jHMYOT8jgnCs2txcdaGDxo2rIDloyNYcfKblilMBzy+M+TjWu4NRcI8i4fgmxYISJX0hiV3PsJeQJV5pVCHntKiVDn2ksYUDJovdzimi0J5ib0rqs5Xz0ESQb0OF886No+ApSZC5khmyJWaa6w+tcqvUatrO+xrW4vz8/FGjRhkMBm64m5vb559/Tqvw3Llz77jjDtb1hK0/q5PylUOfNYSMdyNybla44bH8qQnEzFZQnYV4mkkN1ckXp+icBQnLQnJzGqrdwXCcoehEIfLuUSQc3yD1HlikfSGJXM9oykyWSHil4bymZilyTota69BHjK0cMFn+couVXn508t6OzJaowkMTEreh2BhxZRU8JYlaWGCG9rhofC3uaUi2P6jv1fak7YT4999/X758uUCFETX4/dvf/ka/R7F58+a7776b9gTUs2dPm39WJ+0MhIRGyEZiX+VR8iRCr+1FoUugHjhIp6CzEjhnkfBjwqYkWtSbJyPcyHL+UPghSp6GlCol+kxYoWW4G2JfMLKuZ7i7kh6RdDKGGcOlvMAwIbI1a4VDH0mnM7ZxwCTvzsbWnqrU1Fe2Z6r20KTSz5FkdQRxJDopL0Sy6cyfZekDDnp1r42EWPlNNe47bZcuXcJa/M9//lM5ww79ZTP3hShwXAMAHZ+2EGJlFaYRa3GLyK0hTYeWYJp27rGmk38OAA6YAMuxuxBLqrC/v//atWsXL17M/XDOrBZ3AgkGAKAzYl8hllNhuY+Y5bQYJNjZUXA7YFOPBGozAzcIQLvCvkJ8/vz5Q4cOcUO4b6pJajGOj1MFBQX997//xfqLhdheEqzmWoXr2Qmpyl240K+NfHq1jf8woNNjXyHGerpt2zZ2YQ7x+8ICLaYdY+JUN2/eXLNmzbPPPgujYICLpvegQcivoqINSuqULpMAB2H3OeLRo0fTWkxrLleFaVgtrquro90TI+rl4qVLl9rcGNUuS7heWpg4ck5khD5fdJzClLz5xBoLlnYYFMF+3CnrQYa8QJopdNmj4KlH2vuJnDMUVa5wlD5sFR0SOxhSto04DxKVqIvBdU7muTES2stzOiMqVFhfJec4YpdJAGAX2uKtCaytX3zxRZ8+fcQqTENr8cWLF0eNGmVPQ8oscFnCurNh7kzL1kg7DZFwJGS6Ys37IpF1GGRC1oMMCeC77NFKeepR9n4SelhlvVIUnRMJHCFJ+EgSOxgSOb4x78wFty3XaRGnOLHLGCRZKOJXP6ZGyTmO2GUSANiFNnqP2KzCainsbIUlLksEXmzknMhIpmVR4YpF1mGQKRMZDzJifyX6GglPPWa8n+hr1NdLwTmRwBGS+JCktcq2iZ25yCHpMkayUDRCUESm1c6GAMB2tN2XdU6A1S5LRGm5TlQtcxkjcjgi7TBIBrEHGfOY8X5io3pZh6JttnW/wCDuA+1s2SmgQ9KZhNg6lyWSaU3+IlWkZZF0xSLrMMiIpAMdJOWvRKOV8NSj7P2krCBznLX1UnCEJD4kaa2ybWJnLgoNK+kyRlyo4DyiGBs7GwIAq+hMQmyFyxKOfxwZpyEynn3kLJBwxSLpMIiDtAMdJOGvhOdKxuipR9n7iU4zwvp6KThCEh9StlbKNglnLnTeIjdGsi5jxIXq+OdRI2wfpbJa4YQIABTpTEIs9O9h3mUJ72tjGachSs5EVLlikXYYxEHOgY5k2ZKuc5S8n8jZr8oVjoLPIPEhFdZqzDtzkUglFShroShA5oNyCZdJck6IAKC1uP946VfaIxr5y/7/1q1b5P+3yFIdzOatmzdvYP64fv3369cdbTYAAIBzcUn/n65d/+jStau7exd3d3c3NzdXV/wf/kO2XPCGiwv1l9rGOwj/j8G9/913skLM5ZaIGxTXr1+nlkqyYLUkwHrAXwwAtBPu1vz5tttu69qVWaGDVmAaVw60GtMbLJ1ragIAAMAJASEGAABwMCDEAAAADgaEGAAAwMGAEAMAADgYEGIAAAAHA0IMAADgYOwlxCUlJXbKGQAAhxMSEuJoEzoUdhwRT/u/hfbLHABszsX7DpmPBCB09uxZyXCPt+va2JI2o+VV+zrphakJAAAABwNCDACALfll4R2ONsGW3LPhv21QCggxAACAgwEhBgAAcDDqhLh8o1/EuXVH3w7rTu02H0Io0J5WAQAAdCJUCXH5t2+9+uqr+8sawxglBgAAsCWNe18MWfAFvf23gl8WBNku3zSUtGqKp43yU6YyZ8y89dTWi7lnnuGNVk9/4Bv+FrW1bJ9+sY57qGxNdzVC3Hi58m8PpI+89RJR4m62MRgAAICBqPCXk0p+WUXJ5enMe+7JtKEWtxlXvvm86s3dxyZ4d/n1cErG101pk9i1xxr3fXJ+44maad6uTXuXvLW7ISPC23hIX7jx3GZKiPUFiwY+QS0pPiv77Nppgt+OxhNfBjyQjjwvoU9ONoaFghIDAGBLGku/RJlJ7KA1aMEvvzjUHmtpqt3rd99ystVT22/n8YY0xApx/cXPB4xeTba87grYdrQ+A7FCXFeVMzDUncjw8t3Tzl1d52Uw1Bc8l1oYksGT4sYT+wIeWInQLd0E9M7JxlBQYgAAbAjR4UlJorkDPDCOeIvZJpMV3mSSYVLAggVvGUOCeLGYENMcxyOZJaumtFEdCFcaLk65axq97eU748e6JhTEKHFj7flH+zxCb3v3nXmupgHpGCXWX66I9YtxL9Mf351DMOY2a+qyaVNNjdJwYt/nb33+OdMgkWHxoaF/sXuNAADo7JCB8QJqi8zz7m1MQuiLBb8U/EKGy3TIquDSFyMQDmEU+cW9JUkozTjHQcUJTnJsJdTiTn24t7zoasIw3pJ1xuNYhwMKL14cQq1ZV7d36TunmkIfcJy5AAB0FrjP7x7JTKL+RnMnjukpDSYE6/YqkuQLgjHGI5OemtR2BrcCd41mxLTYOYfLEoYNI9PGiwdXzWt8bqjxMNZh1OdV457nsIfQylNNDwQ4xlYAADognsGTUFpp4xT+mw2nM0O4Y1v12fHfuWjc+6XNDDVDD68+e8ubliMyuG2o3tl/lMloT58Bn3+nX01NDNf/vG1gaAZ7SHPXoJwjde5koeD1RWu6d+9BAsnDumGIHRCfypuHJpfilrjFZIeVeGzBuUL7+r8AAKAzQZQ4JG1vCfOSGZn2RQUFCAXcRUtz/S9foHsk5hiodHmn2cniT+4pSZr0yIJvTy8IYiaLf3mq5J62q0cvnylV+mYU5I2a636a4RvJOeTd59HzlxvQMG/UcLlyZt+ZnENav9hzNfTra7qEq1fjxfMSaOizNe/dIhgDPCesKLv+22+/IdRs70oBANBJ8JyyqgS9GHIPPSXMjGkbMz8Juccoo49kyqQryLyHiYRTESE3hZCHdUFor/3NN9Jj9KN+E6bd/xrZfjH3TC/8z5lN/b9/oGrBMM/JTw3oc29vKtqyfXov/M/Jtb2+CW2O12nC5w/sAZ84AwDgeLCm/vLLKuWQVas4x5ht0yM9I4KQKat4ediXgNgjx+K6dqGgAobM+3GoG23Ws9U1i1wxLi4uVMCwxU06egsPhEGIAQAAHAwIMQAAgIMBIQYAAHAwIMQAANiStvGk3sEAIQYAAHAwdhTi3X/ZYL/MAcDmyK2JCajE3itsdmDsJcSw2jYAAIBKYIUOAAAABwMrdAAAANgGWKEDAADAocAKHQAAAA4GVugAAABwLLBCBwAAQDsGVugAAABwMG2wQkfZGo/DoS0JOuld26EvWJiCUuj/NkRozCeQziNgDrk5iN1Syc8DH8ntvYE2m1cFvDMumdpKPahULRKvQpgra7bYYLlwNdbTtmgtz8G6cq2GYzBqjc1mUHu+WnsqbWIpN2dx+0gapdKetjyznZIOsUKHyl5i22iiVClzBh1sadGRrp1SwO3ZZbmF4TEbTFdG6kFjkkx8CbTgiKTIAr1skWWHk1NTUwuP6yPsdSGUrQkoDK9s2aChL+A1ZZV+9inIprC/eHT7pdg2d+H5wvvjEHWGmTYySZvCIQH2O5USOZtGBNgqjzULJKwyY08r9ZdNrj4fK5J0DDrCCh2aiA02/CLa6txi/agfGV1oas7hug3Gh55YbtEConAoYkNLywYywmLi11XlDAqlitL0HsRNIkBfU5EauiEULbSbEuMSYsNj6Kxx9VuI1fYox17Q7Zdi2x8PjeB80Q1Db44Ijy2s0SOdxuwhPvY7lco5ayJStkj91tu/axnLt/iasu1F7fy0vxU6qJ/K8EFz5lB3gqZ7Uuo/XriOO11wMLxwTk4OykFkmFDH3kgyOQjzl8yNd7snmIDAFyBKobozGWSEthjDmeGwVD1qyBNPehv/sFWQq7dOYu5Ff7yQ6LW2BmUylwvfjBTEDWHvQatyF3ok53BCTHFEcyfE+AD+MJ5wfI2HTPXZUvh35KZmpMJxOQuqAshYMUFnusfHG5l+lRt65wpOAc4cj8o3GCtIbSN5m+WakmsTlXPoYQ/GBGQse8RxXra4lJSqQSg5OUd5WsFU3vHCnEELpM+q8ZDUNJroVHJMTT1Y6ZfJjgFNndBoGD6q0BTiTiJA8rdekApxBqF6pk2YSyaFRJfvD2wzci8ZbPEcNrlx0k84hcM/WVJJBL1OfPnzmrgd0w5X6MiZU4VvBFtE96SCcHyx09MF5Fwe7l25JRYx/UyT0NKSQCVRuKsV5jbiuHH2gb5O+OBBR/jCAI85VKfUMYGm4bA6dAktOkEQc7EgZFR6xE6CULqCuNMizI0x1qScZHKvvIG9VdYWpHAmH1IKRvCuZTz8qESU9caLSqn6pjzZO3JiysKCg+FUbrTctbRQF/SW2BTqJ+ZwMkpOLUvQaZnRt/AUbIhYkDon83gKVhEiZqm42fABBZuJhQGcX0UNKmAbkZtzTMqW2IDDuGQddSO+oAUJs8WnMqeCGKxuCEaaGyuF8EQJDqk5lRraVNKeVaE6VCORI2MYMVShKcQ5izIy/tZr5FONECTxw01XgRg1lOoP4mbkxjlOWp5NTjePoMPgnsY7WVJJJPq2wJJOM30hg+OEOHZLjE5NOO58yeM8yMhsQ0sE73ZbPKg0mxvutmhLimS5yDiEYaRvYQGt9/LDYdUQUcLDEmbQEBueMgKZzMD14xtmvDE2GU9C5hwui/Er5L1oiDMSXK30nThiprhTlKrPlKKv4TQIlhRS9UJaHPFAxXjXTo/Eyg5XbDm4pfBwGQqtQvQsiOgU6GK20HrAlERyU7RZMDTUsxv8nDVY4j2IEiPqXkV/PFOQ7YJw/GeEuqtZzxm4qz9kbEH+qYxgxp6U1OD6SgkxbRhJqtAUMjnzME2EyaYSCrHAElF/kGhGmQuTTSLoMMjclajYtwGaNhBi/s84/w5UBYy4YG3x8CD3PcZw/rOpFBsYSjpMeAplpsY0dFUcDnNvFsVXiSlfZvSLmDFDXbjFxjGT1+pu4+gpbuvnW3EpMTWcB1Y4v8yaAlQRHpPQuyqzpsyvYlBvjfQpoFuuDDFNqVdtMw+JnLEN4w6XhaKKLTF49FUjzBYrvrqsW6HCUqeSjFxZGTaLfFNI5iyMI7p2bNC1rGxGDra/EjshbSDE/JktRq6kBg6SsBdHQuWWipSaOq64UGpA54n8UlTZQiZSc2UeiBND6ftqdpawbI2Z4bDpV0b2F4bou8k6SqhqeoejcbQZpCSiWSbDjGXXoJwqutmYEI2WGhiT+3P6Tpj7CJ0XgG/fY/0qFatvytPUINR0xMFwSvQ1upQtJinWhQ4aR96Q0iAN2ZqDr146R/EpoMoYNyeWRGYH89I2KyLKmSjxuHFMvqJsVb4igkWDaKaU1CocMiJxKo/rRyCODAt+mbndUrEpJHPmzzNQcr+ghWueVNdCg4zdxvx1ITbJbDPyriB6/mqBmStRsm8DfNpiakKXUFmz0MODvnWhZ18l7+AkIc+KCwMCPIxJ8akeF0A9kInZkhng4cFEi92iPruFbDLBbZQu4eAgjwD6GC5Bh/sZ4vd8ifwWcJOQuML3pnPnoPBK/hNBarK7kDYjNjZWYJipicicDGJDyDsbB8mNATfIZIjpGGUKO0MnU32JPKlkWuOYiIm7kJo7oCZQqKsN6yFKDaWK1kmeAnJ1I2ScJtAo2CyPZM6k5Fg/Ol9xtqpeEcG/UPgv06rMvAjzcBXJHzLaLHkqU1Jic1BODpWOJDJZTs4sV9cUmkIy51zyAqJpDl3ivWepVFV+WyrGcQ0gvw3UJSMhsiqaUZhcI+wweAwiOFniJBJ9G+DRNnPExrlLbsAG4Tb3Ly8OL7Hp+RASZorE+UjkxtpCBLO3QGVNz4goxM9qjLF03B1uEtETHuM8GovxPSmh9YJGErWZdGkKx6QaWSpbQTpTKiou32jEq5+0jSSUe1ctb7P49Sbpk05DP6Zjz5is2SJMFkuZomGOShyqM84IsanFpzKC9DJusEy3lC1fNmcqrdLTR9lUgkRsoRL9QaEZjXFEySU6mpkSxX1bwpJOTWdbs477pg3+dZbTNMDJML5K17YnTJegcgQPAK3DnBA37H3x3nmfG/ciExNvVfo8+1r79TahNKIEnBc4b0CHRsWI+NEPj6+c2JM4/SFuf16pvGF/qwAAANofdl2ho7Vw3zJ0iq9oJD+BF3jM0TnCMAAA2i/2XaGjdTCvn7XQ7+KSt4HX2E/mrHcyIvKYY5GNnc25CQAAYuy6Qgf6/K8jmEnil7cf6m2hafRXNaxCkak+S2vXFog95lgEPPkFgE6PXVfoEM4RW2Ya52M1frg5JyBaKbcgEi5vuP5HON5GeH5GjJEVPsSU9Jgj4Q+F9t4iyLMw/GB4Yaa0PxQlNz0AAAAU5lbokOYcQq2Zv1DhBCRF0mGNwH3MiOM8/yMp6CDrEkgv8o/DcffD+NnhIvKYoxHlkGJyK0My4Lq20dYU0vUS+kNJQUpuegAAAAhmVuiwCyqdgJh3UIIkHNaoiUz72REi9Jgj5Q+F+V5M6NqG/mRT7A8Fi68ZNz0AAHQQ7LdChxwD1TqG18i79LMGixyUWOvNxOQxRz4HCdc26swAAKCjYrcVOhDymrJqFWeNDs8JK1bQK3SoRDD5SqZQ0cFKa5yASPhMiZFwWKMiMuNnh5O3hMccM/5Q+K5tOGF8fygp1rq8AQCgveHMK3RwJ18ROz60xgmIhM8UncD/iK6MdQkkEdlUaGysfNZGTyZiDzs8fyh81zYS2TC5WOPyBgCAdolTr9Ah4RpGhRMQFQ5KxCHcXVFkaRc1crHFYfx31LiubSywEAAAQEhnc/oDAADgdIAQAwAAOBgQYgAAAAcDQgwAAOBgQIgBAAAcTFsK8Q9rPI6MaUkYLr1rO/S7FiSj1FSUjP9mTjf/KQkdX01MAAAAO6BCiBv3vRT81y+ozcTtZ+d0P5C66g80INBMKqtRKYs2V0/JDEGjAQCwP2aF+FRm8L5Jxy+m97x1o27P0gc/Prvfx74WaaZnCj3ytAmOKhcAgI6C3VboaKitfHTyw54I3ULIc2La2RvXay30hKkMNeSMGPLEE7S7y6KWBB/TxAIvfDiJG/BELt6N2VwUUfBEbi7KRZsrM6fXrvEIMy4ISuUgKoJOhtPh2Ajn//MQnH0unSvPklTquGQpMCgGAECBK9+8Mw9tOnYsqAtZoWPiJ2fPzAtiDjXueykcFdbUDHMlK3To1p3Sx+uMycoywsyv0OF172R079v7jqdP7KnGlKamJnFgr169lNLkPvFzEe3uEkvhLn2qTHhm79wnhuCA4URYj/Su3ByDmEkDDfvtmiAHOii5IKKyJVPDHL0PH80907eypUV6/PuDXCkKFQQAoPMgJ2g9Rr985LbbqM2ew8bPKOI4hvec/G61qyu16RU8ZeZejmN4pIu/ut7F7AodXpNXld56IdhvAd6OWnPozVD87+5X0ABZX2ZmZFdMzOYYyQd2wnCfvjHJYR7JZFjbMh2rqumIacxLUvF1+PuCXAKbacSzEfjPfbLjW/lSKCyuHQAAHQh1Q7Hmkwd29n8iTepQQ+nebQP/miEIVbFCB1Hzi1Xpt26c/GDAqv374xGa9g/L7UeUxp2p0aPhtAjqa87E9I2xILlmeiYZxv5AnOikFlX2NYb/sCaAO+YVJxROQRSIo5gvBQAAQBXNRe8vQasPDZY41LDnzafRx6dFHt8tWaFjyKjEHUcb4q1+WKfpPST3SG0ms6Be7c+5Q8ZkqnGASUOGvVhwM6cnVG4+k1xTy5XIIb3ZPFFf3ohYc19EzBNHfkgYPpzO4ednlbVVqRQAAAAzNB9cPu3IQ0VpD4nvnRv2Lrl339STa6Z6iQ6ZWaGjYe8L9/489+Jfh5CdM9+tjPTdj25YbeLwhMqaBR4e9DwBufkfrs4BJoVmeurmgoAAD2NSLLphAdQDt5jNHwQYXVjiY8JkmUVGR5R0kcLZBpWl2P59ZwAAOhbNh998+GjYV38Pk1LhF0O+nFImpcKIen1NaYUOrynvFW7o3acPvffy9rMTerXqrQnmxp8XkCnc5v7lxeElNj2iQ8JMBTkM5zuiFL2mxi9XthQAAAAFzm97+DW/7GPjJF5sOJ0ZMn/A7popYhXWFy4aVLXA3AodCAUtqL74V7JGxw2K673GJyf/9vBn6pZKAgAA6BycL9uI/8bdT79IjCLXHPrHpCZ6hQ7Xb8mDu2m96ReJ0cxPTq+L0DMrdISvL8qw/wodAAAAnYEBM/cfeeK2rl2ZFTpcyftqGnqFDtcFF6sXutK4uLhQh7zbeoUOAAAAQAEQYgAAAAcDQgwAAOBgQIgBAAAcDAgxAACAgwEhBgAAcDAgxAAAAA6GJ8T6wucGP/kZvZ28r/7ZIKkUAAAAgE0xCbG+cNHg3dPONq31JB/Xla318t6wt3aBYEWkxv3LVt549rUH2thKAAAA50dmhY7TmX2KR1cvHEa2T63XTlnBhM/69Oy6CMovMSvE+pJC9GlyuBfjaGLYovp68l3zLdvbqi9YGDCH8bqZerAlQWf7IqygbI3HuGQpe7C5KShlQ4TaFTosjW82K/o/NkMb5m8rJO1UiGl/42XPpjPghGcQsAlXvvm86s3dxyZ4kxU6Mr5uSpukafzq5TGL8vGxJI4H92Vf6RfrqE/sXFyYIKMQ648XovBk3DX4jiZOfdB72t+Z7Zfzj/bOSti1C+26+Q9vaxcPJSpcGF7ZsoHqhfh68Vij5mqxqO9a09HLDifzL1uFTNTkLxlHvWFGaWsLVFrlKPmwydlso3Jt10psPqDa7Yim2r1+9y0nWz21/XYeb0hDGs+J7/xY9e7ZD/2KmTgNlytn9p0pSmrmYd3QZ2uq51MjY/3el94uC39xzfRbZGriGSud/hC935LC9ipdAlkKyQnQ11TE+qn1Uq+J2LDBFnHMJtcrurC3Fa001d5YYZ5FZxMAbMSVhotT7ppGb3v5zviRs1QSj21PB20j/87KPsNMTJh/a6Jh74v3zvuc3o5at6SVllLj7hSxbabZCmogQ40CwgfNmUOvHHqw0i9zTk4OykFbKukxAhM5luwjpcjIGJeKqpEpMfQwtZ2Tww6j9AUpxkxSyP7xNR7G/FsStMwgRTZzZBrRcOIcDC/k1IKORm6hEVUo3jocymxk+uG4mQoj4qrchR7JOcg0tSNoE9YW7niKM4HAaS5jdcThOlOuAuPrqBt/GioHubNpNIY7GxW7JUU6sjG6VGeQNE8iLd2m7NnEfSGlahBKTqa3hdnSh+jajZuTw207TgeQNolJy59dU0yl9gzikJgaJh+yiK4aM6SqADgl9T9vm/nx6Yxwb9em3fFDMu5upnuGUYg1I8JRSol+2jSev8xTH9y7b3Jp9cqe9Ij4pn1MI9130MGWFvrKX1PWggczOXOqDtIrh+LedjwmZUssogUFRzZObZBDBSNSFCKXraEzJvnmlvEvGE6JoS2VWyp4N4CaCDYTPCzl5V+gT6HjlOVKZ86FG+dw70rWMCO6mC2xKTV6pKs7nIySU8sSdFo8mguP0SLZNQExOclYvFs2GJsLS6mgTZSvRenqiMI39JYznrNaKz8Hpm0Fxow4bmxt6ldGENl4iBJc6c4gbR4nWyYt06YJ7Nkk567CrxK3FclM1MeoQyl4PxPRGynH9RF003E6gHT/pLNlT4EOmU3F7SASZ5Abua7F1P38KsyaIV0FwCkZuqjufRdqGVGvkKmz9pCLnwyK2RGxJiQcDUotNC7ifHK990TD3r0IBfjg/Vu4r1/MR3cvsYdl9HSFjjJiRHhsITaNDHBidDKReSvsxYYvCJeNjLR+scnjPJLJMKElwkyJCkjnL5O5QhyJqQZN70E5h+s2lB2u2HJwS+HhMhRahcJjNOi4GnuI8XMOl8X4CdskRfFalGsuYbi88UojXPEJQmxrkywFkdlDohDhqRGYJ04rSWz4CI1cH6MPcTYkUUjLnoIEndAQiVQ60zkRn0GzHbI1VQDahB5effaWNy1H5A6xoXpn/1GSi4dKY5qa0ISvP2tYNLjXk/Ru8r76hUG36jd9dK+vLxMjah3y1Prveix812LvJVOtsZQad7f6J1v4VE1+8KiJ2EDGHWXUSqC2foSuJnN+nEo/cQxdaGpmTQGqCI9J6F2VWVPmVzGotyWtE+tHTQzY4wUBOePxvT93zCtOqP4EdQiYU+Cg5IDz0MtnSpW+GQV5o+a6n2b4RkpEadjzvO7iPP1iHR7sbo9D084yFztvjlgTvq6paS29Sgf97prXlPeqq9+ltpkVOuaWlc36zeoVOogSB6QUmKbzyBRpJQ6j7+3JcGrQgg0KK4pyRyBkXFa1QErdGJhXNDZEUDerpjEJZYXaEi3NXCFOnZSputBB48ZVbKnUIA3ZmoNVzNzQJqeqbgOix3nEeI1W2CasDjIDbmq91rqqHOSXYnUFecYbfyzEeYpPUEsMr7VReAo3MuJP66g/NeK0CrTmjEumFZwCVak4iM+gWfNs0mkBu9Jj9KN+E6bd/xrZfjH3jHjdOoS8pr6/b4OPhrp8ZmWfiScbZWu6H2nrT5zxKKsSLQzwmEPvMmOnlC0L6eU/yW2wTmJFUSIo4wKoh2kRGw4aFwOlY4vu9zmRU7YU0iuBkqgmoSRzeWpLlBN6kodk5vJxdFi3GMN0pkjU7TolbHh0jFJDdVI58SEzBqYGQEjUJiy6mC2ZzMqqsbGxSP5HyxLjTXlSx4TJRMboTK0dGyuIzB5C9CyHilMjm9ZMZdRly6bgdDlx2tiKTA+PHCRqb4VUPERnUBTZmE+okhmysM9+gTYlIPbIsThmhQ5OcNCCi8NcjTtDF9XpFzNLdVABuoSrwx3ga4K541UI4r6xZNzmLOKp4y/oqRhZXJbZEkWliPNnQiQzV4ojuRQpMcVUpk4iE55tEs2HRG2iFF2uOuJwWeNl8jTmIDJG2mb+ISId1M+RzKmRME+cVhyBm0ryjEtGFtRCwv7wlBbJ1+qUU8mHCwNN+ejkMlSqAtuTgPYBOP0BHEgZ50U4PMyzaL3s1qQFAOcChBhwILIDeTunbR1O/gkM0A4BIQYAAHAwIMQAAAAOBoQYAADAwYAQAwAAOBhYoQMAAMDBwAodAAAANubsJ0Exq6itV/KrFpClOU5/4Bv+FhWybB/1ibOJsjXdHbBCBwAAQEemuWjrT6sPnZmocbtyIGnVvoZ3p7rt++T8xhM107xdm/YueWt3Q4bRETEZAm88t7mtV+gAAADo4DRc2tmP9r3mqR2Qf0z/LnK9+PmA0atJiNddAduO1mcgVojrqnIGhrbxCh0AAADtgC5duvzxxx/WpW2uN/le09wTdb62odH1/KN9HqFDvPvOPFfTQLshxugvk/Vk2naFDgAAgPbAjRs32rI4Z1ihAwBsSWlpaXBwsJ0yx9fnb7/9Jg7/85//bFqSVx672gbYEHyi3dzc2qw4J1ihA3AO8vLyrly5Qm9HRER4e3srx28brLOqW7du165dUxPTYDBs3bqVq63z5s1TiN/Y2FhYKOHpHt/JPvnkk2q0WMG28+fPh4eH//jjj3j7559/Xrhw4aeffurl5SUZuV2Am3fXrl3vvPNORUXFgw8+uGLFimHDhjnaKFW0Roh7evfbWdqQhsiJ0/+SP+CBdz1dB3z+nX41NTFc//O2gaEZbGTNXYNyjtS17QodIpqbm3fu3Hnz5k2NRjN9+nT5iD/tXJbNLh80Im7FjH42KV+eq8UbV50a+uL8kd1bnxc2/oAXyYrdaH2etqdr16533HHHf//7X/wXCwo+KeXl5dKXjels0KdCVC/btZ4FVlnFP//5T8kRrjICsd60aZO7u/vmzZufeOIJNVosx9ixY//3v/9hCcYmhYWF4b8NDQ2yQmxyP2fh+iysy387r2136NChyEjTMhWHDx/GFcTn8dy5c3feead9y241WIhvu+02KxN73T3jp7omFKhBjXXno+6JQsitz6PnLzegYd6o4XLlzL4zOZG1frHnatp4hQ4TWIL37NnDXgN6vR735rvuumvqVDmJvzucvrCJCuwcbG8p7j5y/oqRqmM7tcKqZMSIEVjjsAr07t37//2//4cvmwsXLuAzLryVxiKbjeJWrOhHbRf/hPqJz4RlrWcLq6xl9uzZ+G9RURHOtjX5PP7441jTt2zZMmfOHKu1OD4+Hg8ehw8fzoYMGjRIOioWU7L+N+V1WF9QUIZEq+Yheq1WP0ZwOdvEr7HcKos2AzdpVFQUu7t///4JEybgDfybes8999TV1d1+++32tqE14J98yxOdzxlTfv+xuKCeYbP73Tt2CBX2Sn4V/iV1nfzUgD739qZClu3Tk9/Wk2t7fRPaHK/ThM8f2MMBnzi3tLTs3r0bnw/xocuXL9NyPGXKFNne3G/wCHSg6Srq155Vz6nAv7s5OTn4jPTs2RPvXrp0Cd8j09s//PDDgAEDsAKaYjc3XLrbqye93X2k/X57LLNKBfjiF88qxMXFYXHHQo/HaL/++qvV1uLuSmsxHhc/+eSTFqUtKytLSkpKSEjAKuzn57dt27Z+/fodPXo0PDxcq9XiPJ9//nn8a8S7IuqqcmL9UuhtjdOt24zHbVwVxuBfF3ynT6sbPrPjxo0rLi52kHWqsOph3YDYI0Fdqa3BT50+84yrGwV9LOjZ6ppF3IU5hi1u0rFLdDhAiD08PEaPHv3ll19KHsW3og8++KDSmOKns8fvHvoiuf6541D+7X+4d2EhuXc2jqJNiVUnUT5K7r0LL5EcR8TFoWzqRn3VskLqTl144y4JNwPj3T0agY4f9+akkamLKa0p8VnmHoFTQRztSK/5Ku4c8DgO94+nn34a/8U/hHiQiOUPX//3338/PQ7lxcY/hNnZ24sDpMb/VNWJTYjXenFDT2UTg0Wnw3ZWqQarG7vt6en59ddfY4nHuc2cOROXYvVgFqe1LiFt0n/+85/vvvsuICDg2LFjdCC+CvBtokajefTRR/Huzp07ubf5ZFmtnHEpgvkF0+raZI2lw/TMRUAOSk1NTU42bh9sSUDG0TE1TN4yaM4ccpAswETnZswndgs+VkjF5GVtdh7kX//6lyCE/gVlOXfuHL4bduZBsYPemmhbfH19582bh8e/e/bsYQPxT0dMTMwdd9whk+hSIVY6RGnPfGVxuVTYMH4FFgMiC0d+GqlmEkM5iejoT0cKvTlmrIhDnKmJfjNIXFoTi8f0k1Ken3aSKdQV8ynB31h8tR+5j79U7/XiihWC2GLDcFpj4USRNxbjcrE2nv1pRj988Gz93ai+8ioeqV6tPIW8HjNbc3wWfv/9d3bSk97AZ2H69Om7du0KChI7HMH1exEXjE8G/4eGO2fxE68KB4aSihFrZQTcBlapBY8x2e2CgoL6+nqcLe54eNfd3X3u3LlW5MmdMrZCkWtqavbt2zdr1qzPPvuMG37bbbfhwfWnn3565swZfJvIT6RLaKksoFZ/NCojZ3XtsjULC7QbWg4idjoiIRRxpik4+eTMqTqIb1KpGedcatlZnM+cQdSsB1Ff/ItIUuQyQerAys/dJflTg2J858EGVlZWOvODu04hxDS4b+EeTN8w0gMfxejUcArhi5mWHMWYY6jjFkxiKCcRHe3pdffx7I1ys8KmIfHd4RKHsWQ11aNLx+nfFcyIwXTkoQHi3ERFI5x2xHi6/t1Hjh9ReLYZjze87q4nB5vP1g8dP/TUAazEAViHhz5mvualpaWsNuF7RjwOfeKJJ/C2hlpptrGxEQ8bRYmoOWAirMt2GrX41PZVaOiLUj+Rd4c/RjUTa60KIbbKKsugVRjfgdFTCvivdSpMc/bs2ePHj+MhrUgxzYOH4b7UI/G+ffsKDtFSJZMntYZdClHjNViLtTUVKCc5IIc5mBqqbhWR2C0xOvIvWbk2kyxGjmoqYrek6OgCFuBAsqX1i00et9BP7QO+ixcvcnfxTTCtxVwkJyedh04kxDReXl74AlB7S9h95GPhG7eTIaRDZ4iNQrRs2SXh9INpXIi3tstnIUj3k3xMNfYEDEXbK6/2aqgfOmZGADpwpPkqUqfDCN8U40vik08+eeqpp7Ae4XHo9evXu3TpkpWVhY8qvVFAzsUp6mcR75CJh0sNyipLfn/QYFUVst4q1Tz00EPbt2/HQ048FGilKNBzGn/+858rKipu3ryJfzksmuKorq7GxiDqvYLQ0FDuoa1bt+K/kydPxj8b/IWBjZD1qWMDDpclkDG9YNqgzPKqyEBpPh4ge3gIFyGXZPz48QcOHFCO06uX1HLzToNVD+usx5FC/Mcff+C+lZubiy+DmTNn3nnnnXSIcio8rvJeRt/h4nGg8dr/6SwegkoPP3lYkUTBkvkvoo3bqWGqCfZZ1tXKU5fQUOmUvbxRody0hblSSVrmpuBq8YHjI8aTaRBKibcfoLQXb9cfOYLQ0DFqcsejLTwwxO2P5eN///vfww8/jAeJOBwrINaXbt26CRP8VFzck35GR2p491Bc12YynH9s/vgjy6iJEuHsyilqqoSKbhzL29wqy/nTn/5k6VM1SU6fPo1l95lnnqF3s7Ozv/322wcffFB9DgkJCbiOeGPGjBm41uzMaUlJyYkTJ/DGsWPHqqqq8HDblKasoEBLP6PTHy/MiQ1PQRo0CM3JLIhp7Vtpmt6DcphJCn1BZjI9NUEfidhQuQWlkGGzmSJSU1PNCnH//v1bZaed6UQjYvwjP23aNHYX39zdcccdffr0MZeu35jwA/RkI77XXZa9jMwCjBgxQlWZ3S1PIgXveRzWne7kARbzsI5YR2Yd7h4x4m7ZKsx4MXzjKuPcBPV0SzV02mXLyDaZrmFmKbASF56ix8BEifH2i6pUXqfTbdu2DY9Af/zxR+5cJy0BEu979uvVsIwunbKcyG4za1kTtuwUNoo72Lnbu2E7vnWgo6t86dBiqxzH999//5e//IXdxR34p59+skiIP/zwwwsXLuD+iH9+vL29H3/88ZEjR+KxMNbf4cOHFxUVffDBBzwVxuh6V+Ebfnobj1Gpt9ISKrcsDAgwBSZQT/SYB3TcbWVzdAkHUz3GeSRTD+tSEdVHee8smxf6wMBA3Cb/93//R+9u2ULE/L333nv11VfPnTuHtxMTE1U2jqPoREKMf/k3b95M//7//PPPx48fxyMCmbj9ZnAuYdNbqsbnYoQZ4pi8VKYwVUnEG5zt7pxMRLmK3qGVykr0pq2EqXJ1kXxLlxtoyWu8WNTuueeenJyciAjybikeb2Lhw+fi5MmTMp/Y9BNW3mSbqWBudbzGzLfkl8Y6qxwG1sqysjJ29/Lly9hyi3LwpEDUaDomJuafFPQh/GuE/z777LOiRFKLWFMTCBtkInG3E5hYugRTdM42G1VfsBANCqVE3tIlsysqKnx9fQ2UV93PKfBGU1MTol6Ofv311y3Kre1xnBDrC58b9AT71Hbmx6dWT7HvJM7UqVNxP6Nf3sTX2OjRo9v115ztl4kTJ+JhHb5BoXfp5/5YAeknYx3Mqta8ZybJb7/9duvWraysLDwWxir8v//9D/dk67J6/vnnEfVqFx4XHz58GI9LZs2a9fXXX9vUXgsoy52TE7slxaq0/+///b+GhoawsLDy8nLu22wvvPDCG2+8YRv77IlDR8SzPiW+Jkxf1tndLfzMmTPxbQvuyqNGjRo4cKC9iwPkuO+++/CtcUtLCz4Xf/7zn53k3t+2VvXs2ZP7EnFrYNV8wIAB58+f9/DwwKPg06dP479jx451d7fyRhOPIvft20f70xgzZkxxcbEjLgrTK8PsrId1dOnS5ZtvvsHn7scff7x27VqvXr3a0TVunRBX5oyZt57aejH3zDOs0/bTmX2KR1cvpF7WO7VeO2UFE44Fdx3tId7xb03MmTMH328OGTLE0YZ0dlxcXLp3t/m7KFKzQ5ZgQ6u6du3KfYnYOnAO7Jx1aWnpDz/8cMcdd9DfXLTmoQMNruyUKVPYbQfJlmiCo3XcfvvtrXnv21FYI8RXvvm86s3dxyZ4d/n1cErG101pkzSNX708ZlE+PpbE+aZz2Vf6xTrqEzv25Rp5IW7Y/fwKQ9J7k8n0ROO+xDTDS2+P7964f9nYhF0IeS+RcEBlNc78XjfQ7mgzP5PBFJYmsZMxgG2xRoibavf63becbPXU9tt5vCENaTwnvvNj1btnP/Qzfs8t8vlDwxfiz54czC7ifKqPKHLj/lVfh+0ve+0vNnD6AwD2Q6UPTIfgzLYBLFa8R3yl4eKUu5jXwLx8Z/xY14SCpOZ1tj0dRB7BolnZZ9YZl66TnyOuLxCmbyz7egcB2XpEDAAA4FTY62Fd/c/bZn58OiPc27Vpd/yQjLub6a9jLJ0jTvxn2Rw/W7jBBAAAcE5cXV1pp522Z+iiuvddKGcOXiFTZ+0hX8eQQbG8EHvdNXD7N/XvITJHrP8lD/m+5Kl7KPK578/O8fOz0gZz3iQAAAAcj3UvjPXw6rO3vGk5Ig+EG6p39qfXcVaHwoh42CMfbdL1plwZP/JINPJFyHNC2vaNg3UjLZ+aWLMhy6L4AAAAjiVh4VzLEvTymVKlb0ZB3qi5zrSOM4+GPc/rLs7TL9YhdHJ7HJp2lplE5gixJnzdOmp62BjgNfX9mpr3bhkh63OgIVav0LHs1ectTQIAAOAQVrz9vsVpeox+1G/CtPtfI9sv5p6R+h4Oi+q+DT70N0mzss/E04undD/i+PeIraC2ttbHx8fRVkjz73//+913333ppZes9lxuV5yq6ZzKGKBDQvcxS99UsdqrVEDskWNxXbtQcIKDFlwcxk7LDl1Up1/MXapDl3B1eLsUYqcFq/CCBQvGjRuHhRjLsXNqMQAAzgYIsc2gVTg2Nnb69OmgxQAAqAeE2DZwVRhRLggSExNBiwEAUAMIsc2YP38+Hgizu7QW19XVgRADAKAMCLFtwGrLVWEarMWOsAUAgHaGo4W4Ln9uEkrLitIqhFiUm090NrWZXmJIBP8q6ild6RKylNqKy6u1rvVtBDmJOyJZG1rTHwBAniVLlqxevdrRVjA4WohtSelKcgEbsrT0xbyytNY/Q+4ahsubC1FhVGIwBDM7c/MltViu0WzfmNnRSZGO/TkAOjZYhZEzabFRiPUFiwZWzW9ePLShcPFy9HrG1NYuVt721FWXx0XOpq9dbVSWgQiEg01qJ+RnlONRsPH+ITixJNBla6nEDQVu1aw2MSguLy8wWtIEAGg9tAqz286gxYwQ64/vRssHbnyuMDnZQYZwZhXwdWjBR9os2pGRyCcpn3NPmxSdnY2yEbnVrmXvvMmsBR4qGw+loSR2NGcc2SGjLY6+S28jdqDING4tg8PSM6rr6qqFLcO2lelkxVEtaGpnWzXWyNl5O5Ly6zgZlvLOoCHRB5t0IRAtXZqNjSiJ3BESnW08XzzzOsMJBCyAVWGsvzYfF8us0EE4/YFv+FvU1rJ91CfOSF+4eEgc8Tscu/kcLcREh8OT46d5GQx6kffLtoCIZiB9b4wvuAzrMsEDtlo018clGjFXYFpeHGKkRJtoMCQyRc1NKp7NHpIYNZdupW0h13OnHJbhe4vsC7Vp/nKH85M4U0BJxWmcdrYZ2qh4elxu/PIumHcG8+vwb3V2uX+twZCGT1MGojeSiuuiRhbzzMsfCVIMiKCVl9Vim3Dlm3fmoU3HjgV1ISt0TPzk7Jl57Mokjfs+Ob/xRM00b9emvUve2t2QEeG6e0XcwAPNzTqXkxk9llNCTHR4WjIqfO45AzUirtoe75WaizeW7a5ZENi476W3fu5veOvtvJcTE99ZuZKksLE/4rriHSgvjRY8H/846zMiUxKGLErN8diYO662YMSNLVga4rKUaLkhynpb2iV1dXXUakJx/rKfHuOTlU0w7sdFxkt5N2k1wYklRXMpwWXKFZ3BuMiRRG05G5LmpUWBEgNcuONfG2pxj9EvH7ntNmqz57DxM4q4juHrL34+YDRVqtddAduO1mcgfIHN6ku5hdeFLs8hQkzp8BsadJxJk7scfdVQ//6t+sJ43QenqrEWfVHZ51jV+bdv3Lgxd86c6785vz9ifHOdXcQZ0/Gf4yUpJ2bUHIu5i0unePkiEu3AI0miVnXFST47AtNRdmB8FqqWT8Fvlrr8HXaxK3h2ZEbSVnx/52/hGewUZw2wDvEshB3miJtPHtjZ/wnTeK+x9vyjfR6ht737zjxX04B0IVPRihJ9RIR32eE3lrvrWR1mva7FZD82DKFbyCt4ymPPfHs66h70yKThngjdIIsl2WPNOnp6l54FIAMaFGnFHDEZMF2IZy7A0qKlcf61vOOBvvSwqPZCNvI35a/1DcSSnUX5EKUPsa9PJdbmlSdV16Hgjj6eIrMAPiuJeDGzOzvyaoNxiwhbho6NT1ZcdFFpIll9jW70WrlJjNZCzU+ELGXuYGTOoDCNyDwQZaBtaS56fwlafWiwciyv8GVTFw/u+SSatfncBvfjZYwOo3qpyI/18TYp9JmPx9ppzTptVFreXB/KGVFcnHVTE1hDSlayq6LiMREe4ZUGZof4ZJPx0ey8DB92xdS4PEp/RYdI0f6ULTt8fChb8mqzOroKE4ITDaa2o15ZoHRZ2DIM3JYmLRSsNbWzrSUveHZe3NId9Ab/DMoiMs/GJgGAEs0Hl0878lBR2kNSXjA5NOxevAIlNzevd2kofG6Re2FmIa3DrNyi3Kr6DIRHwA2le7cHPPUuusxJ3d8bZ/+b7axm34gyzu62BtPzHHGAKHuFQxIhHR5+25WUlBL9ErWD8fU1QUuLGr418F+SI/2CnqiXM4bbhaTNA4A2ovnwmw8fDfvq72ECFfb0GfD5d/rViMwJ1/+8bWBoRkPJbjQ1mZpC1oyYhtxRDq3DXJZP9KLWhH7soxPvDUV6VoiHTF+TNVanQ7B4aEcHVn0HAIs5v+3h1/yyj43rKT7k3efR85cb0DBv1HC5cmbfmcjLZeBnm0qSIyK8yeRwjvuGlg3MohzGFTrWNjZmGAzswhy3PCe/+y61Qge1VlJZ2fJ28LAOAADAyIULF9RH9ve38pnH+bKN+G/c/fSLxChyzaF/TGra1P/7B6oWDPOc/NSAPvdSC8+R94i9sDQv/nqg52Bas5cXdaRPnAEAABzGgJn7jzxxW9euzAod1FrJmnk/DnWjjgY9W12ziLswBxq2uKk53oUGhBgAAMDBgBADAAA4GBBiAAAAB9MuhRiW/rUap2o6pzIG6JC0lz7WLoUYAACgIwFCDAAA4GBAiAEAABwMCDEAAICDcUIhrl4ZUupfGBWlkdzloz81N/xCpNxRK8s1biAbZg4AACCLEwqxJWiGZpUMVR1bUdNbmzkAAICVuHt4eCDyrfPV+GHUIkqDnySLKKHkffWLghr2vPCmYdKAeX99kwS9nH9+bo/9y1beGH3Pi8gdnP4AAOBIXEI2GkrmO9oK2+De0tJiMPywpvuiwopkQ+qTA79uahxqqC9cHLT+ZG00QtvnXSysvnjx1i393pfe/qpxCUK7XryUVYzK2t7pDzWeTekRnVKJd+JSYrIiugnnE4RHr+XH50Z/RxKnb5qC5u0li0+Gb0RxUwzxvqUZG0Po9XSoXdkSZTOnJ0aKs0nIyMCUCxaMtQEAaB1YhVEH0mJ6akKXcHW9ob5gEfo0eRjxTKwJnjpz9+UGfOSxTdFBZLUOE9NXTR2IPi9zhLGoMfrnYEPJWFR2yGVeWXzE2GDlo2Vl0QOmGDKMIlsyBXGmJoLj5xviEa22+TN9zWmouOjqleHFgZvmG3SoriDfByGBr/Jdh3+xUa0BoNMxPfQehaO0CrPbHUCL29ccsWfeTEpVdX3TUWm1HgVrFI9qu8dl753b1ziAFUAktZJJaEXRqKV81Mg0HQnTRgSnp5QKEij3JAAArINVYay/HWZcTAtx2ZruG/0qkqehQdtONj03FOlL92wb+PRqVOMIk7r5j+Ls6VvKUY8w6275qadteLjqEtKYvml+oo6b7am581BJyfxgMn1xoDXmAgDQ9tDKy2pxe8f0sC5cYzAkf/rc4F6eeD8m69T7w1C9Y4TYd0BjyN9P1WYM1SJUuq04O25KViuy00ZE1aL8pJprSMcJrbuaPao7WYBS/8uO75A1y8FrPAK/27u1bGgimZooXSqamgAAwB4IBr/tfSxMQz+sIyt0kD+a8LVNTRlkmQ5qhQ6vqe+9Ry3SgQ97TvrHP25gVqy4/ttvNly0ToLg+Ji8+FyfkGKyM2pkbYbkkzQVmCYfAkpKumGJD4vbG8I8rNPlIaqIUQHpo8xkI4Nv4qYAl3kbl1IP69KRBUsAAAAAcHHOOeJuURnzDcJA38QSX9G2eIOzrRlLHq9xMD6gI4iKUMhTsmiEdMb89afmWj1/AgBAp8c5hbidQeZPRo1Mc7QZAAC0U0CIrcb0kjI19UFmtAEAAKwAhNhqJOdPAAAALAaEGAAAwMGAEAMAADgYEGIAAAAHA0IMAADgYFQIceO+l9669XL6xO72twYAAKATIi/EDbufX2FIem9yrza0BgAAoCNw9pMhMavIxiv5VQuGcY+cWq+dvILaSvm6OV5HB8LUBAAAgG2p+CRmVeL2M/OC3Co+GZi4r3jVVG/mSMOejyo/Pq0P93Zt2h2/olC/LoI6QoSY+F5Dyw0VftMGPvFkCglN/up0nw+f3r4dbUebSl8lIT9s9Hv2bbKx5J9ls/xsaXJd/lyf6GxOQHqJITFYNrokpStdisJMqQS7tgPbmoTS0lAS/psV1f6/4MANFYK4zS0KcJBR5Xm1ovalG1/c7HLhCnD6HOltPpbnYF25VsO/SKy32Qy8C4ech6VsecGCeHKHAELF8VUzVh8aTDYD5/240s3NdKj+520BYzLIllfvgZ8dqV+HjEJcdviN5fPP+WUOfKLqQHNTk8GgL1ycWvro6x8/ZqCmJvR70BcLLu6sOn/+xo26va+sPND82gM2tFkblWUwZDE7uMNt9bXXiVV55dg2mlMTnFibN9dnZSlzMZWupBTQsRdWadHS9PT0HcV1UfZq2tKVPjsiaw1ZWlrgVpbW+tunIJsSZ/xtIh0vv87GH9SzSp9eYtwnv8iGYGMbmfRW4RBA01z/E+o3SnJSt+Fy5cy+j9Hb3n1nnavRIx1RYndKh0Ovoho0a/NMankOCR7JjApE6IbdDDdSunVH5Owse+WOJd+Geds2N0ehjUpjpBgPsYgMJzr4h6Wuujw9LCsMzbWbEuMS4iJn01mTUQDRE3uUYy+0voHZRbVptv3xoIdDZERs2jceGhkZt6O6DgVrzR4CWGagY38bErMDScwRS+Jedrhic0w8cowPeD51+RnlkWm2OqfUiDUyMDqauocy3c1REwu88GDTeCAuryRyR3R2NspGZABSy96CMTkI85fMjXcjGSdxk+1U0FI8d25cdmCJgbbUZD9jPad97FybuuIdgWFZyKcaZTBKzG/MNJ557I3xha1zXZZmc0JEVeBUeGQk8knKF1akeKWLzElkS+HfkZs6AxWOy4m/4MNM7LD3+Hgjw782y3eroCPhzPGoPMtYQWobydvMayL8Q+I/m1e2KeewItPcElP2yGJetriUpAuBaOnSbJXTCviUZAfGZ1l4qLOz8yffQ2fO/MPtyoGkMRtPVz1rTordx1WEn9MgpG8T6xQh12B8li2v8uzoCyWUs2XB3ZwgHF8m0YHkXotcEkW+tXlxiJlz0CYaDIm0cfL3g8LcRhYn0dkxYu30ECne4YMrQV+VdflJnDv3pPyRvPbZatc7UUaHEcJimUSUGOWzjUl0hTaPCWFujLEmZS8l98pZ7K2yj6gKXFnDQ7paNNfHJRoZtUnpJJryZO/IiSlz80vo5QRouTMYqFmDvLgkMkCsLVqKlqaXJgb7MKNvYUfKiopPj84oTsM/NUTM0nG/xwcUbCYW+nB+27WIGcUH83OenZYX51OESw6m5njiDUiYLe7D2eXE4Cx1ZwQ3Nx6USJ1yhUOdnJ7e/WaMH0ZNTXjqJkbtr21Aw5iHdV53BWw7Wp9BTQzX//zZwNB1dLh7bPgIaT+6XncN3D753u2vF5a2zdprpfhqD7OtE524vNmSvUQY7uMftzTEhYxpsgxRvBtV8XDMbG74wkJ5ae2ud8b5MyM8IgwE9kBkWhqvfewIKXtpdvZStuSRyNSY+CwhXvMab4xNp4CERBeVzvYXVUEwzWF8MIFVFI+N05ROIlNKXTXntGL1I6q/gxZHPLI03rVTswZZpUXleSV5O4pKUdgFRM+CiDpS8Ow86qdmJFMSyU3RZsEouY7d4OesxRLvQpQYYR0OM9QVZwiyjY/Ef0aqG+/UcQbu6g8BaNCIfrN3nT3zTBBqLPsqf8Dcd02HvPvOrLzcQCaGG2rOzfKbyQS7L4jQkMU5NBHr11Mrc+Awr2kZGWSFjoW1tQuoBTrefZf8JVPEnhPstEIHmZbIS0u0MjW+RstNU1X8ezcVMJclvipdXNJLTI9u+E912sHY1laIblq57WO/ETEZDzNjTrrFi2stX8SK+UVRZ2dwWHqr5ltxKbOrOQ+scH4Z1fmoPHJ2ou+FjOpS//JAX610R9JSg/5S/EtDTcfVqbaZh0TO2IaQotIwVJ43G19P1cJsseKryxpU2HLO54wpv/9YXBAa9FRuadCQISTslfyqIPzP6Q98vxtds0jnNfWZAJ8gevCb8nUz2Shb0/2Iu07m+VzbQkYgrZgeZkYiiM6g9kI2ub+tVl24sVsl1uaVJ1XznqFT1xGdJ/JX9aSamoK07w28XWFGleTmlmqZC/G1/hnc9rHbsxnSCUxtTAlVtW8kCqEbk4yWSR8xNa9xhrIaZV+gTz4TovURVoFzNngB+PY9zr9WshEEpeA8TaeVmo4oiaREXxucxnnzJDgsMIQ889QiLdmKxiJI5yjuSFQZIdFxJLJUs6vtQaKciRKHhDD5SpxNVblihY9mHxqoPtTZGRB7JKgrvTn4qTNnnnGjoPaDnq0e5kptDV1Up1/sisHjGipAl3B1uHN80EGmJeINrTixwYm11XNdXOg7sDjqFaw61UJMz5H6uBiT4h4d4kM9ypidl+HDNBY5pj67uWwyuQkN5wXfH5SsZPoI1R5axGsfe11/uBOgyFpT7pRQkSn7HXRjxsXF0eaxzWs60WTmhLUX/yusgkz1qNFilFbirQlRKbw8qWQ+xqElE3cuNXdATaBQ0oj1EKWH0QNlyY5EtBch4zSBqNlVNZpkzqTkOH86X3G2ql4Rwb9Q+C/Tqsy8SC39BBJJHAJNbi3OIcTBiYbWjh95ryMzAVnCbe5fXhxeYtOTFSTMFInzkciNtYU8PPdtB51U+Cqe6QkQe1ztwx3roSZeBVZRw0lh2QJrpI0TVkHpmFRXkcpWkM6UiorLNxrxerW0jSSUO+cub7P4XUnprktDP6Zj+52s2SJMFkuZomWOKrQsYC3OIcQdCu4LRXi4AH0WaEOMr9JBt2tfgBDbHKWxGADYF+h97RMQYgAAAAcDQgwAAOBgQIgBAAAcjLwQn1zvM7li04n3JtFOhBq/fOX+Z9k3X7yXFNrfNgAAgE6BrBCfPJq6bNmyfScaJk0yunOLWnfozbBu16//9tvlhz9rI/sAAADaFxWf3pvbpyhtohc38PQHvuFvUVvL9ukX67iHytZ0lxNi/eVzyQ+ufsDw/InGSZN6Co/igGYb2QwAANCBaD6Ysxq5ruYHNu775PzGEzXTvF2b9i55a3dDRoRxyQ594aIwVOTu4bFw87n1EQLHP/rSvQMfXI00NegjrMQTRUpsW9g3b611ZAArdFhHu1qhw+Y5i5e9kKy2Snvaz0IB3Ho7xQobkk0nWEXF4Uaqpfng2kP9lkRUCYLrL34+YPRqssX1v0bQhK+/6uLi3lIZvjClYMT6CO4wWl+6Z+CD7yN0697J6K0TjRPtqsT0uhDk03Xc5e3p7x9W6BDSuVbokMjZ9H0uPp0uK6X8O5ixp5XdgE2uPh8rkvBTs26CqB8Zl5X2kznrG0e0ikp7keLKL1/xj/nq7u0Z/ODG2vOP9nmE3vbuO/NcTQO9MAeLu0fAHIRip70REW5S4obSPbmpubmp9N6jk16xpxJzFkwgH85vLUXBdmpyWKFDTCdaoUM5Z6ohKE/BWgtS2Q4rupM1PZD278lWhHz+YWkWbYF4FZX2wfmceSj72ED0jcUp3VtaWmjnl6Yz0lCyJ+Cr+vogygVm/Z4l1JjYlubyIJ7TaBfZlKOr8sg023j3ghU61OHkK3RwPhgnHkoz2BGWqf2N600QL3HyK1yI1/4QNgTPhZ90KsQZ4tUxS10wvYXy7SS/zAe7Oga3t2CLo9nkxvku4cqc/DU4pJIIFhMR9/xgTnUkvRyazcFHKk+JZVC4xnNM5RlpjKzg7FtyFRWFVVecgyvf/KvqzUVxCP1qeVp3pC9YFHBh/tUEdi2PhpLdyO91454XMzuh46ay6ZO64MSSQBfat1d6epwtc4YVOlThzCt0aOlPdikPjmHBkq5NmfUmiK0KK1yIcxZlxPdqLZlqpCCJ/+y0vHLEqKFUTxCvjsGNU0wW1GCTUwUK1wEh3ke5nVAqicSSJQJLlFVLRQ5Cy6VqRxZl4hqfhErYS0ncqTiXCbP2ChfRKipacQ5OJ8Vnv/1y75df7n2N3itwWXPoH5OYh2+ePgM+/06/mlmYY9vAUF6FsQa7ewQUbj63XmfySnxyWxyaehqnv8VkgZU4OL/8mC/Kf26s8UVi275HzH4fj89IObKd20hYoUM9zrlCRxQz9qSuWRnXpvR6ExJmc8VWJmcejB9rJXuEQiywRNQTJFbHkOmTbBLBOiDIXCdUXLJEFSpzMF87JLGIiZrI9NorQoSrqJhbdcXxjH55/5Flt3Xt2vXXb1ZkuL301kOcdZy9+zx6/jK1YhK1jvNMTrKyjIFPDHRvadlg4M0TDVvcuBaH3LplDPCc/O5FMknxj/Pn37xx4zp5j/i3hz+zx+trddXlKDDMitaFFTpsi9Os0EFGrqwMm0XeNsmchXFE3cYGK4ZYuToGB5t2Qq38/YA1WFQ7a5vCtIpKu3p7guHMpv7fP1C1YJjn5KcG9Lm3NxW2bJ+ePJA7ubbXN6HN8ejIG8gZPnE2LUdQujU6O70ky4o8YIUO2+FUK3QU141EHBnmnmfBGVFc4UIyZ/48AyX3/MUJpFYMQYHG1UDMdwmpljTTBLzOQy9LGm+mE0ouWaJcgGnylX5dsdaSHORrZ5gtsYiJisjM2iucvCVWUbF+BRMH0DMs9c0uXajNIfN+HMou0VGziLswx7DFTTq85RJ/5WqCi+OFmLuEQLqqgY8EsEKH7XCqFTqSkuKyUXY2tRwEKdx0RsiCHVxdU1jhQjLnraVYFk1LI4uHW5KpLvjnlYdwDSC/DVRvkRBZFatjCJNrheuAaFGdoBOKk0gsWSILd/LVVGtLcpCvHQoWGB9cyl5KEpFNhcbFyWdtbAbJVVfYLwbEG+0Mxwsxso0PVVihoxU47wodUaSBucEyZ8SYg2Q/Ur32h7pUgkRsoRI9QWF1DGMcUXLzjS9MIl6yRMISpQzV5KCiduIQ7q4osmKvkjqXksUFy2y0M5xCiDsWsEIHAACWAUJsc2CNBAAALAOEGAAAwMGAEAMAADgYEGIAAAAHYxLisowe49/gH1y2t2ZBYBsbBAAA0NkwCbEu/krzYoPBUJbR6/Dohudolz+3TB/YAQAAAOZpLkqe+FIBJ+DVXRefZZ35nFqvnbyCbKR83RSvIxsKK3QAAAAA1tAzLPX06TRXV1c3zJUDr+y8K4g9dmr95MqPT+vDvV1Pr/Nce7I5Xqcv3Hhus8wKHSwNe1+8d97nZOvV/PNPB+B/mw6kTngRweKhAAAA5ijf8dXEqHdN+0MX1b3v4kq2tH1nnavRI119Vc7AUOkVOow07E2bF1BYfXHILf3eF+/fdObs3B4H3n/RL6v4RBmsWQcAAKBI4/5Pz098RUpbidv3zwbOX4f0pRWxfjGSK3SwUUv3oU2vBhGPmJ7DJ0Xtq21svFSEVj07EH1eZu8aAAAAtG8aT+4f8GS6hLLujg96alvK103D8DYVIrVCBwAAANBazu5c3P+BHyUOeE3LaGx8Y3d8r4z5zTFUiMQKHZzowZORLu909V+HoMYfvszv/8Sbnj3C0Ng954rtZ3tpxsaiMfMTdfRe9cqQUv/CqCh6CrvskMuRvoZ4X2Ea/am54Rci2WgKgQAAAG1C09dbflybOF/2uFfI1Fl7avSa3oNyjtSJV+jgRZ2StGnJvb598Gb0B0ffHoJu3Bj//Kr9E0ba72Fd8JiAkCPViTpKbfUt5aix/Pi1qIhueK+u5kpcX51EGs3QrJKh1BZHuE2BAAAAbUzTya/RhERPQWjDnud1F+fpF+tMk8Rav9hzNZIrdAwlK3TQe15TVlVXr6ReKL6BwSG9xicXF9tnhQ4Kbfe48y11iHiPrDt+ITBlZPnP1xDCQnyteB+KfL2bvcoFAKBd4RKy0VAiP+J0AOdzxpTffyyOvKx2dldC/znnTDp8+gPf70bXLNJNfX/fBh8NdZs+K/vMumG4GuHzB/ZwvveINfdEogPF+qFRGqK8/q97oJSfS+N9g9G1C9/1CKMqUJqxMYTxAT+FmqmgB8LBF8L3Ev+T4RupcGQcHVNHU3pEp1SSFCkxWdT4mpq7KM4mISMDUy74wyQGALQfsAojp9PiAbFHgrrSm4OfOhPoyjkU9Gz1MHp/6KI6/WLuUh1Il3DV+YQYdfMd0FhUhxX52gXkP1vj6xtXWq1HwXU/L43rSw/dg+PnY52l9Td/pq9RQH0TS6Yg05wyd5WBxuifgw0lY8ks87yy+IixwThteHHgpvkGHaoryPdBSLD8xq7Dv7RFXQEAkGJ66D0KR2kVZredSYutxAmF2DhNjH5eOqAvcezbF2UcvzYScSaIiZ5WUlue6tYv8sybSU066/qmI0rWUUv5qJFpVH7aiOD0lFJBAuV+AACAo2BVGOuvU46LrcEZhZieJi7teyV9zFiyN8Ifbful+Lxxglh/au48VFIyPxhdy48/4GBTAQBwBLTyslrc3nFKISbTxLkhKZ559KsZGo/A7L3RKKCEnoKou5o9qjtZkVP/y47vkKXrmxuL8Aj8bu/WsqGJZGqidKloagIAAOdEMPht72NhGqcUYtRt5GRPhPxHGid/w8gqr32ZRQF1ujyU6xNSjEYFpI8SJMQx94YYH9Yp4pu4KcBl3sal1MO6dHTB1lUAAABQi3MKMdJGRBkiTLvk6Zxpr1tUxnz+W8++iSW+pphGCTYGmo7ytnVjyeM7RM11IOZ9DAAAgLbHSYW4LSndVpw9amSao80AAKDT0mmF+Fp+fG70d/R2QEnJUK1jzQEAoBPTaYVYPL8BAADgGDqtEAMAADgLIMQAAAAOBoQYAADAwYAQAwAAOBgQYgAAAAcDQgwAAOBgQIgBAOjg+Pv7O9oEM7jv/a6WWaGD/ENtGsgCHbeYP7eYLczNGzdv3viDcB0hV3M5W0Bd/lyfaOLpPS6vNivK0k8rSOoL8YbEYDarwBJmr3SlSwgy7gAiRO3jDA1GbCiX6Aj41CahNHH/kAu3qBQ2E7YvGkmH/gOo47vTjV263tbFvYubexd3d3cX4vzdzdX41wVD/jFtIBdEtql/3KeM8jGu4szjlogbFNevX//tt99WVthuqaS6/CQinYZgcnEk5VssxdqRkXE7qutQMFlcqXgHiosrN+5Vl6P0ePFVRF91aSiJvfasuJI7AsGJtXlzfVaWsr9blDY5VnZKi5amp6fvKK6LsucJUSqFOxwgfSO/rjP2DcBiRgV53nbbbV27du1CQQTYiCsHWocZaTbiHFMTcf4+5J/gsPTsotosZGGv1/oGZmcUp5FLqvYCioyP3JFBX2C1F7LTw7IkEkRlZZFrjLfbOdFGpTFS7JM/l8hwooMlB/944nMWhubaVYlVl0L6lhVdEgAswwmEGI9oURJ1QZBhSpgV3x2zAo4zCAwz4Py21uJ88dUW5z8b0behS5m45E4Ta07ShUC0NDsbZaO8WnpoTP2NDIyOXmqMFsyZNEFWzps4P7QUz50bl41vS+j6mWrN1Ll1c0eWgG9pAvFvp081Yn5MBacgjWceO21wYetcl6XZnBBRFcyUImuPsQ8BgD1xAiEmUhA518clmrpmrLov9vGnpiN8yDgnEY9eAqm94h0oMo1cZMGJBkMiFZG+0yRXs//stLxyxExNMNlkR18ooeZpmBvSkcXGSRN6NqODQqR4hw+uOt32dflJOyJrDVlaph1GZvlupZuBqNvWUntOmTIKiZDxxxmx81bk5zQDcWeyiDl4LI9lMnspwiFZxhD8SyusAk9sRaXwlTg72sc0SUyUveP9+gLOhhMIMT1Fy1xHc/OtmazVUoPgOrQD+ROR9fEnIx3fC9mBzMSEeFQlSVzebK7GkAnnvLRO8qCGmR2iap1NYA9EpqX5xy0NcVlKficNUfY0gpSN71OWsiWPRKZTgH9tEe+kGB8OmE4cCYkuKp3tL6oCV2xFpQiU2DSGJv2mqDQxuJP0AcBxOF6I69iBK2eSwtJMtL6BS4u2pqPI2Vomn63F9PAYkaGUD3d8ZGP7OyKiNwWyyO8kHpK6uNjzJQIyUqVHv4g+VcW1lq+ExfyiyNspLoWMvCXRRsWnu4ASA/bH8ULMedRGhiqB8VnW5BIclh4SsjS9JNGY59KQaDyyMR4O9KW1vfZCNj1oVmUZ1nM734o7IcyokhIf+s3AWv8M8kuWFZVYm1eexLyRYgfIT7Lp5FC/ytW+kSiEPgWkc5BfbNNJMXaXapR9gX6exoRofYRV4JxDiVKwEo+UsYn0K1BiwO44XohRcGJJoIuPC7WdbpyotBhy48reXpPrB++NpAUjeHZeho+LC3MozrhMKPkFCPHJTi+plXvZm36OZUypMKfRodBGZZWQsS/ZpmbttYjMIVNniOzba8a0dGs0iqw15U5JbpFvLS6bMiYuLo42jz0p9DOFumqEyMwJay/+V1gFM6VsLZXtA7hfLQUlBuyNEwgx92Ga9WD54M5f4iyzeMc4uxj6fTW2WHrX9BIb+0IbmxLflhf5dtiHNsIX+IQnRNyAdoB3yoylkn+FZQuskTZOrk/Jl5Jl3BUVpsZ6AGgNTiHEzgr3tTc8sGrtbwUAAIAkIMQK2GKkDgAAYA4QYgAAAAcDQgwAAOBgQIgBAAAcjKIQN+x54U3Dq+9O6smGNO5fNjZhF0LeSwrtbhoAAEDnwPIR8fRVha898MxntnODCQAA0LmBqQkAAAAH475wYcG0gXOeeIPspBxoXjwUoYbd8UPicunjj216tY0sIZ9MhBk/RTW9wWvetwGs0GE17WqFDutyWsoPUuMqw+xCAaSTUd98a9XF59sDS34AYtxRzpyqoqtXryJDfcGi5YUNa0OOp8YFfNVQH3TrVtk6n49EKXa9GL7LtnPErG+09BJjQAa+Eg20I1yzCyTACh1W08FX6DC+B877jbcR2dFJkWZ+LLjLL5ENX1wzIsLEyaC6/ibMoRN20c6CO4rdEqPjBDQc342yXx+G0C2EvPs8hkTfd9p+jpj+RpVcLUxALevAUtUCCbBCh/V00hU6Wk1cXl5gtFqHUMb+xviYt6K/deYu2jlwxjli7qoIjMt3ZX9fsEJHK3DyFTo45464Z8pgB4am2xpyKpdSzpsyFFblMBUhWuBDYskPXkTJ7EbOztshuFvj5TO7Oima08F2IMpBcnY2txbCGTh+R8XxonldlLe2qXFwLeq0bXeyANshEmKvEdPQ4O0nGxYFoYbSvdvR5LaaI24NsEJHa3DmFTq09LmjngOEBaNqiTTZ5f61+I6K2KqwKgdbgnCBD7Kch2jJD0KpmVpro+IDXcgBH8mcaw1peXGmDhaZVourxO1vOBaZj6daHSvwXLJsLq+jFs/m5SBl/Gxxp227kwXYEPGI2GtacvbiIV7eePOxxx4Tp7D9HHHrgRU6Wo1zrtARxQx+Kf2hPV6KLY8cqZU0W2pqQ7zAR121xJIfBB+ztQ5OLCmaS/+uyywdolxXU+8y+oRT7qiKq5MYMW824IS4b9gQQf2eIqQJX7fOQPCaltHQ8P4tDmx0zwkryspe++23h+35HjF3Ytg0XWwuCazQYTucZoUOMiZmZdgstrWNca+pWOvg2ZEZSVsD8Q2WLUq0SUdVYzbgdDjjHDFnYlj1IrqwQoetcKoVOorrRiKODAt+ormnUmy25HkTL/Ch9ZFY8gNx3lFTrDU1PxGCx5/SS4cowOtdZGFU/9p4Mx1VTRHqzAacDacUYqp3m9bsUNWTYIUOW+FUK3QkJcVlo+xsav0NUrjpVJIFO7gnTmS2dCmiBT4Qklrywzhzzqu15GtwuHfFLd0hnbNiB+MaTLo5eSgq6KjCLiq5Oom4fm1wsgAb4zxCHJzIufu03BMwrNDRCpx3hY4oclq4wTKn0piD3KocHPEUV0a85EeWZFnGfPjNZep5wpyDpTuYKbn5dhbkIGuqktlAO8B5hNgJgRU6AABoC0CIFYAVOgAAaAtAiAEAABwMCDEAAICDASEGAABwMO5IX7AoxfDG+ggvY9DJtZ4TlqPkffXPBjnSMgAAgE6CeER88sjyN75qeC6I90UdAAAAoJaznwTFrKK2XsmvWjBMHAGPdzf5nVkXQXxJlK3pLhLihppzMX6P2ttMAACAjkpz0dafVh86M1HjduVA0qp9De9O9eZHaNj94XLkQnsV0RduPLfZ3SNgDord/AZz/OTawWRtjtzc5H31i4Ia9ryge2Y7Cf/bzqp5Axu/Snrn5763Vq7etdh7ydS2rBcAAEC7oeHSzn6jqA9xPbUD8o/p30U8IW7YvWLPwDdiKum9uqqcgaHuLQdTPTLZGMMWn82uWI5ez5jqeau+8M1nAnbXVAfe0u95YcTG8vPTEdrxo+/+suLX7Ov0BwAAoP3SXP/TDN9IeltzT9T52gY0jKPEpz5/auBfz/htWkHt6S9XxPrFuCOtX6x4GQ5MQ8le9FHSULJUh+e9k6L31TbiwMiHhvZC6De71wQAAKAjcmr9ZPSVfijaywuF19cAAADaiIY9H1V+/PpihJr44e7644U5aNob4hReIVPQ0LxTNfMDUeOJL/MGxL2NLrWNrRTX8uNzo7+jNkeNrM0YalOHO9UrQ0r9C6OiNA7PBACAjkZP7347SxvSEHklWP9L/oAH3jUeIasebdu+fRuzm4s+Pbu+96CcI3XuAYUoVjo3r6mvffS8rrcv3nwk81h6IKprKyHWn5obXhy4ab4hg9nNL0NRurYpG+QVAIDW4XX3jJ/qmlCgBjXWnY+6x+QW0mvq+7V1a1xcXV2b9iasQMnrwjWowS/2XI17y4YN9AodzDyxV/jatWSZjltUqvdqat41LtNxw3NiWtqN69ev23mK+Fr+34kKJ+qMAZqhIIsAAAhwCdloKJnvaCu4nM8ZU37/sbignmGz+907dggV9kp+FRkZn/7A97vRNYt04kSa8PkDezjfHLH+lx3fBcRnSB4iI2X63bt0RqmpAewm/x3zSDgOnF2T75NCHivGpcRkRXQTRDAGSuYZUFLStyhkL/F7Gb4RxU0xxPvyj44N5sSPSxkZaLc2AABAGazCyOm0eEDskaCu1Nbgp06fecbVjYIKCHq2epgrJ6rXtLVrjYsA6BKuOp8QY0Z195EIrV5Jz1foaDXMz2cmEBqjP/KvLZmfVXbIZd7G8pQYQ0k3RLbL4iMo6WQjkFQH8kdwpx1wnhciC+dn4ZCyQ3MLumWVTEGmqQnB0WtZEddYG+oK8rGReXwTdx3+xW6NAgCdiOmh9ygcpVWY3XYmLbYSpxTi767WIiR8OqdvKUcB8TpqWzM0Pq64qA5v4B3PvNepR3m6vunoiv8IasBLtkur9SiYG4GXis2zcWm48aTG9c0Slsg/ikNGjUyjbNBGBKenlApsVO49AAC0HlaFsf465bjYGpxPiDX3RI4qLiobG6yzedbXqs8jNEYQaJxzYKhWOqpvsblNAABYAa28rBa3d5xPiFG3qGcCXOZtROzzOv2p/LqhUTqPQGQUaP2pjOyA+HiVGTbuOH4tKqKbxOyzhuSZUaATThzLHcUh3+3dWjY0kUxNlC4VTU0AAGBvBIPf9j4WpnFCIUZIN9ZQ2H1u+EZmKpu8R4z/8U0sHGkM9MwrjFK9yL1n4M8HXELIE7z0TfP5qeg8c11SqD3qAV1Y3N4Q48M68dHETeRHYin1sC4dXWh1VQEAAJxTiBGZz80qGZplPtA3scTX3DbynxlliJdJJcozOH6+KbK4RPwjUTKW2Y4Yqq4yAAAASjirEAMAAHQaQIgBAAAcTIcXYt4cBQAAgBPS4YUYAADA2QEhBgAAcDAgxAAAAA4GhBgAAMDBgBADAAA4GBBiAAAABwNCDAAA4GDc935XS6/Qgcg/1Ca1QMct5s8tZgtz88bNmzf+IFxHyNVczpZSutKlKMyQqNqDBI+6/Lk+0bTLeJReYm0ubF5JKC0ryspV8lqZvI0hDbcjstZorjMYjztCSHke1yR8ak0nldpH1HHuWZc5763qGK1oDVt2SHMm2asswEK+O93YpettXdy7uLl3cXd3Jwsiubq5Gv+6YMg/pg3kgsg29Y/7lFE+zFJJfG6JuEFBlkr67beVFc22s5/tSOklVqfHYmLIononvo5dVtqjOzqDSNmF7OgkkxQ7nNKipenp6TuK66JYi+Li4sqr61Aw2a8r3kHWRzHGjmMVG58el5XxvPOuqmPY4XfXyg5plSVtWRagzKggz9tuu61r165dKIgAG3HlQOswI81GnGFqQhuVZTBkkRGxVcnxpYny0tguFZxoMNjOtk5AXF5eYPTWUicZSdVVl6eHZYWhuVwljowMNCpz7QWUnh5XLk6ojUrLm5uUX2cSF0d1jLYsFzp/B8EZhLh1kK4YmSb+ZTfdsFG3a2QIcCEQLV2ajZWnJHJHSHQ2NZwaWcyGC2/sTDngiGkoKTo7G2ULb4qNQzLu/WFcXprdq21LRs7O28GTMFHrtZkp+GwGhmUhn2qUwVXikWGBSdR+aVF5ZFjkDgkhxlLsG5hdVJtlXNtFpmOQmY+lzHZ6Sa1/hum01vIOGRKpBbuKV7pEI6YNcNoMf9IV6LahOhKnVyiWK9UhUWRgdPRSkSW4AKZPUsEKJ8J8WVT/RPJliTszYq8UmOdoO9q/EEtTl58UHVhiMARTfXJlqWE2vgUv9681GNLwfgaiN/DFPdIYnsWJyeRgvOUj10xxWloeviGm7uYEh/JHYjk3FkddrI6tu+Voo+IDXcigmFkrUNR6bXU9MjqMlTcSJXGV2MefUmZfrMOzZ6Md0ql9/E1TGLKQQWMiXRg5rbNNpxVpeYfy66ifU/wrFedTVJoYHEzNmsQbare6UG1DmqbIt9aUXLlmUh0y+kIJNS8osKQu39gnSVxhKhWtKOyfafJlSUdmrgigzeigQkzfsVHqoR0ZGbcDX5749z5yJOltnA0aepeOGV1UOtufySGbYIoUH2nKXHgIscURNbB79WxPcGJJ0VxGeqRaT1ncbAVp2aXZ2cyoNC4yjVVibAfaWlt6YWlgWKJwOSuW2gvZtIwrFyJ/7yJ5CP9KpbsQJUZYh8MMeLQetzTEZSkZPRqicBK1NZPokHmz5X7gmC4qlUpNWeKuK1eWdGTmigDajPYvxFrh4KlVxPlzFpAWzlTsUHWonRI8OzIjaWsgQv4OM4GMh+nbCsSM3PBpZY7h01yelIHS4xNF6wqyyavL4/xNQ0bpjlG60oc7AFR1KDgsPaSoNAyV580mA2bqkQb1XMyF3OULzbBth1RGtiyL+mfH68xKLFmyZPXq1cohbU/7F2KqM/ok5Rsn6cgcICqpxWH0Ayjykx8YnyU7jMI3YhfoiUVeTGZ4TO5IqYHShXj2khMfMszmFYci29ccMQ01PxGCR3ppVIvyW68tIOM/f7bljBozkrMffYEMeKWHhdS9f7yBo0iSHaMEoUBfOhIeQHPKo5A5RJQ4JASPgbWcF/4Sa/PKk6rFQtz6DsnPSTGVTFlyXVeyCPWROwpc5cXbjjTFSAcQYvLWRS2a6+MSTe8yv+9peTiILHBH7iFxR5bv93HlGS4u2cKYONcSMuhBxgPa0sDsEB/qCYbwEL5UTcXFtcepCYrg2XlxS8lwiHoDgdt6bUHp1mgUWWsSUkaFTL9/eCQqSpQd7WO8qxY/WpLsGHV5GXTNCHF51CM+5rTOFhwygZUY3yxR9+ukbXb4+LBtgzWbSR6sWK75DslaYpJC0YkQpZIuS9g/RfMnnFqLOrO6yZZ2Dq3FTqLCyJmEODjRYP0FT78BpxSEd7OkNsgcX2SaIUsiJue5jmhXcEjSgvaAqbLMniGK3Wrj6uAm5RdoVN4sfjDvDJozUhxFHGI6laJDxqLpx3TG+WpeNK2wJ8iZJtchOdtsVrxDcqkUyhL2T6WylCJ3RFj9ZVXY4fMSyJmEGACcEup9NzxWFKst0E7hjoWdQYURCLHkEAMATIhufoAOAK3FTqLCCIQYAIDOifOoMAIhBgAAcDggxAAAAA7G3cPDA/+zvOhq/DB1KZoOpK76Aw0ItKdVAAAAnQj3lpYWQ/2uRQPXlFX4bVxuSF47zdPRNgEAALRfmouSJ75UwAl4ddfFZ5UHutTUhCZi/VVkqC9QjAkAANAu6datW1sW1zMs9fTpNMYf8ZUDr+y8K8hcEnaOWF+4/InPPkOfoewzy1BqquG196f0wsENe198y/DKyok9G7985f5nmW9upv3D23LjVrz9vuWJAAAA2jHlO76aGPWu2Wj0HHHs5nPrw9/YPAtRUxP6QlG0xi//8Wz//PNnA25cL9uo22KxNQkL51qcBgAAoF3TuP/T8xNf8TIfkZoj/uH97ssLKpIVsjvxJfrgpSEI3UDIy3ca+uOE7UwFAADokDSe3D/gyXQVOkxPTehCl+ccrkv2s7NVAAAAnYezOxf3f+BHVVEpIS47/EasXwUb5nVXQO7huvcRmSOuv/g5uucVz3snoRE7zpyfG4CaThXtRg9aMUcMAADQgRGsv9z09ZYf1ybOV5eWniNeXnQ1QmP4YeBn4wd/lrK/8bnHsj4M8qbE9rHHHkX3IOQ56ZUPXrp/wGAcMn36NIRgagIAAECeprKv0YREtS8DU3PE1MqvBqSLb25eTIv5tIz6+vdvcfGc9I/z59+8ceP333//7bffonKv2LMOAAAAzs4PP/yA/w4fPtwYcD4ntPz+4jjystrZguf7zT5H6TCtqcpZ2f4T56amJpvnCQAA4PQMiD0c1JXeHDz3TJAbvelCoZzSYiFWzrRXr16WZggAANAe4YyFWws4/QEAALAAdkZCMDXhwseiPGWF2EUK9pCVNQAAAOi4cKVSLJsKGg0jYgAAAAtgh8CCqQlJ/eUeUkCtELdm1A0AANDeEc9ICKYmXCkU5hJYxCFKQszNyGAwsNu4MFvVDQAAoGMgKcGCYbLcKNadjkS/5kZHYre5776xEkzTBrUCAABwHsQzEoKpCVYeueKLRONfwawxvS0xIuZKsKSoXzn4BkLP2qh2AAAAHQE3NzdahdXMUQjU2Z17gKu/ZC6iYU/C3w1J70325ExNXC16bcLBh7z90MCUo21TPQAAAOeHFmJags9+PDD6HSr0b7uqnx2GQ05tuGvq36mQ5K8a43VsKnyobE13xYd1Lkw8ZFRhV9emk1+7rHlp0liPP25Q3Lx5k/0Kmv6Sj7ttyurKtys/Rk8nPtBDoThhHDVp1ORjOTiHx2sj9z7an+z8+PmUk8OYbauyaqUxHQvSmmjeRZ/xwiZpy4YSl0VCvkXoASaQdIDU/ROS//k0+rg1VvEK4vUqiy1sDW3eCb/66qt33yXe0Pfu3dsBUnFHqMg0T9vy7Tszk7/EAQs/+mb2EHf3Ll26MIPi5q83/7juuwtTvF2bv1r6zr7G96a67P248qOT9eHeLo14eLu7YW24xpi7vmDjuc3uHmvKWhJ0eBercqZfRbJh+eAnP8O7MVn7p+x5ats2tA19/MN7k3vRWkx0eNKL3m7uNwz0CBxrLtHixqLU8Fd2k1wXbToS27/x0FuZaHTf15d9QIIWZH7ROy91/360323FF/PRxo01fVBm5j4q+JFl++goRbMG3IargW7D0PZduXDMbex8rXGX5co3bzOpJq/44tXR6Ju3N6LRfZYtyxSV9eroHhKRjaXjEuUaHluC3LrSllxpuTT5nqn/Of6eMeGCBZmZmUxEkksvgQFUvqZySckLSXI0n9TdTExis9l+0Y7BrblgxKv3ur194T9hWl5NBWffrojLIiFjR/f5hjHr33q3BQsmX+xym3b0a6/ZqiBt2MIVb288/h81p1gb1qpylcxoC7Zu3Upv7Nu3b8aMGR0mFeJosaurdnzyNxNSzv/zgRNdunYlGuzm5u7uTobEjZfyBzzwLlFMr7sCPv9W/56Ly8XtA8dkkAy8eg/M/aZ+nYu3cWqiripnYKh7bPLhsgTdMOIKc/n8K3Xbeww60Nw8VF/w3OAjvU9nzTQYXlsz1RPLLVU8Pe1ByqNmpvEGVmE3t6tfb3il/5bS4wFYkFOmbbvw3WR3t32v1n/87dEnDKj58N83nA9/Lm2qK1r4emjP5sOu+6r77Dx6NBkfmNHv46PJASTKjM9/PjoZ1wHhKjEfa3fh7zI0H9707bidR5N7Iirn4mEL3V33JdV/fPTok0hYlnRkunTFxsZFo8wFYbTcTk3b+bo3OsxJ+OSTTzK24Dz/LTSg+N+vDzmzaRldNVT5zwe3459KROqC/yrEJCHi+nYsms9/2+/+17v2uuL6r/P/Hh9Kn5cZSXvoo1PTnvt38TszDofufN14iGxr9j349Domg+c+Pvp4L9JQoX5JSeuMIbj1SEMzsZgQU87kDEqUxW1qqrMNu7/fBsqsylPV4+4PPVyNumB7NtB9iZ8/saHGD61bt+e5j3f23s5ka7SFn63pnHrf1W9f6bXkrt4C2xBTU1OtPw49vF2qXKl6sQHGeoqgzaDqYr7drKK0tPT5558Xu7Z5j4Le/stf/rJjx47bb7+9HaUSI3hm5upKBm34CqcE2JUeETfX/xjdJ5qO4N3n0fO1jY0ulTP7PkaHaP1iztU0IJ2Gzkdfcy7WL8Z9QSpR4mEGrMOhV5D28qw3xvd8Y1b22bWN0wz6QhzThVu2K9kj5XGe3d1qOHPIdfXzQe5dDAbv4eMjDjf92sXdJTw9ItC9C07TxY3RIPKXDN5dw8N03l26NJ/7xvWdxYH4CPLWhYV/g1O5MXHoGgt2aXCqPXsK9+wx7oeHxY51DX8ngspHWJZ0ZKp0TpbnNt/3JP6piv/0+ycGIrZo0z4+/tmFPXebEjYfXD71ZWY5qfB3EnBxAgN+NVUNae8JN5mkGFOyvh0LfEL63f8GrqEuzHXtuV8fGocOZib1+/T77wdSzZzr1sV7XGx8Uu65hIfG9SRnLz52uXcXFPf993F0+oPL1x79dbGb656Xaz+lAumQN4JOL3/alc6HZPTW0T2LUeY3YXu+X96TiaPDcQRlcZuabnztPa5fYLO8f7gYNi0CfWM6cb8eFeT/6VjXPRfv2fP998tJb6CzJVufXTD1IiQ+p7g3XGz69dcmoW0PCWutrf9GslyJenl/RVeLFP8Vv3iBGUhFu70xTkrJzTJy5Mhvv/324Ycf1uv1khFiYmJeeumldpdKEu7DN6K9iB0Jc16boCYMGOVk9FPp8wt3XWjquMNlYwznNsck4Mjh6680rzOUZfT09EzZX96HJKbzoIXYK3iyy1tlzVMm9eKYQn4EDOQ34dYtgzu17Y6YEPz7Q0IQFYL/YtyEG8QKfhzaNM3w8a5rzl6bEMbtGTgmWrL1xJOD2JDmoiNy+ShHNhL41IkTTwlaBSekGpfsaPtMv9h4pY/RtopPpx4Z/9WJFeRKKHpjDd9scUV4IWpiunfcjx2bzx4pzNhVmEHvTR+/ZDg64vpuQiBVZdzMVPUDZ7y7nZz2oWfZY7idJ760i0n17hLcaNPfnRHIabRrprjU+QwkSQoLdxWyqy9OH/+4m7gsU1PT+WiGjnctvPJjbUb/EU+515tOkFT+R6aPH65xd282HcIddvqRxmvugT0F2ZoKulJb2H/EkrOfCWxbMiFMUGvUqLZeSxL6TM948r6M6e9+teLEBOmGZzub2XZrBbiWe/bsycjI+OSTTwThW7ZsGTBAeiLQ+VMJEL0HgbWCWq2Z/74EGbSa3pOg1ZPzvpqLKTfGBkSUeFxY7OZzGjJtvGhg4bSKdeHxZ7PPpV6u74uQgU5KTwe7umpCJqN7/7Hv+MpJvUh55Zv6Rxryj05webCg4txTg1Dj6aKd/We/5Vrn4mIg/Q8LsRuOhlWN2OJGaSOzgbuty/g950/NHYyayg/t6v/4m251zCHGSCpGxqEDf3+Icul2NmvoLPTZgfEzXio9/3TQYISavn59/KXHD9xtSiUoC2egEFkBnA9uXDoabdwLRrPxMdT/Lg11qPnyLpe7X2CLYw3QDONVzSWMiaMYE7Eto6Y7tEdwW/T/7NSpwfTO16+vLm8OEzYI0zFWl593PeQyfglp57NZEw+NP3DqzV50Iqlm5IbQkDP44mdUuxpL//qQuCxufBKCy65anYtefPxpd7cGU86S+Qv6s1K2xpCmhqoZ98zAuQlsI/Br3aS6Xpg3T516k1we994rzpZjhpp2azUvvPDCv/71r6tXr7Ih999//+DBEka1r1Qs3HkJatuNiK4baVBWhTW9A774tmG1izfe1f+yfdDoDI3LwG1H9etctPho/c+5A0PXsxlqeg/MOVLnTlasS0WxfveRh3iaiJTNhQMHkV/0WZ+eXaurq8p9KCj3ja/0i4KMFmimvX8CPX9vH2YFkFd3Vs0fYjC8vH7pqIGkKg+vPZIW5NpYT/84EH+cbm6U4mgH7Hxs/M7E7Yd8qR6A+4Bm0ktr/jZ26FAcJ3LNobeC3JoajIeMJk5KO+SGo7xA7yZuP/MULiNt+ydDqFR0MvS1KZWgrDNPTVKIrADOB62aNXQVW26QG5swKHJNDm01navxWuUY4MatWmQkmVTnXM9yMancXjJrW7ulqfygS58XjfXT3DvBZVVD7wkuj+2uJKcVH93p8hBVfXJo7KwX8AnTkMj4l29Ab2oL//LtdPF9SdyMmmE4BZ0P/sH+ZMgW30MvToh8oaTyGfo3+G9jq+ecmc7G4ZRlhDkdbr1w2S9Uj0pzc2tyM50ycf7bH2JsoIw1ZTtgThr3BBqzpYKavn7/hQFPnNFomkS24dT8Wquv1yHfLWO/fujQWw89c2jNhVUNV92CxJ5o3dyku59E/m891GpHtlyNwxw9elRNp3b+VCx8LXalhdjNOB2BD7lSE8NNrjqNS2MtmRzGsfvGnLtMJoZRw+Vzs/xmct4j1vrFVlx2JyvWJacuaNEgahpbE7HhypX1zJodBq/FjY3PMet3mMBafOnSe7zlmTRTVl64kG7anfzOO8Z3PjST/vEP8u+8c+fmUcnpXebQuXP/QJzdfyABgigUQWxWFJN4GfLLUoqsgESppoTig2IDxJHocKWYZz4aWHyXpsPq8JmCBJeJR0z10wyf6DLm+7uOrD0wZsgQvP/www9TE25u1KGHkcuE4XTkoMi1W+kohIfX4q7u4oLomIgMQPA2bsQvPhrIRFr6xblJeFhhCsGjg7eD8E9o4tpXRWUxMPmQX8Z/nOOEMGWJ8vfaf4CxQTPJlC1dDgecyY7FY3cwezjhPBKPm5spDa/W6uvliRJxE441lq9xo3vSyHPPDOGaYaqLuXYTJ7cE9m2E5557rqSk5NixY3g7Ly/vsccea9epuAiE2BW5GueDyzf2+e7B6meHaqY+M/Du4XdRsZft05PHcuF/Heg1hF44KeVAM2nnsoweR0KvJug0EQsGdXf38BgXu6UygS+1LsYvOOhd7jYNLtcgAzK+dmd2dRAAofJN/aOM4hy1/tv5HVaH0dD5P6bzArwnp1ML3Kb/KDhAH5rM2+NHSU/nHEtn8/+Rv1CjKEScEfdQunSITP6TeTYoZCt9SGwtv9aW1EtUiKtrVF8t92dGWBez+Q9F1rJ58+aePXseOHDgjjvuwLvNzc3h4eGrV6+eNWtWu07FhRVi6u/QBT8PM4rysIWXdMzWotq650wTyTjmsMWNTfEunLS6hKvMF9K6hBayZp1cYQIHFGwW9FcbgphiIQZUMGxBVdUCRxsBdCyGLXh3mKPKjoyMfP7559ldLy+v48ePFxQUYMVQeCHI+VOJB6OCyWLBLtfjBBvOTShA4hNnF/G3zhxnQDSCETGrxQiGwwDQiXnhhRfEgWa/mHD+VAIhlhRZgShzI3Pjc3NgN6Sfl7L6y/0rNos7Fmblm5Vg0GIAADoeAg0VqDB7SCzTgr9czLy4oqDFiC/HSDQWBiEGAKDjISfEgkA1+svCE2LxpATiz05IIqfUCkkAAADaOwqKLJ6OkJwjZreFI2I5LUZSgiseLwvetbBhnQEAAJwBhale5cGywrb5qQnEX7NDcpwrlmwEI2IA6MQcOXJkzJgxHS8Vi4IcK29IYmaFDkEInVd9wSLaVSYm5eumxcOEqayUYP3uxSvQsrXTNPywwLhcevuN/Y2L7fFajlS51uSwDK2g8+EabT+zAcCJSUtL++OPPyZMkHF/0W5TiVEz4BVLoiBE9q0J/NdQv2vRcvTG+ggNJ1l9wcLBu8MrrqzXkJFvWUbPXmsPNMeLtFiIvpASu3AlsSNOMRD31Q+cKHDPtDNN66hUJ9f28lxn1H0l1JSlWK7F2TI5GPPBf2dln6FjklQ8N9CdHXwaHzpnbB0Olp611iAuC4cMifuMHVbQ+0jCTIsLwtka91LU9F570JZta6S0tBQr3cSJEztYKi6kL6dQWymMCJ7M6DmeDll+4Eq8zigqZWu6HyYf0VHbGd3DjF54Y7dUboigzsr/B55rTiOVPIN0AAAAAElFTkSuQmCC\"/></div></div><div style=\"clear:both; line-height:0; width:0; height:0; margin:0; padding:0;\"> </div><p class=\"P24\">The Uninstall progress window will appear to display progress of the uninstallation after the configuration. Uninstallers are grouped in following categories:</p><ul><li><p class=\"P76\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Uninstalling – The uninstaller is running at this very moment. Multiple uninstallers can run at once if they are not colliding with each other. This behavior can be changed in the settings.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P76\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Waiting – The uninstaller is waiting to be executed.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P76\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Completed – The uninstaller appears to have completed successfully.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P76\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Failed – The uninstaller failed to run or complete. If possible a reason for the failure is provided.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P76\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Skipped – The uninstaller has been skipped by the user. If possible uninstallers closed by the “Cancel” button are put in this category.<span class=\"odfLiEnd\"/> </p></li></ul><h3 class=\"Heading_20_3\"><a id=\"a_7_3_1_Manual_controls__dealing_with_stuck_uninstallers\"><span class=\"heading_numbering\">7.3.1 </span></a><a id=\"__RefHeading___Toc562_354986082\"/>Manual controls, <span class=\"T12\">dealing with stuck uninstallers</span></h3><p class=\"P26\">By selecting an uninstaller on the list user can use functions located on the toolbar above.</p><ul><li><p class=\"P78\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Run uninstaller now – Force the uninstaller to run now. <span class=\"T16\">By default,</span> BCU will check if the uninstaller  will collide with already running uninstallers before executing it. This safety check can be disabled in the settings.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P78\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Skip – Do not execute the uninstaller. If the uninstaller is already running BCU will stop waiting for it.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P78\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Terminate – Do not execute the uninstaller. If the uninstaller is already running BCU will terminate it before continuing.<span class=\"odfLiEnd\"/> </p></li></ul><h3 class=\"Heading_20_3\"><a id=\"a_7_3_2_Aborting_the_entire_uninstall_task\"><span class=\"heading_numbering\">7.3.2 </span></a><a id=\"__RefHeading___Toc564_354986082\"/>Aborting the entire uninstall task</h3><p class=\"P28\">At any point it is possible to abort the uninstall task by clicking “Cancel” or attempting to close the window. BCU will ask for confirmation before skipping <span class=\"T16\">all the</span> remaining uninstallers.</p><p class=\"P28\">Already running uninstallers are not closed, BCU will wait for them to complete. If the remaining uninstallers are stuck it might be necessary to manually skip or terminate them.</p><h2 class=\"Heading_20_2\"><a id=\"a_7_4_Leftover___Junk_removal\"><span class=\"heading_numbering\">7.4 </span></a><a id=\"__RefHeading___Toc566_354986082\"/>Leftover / Junk removal</h2><!--Next 'div' was a 'text:p'.--><div class=\"Text_20_body\"><!--Next 'div' is emulating the top height of a draw:frame.--><!--Next '\n            div' is a draw:frame.\n        --><div style=\"height:12.658cm;width:17cm; padding:0;  float:left; position:relative; left:0cm; \" class=\"fr1\" id=\"Image4\"><img style=\"height:12.658cm;width:17cm;\" alt=\"\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAugAAAIqCAIAAAD5GCh4AADk2ElEQVR4nOz9b4hjR7boC4Z490t/uK/Kfa/JkY6dxhZ0YY4ospF8yWKm09bhgc1U9YgUczufkQ9KaJM+/UGeGq4Ek9BjkpoGDSgvU9My+LjoBol24lf9Bol8VfVwwcPZbc/g5FqiE6OLqQbZtOwjkdSlu4r7+T1N/Nk7dvzde0u5lSllrh/dLuVW7IgVK1ZErB0RW+tf/e9uPkAAAAAAAACLwL/C/x/9v/6PZy0GAAAAAABAAPH/6//8r85aBgAAAAAAgLCA4wIAAAAAwMIAjgsAAAAAAAsDOC4AAAAAACwM4LgAAAAAALAwhHVc3nrrrX/5l39RLv7d3/3dRx99FLVIAAAAAAAAZkI5Lsxr+ad33lGu//OHH+KvwHcBAAAAAOB0CHZcuNfys42NWCymfAu+CwAAAAAAp0aA48K9lo1//+/R//a/of/mvxG/JRfBdwEAAACAuUFfYhAZj8enKUmn00mn08r1brebyWSmlsTPcRHXWnD52WxW/Pbf/Jt/8/+5e/f/7Oe7dHdj9eSwsR73FQGnylRQsRWYcAEJpwEAAAAAiA6bT+Dv00QO9lqu/e//D1/8//6/ou+CvRZ8EX81dbZ+jou+Q/R3f/d3P71xA3/Y/5/+p9FolP3v/ruDgwPi1lDfZSoBuruZSq0zLqcRTPMAAAAAcG7A/gr2WkTfhXktiiszKcFnXBQHbeO//+/Zf/kCzIk9uGIycbIMAAAAAACYP0TfBf95cq8FTfo7Lv/yL/8ibhgdHBxMXOCovZnIN8mnWmecPSC7RAglmsVWK5XPs8+IrcB4KdkF8ne/xNZmhNUZKUP8JfkC1VClkuq4aZFy0XRLspPbz5CL+FJh4Hzv7V+FE2a4y+rjZgwAAAAAFxvuu+DPJ/da0Kn/AF13N7GfG44bcfJxs51ojDuIbw+Jn0nKPPYyxmnmNGy28fVSLXbQLbPlpoNKrTSOqxmOGuv4y2YvORyPlQ0nftF8S76Or40b5MBNrNciH+nhm70S82xCCYPi5fG4jJgj0y7AnhcAAMAFYn5OxZ5vJnNcxF+cy1ImW3QZDXqoWUk0nT9r2YZfylqJuWVx7CTkD4YNlM7WMsxZ6B70WoWyLcNiblV3GdyLlltaVepm4CJQMclSks/1wQilUThhkHvQmGU4gV4AAACAhQdcEyP8XAs6k60izN3/4X/A/713//60JSqbKN1J7k0XWvXt9qiK6r1c1fVNpsjwJDLYhRm1NzOIrsvgT9tT5QkAAAAA5wflNK5yVnc6/ByXv/u7v2PvCvEXi/7lX/6Fvz303/63/+1+q4X+1//17v/4P+KLOHFwafHlFMqH2kShKZ2tmFG7TrZi6OXVHNre20OpUiM+WYZTyDCpMMN+s5is4g+jw/0mylXDZg8AAAAA5w/9HSL9PaMp8HNcPvroo7feeot5Khv//t8f/C//i/IDdKLXYvkBumbe3ZShB13T5WFrM5FwtgHJwoeYOJ2tNTPu4Vyakm0Yklud+hFnIU/Om7i3+GZoZOpbgoRJF1qI5lus1YqBeQIAAADATDjl32uxkclk9B+gY77LrH6ADim+C30RWiTIa0k7Z1VF4usNcvDVoyz8Jd2gpfSuhs5QyFi46HdL2vw5lDB6orRJGAAAAACYFfNz1MYmCfZdTiJk8BkX0XdR8PVaAAAAAAAAIibU4Vyb7wJeCwAAAAAAp0nYt4rAQQEAAAAA4Mw55R+gAwAAAAAAmB5wXAAAAAAAWBjAcQEAAAAAYGEAxwUAAAAAgIUBHBcAAAAAABYGcFwAAAAAAFgYwHEBAAAAAGBhII7L06dPz1oMAAAAAACAYGDFBQAAAACAhQEcFwAAAAAAFgZwXAAAAAAAWBjAcQEAAAAAYGEAxwUAAAAAgIUBHBcAAAAAABYGcFwAAAAAAFgYwHEBAAAAAGBhmMpxOb73znvo1oc/XTpx8X/69eUszurgybs/Nl2JriAzhvzxpbvPfcjFmQMiVII9K70hfJgo8anCKngLvTdTswEAAADOjihWXIzTYajp9k+fv6dMf+4VfPs7ZAY6bf509/6NjQ+jzXN6/ZwastpDtlqoxJMQUidTq47fOF/KBwAAACYgCsdl6acfTjfVH3//nzde3DBeYXke34tAvEkEuvfP6J8+jHo6m1o/p4beEFElnohTU9T8twgAAABgIcoVF3TvnSv/eBdf2PjdwY37/3j3LrqLfvdIfK49dlOQfYaffE4/373LF13+9Gt+5dGL//yesOLi3bjBcjz2ypJKYLsYDJJvgsh24+//8R/fc6/8WMyN3O8t6/DlFklOurTw3rd/j957j4sqXsGiyrIp+T9ydy7M+iHfsqy4fKQW//ziI21FgFaOFSIr5Lm7l7NIuhfnatSPSZ//9K2j9o2Njbt6q8kqPUBZU2KlgZBRY+4ih7ChIzVNwnL9x2JzS6Y1VJtb1xf/FreTqHN36UVtaM1aAAAAgHnC6rj8l//yX/SL//bf/lt7Vn+6+49/f/DkCRn9r3z+3KPf4Ydy9fjIeywFnYd+/ZMnj373n6UV+x+/y69Iay34xvs3Hj35kPkE7937d3im9sq6+ydhfvnxu0+evOvchFMeY6/k7j9+i5M+ca98+O/+kysGneSFUpzlFkXOPz3BNbn7n1989OSJ+JjuXCGZyrIJ+dOJMEA/uKYsq1vk+p/e/fGP6V7MPz3RvZZ/JsmWDAq5det3G9K9w7uXzfox6fP7W57abyC11RSVGhNrDXTLpDEdpWluWa5LzS2Z1pLe3FbJ/9PGLUHnjh70hlaKdlRh7A4AAADA7LC5HH4rLr5uik7ixY33spfpisCTnxp2eY7/0330u1t0Cl36dzc27n9/HDJjfONdgvv3xo1bt6SypMTaasrG7zZ+LOfmikFE5te95RaTnBs3/p3iSLArumz/hLz8Jez6cTL/6T/duky8D4R9j588EW+9+49X2HrMkk0hH8r3Jr636cd4+z/d0MUV0lsWqPwz1DWmozSN9bpddf6yBXxrbGizSBP2BQAAAOBE+DwuRvg69NJPPyRP2H/69eXLl8nCfHQ5I8OyvViW+E7SFfHRP3z+JzndIst2fO++OVmwfn78k1vZz//0E/Sff7fxrlbExvd0UcAtSVOIfO9PzfqZVGYUWqXhM5wCm+r8ZZvaGAAAAID5JTrHhTzd4nniw5/S/Z7vh9rEjJ9qkbNvQR7R//6fPkTfh8qZPA7/I9sIoaV8+0/kWIlQ1jH6sedy/P1z7PPw27voRcPygCIGukHSiC8TTSSnLtuTDX77ZPpBzHPJZjd+90hd3XkxgZZ+fOt3jutiKBR/Fu5VypL0Y9anXfvhVBqY4dJzf3/38+GHaMknHxt+qvOXzffbqQ0SAAAAODumdVzY5gVjY2MD3cBPxbd+d//KlcuInc/8MZ4rslfuig/iJMU7Vy7zFOg45DyBH7gPyMM2cu9cQlJZ3qz8443f/TMrgaU15+aJsUG3iv706ywSzpRMJKcmGxaC346EHQqbfqQ5Hnsf2Eux7LE4cr1DTqVqhUr3KmWp2ekyu5svxL1QWs2uUiGxNUOhal4+RO2TLMjZTcu3uTXJucCOzqc2SAAAAODMmMpxcVbuNaTL3rlJ6436W6n8ivvBTfBjJTebCPp1rwgxcznRu0/k5ZHwcppk827/068vf/7c0tKPncQW/QhZmY7lCmXRjC2Fyvea9eNlpdxuu27OypTYlmGYfNTmNjSZzbQseZruIqg692loeGUaAABgLoGf/I8c8SVc/CCvOm/+901yQ0T3AgAAAMDiAI5L5BgWLWZ630nvBQAAAIDFARwXAAAAAAAWBnBcAAAAAABYGMBxAQAAAABgYQDHBQAAAACAhQEcFwAAAAAAFoZIokPf/8WVtz52/3rzo0cf3FhSE+ygHfY/9TvABNNYhLo6xQyPfn35tffQrT88eXdlchmmk1O5a4pMItdP5ETbiYQ+a2ipeeaUB5NwhmG1+UkyOfecaGQ4IQvXBKcs8KLpJ6IVF4O3cmKmnn7m3ENaNBOZkKPP3qNDE67mLyKaYmenrokyP4kkIe89Jds4+vWVB9cfPflgiXkwvz46NddlvvQwVYmGlK7N2xLvTFvW3DJNFTQtLUQrn21jnUSMUxivzo453ipauvHBB1PdchxpgD9gIo6///rNlzaC04VmCjOYESeRZH5qgVgbXd9gYxIW7MkpFj1XehA5iWA+Ng8jEifykWEKpp5TzpxTlnxOam1nNo6LtxBtehBRviULiIgmw58+W3M+fPjSH64/+NBZPrn+8ltvvSdkJ25OiYs9xE/85mX03scfo48Rve6lpOmQk+C9j/HfuIDX3vrYyYAnVBaP1OtKhktIvWIvwslv5y2TeAZFffnry2Kt2UIrg1yJ43vxczOXgX5Gmnge39z9xeX3PhbKClUXTfnW1sS3vPMN/fzxx2+++ebHXjXDy6BXPO6tovmbwY4kllQQ4iaGmG25teVtsWNQuFEbVBLWvkIV+NPJsUVaey0EA8PW4tnGSG1uH7WLVnfro4++fstkyR5Lr1xHV3buy98qpnhsN2PdbHgO868HW71e+dJ7tBXHFtUwHr304VuyYR/92rF519KUTqquuIQbATw5aZkhRxi9EcMPEYJmuDCGMcdL41QBWUZOWZi1zwQtrSh6UJVs6n3iApefVKr1Sor1TNTLwzS6Cq3M1+8NHSTE2GhrxCXR4AXzQ17fIYPYznuSGBPPhpZbDG1Eh1BRb9T4dyabYk6PiByXj9+64tQea2bj+523Xv7Dkycr7jq05GYTe5W+fXfjozd3vj9GK6PP3kPv3Tp6dyVOnwjj6IGb+Tc4/RPWEvePcSO7ObC2kXlpY+ejrxEzAlyWsCS+c/8VnPjjr1969OTJDi77Q8Q+7Hx5fOO5uyxLItNdYeX8SL6OqyZnSIQJWQRr4qUbOx+96YmnqGLFq4da6xsr/Ndx3Svv3Hrrwy93cMbHXz74+NY7H5C+pYgn2NXH7+G5+8kHvKy4qhxzXVQxZENVNPz9zqOPvnb6+XWEtMXGQBn0Enn7+pgBcUYUg5QLwiZ25TNsWSt0vfqdJ+5qA28L/ExsyF+Tzcmctq//E0nYWoiG99lzj7htCAGZlBwMahes7gOsC2SyZBH8PPUI/eLK5beQO/poprhhM2NNLf5j1xzqwVivV3iG2tgiifrlhtd/GSvvcptHQjQsg7Su8sOOAKwiJKNwI4zXI9zcJh0iHMPmwqhjjlg09wDMI6dStbUnopYUPYTpfYKcVqk+0KxXvCKazS9eQ6yVydjxC+LDS3kKreyslhk7iP/Y6NuIH8gzzqOX9FuluYwv2k02GxpvEbx4fQgV2hc30WT2c4rM4IzL8f0P0Uc7K+QjfrR78wH2SQSwAtRvV557+ePPRh8cffb1R3/46MFnR2jtG0RWsr/kmW+smHMIgCibwKW8/s51/J9XiNKR94EQf+nN9167/B6px5MbQhbydVw1NUMUugiTeJoqPCNQao0MCwwrGx8hNmCxjI7vq8Ls3PDMys2QlPXWZ0cbL2mSG+uiiaFUQb/Fh2AZ7CX6mAFuJf+C3n33nVuXieeCsN+y9sRXtuCqsWb1J2QtNAMTBLCvJ/kYttWSFcgWEfG98IC1cx8/WmmmiMxmrBct2thC6MGnexrHFv8uoOC3Cqgn9h8BmHihBzFTbhMOEY5hu71mZUWvjqo0i54NwvgS2PtEOW1SCQOL4YpJNuoFfWDOU8RYnTCGYWvEnR2rwQdkOPlsaJPTOITK7TuZ/Zwic3HGZWXt1off30dfX99497lvPvz+6KWvX34uKmWoC7APzMmccRwP45cvi7fI14lfrGcYsogTIh+o3GHSvXIdm9URnnWu7zjWFu4dkTdfoivukdRl2upbZYgaWtDS2q3XPjtaQ19/tBE+qNMptKxuYAxTc4eSzWbJFnDfw08NO8YHPhuzeA/prPUQDYHSTscJ7PBEQ0SY6sxOz7bcgqRyBhbfK5PmGQFadcwGP2dMbT8zZgaOC91BZ4uGxNF8+Z0P0Pe+35LR8+XXXvv6o0dLeH7Bn97CqrEvVAg5BEviPDgwh/qbd2z2wTfw6LKv9+CjXEcbaoZPtCvhTdCoCj9cd270zcfopR2exWtvvUlUZ6qvtEL+zegD5Hj/uKyleAR1Ca/hkDJMrT3cr3wKQnSGfu211xxNhcs/pGxLbMWQFCc0TTgUAxuJRejNHUI2myUrZXLTOPrsvTdfeuTfZ/2L5ja2aHow1y7k2GLFLq1vcdYRYAI7NOZ2giEiTHVseg5vUba6+MipS6VK/r3hiklR7pm3dwJqGnl1yJEXcWZZm7LvnMRi/YdQMVFI+zlFZrHiQjYvf3Hl8mXEtpCwVr73+5ZAF6qo4eD5Bd1aWwmZPzIt65EB9LUr9BTYjQ/+QDxaxAuzrMiRLB9cueIKtWS7voTUDNFKyCKM4hlUYWNl46MPeaVxeiczbEgIuVsXS1p9RcjKpPiNnnjiuhhKdG8RqimIEShD+PcvREN6U90q0gpilvXmS/ImDxfSMBnYq6YiNA2RZJKHJ8XAVvCg5SjN2NzBshksmZ95N9xMn5/IWq9vn/UvelH0EFYOv7EF2QybYe6kPjmEGAHC26FxaJ1kiHjz6w8vX/5Y+MZaHaEKFj37zwJyJqF6H8ekZEVyXJZ+xZy50wGOlTxV2UJUh6D2NWt1lpAysxwb+46fitycAy3Wiv8Q6iaaYIo5PaJwXPRXp9wNdCWBk0z51r3kfFx5l56Z0u4SC+I5EDt5TuwsLAE/aCUe5KIIOSgfdKHMwioZTlKEnt6gCu0WfwlJDuIWvi6eT0Gh66LXwvvTdouWeSgZDCUGm4GC+bp4LNdQuqmmZtn0FwX1AieohXSvdxRVb245B6veTBa7oghssBJLnzWZscXG5l0PAfUyjy1LK7qoBsO2F2qymQlHgPAjjDG3kEME4frOE7WXWxp0xaeBzDcb3rCdqPfZpSIHRFTJ1SvqbKJmrtdUlc2nOuJncVvKrxEN+RlVrYgxxWxoHcNNpRrmrAns5/SYizMuEyK+uYadvjPXITD3UJMBWwGCgLEFOAkr7572GsQFtdhFdFzmwuMDFgkwGSAUF9hQ5v43x6wYFxIWtC4Tc0EtdhEdFwAAAAAALijguKiIS28O5ODS9ZNG/jtDzkiSs4ypdvqIlQpTwZMr4RTUeC5baiLCa2A6Xc1Ow/45L1zLRiLw/GQCnIw5dlyOZxYx0dfy3KU34Xx4mDf752fYmpf57LRiqs3OTk4gTDT5nHl1GFNM3jM17JmWEl6Mmd4SFUrvmCu7AoBpmWPH5SLEJ5vFXuyc7O+eWky1ubKTuRImKuY2NN2ZmPqc9K+QnEuDBC48kTgu/gGrTEGw9EBZK1o+7l0sytRHL7/1liFOnlkA4feb1QtKCLfwTx6+IQ/10GuMwJiCYSMIKtHQxKhmJm0bwsXt6FU6Dh2tLYwCpVsiiKmmVFNPoNQiwsiadgM2BEvTVCquuLivMxmkcpXgH/0xIBJniMCZwZVybz829FOvUrMPTefb4jg7lvmtW2iayHPWWICedsyhXpEx6qeujThSU3L17YSJGWk3FcnU9TCWpiYTder1Dkl1qtLtQRLdKICTj+ErkxrkBIFUp+6kwcFrvUCDRGNaPE6r6hQDtg0vwMk5ueNyHBSwyhQESw/fRXqGnA8ZMsQoU8Y4eUYByBgnBxtDthBuYQkIeaiHXmN3hYgpaM7fJ3TWkRoP0hzXzRRAy1CvkNHaAhUYeUy154LCW4qlRxtZ0yeK27EWLM3Hipgr8uQJm2dMTf9KYPRHVbHyb2QGB85coNB0/gFNv9zxMn/pa6mUMN1H6zVKW63YQ72a40Rq2sDjlblqYmvaYkb6mkpAGEt1aNVSiKOoojqfso7UKIBTjOFkKJ7IICcIpDplJw0MXrsjDhcPfONx+g9Za5/5mxxwAk7suIQMWBUYvkvPRwnJQSJVmuLkmW78hRoQ65UpI1pxQoQ89LnLL6agMX+/0FlaVDOjJP4xCD0JQ0ZrC1Jg9DHV1CBkanhLW3CvCCJr2g04fIhBFi8dP8Et2aVCdqsWqxMiEqfVwBYpNF1gQFN7/M7g7hMYe3LJGurVKLBxvAoTdU/XWKCpBISx1IbWIBGkWljL0sJeTjWG/2Iyg5wkkOp0nTTMSK4PF8Z4nP5DFjr+PlS4U2AaZnHGJUwQrGmCWq1MEyePYQvhNjWTyx9ZTEElqtnaZzMPD6YVOpOQYIFByMIH9zphZE3/xg0pBk628b30DGyW6gRWLWM0MI/5D00XJqBpRJmbVDTLUK8co8aCTCU8wU2mYyvLt8tPMIZPa5ABRNJJTyiG75BFAs6cfpjPi8KJHZeQAasCw3fp+fxBe8AyxskzCLCjBsQ69gnhNjUhoqlNHVPQJ3SWUpfjNbMkoQJoWdAjigUqcOZByPTwlpaB4OSRNQmWxg0fY4yM7EsrJBQInY98pPKP/ugfhy84cObihKZTmkNv8akCcJozN8ZcnD7Uq2W8MqNpLNBU/MNYGobW0PiUpXf5KcZwPBRPZJC6eH6D2Ik7aUgxjAQOWUf3P3xt8jCfQDhOvuISImAVChO+S8snTh+wpJBmpjh5JgGQGmxsxRbCTTiLNxFaoK+IYwraQ2dpcR8N2lZy8AJohaysHq3NR4GWW04YU00LQqaHtzRnfvLImn6h8iaMMeZo5RfkcJ5VKt/ojwFx+IIDZ/pVal5C0/G0vi2+dOTqZG3iyHMhYk9OHOrVOF6Z03qtaQ9b6GMqHFMYS21o9RVgTW0gW1mKxuJfPphiDMe6nMggNbntUQCj6qTh4mIaZfMfsrAHGmxywJREslUUFLDKFATLFA7MHEtMuGiMk2cQQM99yRbCzRSCTr0eLuThSWIKThA6K3R0LrMAxhhgIaK12RVoF0ste7KYaiHCW0o5zDKyphgkL0AMpUFpVr5SBUV/nDCW5GKGpjPnphTn/bkilxKq++jaUjdWlnxCvYqfA+M7alXzC0kYwlRkEYMb0SCtTXVhyyIrT1OM4ZPUZaJAqifrpNJnn/HT8iFkdzDZ84qpKsDEzPHvuChcrDh5MwqddfoxwABfLpZVnxphug/0BQBYVE7FcYnkJ5suVjCpi1Xbi8sZtvN5Dk13YbrPqTXZ+bEN4DywOCsuAAAAAABceMBxAQAAAABgYQDHBQAAAACAhQEcFwAAAAAAFgZwXAAAAAAAWBjAcQEAAAAAYGEAxwUAAAAAgIUBHBcAAAAAABaGqBwXOTT4ow/84rD73f/mR3+4/uC1t15WgmnSX8I8+wibWMq7z31AQn4RcVUhAQAAAACYMZE4LnQaRx89okG1yB9XfjGh70Jjf7qOyQ03YseccXx/562PX/4D+QFJIawIAAAAAACnRhSOy9Hdtz5+86NHjqMizelCzBDHLWFOzq1b6L33Pnauxt3Vmtcuf/3Rox204y5m8GWcWzg9mihPfFVYBeJrNfq9cr5fO5mQLxFPS5aQXvnSKGQ8oGgs+XvvzcFaEQAAAACcCyJwXI6//9ryxf1f0AByZO2FeAWXEZnpyTcfo7UnT57skNn9w/sbH9z44NFHyPNWnNuPfo3nfjbl47vFPB0/gOT5i5dw9siU5+jXzioQwpdoOux76PfKy0Iff/3SIx5U9mu6hkRSPvhy54ZZSGvRmuQAAAAAAJyYGR7OdbZ/mGuwsnYLoa+/P0bUcWHx5Jeeexlfs95O/KFbayv87vfcPMmqhxv6FX0z+sCYJ739ZR7Pnly5b7pX2c9idyAapg17Ipcvf2xLKWAqWpUcAAAAAICTE4HjQifs9/yn9kjRDv8en+Be5WvqgiDh2M4HI293CQAAAACAsyWKFZeVjY/efI9tkix5U/4HN165/iZyLx999h52Gl6ZwLVZord/dvTuygq9W7hId26W/N/sYe4UvZ0eXiHHVMLeixl98zFCt55bQsdfWteErJJ7RXuSAwAAAABwciLZKloi5z9+ceXKZfYnX9W48cEfbl1+7Qrbbbn1B/bS0QS57nz05hW6s0MP577nFOXliQuyn3ldeffRR1+z25FzdDj0va4zRu6mZZNNrhXmkDiHc/0QivYkBwAAAADgxER1xoW+S/SBdnnl3SdP3tUTCt9qV9WPTqbvvvuucFeYPE0y6ffK35kr5BYt3u2WGFT00a/f8zagAAAAAAA4EfDLuTNA/DU+vtwDAAAAAMCJAcdlBliWnwAAAAAAOCHguAAAAAAAsDCA4wIAAAAAwMIQneMiH+yYzx+5Z7/4b5ANC7+DdiYODWnBnptVgHNJtFo9BeZc4DMRL6pCpfFhmjisM+I0xgSWFfvfvNR78Til0XvesNVuwlpPPPXMt1YjXXHxhiNc6cu/fseko4nUwRNHo8Sjz5SoQafdNq4AuNxfzLLc+ba5uWM6m5y1VDPCKP8pVUoI5bVz/5W50OEkY8IsHm/m0JuZUws/rcEzDBFPTFMVPdlt86S9KJjRVhH5DRY8Nh1HpaClGx+c/LDr8fdfv/nSRgTSzL0AkagLOJfMg20sPffyx5+d3k9t+zBRl4xWdSw3OerZXDAPFqLDW2quxJsrYXyYT+2dgJmdceFjk7dE/CaNqvzWxx+jj+kv68pfMR/HC9986w+PXvrQTcyfS5SIz9T9vP7yW2+9xy8JMkiJ1z6jnz/+mKc6vr/j5Y/58teXpXw08fgF9W/b0reU4J1vHAHefPPNj01KcGt05cH1R/xHiOlnJBeE/9z55mUSkPrWRx99/ZYoEi+XqgspArsIQbLNUbLfE78y6JyVjrP9w/UHr731sRs/272u5ior6rm77JeMtR8wFnLWyqLmYA/2HbLJ1BYMYQayrgSblBpclUTVcNxuqDZ9svieUiZycW/aOpFvtqSZFNvA33qVGk1VqEmxdvgwGjACWDXpPDLa7NynY55kTIgHdCtZU0YdypLQBrKOh8hqGDZtm3Sldx8fnbiDNPtfqIHIOvyeeJARc/4Des1tKVwRdS4g4uwgzZzM4gUPGkoDYe3duvXee8ZBgOtKL0jRqpBxqMFBrx2TacI5yynwiqw9k8ChjHZumN3h3PhLb379/fHx9zvY4p98wKx/58udnY/eRGzcwW0gfnX/FRq+Gf3hyZMVRBt3B/3BTew8l5Bme5kmIA3066MnePD7+K1v8JUnTibH4uwtJV578uijr6VFNvrTvDx/NZ9XvlTFe+4uy49kdxeX/b2aQBnDlAp+v8MFOL6OPCXINXr3xju33vqQxSX48sHHt975gHRQuaAdHsaaBJ8WRFK25o5kgb1vvV/S05UmNcEv7lNfU9M5LZ2Ew/4QsQ87Xx6/4gXX9lIa9HB/54Mnf8Cte5/Ml2rYBT0H5wq5ICsqbhLVv8nWPjMoxN8Mbsi6+nLDM2ChoVVJPrihaHjHx1At+rxxQ22mHadZf335Q5J+yaDbVwKzfUW3jc+ee+RVammaQp+zWZrMe26EUzKqhhgBLJpUOQrdMU82JuwYizNU1tJwOi9hc/raNh7u2AzDqm1DuV732QnUCXMEuSbCDURWqz7xICPmLA6e6lxAbRMZzNIgnm5g+qCh9SCyROH+AKoyCPAFM8P0YdKqtZnstzu1c1tlsjnLCXH8rqo9Q8OFNtq5YHaOy+ibj19e2/nyw48J7sU3r79z3flIeoPyFXqAPtpZYX9iNZLp64GYJb7FTUCCFj34nsQPePOjjRVT+cbEPij56OLt7Lz0Jhl5yaD75AaWTa0a6eO+OfC6+wm5srLxESLD0yvOdySqtZbPm9dp3Ke4JJKK/VuzOy/Jw5vgFwad09KPhQ+uaCwaFUn51mdHGy9ZNHnjxrt/ePnya29hx17UuTEHpwhNUcffG0T1bzL8pO+nLkcbqjnZdOWjNONdNkNFdn3qmXz8FolYgfW25BbtY4S2bAlxxZj96htc6I6vHXLEpbJfHz16KXgEMMqjotbF2jFPOCYYizMSLLN+i2m4MLfgJP2ad58QOlEINxDZrfqkg4w9ZyUTrA9kU6A2qgcPGloP8qkLx68gXfigwUGvnZHgOeuGaUHQdK9RqjlmZo6Lt3ms7hoIvojPV/OAtsBJf1cOD7qXL5M1txDvTk1VQdx38YBxhAfx6zvOaGXLx/mpO0ckVRjbt0e/viI65mFkmhwpzoEmGzYP5IaACpVDSHyb7Mm7vuoyMp2uItGwMRMs9sb3bMlphV+Z4h012TYevXTSQidTLF2OHWk9yNBBwmhSr8tM39vz73QhZTYScriYrl9PrpMJBiKdUxlkVKabUAI1E21dZqqZqS3/TNprembkuNB1vHeeLC0d0wdnEieZOnTfvMOHSOeZWvjqycZ1xJc+6dL0H+QlCtKRnATEuXz5nQ/Q91YRJkpsvF2T/EO20UvX3b5HG5r8ssWYcgghpHv1tbfwE9WSfz5875mJpHgBft++/Bz7TKJgv7RjksfdHdiZQI0ff8NOXEopTQ39PV0I/cNnl3fuy/vtxhyMilqKG0T1b7Kj+x++ZleXFYuu/JT2TvBdodAyIc7c0srOR44XYdBtuGFLsY2RaJmTF6roOVCxThOGGAF0TYoHe9kVpS4+HfOEY4JRdebKTt76YYaLYAHs/TqETkwyhRuIzMxmkNEyIbcQ12qy8dY6aJh70IQN6qfVELnptQssEfm2cigiGbJOiUgdF7akTHEdPxLNmTwYkGtkaXNl6ejlj1+78jF7/JW/QmjFu0KjSa8cfcMSOyZIX1a6QhOwO4597DtEYjIIivnLt6uSo52PHrAQ2HSLfglp8gfkgNwFeV4uVoIiJPseWyBC7jKlTz43ZJF0BRi/Xdn46MMrjprJdxaZ3YDe4XX+5tcfXr78sZpSkX/ne3YiF9d15Q8vX77yC/HgmjkHZGhNGuxbFdW/yfCUa1SInxlouhLabsWutGOrhsNjbyZHGVRzAUZoQbGNldE3bqWmKVTtGojOCp+tqeMmP+OC2CbhSuAIYNCkoJY333wTvaTZuU/HPOGYYFKdobI+/UvP7Tn7eGh54eik/dquE6TuEYQdiAzMbJDRxSZmEFI8U9HBPcg+CFhdNx+thjEPvXb8m0nmLItwJiYx2jkgOsfFGqBHicgs/qkHa7Ymdl7iUkoRX+7SX/TySWzLX0qmiqdV0RJs2pqD6bpRb+SiuHtty8eidS6ApU18gylplbKpUflAzklc33nygUnhcp7GgNoOthxCBvsOaLLAIOYGM9BuMTV6oKkYDUz+U/9gz0QIiB5khNoHU+bekdzpCjV1jRVVHoPqJ25Bo4TaFXsU+JONCdZuJW9r2lrf2O728XACw/Av15S56TbigD23tLQid7pQA5GuyWgGGaQpX9RGwIBgFC/Y5HQZ9KIUIzEUpGjVXteA21Umm7MM2doE9jOeuQN+8h8AAOAkrLw70cPtfCG+Bosf082+DTAhoNXZAo4LEBEn/2mj8/LjSACwONhXYoDpAa3OFnBcAAAAAABYGGbguBzPWagLuzzRhDw82/qeVekzLfeEmc+bBTIikuoChZo7jiaaz8JHNp23lg3TLtPJrN/lk0/4IibKNnwmUd01b+27CJzpiouxwU7NpHziTi2ctZ2CMBHNIsDJOG/B0maPFkZRZ6768nSczoOEOwgAEXAOrO7sOFPHxXimYYqDDtOdjTjzmIuLxdzGhLtQnLtgaTMHunmEwCAAzAfROS76DwZ7VywR1OKmoGVuELgJ4ikem/LRHVlJHkvIQ5bOHAlSLHO6YFeyl20TW7lXCKloeXD85u5OdKHaSBMhN+oW+3UK58cAH3woxIQz1tpiDGY1+l1Rf0/iBGHJhB/sWhI+W+NWStHYPnxJDl0ZaaUWI9TcdKH7Au2cd3MhgT2+I7U0ZG4XxYxlaQWNMX0apA3T35mQllrbu5ihQQNN0fwA/s3dX1yWg4+K2pODNfJWUzSGda5Zl9IEYgMaYnC6a65GpIZ4xW01cw+1CLCj5YW0XuNn8D7Zygo05KYrX5mt/Gtkm+Pk3N40zTI7IXL2sbELSVSOS4iQV3qAK+eHceWgZc7v6kwUTxEZ8lHn+DAhDxlCICtdDCfX6YJdGQkKEbcjxvoyEmmotpWNj96kP8c5+uw99N6to3dX4viZ9fpGHD0QCzLFI/RmeDXAmK7GuM8VOa4YFWr6sGQodLg4riX245Nki+GdJ8JIHnGljhcl1NxUoft0jN08qJVdXsFWaW4XrddLmQgaM4xITNow/Z1iq/WOrYt5NunmFsIUjTr8+D3SXmr4Uo44ArjKVDWGpz7NukI1lhCD02+tRWtfew8NEkC3ap+vTDNFWAX6xCjVuieerYLHeescJ8QoZUw4g+xYQ7FeTM8lIsclVMgrWwxFU7y3ieIpOvgGPwsT8tC3XjwIosFQThLsKjBEnBdSMQQRhGpzflP96LOvP/rDRw8+O0Jr36DrG0voy4BaizIoAcZ8QyQagibqccX0x6xJwpJNErcSTy2XyXiP8Gi/9mR2lVqgUHMG5QeF7jNgD+voCWZ/zl6ytItuxtaFtxDS+vd3W61tXWy6EKpGHbotKIUv9UfR2PGXH04QYDJEYwXeYre6AAF8+rLR4MNka1Rg2NiT7mwVOM4b5zglRqmvePacbcP4BWWmZ1ymihkWEP/Ch8DgZ6cZ0zH8SwxBIeImlvOEodrQytqtD7+/j76+vvHuc998+P3RS1+7QSzOihMHAJskXByu/mufHa2hrz/aWNAfYog21FxUofsCu3lAK1vaRTHjtc+iDTRo5gQ9NNAUAwkdfFTW2ERRmaYYk6MaxmePf/zXyQhjCXqM0qhyvrhE5LiECXlli6HI93rFeG9ThENT8lHWRiaOEGaqlxMEMcRd1pBmk4eIm2gIiCRU28ray6+99jWJrLZEPr2Fu9AkDr4eYMw3RKL5ihpX7IRhySYJF0fG+9dec5LOrFKLFGpuitB9gXa+pibwKcinXVQzXptGWps+jf09fBebLoSqcXZTgo8uIZP2NCSN6eZqz8Q4JvsTeIuhv1gE8OnLRoMPk23Y+K/G2JOmiL/m201znBKjNFiV085WF4moVlzChLzSIqjFqRepxAyLf/lAzTBc2C3/iIPhQh6uaFeMQRClNJMFu5oiRJy4TmuMXYciDdWGnEVYOvzjoQ/dWvOKC44uhqS2Q2y53hQi0e+KHFfshGHJ2NcThIsjlX7zJWV3LvJKLUqouelC9wXb+bGSILiVTe3ik214acP0d798bDspBgtBwaaITN3cjU/pJtHUq8f+VDRmEEbNRBLcFIPTp9ebh/EAbVgE8OnLJoMPla2sQHP8Vzn2pHG2UoQJOcd5YgohZSebQfxOF5knhXPNTIMsBoazMoZ3skSZ8omn6B97bKKQh7qc0Qa7MuYXECJOrKwpdh39NsJQbUxGtUCtoFDhLXmAMb3aYa7Yv5kkLBn/Nly4OPX456wqtRih5vyVfwI7DxM9UQ4IZ26XwDiaIaQN0d+XbtjzsXcxY24BpkgRtzNMmfiE/ROQNabd42Ob8ldLxpiCvlEVTVYXQoDgvhyiixmy1W8JGqgj6kdKpEZzyhA5221MnxQuAPCT/0DkLHKAMfelRX0OWOBKnQOs7XIuiSJq48XSGHCxAMcFiJxFDjBmlX2RK3UOAPVPCmgMOL+A4wIAAAAAwMIAjgsAAAAAAAsDOC4AAAAAACwM4LgAAAAAALAwgOMCAAAAAMDCMLHj8usPGjMQAwAAAACAi8i7v9icKP00Ky7/9//b/2WKuwAAAAAAAET+H//P//ekt8BWEQAAF53hcJhIJM5aigXjAirtv/7X//of/+N//A//4T/863/9r89altNjooZ++vTpRJlfunRpconAcQEAAACAILDX8s4777z22mvYccHuy4XyXeYNcFwAAAAAwA/mtbz55ps//elPwXc5c8BxAQAAAAAroteC//zRj35ULpfBdzlDwHEBAAAAAD+2trZee+01/ifzXUajETguZwI4LgAAAABgBXsnotfCwL7LWcgCEKJzXEbtzW1UbazHI8txnooDAODigYeZRL7JPtc643I61F3d3VimYkp/IUYtXPuDrFd15c/oYMqsou3wKiXNuZ8buqkvRHPMBTdv3rx9+3aEGUa94jJrUwBTAwDgVHCmuXGDjjZ4Ao7thvJdugcV6rTg+zdhsLIQciSPfsBv5rc91wU4BbDXgqL2XWCrCAAAwMDhPmpV+QyXLo/HoW4bDXrFZAF/iK83GrOSbeE5K+UUW61Ufq87iyUgwADzWvjnqHyXaB2X/t52pdlETdQiLq23zFokfyPsO/dTqFJp4r87uf1Mvsm+cEeGkZeAr8uyRVdGrTNM1vNO/lVy5XA3lq8gNMkqLgAAQBj2Ua6qP5h7w5q7rLKNcqm8OxB1EBnYULNJhyu2WiBuOBVbVSkTPjaKmbDRzBv8nCvKXQu0aKBqaVxOeBs9SsV5Lek0kecTylCaC3AOWhHm6UadHFYLrf3t9kjQX1fN2T5VLW4TnAXca8H+SrTrLtE6LslCtdVDbGVv1N52l1mJ1bZXcX9t9pLD8biK276O2Iftw9G60PosQYOaxy7xisljTpl+RTI5xPkXkTMWoGa+3xmTpyCa/wisCACA2YKHtXwKDztpd4wqIHkgGlSHrZ7rryi3kBmyzq7oY6Mymq0ebmYQu4vcttnGz2rKXYs14ikVrFquN5b3mLaIfg+Wh+6Aj1BcmguEHNgl23TT0CSJr5dSMbLo4ro+aT1n81S1erjQTXBGME+F+y6RMLOtotHhfpPg/l3MlXL4P6ukyZH3QYFdx6a1mivmD7rYcdEfVrzErQKssgAAcGqM6PYRHXbIGLU/IGOY/0Ak3IISySKyjY1yJuJdZGKlD3PKXdX1RZo2bVpSr2MdVTKxClnQGK8jx/mj+MwFPtONiXS5c7ApuD56zsapSi9lsZrgLBDXVyL0XWZ6xkVeoxu19ye6u5hM4EeNhOjhRi0gAACAhRzalxeEI2S6sXEhtsSx59HDDl3aeXPHPfETlvh6gyyTkLPQMbLd5l4PnAsmUmm6kKtv76UQSobI2V4K4Iu+KzSfZ1wEvDUT5s/2S54J2mn2hw0UZ65tqtQgl1LLrAMM+02UrPrdDAAAEBmrOZTYbrsnGchBCNQZ4mvsaKc7Rg0CcomvSreQczMhxkbhLrbDlBxW1bvmdAaNL6eaB2wcR3TcTmWDtcThbyyXyZbbQNKMfS6YfLqh+0WZirNyE26W0UuZ0yY4/0TtuBCjzSToeaj1Roc4zeQqWfZLo3bQzThhrx6LNfkdCBVa9QTLg1708g/jBgEAAEwLfvYfos1ELM/+dJ61q61NNiSxMWoUOCXH171bikUn48CxUUxDiibek3rXnJIuDwebbBwPryUXoq39RIIrGLsSzoSizgXKbRNPN+lCq1jZZx98cvYvBTgbonNc3Nfb+Dkn8cwTxX3/La598MhVx9I1Z91QgOfppYPXDgEAmAH6+KNeEgcf97NhoFNzsYyNUoZKGuOV+USrsF1LhopLN3tHcpGmRTkHu0qNYjAp1/1yNk1Vi9IE5xz4HRcAAAAAABaGeXJcYOEEAAAAAABf5slxAQAAAAAA8AUcFwAAAAAAFgZwXAAAAAAAWBjAcQEAAAAAYGGYtePytF36FP1yfR19tfkrVK1fdX6F8virzeuHTYSKO6upnX7ywfr6kncRU/vNVnkF/zvYzXSTv0nuv80SbzRuXBJvR+hKp/Oq8DI9Tv9JjydDYXLgZTFp7+a/4BfpvUQ2km2l+EYHfXLwE0EwLvbvLzdKy936nYzz0wVvjEuXcFb9n7s5H/0x9ttnhrj6fpK7GSKxXOfiVJmT21ERVZo/lMtiRXybDXUx8CsAWHgSiURwIkAGlHZB+Lv/0332YdzZOltJODN2XI7/so+SVTIZv5BDnx4eX3Um5uuHqd9sjVfQ6H4b2z79xR/vIvUq2m1nFn+c/21y2NlqkIuftl+h0/n1fu7BVmOJzNmb958KbspyubOBJ/XYjuiOuDngCf7to9INOqMbyiJey/7rG+P6JbkO+PoniCU+upL5fFBeWUZH3/auod6XT9dvXBp92Ucv/gNOly5tjUuIuR3tn62v//xKjCVGqPv5o9rPt+LIR3KP0f1u5VpyuCRdnCpzUvfeixvjjqEUnW6d+HzGnygwfnXvs7+EyRYAAACYW3669oLPt7HMHfHznPgus3VcyKT++j/QVZZLq6+jxO8H49IyOn7Su7ZaXSFX4zfStZ0u+YQvoislehEtXS0VDw9G+AP+49nWL+k6Db+IcMrHleuuNosvNpA4MV9ar2+NiTtyZ9fxXdwcVl6soe7gGKWRqSz0l/0vrpRUrwXt/+ouen2jwRLHnyn++ckILQ8//2vu58n93/5ldOOFw4co90t6F3GMHtF0z7ZYcW9/2y0tYz/p4M+rhRKro4/kj/POV1c6natqgJRpMieJc6+E8Vocp83kSFm/8jd3AAAAYKHhXgv2V9jnOfFdZuq4DPZ2HjfR3eYOv8Lm2ul4OvgzQj9hn69oex8yS1erO/0EWZOYsjCXx3jub3771PEwlti60eX+n5OFEp62j4bHyFlSwq7S26jT2Uqz3THCcmGnu33/aRV1e4735i/5sy1nkUljysxD/sw2286jSzUTfAUAAACcf5inwn2XeWCWjsvRt5Vrq0N+roU+ux8cvZpeuZz64pO9o6vlFbotwraKli6n0CH9lszT9eaVUond9Xif7siQXSeyIoKvkJT1+yuG5YGjr9pxthv19PDh4+LrOMFTg2Dmsl7IXdOzfTb3y/XS7+9s3mdLDmTdaPtXXbqMhD//de/3CL2+Qio4+lvz2jMkOheRE+XozfFXkuhXR3voh85CzpJdcn/8MnfXe6bO/Ogo/6P0WHJN3LM1I/0rAAAA4EKgLK7Mw1oLY4aOS/fzR8XXN4QtDzzTP5unJzPKv7kSe/tOhR7OraE+/Xa5/GB18/odGr+KrD24KwfPpr79NJZ5jOiB2bSXkhxkIZDDqstO2pXL/cwdJ1gWvn7D4riYy7q0Xn+jn3GyFY7IoHRpI1e6G3tInTDsLuz0ma+AP/fw5wfUUVhZaaG7icwhunalds0th6zQHOZ/9MZYKtckuT/mzK+WfnQng95wHQs981B5j77/K2o+ciKiOeeXfb6a0CsCAAAAgEiZoeOSLm015CvxG+vOFL7y6rjzqnP1xlXnw9LVRueqfMtyuUOm9rIyBxtS8vRbZfXKsuGzOQfldp6enpsRbkT6ZzGNh3bRT3LdiTEJIFP7iXCXlrkpT7U40ig3lG8vOd8avgIAAACAswR+x2VhOf6q/ufVarhlFQAAAAA4H4Djsoiw35shm1zqy0cAAAAAcK4Bx2URse4cAQAAAMD5BhwXAAAAAAAWBnBcAAAAAABYGMBxAQAAAABgYQDHBQAAAACAhQEcFwAAAAAAFoYIHJdMJhMmWafTOXlZAAAAAABcZKJZcQl0SkI6NwAAAAAAAD7Mx1bRqL25jaoN9+fU+J/SdfxHIo9awyraTuSbwt017DZhx6gzLvPIyN3dmHzBXJCXuEI/FVtD7ztaXtMtQsm856U05qmXi/PycnHrwu9S8jSWHqglcs9+ThdMzItrrD4oKDILyTxJjcqRM8RflPoJJ5VXRqvVy/dLTj70jpSbq9w8uj5Vad3qB9SCpAhVYkh43aXmJ5frSUdcPYmnMHbJ1ig+5VrTdHc35VYLtKtIYVUTlKHIE4X+w+jHX8ZNzbCnyESRVqrZKXJSbZwF2lDmYKvLFHVURqrEVFo6Td3KY9f0MgeAVX+Q1UfumtrxfL5aFGbruHz33XdbW1s3b948eVbdXXcYHLVlB4MybG0mdrt8lKQ9J1SDOGPUmCQm5rWJaNbOdDNuxJ1EsV0+Bh9UarXa/uFofSKrKxaLvcEIpWko6cN9bMVFQQo5T3PpiTDFNPPbOcO8pWlslKvvddel6ZgXSYqnyrQox5TheFxGSs8ZtYv7To1xhZFX/9Ggh2olt2iDPsXMyfjSHrE/A2oRX82FKjEc2IoqrF/jWm223ZJH7boT0Nw1tDH+AichGsPDkaswV4kJe6NMTLqgtprFrmYyKJOGIvrAmW+yzBV5gvSf4DfODpOKpsikVdx2lYpYZVrVhRzgT50ph8dJSlBHqmFyNgVFCh+72IBWjTZ37hnVOu7f6kCU9pLavlogZui4MK8lmUyura2dMCuia39XJL5edVyXBEtbDtVr8Cwk5Btfb3T6sT2SCR2peM9Ll8f8h2rxGFzLNrJoc9Kumcul3O487KNardjzxJDzHJlLH4UopNhqpfJ7IWwxvl5Cm65DwEQo5gpx57sGKdCmnLBmHl9ONeuHVVIjXOFcKbdfZ/Ub9pu4uua6G3M5GDaQUdVKLcKVGA48AOOxhtYVNwCXtr29n+JN532RSLJJmmmOyuLM4okJGiUQtdUIJrvCjdWwZjIlxEKSBV95AvQfT0cvlYZJRZNnsppD29wgSX/MVRdp1ePsmHp4nKQEZaTCj7ILBBvQqtE6W0QR4wZ5bvT+dr8SHicCvlogZuW4cK8Fe98/+MEPTpSXs9gS0A2Y67K5WWwGp3UhT6ipUkO4giegykG3kLSOVPiWFJ4CEwNUn7RrrmZTbDDsHvRy2dw+d1yUPNGJxsnVQmt/O8zALT+bkqE6sd0WN6ssyimnw86/6WyN+RzYCUhlx7iEvSEuSZoBA/Vpmi+ttQgs0VuzpYsH3p4AXytyNoJWBz2UyqridPfyqdIwWd9WhdR0JV8yNIoiiXSF+DpV6Qp/XjOsKBjsyltxkVeFyQJ1P4UqlWatg6shC8BLcwqTJMwe0M/NZrFYbDabqOlsSE2ifyZVFW1vo1wqn6+YyjbUPailDmWxI1l0ET0X7rcozYG4Mr02FLcR5VZ25fNrd7slLAp6dw5sWfKhv7cZqzSRSQPaKqs+UlEOd2MWi7Ls4noL2PS6s+FttrHlvRjfCnf6Ed//5XvByC6zpCJpQPNkcrqZt0mp2rdqdSG3eQxjU4iv5p1oHJeHDx/evn37zp07zz//PJrOa2nmE+L5Bd5d3evShCkl5u1HXJf9RL8znmTEKialHRjsDqO+T3KnY+LZQnwkC0kiSbvzMp5fCgW0b8tz1Z6DTUtSFdZLKbZsZLvR0Zj8bIod8SHaTMTyyO0hvsrxMvTpP846RII8hZVRHKXoX6JfZtanJm08bC38Sxy1t4kLPE7zRVJ3T2B4UEGVGraxhPc8V0QHm7GMMJx2d8mgkkbyAx4/Z5KWLm6TsyZpd51MbRRdkgS/QkcslkZYEt9ur9I6GlYULHYlrQqz/a5ODjV7ySF+OCPFygKgPVY++RtLWhhIEmbHw1bPOTKVw9nxHZ9J9O/SzONeOh7zfcDVQ0PdQ7ZUVxZbN4np8DwX12/RmgP3PabMKi6ajU9kn6Q05sV6tWBOm3+72y1hYdC6MzJZtVxfPIc3K8RKG6IGDJbvYhqp7Bbl5an3BYRc92BMG21kGw3iZbYV7u1cl2p5trZIJv9aqUEcUh+ZxbGLyBx3B5G0nHOh2ipKtoTUbLnVNcK1CB+IJvlq/onGcVlbW7t37x52VrDvgv+cZq1FPdYgfzHE1tX2ztz5eLTKXBtIsy9tQ5DNeJS1piZWWmk2HRe5mKtO5LnE6RNot48fRstoYM3Tx3GxakkiXe4cbMrbqGaNqWcU6Hoj7cv4iabqqxzfhwq5wiM8lyaJMGyCXe43U+62jUWfXuYjPieEq4VvicJRBb5Iyjaiuge9Vqe1f9BF2T6ifsvIGx/cAXZQ77WqZW3LjmoNz12xXfFc6r56qEVqFF2S0cA7RoFnf0c3BDcDrh1tRcFsV8rRDLqtNWrvF3OrcaMqVpPFSiZGnjwb43WyT6gmsBFe/7wqrYLk5R0a6h66pSSxDSJNieu5rHK/RW2OUg4xZSI8jcWIlSI812S96Kf60RjfdrdawsJgGMpCtKxnD+RKni54my2fo41UdosyaJX3BeZM4GcOdxfFZmP6ulG60OLmQfLVzUORWRm7eF9Qco7LtjQ6rFutLkR7mAaiwK8WgmgcF+ygYDelUqlglwX/Gc0OEYM1UhybiWF58KToe3zOZnzCvJ5CHigcp505DvShYqLyett1VCvh6c+dYPQ8UXWK1RwZMnBv76VwUwQIZHw2dRb8C2blTCIHHgkqB3s1p/fTWe2QPYxTgvXJ+7HfFCTWIqBEDVzX+qCNerlCeblfH3STvdRynEnujg/MSrqyH9GU393xLMk+IoRtFAHzapbWaia7mhhnMiBHwWNkI2mSO6fXf3hsLSWJ7aorgkUX5rl0kbtah9TmwHOVIFvmoJtFvVbh5BVdWPTuPMxNnInz5BluH4SNVNOfF8GlFAbCAVWLjcnHgdnjYqB5hMKQs2xLAx+r8+ccey0owjMu3HfBnyPzWjzYNhB1XaLNtpSKJXa9jVV6rhfRpU7BUXI22AsD50GS3Ru8s6OXh+/J98WnT/JsoOZJPBe99HBvFYkVIxu3QRvkzrMp6b78fU9yLjU5RPG0RTkTQHoheTmH3UZmtUweP3uwL0111/TJ+nHAwRrhCdunRLo7zrYTvN3ddDaVIRWLozj5lMfDhFNuKiOldR7yhAMkwkuybn6+57G8RtElIb6ycIWMhuzxk9ZcfR3Xra9rErpdKfV1lsQ7Of0rRwA+mJXJntAAFTRd+bhE4fRvQxGG1T1kSylie372yRddqEHW3V0uvTlE347WOlMkwhnrZa6p3u5GS5i6BqeLoTsPlnMoE9SyA76y62nAavnyBWek0vDVs9cXiJMUT1eFN1JtowFiTjJ9eHMqScugtm02j7BOjJazZEu+VueDz0AU7szonBPl4VzsrLz//vsRZijBXBc8j+KWk496hNq14Ij3El+2PO6QhzUlJ3EfFfHzgRmUE0Ymp3co8vi73cKRbkp3L2/IE7vgWunaFkUA5JXOCnfO7Rojz6axXVyipwZSINuUMCtnEsgCsbd9h/sk/stZ6DTXXXu50T0SnAiuBR19fEpkB7hpfYr8fSm6hE0HD5K2luXOQblz4NS9Zj43RV60ctXD8uvuEsc9E3MXy/FFyQ/jjWKQRLhSLJqzF4um9eW6Uu1KF5A2aoI/rukCpGn/ci/E40hJMHIdF7KgnknIZwPD6d9G3FD3kC3lDAtcbE1F5LwjP2ipfAiAuoP77ukcvTnEs07Gegq1QGyLwb/dbZawEBi788HyEDePb8sSu6o4XYZrwM/ytZHK8FaRSc+2vuCk3aTDiXE0wN22zpsRZ8griNPmVm3mEQZjzqIt+VudFezRIWUgIuctiNkjw1eL58PMxw/QKW9v8j/l63Qtm3xo2E4mBb4FGl833Oudj/JPK7wV66XwlcdHMPeKLU+kSxqoJV1d6+aayOB6pZkoBjUYlWPVs5uVSQo3QcP0macl/8qZ+2jEWLRPiUZVCHO+Ir7dMBqWJKY7QjeKQTaLBIKsNrtyrys5CMJoxakXlL+9ahulCqF/VTbZdIO1YW4pu3U7idJOUn6PbqUWlKr4KFM9lqvVgjhLbA8yRE0DOux8Enp41O3KUFkfy9e+i6+Hsih78/GZZTIbCzAPi4TKFUPOii35WJ2CJ7FJlLjfOL9oROO4zOUv+osvmjFO52cCz6pcAADOAvd1Wm06EIcC0/cAoGC1JUAiAsdlXqMn+vns57FcAADOAmuPh6EAmBAwmXDMx1YRAAAAAABACMBxAQAAAABgYQDHBQAAAACAhQEcFwAAAAAAFgZwXAAAAAAAWBjAcQEAAAAAYGEAxwUAAAAAgIUBHBcAAAAAABYGcFwAAAAAAFgYwHEBAAAAAGBhOA3HpVu/k0FvjEvL7oXBbuaTSlG8Qhjdbyd2UOvB+voSTeBeL+5sNG5cMmX8tF26m/+Cfry2OqxfnTzGJS6omyQlTnxnpGKExCbtqQkAAAAAAGfM7B2X46/qf75SQ9328bIw4z5b/LNyZbC38xhf5wlazgyNZ+u7sW9VLwdnu3n9MPWbrXHd+bN9hNZX9OIjcU3s+YQVY8Jsw3MiAaJSDgAAAACcEjN3XEZf9tHr/1BAn25/+XRdWDhJ/Qjti1eOvq0Ur9Saf9UyWC4/WO1d/7ZbWhYCLD9t/4rM1uUV98LS1bOYfc9cjDMXAAAAADjnxDJ3xp2ts5bCY9aOy9PDhyj3y0txlES/+svohreLkfxZGl0/6t54lbojT9u//Wvrl+m+wXHBk/ELuWuHB0evplfcK8d/2f/iSqluSEu2pZr0E9mKQs6W0/U79M9l+Vu+hEO2Wvo/d6f/oz/GfvvMsP7Cobv/UvvNG+htKZ9AMdhCCCuq5jgWdHlj54f5nUfI2f96KouHpe2iIqo0f9jpvJo25KCXEkaAKyS34NKXjbd48pgKAQAAAM432GtBc+a7zNhxwTMrSlbJGsALOfTp4bG4HrCcLX7iuCNusn74nK89kzBdTpe2sAfAvIT2z9bLnTeQsBsif8s3qi6t//xK7PNBeYV4JN3PH9V+vhU/+mP+R2+M666PIucTJMZgl23frDAHot12bnyc/zY97rxKfKO3j0o3XpXFG+AEvRc3xp1L9hxC6gHf3s892GosET9s8/7Txo3g0o23uPJ43PvsLyY5AAAAgMXjp2sv+HzLvBb+eU58l9k6LmyfiK6yXFp9HSV+PxCPqqR/tlr/1Vej+tXh7w9T2FcgM7eNZ5PKidMv/jZEyHAKlczKj9gtrfDfrrxYe5vtRg0O/rxawM7N8TPF5iebL9rOBfuKcfykh66UVujnpaul4uHBCH+ghf5s2SkOdQfHKK36Is/mXrnkm0N4AR5XrrsGV3yxgYJKt9ziyCPgb+UAAADA+YB7Ldhfmat1l5k6LuS8bRPdbe7wK/JRlSW6DHOE9v+8Wi3ZsyEbIj8sibOsvnnkpPxq823U6Wylye7Pp1o+Pt8uF3a62/efVlG3xzytpauNztXR/XYs89i6U2MT49TwE+CKvL/j4xSe5BYAAADgPMM8Fe67zAOzdFyOvq1Ib+eSoyTyLHtp/ec/jL19WNzZsL/B62yayGcs6ObO23cQdymOv2qPrq6jvzWvPVNFzNdBOSWnkd+38VeS6FdHe4icyPEu3lgfovb290/RCjJhEWPlcgq5/sTxV/XmlZKPW2ZkKWQOfgLU768ELBdpJU52CwAAAHB+URZX5mGthTFDx6X7+aPi66JHcmn19Wfz5CiJkGhlpXUNLRsmy8d5Z9vi2daDLcPxjpVXxw+e2bx+J8b+JB4SudpCdxOZQ3TtSu0a+4KcpMk450/1bwWWrpZ+RH9vhpXlbSpd6ZBDHpeEfIQXs81ikDeh3IvkvW77yVZRPOl62Bz8BLgb26EX1cyNpYe8BQAAAADOkhk6LunSVkO+Er+xPqYfyh0+919ar7/qfl52r+MPW+XAAuhujlwEzm1rrInB52Dt22VBEkLtJ+6f2CHovCp+JeYTJIbxoliW91nMVhImIIeJBQgs3fcWAAAAAJgL4Cf/XcgP5fketQEAAAAA4KwBxwW5P5lPdmTgx/IBAAAAYJ4BxwUZN5gAAAAAAJhDwHEBAAAAAGBhAMcFAAAAAICFARwXAAAAAAAWBnBcAAAAAABYGMBxAQAAAABgYYjAcclkMmGSdTqdk5cFAAAAAMBFJpoVl0CnJKRzAwAAAAAA4MO8bBWN2puJfJN9rnXGZS82T3d3c1BoCD8NJyZVE5+KfFMWaqmIlxf9G7WGjZn8Dl53N5apiJIr8pDS+yXnWypKyk1LbkVhqoxv20bV6eXXVIQkzZ+orSPW9nyYpb9I7uVYpufV00cPIapg76chOIF5nKjc6WAdhlGcyk5O2h0WE7C3CUU6A9tefGbruHz33XdbW1s3b970T0Zabj83HDdoc2LDj+167Zcu5Op73XWpOfk4QuygPTqdocEbvHCpsd2SycL8uoqxIsVibzBCaVqXw31svcUZjXfdgwrtFDjzTZa5Ik98NVfcd2TBoiBPstGgh2qlBL9xdugq6u5yyyBWstsdJuuByrEp0KjtyEQ9I7P0F4k1fK22fzha5+L46MHXyH37qZDoJNZrG9kDyw2XVVgcX33MnfzYZntGTxTnDLC3iSQ5A9s+F8zQcWFeSzKZXFtb801IpslWlbdBujyWfsY2vl5Cm5ZpIL6cah4MG+h02y++Xm1NMTOZKpLLpdw+PuyjWq3YI+kajYglJs5HMVnwlYfosn5YJbJgUXKl3H6dSTbsN2vZRjwdvVQaqoqI2LmCI996Y0x67AmyN2k7KlGl787ELI0iYQ3ixsuiTXEmCaMH3cgD+unMOP1yR+06WTPwpg9cZmPGZZ4TwN7mtqxzxawcF+61YO/7Bz/4gV9S0na5qmGMx+7nQZZ4n+ZHSXovnY+J+9lPoUqlWevgJ3Jn3c1ddRNX4rCDX0XbbuJarVJxF4NJ6gTPByfs5PYz+aZlkdidmYbCcjItO99soiZdCJW/YqIYKrKaTW3TPt096OWyuf2e6E17q9WyeIZq8lo6Anu1xgmyB/Rzs4mffZpcQnXRJZ2tsekWPzSlsuPVHNob4qo6Pg+TimgP5VL5fMVUNi2+KumcJvH2mnib4g/15LCxeiiLrYgUx0IkttvCuvO2XcNC82Gapm0gg7YlaakUiNRUqmNCeL7xWufszVJtdF0k3LlS2QZKDFBdnEnMelBQ3C9LP+2G7wIJ8uFwN5Z39x2ZEeCqu7XAtcsL9ulXrmpjI6XVJEkm8yCtI5JWaMAVtztcHMDekNSXDR1fUVdAWcYRSbZtQ2K39PO77xSN4/Lw4cPbt2/fuXPn+eefRxN5LX5g99PdxlAeJZv5hDfkN+KojZq95HA8bpA2TNEVXraxQEb97Ty7wqYcejtLjD+Vy2V6ha3tV92vqvjmOmIftsUOyEkk6ernOvaQvRwOC9VWETkzXFz6yhHe8EycSNI+vox7dKGA9r0i8G18tZouVXdy9mqiPVZL8vded1wYuLWmCbLjYavHpttRDiFvjVGWx6lUgjw0lfH4kaJ/qX2rme/jnMe8XquHXMNkYEDMvZDFK7SK22SxeHhQQZVat5xOsKWUriw26WaySPH1xhBtJvDY43RLHw2LzWdbRzVoG0sr7EZtt1erWh0tk89Zm+VykPbceQTPHDkkGbLV6gxGnvad9tPhuwBV4yq2hcQBNoE03VUojYd7MV6Lg+Whd7svmo0VlFaTJJkePk+SJvVMXW9HQ8s63eECAfZGx1h7xy8EFOOW5T8iibU2JuYjybklGsdlbW3t3r172FnBvgv+MwqvRUF+lFSWQUb4Sm417i680TTOkY3RgF/xYImR6dnIyUf4YGbYb9Ie6vN0Zf5KeyaO05WNbr+Sws7CQLj9UJCcLlWP2vu2aqLVZLGSiVWIYsbrZKlbTRBGsUyUER5XkkRcNtgsuzXl2msVRH2KcuKRBxnFS7OHKfy81eq09g+6KNtHdAtIEtusIrJFRDohnga220NRxT7NZ0PXNtl0J/Dq5Uo5tY6htHf6ZpkI0h6pW6XZrLj5V/lMYrM6CdfI/Zm0C2DfqhYjMwnC80h2jP1k2XSDymM56zamWWYksHmSOZe+7WhoWdYdLhBgby7WgTpcWeFHJHNidyQ5v0TjuGAHhS1wY5cF/zmZ1xJXvXNzKp8jBVMiH/zcnuRWZ/vEJwfrV1pFcP1723VUK+GHBVuXDsSZ3cnhrhhZSpzkTk+e+HKqcrBXYz4FG2wO2fLLSUlna/VBG+HnrfJyvz7oJnupZVKGJLa7sGlua7aTVeVVm675jNqW11Sxgxi6XmdqlvEA7ZHnX37AdOQsHrr3Bludci7K3E+n6QK4JTMH3SzqtQrEsgJMN9z4ECWnX+L5AOxtUqxlTTQiTT98LS6RnXHhvgv+POFai3KQwfbyrfsomQjIiS2aE080VWrEE/yKCTZ7Ul+frTKEgi4blsZx1PXNwfaVWhEidb4vrWrIdXE2Zzs5azWds+mN9TLZExqggprAzyUSntFJF89Uah3mqRA/JpPHjyZ+ylCEIdtKmnikkGwqQ96SjKM4+ZTHnY0fqXfF9laJHZEKA+EV7e5BpZiURZmm+VRtk0ehPFtKpvL0S4axTNh9D2rNYBVFZZbB2tsX7nbHyFWLHvTcHSOXq6H20840XYCaWaZIrEGthcHnNpY7nMTCJwX7fqlYgr/egWfEfBM/wfu2o/kK7g7RiTXnkPUFsDctJ9+7LGUFjkhiBuETnyOiPJyLnZX3339/ihvFgwzIcyD5QU6erIRi5IVYv5yqLZxRDLF1e3KrdwUpS4vpQqvOv8FfBUjpnWAQDtsqOZAZLpOgp6J8Mlcrwt6X0evS6JCnArfE9QR3pfVqpqut/UTCvRCPIyXByO0wgoSqYskVsrpdTLqTMO7w+K+AZUdRmGLRLB5y1s3puEJyrWXTTkJRbFVF+PHJUwHVAXYWgzVsqqOkV+WtNa8QJq6+eiw0NKljUr7/jMwyQHuxBGJDtXuRjaL+VmcwcjFbQz8dTdMFBMNSapHGc45un6bxwWbhnriiGYinwpUPJtLlsWd5xVanVayjgHY0XClepK2i7l4e5cDemuIqjmYw2l3msgJHJKHWIYavc8i8/ACde5BBxDucq1xR38sV3x/WM+JXyEi1HBde69XTOl/xDMUPptNO+mV+PgyZ7whVEfe6dxDNybEhpJRzVy8of3sqUvKU5GG3rUvX3TxU2XyVY1CXMG4JDWvRq5BIFTfto2G/OuovmVt1sm6o4wla0/k8C7P0055JA2MhN11Oe2PoUvtcCdFA7Jike/5BShY32afNoIwW7n0WsuI2p3+wIKtwvWGRI5TxXwS0V8YvsL1ZO77ppy4sc1/AiCTbtiXx+SUax2WOf9Ff+f3Lk5/WAICTc4HNklb9gtUZODvA3s4jETgu8x090bjAAABnywU2ywtcdeAMAHs7j8zLVhEAAAAAAEAg4LgAAAAAALAwgOMCAAAAAMDCAI4LAAAAAAALQwSOS8hXiub7DC8AAAAAAAtANCsugU7JHL8vDQAAAADAwjAfW0UjOZwv/1O6TiNosaDhPJIWpYbdpowcJcAWNmBkihvs/aaGFCVPjNhVUzPveSmNeerl4ry8XNy68LuUPI2lB2qJ/5p1XEuga6w+KCgyC8k8SY3KkTPEX5T6Cf6zJG4ZrVYvz3+vn96R8n5DXWweXZ+qtG71A2rBfvI6RIkh4XWXf9STxl9wxNWTeApzfunT0ig+5VrTdHc35VYLtKtIYVUTlKHIE4X+w+jHX8ZNzbCnyESRVqrZKXJSbZwFxu5sNFG5Rxt/6No6CIfhBNo7UbkTijSrss41s3Vcvvvuu62trZs3b548KxIvJOXMBGoYXsywxYLKO6Mk7TmhDMAZo+iPaBIL2kRDFix8k0fsooliXuSSg0qtVtufNAxXsejFbKdRTJDwe+BKnubSfaLheDTz2znDvKVpbKQEqVZClDFlWpRjypD9VoL0M+qjNosM7YRJ9eo/GvRQreQWbdCnmDmLUM/+DKgFj0UdUGI4sBVV+M/Fb/JwIqN2HfslLTcJNjQaiGCXxkxItDddhblKTNgbZWK00OLIYlczmfBIQxF94Mw3WeZqHO8A/Sf4jbPDpKIpMmkVxeBPUqR2wBdTd7YPfV6PxlYV25V9Q59BWEp0ElO3eRKB5YbLKkz5p1bWeWKGjgvzWpLJ5Nra2gmzws0U4IqwoBDu3IHTlkM1KZ6FhHxJ1Jp+jATFStCRipsF+Q0jfgsJl9zIos1JPZdcLuV252Ef1WrFnieGnOfIXHqYmOjFViuVt0fv81DDGpPQrCwoNP+tbptywg7gJJ5G/ZCGtscVzpVy+3VWv2G/WePh64P0KQY4DKpFuBLDQWI6toa0rsKPmY/a2/sp3nTeF4kkG5u9uAbuLJ6YoFECMQWjNtmV6ZfFT4oSvNckT4D+hbAGsyOSeN1y1F7SH3PVCztHTISxO/sMfRw6gm+LDWcZBmfOaZZ7VnVceGbluHCvZcJI0SacxZaAkYi5LpubxWZwWhcveLELnoAqB91C0jpSkdDteApMDFB9Us9lNZtig2H3oJfL5vZ571XyRCcaJ1cLrf3tMAO3/GyqhClFduXQQKShSGdrzOfATkAqO8Yl7A1xSdIMGKhP03xprUVgid6yLF088PYExNh7ZCNoddBDqawqTncvnyoNk/VtVUhNV/IlQ6MokkhX3LCL3hX+ZGpYUTDYlfdAJu9cYa9+u59ClQoNBVeXBeClOYVJEmYP6OdmEz8+N5tN1HQ2pCbRP5Oqira3US6Vz1dMZRvqHtRSh7LYkSy6iJ4L91uU5kBcmVJgWL6NKLeyK59fu9stYVGwdGfr0CeiPKJY3EUxWAY14jy3xqH0lbNEfbgbyyOpdfhZg2Krk9vPC8bsV67aTNSYBTMWJCEWbu1lqroCyuKWZilLsijFLM/zvlM0jsvDhw9v3759586d559/Hk3ntQhhQgm8u7rXpQlTSsybh8X97Hf8Y6cpeKGQKbjzoL5Pcqdj4q4oPpKFJJGk3XkZd95CAbmhnrU8V+052LQkVWG9lGLLRrYbHY3Jz6ZimFLWAXyV42Xo0z2cdYgEeQor4wEpRf8SO6tZn5q08bC18C9x1N4mLvA4zTdy3D2B4UEFVWrYxhLeylMRHWzGMk2vqO4umTvV8Kt8Ez8tXdwmG/lpd51MbRRdkgS/QsdXlkbYvNtur9I6GlYULHbFVirdrT6639XJoWYvORyPG6RYWQC0x8onf2NJCwNJwux42Oo5R6ZyODu+TD2J/l2aedxLybOlsw+4emioe8iW6spi6yYxHZ7n4k4uWnPgvseUWcVFs/FJCuYn1oI5bf7tbreEhcE6PFpNVMRdtvRtNu8X/IlKDwvVVtG1xrj0VXtEB0f8zFCUWme4F+MGc7A89G73r5naTAXFjAVJRm1rL7M/gcll6ZZmKcvHLBthylpUonFc1tbW7t27h50V7LvgP6dZa1GPNchfYF+63vbO3OlnXLzkyVBHQTjNvrQNQTbjUdaamjxGV5pNx60v5qoTeS5x+gTa7eOH0TLi8c21PH0cF6uWJNLlzsGm028NNwoJlTMKTphSPFxut4dVX+X4NIFa4REeqJJEGDZ6LfebKXfbxqJPaec74fmswbXwLVE4qsCPY7CnPPwg2Oq09g+6KNtH1G8Zed3fHXMG9V6rWta27KjWquIOvXIe19AouiSjgXeMAg/gjm4IbgZcO9qKgtmulKMZdFtr1N4v5lbjRlWsJouVTIzsj5EA4aN2XU1gI7z+eVVaBcnLOzTUPXRLSWIbRJoS13NZ5X6L2hylHGLKROulWoxYKcIzY9Zb69ePxvi2u9USFgb78GgzUYmhMDL4FGJfjjJ+FVdaJzGQ7TxszfTuoJixiLWXhSvLYGmWssyJmVmeZ6JxXLCDgt2USqWCXRb8ZzQ7RAzWBvFCS9nIiATxNCHD2YxPmNdTyAOF8wDruL5kZ2ei8nrbdVQr4enP7b16nqg6xWqODBm4t/dSuCkCBDI+mzoL/gWzciaRI76cqhzs1dgMw0avQ/YwTgnWJx91/KYgsRYBJWrgutYHbYQfBMvL/fqgm+ylluNMcrf7MyvpyiNEU353x7Mko9fCigrZKALm1Syt1Ux2NTGO20rOB8bIavQkd06v//DYWkoS21VXBIsuzHPpIne1DqnNgV0ZQbbMQTeLeq3CBY7n59edQ5iosikcNy5qy+8QbIf6SmmdADs3lzsbrGVZLc3ERInPCZGdceG+C/4cmdfiwbaBqOsSbbalVCyx620t03O9iC51Co6Ss8FeGDgPkuze4J0dvTx8T74vPn0Sp1zNk3gueunh3ioSK0aiuQdtkDvPpoWB8L4nOZeaHKJ42qKcCSBjBnk5h91GZrVMHj/rsC9Nddf0yUadgIM1whO2T4n0HA/bTvBOoKSzqQypWBzFyac8HgWcclMZKa2zHCUcIBFeknXz8z2P5TWKLgnxlYUrZLLEvlDeqbn6Oq5bX9ckdLtS6uvs73dy+leOANzhKpM9oQEqaLrycYnC6d+GIgyre8iWUsT2/OyTL7pQg6y7u1x6c4hzHq11pkiEM9bLXFO93Y2WMHUNThf/7mw2UeFushcjbLNpx+7YMNhBiPmr9DlKKI9i+UpsHcVgDA66sdzhJN1Bysn3LktZPpamFxE+8TkiysO52Fl5//33I8xQgrkueB7FDSMf9Qi1a8ER7yWuanncIb63kpN44gPx84EZlBNGJscsFXn8T0TFvddOKN29vCFP/NiglR7urSIP8kpnhfvedo2RZ9PYLi7RUwMpkG1KmJUzCWSx29u+wyMI/stZxzTXvat2PPdIcCK4FnSI8CmRHeCm9Sny96Xocjwd8EjaWpY7B+XOgVP3mvncFHnRylUPy6+7Sxz3TMxdLMcXJT+MN4pBEuFKsWjOXiya1pfrSrUrXUDaqAn+NKYLkKb9y70QjyMlwcgdc8khykxCPvoXTv824oa6h2wpZ1jgYmsqGmcPvMO8yocA6Fy7757O0ZtD3GUw1lOoBWKbF/7tbrOEhSCoOxtNVOjR+sBpGoTRqFXnGsUaE62xoHzlIbSOYjBp7OPoxmwafm3dwRPXlcQbwbTm1u4yl+VnaXJZ47KvWZ5b5uMH6JS3N/mf8nW6lk0+NGwHjwLfAo2vG+71jnv5pxXeivVS+MrjI5h7xZYn0iUN1JKurnVzTWRwvdJMFIMajMqx6tnNyiSFm6Bh+szTkn/lzH00Yizap0SjKoQBVRHfbhgNSxLTHaEbxSCbRQJBVptdudeVHARhtOLUC8rfXrWNUoXQvyqbbLrB2jC3lN26nURpJym/R7dSC0pVfJSpHsvVakGcJbYHGaKmAR12PgnZnX0bXSOMbrxG0b5yi5ZaR84hbuxiFuszdgdxMHeysvYy08hpUoNvt5XL8jXLc0s0jstc/qK/+N4c43ReDzurcgEAOAtojy8atlHFocD0PXAKWFsHWGAicFzmNXqiz9PquSwXAICzwNrjYSiYA6ARziPzsVUEAAAAAAAQAnBcAAAAAACIgH7f7xdcFZLJKd+BAscFAAAAAICFARwXAAAAAAAWBnBcAAAAAABYGMBxAQAAAABgYQDHBQAAAACAhQEcFwAAAAAAFgZwXAAAAAAAWBjAcQEAAAAAYGE4DcelW7+TQW+MS8thbzj+avN6P/dgfX1Jzaf+4kbjxiXn76M/xj5/cfyzJ27iwW6mm9Tuigxc3NuP2MfijiBGNGDhP+ERjmq/2SqvKN/SqiGzZgAAAADggjB7x+X4q/qfr9RQt3287DvdCm7H0tVG56qeIv2TK83PnzaQ4zF0P39U+8mraGnZmDgcoX0d4rX8tfVgi6Z82i7d3USR+y7PtgIl8TQzYy8NAAAAAOaSmTsuoy/76PV/KKBPt798un7CmT7+TLH5bbe0TCMtDw6aV7KlSGQM5Gn7t49qv9lyvYRL679c3b9+1L3xKsR8BgAAAM43scydcWfrrKXwmLXj8vTwIcr98lIcJdGv/jK6cTVOLtLVgp0f5nfIzgvddnnqbJRcv4OKb4xLyLycsPRC7trhwdGr6RWEjr6tFF8c89x44tFXm9cPm95uDvkWFVGl+cNO51VUv5Np0mROKWKhy3SL6pB+fwUn9pyS47/sf3GlVFck6Q+OUXqJrL7kvyDX3P0d9UpXKnRZEcnP9TnmdVlNOZdYZdP96zbJuRihSwEAAAAAC9hrQXPmu8zYccFTPkpWiUvxQg59enh81fVFHue/TY+xJ0G2YI5KN14td95Anv8xsGR3afX1Z/e/f4pWLjn7RCqP879NDjtbDTKRf9p+heX2uPfixrhDF3tKW2OySEMm9fbP1pVCd8nxka3GEtkY2rz/VNoJuvZMQiurP8J+0lH+R2+M6/z4DvFa9l/fGNe9e9NSocuqSKLw1+/QD8xtwvIcpn6zNV5Bo/ttXHrLS7msSe6kpB5Mu/1Aq7jLo788segWAAAAuHBceeGyz7fMa+Gf58R3ma3jwvaJ6CoL9jlQ4vcD94jus62f0Q8rL9ZQly5dmO7XlkDir7CVmxcGf342+TP9hmdbv6SLOktXS8XDA+xYkGyfzb0inOd1Dtg+21JuPX7SQ48r191GKr7ID9MQvvjbEJcul5Ukfz9TbH6yyY8MO2szskdiKFQQSRReXGTC8lxbra6Qj/Eb6dpO16AfT/IrJZrSWnEXfxsFAAAAAAb3WrC/MlfrLjN1XAZ7O4+b6G5zh1/hJ1TCQc+iNqQrdOXmCLkLOTaeDv6M0E/ka9gNeht1Oltpsi7yqemuK+ZdFXGLyskKOyg/LBEBiISj++1Y5jHZo4lr9wYXCgAAAABzCvNUuO8yD8zScTn6tnJtdVi/6s7mZBtFmv6nga7cvH1Y3NnQnQSEHu+zI8D6qRTM6G/Na89UEXM7UE65delyCh3W76+Y3hW6tP7zK7G3/5h13BqyNYN2NriLE7+xPkTtbbKHRVwcKRP/Qn3A8nzxyd7R1TLZKupWpK0ig+SOYo+/qjevlE7pzDIAAABwblEWV+ZhrYUxQ8el+/mj4uuie0FOqOQ/H8i/UMJZzhY/ybiHc32Iv5IsImTaasE8m/r201jmMaJnVNW1k5WVFrqbyByia1dq1/RCl8sPVjev343t0G+K8g/PrLw6/s0fub+JM2+wWnjbQFc69DTJev2NfsbJhJ6T1Qu1wc+4sJPFy+XfYG/pToUezq2hvpxYl/xOjGqg9WAdjuICAAAA55UZOi7p0lZDvhK/sU7fA0LlDvcJlvln9xCrkkBD/ZUXnoPzoSz5PctCVpfW61tjTUjPT9J3pkSw79LRjgMbLuISt8ren3qhy6baKXdpmd+4qtwbJLmxFAAAAABYbOAn/wEAAAAAWBjAcQEAAAAAYGEAxwUAAAAAgIUBHBcAAAAAABYGcFwAAAAAAFgYwHEBAAAAAGBhmNJxmZsf0AMAAAAAYIbMzS/POcCKCwAAAAAAC0MUjsudTKhkW50IygIAAAAA4AITzYpLpxPglGQy4ZwbAAAAAAAAO/OyVXRtFdXd3/E/+iNy4v9QfrOBfnsXfcH/fhY9WEc8MrSSeObIpR9/ha4f0ov/gH4lChmO32yhz++gpnyRq8LJHHMFOT/9P0CZT7y7VM0gL/H9Ntp5PLEwSFQmrenvcUHT1i4AXik0jbR+yG2EFCOZUXWAc8bs7HNSdIudZxuG8QfGn9kzW8flu+++29raunnzpn8yMlW/gEp3nLbEFvwb5LX0b/+Cfn4FfSF6J09RiTU8NYJrj07XCHjpTIAN9KtPp8kG1xp3VMVrwRn+8iqqM79kC+30SY/6zauO6RffQA9W0fU/os4bqPmJSTMIFV9ERwP0ShIhY1fk3UbrP7/9Cv3yGUG8JPGTfraB/jxR7UJ2SzpqsGqyfr4T7dghtpGPnJ+iX8IgAuiI9sl64nT2ae9u5xUYfwgw/syYGTouzGtJJpNra2v+KV9/Ad3/1Gu8t+VXlr44RD/fsHgnj9HoEvoROruGf4yu3yVWOAU/v0oWTgw8RX+m/34+QD/5IUI/RCu4G1DvBDsrbCS9v4KK+E+TZl68hD6/i36Crx/6qoVJLvBFH6F/8O7CjfLlp7QzT1U7f3ZWyFNOk0uCXbE02vkk+oKsnKDhgHOPZJ94RDq5fWrd7bwC408oYPw5GbNyXLjXUqvVfvCDH/glfRa9gtCvTN4u3xMxLi2we+N4mqfe6wihlUuo3kY/c5fpRIfaWbjDHgB1clli/GSw4kZQJksaf/XyOf4KffkCunFJ2K+xCM8cZ+9Ptyy2/GjY92FcQSsD9PkbqHOJ+ub0xhFdVvkSd9pn0ReP0U+W0eef0IWZp+oQ8O1T9JMrqPlI0wxW5lO0g4cPlgki4n35FN1Ydur4/QpawlracPQgOfuPvaKdRkHeehL2kOqXXK0KCld06OXvVkrUhifkJfR7scX/io5fJa7YnzV1YRtY4Q1E15xKliara5tuaksJZoDcKhilVeoYkDNwztBHpEfoaAVde1boMuLKgb3L4zFE7W4mMxN7qNHIkdIBBVHNXeysgPHHrhkYfyIkGsfl4cOHt2/fvnPnzvPPP48m8lp84Usv6qILbkv3tXJskV/QK9+30duP0c4Gmf6vP6LDB91P2fkH5wqzFSQk9mBbTp+6XyFiQ6iNMrTjqY8OQunYTxLBZX3Zdp4SyI13ybKKY4XrqHjo2d+1Z9DxE7Jkgt5Av1wlA9zI3Qfd+ZQk7iDnmeAa7kVYjC1q0/SMC+bPT9DPnjFo5loSjb6lLfIX9MskQn0i7XNH9C4q0m8/Ra+4A6iOc9djuk77F6HWl8iuVoZrtWvVoZe/SRtehu6qksNj0kURUtX14oZTLmLL9X8lT0VNY5MpQ7bQRogOBC9yM7iCOivO9d8Koye3E786AhcT/IBEV3Z1/Lv8t210LHc3o5mJPRT35abJyNUOaCn9bDcdYPzhAsP4M1OicVzW1tbu3buHnRXsu+A/I/FaFKSlBWUH8Vly5SH302maL/pkyLgmXPFgiZHmBSMvH++DjnzG5WeCGNiRX1pHN9wL+Onhe5x4C/0M+++Wn+zDg9RPttCNgdM9nCc5etwHO2HYiXlIvfKSe+U3V9TDyKJmXn8BrVx1D509Rdf65L+/9T287DxDUJeIr9aydVqxyr/lWsVduuurQ7s2vuCdUNngwxMD/VdSF85ZaDvHi7U1mYJmIV5WfyWOoIpuObacgQvGNbpyoE51jMAuL44PyGpmag81GbnaAS2lf3GmFgvjDxcYxp+ZEo3jgh0U7KZUKhXssuA/J/NaxBVCO34nXablN+uSSx4J6rLeXbJwijtnZ8uy4sf6zCViqV8g6VGDPX/s/I0YunflGTUDTzN0nTbj7hxjL+f1HwYL7D3eIbctrrhL5Ra/TRzB/XVorvJjsnr84rPC8b0foqUBTSmqq63fOZMmAwAJec/il+toNEBL2nYtx6/Lm2w4kAAjlzvgHO0jwPgDnBaRnXHhvgv+POlaC56P6/+AHrouqvpenIuztPBXe0bU7tnyA/YAyFgjXDHyLbPdH0pvr00J7Q/s6InzLh89cEMM/ROy6ih2lS/+hpZeJB/YCuHvXyQbRtcP6fUVZ3MKP3aMjsj++mjL2WZyriD0o8vOkiyDaQZhn+aJd5F4OS9OXAly14q8Tou8BxRHq/ItZh3q2hAGkZ0j1FlH3/JDSPT9SZbMUxeS2g5bxfdte3H+KIYRmMA+SwEXAc8+H6PrbWKWxD7FVwGY+QV2eWXmDm1mqpEbO6BvFzt9yEPXE+9PGH8kYWD8iZQoD+diZ+X999+f4sYvDlEJeZuC/K135WdOyNICnsJ9H2KcAyKvOot10hUkryXSF/BwoSVk+Go6du4SmVlZ5ITKY/RnXARdriSnvZTjfq+So2fYRskm0SOyYfQAEd+l/qKrCnf/iLzUwOR0r5Cj+4IrxjRTp4V6F/sIrZP8JejgW7c/C5K7rqIv++r1EhOAaVV4ElJ1yPO/o2lDzO4ROT/UcW/kR+d+pahLyAFbBTn5GLLJ5D1mkptgGN5SrSitYjlw4P8io9jnV+gGnec8a3etKKDLPyK/ZSB2tzBmZhyXjB3Qr4udOj+/SmZ9Dow/HBh/ImdefoAOT70Z7eWdt7VzIexKU3mxUHyz7rF2moRfuYI6L5I1GJ5YL9T56rH2wViW8Ce/qL/LrdeLgbvcz/9Gj2vJN0prp4xH7gkY5FTkxlOk/BSxritVFa6oX/CCjO9ninfx2ukqtevwCyGxQSqOUilLboH6NLxlqtsASylfVLRhUxdwQZHt89u/0V4ZYphSTPRtpbv5mBn/rBu5vQP6dbHTRZUExh8ZGH8iJBrHZZ5/0Z+/z4bkBYkzx1lAejTxc9Jv6E8nAQBwajRP8+e5AQDwJQrHZb6jJ87PE4nOdLLNc40AAAAAYKbMy1YRAAAAAABAIFM6Lp2t4DQAAAAAAADRAisuAAAAAAAsDOC4AAAAAACwMETguIR8pajTmeszvAAAAAAAzD/RrLgEOiXz/L40AJwLuruxTKXWGZfTZy0JAADADJmXraJRezORd37QRB57u7ubg0JjPW5MqiaePXLpxdaQiIYvbqOqKGQo8ExzkNXE5yU4mSNnSiIfSG2Re5dJM9OIIZeNc6iibZ6PUF9SeCJ0EbowYa6cXOAIsYvHGuTsnASt6cm1A9dr4eaCPCOSTCiNxES2K5Kpu/nI9u+mNZSo58/RLVxLbMjQPkSIeonVk0PFcr1+NBEmLU7Gyc17ESF6602uL3IbEpuVtF+/hC/MSI1e+05pIFbMfUT49gJaRdTM1nH57rvvtra2bt686Z+MNPR+bjhuuLN0bNdr6XQhV9/rrkvjFLc0YgTt0SkbgWjnWIBNMnFOwahdR52GOvyO2tv5VGc8Jn5JbLtNSuruug/S+NImvtRBsd0u/tugmXAFh+453V3eMKSRdrvD5Alym5api+A3Riyk5yNEwDRCBja9Ip5mQquHdTy5jB2nm3Qh1NauCPnQa6tMNvM4rw7OZBbCVuzYjfSdauF60XFDhvYhwktUxzNRy1LKRG3vTKPjNP9zc+I8Liakb9Rq+4ejdaO2rNaeLrSK24MRSrsj6+E+qqXqm+3JRteQnUhsX2Jbmyja1g30hWb6xHUBmKHjwryWZDK5trbmm5CYaKvqWXB5PBa/jq+X0KbFO4kvp5oHwwY6s4aPrzcaxAonv7O7l09lx6ZviskE+SedrdG6DQ8quBvQERSrpkH+LbTwtIXSaR/NRMJo0CvmCix3XNOxqaZMA3NOtEIStSQL0eXnMImQfp1CF6+rmVC330xlaWluF0LalYRYnm9H00pkxsI+ruaK+8KERFAsXC8aKRkGDBEsTXt7P1Ur9mylTNBJRtSTEh4q3I4HBIFNoZZtZNGmzXNx0awdGwra5neRFs9Vy2yRL3IhpfbFknT6sb3uqS6fTj9xAIRZOS7cawmOFM1M1GDjfCfF/nzJRkzivfZTqFJp1jrDZN1ZphMeFvnCHR6+iZPrJHajWbupEzwfnLCT28/km0Gus+s4e386Zanr22o+5MEk28FPjmxVlaZLEYl596UpxjiHHkplZQnw+F456JbTaZNmqEi5VD4v7AwIYuB65ZtN1ESk3KGwHE41INeOjCUJ/XH1cDfmZZ4QHqHEuovyCPo3PD5FJ3BX+habgnsjf7LxhKHlmIoOEq+DiF2gZtPNQc3QMSFUrNVMthSRkGrTO+bCaOYTghXiXqKYkOhpJJLF3mA0QuoVyXEJ9NXkEsU7D/ebqVLDuxA3WLihaDHDVdsQIUAeBEpYm9uWUibAOiKJxqwPL+YBZ6rV2IUFq474oIkBqhPlI8V0TdbO7xU9F9YEiK9n9/c2Y6RPqb1MGcOF/PURKS4IKZskMTs6oCbU4Vrdw+yq448w9fg7PopVuFUwSavWEY6t6UTjuDx8+PD27dt37tx5/vnn0UReix/4MYf7xPLzpTuoMQOLozZq9pLD8bhBGp8tELsr1Am+ZMxmIHo7S4w/lctleoUtUVfdr6r45jpiH7a1RwevdNJThC/IM5+3sUKW1pf3WOFEGsmlZxNBen3cIQvZZG5OOeYZX6/mNhOxPK0akRpXEh1sxjK82yI+vqfj5ifvZr6PSx3zrTRRjIPlYauInCEjjh9dFQ1I4OeCIaLSeO6IknnVUnfvuqt/cgDB0tQRCZyWvj0sVN0bnScbTxjHPAp60SYvVUozqA5bPWfMNWbITWjfaEtRCSk2Pb7snZYa9puC27y7TDLQTSgclUzMOweg9T43O61EXgKpDHIWe1wMFq6iZOhs//jQ3SUr/2nkPcGqpUwJn6mYA6U0jTC8GAYcH4M/pzh+C0KOD7KqmK5u7SKe5+K6jm48w2aF7Os0tF5GihLHcCF/w2gsdG1nNY6XvJxCfeb8CsN1YcA3PPlmoT7+eJIIqH2kMDBYRRJL20NBI4mSM0CJxnFZW1u7d+8edlaw74L/jMJrUZCfL5XHOjK351bj7ooyTeOsUI8G/IoHS4xMz0ZOPsIHHfmMi3edOPIEr5hqFXvyeOgnd4zX1XxYxcqdVCyTr3UcJ40t4TiddLNdbax6BqwdF9A140pYkNIkJDEkmQOfDsmqP+k87KhAVc/cUvdSzrnO9Y+lMKogQoEDvtXMw1B0GPH8M9RMSLGlyIT0mh43UnY3touobXj7Gl4GigmF3ufibg5uftf09EVIvcS0ezwWzx3ioysdw3UL12omZ9jHk4p2uErIEz9o91rVsthftX405X4qczPZM4/v8GIYcHwM/nxCRoFKs+ksSeDxbzW4f3mGUU67nou2wuZmQpScP+gWkn5juCeLMhoLD6DNvrR5SNYkUVYbdure3OFapG3KUFBnKCEro1X4jCSAiWgcF+ygsDU77LLgPyfzWuS9TWuq6M9zyCdPtyPJU3uepbM+OUwYszzq0j6Des5gL6xSu3pZTrkGbDouEEozjvPhiOGtEk2iAXZUoGqYP8x1H7X3ffPzZTqBZ9GgkROlkGLT4/bJ0O1DQzLNhMQjK0N6wiSO1CtyHu4aX2jZRK8FCYthZAzXLNy3aDygZHO9uj5EuHniosQ5im1EaP0o/Mgx+R0Agay38APNdAFkmAu8yVuARK7mu27jmZ8bxcUS/95kGXL1cRSbXQ2bXTxtHnZCFgecHpGdceG+C/484VqLcpJCey/OwX2+TBiyEHNiWzLOPmY8wa+YSC0z28WGi5In3Y12Hgfo3MHe5SMHbujgXSa7C2JX4acQ2Qph58B584Fcrx/SZwN3JzadTWWkOiF1fA/SDJ9DmBhSh/TTAH8hkfxBDngmh5PU3bkutgjZtw7BtAIHfKubBxqEEcfKlBlGKKRhvU1ote5eHuWGcRTXTIjvNXqnV/QrAtz0THOJoUQ8whO7Nkz9BgvXhNEyTONHd/sQ4S4Kuuss9G1srZQJwA5hKpbY9Vab8EM2frz2HV7MV0Ia/LmAPHR55kx9kAPzUpkdelddO2LkLpCYeoSlN+kjkjcJyO1LXoHrtYZlddhBBWHuYC/al6acMgKHwciHpvNOlIdzsbPy/vvvT3GjeJICSb8rIf3MCXm+jJneyBVzqrZwRjGE+Na2dwUpK/PpQqvOv8FfTSG5Vg9y3DaG3OLjqNraTyRcccS+SB6Q65u9ZjNFN4nSHdyTNsn6Itk6SsRcRdBjmGXs17BcnSv06H5ZLNhXM0QrghjkSEImQc98+WtArA8t27gzbam7c9xAbJFi2JXzKQXWGpRMkvRGRzOaeYxOODpMkWHEQjpNL3UTqSXKxOp0E6JDNzezuOkK8VH4GRfENzPl/Xu2KK6W2N0jd/F7pYXztG7hWtF6FcxDhI+a9VK63g8gqR8Mt4890y+2Oq1iHQUML4YroQ3+POD6rC5kLs5Th09MpVq7Cr1rXzsa7dqh2iPsvWlc1kYkAaV9HfOUh514HAnjHx3+0CjklKH3EaNViNJGPDSdc+blB+i8hyYP73CuckV9a1R8s07PiF8hw9RyPJ7mifW0zlc8Q/0NVeWK+6d7UVr4tNTLSVloob1l/ksR3hueahb6JcOb1JJmJG2wz5IY3glXZNEAz8FQHy1zS90FHdpOmKk5nFhg7Vt+o1kYU3XCiGe1N91y9A/RCsm7CXGFMzG6EBFsQiYzC2W7ltZU7jUIMFHRpis+diSm4SlMNU5bPgRLud6wCBHmyoVAe2XcYsaqtSuQu9aVWwwabgjJLb0pwAxNX2q5BfcJQy3MBqBeVLTh1+sBjWgclzn+RX/l9y/to+mpoz8rh8N9gQIAJPy9BQAAgHNCBI7LfEdPnOfR3PeBL+K7AAAAAOA8MC9bRQAAAAAAAIGA4wIAAAAAwMIAjgsAAAAAAAsDOC4AAAAAACwMETguIV8pmu8zvAAAAAAALADRrLgEOiVz/L40AAAAAAALw7xsFYmxq+Sfxezubg4KcsAqL+mkwW4jkW/KQi0V8fKifyMtgl1EsB+0ESRX5JF+FpuKkhIC7BmDMGh4v7g+rYyKipCk+RO1dcTang+z9BfJvRwjv2iufsF+wxxfFX/pyIGFQhSqg9waGfqp0uhGGwjRiJp9njXKL0BNYScn7Q6LicXewtwmDTJ8QJqRGr32na517chDAVJs/mJaRdTM1nH57rvvtra2bt686Z/MiRExbriBSGK7Xkubox87lsZii5+OEXjmjUuN7ZZMI6yfURorUnSjtLA4HPjKjCy7e1Ch3YfEymWZK/KIkcdI1BFPMhIGslZK8Btnh64iOapZgoQ1qAcqx6ZAo7YjE/WMzNJfJNbwtdq+EjNw1K7jQZv+ZLn7S0fy79+PBvp4bu6nPrHDXBHURjR0Hd0+zxRnGh1zJz+22Z7RE8U5w2xvHN431U6aLrSKYjg3MgbVUvXNdnWiaE8hB0+xfYlNbqJoWzfQF2JyVtE2ODFTMUPHhXktyWRybW3NNyEL6S3EMhlLP2fvF/1YjHJ7etCQJZPPTKaK5HIpt48P+6hWK/Zm82PPpsB5ijxC9DssSq6U23cC8rLQqUKohNmhqoiInSs48q03xqTDnyB7k7ajElX67kzM0igSDWvVyKJNcSYZtbf3UxPX3tJPjSF8pfu0RjSnUe3z7MBuXU+KbqP9nD1gwWhvJrRRTo7JTYwtVy2vx0/Y5c1CSu1Lgnv1Y/ZIvDOBVT/6ql0UZuW4cK8lOFI0M1GDjfNHQPOjJL2XjnfEe+2nUKVCY3fVnWW6mhf8ky/cFUnA+203sRvN2k2d4PmQuGq5/Uy+aXGd3ZlpKCwn07LzzSZq0g0I+SsmiqEiq9kU663dg14um9vvSSFueR6yeIZq8lo6Anu1xgmyB/Rzs1ksFptcQnXRJZ2tsekWPzSlsmM8juwNcVW9iL3uI0Iulc9XTGUjN4ylVHo57S0Di/HtyE7F6qEstiKSEjiczLh2DQvNh2matoEM2pakpVIgUlOpjgnhMc5rnbM3S7XRdZFw5yJhxBMDVPdmEhLrqkSXribB2k+DUBuR5RZkn6V+wmIzy3u2dhf1fIL1f5+aKoYdcEWJ6noBUOxN7UrCCKkvNoieC2sCRJffiAb7e5sx2q/dZTlzZ5FG4LjSr+OCkEq88ESyWCGRpBNqh5JH4LS0f6janr/jo1iFWwWTtGod52f7dH6IxnF5+PDh7du379y58/zzz6OJvBY/vN+2Vx8lvdibLOhyGzV7yeF43CCNn6IrgO6adAJPdewKm3Lo7Swx/lQus3AAbG2/6n5VxTfXEfuwbXx0wJZOdh3WeUABksNhodoqIqc3xqWvHOENz8SJJO3jy3gmLRTQvlcEibburmbSpepOzl5NtMdqSf7Gzw6FgVtrmiA7JnHa2QptDiFvvJDlcSqVYLGn4yhF/1JH8Wa+j3Me83qtHnINk5kFMfdCFs9dBh4eVFClRkYI9hTelcUm/VMWSQwcTgcTHw2LzWdbgDVomyw/eBsZ2+3VqlZHy+Rz1ma5HKQ9dx7BHps3J7ixrgIf9qQIt9ZwvlpKfbbWGjGuWIjRPkcWm7G3O9HzttSUJ1+E5zMVEdwzdb0dDS3rdIcLhGpvq0pXEkZIw2KD57m4ruOh802zQkbChqvkgq2ziCOw1q9FYygmpR1O/CCK+syjl0ZRZQTGpmu1PbkqSt8RBmTBKpJY2p4nrWxIBUvOACUax2Vtbe3evXvYWcG+C/4zCq9FQX6UVJ6mRvhKbjXuLmbTNM6RjdGAX/FgiZHp2cjJR/hgZthv0h7q83Rl/kp7Jo7TlY1uv5LCzoIQylyoi7NUPWrv26qJVvEjQyZWIYoZr5OlUDVBGMUyUUZ4Pk8Scdkkv+zWlGuvVRD1KcqJPR9kFC/NVqi6B71Wp7V/0EXZPqK7B5LYZhW5UVNxh8eP7aKKfZrPhq5t8vhF4NXLlXJqHUNp7/TNMhGkPVI3/ExXcfOvkmfgeq9VLYfY4dGqY/d0xJTcD5NQG1GzEMMtNpux60dryqr/dkUI2AkgVinfdjS0LOsOFwjN3la14ULD8QzpsoLruayqD0tuJkTJ+YNuIenXWTxZ7MbQ7Es7ueQYH8oqHUoYRb3NQpvtKWh9p+5vFYYx05IzQInGccEOCluzwy4L/nMyr0Xe27Sm8jlSMCXymcGJ1s2d7ROfHKxfaRXB9e9t11GthGeTAZoSZ2IgByZjvg/Hhjs9efBcUTnYqznzA53kD9nyy0lJZ2v1QRv1coXycr8+6CZ7qWVShiS2uyJqbmu2k1XlVZuu+YzalhdjsYMYul5napbxAO2R519+wJQ+kI5WkTScG/fTbKWF6qcBqI0YkNZkM/76iWJdPZKaXkB0exvmAm+SouAyzXeR47cYnWtpsWQqYxDfQ2CwY3wong4YRU8wZQCREtkZF+674M8TrrUoe+C2l2/dR0mftxhoTmzR3NnHjCf4FRNs9qSGy1YZQkGX9UrjOOr65mD7Sq0IkTrfl1Y15Lo47652cvpXTjWd9z0a62Wy5j5ABTWBn0skPKPjuSKTqdQ6bCQhfkwmjx8e/JShCENGHE08Ukg2lSFvScZRnHzK4zGFv6biiu0NJY5I5J1c/op296BSTMqiTNN8qradh7hy2jms0y/pA5Z42DaoNYNVFJVZBmtvX7ibzQmo0RjzR8cJX2iw9NOgt4qk9+xZIxosxGSfRpshWPSjN+WUTgz2/VKxBH+1EU9X+SZ+vPZtR/MVclDjokBWDRR7O+jjx9hJ8qB31bUjRu4CiclapjAGuX3Jnjy2srLaoYRR1P31gNKUU4Y+SPonCBixgUgP52Jn5f3335/iRnEPHHl+svx+JnuUjJEXYv1yqrZwRjHEFuvIrd4VpOzmpAutOv8GfxUgpbBt6R22VXIgM1wmQY9T+WSuVsT8qgU57E5cf7fE9QRfCdCrma629hMJ90I8jpQEI7cbCBKqiiVXyDqm90iD/Rj8V8B6pShMsWgWDzkrpLTTk1xr2bSTUBRbVRF+tvFUQHWAncVgDZvqKOlVeWvNK4SJq++JCA1N6piU7z8jswzQXixBLstnH32cJR355Apd/Db106A9J8mOnUZEqkLM9mmyGT/96E2JkHS2V/lgJ10ee0IXW51WsY4C2tFwpXiRtoq6e3mUU+wtTx0+MRVvX0t/oXfta0ejyQ4O+VexFt8R2GQM/D65fR1nfF0dRZURmBy8Ctc39b5jtApRWluPAEzMyw/QuXvgIt7hXOWK+l6u+GadnhG/Qsar5bjwWq+e1vmKZyh+MB2T0i97C5/mO0JVxL0uLaOSHBtCSjl39YLyt6ciJU9JHnbbunTdzUOVzVc5BnUJ/oLQsBa9ColUcdM+Gvaro/6SuVUn64Y6nqA1nc+zMEs/7Zk0MJb+ku+Uu1tog1czMr3Mb5AmlH2GtRmhRL0ofqf+wRc5p/WGpexQxn8R0F4ZtzQxV6v55xXEEYiPObqGG0Jy2whsHuuQz5dabmoiX9uzJyKoFxVt2HsEYCAax2WOf9Ff+f3Lk5/WAICTA2YJAAAwJRE4LvMdPdHX6QaAswHMEgAAYErmZasIAAAAAAAgEHBcAAAAAABYGMBxAQAAAABgYQDHBQAAAACAhSECxyXkK0XzfYYXAAAAAIAFIJoVl0CnZI7flwYAAAAAYGGYj60i5efH+Z/SdRreisVD52GuKDXsNmXkKAG2sAHG3zn3flNDCo0lhtOqqZn3vJRhfjud5eXl4taF36XkaSw9UEv8J6vjWgJdY/VBQZFZSOZJalSOnCH+otRP8J8lcctotXp5/jvb9I6U9xvqYvPo+lSldasfUAvpl739SgwJr7v8G7zs179ZsXoST2Hskq1RfMq1punubsqtFmhXkcKqJihDkScK/U8eiUCVcVMz7CkyUaQ9UQCBE3BSbZwF2lAW/jazzmekBMuwHwG2EYx/u3BtOn/M1nH57rvvtra2bt68efKsSLyQlDMTGCxt2GJB5Z1RkvacUKOM01/GTtCKxCYasijjmzycFk0U8yKXHFRqtdr+pEHYisViz40nQ+NVIOH3wJU8zaUHBYWhNPPbOUM31DQ2UoJUK/HDmDItyjFlyH6WRPox9VGbhzIjYUy8+pNYrLWSW7RBn2q0YTeKYUAtxOBpfiWGA1tRhY04bkh7x3+u4+Gu5SbBhkYDEezSmAmJ9qarMFeJCXujTIwWWhxZ7GomgyNpqA6bSDZZ5moc7wD9J/iNs8OkoikyaRXF4E9SpHbAl4Dh0fxQisw6r6Xqm+3qRNGeQlq+z8gWCYG+EJMTP4SDEzMVM3RcmNeSTCbX1tZOmJUTBsvHFWFRRNy5g4TMCmULeBYS8iWhTvoxEs4lQUcqr1OVx/zH0kckXHIjizYn9VxyuZTbnYd9VKsVe54Ycp4jc+lBQWEIxVYrlQ8TkEYNa0ziXbOg0PyX1m3KCTuAk0Ac9UMaTB5XOFfK7ddZ/ZxYrMa6G3M5kGLQ22sRrsRwkHCArSGLjuP9mPmovb2f4k3nfZFIskna+416dxZPTNAogZiCUZvsaha/F+5ERPeTJ0D/QliD2RFJvG45PjTpj1r0HMBI6OFRM1GTzsvr9DkqciFPOLJFAKt+9FW7KMzKceFey4SRok04iy0BIxFzXTY3i83gtC5e8GIXPAFVDrqFpHWkIqHb8RSYGKD6pJ7LajbFOmb3oJfL5va546LkiU40Tq4WWvvbYQZu+dlUCf2L7Mqh8VZDkc7WmM+BnYBUdoxL2BvikqQZMFCfpvnSWovAEr1VXLp44K1PixH4yEbQ6qCHUllVnO5ePlUaJutqQHtdV/IlQ6MokkhX3LCL3hX+BGdYUTDYlffcKe9cYa9+u59ClQqNcleXBeClOYVJEmYP6Odms1gsNptN1HQ2pCbRv/CUmUvl8xVT2Ya6B7XUoSx2JIsu4izK/RalORBXphQYlm8jyq3syufX7nZLWBTUoYy0uNDW2ObyjvHoiw26zhFdoiP17+9txoiekbvm55pxrVapuJvUUv6SquUFEPvIllC6gLbxK4bqUDuUv+OjtKlbBZO0ah0n3eK+CETjuDx8+PD27dt37tx5/vnn0XReixxO0+uu7nVpwpQS83Zl0XL7nTAR1LyCktIODH5mRH2f5E7HxLOF+HgQkkSSdudlPL8UCsgN9azluWrPwaYlqQokZvteV95aMmlMfjYVQ3SzcdlXOV6GPv3KWYdIkKewMoqjFP1L9MvM+tSkjYethX+Jo/Y2cYHHab6R465PDw8qqFIjQ5e38lREB5uxTNMrqrtL5k41ejQ/Z5KWLm6TsyY8eLLaKLokCX6Fzn4sjbB5t91epXU0rChY7IqtVLoL4nS/q5NDzV5yOB43SLGyAGiPlU/+xpIWBpKE2fGw1XMW+XM4Oz7lTKJ/l2Ye91KyjOjsA64eGuoesqW6sti6SUyHN4u6fovWHLjvMWVWcdFsfCL7JKWxN0N6bUqdNv92t1vCwmAYyqS2PixUW0XkbBVpd+s6P3S+aVaIGTdcFRVczZOiymUWO0PJ39J9HMwjW1ftAkr3waMiD9XBTLcqSiKgjlRebxLaNIml7XnSymZQsOQMUKJxXNbW1u7du4edFey74D+nWWtRjzXIXwxxY7e9M3c+O4iKRQbS7EvbEGQzHmWtqYmvjp1kx+cu5qoTeS5x+gTa7eOH0TLiUcu1PH0cF6uWJNLlzsEm7VTGG4WEyhkFJz4p7lrb7WHVVzmhDrSxCo/wXJokwrAJdrnfTLnbNhZ9epmP+JwQrha+JQpHFfhxDLYR1T3otTqt/YMuyvYR9VtG3rjhjiSDeq9VLWtbdlRreO6K7YrnUvfVQy1So+iSjAbeMQo8+zu6IbgZcO1oKwpmu1KOZtBtrVF7v5hbjRtVsYqfOjMxsj9GwvOO2nU1gY3w+udVaRUkL+/QUPfQLSWJbRBpStxZdJX7LWpzlHKIKROtl2oxYqUI+y1ZLwK3fjTGt92tlrAwmIYypa01nDUM+myg6pzjZkJUlCcr4q7m7atT1u5DMY9sCVsX8HaF9eK4JCLKSCVmZWxTg8FbcgYo0Tgu2EFha3bYZcF/RrNDxGCNFy+0lI2MSBBPEzKczfiEeT2FPFA4Hrjj4ZPl0InK623XUa2Epz93gtHzRNUpVnNkyMC9vZfCTREgkPHZ1FnwL5iVM4kc+EmmcrBXYzMMm9UO2cM4JVifcXdO8Bv8xFoElKiB61oftFEvVygv9+uDbrKXWo4zyd1xg1lJVx4Im/K7O54lGb0WVlTIRhEwr2ZprWayq4lx3FZyFDxGFt0nuXN6/YfH1lKS2K66Ilh0YbNoF7mrdUhtDuzKCLJlDrpZ1GsVLnDoTL07D3OBN0nhRg0615AeTeVXCtQHOctisG3YR/F0QBfwLw44PSI748J9F/w5Mq/Fg20DUdcl2mxLqVhi19tapud6EV3qFBwlZ4O9MHAeJNm9wTs7enn4nnxffPokrraaJ/Fc9NLDvVUkVixTCd4gd55NCwPhfU9yLjU5xN3YopwJICM6eTmH3UZmtUweP42wL0111/TJ5oSAgzXCE7ZPifQcD9tO8La509lUhlQsjuLkUx4Pdk65qYyU1lmOkl+McJXm5ud7HstrFF0S4isLV8jAzZ4uac3V13Hd+romoduVUl/n9EUnp3/lCMAdrjLZExqggqYrH5conP5tKMKwuodsKUVsbzY6+aILNci6++yvN4c4sdFaZ4pEOGO9zDXV291oCVPX4HQxdOeD/iRuOlJ1znEXSEymyNxX6nwIxRvay2sHy7Bv7wLu4aWStbjgavm2qcHgp34CuRBEeTgXOyvvv/9+hBlKMNcFWxseL+SjHpO9hi/eSzzy8rhDHGwlJ/HEB+LnAzMoJ4xMjrEp8vgfpYp7r51Qunt5Q57Yp9dKD/dWkQd5vbDCHwntGiPPprFdXKKnBlIg25QwK2cSyMKo94yEx3f8l7MAaq57V33Q4QfngmtBO75PiewAN61Pkb9VQJdu6WhE0tay3Dkodw6cutfM56bI6wiuelh+3V3iuGdi7mI5vij5YbxRDJIIV4pFc/Zi0bS+XFeqXekC0kZN8EUCXYA07V/uhXgcKQlG7khK3h3KJOQzg+H0byNuqHvIlnKGBS62pqJx9sA7zKt8CIC6g/vuHKo3h3hKw1hPoRaI7Sz4t7vNEhYCU3fO55vKsxM3HsuSnqxzTsXpU4opkg5V5wrG34rG6dN9LCPbutoFlO4TRyOlOBv6SGVsU1FaW3cDTMzHD9Apr8bxP+XrdC2bfGjYTiwFvgUaXzfcKy1W+qQV3or1UvjK4yOYe8WWJ9IlDdSSrq51c01kcL3STBSDGozKserZzcokhZugYfrM05J/5cx9NGIs2qdEoyqEOV8R324YDUsS0x2hG8Ugm0UCQVabXbnXlRwEYbTi1AvK3161jVKF0L8qm2y6wdowt5Tdup1EaScpv0e3UgtKVXyUqR7L1WpBnCW2BxmipgEddj4xdmeD/XAdmscQUefcYHT9NITk8pdCG/l0H/OXpjFfSqQXZ6iFufnUi4o27N0NMBCN4zKXv+gvvrnGOJ33ys6qXAAAzgLa44uGbVRxKDB9DwDAVETguMxr9ERfd/sclgsAwFlg7fEwFADATJiPrSIAAAAAAIAQgOMCAAAAAMDCAI4LAAAAAAALAzguAAAAAAAsDOC4AAAAAACwMIDjAgAAAADAwgCOCwAAAAAACwM4LgAAAAAALAzguAAAAAAAsDCA4wIAAAAAwMJwGo5Lt34ng94Yl5atKY6/2rzezz1YX19C6OiPsbcf0atXOp1XpwrxM9jNdJMsN5s8NHRncWejceOS5dtnW/YcAAAAAAA4E2bvuBx/Vf/zlRrqto+XrX7A0tVG5ypLvPk26nS20vRz+wilV0IWE+CsiPIMfrI1LrFbPm2/It2CvZb6ixvjjurNAAAAAAAwD8zccRl92Uev/0MBfbr95dN1bXlDS/235rVnquzz0tWZLHh42V5KXlO+Gxz8ebVaAq8FAAAAABximTvjztZZS+Exa8fl6eFDlPvlpThKol/9ZXTjahw9bZfu9n++VV6h3x/9MfbbZ4b1y3tsvWTlxdoXn2zff8HdwbEn3vlhfofsKNHtnqe7mU9I+Pjrd1DxDbqagn2grzavHzYt+0Es8/4XP8yKvtHRt5UfIZS5Q7K6tjqsY2kBAAAA4OKCvRY0Z77LjB2X47/so2SVOAcv5NCnh8dX15curf/8SuzzQXmFHHnpfv6o9vOtOBq4NyyXOxvYWYntoNpvsL9iS/w4/2163HmVHog5Kt14tdx5A3lbRTTBb5PDzlbDTaCflenWP+ntbKhB55t/TT7YGi+RPSPBfyLc++wvM1ERAAAAAJwRP117wedb5rXwz3Piu8zWcWH7RHTd4tLq6yjx+wE5orvyYu3tb7ul5TTdmimUlJsurde3xuS47p1d4rsYEz/b+hk96ou/Rd3BMUqrm0rPtn5J10vMCchCzv7rppWYYpptJKV/cqX5+dMG8hL4ty4AAAAAnCe414L9lblad5mp4zLY23ncRHebO/wKc0GWCzvd7ftPq6jbc9wajaWr1Z1+gq61BCeeDOy1fIp+udWAN4YAAAAAwBfmqXDfZR6YpeNy9G1FOilC1jkOjl5Nr6D4K0n0q6M99MNSXV7zOPqqHWeHZ58ePnxcfJ186yYmZ2WikOoo/6P0WPJa3DeSyOpOt/2z5fWlp+3fPqr9/NUIigMAAACABURZXJmHtRbGDB2X7uePiq9vCGskl1ZffzbPDqwsvZBDh/kfvTFW7lm53M/cibHPxTfGbCtn6WrpR/SXYPzWSJazxU8y4uFcC6Pv/4qaj2JN5096dNfLpPzgyeb1O3lW+kq4egIAAAAAcFrM0HFJl7Ya8pX4jXXXU6EHWbxvlsudZffDlnpgllL7ybKWWPqMi+MuizGBJ8MNJHPJS0N/UUYRGwAAAACAOWERfvKf/ITdatV3HQUAAAAAgIvAnDsu5FhM/gvy6/vwkyoAAAAAAMy546LsKAEAAAAAcKGZc8cFAAAAAADAAxwXAAAAAAAWBnBcAAAAAABYGMBxAQAAAABgYQDHBQAAAACAhSECxyWTyYRJ1ul0Tl4WAAAAAAAXmWhWXAKdkpDODQAAAAAAgA/zslU0am8m8k4AoVpnXE7zb7q7m4NCQ/gBOjGpmnj2yKUXW0MiGr64jaqNSX8lr7sbO8hq4vMSnMxZwkyFfCC1Re5dmmZ4rpkevzVkXSZT45T1BYCFgHQhJPYI0lP6pdMdaZxyF66jzcH4w8dLQ77SWHra7QlExWwdl++++25ra+vmzZv+yYgB7+eG44Y7S8d2PaNKF3L1ve66ZGN8SicW3B6dcscuCr0SC7CJqtVpshm166jTULvOqL2dT3XGY+KXxLbbpKTubqbCehm+tIkvdVBst4v/NmgGq++gUqvV9g9H60ateH2+u8uVThqA5hgk8eINowAwMelCq7g9GKG028sP91GrCrNcGM58/MGpiNeJR1BDvtpYCoPZYjJDx4V5Lclkcm1tzTchGxa4BaXLY+nHcuPrJbRp8U7iy6nmwbCBzsz64uuNBukgk9/Z3cunssZfBS4mE+SfdLZG6zY8qGBXifY9rJoG+bfQwh4LSqcNmhkNerVsI4s2LSMHE5glLOYKcfci/D4xALjEV3Nom/cgMkDlqjDDheHsxx8hM9yMxX3BASVelTqWAgvJrBwX7rVg7/sHP/iBX1LrsMB3UsxLC/RebP3JAvHE+ylUqTRrnWGy7iw/ukuB4uYOttoq2nYT12qVSsXJiaRO8Hxwwk5uP5NvSssrJuHpQ0BV+NMpy9tEUvd9nMrhB5NsZzcWY6uqNF2KSMyHTJpijHPooVRWlgD7a5WDbjmd1jSDlZnKNlBigOokE8TWsmjJbF0LV6tOn1rI2JzYFp45xPVx/LmOaqiXzKXyeWdhFWs232yiJiI6xBzuxvKw5gqcS0TPhQ9QSu9G3nDB+wDpOEmhpyuDj9vTLQOUeciaaj33jJiv8QdL00yVGt7fA30sBRaSaByXhw8f3r59+86dO88//zyayGvxA/vEjj2qiy7NfEIYDOKojZq95HA8bpDOwTZa3FXCBN96YU4GvZ0lxp/K5TK9wracqu5XVXxzHbEP29qjg1c66U3CF6P2trD4ud1ebSzvscKJNHvimiXzuNLr4w7ZEMK9mXkttK7V3GYilqdVI1LjSqKDzVimibw+mkgWe/RJQtGMM24g5I6766Vavn5YxTUgnbhWaiQG+8hVamOIaEnOmFpoFRPUHaJeVYm6gH0s/ZhV57BQbRURHXRGWOHiV6e+WwcAs8XzXFy/Revd0nAhdJwx7wojbfDxrugDlGHIohP4AjFX4w/RNXLWVzj6WAosItE4Lmtra/fu3cPOCvZd8J9ReC0K8tKCsnxB5vbcalzai3ZWCUcDw+40S4xMTzZOPsIHHfmMi3eddE2CV0y1mixWMjGyPNkYr5srVu6kYpk87kVpV6RtVCVuFTk+0642Vj1Hy7gVLGqGSFBpNiu8/PX1dKFFh5BVVzUD4V6yqkocOPc4TakWIyMHYms9A1zTgq1r+3wFAIuP67mscr9F7d2lnDuSKB3HRT8a4ztAGYYs/IByGnWNijkaf0bCWo+I71gKLAzROC7YQWH7LthlwX9O5rXI+8nWVD4nXaZEPh22HUmemhtPeyY5bxyzePhk+RKhnrMTK+ybuXpZTrmOlrZlS/E0Q5532JMach5SiFZpNl3kLnebpHaP0+B/MwfdLOq1CmV5iAGAC4ah48hdGLsy7ke541xU5mb8sXkt8aCxFFgUIjvjwn0X/HnCtRZlt1N7F9HBXVpIBOTEtmSc7c14gl8xkVpmdjvsN1HypHvJpC/k2Vqn8/4kWe2kHag8bPXE1xT4qWLEloU7B84bROQ6W1rlG7TpbCoj1YnJy5ZkRc0U8KOaVwnPHyRKyeSLraHYR6UXPMmZteQQsQE4k2FJjUMMAFwUaA+quw8Spt7tpRU7jpSBPPj4DlDmK7j406vyiSAPXfMw/uAHUjKmmh5xTWMpsIhEeTgXOyvvv//+FDeKu51IOugm/cwJWVqI7XalYyVaTtUWziiGkHtEBHlXkHLSLV1o1fk3+KspJNfqQY7bxpBbfBxVW/uJhCuO2JNIF61v9prNFN0kSndSscQm2YMiW0eJmKsIUoN0Gfs1LFfnCj26XxYLxpqJJZA0OHiDJB5yEXK3xwyy0nxZP8dioWJy1fwYQryqTKKpnOwBgPMJ6UH5fffFAa13I/FdQmPHiWuDj+8AZbhSXJytou5eHuXmYPzBXhD+bybmbliRQXXI3/PQxlJgIZmXH6BzdztFvMO5ypWGkpC/YmfMiF8hjtByPJ7mifW0zlc8QzFnvSzhT/cieZe7LH+v1ctJWWihvWV3YVV4CVzNQr9keJPacJP3XiD5sO5dbPjcI5wuVLRKP/M79K8A4LwhdhyC0mNEy1eO5Yo5CIMP8h2gfK4sANr7xWc0/hiHQm8qMX0NLBzROC5z/Iv+3o8oUud7jkzWWUCa+HxYd5fspM3gYYGqar50BADzj7XjzO/gM4/A+AOEJgLHZb6jJ86zg60vKc3urnAZz62qAGBusXYc6FGTANoCQjMvW0UAAAAAAACBgOMCAAAAAMDCAI4LAAAAAAALAzguAAAAAAAsDBE4LiFfKZrvM7wAAAAAACwA0ay4BDolc/y+NAAAAAAAC8O8bBWJ4Q7liCDd3c1BQQqpKCQ9tRifERRqqYiXF/0btfQQG5HAflNCkFyRR/oNbiqKG6/aGoRBg0WInF5+TUVI0vyJ2jpibc+HWfqL5F6OZXqh6jm1qk/a7nOJ8iMsU9TuXKolkDmwN6/p9Hz5dxAdepGZrePy3XffbW1t3bx50z+ZExNr3HBjFcV2PaOS40Iz+Dhij2kePd7ghUuN7ZZMZu/Xo4wVKRbd8IosMAkqzmi8Iz9JSZRKYk6zzBV5xKhjJOqIJxkJA1krJfiNs0NXkRwIM0ECPtQDlWNToFHbkYl6RmbpLxJr+Fpt3xbF1NOVpurAcf0cT8yOrz7mTn5ssz2jJ4pzxpnbG07lNp2eb3c3w8ZBaNLFZoaOC/Naksnk2tqab0IW651bkPfj9wy/uNBurMLTtT4acGTymclUkVwu5fbxYR/VasXebH5EHzsfxWTBVx4hviMWJVfK7deZZMN+s5ZtCKESZoeqIiJ2rsBjxYzJWHSC7E3ajkpU6bszMUujSDSsVSOLNi0zCTc2XdUXl1G73nPiBjG0n7MHLJy9vQmZaSGgSTTH1pC2KzTpQjMrx4V7LcGRoonf4gYyk+BBFs2PkvReOh8TT7yfQpUKjb9Vd5Yf3aVAcQ0fW20VbbuJ3WjWbuoEzwcn7OT2M/mmZZHYnZmGwnIyLTvfbKImcuJ6ZcTMabhEvSKr2RSLodo96OWyuf2e/FAiLnkm/KrJa+kI7NUaJ8ge0M/NZrFYbHIJ1UUXN7g8FqWSyo5Xc2hviKvq+DxMKqI9lEvl8xVT2cgNYymVXk57e028TfGHenLYWD2UxVZEUgKH43y37RoWmg/TNG0DGbQtSUulQKSmUh0TwqOe1zpnb5Zqo+si4c5FwognBoh6oYitbdK0bJ0T51en1VFVLW0QktZCNdRLCmoRrJ1GLj3cjeXPxxq8dUTSDDvgihLV9QIwX/amhoAma8epLKyxnAOicVwePnx4+/btO3fuPP/882gir8UP77ft1UfJZj7hDfmNOGqjZi85HI8bpHOk6DKhu0qYwFNdii8cbrPbWWL8qVxmvzHN1var7ldVfHMdsQ/bxkeHRJLuOqzzX6kmORwWqq0icma4uPSVI7zhmTiRpH18Gc+khQLa94oQljzZumYnZ68m2mO1JH/vdceFgVtrmiA7HrZ6bLod5RDylltleZxKJVjs6ThK0b/UUbyZ7+Ocx7xeq4dcw3S8Ye6FLF6hVdwmTz7Dgwqq1LrldII9b3Vlscn4I4skBg6ns7OPhsXmsy0pG7SNpRWWrLfbq1WtjpbJ56zNcjlIe+48gj22HKKGvF6q5dmyGhnUa6VGYrDPa6OoGjda4gC3VZqFvqO+l6AWwdpHbc0qzssSPH92ICrxTF1vR0PLOt3hAjFX9kaGIeSsr3CK6GAzliHddOH96wtNNI7L2travXv3sLOCfRf8ZxRei4L8KKksg4zwFRo1nW060TTOKuFowK94FN0Q6/qzkZOP8MHMsN+kPdTn6cr8lfZMHKcrG91+JYWdhYFw+6EgOV3XHLX3bdVEq8liJRMj66AkEOuoXVcThFEsE2WE5/MkEZdN8stuTbn2WgVRn6Kc2PNBRvHSbIWqe9BrdVr7B12U7SO6TiyJbVaRGyoXTwP4AU1UsU/z2dC1TQZUAq9erpRT6xhKe6dvlokg7ZG6VZrNips/nkBIUHIypay6Mgkmp6i6gWedGJlJEJ5HsmOc0kctYTW2aLAAOsy59G1HQ8uy7nCBmCN7GwlrPSLu00HIYzXAnBKN44IdFLbAjV0W/OdkXkvc9c59n9H8jhRMiXw6bHuSW53tE58crF9pFcH1723XUa1Ulnv1RDhDADnYHCOrqpPc6ckTX05VDvZqzKdgk/whW345KelsrT5oo16uUF7u1wfdZC+1TMqQxHaHEXNbs52sKq/adM1n1Lb88IUdxND1OlOzjAdojzz/8gOmI3fxkHa3LnLW0YxOnrtpiP/NHHSzqNcqnMQ4F41wIxKgMjf2ZvNa8PjmPh1ox1+AhSKyMy7cd8GfJ1xrUXY7bS/fuo+SiYCc2KK5s70ZT/ArJtjsSRdQ2CpDKOhWSGkcR13fHGxfqRUhUuf70qqGXBe26Jzs5KzV5D21TPaEBqigJvAbBYRndDJykGP3zFMhfkwmjx/o/ZShCEOGJ008Ukg2lSFvScZRnHzK44lWGGCY2N4w4ohUGAivaJODdUlZlGmaT9U2GcHybIXaeSVcd/vEw7ZBrRmsoqjMMlh7+8Ld3mxMpKHNGlcy01VN7SHDkvqsY503sO+XiiX4q43Ylcw3iy2DYQvtaL6Cu8NZV+bUIAtS82BvpLmwA2VyO8kopI5MwCIS5eFc7Ky8//77U9wo7nYi7/mXH+TkyUooRl6I9cup2sIZxRBbtye3eleQspuTLrTq/Bv8VYCU3gkG4bCtkgOZ4TIJ+mshPpmrFTEfqsdXO+RZ2i1xPdH2tofVaqarrf1Ewr0QjyMlwch1XAQJVcWSK2R1u5h0J2E8juC/Vv0fSkRhikWzeMhZN6cTMsm1lk07CUWxVRUNx4IKqA6wsxisYVMdJb0qb615hTBx9ReXhIYmdUzK95+RWQZoL5ZA0mThTbvYVUMoJzerZG2OqlGABXA9T7LCtxiky2NPHcVWp1Ukp1V829FwpXiRtoq6e3mUmwN7w14Q/m8m5m5YOef4nfc8yp0Dp1RcJuwTLSzz8gN07m6niHc4V7mivpcrvj+sZ8SvEEdoOS681qundb7iGYofNPmMl/mBUWS+I1RF3OtpLzeWY0NIKeeuXlD+9lSk5CnJw25bl667eaiy+SrHoC7BXxAa1qJXIZEqbtpHw3511F8yt+pk3VDHE7Sm83kWZumnPZMGxvzDunex4XMPPSY5jisp+Wd+h0Fji46sjvUG/SeMqdtt+lyjvV98RvZmNH1vxDGOf8CiEY3jMse/6K/8/iWYLDAPLIJZUhnnVTjg3AH2BoQmAsdlvqMngoMNzCGLYJaLICNwfgB7A0IzL1tFAAAAAAAAgYDjAgAAAADAwgCOCwAAAAAACwM4LgAAAAAALAwROC4hXyma7zO8AAAAAAAsANGsuAQ6JXP8vjQAAAAAAAvDvGwViXHl5F887e5uDgpS1AnlF3XVH9idEC3/kRhbmMpFA6lv6wGHvR/jkMLraXXRq8Bv77X0iBo+iFlPGd/UVF8hz2mznQ6LMJ4Erv5nE22YNaBQX0Ue6XfJqSgp72fgzYEpNEb2UNUhZdSNR2iyEzVWxNoOMK0FC8er/NTOFDo5adMvJuGHtanNOEixXtPp+fLvFswcAYnZOi7ffffd1tbWzZs3/ZM5QVfGDTdWUWzXMyotnHLE+OXvRL0goS20n4F3Zi76i4ykApuI9lVjXYxFkB+JrNX2Jw3m5o2huKjYbsnU+/w6tqm+4rhsDxMflgnGa6MwxWLPDbxDw72g4ozmANICpHVx5pssczUwtRCJjURi8SQbDXqoVkrwG2eHriI5CmOCRBuoByrHpkCjtiMTVTCtk9vVaSL2bvbnZntG3vM5I2BY8+xQM+NAPyLcIIBTuU2n59vdzbA+D0262MzQcWFeSzKZXFtb803IosVzCyK/QyR+PYMAvBK2/EkH6PFQO0j9si58RwJv9GMkLkfCXJe0XsSIhF1uZNHm1GFoaeSUySeDAH2KAQWnY5IffTcJk8ul3HFv2Ee1WrE3mx+Sd0J8+8lDlFE/rBJZsCi5Um6/ziQb9pu49YTf6Z8dqoqI2Cx8t/ur6rpXPQEmbUclqvTdie3q9JB7NzL8nD1gIWhY4x1ZN+OIEDLTQkCTaI6tIW1XaNKFZlaOC/dagiNFE7+FRjxX4XtAoRZd+Lqj84znrUPSCwh76/0UqlSatVarlxdTGvP3CTHKZFZiiyaSxcpBt5C01EUrgoSAzzZQYoDoVOiJh5xFzJF2Rc/VnQyGwqo2CUFWzzebqImc8GLCV25sSB998uncU6BzX1fJKuFJWGx1cvuZfJOqdPWQPBjRzbVcKp8X12XFvQNH+wZhVrMpFle2e9DLZXP7PflBTVwG9mSg9ZYFtpsETpA9oJ+bzWKx2OTqUuVJZ2tsusVDXio7Xs2hvSHWu6MkJlWImlZ1fXp7TdzOaQxwqr+Ej30qwdRprHJrcydEK+J1lDBoW5KWdx+5jgnh8ddrHbtpMZWN/NpLNQ+iWCexG3g+yPbW42qjT4F1RDJ0Ct8rSvjMC4A+rLEA5nF3XR23VZ2aimrG0uYr6QmohnpJweSEYY3q9HA3lg/Y81GHabJOmsougusMBBCN4/Lw4cPbt2/fuXPn+eefRxN5LX54sfhCLLp094ifMSbzPQlJWhhsC+uQ2+1VbOvNXnI4Hjdwp0BCSmLzav5uIOiDbjlt85a8GMpMxOUU6vtURinC6eB42mDB31e5eO76ZkG7Yuid2F0iC/3r/MeySWUPC9VWETmTSlz6yhHAVl8KGQfidDqkCvVKTytZcZVWcYo6Yh9wZVbdnJr5Ps5hzItePXTzZFOdUTOsWnTcW8YzaaGA9vl1cRmYrfV2cq6WiJiywEgzCbFG2fGw1WPT7SiHkLcELcvjaDhBHiTLKI5S9C91ZvOpKR2DkUGfhVZxmzwNDg8qqFLDlpZgz6CKJev2KQZTp7OzT3OLbWRbZjdoG0urdx+5jpYJ2W5aLIJ1295eibZuHm4XQKhcDmN768u69k4E95OZS642YkJrVqEWTtNfINRhbX29VMuzJUviRNRKjcTAC3GvmDHuEAk24tJQi9SvFUxOGNZGba3HGQybdDnkrK9wiuhgM5bxeRgEFoJoHJe1tbV79+5hZwX7LvjPKLwWhcBFF7LikYmRhUASiXTUrjcJ7rfFXCmH/0PDpcspzfm7sdDrbcOhWkazL617E2ceZcNWgfTiSrPpRl7PVVeRKx5d38yTxRv1isGJGvabdKDwecgzfyXXVzo3QwcPtuWVdktn6616VkzCkfBBpNgqiBKPvDztmkFOkWhv2O1XUthZGFhyoGu9o/a+U7Qu8KpqEmoCG6I8TJQRns+TpMJskl921R6iptjckFG8NFsu6x70Wp3W/kEXZfuIrp2HsE83ADGeGvFDq9jePm1kQ9c2MU+9+8h1DKU9bd3DMxVNIaOBwTzcLuBXL6mCxt59Api3zhwpX5kNtWBNf4HQhrX19XShxZ7MXN0J3Vkx4wb2cmJk8EHYb8mOcUofkwuyxpGw1iMS/DAILALROC7YQWGLudhlwX9O5rXEXe/cdwlPeJJzHoKdjUtn1T6epn2AnIaNkWVF1aPGMxzPSUzpppGeFNlQGMd9TlrMlGSWN0/dQw8Jn7p4RZAHE37yjz5NDHNSUmU5x3jFq7t8zG1bTGH9yrKIFXcGD+Xoh29WJ0cTBuu3t11HtVJZHukmzFU1iWnkiS+nKgd7NeZTsEn+kC2/nJR0tlYftFEvVygv9+uDbrKXWiZlBNunmAV2fqq8atO1kVHbtu4TIrvoD6WFr5e5d09GuBEJUNGHNaJDqswuctYojQ60uyGL/80cdLOo1yqcpONbvRbcl8WHQXkEBxaJyM64cN8Ff55wrUXZ7bS9aMqf5ORjfmzRgZtqmWwADFDBW6Ng77TyeUtJ6Zmum7/nIJDTr/tMMk3m9VIqltj1drXJOV4yl/nWxSmiMHCe33n1tw/6qIlYndyN2QFf1NFP1Dg12c6nSuM46iLEpjyqDSFriu0rvb7sMh08ygVcD7bULpTuU0oIaDtblu9VYUjafF9a1VBzoCdCOjn9K0dg3STUGvmMjMKyAVEIeRWBeSrEj8nk8QN9yJrSN3XwkK2JRwrJpjLEbuIoTj7l8UQbbJ+FgfCKNjlsmJRFmaaNVG2LS3xK9/HuEXphSNPyURFWCHH6fXZ3wtXLqr2JkHs3Pe/WLLYMjSjIbL6Cm36K8hcTsiClDGuu55KgXUZsCumXBrgZ076WYUl91gj98TmeSHqcNqoBC0iUh3Oxs/L+++9PcaO424m8Zz31B1rIk1yMLu+Vh4PNWIwtHBfZ8f808TESMedCPI4aHfLQ5aVo81zklKIYNH9xjHYS75LndfEgCBGxPOYlCAvilrqIRcQSSOrFdNrAI2MRsToxeUcDVOzVxSsMQQzvsG2rnnAkIYnppJJJ0B/oUL+S1K7Vl8COGZfL1dYmu9Mt3SercNDXoHgW8paWKoz5RQPy+hZXOq7eekJYSFMF1kxCSTByHRdBXQZjoyv+3oIXHlvxX6v+86EoTLFoFg85ewl0Qia51rJpFGyfw7GgAqoD7LkGN7epjpJelTf5bN3HQ7A6UsekfL/RtGwqchRiNw/Nwv1yVbQnnn1WPthJy7270yrWg2Q2XClepK2i7l4e5ZRhjblw2A1GKCd3GaknO2aMAnoXt2Hf1VPsBeH/ZmLuhpWz6++851HuHDil4jJhn2hhmZcfoHN3O0W8w7naFUNy7ZJ3lpTivU9rKkvKX3zHlSYmHwz3KCX41cX3HuLstNA2qo6Vt2tz6hVL1vplr5QAYdT6CpOYeqdeinMjf8XR/SD+V03AsiBzx7I8PBmFUfP0aVZdPvWC8rf3irWxISVjW5euu3mosplqapUGSf6CYOyB9olUcdM+ze1XR/0lc6tO1g11nNi05BJ9VMTMQ3jbPLztaVJxzeoffJEVsM5LCWxW3/5/ftHeL+bWLXYgwQBMFkmP5Y7jSkr+md9hsEZBDt3QvRa3DNrAYhGN4wK/6A+EQPktUhg+ABEwj4sNbX9oeCAMETguED0xAvyefc8N8LAD+ADmcbGB9gdCMy9bRQAAAAAAAIGA4wIAAAAAwMIAjgsAAAAAAAsDOC4AAAAAACwMETguIV8pgjO8AAAAAACckGhWXAKdEnhfGgAAAACAkzMfW0UjOXQt/1O6TsOs0Zjm2zzcGqWG3aaMHCXAFjZgZIqR6/1+hBQRTgzrVlMz73kpjXnq5eK8vFzcukgx3XsBpQdqSQnRIV3XNFYfqPEjhWSepEblyBniL0r9BP8JDreMVquX5z/qTe9Ieb+hLjaPrk9VWrf6AbWQfkbcr8SQ8LrLvzdLYw044upJPIWxS7ZG8SnXmqa7u6m1GjIYj1/OehOHIYzY5wzlZ2WmqPsFVBqaC2tU+6DxO4gOvcjM1nH57rvvtra2bt68efKsnAAUdCYwjCPDlhDss7tLe04oq3RmtLETciixiWjWznQzbrghh2Je5JKDSq1W2580CFux6IWGpFFMkPB74Eqe5tJ9Ir94NPPbhuhiusZGarRtOY4dU6ZFOaYM2U8wSD+mPmrzMGYkjIlXfxJJu1ZyizboU8xcDFsfUAsxcJpfieHAVlRhgxuu1SYPPzVq1/G413KTYEOjP7q/S+MDJNqbrsJcJSbsjTIx5hjpAQbpjfKmJvYv8GJOvUgeFtifm8Zoq4DKmVvjSO+D4ihn7NTAojFDx4V5Lclkcm1t7YRZOUEMfVwRFkXEnTtIwMNQBolnISFfEj+jHyPhNRI0CDs3avLTSPwWEhq4kUWbk3ouuVzK7c7DPqrVij1PDDnPkbn0MFHHiq1WKm+PVOehhvAlgaZZAGT+W9025YSd/0lokfphldQIVzhXyu3XWf1YJG1z3Y25eCE1/WsRrsRwkMBvrSGtq/Bj5qP29n6KN533hRux3PsNf9eLSkzQKIGYAi8HKtD9JUNDEwNGZMtHhp+zByycvTXG9T7II22aOzWweMzKceFey4SRok34RPsUYK7L5maxGZzWRQ8RyiIMFpJOEHbjLSk8BSYGqD6p57KaTbFwqd2DXi6b2+eOi5InOrSWHqaUQmt/W5nbjMiP70qIbmRXDo0ZHAo3Wj2ucCWVHeMS9oa4JDJkJQteKf76lFIH1SKwRG91mj53eTtIYgQ+shG0OuihVFbblNnLp0rDZH1bFVKPNStdMjSKIol0xQ0x6F3ha03aootqPMLOFFu462D3jT6nak0s7p+RaqMa6iVzqXzeWUrHFc03m6hJ92cxh7ux/EVYZR/ZO6Bfq9nb8eIwX9aodsuRsVMDC0g0jsvDhw9v3759586d559/Hk3ntYixl5HQ4d3r0oQpJeZ2yyLD9icL+umF/aXgZ3bU90nudEw8FblB2ycoK5Gk3XkZ+y2FAnLDGmt5rtpzsGlJqsJ6KcWWjWw3OhqTH9/FsNZ0mkS+yvEy9JnFnHWIBHkKK6M4StG/xGnBrE9N2njYWviXOGpvExd4nOaLyIVWcZs8kg0PKqhSwzaW8B4Ei+hgM5ZpekV1d8nIqkZK5ueX0tLFbXKGKe2uk6mNokuS4FfYsM1Wd7y19O32Kq2jsuiiKXC9VMuzVScybNdKjcTAC6CtNDGufYJ1LBrcDk8NiTzuP2SBj5R4WKi2isg5JoWVL3wVxjM+F/AjEURhq4f2VrO34wVirqzR64MCWqcGFpJoHJe1tbV79+5hZwX7LvjPadZa1GMN8hdDPAS0vWOJPmfllLk2kGZf2oYgPjnKWlOT3ldpNt2I6bnqRJ5LnK4AdPuVFJ5UB9Y8fRwXq5YkSOx2PLeJTo1ZY8rjuxvWFg+4+FGo6qucUMcVWYVH2EdLEmGY47bcb6bcbRuLPr3MyXTg+azBtfAtkW3BpR3J2CIy24jqHvRandb+QRdl+4j6LdjfaPaSQ6IPZ0oqDOq9VrWsbdlRrVXbm7Fd8VzwvnqoRWoUXZLRgF8h3pejG4KbAdeOWF+DAtOFFvN/3TIGghRyEzfwvBIj6kV4psiOccpiq2AbzH2+OsewADqsr/m2mrUdLxBzZI3GPoi0Tg2uy4ISjeOCHRTsplQqFeyy4D+j2SFiFHOr5DETm7+8kREJ2h6ocxginjCvp5AHCn5ijz4FkOXQicrrbddRrVT2OrCeJ6pOsZojQ+a27b0UbooAgQxnJviGS8GsnEnkiC+nKgd7NeYLMK/ikC2GUIL1GXcHM78BRqxFQIkauK71QRv1coXycr8+6CZ7qeU4k5yZnmslXdmPaCLJifIsyTZihm8UAfNToVdfowLj9HG3i9xlJku16Z4a/jdz0M2iXqtQlieVC0x8muVUwNydz8IabX1Q69Ti6AYsEpGdceG+C/4cmdfiwbaBqOsSbbalVCyx621O03O9iC51Co6Ss/1aGDgP8uze4J0dvTx8T75Pn/6dK+QpTs2TeC566eHeKhIrRoLEB22xO4/vhYHwJjE5wpYconjaopwJIEMROcfPbiNeRSZfbA3Zl6a6a/pkg1nAwRphEcKnRLqtzg7Jervf6WwqQyoWR3HyKY99BafcVEZK6zwdKq+ZO0pz8/M9j+U1ii4J8ZWFK2SUx0Nr3qm59KI3ElrNpEA6VyRoraU3sNp6EzvqyrCkYU5/XwjkYYE2ajNMqxnb8awrc2qYu/PpW6NPH9Q69bRlAGdMlIdzsbPy/vvvR5ihBHNd8GgyTCpHPSb7kQXxXvJAWx53dmOxmJKTuAGL+EnODMoJvc8ZxxR5/LdO1fPz3b28Ic/hWC990p6cLrSKFX6Oxq4x8vge28UlemogBbJNCbNyJoEsl3vbd3hgwn+xZx5L3Yk+1RzokeBEcC3okORTIjvATetT5G+N0AV9uspC0tay3Dkodw6cutfM56bIi1auelh+3V3iuGdi7mI5ORch3sEbxSCJcKVYNGcvFo3rG0sgaTrwJlbs8yDkPFuapPWaWFaQVsPlVDOTaJKTkcbvzy2K5XdaRXJaxb/VbO14QbB051O3RuwFIaUPkqMG7Oh9cKcGFoL5+AE6/o6c8qd8ne6Ikg/uo29QPsYE+r1sGzs4rfYCneuFWOXxEcy9YssT6ZIGaklX17q5JjK4XmkmikENRuVY9exmZZLCTdAwfeZpyb9y5j4aMRbtU6JRFYIvqYhvN4yGJYnpjtCNYpDNIoHtK14VUQeCuKZ76EHIcVxJKdinc4f+1TlHVtZ6g/4TptUCutt5xdqdT9kajR3D69g+XQpYHKJxXObyF/3FX75knM458rMqFwAmhJpqceL9PwCYAWCNQGgicFzmNXriWbnW4NIDCwKYKjA/gDUCoZmPrSIAAAAAAIAQgOMCAAAAAMDCAI4LAAAAAAALAzguAAAAAAAsDBE4LiFfKZrXM7wAAAAAACwM0ay4BDolc/m+NAAAAAAAC8Z8bBXxH1FX/pSu0yi8NKb5No8aT6lhtynDI6JTxBDpPgV5idkPr0g/DitGp6+pmfe8lMY89XJZBOFy2vtbjHaj5GksPVBLSogO6bqmsfqgoMgsJPMkNSpHzhB/UeonlN+uQbVWq5fvi3EHye9wu7+hLjaPrk9VWrf6AbWQfkbcr8SQ8LrLP8RDgv4mHXH1JJ7C2CVbo/iUa03T3d2UWy3QriKFVU1QhiJPFPoPox9/GTc1w54iE0VaNeTCaXFSbZwF2lBmxTjghCFILWofNH4Hv661yMzWcfnuu++2trZu3rx58qycABR0JjD8+vywJQT77O7SnhPKKp0xauyE40lsIpq1M92MG260oJgXueSgUqvV9icNwlYsFntuUC8axQQJvweu5GkuPVSsomZ+2xThT9PYSIoLTUvhRfLIqRblmDJkP8HQdX9amxbR5mHMSBgTr/4kynSt5BZt0KcaBNsNAxlQCzFwml+J4cBWVGGDG67VJo8cNWrX8bjXcpNgQyO/Vo6TEI0l2puuwlwlJuyNMjFKNG+K0a5mMuGRhiL6wJlvsszV6OIB+k/wG2eHSUVTZNIqbgsR+ISw0EAAAcOjZ5mmAcc/63BWPdL7oDjKGTs1sGjM0HFhXksymVxbWzthVk6APx9XhEURcecOEgwwlEHiWUjIl8TP6MdIeI0EHam4UZOfRuK3kFjDjSzanNRzyeVSbnce9lGtVux5Ysh5jsylh4lVVGy1Uvm9EOHa1bjQWIQii6jMf6vbppywAzgJLVI/rJIa4QrnSrn9OqufFGU6SJ8kFxI51ha2UKxFuBLDQQK/tYa0rsKPmY/a2/sp3nTeF4kkm6S98AHuLJ6YoFECMUXzNtnVLH6Vn1hIsuArT4D+4+lTiBVgDng+aSZSfGjSH2loYyCQwO7sWqZhwImGuN4HeQhoc6cGFo9ZOS7ca4kgUrRvxF0Oc102N4vN4LQueohQFtGvkLSOVCR0O54CEwNUn9RzWc2m2GDYPejlsrl97rgoeaITjZOrhdb+dpiBW342jcvxsJFdOQGBmsUSnGj1uMKVVHaMS9gb4pKkGTBQn6b50lqLwBK91Wknbqa7J8DXipyNoNVBD6WyqjjdvXyqNEzWt1Uh9Viz0iVDoyiSSFeIr1OVrvC1JsOKgsGuxOdacdUce/Xb/RSqVGikurosAC/NKUySMHtAPzebxWKx2WyiprMhNYn+mVRVtL2Ncql8vmIq21D3oJY6lMWOZNFF9Fy436I0B+LK9NpQ3EaUW9mVz6/d7ZawKKhDmbBPypaRO9iZpZapDTji/hxRI6qhXlKwE2yvecfwqEYOd2P5gD0ftVuOjJ0aiBQ86Z9CKdE4Lg8fPrx9+/adO3eef/55NJ3XIgf+9bqre12aMKXE3G5Z/Oj+ZEE/vTjCFPzMiPo+yZ2OiWcL8ZEsJIkk7c7LeH4pFBCP3KzmuWrPwaYlqQrrpRRbNrLd6GhMfjYV42GzcdlXOV6GPnvFzjpEgjyFlVEcpehfol9m1qcmbTxsLfxLHLW3iQs8TvNFZHdPYHhQQZUaiUHtPQgW0cFmLNP0iiLhwYl1taVK8nMmaeniNjlrwmN6q42iS5LgV9iwzVZ3vLX07fYqraNhRcFiV9KqOVsa7+RQs5ccjscNUqwsANpj5ZO/saSFgSRhdjxs9ZwjUzmcHV+xn0T/Ls087qVkGdHZB1w9NNQ9ZEt1ZbF1k5gOz3Nx/RatOXDfY8qs4qLZ+CTECJRbmTlt/u1ut4SFQevO66Vanq3BESeiVmokBq59agMObmFRjdSxFuzksFBtFZFzaE8zIdMjD++DAlqnBhaSaByXtbW1e/fuYWcF+y74z2nWWtRjDfIXQ9yB296ZO/2Mi5c8GeooCKfZl7YhiE+OstbUpPdVmk03YnquOpHnEqdPoN0+fhgto4E1Tx/HxaolCRK7HQ/colNj1ph6RsEJa4uHS/woVPVVjk8TqBUe4bk0SYRhE+xyv5lyt20s+vQyH/E5IVwtfEsUjirwRWS2EdU96LU6rf2DLsr2EfVbRu6s1HAnlMKg3mtVy9qWHdUanrtiu+K51H31UIvUKLoko4F3jALP/o5uCG4GXDvaioLZrpSjGXRpfNTeL+ZW40ZVrCaLlUyMLKWTWL6jdl1NYCO8/nlVWgXJyzs01D10S0liG0SaEtdzWeV+i9ocpRxiykR4eo4RK0V4ws16mx760RjfdrdawsJg6M7pQourkdZKsE9lwGkoahyodiLi8xUTxdQHkdapwXVZUKJxXLCDgt2USqWCXRZEF4si2CFisKEhjs1f3siIBG0P1N2MT5jXU8gDhfMA6zwFkOXQicrrbddRrVT2OrCeJ6pOsZojQwbu7b0UbooAgYzPps6Cf8GsnEnkiC+nKgd7NTbDsFntkD2MU4L1GXcHM78BRqxFQIkauK71QRv1coXycr8+6CZ7qeU4k9yZlRwr6cp+RFN+d8ezJNuIGb5RBMxPhVqrmexqYpxZhBwFj5GF+UnunF7/4bG1lCS2q64IFl2Y59JF7modUpsDuzKCbJmDbhb1WoULHCbQ2J0NatRwdxhlNU5tyVavRevU4ugGLBKRnXHhvgv+HJnX4sG2gajrEm22pVQssettLdNzvYgudQqOkrP9Whg4D5Ls3uCdHb08fE++Lz59kmcwNU/iueilh3urSKwYCRIftEHuPJsWBsL7nuQIW3KI4mmLciaADEXkHD+7jcxqmTx+OGZfmuqu6ZMNZgEHa4QnbJ8S6bY6207wdr/T2VSGVCyO4uRTHk9OTrmpjJTWeToUDpAIL8m6+fmex/IaRZeE+MrCFTLK46E179RcfR3Xra9rErpdKfV1Tl90cvpXjgB8sC+TPaEBKmi68plIwunfhiIMq3vIllLE9maiky+6UIOsu7tcenOIvh2tdaZIhDPWy1xTvd2NljB1DU4Xc3emnkuC2oD0PmBbH3BkNYZ5F8GITx/UOvW0ZQBnTJSHc7Gz8v7770eYoQRzXfA8iscL+ahHqF0LjngveYIqjzvkYU3JSdyARfx8YAblhN7njEKKPP5bp+r5+e5e3pDncKyXPmlPJq90VvgjoV1j5Nk0totL9NRACmSbEmblTAJZ7Pa27/DAhP9izzyWunfVZ333SHAiuBZ0SPIpkR3gpvUp8vel6HI8fXYnaWtZ7hyUOwdO3Wvmc1PkRStXPSy/7i5x3DMxd7EcX5T8MN4oBkmEK8WiOXuxaFpfrivzexliDrRRE23vhIEqQJr2L/dCPI6UBCPXcSHvDmUSTcnQw+nfRtxQ95At5QwLXGxNRePsgXeYV/kQAHUH993TOXpziGedjPUUaoHYiTT/drdZwkJg6c5Yz9jlQygn60YyTT7g+JsLNzzf5UDsBSGlD5KjBqzFgzs1sBDMxw/QKW9v8j/l63Qtm3xwH32D8jEm0O8lrxsbFhK0tNoLdO5sYZXHRzD3ii1PpEsaqCVdXevmmsjgeqWZKAY1GJVj1bOblUkKN0HD9JmnJf/KmftoxFi0T4lGVQhzviK+3TAaliSmO0I3ikE2iwSCrDa7cq8rOQjCaMWpF5S/vWobpQqhf1U22XSDtWFuKbt1O4nSTlJ+j26lFpSq+ChTPZar1YI4S2wPMkRNAzrsfGLtzpIahc5jMiNBjfF13U74HQYTEuTQso17Le7TpYDFIRrHZS5/0d97EdTldM6Rn1W5AACcBbTHFw3bqOJQYPoeELGqEQBUInBc5jV64lm51uDSA8BFwtrjYSiYBNAWEJr52CoCAAAAAAAIATguAAAAAAAsDOC4AAAAAACwMIDjAgAAAADAwgCOCwAAAAAACwM4LgAAAAAALAzguAAAAAAAsDCA4wIAAAAAwMIAjgsAAAAAAAsDOC4AAAAAACwMp+G4dOt3MuiNcWn5FIsY7GY+4QGDijsbjRuXIpIN59xNPlhfXzqJvAgdf7V5vZ+bIp+pb/R42i7dzX9BP15bHdavThzyebaYNHz0x9jbj+inK53OqxMHfopAaQAAAMBcMHvH5fir+p+v1FC3fbw8q2nDXMSzLWeiwhPh3di3Ju8krGwROStiPktXG52rs79Rg0zhh6nfbI3rzp/tI7S+Mn1+oTmBDrHMb6NOZyuNHIHTKxPmcEKlAQAAAHPDzB2X0Zd99Po/FNCn218+Xbcse8y4iOXyg9Xe9W+7peX0ZDeeP562f0W8lvKKe2Hp6gIsQoz+1rz2TJV9XgiBAQAAzhGxzJ1xZ+uspfCYtePy9PAhyv3yUhwl0a/+MrpBdiVG99uJncfO98U3xiUkPIvz53LyARVRpflDsjVA1wma5AZ9p8BQhMrSC7lrhwdHr8pP6sYbB5ow6f51uut0/Q6TljBy5PE2oVQJ6b07P8zvkA0Omuyps3vl5iMU5O3d1KhXQTawmqJ+LDd6hTo3IkO5gkN2/Jf9L66U6qaGCpuVJX9DA4mVegO9LVZh2ZD+mKt0NaXItvJi7YtPtu+/INfFoHBqMKh47XHq565zdvTH2G+fGdYv79m1bRIeAAAAIGCvBc2Z7zJjxwXPlChZJbPFCzn06eExeVyO31gf30B0Cvw2S7ZvBpabH/de3Bh36GRJDihsNZbIPLR5/6k6GWtFTC2bieVy5w0keDNYsPxvk8POVoMcvDgq3aCzpiohkT//bXrceRW5ybR8GGQe3X99Y1z3KpUubVEPiUzG7Z+tW27EhdJNnxU29bbbTgK1XGkmvvZMwlDHibLSLxqqr1ZKroKW/ikXgPi1CLXUJtjAGcZ2BKfKpHDHYLBgnw/KK2RnsPv5o9rPt+J+2vazrnuf/cVoEwAAAOeDn6694PMt81r45znxXWbruLC9GLqScWn1dZT4/YAfNOnWP0G/2fJ9un029wp7mn/SQ48r1131FV9sIG9q8SlCyS0pL8WEvtGQVeuXdHlm5cUa6g6OURrpEtJkP6MZ8mRGx8hZBZE3qryzqM+2TDfRG3GhV0or9PPS1VLx8GCEPwSV+8Xfhgipi1KTZaVd1Kt//MRQKak4NX3v2mqVChC/ka7tdLV7Lq3Xt8bEqbqzi32XuFnhjsFgwd5mO4ODgz+vFkpi0Zq2fa3Lv0sDAACcY7jXgv2VuVp3manjMtjbedxEd5s7/Ip70OToj+RdnpXwWdnW8O1FiJDp6oelpclvnABFQtsyUgi8s6hP26VPp89Hx7xlFgly9Y+fRJ2esnS1utNPfD4o/0zLQVL4cmGnu33/aRV1e45vOokwAAAAgAvzVLjvMg/M0nE5+rYivW1LVunprDnYJRMzX964lLz2uM8e8fEt6jYBvn45hQ7r91cMrzRbixATOfsg6VA3BgljxEfC4HuJMyHdy8+iEn8L5XwLdSp7/FW9eaVUsiXlXFr/+ZXY23cQP597/FV7dHV9ZYqsVEmkKuiVCkh/OfXFJ3tHV8tkq6irqv3oq3acbeQ9PXz4uPj6Jdw6/gqPv5JEvzraQz9UV310wU7SdgAAAOcXZXFlHtZaGDN0XLqfPyq+viE8715aff3Z/OeD7Of0nGaGboVQ74HNpuRi8UrNkBN5LWjzOjniQCh6LzbbiqCz8uO8s/7/bOvBlnJ+xX7jskmY5Wzxk4x4ODdYQnMyUz6X1utv9DPOvfQMx0oL3U1kDtG1K7VrPjeyQu/EnDquh1ozWHl1/OAZ9y6m/2mzEuqlN5BWKbEKhvTl3zhqL+6s1lBflvlyP+MKjBMTD+NSgMKxg4IO8z96Y6yKqmvbal0AAADAHDJDxyVd2mrIV8ixXPLvljrN4Nm086rz2flqudwR5g/6OxxKbr5FoHJnqzyNbEZh+GlZljMXTBBSk9CYzJ6PKC09z6EJbLjRoJZls3giRmWGzcqSv/l2qQnEKhjSi2q/ofzmipqVMQe5sooOl+3atloXAAAAMIfAT/4DAAAAALAwgOMCAAAAAMDCAI4LAAAAAAALAzguAAAAAAAsDOC4AAAAAACwMIDjAgAAAADAwgCOCwAAAAAACwM4LgAAAAAALAwROC6ZTCZMsk6nc/KyAAAAAAC4yESz4hLolIR0bgAAAAAAAHyYj62iUXtzG1Ub63HlT+k6/iORR61hFW0n8k3h7hp2m7Bj1BmXeYid7m5MvmAuyEtcoZ+KraH3HS2v6RahZN7zUhrz1MvFeXm5uHXhdyl5GksP1BK5Zz+nCybmxTVWHxQUmYVknqRG5cgZ4i9K/YSTyiuj1erl+yUnH3pHys1Vbh5dn6q0bvUDakFShCoxJLzuUvOTy/WkI66exFMYu2RrFJ9yrWm6u5tyqwXaVaSwqgnKUOSJQv9h9OMv46Zm2FNkokgr1ewUOak2zgJtKJtVzvKAULNZV0h5FkfV1onpIjFbx+W7777b2tq6efPmybPq7rrD4KgtOxiUYWszsdvloyS11FAN6oxRY5KYWMQmolk70824EXcSxXb5GHxQqdVq+4ej9YmMvFgs9gYjlCb3jA73seEVBSnkPM2lJ8IU08xv5wydVNPYKFff665L0zEvkhRPlWlRjinD8bjMRD3IerNocd+pMa4w8uo/GvRQreQWbdCnmDkZUNoj9mdALeKruVAlhgNbUYWNC7hWm2235FG7zqNXM0Mb4y9wEqKxRHvTVZirxIS9USYmXVBbzWJXMxmFSUMRfeDMN1nmijxB+k/wG2eHSUVTZNIqbrtKRawyreqFnCAmZsrhcbqcvQEBG2Vs1+RaBshzwp5ifsaO+hb5btvEdKGYoePCvJZkMrm2tnbCrHBrBbgi8fWq47okWNpyKHPAs5CQb3y90enH9kgmdKTiJpUuj3nAPjwG17KNLNqctGvmcim3+wz7qFYr9jwx5DxH5tJHIQoptlqp/F432JTj6yW06ToETIRirhB3vmuQAm3KCdtL4supZv2wSmqEK5wr5fbrrH7DfhNX11x3Yy4HwwYyqlqpRbgSw4EHPDws0rriBuDStrf3U7zpvC8SSTZJM81RWZxZPDFBowSithrBZFe4sRrWTKaEWEiy4CtPgP7j6eil0jCpaPJMVnNomxsk6Y+56vw/is8DUw+PJ8yZTgDbervPTh61/Ilte5pOapkaLh6zcly414K93R/84AcnystZbAkwO+a6bG4Wm8FpXcgTaqrUEK7gCahy0C0krSMVviWFp8DEANUn7Qqr2RQbDLsHvVw2t88dFyVPdKJxcrXQ2jd0YB352ZQM1YnttrhZZVFOOR12/k1na8znwE5AKjvGJewNcUnSDBioT9N8aa1FYIneMitdPPD2BPhakbMRtDrooVRWFae7l0+Vhsn6tiqkpiv5kqFRFEmkK8TXqUpX+KOlYUXBYFfew5y8c4W9+u1+ClUqzVoHV0MWgJfmFCZJmD2gn5vNYrHYbDZR09mQmkT/TKoq2t5GuVQ+XzGVbah7UEsdymJHsugiei7cb1GaA3Flem0obiPKrezK59fudktYFLTu7NkfoibH1xg8Y9ANUl9RDzFQGJ9w1KFVWOQYOc3nGDPV8uFuzGKWvMVF08US5/nt28YelxY1YLlFMYCRUoq4ZWmZGgJzSNjzXEyicVwePnx4+/btO3fuPP/882g6r6WZT4jnF3h3da9LE6aUmLcCcV32E/3OeJI2KSalHRhs/ajvk9zpCHi2EB/JQpJI0u6zjOeXQgHt2/Jctedg05JUhfVSii0b2W50NCY/m2L/f4g2E7E8cnupr3K8DH16gbMOkSBPPWU8oqToX2LnM+tTkzYethb+JY7a28QFHqf5Ro67JzA8qKBKDdtYwlt5KqKDzVim6RXV3SVzZxq1pUrycyZp6eI2OWuSdtfJ1EbRJUnwK3T2Y2mEzbvt9iqto2FFwWJXbKXS3eqj+12dHGr2ksPxuEGKlQVAe6x88jeWtDCQJMyOh62eM87mcHZ8iXsS/bs087iXkmdFZx9w9dBQ95At1ZXF1k1iOjzPxZ0stObAfY8ps4qLZuMT2ZcojXmxXi3YPO3f7nZLWBj07kzWBMrsjFA2jQaGezyD3Nat3SdnLSN31TNuv0sdWpOFaquHHO/BZJZ6i4tpDvHtRX47LVDtcXggLbNtdPstigEU9A7ib8khclAlP+mS5JkTjeOytrZ279497Kxg3wX/Oc1ai3qsQf5iiDtw2ztzZ/LI3eTJUEdBOM2+5KSTzXiUtaYmj9HYRXcc6GKuOpHnEqdPoN0+fhgte31Yy9PHcbFqSSJd7hxsUmM13igkVM4orDfGZO8D97jtNnkE8VGOTxOoFR7huTRJhGET7HK/mXK3bSz6lLauE57PGlwL3xKFowr8OAZ7TOse9Fqd1v5BF2X7iPotIz6i8tFgUO+1qmVty45qrSpusSvncQ2NoksyGnjHKPAI7OiG4GbAtaOtKJjtSjmaQbe1Ru39Ym41blTFarJYycTI/lhjvE72CdUENsLrn1elVZC8vEND3UO3lCS2QaQpcT2XVe63qM1RyiGmTLReqsWIlSLst2S9tXv9aIxvu1stYWGwdGdnYsXzqslx4QZptnbfnCWGwsBiuctnaEUmszS0uJxGQe9xKGj9zGDqmiT+hMxhojwj4ubNm7dv3/a/Mh3ROC7YQcFuSqVSwS4L/jOaHSIGM+t4oaVsZESCeJqQ4WzGJ8xuPXHgHXfa8Z/J8uNE5fW266hWwtOf24f1PFF1itUcGTJwb++lcFMECGR8NnUW/Atm5UwiR3w5VTnYq7EZhs1qh+xhnBKsz7g7J/j1ObEWASVq4LrWB23UyxXKy/36oJvspZbjTHJnVnKspCsPY0353R3PkoxeCysqZKMImFeztFYz2dXEOG4rOe8XI0vak9w5vf7DY2spSWxXXREsujDPpYvc1TqkNgd2ZQTZMgfdLOq1Ciev6MJi7M5x7rYEYl+7DTPw6nvK+l3D3IRVsrZ4aOSXHiyPmmGJT7PQf7aInkokr+kw/v/tnU9oG8cex6fHPgr1ocJRmiJwDnqGqLhYgUcOJiXUGGwolQ7GxJCXS4UPNcU0UPngqnlgF1JMXxow6sUN9UP04MCjMrgupcHwfIlMTf3A6FCDUruJUQ8+lF7b+bN/ZndmVytZ/1b+fijpanb+78z8vju/2aRpZ1ws7UKvm6ZabIQbiEuX5mb73pUXLn5qu5b5uV7CtxYloWQ42G8+NV4kRdranh21PJom9bP89snksjtPplzU0oN9VSQ3LHmntoPceDe9+VT63pOdS738K4kOe3ROHbAVnX2cI5Ixq5ZM0ZdjcVPXdqU/hU2ocbBGesP2KZGf4xHuBPsEyvCbV5KsYVESZVcpulQZ5V5JOuIa21HSARLpI1kzP9/zWPZDUWvCtLIUwowl1UIpo+Xuz3HN9ppDQh1XrvYapy9Kb6u3jApYgusD5hN6Sm4qfeUjiYL1vxeuyoi2B3xSrmrbOvvsmy58QH5uernUxyFrO97q5C1WOW279C1Vn7t2JDTcgvainc7/IJJskY+h0LcgKbame11HO2osFFweSV46faqn5Iq1i+yqgIr/E/dK4ppxv75HiBDYHiVqhrrPRIvqDNOv9eTQAYR2aaJqIc09nEvFyoMHD5qYoQMhXagdpaPHedQjkNfCQk7L9PQHf5bYy5orJ/nEB7HOBybJ29LKZAw5V338Dz5F7c9OOLv/SWnypAJdKV1xUdSAfdJ5x3pB8O4x9m76wqe0RLsbWIHCKaHvnHpgm922+46u7/SX2MjwaPuue3UwjwRfrN0KPnl9ShQHuHl7blnfS/HteL60sLj33rTEwQelH4y239O/MLIPrczuEfntfsqEe/IFc3OaBjqWV+uhaGoihdy6pc9eLpq31+or97hSK8gf6kXrlVGtwDCfX2ZANEpcEax9fmZ+khcfOgZ6sP73Iqppe8AnZSwLVrWVLvrzzR/sw7yuixpwOfhf83SO+jjks07adkqtIMJN4P/cvUZCKNBO52z21kPy8CGfEKx5Nx99bvQHa5o8031Gu/dCIS0IyrqrTfXz5Uf/T8oVsAazRpT4P3ERxZVcmXFR8sxqMs9Gk8RrounQGSbiOVVroM6IoFMjIJZesVRLU/xEpFv+AjrXh2HWT2c438tmF+arb618tBHUtMPW6Sn/uNJXsXYM3/r4VMwM8cqTqDWt2Utqd72jb4kT2q5hURVNN2g7x7Ofzax0tTAjfKm7tuKy/zsz9+kRbdE+JWq7QrL5rup7D4wvPaLoUgR+KJq6edRAqqvXuDLDXTlIlVGKcwe4ftvN1tYqQP+76+YcurV7Q/+kvEe3EWnYiGqlUUepB66m+HSm+1iu0gpmEYQPMkBLa0zY7kQ7nd9hT1sOVlom3fUa7Y0tvJ6pXImsQjXD0n/6fKlN7m6F+jDdSTwnmn6l9ZgZNXLwaF2jUyMw8l5Ls1QLaZZw6cq/0V/+DE3Qnq/AOlUuAKAT8Bl/S+NGlZcC3X0AzgFCuzRRtZCmCJdu/dcTfd5We7JcAEAn8JzxWAoAYDRXtZBucRUBAAAAAAQAwgUAAAAAoQHCBQAAAAChAcIFAAAAAKEBwgUAAAAATeDll19uQymNCJd/ffLvptcDAAAAAKAmdQuX2Zl/tqAaAAAAAAC1gasIAAAAAKEBwgUAAAAAoQHCBQAAAAChAcIFAAAAAKEBwgUAAAAAocFPuPz2229tqwcAAAAAQE08hcsrr7zSznoAAAAAANQEriIAAAAAhAYIFwAAAACEBggXAAAAAIQGCBcAAAAAhAYIFwAAAACEBggXAAAAAIQGCBcAAAAAhIZAwuX7779vdT06xY0bNzpdBQAACDF9nzzrdBV6ltMPo9rwc26Ug+64JJPJs1WmGymVStrwHh4TPQC0JgAAnCuj7AKuIj09OSZ6gIDDGgDQZiozf+t0FXqK2Mofna5C9wLhAgAAAIDQAOECQk9A5xE8gAAA0ANAuIBeoKYLCb4/AADoDVojXKqbc8nMuhQwX6xkEi0pCoDGOSnO5EhuZaJf+9MrWvfgU7F669ykNu7d77u+QO4+Pp0dakn+oNdwGgtPS0GjLZHs8likRXVobuYtre2Zkbu8maa5ja1u2Y5LOl9qVgM6Pgik56x/zM2qYcdb2nP88ssv77777vvvv19HmgZMrEgi/mupbW5bQQ2yt73ARQut50x31hB0H7axoCtgLH+7HlPa5jUz/Es0s2Zbo6XKMm/Cfj4Wy4dwWwGuoprs563nzJ55fv8sT7lt4z78E+zsCNVy+fLlkZGROpL1T6ys1FmSSHJSrDNZ/bStoMY4OTqYGpgkDfUhACQyls3PLW1Wz/fC1Uqqu1skn7W6N5GpVDpanwZpk3Chum6izGU1372I5/PlrUqcLC6yfQxzF8Pe2OAhzPRaccg6ad4WTl1Uj8vp0ZQoODK2HMqnHA5++umn119/PUhgECzVcu/evRdffLGOlNaOC72ITxdE4NRaTtwyQqbWytJ+AktyOEgWCgVSIPyOKyYxIiwU6O/H4xvXpwtGFlZER47M40K4v4VebY8YF/kBmjQvFcTqRJ7c75teYBeKg+bw65m+hYJ9R/hxBEaQ2kYbO7oS2dxWyZHxwWmz9MeENYsUCncflwfyAfuQuDIRTfAp2tnzoMeIvBpf33m+TCK2OeAbMlYER3iWLGXW103r4EoiWQvrjnEjUOYiB2a7FvnN+WIptupbnOyDSeezLeqis8B0y2hWsaN2I4X1vcDee0fjmcyiGZIgzq7gIV7d2HpaJlzWM0n7kAttZqWYjy1tFke3MnHRL5lyrFSpLFu7GBc2l9itSsIMSdFMeJxsRzcPIsOjJLm06TEPzjLuNanM4e7ScCwPwocKvdq5Zlysxmh3rqrDi6fXz+fuPWv0+++/f/XVV2+99dbo6KgVuLW19d1333300UcvvfSSf/Jvv/32s88+++KLL1577TVSl2opTMcL0k/beJ8Uc9ODj09Ph7gZzYuQjfHy6Uq/UCrFqw4DOjCZWzsgwj+ixKSZFg4GyqenOWqA80Rc5J6cTFz6WhTCDPPXe5bwGJpcm8odnZChZ9sLZOHu3uxQ9OhganwySjbkgk6KtP6HNP2pUdCJXKXCAtU+pyvc6N9neQ/Nnp7OGo3jka8+cbfRgsZg0ondYvdmilQlmZGNDCeJs/SjXHntwNQrQfswR5QmXH2iKdqn50EvcSGWLh9Xq8dL0j730uawoQLoyiaH72az+TQR1sF1a3PYXmP3HwnbwlbCR9S0BMuc5jC8O8dW3ophtpdI0ae44V3ThPHluROd1yhs4yXDr3hbqllmwSu0LRUzxN0Vc5tMNWq7sR208YxLphiPTWSo6WRKjUYYHea3qTBIZ3b2UzG2g5UwQ7aOq8SMU21VHYMRGVsukblkjD3XtCEEmjDuLaqb7uFedWu4TCqfXqI9kni+s0gW5/cziQt8H+gC2XIPL5Ez23GVJpgrt26ULlSaUIHy8ccf02uhXYKrFsrIyMg333xDxQrVLvRnHXst8gs830IwOHmyQdZyQ/w6OjAlQgoMK+V4bkJvP9WYmXH6x1Vmd4l9YWS9cL1vgdXidELKov/SYGH72cre9sHa47WN7T0yckjGJ/vJE7X+k0OeTRO3+q+OT01vU/Ez5Nr/UNsoN8G6Rajg4fLHDGEZbhyd+JdOgvUh6xlnJtqiA/Y8CD3PK+vxa9nd1XWGGZgevc3fZ6q7W9pw7a3smLnOUjG0OBFbZMt3ZYyug4EzJ5ZV4sadvWdveRUnR6YFNqc32oX68pzOp2RDIVxMzq6Y83oWraeNZ1yqx2X6Z5nZX/feSTp2oX31aADmIqJPimsPJjT1k6eucW8hDwgx3KUQU8MlxP7p/k45X8xv7eyTaxXC/Fe77uGlosutO/3HsnahBFctFCpQqEy5c+cOlSz0ZyMeokBoPpcJFPOkuKGP1j+xwjZF9u739fU5kgyN3M0fFcnB+OTspcP80d7AweClM9jqqYEoLSQu71s0ntnZCNgzvqlAr8Jc87EUu3JuD9srp1e4csvGWMDZSdQY2/huKHOVuiJ3B8yBsLRbHXNuKjjPcS4Fz65jPdA24WK89xd3mOlfHiZkvcIcmcLcx28vRy6MEraLR7vBCCHH7apbYBLX5ql+yDZr3NdX8urxJimPpjKvVlaP92Pl+KvdKT/OhKxdgqsWgaVd6HUTVEv/1XFiOG/YNgEZz9kbF+LIxWHGy5SqMcsD+lLYXSomViZmmZeF+YYscTI0Mnj9+sFauZ/0s6tparmtfZpgFA6frZB+sc0xmOGHZU3x8+ywQAZyaht1zRdunoFyzhGZZXhUowJB+lDtGW3RAXsehBtuJm5XIpEq34fPJIyDFJXbTG1Y+/NKuPaW5DnnH9Isj2VK+fLSMUkFzbySsqwSMb3z3sWlHCaMjHbjGRf30QdxCqFIiGlPnlfWSUxTc57O0RWlrOezaD3tOePCEU6iRDEeS87Nz5N0eTUWM49Lsc5g58mTsZgVUjWFCzuuNZFcn1cOebguWoJjCuzvLKZjJa/JU9e4t5AGhDHcXSFMwzHlEp9g55sjJMKumMstmBNNm1sXI7SLuKg3LRUrDx48aFJF+idyazPxvj56OTU1JUJWHrOdEXbNfDtD7hSXBgvX4wW2N6DE9PgOiBWyEY/3GfEcWyrcucKFxtDIXXJ3xC7OKshLDxkwJ5Rc2cm1vGiQCNS1UaqZ3QS23cFcM3ZknuFJLeESqA/VntEV7d/zINRIxsJ884uMLRfZ/ggLE/Zgk99XwiP7lnVQkpgwz/lWMmnalkiEBMycrrt2CKvbWGK/4l1cwjZh6a51FclHH4jZ4dX8ajJmyo503iOdsyuo0NF3YztojXAxXSs6+PdXbD8qlq0sL/ukoj+X7SQZO3nC46IlOB6X+byCTirfcZ+wSnAP94hbwzG4G4mr4sS1eTJ/rUabJbWny63d+q8uGpAsDeL6atf8aQQabhwZ+3irNh/privmhJ2n60ItxM701M5sSF+QXX+1LUq+mjBdNBOlsa7Icolq1wXtQ00mun726HkQdjyNhbzsE7boaswBUayDfMunkICZ11mcn+HrItRqqiG2bdYbYm3I2HK7Go+/x6U2utnQlHFvEmQcyZ9iW1ItMqYbXkpBmtzarf9aDf5GfwAAOCd0SLi4rSwAjYN/PREAAM4P2HEBAAAAQGiAcAEAAHBWYit/dLoK4LwQVLiUSqWW1gMAAAAAATnPRjmQcLlx40ar69FtnOcxAQAAwTn9MNrpKpw7zqFRloGrSMM5HxMAAABA1wLhAgAAAIDQAOECAAAAgO7lxx9/pH++8cYb4ieECwAAAABCA4QLAAAAALoXa69FAOECAAAAgK7D8hDBVQQAAACAsALhAgAAAICuw9pigasIAAAAAF2K6iGCqwgAAAAAYQXCBQAAAADdguohgqsIAAAAAGGFCZe/5/7X6WoAAAAAANTmLzqjq2Ozdo6FAAAAAElFTkSuQmCC\"/></div></div><div style=\"clear:both; line-height:0; width:0; height:0; margin:0; padding:0;\"> </div><p class=\"P27\">Once the uninstallation is completed BCU will ask to search for leftovers. If any are found, the above window will be displayed.</p><p class=\"P27\">It is possible to open locations of the items and view their details through their context menus.</p><p class=\"P27\">Export will only save data visible in the window (item paths, confidence ratings, etc.). This is not a backup tool.</p><h3 class=\"Heading_20_3\"><a id=\"a_7_4_1_Confidence\"><span class=\"heading_numbering\">7.4.1 </span></a><a id=\"__RefHeading___Toc568_354986082\"/>Confidence</h3><p class=\"P27\"><span class=\"T16\">All</span> items are given a “Confidence” rating. The higher the confidence, the safer it is to remove an item. <span class=\"T16\">By default,</span> only items of at least Good confidence are selected.</p><p class=\"P27\">It is possible to show items with Bad confidence, but <span class=\"T16\">removing them</span> is dangerous and recommended only for experienced users.</p><h3 class=\"Heading_20_3\"><a id=\"a_7_4_2_Backup\"><span class=\"heading_numbering\">7.4.2 </span></a><a id=\"__RefHeading___Toc570_354986082\"/>Backup</h3><p class=\"P27\">BCU will ask to create a backup of the registry entries before removing them. </p><p class=\"P27\">Files and folders are moved to the recycle bin. If the recycle bin is disabled or has not enough capacity the items are removed permanently.</p><h1 class=\"Heading_20_1\"><a id=\"a_8_Custom_rules__Scripts_and_Tweaks\"><span class=\"heading_numbering\">8 </span></a><a id=\"__RefHeading___Toc1173_379548938\"/><span class=\"T24\">Custom rules, </span>Scripts and Tweaks</h1><p class=\"P32\">Starting with BCU version 4.9 it’s possible to add custom detection rules (from now on referred to as “Scripts”) that will create custom entries on the application list. This allows end-user to add custom rules to their installation of BCU and to later automate them.</p><p class=\"P33\">Scripts are placed in the Resources\\Scripts folder inside of BCU’s installation directory and have .xml extensions. They can be placed in subfolders.</p><p class=\"P32\">System Tweaks introduced in version 4.9 are implemented as scripts and can be used as examples.</p><h2 class=\"Heading_20_2\"><a id=\"a_8_1_Specification_of_Script_files\"><span class=\"heading_numbering\">8.1 </span></a><a id=\"__RefHeading___Toc1175_379548938\"/>Specification of Script files</h2><p class=\"P34\">Scripts are simple .xml files that contain information necessary to create a new entry on the application list, as well as an optional condition.</p><h3 class=\"Heading_20_3\"><a id=\"a_8_1_1_Example_script_file__remove-onedrive_xml_\"><span class=\"heading_numbering\">8.1.1 </span></a><a id=\"__RefHeading___Toc1177_379548938\"/>Example script file (remove-onedrive.xml)</h3><p class=\"P52\"><span class=\"T25\">&lt;</span><span class=\"T26\">script</span><span class=\"T25\">&gt;</span></p><p class=\"Standard\"><span class=\"T25\">    &lt;</span><span class=\"T26\">ConditionScript</span><span class=\"T25\">&gt;</span><span class=\"T27\">remove-onedrive_check.ps1</span><span class=\"T25\">&lt;/</span><span class=\"T26\">ConditionScript</span><span class=\"T25\">&gt;</span></p><p class=\"Standard\"><span class=\"T25\">    &lt;</span><span class=\"T26\">Script</span><span class=\"T25\">&gt;</span><span class=\"T27\">remove-onedrive.ps1</span><span class=\"T25\">&lt;/</span><span class=\"T26\">Script</span><span class=\"T25\">&gt;</span></p><p class=\"Standard\"><span class=\"T25\">    &lt;</span><span class=\"T26\">DisplayName</span><span class=\"T25\">&gt;</span><span class=\"T27\">OneDrive</span><span class=\"T25\">&lt;/</span><span class=\"T26\">DisplayName</span><span class=\"T25\">&gt;</span></p><p class=\"Standard\"><span class=\"T25\">    &lt;</span><span class=\"T26\">Publisher</span><span class=\"T25\">&gt;</span><span class=\"T27\">Microsoft Corporation</span><span class=\"T25\">&lt;/</span><span class=\"T26\">Publisher</span><span class=\"T25\">&gt;</span></p><p class=\"Standard\"><span class=\"T25\">    &lt;</span><span class=\"T26\">RatingId</span><span class=\"T25\">&gt;</span><span class=\"T27\">OneDrive</span><span class=\"T25\">&lt;/</span><span class=\"T26\">RatingId</span><span class=\"T25\">&gt;</span></p><p class=\"Standard\"><span class=\"T25\">    &lt;</span><span class=\"T26\">AboutUrl</span><span class=\"T25\">&gt;</span><span class=\"T27\">https://onedrive.live.com/</span><span class=\"T25\">&lt;/</span><span class=\"T26\">AboutUrl</span><span class=\"T25\">&gt;</span></p><p class=\"Standard\"><span class=\"T25\">    &lt;</span><span class=\"T26\">InstallLocation</span><span class=\"T25\">&gt;</span><span class=\"T27\">Registry::HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\OneDrive\\CurrentVersionPath</span><span class=\"T25\">&lt;/</span><span class=\"T26\">InstallLocation</span><span class=\"T25\">&gt;</span></p><p class=\"Standard\"><span class=\"T25\">    &lt;</span><span class=\"T26\">DisplayVersion</span><span class=\"T25\">&gt;</span><span class=\"T27\">Registry::HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\OneDrive\\Version</span><span class=\"T25\">&lt;/</span><span class=\"T26\">DisplayVersion</span><span class=\"T25\">&gt;</span></p><p class=\"Standard\"><span class=\"T25\">    &lt;</span><span class=\"T26\">DisplayIcon</span><span class=\"T25\">&gt;</span><span class=\"T27\">Registry::HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\OneDrive\\OneDriveTrigger</span><span class=\"T25\">&lt;/</span><span class=\"T26\">DisplayIcon</span><span class=\"T25\">&gt;</span></p><p class=\"P52\"><span class=\"T25\">&lt;/</span><span class=\"T26\">script</span><span class=\"T25\">&gt;</span></p><h3 class=\"Heading_20_3\"><a id=\"a_8_1_2_Standard_elements\"><span class=\"heading_numbering\">8.1.2 </span></a><a id=\"__RefHeading___Toc1179_379548938\"/>Standard elements</h3><p class=\"P34\">Most properties of the ApplicationUninstallerEntry class, for example DisplayName, InstallLocation, can be assigned by creating an element with the property’s name.</p><p class=\"P34\">To get a list of available element names with example values, open BCU and select File&gt;Export, or right click on any application in the list and open Advanced Clipboard Copy. You can also check the source code.</p><h3 class=\"Heading_20_3\"><a id=\"a_8_1_3_Acceptable_values\"><span class=\"heading_numbering\">8.1.3 </span></a><a id=\"__RefHeading___Toc1181_379548938\"/>Acceptable values</h3><p class=\"P34\">Most elements can take an arbitrary constant string. It will be copied as-is to the entry on the application list, unless it’s invalid in some way.</p><p class=\"P35\">If the value starts with “Registry::”, it will be <span class=\"T29\">treated as a full registry path to a value</span>. <span class=\"T28\">The pointed value </span><span class=\"T30\">will be read from the registry</span><span class=\"T28\"> and used instead</span> <span class=\"T28\">of the registry path.</span></p><p class=\"P37\">For example, using Registry::HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\OneDrive\\CurrentVersionPath in the InstallLocation element will cause BCU to read the value named CurrentVersionPath from registry key named  HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\OneDrive, and put its contents into the InstallLocation property.</p><h3 class=\"Heading_20_3\"><a id=\"a_8_1_4_Special_elements\"><span class=\"heading_numbering\">8.1.4 </span></a><a id=\"__RefHeading___Toc1183_379548938\"/>Special elements</h3><ul><li><p class=\"P79\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>Script - path to a PowerShell script file that will be executed when this entry is “uninstalled”. It overrides UninstallString and QuietUninstallString elements. The path is relative to the .xml file. Either Script or UninstallString has to be assigned.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P80\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>ScriptArgs – optional arguments to be passed to the above script.<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P80\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>ConditionScript – <span class=\"T24\">path to a</span>n<span class=\"T24\"> </span>optional PowerShell script that will be executed to see if this entry should be displayed. If the script returns error code 0, the entry will be displayed. If anything else than 0 is returned, the entry will not be displayed on the application list. <span class=\"T24\">The path is relative to the .xml file.</span><span class=\"odfLiEnd\"/> </p></li><li><p class=\"P80\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>ConditionScriptArgs - optional arguments to be passed to the above script<span class=\"odfLiEnd\"/> </p></li><li><p class=\"P80\" style=\"margin-left:0cm;\"><span class=\"Bullet_20_Symbols\" style=\"display:block;float:left;min-width:0.635cm;\">•</span>SystemIcon – optional name of one of the .Net <a href=\"https://docs.microsoft.com/en-us/dotnet/api/system.drawing.systemicons\" class=\"Internet_20_link\">SystemIcons</a> icons. It overrides the DisplayIcon element.<span class=\"odfLiEnd\"/> </p></li></ul><h1 class=\"Heading_20_1\"><a id=\"a_9_Command_line_options\"><span class=\"heading_numbering\">9 </span></a><a id=\"__RefHeading___Toc522_1610471585\"/>Command line options</h1><p class=\"P36\">List of valid command line options to BCUninstaller and <span class=\"T31\">its</span> helpers.</p><h2 class=\"Heading_20_2\"><a id=\"a_9_1_BCUninstaller_exe\"><span class=\"heading_numbering\">9.1 </span></a><a id=\"__RefHeading___Toc524_1610471585\"/>BCUninstaller.exe</h2><p class=\"Preformatted_20_Text\">BCUninstaller <a id=\"__DdeLink__880_3487566792\"/>[drive:][path]filename</p><p class=\"Preformatted_20_Text\"> </p><p class=\"Preformatted_20_Text\"><a id=\"__DdeLink__882_3487566792\"/>[drive:][path]<span> – Specifies drive and directory of the uninstall list.</span></p><p class=\"Preformatted_20_Text\">filename <span> </span><span> – Specifies filename of the uninstall list </span></p><p class=\"Preformatted_20_Text\"> </p><p class=\"P56\">BCUninstaller /sm – Start only the Startup Manager. Does not enumerate installed applications so it </p><p class=\"P56\">                    starts much faster. If BCU is already running, this switch will be ignored and </p><p class=\"P56\">                    the running instance will be focused. (You can also use /startupmanager)</p><h2 class=\"P62\"><a id=\"a_9_2_BCU-console_exe\"><span class=\"heading_numbering\">9.2 </span></a><a id=\"__RefHeading___Toc918_3487566792\"/>BCU-console.exe</h2><p class=\"Preformatted_20_Text\">BCU-console [help | /?] - Show help (this screen)</p><p class=\"Preformatted_20_Text\"> </p><p class=\"Preformatted_20_Text\">BCU-console uninstall [drive:][path]filename [/Q] [/U] [/V] [/J=&ltLevel&gt] - Uninstall applications.</p><p class=\"Preformatted_20_Text\"> [drive:][path]<span> – Specifies drive and directory of the uninstall list.</span></p><p class=\"Preformatted_20_Text\"> filename       – Specifies filename of the .bcul uninstall list that contains information about.</p><p class=\"Preformatted_20_Text\">                  what applications to uninstall.</p><p class=\"Preformatted_20_Text\"> </p><p class=\"Preformatted_20_Text\">BCU-console export [drive:][path]filename [/Q] [/U] [/V] - Export installed application data to xml file.</p><p class=\"Preformatted_20_Text\"> [drive:][path]<span> – Specifies drive and directory to where the export should be saved.</span></p><p class=\"Preformatted_20_Text\"> filename       – Specifies filename of the .xml file to save the exported application information to.</p><p class=\"Preformatted_20_Text\"> </p><p class=\"Preformatted_20_Text\">Switches:</p><p class=\"Preformatted_20_Text\"> /Q             - Use quiet uninstallers wherever possible (by default only use loud).</p><p class=\"Preformatted_20_Text\"> /U             - Unattended mode (do not ask user for confirmation). WARNING: ONLY USE AFTER</p><p class=\"Preformatted_20_Text\">                  THOROUGH TESTING. UNINSTALL LISTS SHOULD BE AS SPECIFIC AS POSSIBLE TO AVOID.</p><p class=\"Preformatted_20_Text\">                  FALSE POSITIVES. THERE ARE NO WARRANTIES, USE WITH CAUTION.</p><p class=\"Preformatted_20_Text\"> /J=&ltLevel&gt     - Attempt to clean up leftover \"junk\" (Registry entries and files/folders) after</p><p class=\"Preformatted_20_Text\">                  uninstall. If no level is passed then defaults to \"VeryGood\". ***WARNING***: USE</p><p class=\"Preformatted_20_Text\">                  EXTREME CAUTION WHEN CHOOSING ANY LEVEL BELOW VeryGood. THERE ARE NO WARRANTIES.</p><p class=\"Preformatted_20_Text\">                  Valid levels are: VeryGood, Good, Questionable, Bad, Unknown</p><p class=\"Preformatted_20_Text\"> /V             - Verbose logging mode (show more information about what is currently happening).<a id=\"__DdeLink__1304_471570876\"/></p><p class=\"Preformatted_20_Text\"> </p><p class=\"P44\">Return codes:</p><p class=\"P44\">0<span> - The operation completed successfully.</span></p><p class=\"P44\"><span class=\"T20\">1</span><span> - Invalid arguments.</span></p><p class=\"P44\">1223<span> - The operation was canceled by the user.</span></p><p class=\"P44\"> </p><p class=\"P49\">Examples:</p><p class=\"P49\">BCU-console uninstall “D:\\Test\\my_list.bcul” /Q /U</p><p class=\"P49\">BCU-console export out.xml</p><h2 class=\"Heading_20_2\"><a id=\"a_9_3_StoreAppHelper_exe\"><span class=\"heading_numbering\">9.3 </span></a><a id=\"__RefHeading___Toc526_1610471585\"/>StoreAppHelper.exe</h2><p class=\"Preformatted_20_Text\">StoreAppHelper /query</p><p class=\"Preformatted_20_Text\">StoreAppHelper /uninstall FullName</p><p class=\"Preformatted_20_Text\"> </p><p class=\"Preformatted_20_Text\">query <span> – Returns a list of installed Store Apps for current user.</span></p><p class=\"P41\">uninstall<span> – <span class=\"T11\">Uninstalls a single Store App specified by its FullName.</span></span></p><p class=\"P41\"> </p><p class=\"P42\">Return codes:</p><p class=\"P42\">0<span> - The operation completed successfully.</span></p><p class=\"P42\">1627<span> - An unexpected error occurred.</span></p><p class=\"P42\">10022<span> - Invalid arguments.</span></p><h2 class=\"Heading_20_2\"><a id=\"a_9_4_SteamHelper_exe\"><span class=\"heading_numbering\">9.4 </span></a><a id=\"__RefHeading___Toc767_1317069549\"/>S<span class=\"T18\">team</span>Helper.exe</h2><p class=\"P42\">SteamHelper u[ninstall] [/s[ilent]] AppID</p><p class=\"P42\">SteamHelper i[nfo] AppID</p><p class=\"P42\">SteamHelper l[ist]</p><p class=\"P42\">SteamHelper steam</p><p class=\"P42\"> </p><p class=\"P42\">AppID<span> </span><span> - Steam application ID.</span></p><p class=\"P42\">u[ninstall]<span> - Uninstall a Steam app.</span></p><p class=\"P42\">i[nfo]<span> - Show info about a Steam app.</span></p><p class=\"P42\">l[ist]<span> - List Steam app ID's.</span></p><p class=\"P42\">steam<span> </span><span> - Show Steam install location.</span></p><p class=\"P42\">s[ilent]<span> - Don’t prompt for any user input.</span></p><p class=\"P42\"> </p><p class=\"P42\">Return codes:</p><p class=\"P42\">0<span> - The operation completed successfully.</span></p><p class=\"P42\">59<span> - An unexpected error occurred.</span></p><p class=\"P43\">1223<span> - The operation was canceled by the user.</span></p><p class=\"P43\">10022<span> - Invalid arguments.</span></p><h2 class=\"P63\"><a id=\"a_9_5_OculusHelper_exe\"><span class=\"heading_numbering\">9.5 </span></a><a id=\"__RefHeading___Toc939_3737477262\"/>OculusHelper.exe</h2><p class=\"P48\">OculusHelper /query</p><p class=\"P48\">OculusHelper /uninstall <span class=\"T21\">CanonicalName</span></p><p class=\"P48\"> </p><p class=\"P48\">query <span> – Returns a list of installed <span class=\"T21\">Oculus</span> Apps for current user.</span></p><p class=\"P48\">uninstall<span> – <span class=\"T11\">Uninstalls a single Store App specified by its CanonicalName.</span></span></p><p class=\"P48\"> </p><p class=\"P45\">Return codes:</p><p class=\"P45\">0<span> - The operation completed successfully.</span></p><p class=\"P45\">1627<span> - An unexpected error occurred.</span></p><p class=\"P45\">10022<span> - Invalid arguments.</span></p><h2 class=\"P64\"><a id=\"a_9_6_UninstallerAutomatizer_exe\"><span class=\"heading_numbering\">9.6 </span></a><a id=\"__RefHeading___Toc769_1317069549\"/><span class=\"T19\">UninstallerAutomatizer</span>.exe</h2><p class=\"P46\">UninstallerAutomatizer UninstallerType [/K] UninstallCommand</p><p class=\"Preformatted_20_Text\"> </p><p class=\"P47\"><span class=\"T19\">UninstallerType</span><span> <span class=\"T18\">-</span> <span class=\"T19\">Type of the uninstaller, taken from UninstallerType enumeration</span>. <span class=\"T19\">At the moment of writing only “Nsis” is supported.</span></span></p><p class=\"P47\"><span class=\"T19\">K</span> <span> </span><span> </span><span> <span class=\"T18\">-</span> <span class=\"T19\">Kill the uninstaller if automatic uninstallation failed.</span></span></p><p class=\"P46\">UninstallCommand<span> - Path to the target uninstaller with optional arguments.</span></p><p class=\"P47\"> </p><p class=\"P43\">Return codes:</p><p class=\"P43\">0<span> - The operation completed successfully.</span></p><p class=\"P43\">1627<span> - An unexpected error occurred.</span></p><p class=\"P43\">10022<span> - Invalid arguments.</span></p></body></html>"
  },
  {
    "path": "installer/.gitignore",
    "content": "## Ignore for InnoSetup\r\n\r\n[Ii]nput\r\n[Oo]utput\r\n*.tmp"
  },
  {
    "path": "installer/BcuSetup.iss",
    "content": "﻿; Tested with innosetup-6.4.3\r\n\r\n; Normal: include self-contained binaries for both x86 and x64\r\n; Light: include only AnyCPU binaries and automatically download net8 if needed\r\n#define Light\r\n\r\n; =============================================================================\r\n\r\n#define MyAppName          \"BCUninstaller\"\r\n#define MyAppNameShort     \"BCUninstaller\"\r\n#define MyAppPublisher     \"Marcin Szeniak\"\r\n#define MyAppURL           \"https://github.com/Klocman/Bulk-Crap-Uninstaller\"\r\n#define MyAppExeName       \"BCUninstaller.exe\"\r\n#define CurrentYear        GetDateTimeString('yyyy','','')\r\n#define MyAppCopyright     \"Copyright \" + CurrentYear + \" \" + MyAppPublisher\r\n\r\n#ifdef Light\r\n#define InputDir           \"..\\bin\\publish-AnyCPU-net8.0\"\r\n#define MainExePath        InputDir+'\\'+MyAppExeName\r\n; Downloading net8 is only necessary in light mode\r\n#include \"CodeDependencies.iss\"\r\n#else\r\n#define InputDir           \"..\\bin\\publish\"\r\n#define MainExePath        InputDir+'\\win-x64\\'+MyAppExeName\r\n; Portable page only works in normal mode\r\n#include \"PortablePage.iss\"\r\n#endif\r\n\r\n#define                    MajorVersion    \r\n#define                    MinorVersion    \r\n#define                    RevisionVersion    \r\n#define                    BuildVersion    \r\n#define TempVersion        ParseVersion(MainExePath, MajorVersion, MinorVersion, RevisionVersion, BuildVersion)\r\n#define MyAppVersion       str(MajorVersion) + \".\" + str(MinorVersion) + \".\" + str(RevisionVersion) + \".\" + str(BuildVersion)\r\n#define MyAppVersionShort  str(MajorVersion) + \".\" + str(MinorVersion) + \".\" + str(RevisionVersion)\r\n\r\n\r\n[Setup]\r\nAppId={{f4fef76c-1aa9-441c-af7e-d27f58d898d1}\r\nAppName={#MyAppName}\r\nAppVersion={#MyAppVersion}\r\nAppVerName={#MyAppName} {#MyAppVersion}\r\n\r\nAppPublisher={#MyAppPublisher}\r\nAppPublisherURL={#MyAppURL}\r\n\r\nAppSupportURL={#MyAppURL}\r\nAppUpdatesURL={#MyAppURL}\r\n\r\nDefaultDirName={commonpf}\\{#MyAppName}\r\nDefaultGroupName={#MyAppName}\r\nUninstallDisplayIcon={app}\\{#MyAppExeName}\r\n\r\nWizardImageFile=assets\\bigImage.bmp\r\nWizardSmallImageFile=assets\\smallImage.bmp\r\nSetupIconFile=assets\\logo.ico\r\n\r\nAllowNoIcons=yes\r\nDisableDirPage=no\r\nLicenseFile={#InputDir}\\Licence.txt\r\nOutputBaseFilename={#MyAppNameShort}_{#MyAppVersionShort}_setup\r\n\r\nCompression=lzma2/ultra\r\nSolidCompression=yes\r\nLZMAUseSeparateProcess=yes\r\nLZMADictionarySize=548570\r\nLZMANumFastBytes=273\r\nLZMANumBlockThreads=8\r\n\r\nPrivilegesRequired=admin\r\nArchitecturesAllowed=x86compatible\r\nArchitecturesInstallIn64BitMode=x64compatible\r\n\r\nVersionInfoCompany={#MyAppPublisher}\r\n;VersionInfoDescription=desc\r\nVersionInfoCopyright={#MyAppCopyright}\r\nVersionInfoProductName={#MyAppName}\r\nVersionInfoProductTextVersion={#MyAppVersion}\r\nVersionInfoTextVersion={#MyAppVersion}\r\n\r\n[Languages]\r\nName: \"en\"; MessagesFile: \"compiler:Default.isl\"\r\nName: \"fr\"; MessagesFile: \"compiler:Languages\\French.isl\"\r\nName: \"pl\"; MessagesFile: \"compiler:Languages\\Polish.isl\"\r\nName: \"de\"; MessagesFile: \"compiler:Languages\\German.isl\"\r\nName: \"sl\"; MessagesFile: \"compiler:Languages\\Slovenian.isl\"\r\nName: \"nl\"; MessagesFile: \"compiler:Languages\\Dutch.isl\"\r\nName: \"es\"; MessagesFile: \"compiler:Languages\\Spanish.isl\"\r\nName: \"bpt\"; MessagesFile: \"compiler:Languages\\BrazilianPortuguese.isl\"\r\nName: \"ru\"; MessagesFile: \"compiler:Languages\\Russian.isl\"\r\nName: \"it\"; MessagesFile: \"compiler:Languages\\Italian.isl\"\r\nName: \"hu\"; MessagesFile: \"compiler:Languages\\Hungarian.isl\"\r\nName: \"tr\"; MessagesFile: \"compiler:Languages\\Turkish.isl\"\r\nName: \"vi\"; MessagesFile: \"lang\\Vietnamese.isl\"\r\nName: \"hi\"; MessagesFile: \"lang\\Hindi.isl\"\r\nName: \"zh_cn\"; MessagesFile: \"lang\\ChineseSimplified.isl\"\r\n\r\n[Components]\r\nName: \"main\"; Description: \"{cm:MainFiles}\"; Types: full compact custom; Flags: fixed\r\nName: \"lang\"; Description: \"{cm:ExtraLanguages}\"; Types: full\r\n\r\n[Files]\r\n#ifdef Light\r\n\r\n; Need to do this to separate the language resource folders from main app file\r\nSource: \"{#InputDir}\\*\";                DestDir: \"{app}\\\";          Components: main; Flags: ignoreversion recursesubdirs; Excludes: \"CleanLogs.bat,\\??\\*,\\??-??\\*,\\??-????\\*\";\r\n; If installing languages, copy everything\r\nSource: \"{#InputDir}\\*\";                DestDir: \"{app}\\\";          Components: lang; Flags: ignoreversion recursesubdirs; Excludes: \"CleanLogs.bat\";\r\n\r\n#else \r\n\r\nSource: \"{#InputDir}\\*\";                        DestDir: \"{app}\"; Components: main; Flags: ignoreversion; Check: IsPortable or not IsPortable\r\nSource: \"{#InputDir}\\BCU_manual.html\";          DestDir: \"{app}\"; Components: main; Flags: ignoreversion isreadme; Check: IsPortable or not IsPortable\r\n\r\n; Need to do this to separate the language resource folders from main app files\r\nSource: \"{#InputDir}\\win-x64\\*\";                DestDir: \"{app}\\win-x64\";           Components: main; Flags: ignoreversion; Excludes: \"CleanLogs.bat\"; Check: Is64BitInstallMode or IsPortable\r\nSource: \"{#InputDir}\\win-x64\\Resources\\*\";      DestDir: \"{app}\\win-x64\\Resources\"; Components: main; Flags: ignoreversion recursesubdirs;             Check: Is64BitInstallMode or IsPortable\r\nSource: \"{#InputDir}\\win-x86\\*\";                DestDir: \"{app}\\win-x86\";           Components: main; Flags: ignoreversion; Excludes: \"CleanLogs.bat\"; Check: not Is64BitInstallMode or IsPortable\r\nSource: \"{#InputDir}\\win-x86\\Resources\\*\";      DestDir: \"{app}\\win-x86\\Resources\"; Components: main; Flags: ignoreversion recursesubdirs;             Check: not Is64BitInstallMode or IsPortable\r\n\r\n; If installing languages, copy everything\r\nSource: \"{#InputDir}\\win-x64\\*\";                DestDir: \"{app}\\win-x64\"; Components: lang; Flags: ignoreversion recursesubdirs; Excludes: \"CleanLogs.bat\"; Check: Is64BitInstallMode or IsPortable\r\nSource: \"{#InputDir}\\win-x86\\*\";                DestDir: \"{app}\\win-x86\"; Components: lang; Flags: ignoreversion recursesubdirs; Excludes: \"CleanLogs.bat\"; Check: not Is64BitInstallMode or IsPortable\r\n\r\n; Only copy the cleaning script if installing as portable\r\nSource: \"{#InputDir}\\win-x64\\CleanLogs.bat\";    DestDir: \"{app}\\win-x64\"; Components: main; Flags: ignoreversion; Check: IsPortable\r\nSource: \"{#InputDir}\\win-x86\\CleanLogs.bat\";    DestDir: \"{app}\\win-x86\"; Components: main; Flags: ignoreversion; Check: IsPortable\r\n\r\n#endif\r\n\r\n[InstallDelete]\r\nName: {app}\\BCU-launcher.exe; Type: files\r\n; Make sure there are no old stale versions. Settings file is kept in the root directory so it will survive.\r\nName: {app}\\win-x64; Type: filesandordirs\r\nName: {app}\\win-x86; Type: filesandordirs\r\n\r\n[Tasks]\r\nName: \"desktopicon\"; Description: \"{cm:CreateDesktopIcon}\"; Check: IsNotPortable\r\n\r\n[Icons]\r\nName: \"{group}\\{#MyAppName}\"; Filename: \"{app}\\{#MyAppExeName}\"; Check: IsNotPortable;\r\nName: \"{group}\\{cm:UninstallProgram,{#MyAppName}}\"; Filename: \"{uninstallexe}\"; Check: IsNotPortable;\r\nName: \"{commondesktop}\\{#MyAppName}\"; Filename: \"{app}\\{#MyAppExeName}\"; Tasks: desktopicon; Check: IsNotPortable;\r\n\r\n[Run]\r\nFilename: \"{app}\\{#MyAppExeName}\"; Description: \"{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}\"; Flags: nowait postinstall skipifsilent shellexec\r\n\r\n#ifdef Light\r\n[Code]\r\nfunction IsPortable(): Boolean;\r\nbegin\r\n  Result := False\r\nend;\r\nfunction IsNotPortable(): Boolean;\r\nbegin\r\n  Result := True\r\nend;\r\n\r\nfunction InitializeSetup: Boolean;\r\nbegin\r\n  Dependency_AddDotNet80Desktop;\r\n  Result := True;\r\nend;\r\n#endif\r\n\r\n[CustomMessages] \r\nen.MainFiles=Main Files\r\npl.MainFiles=Główne pliki\r\nfr.MainFiles=Principaux fichiers\r\nde.MainFiles=Haupt Dateien \r\nhu.MainFiles=Fő fájlok\r\nsl.MainFiles=Glavne datoteke\r\nnl.MainFiles=Hoofdbestanden\r\nes.MainFiles=Archivos principales\r\nbpt.MainFiles=Arquivos principais\r\nru.MainFiles=Основные файлы программы\r\nit.MainFiles=File programma\r\nvi.MainFiles=Các tập tin chương trình chính\r\ntr.MainFiles=Ana Dosyalar\r\nzh_cn.MainFiles=主文件\r\nhi.MainFiles=मुख्य फ़ाइलें\r\n\r\nen.ExtraLanguages=Extra Languages\r\npl.ExtraLanguages=Dodatkowe języki\r\nfr.ExtraLanguages=Langues supplémentaires\r\nde.ExtraLanguages=Zusätzliche Sprachen \r\nhu.ExtraLanguages=Extra nyelvek\r\nsl.ExtraLanguages=Dodatni jeziki\r\nnl.ExtraLanguages=Extra talen\r\nes.ExtraLanguages=Idiomas adicionales\r\nbpt.ExtraLanguages=Línguas extras\r\nru.ExtraLanguages=Дополнительные языки\r\nit.ExtraLanguages=Lingue aggiuntive\r\nvi.ExtraLanguages=Ngôn ngữ bổ sung\r\ntr.ExtraLanguages=İlave Diller\r\nzh_cn.ExtraLanguages=其他语言\r\nhi.ExtraLanguages=अतिरिक्त भाषाएँ\r\n"
  },
  {
    "path": "installer/CodeDependencies.iss",
    "content": "﻿[Code]\n// https://github.com/DomGries/InnoDependencyInstaller\n\n// types and variables\ntype\n  TDependency_Entry = record\n    Filename: String;\n    Parameters: String;\n    Title: String;\n    URL: String;\n    Checksum: String;\n    ForceSuccess: Boolean;\n    RestartAfter: Boolean;\n  end;\n\nvar\n  Dependency_Memo: String;\n  Dependency_List: array of TDependency_Entry;\n  Dependency_NeedToRestart, Dependency_ForceX86: Boolean;\n  Dependency_DownloadPage: TDownloadWizardPage;\n\nprocedure Dependency_Add(const Filename, Parameters, Title, URL, Checksum: String; const ForceSuccess, RestartAfter: Boolean);\nvar\n  Dependency: TDependency_Entry;\n  DependencyCount: Integer;\nbegin\n  Dependency_Memo := Dependency_Memo + #13#10 + '%1' + Title;\n\n  Dependency.Filename := Filename;\n  Dependency.Parameters := Parameters;\n  Dependency.Title := Title;\n\n  if FileExists(ExpandConstant('{tmp}{\\}') + Filename) then begin\n    Dependency.URL := '';\n  end else begin\n    Dependency.URL := URL;\n  end;\n\n  Dependency.Checksum := Checksum;\n  Dependency.ForceSuccess := ForceSuccess;\n  Dependency.RestartAfter := RestartAfter;\n\n  DependencyCount := GetArrayLength(Dependency_List);\n  SetArrayLength(Dependency_List, DependencyCount + 1);\n  Dependency_List[DependencyCount] := Dependency;\nend;\n\n<event('InitializeWizard')>\nprocedure Dependency_InitializeWizard;\nbegin\n  Dependency_DownloadPage := CreateDownloadPage(SetupMessage(msgWizardPreparing), SetupMessage(msgPreparingDesc), nil);\nend;\n\n<event('PrepareToInstall')>\nfunction Dependency_PrepareToInstall(var NeedsRestart: Boolean): String;\nvar\n  DependencyCount, DependencyIndex, ResultCode: Integer;\n  Retry: Boolean;\n  TempValue: String;\nbegin\n  DependencyCount := GetArrayLength(Dependency_List);\n\n  if DependencyCount > 0 then begin\n    Dependency_DownloadPage.Show;\n\n    for DependencyIndex := 0 to DependencyCount - 1 do begin\n      if Dependency_List[DependencyIndex].URL <> '' then begin\n        Dependency_DownloadPage.Clear;\n        Dependency_DownloadPage.Add(Dependency_List[DependencyIndex].URL, Dependency_List[DependencyIndex].Filename, Dependency_List[DependencyIndex].Checksum);\n\n        Retry := True;\n        while Retry do begin\n          Retry := False;\n\n          try\n            Dependency_DownloadPage.Download;\n          except\n            if Dependency_DownloadPage.AbortedByUser then begin\n              Result := Dependency_List[DependencyIndex].Title;\n              DependencyIndex := DependencyCount;\n            end else begin\n              case SuppressibleMsgBox(AddPeriod(GetExceptionMessage), mbError, MB_ABORTRETRYIGNORE, IDIGNORE) of\n                IDABORT: begin\n                  Result := Dependency_List[DependencyIndex].Title;\n                  DependencyIndex := DependencyCount;\n                end;\n                IDRETRY: begin\n                  Retry := True;\n                end;\n              end;\n            end;\n          end;\n        end;\n      end;\n    end;\n\n    if Result = '' then begin\n      for DependencyIndex := 0 to DependencyCount - 1 do begin\n        Dependency_DownloadPage.SetText(Dependency_List[DependencyIndex].Title, '');\n        Dependency_DownloadPage.SetProgress(DependencyIndex + 1, DependencyCount + 1);\n\n        while True do begin\n          ResultCode := 0;\n#ifdef Dependency_CustomExecute\n          if {#Dependency_CustomExecute}(ExpandConstant('{tmp}{\\}') + Dependency_List[DependencyIndex].Filename, Dependency_List[DependencyIndex].Parameters, ResultCode) then begin\n#else\n          if ShellExec('', ExpandConstant('{tmp}{\\}') + Dependency_List[DependencyIndex].Filename, Dependency_List[DependencyIndex].Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then begin\n#endif\n            if Dependency_List[DependencyIndex].RestartAfter then begin\n              if DependencyIndex = DependencyCount - 1 then begin\n                Dependency_NeedToRestart := True;\n              end else begin\n                NeedsRestart := True;\n                Result := Dependency_List[DependencyIndex].Title;\n              end;\n              break;\n            end else if (ResultCode = 0) or Dependency_List[DependencyIndex].ForceSuccess then begin // ERROR_SUCCESS (0)\n              break;\n            end else if ResultCode = 1641 then begin // ERROR_SUCCESS_REBOOT_INITIATED (1641)\n              NeedsRestart := True;\n              Result := Dependency_List[DependencyIndex].Title;\n              break;\n            end else if ResultCode = 3010 then begin // ERROR_SUCCESS_REBOOT_REQUIRED (3010)\n              Dependency_NeedToRestart := True;\n              break;\n            end;\n          end;\n\n          case SuppressibleMsgBox(FmtMessage(SetupMessage(msgErrorFunctionFailed), [Dependency_List[DependencyIndex].Title, IntToStr(ResultCode)]), mbError, MB_ABORTRETRYIGNORE, IDIGNORE) of\n            IDABORT: begin\n              Result := Dependency_List[DependencyIndex].Title;\n              break;\n            end;\n            IDIGNORE: begin\n              break;\n            end;\n          end;\n        end;\n\n        if Result <> '' then begin\n          break;\n        end;\n      end;\n\n      if NeedsRestart then begin\n        TempValue := '\"' + ExpandConstant('{srcexe}') + '\" /restart=1 /LANG=\"' + ExpandConstant('{language}') + '\" /DIR=\"' + WizardDirValue + '\" /GROUP=\"' + WizardGroupValue + '\" /TYPE=\"' + WizardSetupType(False) + '\" /COMPONENTS=\"' + WizardSelectedComponents(False) + '\" /TASKS=\"' + WizardSelectedTasks(False) + '\"';\n        if WizardNoIcons then begin\n          TempValue := TempValue + ' /NOICONS';\n        end;\n        RegWriteStringValue(HKA, 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce', '{#SetupSetting(\"AppName\")}', TempValue);\n      end;\n    end;\n\n    Dependency_DownloadPage.Hide;\n  end;\nend;\n\n#ifndef Dependency_NoUpdateReadyMemo\n<event('UpdateReadyMemo')>\n#endif\nfunction Dependency_UpdateReadyMemo(const Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;\nbegin\n  Result := '';\n  if MemoUserInfoInfo <> '' then begin\n    Result := Result + MemoUserInfoInfo + Newline + NewLine;\n  end;\n  if MemoDirInfo <> '' then begin\n    Result := Result + MemoDirInfo + Newline + NewLine;\n  end;\n  if MemoTypeInfo <> '' then begin\n    Result := Result + MemoTypeInfo + Newline + NewLine;\n  end;\n  if MemoComponentsInfo <> '' then begin\n    Result := Result + MemoComponentsInfo + Newline + NewLine;\n  end;\n  if MemoGroupInfo <> '' then begin\n    Result := Result + MemoGroupInfo + Newline + NewLine;\n  end;\n  if MemoTasksInfo <> '' then begin\n    Result := Result + MemoTasksInfo;\n  end;\n\n  if Dependency_Memo <> '' then begin\n    if MemoTasksInfo = '' then begin\n      Result := Result + SetupMessage(msgReadyMemoTasks);\n    end;\n    Result := Result + FmtMessage(Dependency_Memo, [Space]);\n  end;\nend;\n\n<event('NeedRestart')>\nfunction Dependency_NeedRestart: Boolean;\nbegin\n  Result := Dependency_NeedToRestart;\nend;\n\nfunction Dependency_IsX64: Boolean;\nbegin\n  Result := not Dependency_ForceX86 and Is64BitInstallMode;\nend;\n\nfunction Dependency_String(const x86, x64: String): String;\nbegin\n  if Dependency_IsX64 then begin\n    Result := x64;\n  end else begin\n    Result := x86;\n  end;\nend;\n\nfunction Dependency_ArchSuffix: String;\nbegin\n  Result := Dependency_String('', '_x64');\nend;\n\nfunction Dependency_ArchTitle: String;\nbegin\n  Result := Dependency_String(' (x86)', ' (x64)');\nend;\n\nfunction Dependency_IsNetCoreInstalled(Runtime: String; Major, Minor, Revision: Word): Boolean;\nvar\n  Path: String;\n  ResultCode: Integer;\n  Output: TExecOutput;\n  LineIndex: Integer;\n  LineParts: TArrayOfString;\n  PackedVersion: Int64;\n  LineMajor, LineMinor, LineRevision, LineBuild: Word;\nbegin\n  if not RegQueryStringValue(HKLM32, 'SOFTWARE\\dotnet\\Setup\\InstalledVersions\\x' + Dependency_String('86', '64'), 'InstallLocation', Path) or not FileExists(Path + 'dotnet.exe') then begin\n    Path := ExpandConstant(Dependency_String('{commonpf32}', '{commonpf64}')) + '\\dotnet\\';\n  end;\n  if ExecAndCaptureOutput(Path + 'dotnet.exe', '--list-runtimes', '', SW_HIDE, ewWaitUntilTerminated, ResultCode, Output) and (ResultCode = 0) then begin\n    for LineIndex := 0 to Length(Output.StdOut) - 1 do begin\n      LineParts := StringSplit(Trim(Output.StdOut[LineIndex]), [' '], stExcludeEmpty);\n\n      if (Length(LineParts) > 1) and (Lowercase(LineParts[0]) = Lowercase(Runtime)) and StrToVersion(LineParts[1], PackedVersion) then begin\n        UnpackVersionComponents(PackedVersion, LineMajor, LineMinor, LineRevision, LineBuild);\n\n        if (LineMajor = Major) and (LineMinor = Minor) and (LineRevision >= Revision) then begin\n          Result := True;\n          exit;\n        end;\n      end;\n    end;\n  end;\n  Result := False;\nend;\n\nprocedure Dependency_AddDotNet35;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet-framework/net35-sp1\n  if not IsDotNetInstalled(net35, 1) then begin\n    Dependency_Add('dotnetfx35.exe',\n      '/lang:enu /passive /norestart',\n      '.NET Framework 3.5 Service Pack 1',\n      'https://download.microsoft.com/download/2/0/E/20E90413-712F-438C-988E-FDAA79A8AC3D/dotnetfx35.exe',\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet40;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet-framework/net40\n  if not IsDotNetInstalled(net4full, 0) then begin\n    Dependency_Add('dotNetFx40_Full_setup.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Framework 4.0',\n      'https://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe',\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet45;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet-framework/net452\n  if not IsDotNetInstalled(net452, 0) then begin\n    Dependency_Add('dotnetfx45.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Framework 4.5.2',\n      'https://go.microsoft.com/fwlink/?LinkId=397707',\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet46;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet-framework/net462\n  if not IsDotNetInstalled(net462, 0) then begin\n    Dependency_Add('dotnetfx46.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Framework 4.6.2',\n      'https://go.microsoft.com/fwlink/?linkid=780596',\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet47;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet-framework/net472\n  if not IsDotNetInstalled(net472, 0) then begin\n    Dependency_Add('dotnetfx47.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Framework 4.7.2',\n      'https://go.microsoft.com/fwlink/?LinkId=863262',\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet48;\nbegin\n    // https://dotnet.microsoft.com/download/dotnet-framework/net48\n    if not IsDotNetInstalled(net48, 0) then begin\n      Dependency_Add('dotnetfx48.exe',\n        '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n        '.NET Framework 4.8',\n        'https://go.microsoft.com/fwlink/?LinkId=2085155',\n        '', False, False);\n    end;\nend;\n\nprocedure Dependency_AddDotNet481;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet-framework/net481\n  if not IsDotNetInstalled(net481, 0) then begin\n    Dependency_Add('dotnetfx481.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Framework 4.8.1',\n      'https://go.microsoft.com/fwlink/?LinkId=2203304',\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddNetCore31;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet-core/3.1\n  if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 3, 1, 32) then begin\n    Dependency_Add('netcore31' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Core Runtime 3.1.32' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/de4b3438-24a2-4d1d-a845-97355cf97b71/515abb880478b49f7c1bced8fbf07b16/dotnet-runtime-3.1.32-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/476eba79-f17f-49c8-a213-0f24a22cd026/37c02de81ff5b76ac57a5427462395f1/dotnet-runtime-3.1.32-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddNetCore31Asp;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet-core/3.1\n  if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 3, 1, 32) then begin\n    Dependency_Add('netcore31asp' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      'ASP.NET Core Runtime 3.1.32' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/63b482d2-04b2-4dd4-baaf-d1e78de80738/40321091c872f4e77337b68fc61a5a07/aspnetcore-runtime-3.1.32-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/98910750-2644-472c-ab2b-17f315ccb953/c2a4c223ee11e2eec7d13744e7a45547/aspnetcore-runtime-3.1.32-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddNetCore31Desktop;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet-core/3.1\n  if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 3, 1, 32) then begin\n    Dependency_Add('netcore31desktop' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Desktop Runtime 3.1.32' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/3f353d2c-0431-48c5-bdf6-fbbe8f901bb5/542a4af07c1df5136a98a1c2df6f3d62/windowsdesktop-runtime-3.1.32-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/b92958c6-ae36-4efa-aafe-569fced953a5/1654639ef3b20eb576174c1cc200f33a/windowsdesktop-runtime-3.1.32-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet50;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/5.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 5, 0, 17) then begin\n    Dependency_Add('dotnet50' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Runtime 5.0.17' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/54683c13-6b04-4d7d-b4d4-1f055b50ea43/e99048e2840d57040e8312058853a5b9/dotnet-runtime-5.0.17-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/a0832b5a-6900-442b-af79-6ffddddd6ba4/e2df0b25dd851ee0b38a86947dd0e42e/dotnet-runtime-5.0.17-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet50Asp;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/5.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 5, 0, 17) then begin\n    Dependency_Add('dotnet50asp' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      'ASP.NET Core Runtime 5.0.17' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/4bfa247d-321d-4b29-a34b-62320849059b/8df7a17d9aad4044efe9b5b1c423e82c/aspnetcore-runtime-5.0.17-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/3789ec90-2717-424f-8b9c-3adbbcea6c16/2085cc5ff077b8789ff938015392e406/aspnetcore-runtime-5.0.17-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet50Desktop;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/5.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 5, 0, 17) then begin\n    Dependency_Add('dotnet50desktop' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Desktop Runtime 5.0.17' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/b6fe5f2a-95f4-46f1-9824-f5994f10bc69/db5ec9b47ec877b5276f83a185fdb6a0/windowsdesktop-runtime-5.0.17-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/3aa4e942-42cd-4bf5-afe7-fc23bd9c69c5/64da54c8864e473c19a7d3de15790418/windowsdesktop-runtime-5.0.17-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet60;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/6.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 6, 0, 36) then begin\n    Dependency_Add('dotnet60' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Runtime 6.0.36' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/727d79cb-6a4c-4a6b-bd9e-af99ad62de0b/5cd3550f1589a2f1b3a240c745dd1023/dotnet-runtime-6.0.36-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/1a5fc50a-9222-4f33-8f73-3c78485a55c7/1cb55899b68fcb9d98d206ba56f28b66/dotnet-runtime-6.0.36-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet60Asp;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/6.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 6, 0, 36) then begin\n    Dependency_Add('dotnet60asp' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      'ASP.NET Core Runtime 6.0.36' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/8cfa7f46-88f2-4521-a2d8-59b827420344/447de18a48115ac0fe6f381f0528e7a5/aspnetcore-runtime-6.0.36-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/0f0ea01c-ef7c-4493-8960-d1e9269b718b/3f95c5bd383be65c2c3384e9fa984078/aspnetcore-runtime-6.0.36-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet60Desktop;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/6.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 6, 0, 36) then begin\n    Dependency_Add('dotnet60desktop' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Desktop Runtime 6.0.36' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/cdc314df-4a4c-4709-868d-b974f336f77f/acd5ab7637e456c8a3aa667661324f6d/windowsdesktop-runtime-6.0.36-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/f6b6c5dc-e02d-4738-9559-296e938dabcb/b66d365729359df8e8ea131197715076/windowsdesktop-runtime-6.0.36-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet70;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/7.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 7, 0, 20) then begin\n    Dependency_Add('dotnet70' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Runtime 7.0.20' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/b2e820bd-b591-43df-ab10-1eeb7998cc18/661ca79db4934c6247f5c7a809a62238/dotnet-runtime-7.0.20-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/be7eaed0-4e32-472b-b53e-b08ac3433a22/fc99a5977c57cbfb93b4afb401953818/dotnet-runtime-7.0.20-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet70Asp;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/7.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 7, 0, 20) then begin\n    Dependency_Add('dotnet70asp' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      'ASP.NET Core Runtime 7.0.20' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/d84ac38e-a248-4c8d-b1fe-4ee092d6b4b1/9f0bf370619ab3da8869e467827a6dc6/aspnetcore-runtime-7.0.20-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/10651a65-8afc-46e3-9287-fecb0e68504e/4c2bf0cdb44612f29d9b3f901098e13e/aspnetcore-runtime-7.0.20-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet70Desktop;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/7.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 7, 0, 20) then begin\n    Dependency_Add('dotnet70desktop' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Desktop Runtime 7.0.20' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/b840017b-c69f-4724-a152-11020a0039e6/b74aa12e4ee765a3387a7dcd4ba56187/windowsdesktop-runtime-7.0.20-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/08bbfe8f-812d-479f-803b-23ea0bffce47/c320e4b037f3e92ab7ea92c3d7ea3ca1/windowsdesktop-runtime-7.0.20-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\n\nprocedure Dependency_AddDotNet80;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/8.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 8, 0, 13) then begin\n    Dependency_Add('dotnet80' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Runtime 8.0.13' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/5bac19ad-0711-4eba-a5a3-5e818c5f2fdf/cdec118c18b8457fe4d3ff918f78b4bd/dotnet-runtime-8.0.13-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/9c2068f2-dd3e-46cb-a88d-3c2d35b5181f/9ce26210851b0720c5382c6cd056b126/dotnet-runtime-8.0.13-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet80Asp;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/8.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 8, 0, 13) then begin\n    Dependency_Add('dotnet80asp' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      'ASP.NET Core Runtime 8.0.13' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/b11da59f-561b-466b-bfa8-d2dfc9b5bf48/f8dce6a44fd7be61ff97fe4949e57015/aspnetcore-runtime-8.0.13-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/86b8931f-09f6-4fce-b546-8139350da0c4/d6a5f16bcf81e0b5e9a733b892b1240f/aspnetcore-runtime-8.0.13-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet80Desktop;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/8.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 8, 0, 13) then begin\n    Dependency_Add('dotnet80desktop' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Desktop Runtime 8.0.13' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/b1827c52-ec83-4b3e-8d24-f321276bcdea/812e8d5871111cdc02cc82209c7d45fd/windowsdesktop-runtime-8.0.13-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/fc8c9dea-8180-4dad-bf1b-5f229cf47477/c3f0536639ab40f1470b6bad5e1b95b8/windowsdesktop-runtime-8.0.13-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet90;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/9.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 9, 0, 4) then begin\n    Dependency_Add('dotnet90' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Runtime 9.0.4' + Dependency_ArchTitle,\n      Dependency_String('https://builds.dotnet.microsoft.com/dotnet/Runtime/9.0.4/dotnet-runtime-9.0.4-win-x86.exe', 'https://builds.dotnet.microsoft.com/dotnet/Runtime/9.0.4/dotnet-runtime-9.0.4-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet90Asp;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/9.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 9, 0, 4) then begin\n    Dependency_Add('dotnet90asp' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      'ASP.NET Core Runtime 9.0.4' + Dependency_ArchTitle,\n      Dependency_String('https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/9.0.4/aspnetcore-runtime-9.0.4-win-x86.exe', 'https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/9.0.4/aspnetcore-runtime-9.0.4-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDotNet90Desktop;\nbegin\n  // https://dotnet.microsoft.com/download/dotnet/9.0\n  if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 9, 0, 4) then begin\n    Dependency_Add('dotnet90desktop' + Dependency_ArchSuffix + '.exe',\n      '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart',\n      '.NET Desktop Runtime 9.0.4' + Dependency_ArchTitle,\n      Dependency_String('https://builds.dotnet.microsoft.com/dotnet/WindowsDesktop/9.0.4/windowsdesktop-runtime-9.0.4-win-x86.exe', 'https://builds.dotnet.microsoft.com/dotnet/WindowsDesktop/9.0.4/windowsdesktop-runtime-9.0.4-win-x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddVC2005;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=26347\n  if not IsMsiProductInstalled(Dependency_String('{86C9D5AA-F00C-4921-B3F2-C60AF92E2844}', '{A8D19029-8E5C-4E22-8011-48070F9E796E}'), PackVersionComponents(8, 0, 61000, 0)) then begin\n    Dependency_Add('vcredist2005' + Dependency_ArchSuffix + '.exe',\n      '/q',\n      'Visual C++ 2005 Service Pack 1 Redistributable' + Dependency_ArchTitle,\n      Dependency_String('https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x86.EXE', 'https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x64.EXE'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddVC2008;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=26368\n  if not IsMsiProductInstalled(Dependency_String('{DE2C306F-A067-38EF-B86C-03DE4B0312F9}', '{FDA45DDF-8E17-336F-A3ED-356B7B7C688A}'), PackVersionComponents(9, 0, 30729, 6161)) then begin\n    Dependency_Add('vcredist2008' + Dependency_ArchSuffix + '.exe',\n      '/q',\n      'Visual C++ 2008 Service Pack 1 Redistributable' + Dependency_ArchTitle,\n      Dependency_String('https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe', 'https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddVC2010;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=26999\n  if not IsMsiProductInstalled(Dependency_String('{1F4F1D2A-D9DA-32CF-9909-48485DA06DD5}', '{5B75F761-BAC8-33BC-A381-464DDDD813A3}'), PackVersionComponents(10, 0, 40219, 0)) then begin\n    Dependency_Add('vcredist2010' + Dependency_ArchSuffix + '.exe',\n      '/passive /norestart',\n      'Visual C++ 2010 Service Pack 1 Redistributable' + Dependency_ArchTitle,\n      Dependency_String('https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe', 'https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddVC2012;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=30679\n  if not IsMsiProductInstalled(Dependency_String('{4121ED58-4BD9-3E7B-A8B5-9F8BAAE045B7}', '{EFA6AFA1-738E-3E00-8101-FD03B86B29D1}'), PackVersionComponents(11, 0, 61030, 0)) then begin\n    Dependency_Add('vcredist2012' + Dependency_ArchSuffix + '.exe',\n      '/passive /norestart',\n      'Visual C++ 2012 Update 4 Redistributable' + Dependency_ArchTitle,\n      Dependency_String('https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe', 'https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddVC2013;\nbegin\n  // https://support.microsoft.com/en-us/help/4032938\n  if not IsMsiProductInstalled(Dependency_String('{B59F5BF1-67C8-3802-8E59-2CE551A39FC5}', '{20400CF0-DE7C-327E-9AE4-F0F38D9085F8}'), PackVersionComponents(12, 0, 40664, 0)) then begin\n    Dependency_Add('vcredist2013' + Dependency_ArchSuffix + '.exe',\n      '/passive /norestart',\n      'Visual C++ 2013 Update 5 Redistributable' + Dependency_ArchTitle,\n      Dependency_String('https://download.visualstudio.microsoft.com/download/pr/10912113/5da66ddebb0ad32ebd4b922fd82e8e25/vcredist_x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/10912041/cee5d6bca2ddbcd039da727bf4acb48a/vcredist_x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddVC2015To2022;\nbegin\n  // https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist\n  if not IsMsiProductInstalled(Dependency_String('{65E5BD06-6392-3027-8C26-853107D3CF1A}', '{36F68A90-239C-34DF-B58C-64B30153CE35}'), PackVersionComponents(14, 42, 34433, 0)) then begin\n    Dependency_Add('vcredist2022' + Dependency_ArchSuffix + '.exe',\n      '/passive /norestart',\n      'Visual C++ 2015-2022 Redistributable' + Dependency_ArchTitle,\n      Dependency_String('https://aka.ms/vs/17/release/vc_redist.x86.exe', 'https://aka.ms/vs/17/release/vc_redist.x64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddDirectX;\nbegin\n#ifdef Dependency_Files_DirectX\n  ExtractTemporaryFile('dxwebsetup.exe');\n#endif\n  // https://www.microsoft.com/en-us/download/details.aspx?id=35\n  Dependency_Add('dxwebsetup.exe',\n    '/q',\n    'DirectX Runtime',\n    'https://download.microsoft.com/download/1/7/1/1718CCC4-6315-4D8E-9543-8E28A4E18C4C/dxwebsetup.exe',\n    '', True, False);\nend;\n\nprocedure Dependency_AddSql2008Express;\nvar\n  Version: String;\n  PackedVersion: Int64;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=30438\n  if not RegQueryStringValue(HKLM, 'SOFTWARE\\Microsoft\\Microsoft SQL Server\\MSSQL10_50.MSSQLSERVER\\MSSQLServer\\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(10, 50, 4000, 0)) < 0) then begin\n    Dependency_Add('sql2008express' + Dependency_ArchSuffix + '.exe',\n      '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',\n      'SQL Server 2008 R2 Service Pack 2 Express',\n      Dependency_String('https://download.microsoft.com/download/0/4/B/04BE03CD-EAF3-4797-9D8D-2E08E316C998/SQLEXPR32_x86_ENU.exe', 'https://download.microsoft.com/download/0/4/B/04BE03CD-EAF3-4797-9D8D-2E08E316C998/SQLEXPR_x64_ENU.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddSql2012Express;\nvar\n  Version: String;\n  PackedVersion: Int64;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=56042\n  if not RegQueryStringValue(HKLM, 'SOFTWARE\\Microsoft\\Microsoft SQL Server\\MSSQL11.MSSQLSERVER\\MSSQLServer\\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(11, 0, 7001, 0)) < 0) then begin\n    Dependency_Add('sql2012express' + Dependency_ArchSuffix + '.exe',\n      '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',\n      'SQL Server 2012 Service Pack 4 Express',\n      Dependency_String('https://download.microsoft.com/download/B/D/E/BDE8FAD6-33E5-44F6-B714-348F73E602B6/SQLEXPR32_x86_ENU.exe', 'https://download.microsoft.com/download/B/D/E/BDE8FAD6-33E5-44F6-B714-348F73E602B6/SQLEXPR_x64_ENU.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddSql2014Express;\nvar\n  Version: String;\n  PackedVersion: Int64;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=57473\n  if not RegQueryStringValue(HKLM, 'SOFTWARE\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER\\MSSQLServer\\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(12, 0, 6024, 0)) < 0) then begin\n    Dependency_Add('sql2014express' + Dependency_ArchSuffix + '.exe',\n      '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',\n      'SQL Server 2014 Service Pack 3 Express',\n      Dependency_String('https://download.microsoft.com/download/3/9/F/39F968FA-DEBB-4960-8F9E-0E7BB3035959/SQLEXPR32_x86_ENU.exe', 'https://download.microsoft.com/download/3/9/F/39F968FA-DEBB-4960-8F9E-0E7BB3035959/SQLEXPR_x64_ENU.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddSql2016Express;\nvar\n  Version: String;\n  PackedVersion: Int64;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=103447\n  if not RegQueryStringValue(HKLM, 'SOFTWARE\\Microsoft\\Microsoft SQL Server\\MSSQL13.MSSQLSERVER\\MSSQLServer\\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(13, 0, 6404, 1)) < 0) then begin\n    Dependency_Add('sql2016express' + Dependency_ArchSuffix + '.exe',\n      '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',\n      'SQL Server 2016 Service Pack 3 Express',\n      'https://download.microsoft.com/download/f/a/8/fa83d147-63d1-449c-b22d-5fef9bd5bb46/SQLServer2016-SSEI-Expr.exe',\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddSql2017Express;\nvar\n  Version: String;\n  PackedVersion: Int64;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=55994\n  if not RegQueryStringValue(HKLM, 'SOFTWARE\\Microsoft\\Microsoft SQL Server\\MSSQL14.MSSQLSERVER\\MSSQLServer\\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(14, 0, 0, 0)) < 0) then begin\n    Dependency_Add('sql2017express' + Dependency_ArchSuffix + '.exe',\n      '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',\n      'SQL Server 2017 Express',\n      'https://download.microsoft.com/download/5/E/9/5E9B18CC-8FD5-467E-B5BF-BADE39C51F73/SQLServer2017-SSEI-Expr.exe',\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddSql2019Express;\nvar\n  Version: String;\n  PackedVersion: Int64;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=101064\n  if not RegQueryStringValue(HKLM, 'SOFTWARE\\Microsoft\\Microsoft SQL Server\\MSSQL15.MSSQLSERVER\\MSSQLServer\\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(15, 0, 0, 0)) < 0) then begin\n    Dependency_Add('sql2019express' + Dependency_ArchSuffix + '.exe',\n      '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',\n      'SQL Server 2019 Express',\n      'https://download.microsoft.com/download/7/f/8/7f8a9c43-8c8a-4f7c-9f92-83c18d96b681/SQL2019-SSEI-Expr.exe',\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddSql2022Express;\nvar\n  Version: String;\n  PackedVersion: Int64;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=104781\n  if not RegQueryStringValue(HKLM, 'SOFTWARE\\Microsoft\\Microsoft SQL Server\\MSSQL16.MSSQLSERVER\\MSSQLServer\\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(16, 0, 1000, 6)) < 0) then begin\n    Dependency_Add('sql2022express' + Dependency_ArchSuffix + '.exe',\n      '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER',\n      'SQL Server 2022 Express',\n      'https://go.microsoft.com/fwlink/p/?linkid=2216019',\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddWebView2;\nbegin\n  // https://developer.microsoft.com/en-us/microsoft-edge/webview2\n  if not RegValueExists(HKLM, Dependency_String('SOFTWARE', 'SOFTWARE\\WOW6432Node') + '\\Microsoft\\EdgeUpdate\\Clients\\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', 'pv') then begin\n    Dependency_Add('MicrosoftEdgeWebview2Setup.exe',\n      '/silent /install',\n      'WebView2 Runtime',\n      'https://go.microsoft.com/fwlink/p/?LinkId=2124703',\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddAccessDatabaseEngine2010;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=13255\n  if not RegKeyExists(HKLM, 'SOFTWARE\\Microsoft\\Office\\14.0\\Access Connectivity Engine\\Engines\\ACE') then begin\n    Dependency_Add('AccessDatabaseEngine2010' + Dependency_ArchSuffix + '.exe',\n      '/quiet',\n      'Microsoft Access Database Engine 2010' + Dependency_ArchTitle,\n      Dependency_String('https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine.exe', 'https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine_X64.exe'),\n      '', False, False);\n  end;\nend;\n\nprocedure Dependency_AddAccessDatabaseEngine2016;\nbegin\n  // https://www.microsoft.com/en-us/download/details.aspx?id=54920\n  if not RegKeyExists(HKLM, 'SOFTWARE\\Microsoft\\Office\\16.0\\Access Connectivity Engine\\Engines\\ACE') then begin\n    Dependency_Add('AccessDatabaseEngine2016' + Dependency_ArchSuffix + '.exe',\n      '/quiet',\n      'Microsoft Access Database Engine 2016' + Dependency_ArchTitle,\n      Dependency_String('https://download.microsoft.com/download/3/5/C/35C84C36-661A-44E6-9324-8786B8DBE231/accessdatabaseengine.exe', 'https://download.microsoft.com/download/3/5/C/35C84C36-661A-44E6-9324-8786B8DBE231/accessdatabaseengine_X64.exe'),\n      '', False, False);\n  end;\nend;\n\n[Files]\n#ifdef Dependency_Path_DirectX\nSource: \"{#Dependency_Path_DirectX}dxwebsetup.exe\"; Flags: dontcopy noencryption\n#endif\n"
  },
  {
    "path": "installer/PortablePage.iss",
    "content": "﻿[Setup]\nUninstallable=not IsPortable()\nDisableProgramGroupPage=no\n\n[CustomMessages]\nInstallPortableTitle =Portable Installation\npl.InstallPortableTitle =Instalacja przenośna\nde.InstallPortableTitle =Tragbar Installation\nfr.InstallPortableTitle =Installation Portable      \nhu.InstallPortableTitle =Portable telepítés    \nsl.InstallPortableTitle =Prenosna namestitev                 \nnl.InstallPortableTitle =Portabele installatie\nes.InstallPortableTitle =Instalación portable\nbpt.InstallPortableTitle =Instalação Portátil\nru.InstallPortableTitle =Переносимая установка\nit.InstallPortableTitle =Installazione portatile\nvi.InstallPortableTitle =Cài đặt di động\ntr.InstallPortableTitle =Taşınabilir Kurulum\nzh_cn.InstallPortableTitle =便携式安装\nhi.InstallPortableTitle=पोर्टेबल स्थापना\n\nInstallTypeChoiceTitle =Installation type\npl.InstallTypeChoiceTitle =Typ instalacji\nde.InstallTypeChoiceTitle =Installationstyp\nfr.InstallTypeChoiceTitle =Type d'installation      \nhu.InstallTypeChoiceTitle =Telepítési típus \nsl.InstallTypeChoiceTitle =Vrsta namestitve       \nnl.InstallTypeChoiceTitle =Installatie type\nes.InstallTypeChoiceTitle =Tipo de instalación\nbpt.InstallTypeChoiceTitle =Tipo Instalação\nru.InstallTypeChoiceTitle =Тип установки\nit.InstallTypeChoiceTitle =Tipo di installazione\nvi.InstallTypeChoiceTitle =Loại cài đặt\ntr.InstallTypeChoiceTitle =Kurulum tipi\nzh_cn.InstallTypeChoiceTitle =安装方式\nhi.InstallTypeChoiceTitle=स्थापना प्रकार\n\nInstallStandardTitle =Standard Installation\npl.InstallStandardTitle =Instalacja standardowa\nde.InstallStandardTitle =Standardinstallation\nfr.InstallStandardTitle =Installation Standard       \nhu.InstallStandardTitle =Szabványos telepítés     \nsl.InstallStandardTitle =Standardna namestitev\nnl.InstallStandardTitle =Standaad installatie\nes.InstallStandardTitle =Instalación estándar\nbpt.InstallStandardTitle =Instalação Padrão\nru.InstallStandardTitle =Стандартная установка\nit.InstallStandardTitle =Installazione standard\nvi.InstallStandardTitle =Cài đặt chuẩn\ntr.InstallStandardTitle =Standart Kurulum\nzh_cn.InstallStandardTitle =标准安装\nhi.InstallStandardTitle=मानक स्थापना\n\nInstallPortableInfo =Portable installation will not register itself in the system, it will only extract files to the specified directory. You can set the directory to anything you''d like, for example to a USB drive. You will be able to move this directory freely since the whole app is inside of it.\npl.InstallPortableInfo =Instalacja przenośna nie zostanie zarejestrowana w systemie, zostaną tylko wypakowane pliki. Pliki mogą zostać wypakowane do dowolnego folderu i mogą być bez problemu przenoszone. Wszystkie pliki używane przez tą aplikację będą przechowywane w wybranym folderze.\nde.InstallPortableInfo =Die Portable Installation registriert sich nicht selbst im System, es werden nur Dateien in das angegebene Verzeichnis entpackt. Sie können das Verzeichnis beliebig festlegen, z.B. auf einem USB-Laufwerk. Dieses Verzeichnis können Sie frei verschieben, da darin die gesamte Anwendung ist.\nfr.InstallPortableInfo =L'installation Portable ne s'enregistrera pas elle-même dans le système, elle extraira seulement les fichiers dans le dossier spécifié. Vous pouvez placer le dossier sur tout ce que vous souhaitez, par exemple sur un lecteur USB. Vous pourrez déplacer librement ce dossier du moment que l'application complète se trouve à l'intérieur.\nhu.InstallPortableInfo =A hordozható telepítés esetén a program nem jegyzi ba magát a rendszerbe, a fájljai csak kicsomagolásra kerülnek a megadott könyvtárba. Ez a könyvtár bárhol lehet, akár egy USB meghajtón is. Ezzel a könyvtárat bárhova magával viheti, mivel az az egész alkalmazást tartalmazza.\nsl.InstallPortableInfo =Prenosna namestitev se ne bo prijavila v sistem, ampak bo samo izpisala datoteke v doloceni imenik. Imenik lahko nastavite na vse, kar vam je všec, na primer na pogon USB. Ta imenik boste lahko prosto premaknili, saj je celotna aplikacija znotraj nje.\nnl.InstallPortableInfo =Portabele installatie registreert zich zelf niet in het systeem, het pakt alleen bestanden uit in de opgegeven map. U kunt naar eigen voorkeur een map opgeven, bijvoorbeeld op een USB schijf. Het is mogelijk om deze map later te verplaatsen, omdat daarin het hele programma zit.\nes.InstallPortableInfo =La instalación portable no se registrará en el sistema, sólo extrae los archivos al directorio especificado. Puede colocarlo en cualquier sitio, por ejemplo en una unidad USB. Podrá moverlo libremente ya que la aplicación está dentro del directorio.\nbpt.InstallPortableInfo =A instalação portátil não se registrará no sistema, ela só extrairá arquivos para o diretório especificado. Você pode configurar o diretório para qualquer coisa que você gostaria, por exemplo, para uma unidade USB. Você poderá mover este diretório livremente, já que todo o aplicativo está dentro dele.\nru.InstallPortableInfo =Переносимая установка не регистрируется в системе, она только извлекает файлы в указанный каталог. Вы можете выбрать любой каталог, например, на USB-накопителе. Вы сможете свободно перемещать этот каталог, поскольку все приложение находится внутри него.\nit.InstallPortableInfo =L'installazione portatile non si registrerà nel sistema, estrarrà solo i file nella cartella specificata. Puoi impostare la cartella in qualsiasi percorso, ad esempio in un'unità USB. Sarai in grado di spostare questa cartella liberamente poiché l'intera app è al suo interno.\ntr.InstallPortableInfo =Taşınabilir kurulumda dosyaları sisteme kaydetmez, sadece dosyaları belirtilen dizine çıkarır. Yazılımı istediğiniz herhangi bir yer yapabilirsiniz, örneğin bir USB sürücüsüne ayarlayabilirsiniz. Tüm yazılım, tek bir dosyanın içinde olduğu için bu yazılımı serbestçe taşıyabileceksiniz.\nzh_cn.InstallPortableInfo =便携式安装不会在系统中注册，只会将文件解压缩到指定目录。您可以将目录设置为任何您想要的位置，例如 USB 驱动器。您可以自由移动该目录，因为整个程序都在其中。\nhi.InstallPortableInfo=पोर्टेबल स्थापना अपने आप सिस्टम में रजिस्टर नहीं होगी, बल्कि केवल निर्दिष्ट निर्देशिका में फाइलें एक्सट्रैक्ट करेगी। आप इस निर्देशिका को किसी भी स्थान पर सेट कर सकते हैं, उदाहरण के लिए USB ड्राइव पर। चूंकि सम्पूर्ण ऐप उसी निर्देशिका में है, आप इसे स्वतंत्र रूप से स्थानांतरित कर सकेंगे।\n\nInstallStandardInfo =This option will install BCUninstaller on your computer as a normal application. Standard uninstaller will be created and it will be visible under \"Programs and Features\" as well as in other third-party uninstallers.\npl.InstallStandardInfo =Ta aplikacja zostanie zainstalowana i zarejestrowana w tym systemie. Zostanie stworzony deinstalator i będzie on widoczny w panelu sterowania i innych deinstalatorach.\nde.InstallStandardInfo =Diese Option installiert BCUninstaller auf Ihrem Computer als normale Anwendung. Ein normales Deinstallationsprogramm wird erstellt, und der Eintrag wird unter \"Programme und Features\" ebenso wie in anderen Drittanbieter-Uninstallern angezeigt.\nfr.InstallStandardInfo =Cette option installera BCUninstaller sur votre ordinateur comme une application normale. Un désinstalleur standard sera créé et sera visible sous \"Programmes et Fonctionnalités\" aussi bien que pour tout autre désinstalleur tiers.\nhu.InstallStandardInfo =Ezzel a lehetõséggel úgy kerül telepítésre a BCUninstaller, mint egy normál alkalmazás. A szabványos eltávolítója megtalálható lesz a \"Programok és szolgáltatások\" ablakban, valamint az egyéb eltávolítókban.\nsl.InstallStandardInfo =Ta možnost bo BCUninstaller namestila v racunalnik kot obicajno aplikacijo. Ustvarjen bo standardni odstranjevalec, ki bo viden v razdelku  \"Programi in funkcije\", kot tudi v drugih odstranjevalcih  tretjih avtorjev.\nnl.InstallStandardInfo =Deze optie installeert BCUnistaller op uw computer als een normaal programma. Er wordt een standaard uninstaller gecreëerd en deze wordt zichtbaar onder \"Programma's en Features\" net zoals in andere derde-partij uninstallers.\nes.InstallStandardInfo =Esta opción instalará BCUninstaller en su equipo como una aplicación normal. Se creará un desinstalador estándar y estará visible en \"Programas y características\", así como otros desinstaladores de terceros.\nbpt.InstallStandardInfo =Esta opção irá instalar o BCUninstaller em seu computador como um aplicativo normal. O desinstalador padrão será criado e estará visível em \"Programas e recursos\", bem como em outros desinstaladores de terceiros.\nru.InstallStandardInfo =Эта опция установит BCUninstaller на ваш компьютер как обычное приложение. Будет создана стандартная программа удаления, которая будет видна в разделе «Программы и компоненты», а также в других сторонних программах удаления.\nit.InstallStandardInfo =Questa opzione abiliterà l'installazione di BCUninstaller nel computer come una normale applicazione. Verrà creato il programma di disinstallazione standard e sarà visibile in \"Programmi e funzionalità\" così come in altri programmi di disinstallazione di terze parti.\ntr.InstallStandardInfo =Bu seçenek BCUninstaller'ı bilgisayarınıza normal bir yazılım olarak yükleyecektir. Standart kaldırıcı oluşturulacak ve diğer üçüncü taraf kaldırıcıların yanı sıra “Program ekle ve kaldır” altında da görülebilecektir.\nzh_cn.InstallStandardInfo =此选项会将 BCUninstaller 作为普通应用程序安装到电脑上。标准卸载程序将被创建，并在 “程序和功能 ”以及其他第三方卸载程序中可见。\nhi.InstallStandardInfo=यह विकल्प BCUninstaller को आपके कंप्यूटर पर सामान्य ऐप्लिकेशन के रूप में इंस्टॉल करेगा। एक मानक अनइंस्टॉलर बनाया जाएगा और यह 'प्रोग्राम्स और फीचर्स' के अंतर्गत तथा अन्य थर्ड-पार्टी अनइंस्टॉलर में दिखाई देगा.\n\n\n[Code]\nvar\n  CustomPage: TWizardPage;\n  StandardDescLabel: TLabel;\n  {*StandardRadioButton: TNewRadioButton;  \n  AdvancedRadioButton: TNewRadioButton;    *}\n  AdvancedDescLabel: TLabel;\n  StandardRadioButton: TNewRadioButton;  \n  AdvancedRadioButton: TNewRadioButton;  \n\nfunction IsPortable(): Boolean;\nbegin\n  if(StandardRadioButton.Checked = True) then\n  Result := False\n  else\n  Result := True;\nend;\nfunction IsNotPortable(): Boolean;\nbegin\n  if(StandardRadioButton.Checked = True) then\n  Result := True\n  else\n  Result := False;\nend;\n\nprocedure InitializeWizard;     \n\nbegin\n  CustomPage := CreateCustomPage(wpWelcome, CustomMessage('InstallTypeChoiceTitle'), '');\n  StandardRadioButton := TNewRadioButton.Create(WizardForm);\n  StandardRadioButton.Parent := CustomPage.Surface;\n  StandardRadioButton.Checked := True;\n  StandardRadioButton.Top := 16;\n  StandardRadioButton.Width := CustomPage.SurfaceWidth;\n  StandardRadioButton.Font.Style := [fsBold];\n  StandardRadioButton.Font.Size := 9;\n  StandardRadioButton.Caption := CustomMessage('InstallStandardTitle');\n  StandardDescLabel := TLabel.Create(WizardForm);\n  StandardDescLabel.Parent := CustomPage.Surface;\n  StandardDescLabel.Left := 8;\n  StandardDescLabel.Top := StandardRadioButton.Top + StandardRadioButton.Height + 8;\n  StandardDescLabel.Width := CustomPage.SurfaceWidth - 10; \n  StandardDescLabel.Height := 60;\n  StandardDescLabel.AutoSize := False;\n  StandardDescLabel.Wordwrap := True;\n  StandardDescLabel.Caption := CustomMessage('InstallStandardInfo');\n  AdvancedRadioButton := TNewRadioButton.Create(WizardForm);\n  AdvancedRadioButton.Parent := CustomPage.Surface;\n  AdvancedRadioButton.Top := StandardDescLabel.Top + StandardDescLabel.Height + 16;\n  AdvancedRadioButton.Width := CustomPage.SurfaceWidth;\n  AdvancedRadioButton.Font.Style := [fsBold];\n  AdvancedRadioButton.Font.Size := 9;\n  AdvancedRadioButton.Caption := CustomMessage('InstallPortableTitle');\n  AdvancedDescLabel := TLabel.Create(WizardForm);\n  AdvancedDescLabel.Parent := CustomPage.Surface;\n  AdvancedDescLabel.Left := 8;\n  AdvancedDescLabel.Top := AdvancedRadioButton.Top + AdvancedRadioButton.Height + 8;\n  AdvancedDescLabel.Width := CustomPage.SurfaceWidth - 10;\n  AdvancedDescLabel.Height := 60;\n  AdvancedDescLabel.AutoSize := False;\n  AdvancedDescLabel.Wordwrap := True;\n  AdvancedDescLabel.Caption := CustomMessage('InstallPortableInfo');\nend;\n\nfunction ShouldSkipPage(PageID: Integer): Boolean;\nbegin\n  // initialize result to not skip any page (not necessary, but safer)\n  Result := False;\n\n  if PageID = wpSelectProgramGroup then\n    Result := IsPortable();       \nend;\n\nprocedure CurPageChanged(CurPageID: Integer);\nbegin\n  // Change the default install path if user selected portable install\n  if CurPageID = wpLicense then begin\n    if(AdvancedRadioButton.Checked = True) then\n      WizardForm.DirEdit.Text := ExpandConstant('{sd}\\{#MyAppName}');\n  end;\nend;\n"
  },
  {
    "path": "installer/lang/ChineseSimplified.isl",
    "content": "; *** Inno Setup version 6.4.0+ Chinese Simplified messages ***\n;\n; To download user-contributed translations of this file, go to:\n;   https://jrsoftware.org/files/istrans/\n;\n; Note: When translating this text, do not add periods (.) to the end of\n; messages that didn't have them already, because on those messages Inno\n; Setup adds the periods automatically (appending a period would result in\n; two periods being displayed).\n;\n; Maintained by Zhenghan Yang\n; Email: 847320916@QQ.com\n; Translation based on network resource\n; The latest Translation is on https://github.com/kira-96/Inno-Setup-Chinese-Simplified-Translation\n;\n\n[LangOptions]\n; The following three entries are very important. Be sure to read and \n; understand the '[LangOptions] section' topic in the help file.\nLanguageName=简体中文\n; If Language Name display incorrect, uncomment next line\n; LanguageName=<7B80><4F53><4E2D><6587>\n; About LanguageID, to reference link:\n; https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c\nLanguageID=$0804\n; About CodePage, to reference link:\n; https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers\nLanguageCodePage=936\n; If the language you are translating to requires special font faces or\n; sizes, uncomment any of the following entries and change them accordingly.\n;DialogFontName=\n;DialogFontSize=8\n;WelcomeFontName=Verdana\n;WelcomeFontSize=12\n;TitleFontName=Arial\n;TitleFontSize=29\n;CopyrightFontName=Arial\n;CopyrightFontSize=8\n\n[Messages]\n\n; *** 应用程序标题\nSetupAppTitle=安装\nSetupWindowTitle=安装 - %1\nUninstallAppTitle=卸载\nUninstallAppFullTitle=%1 卸载\n\n; *** Misc. common\nInformationTitle=信息\nConfirmTitle=确认\nErrorTitle=错误\n\n; *** SetupLdr messages\nSetupLdrStartupMessage=现在将安装 %1。您想要继续吗？\nLdrCannotCreateTemp=无法创建临时文件。安装程序已中止\nLdrCannotExecTemp=无法执行临时目录中的文件。安装程序已中止\nHelpTextNote=\n\n; *** 启动错误消息\nLastErrorMessage=%1。%n%n错误 %2: %3\nSetupFileMissing=安装目录中缺少文件 %1。请修正这个问题或者获取程序的新副本。\nSetupFileCorrupt=安装文件已损坏。请获取程序的新副本。\nSetupFileCorruptOrWrongVer=安装文件已损坏，或是与这个安装程序的版本不兼容。请修正这个问题或获取新的程序副本。\nInvalidParameter=无效的命令行参数：%n%n%1\nSetupAlreadyRunning=安装程序正在运行。\nWindowsVersionNotSupported=此程序不支持当前计算机运行的 Windows 版本。\nWindowsServicePackRequired=此程序需要 %1 服务包 %2 或更高版本。\nNotOnThisPlatform=此程序不能在 %1 上运行。\nOnlyOnThisPlatform=此程序只能在 %1 上运行。\nOnlyOnTheseArchitectures=此程序只能安装到为下列处理器架构设计的 Windows 版本中：%n%n%1\nWinVersionTooLowError=此程序需要 %1 版本 %2 或更高。\nWinVersionTooHighError=此程序不能安装于 %1 版本 %2 或更高。\nAdminPrivilegesRequired=在安装此程序时您必须以管理员身份登录。\nPowerUserPrivilegesRequired=在安装此程序时您必须以管理员身份或有权限的用户组身份登录。\nSetupAppRunningError=安装程序发现 %1 当前正在运行。%n%n请先关闭正在运行的程序，然后点击“确定”继续，或点击“取消”退出。\nUninstallAppRunningError=卸载程序发现 %1 当前正在运行。%n%n请先关闭正在运行的程序，然后点击“确定”继续，或点击“取消”退出。\n\n; *** 启动问题\nPrivilegesRequiredOverrideTitle=选择安装程序模式\nPrivilegesRequiredOverrideInstruction=选择安装模式\nPrivilegesRequiredOverrideText1=%1 可以为所有用户安装(需要管理员权限)，或仅为您安装。\nPrivilegesRequiredOverrideText2=%1 只能为您安装，或为所有用户安装(需要管理员权限)。\nPrivilegesRequiredOverrideAllUsers=为所有用户安装(&A)\nPrivilegesRequiredOverrideAllUsersRecommended=为所有用户安装(&A) (建议选项)\nPrivilegesRequiredOverrideCurrentUser=只为我安装(&M)\nPrivilegesRequiredOverrideCurrentUserRecommended=只为我安装(&M) (建议选项)\n\n; *** 其他错误\nErrorCreatingDir=安装程序无法创建目录“%1”\nErrorTooManyFilesInDir=无法在目录“%1”中创建文件，因为里面包含太多文件\n\n; *** 安装程序公共消息\nExitSetupTitle=退出安装程序\nExitSetupMessage=安装程序尚未完成。如果现在退出，将不会安装该程序。%n%n您之后可以再次运行安装程序完成安装。%n%n现在退出安装程序吗？\nAboutSetupMenuItem=关于安装程序(&A)...\nAboutSetupTitle=关于安装程序\nAboutSetupMessage=%1 版本 %2%n%3%n%n%1 主页：%n%4\nAboutSetupNote=\nTranslatorNote=简体中文翻译由Kira(847320916@qq.com)维护。项目地址：https://github.com/kira-96/Inno-Setup-Chinese-Simplified-Translation\n\n; *** 按钮\nButtonBack=< 上一步(&B)\nButtonNext=下一步(&N) >\nButtonInstall=安装(&I)\nButtonOK=确定\nButtonCancel=取消\nButtonYes=是(&Y)\nButtonYesToAll=全是(&A)\nButtonNo=否(&N)\nButtonNoToAll=全否(&O)\nButtonFinish=完成(&F)\nButtonBrowse=浏览(&B)...\nButtonWizardBrowse=浏览(&R)...\nButtonNewFolder=新建文件夹(&M)\n\n; *** “选择语言”对话框消息\nSelectLanguageTitle=选择安装语言\nSelectLanguageLabel=选择安装时使用的语言。\n\n; *** 公共向导文字\nClickNext=点击“下一步”继续，或点击“取消”退出安装程序。\nBeveledLabel=\nBrowseDialogTitle=浏览文件夹\nBrowseDialogLabel=在下面的列表中选择一个文件夹，然后点击“确定”。\nNewFolderName=新建文件夹\n\n; *** “欢迎”向导页\nWelcomeLabel1=欢迎使用 [name] 安装向导\nWelcomeLabel2=现在将安装 [name/ver] 到您的电脑中。%n%n建议您在继续安装前关闭所有其他应用程序。\n\n; *** “密码”向导页\nWizardPassword=密码\nPasswordLabel1=这个安装程序有密码保护。\nPasswordLabel3=请输入密码，然后点击“下一步”继续。密码区分大小写。\nPasswordEditLabel=密码(&P)：\nIncorrectPassword=您输入的密码不正确，请重新输入。\n\n; *** “许可协议”向导页\nWizardLicense=许可协议\nLicenseLabel=请在继续安装前阅读以下重要信息。\nLicenseLabel3=请仔细阅读下列许可协议。在继续安装前您必须同意这些协议条款。\nLicenseAccepted=我同意此协议(&A)\nLicenseNotAccepted=我不同意此协议(&D)\n\n; *** “信息”向导页\nWizardInfoBefore=信息\nInfoBeforeLabel=请在继续安装前阅读以下重要信息。\nInfoBeforeClickLabel=准备好继续安装后，点击“下一步”。\nWizardInfoAfter=信息\nInfoAfterLabel=请在继续安装前阅读以下重要信息。\nInfoAfterClickLabel=准备好继续安装后，点击“下一步”。\n\n; *** “用户信息”向导页\nWizardUserInfo=用户信息\nUserInfoDesc=请输入您的信息。\nUserInfoName=用户名(&U)：\nUserInfoOrg=组织(&O)：\nUserInfoSerial=序列号(&S)：\nUserInfoNameRequired=您必须输入用户名。\n\n; *** “选择目标目录”向导页\nWizardSelectDir=选择目标位置\nSelectDirDesc=您想将 [name] 安装在哪里？\nSelectDirLabel3=安装程序将安装 [name] 到下面的文件夹中。\nSelectDirBrowseLabel=点击“下一步”继续。如果您想选择其他文件夹，点击“浏览”。\nDiskSpaceGBLabel=至少需要有 [gb] GB 的可用磁盘空间。\nDiskSpaceMBLabel=至少需要有 [mb] MB 的可用磁盘空间。\nCannotInstallToNetworkDrive=安装程序无法安装到一个网络驱动器。\nCannotInstallToUNCPath=安装程序无法安装到一个 UNC 路径。\nInvalidPath=您必须输入一个带驱动器卷标的完整路径，例如：%n%nC:\\APP%n%n或UNC路径：%n%n\\\\server\\share\nInvalidDrive=您选定的驱动器或 UNC 共享不存在或不能访问。请选择其他位置。\nDiskSpaceWarningTitle=磁盘空间不足\nDiskSpaceWarning=安装程序至少需要 %1 KB 的可用空间才能安装，但选定驱动器只有 %2 KB 的可用空间。%n%n您一定要继续吗？\nDirNameTooLong=文件夹名称或路径太长。\nInvalidDirName=文件夹名称无效。\nBadDirName32=文件夹名称不能包含下列任何字符：%n%n%1\nDirExistsTitle=文件夹已存在\nDirExists=文件夹：%n%n%1%n%n已经存在。您一定要安装到这个文件夹中吗？\nDirDoesntExistTitle=文件夹不存在\nDirDoesntExist=文件夹：%n%n%1%n%n不存在。您想要创建此文件夹吗？\n\n; *** “选择组件”向导页\nWizardSelectComponents=选择组件\nSelectComponentsDesc=您想安装哪些程序组件？\nSelectComponentsLabel2=选中您想安装的组件；取消您不想安装的组件。然后点击“下一步”继续。\nFullInstallation=完全安装\n; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)\nCompactInstallation=简洁安装\nCustomInstallation=自定义安装\nNoUninstallWarningTitle=组件已存在\nNoUninstallWarning=安装程序检测到下列组件已安装在您的电脑中：%n%n%1%n%n取消选中这些组件不会卸载它们。%n%n确定要继续吗？\nComponentSize1=%1 KB\nComponentSize2=%1 MB\nComponentsDiskSpaceGBLabel=当前选择的组件需要至少 [gb] GB 的磁盘空间。\nComponentsDiskSpaceMBLabel=当前选择的组件需要至少 [mb] MB 的磁盘空间。\n\n; *** “选择附加任务”向导页\nWizardSelectTasks=选择附加任务\nSelectTasksDesc=您想要安装程序执行哪些附加任务？\nSelectTasksLabel2=选择您想要安装程序在安装 [name] 时执行的附加任务，然后点击“下一步”。\n\n; *** “选择开始菜单文件夹”向导页\nWizardSelectProgramGroup=选择开始菜单文件夹\nSelectStartMenuFolderDesc=安装程序应该在哪里放置程序的快捷方式？\nSelectStartMenuFolderLabel3=安装程序将在下列“开始”菜单文件夹中创建程序的快捷方式。\nSelectStartMenuFolderBrowseLabel=点击“下一步”继续。如果您想选择其他文件夹，点击“浏览”。\nMustEnterGroupName=您必须输入一个文件夹名。\nGroupNameTooLong=文件夹名或路径太长。\nInvalidGroupName=无效的文件夹名字。\nBadGroupName=文件夹名不能包含下列任何字符：%n%n%1\nNoProgramGroupCheck2=不创建开始菜单文件夹(&D)\n\n; *** “准备安装”向导页\nWizardReady=准备安装\nReadyLabel1=安装程序准备就绪，现在可以开始安装 [name] 到您的电脑。\nReadyLabel2a=点击“安装”继续此安装程序。如果您想重新考虑或修改任何设置，点击“上一步”。\nReadyLabel2b=点击“安装”继续此安装程序。\nReadyMemoUserInfo=用户信息：\nReadyMemoDir=目标位置：\nReadyMemoType=安装类型：\nReadyMemoComponents=已选择组件：\nReadyMemoGroup=开始菜单文件夹：\nReadyMemoTasks=附加任务：\n\n; *** TExtractionWizardPage wizard page and Extract7ZipArchive\nExtractionLabel=正在提取附加文件...\nButtonStopExtraction=停止提取(&S)\nStopExtraction=您确定要停止提取吗？\nErrorExtractionAborted=提取已中止\nErrorExtractionFailed=提取失败：%1\n\n; *** TDownloadWizardPage wizard page and DownloadTemporaryFile\nDownloadingLabel=正在下载附加文件...\nButtonStopDownload=停止下载(&S)\nStopDownload=您确定要停止下载吗？\nErrorDownloadAborted=下载已中止\nErrorDownloadFailed=下载失败：%1 %2\nErrorDownloadSizeFailed=获取下载大小失败：%1 %2\nErrorFileHash1=校验文件哈希失败：%1\nErrorFileHash2=无效的文件哈希：预期 %1，实际 %2\nErrorProgress=无效的进度：%1 / %2\nErrorFileSize=文件大小错误：预期 %1，实际 %2\n\n; *** “正在准备安装”向导页\nWizardPreparing=正在准备安装\nPreparingDesc=安装程序正在准备安装 [name] 到您的电脑。\nPreviousInstallNotCompleted=先前的程序安装或卸载未完成，您需要重启您的电脑以完成。%n%n在重启电脑后，再次运行安装程序以完成 [name] 的安装。\nCannotContinue=安装程序不能继续。请点击“取消”退出。\nApplicationsFound=以下应用程序正在使用将由安装程序更新的文件。建议您允许安装程序自动关闭这些应用程序。\nApplicationsFound2=以下应用程序正在使用将由安装程序更新的文件。建议您允许安装程序自动关闭这些应用程序。安装完成后，安装程序将尝试重新启动这些应用程序。\nCloseApplications=自动关闭应用程序(&A)\nDontCloseApplications=不要关闭应用程序(&D)\nErrorCloseApplications=安装程序无法自动关闭所有应用程序。建议您在继续之前，关闭所有在使用需要由安装程序更新的文件的应用程序。\nPrepareToInstallNeedsRestart=安装程序必须重启您的计算机。计算机重启后，请再次运行安装程序以完成 [name] 的安装。%n%n是否立即重新启动？\n\n; *** “正在安装”向导页\nWizardInstalling=正在安装\nInstallingLabel=安装程序正在安装 [name] 到您的电脑，请稍候。\n\n; *** “安装完成”向导页\nFinishedHeadingLabel=[name] 安装完成\nFinishedLabelNoIcons=安装程序已在您的电脑中安装了 [name]。\nFinishedLabel=安装程序已在您的电脑中安装了 [name]。您可以通过已安装的快捷方式运行此应用程序。\nClickFinish=点击“完成”退出安装程序。\nFinishedRestartLabel=为完成 [name] 的安装，安装程序必须重新启动您的电脑。要立即重启吗？\nFinishedRestartMessage=为完成 [name] 的安装，安装程序必须重新启动您的电脑。%n%n要立即重启吗？\nShowReadmeCheck=是，我想查阅自述文件\nYesRadio=是，立即重启电脑(&Y)\nNoRadio=否，稍后重启电脑(&N)\n; used for example as 'Run MyProg.exe'\nRunEntryExec=运行 %1\n; used for example as 'View Readme.txt'\nRunEntryShellExec=查阅 %1\n\n; *** “安装程序需要下一张磁盘”提示\nChangeDiskTitle=安装程序需要下一张磁盘\nSelectDiskLabel2=请插入磁盘 %1 并点击“确定”。%n%n如果这个磁盘中的文件可以在下列文件夹之外的文件夹中找到，请输入正确的路径或点击“浏览”。\nPathLabel=路径(&P)：\nFileNotInDir2=“%2”中找不到文件“%1”。请插入正确的磁盘或选择其他文件夹。\nSelectDirectoryLabel=请指定下一张磁盘的位置。\n\n; *** 安装状态消息\nSetupAborted=安装程序未完成安装。%n%n请修正这个问题并重新运行安装程序。\nAbortRetryIgnoreSelectAction=选择操作\nAbortRetryIgnoreRetry=重试(&T)\nAbortRetryIgnoreIgnore=忽略错误并继续(&I)\nAbortRetryIgnoreCancel=关闭安装程序\n\n; *** 安装状态消息\nStatusClosingApplications=正在关闭应用程序...\nStatusCreateDirs=正在创建目录...\nStatusExtractFiles=正在解压缩文件...\nStatusCreateIcons=正在创建快捷方式...\nStatusCreateIniEntries=正在创建 INI 条目...\nStatusCreateRegistryEntries=正在创建注册表条目...\nStatusRegisterFiles=正在注册文件...\nStatusSavingUninstall=正在保存卸载信息...\nStatusRunProgram=正在完成安装...\nStatusRestartingApplications=正在重启应用程序...\nStatusRollback=正在撤销更改...\n\n; *** 其他错误\nErrorInternal2=内部错误：%1\nErrorFunctionFailedNoCode=%1 失败\nErrorFunctionFailed=%1 失败；错误代码 %2\nErrorFunctionFailedWithMessage=%1 失败；错误代码 %2.%n%3\nErrorExecutingProgram=无法执行文件：%n%1\n\n; *** 注册表错误\nErrorRegOpenKey=打开注册表项时出错：%n%1\\%2\nErrorRegCreateKey=创建注册表项时出错：%n%1\\%2\nErrorRegWriteKey=写入注册表项时出错：%n%1\\%2\n\n; *** INI 错误\nErrorIniEntry=在文件“%1”中创建 INI 条目时出错。\n\n; *** 文件复制错误\nFileAbortRetryIgnoreSkipNotRecommended=跳过此文件(&S) (不推荐)\nFileAbortRetryIgnoreIgnoreNotRecommended=忽略错误并继续(&I) (不推荐)\nSourceIsCorrupted=源文件已损坏\nSourceDoesntExist=源文件“%1”不存在\nExistingFileReadOnly2=无法替换现有文件，它是只读的。\nExistingFileReadOnlyRetry=移除只读属性并重试(&R)\nExistingFileReadOnlyKeepExisting=保留现有文件(&K)\nErrorReadingExistingDest=尝试读取现有文件时出错：\nFileExistsSelectAction=选择操作\nFileExists2=文件已经存在。\nFileExistsOverwriteExisting=覆盖已存在的文件(&O)\nFileExistsKeepExisting=保留现有的文件(&K)\nFileExistsOverwriteOrKeepAll=为所有冲突文件执行此操作(&D)\nExistingFileNewerSelectAction=选择操作\nExistingFileNewer2=现有的文件比安装程序将要安装的文件还要新。\nExistingFileNewerOverwriteExisting=覆盖已存在的文件(&O)\nExistingFileNewerKeepExisting=保留现有的文件(&K) (推荐)\nExistingFileNewerOverwriteOrKeepAll=为所有冲突文件执行此操作(&D)\nErrorChangingAttr=尝试更改下列现有文件的属性时出错：\nErrorCreatingTemp=尝试在目标目录创建文件时出错：\nErrorReadingSource=尝试读取下列源文件时出错：\nErrorCopying=尝试复制下列文件时出错：\nErrorReplacingExistingFile=尝试替换现有文件时出错：\nErrorRestartReplace=重启并替换失败：\nErrorRenamingTemp=尝试重命名下列目标目录中的一个文件时出错：\nErrorRegisterServer=无法注册 DLL/OCX：%1\nErrorRegSvr32Failed=RegSvr32 失败；退出代码 %1\nErrorRegisterTypeLib=无法注册类库：%1\n\n; *** 卸载显示名字标记\n; used for example as 'My Program (32-bit)'\nUninstallDisplayNameMark=%1 (%2)\n; used for example as 'My Program (32-bit, All users)'\nUninstallDisplayNameMarks=%1 (%2, %3)\nUninstallDisplayNameMark32Bit=32 位\nUninstallDisplayNameMark64Bit=64 位\nUninstallDisplayNameMarkAllUsers=所有用户\nUninstallDisplayNameMarkCurrentUser=当前用户\n\n; *** 安装后错误\nErrorOpeningReadme=尝试打开自述文件时出错。\nErrorRestartingComputer=安装程序无法重启电脑，请手动重启。\n\n; *** 卸载消息\nUninstallNotFound=文件“%1”不存在。无法卸载。\nUninstallOpenError=文件“%1”不能被打开。无法卸载。\nUninstallUnsupportedVer=此版本的卸载程序无法识别卸载日志文件“%1”的格式。无法卸载\nUninstallUnknownEntry=卸载日志中遇到一个未知条目 (%1)\nConfirmUninstall=您确认要完全移除 %1 及其所有组件吗？\nUninstallOnlyOnWin64=仅允许在 64 位 Windows 中卸载此程序。\nOnlyAdminCanUninstall=仅使用管理员权限的用户能完成此卸载。\nUninstallStatusLabel=正在从您的电脑中移除 %1，请稍候。\nUninstalledAll=已顺利从您的电脑中移除 %1。\nUninstalledMost=%1 卸载完成。%n%n有部分内容未能被删除，但您可以手动删除它们。\nUninstalledAndNeedsRestart=为完成 %1 的卸载，需要重启您的电脑。%n%n立即重启电脑吗？\nUninstallDataCorrupted=文件“%1”已损坏。无法卸载\n\n; *** 卸载状态消息\nConfirmDeleteSharedFileTitle=删除共享的文件吗？\nConfirmDeleteSharedFile2=系统表示下列共享的文件已不有其他程序使用。您希望卸载程序删除这些共享的文件吗？%n%n如果删除这些文件，但仍有程序在使用这些文件，则这些程序可能出现异常。如果您不能确定，请选择“否”，在系统中保留这些文件以免引发问题。\nSharedFileNameLabel=文件名：\nSharedFileLocationLabel=位置：\nWizardUninstalling=卸载状态\nStatusUninstalling=正在卸载 %1...\n\n; *** Shutdown block reasons\nShutdownBlockReasonInstallingApp=正在安装 %1。\nShutdownBlockReasonUninstallingApp=正在卸载 %1。\n\n; The custom messages below aren't used by Setup itself, but if you make\n; use of them in your scripts, you'll want to translate them.\n\n[CustomMessages]\n\nNameAndVersion=%1 版本 %2\nAdditionalIcons=附加快捷方式：\nCreateDesktopIcon=创建桌面快捷方式(&D)\nCreateQuickLaunchIcon=创建快速启动栏快捷方式(&Q)\nProgramOnTheWeb=%1 网站\nUninstallProgram=卸载 %1\nLaunchProgram=运行 %1\nAssocFileExtension=将 %2 文件扩展名与 %1 建立关联(&A)\nAssocingFileExtension=正在将 %2 文件扩展名与 %1 建立关联...\nAutoStartProgramGroupDescription=启动：\nAutoStartProgram=自动启动 %1\nAddonHostProgramNotFound=您选择的文件夹中无法找到 %1。%n%n您要继续吗？\n"
  },
  {
    "path": "installer/lang/Hindi.isl",
    "content": "﻿; *** Inno Setup version 5.5.3+ Hindi messages ***\n;\n; To download user-contributed translations of this file, go to:\n;   http://www.jrsoftware.org/files/istrans/\n;\n; Note: When translating this text, do not add periods (.) to the end of\n; messages that didn't have them already, because on those messages Inno\n; Setup adds the periods automatically (appending a period would result in\n; two periods being displayed).\n\n[LangOptions]\n; निम्नलिखित तीन प्रविष्टियाँ बहुत महत्वपूर्ण हैं। कृपया सहायता फ़ाइल में\n; '[LangOptions] अनुभाग' विषय को पढ़ें और समझें।\nLanguageName=Hindi (हिंदी)\nLanguageID=$0439\nLanguageCodePage=0\n; यदि जिस भाषा में अनुवाद कर रहे हैं, उसके लिए विशेष फॉन्ट फेस या\n; आकार की आवश्यकता है, तो निम्न में से किसी भी प्रविष्टि को अनकॉमेंट करें और उन्हें अनुकूलित करें।\n;DialogFontName=\n;DialogFontSize=8\n;WelcomeFontName=Verdana\n;WelcomeFontSize=12\n;TitleFontName=Arial\n;TitleFontSize=29\n;CopyrightFontName=Arial\n;CopyrightFontSize=8\n\n[Messages]\n\n; *** Application titles\nSetupAppTitle=स्थापना\nSetupWindowTitle=स्थापना - %1\nUninstallAppTitle=अनइंस्टॉल\nUninstallAppFullTitle=अनइंस्टॉल %1\n\n; *** Misc. common\nInformationTitle=सूचना\nConfirmTitle=पुष्टि\nErrorTitle=त्रुटि\n\n; *** SetupLdr messages\nSetupLdrStartupMessage=यह प्रोग्राम %1 की स्थापना करेगा। क्या आप जारी रखना चाहते हैं?\nLdrCannotCreateTemp=अस्थायी फ़ाइल बनाने में असमर्थ। स्थापना रद्द कर दी गई।\nLdrCannotExecTemp=अस्थायी फ़ोल्डर में फ़ाइल चलाने में असमर्थ। स्थापना रद्द कर दी गई।\n\n; *** Startup error messages\nLastErrorMessage=%1.%n%nत्रुटि %2: %3\nSetupFileMissing=फ़ाइल %1 स्थापना फ़ोल्डर में नहीं मिली। कृपया समस्या ठीक करें या प्रोग्राम का कोई अन्य संस्करण खोजें.\nSetupFileCorrupt=स्थापना फ़ाइल भ्रष्ट है। कृपया प्रोग्राम का कोई अन्य संस्करण खोजें.\nSetupFileCorruptOrWrongVer=स्थापना फ़ाइल भ्रष्ट है, या इस संस्करण के साथ संगत नहीं है। कृपया समस्या ठीक करें या प्रोग्राम का कोई अन्य संस्करण खोजें.\nInvalidParameter=एक अमान्य पॉइंटर कमांड लाइन पर पारित किया गया:%n%n%1\nSetupAlreadyRunning=स्थापना पहले से चल रही है.\nWindowsVersionNotSupported=यह प्रोग्राम आपके वर्तमान Windows संस्करण का समर्थन नहीं करता.\nWindowsServicePackRequired=यह प्रोग्राम %1 सेवा पैक %2 या उससे उच्चतर की आवश्यकता है.\nNotOnThisPlatform=यह प्रोग्राम %1 पर नहीं चलेगा.\nOnlyOnThisPlatform=यह प्रोग्राम केवल %1 पर चलना चाहिए.\nOnlyOnTheseArchitectures=यह प्रोग्राम केवल उन Windows संस्करणों पर स्थापित किया जा सकता है जो निम्नलिखित प्रोसेसर आर्किटेक्चर के लिए डिज़ाइन किए गए हैं:%n%n%1\nMissingWOW64APIs=आपके Windows संस्करण में आवश्यक WOW64 APIs शामिल नहीं हैं ताकि 64-बिट प्रोग्राम की स्थापना की जा सके। इस समस्या को ठीक करने के लिए, कृपया %1 सेवा पैक स्थापित करें.\nWinVersionTooLowError=यह प्रोग्राम %1, संस्करण %2 या उससे उच्चतर की आवश्यकता करता है.\nWinVersionTooHighError=यह प्रोग्राम %1, संस्करण %2 या उससे उच्चतर पर स्थापित नहीं किया जा सकता.\nAdminPrivilegesRequired=इस प्रोग्राम को स्थापित करने के लिए आपको व्यवस्थापक होना आवश्यक है.\nPowerUserPrivilegesRequired=इस प्रोग्राम को स्थापित करने के लिए आपको व्यवस्थापक या शक्तिशाली उपयोगकर्ता समूह का सदस्य होना आवश्यक है.\nSetupAppRunningError=स्थापना विंडो बाधित है क्योंकि %1 चल रहा है.%n%nकृपया इन्हें बंद करें, फिर OK पर क्लिक करें जारी रखने के लिए, या रद्द करने के लिए Cancel पर क्लिक करें.\nUninstallAppRunningError=अनइंस्टॉल विंडो बाधित है क्योंकि %1 चल रहा है.%n%nकृपया इन्हें बंद करें, फिर OK पर क्लिक करें जारी रखने के लिए, या रद्द करने के लिए Cancel पर क्लिक करें.\n\n; *** Misc. errors\nErrorCreatingDir=फ़ोल्डर \"%1\" नहीं बनाया जा सका.\nErrorTooManyFilesInDir=फ़ोल्डर \"%1\" में बहुत अधिक फ़ाइलें होने के कारण फ़ाइल नहीं बनाई जा सकती.\n\n; *** Setup common messages\nExitSetupTitle=स्थापना से बाहर निकलें\nExitSetupMessage=स्थापना अधूरी है। यदि आप अभी बाहर निकलते हैं, तो प्रोग्राम स्थापित नहीं होगा.%n%nआपको स्थापना पूरी करने के लिए इंस्टॉलर को फिर से चलाना होगा.%n%nक्या आप बाहर निकलना चाहते हैं?\nAboutSetupMenuItem=&स्थापना के बारे में...\nAboutSetupTitle=स्थापना के बारे में\nAboutSetupMessage=%1 संस्करण %2%n%3%n%n%1 की होम पेज:%n%4\nAboutSetupNote=मूल भाषा संस्करण: अंग्रेज़ी\nTranslatorNote=अनुवादक: ChatGPT\n\n; *** Buttons\nButtonBack=< &पिछला\nButtonNext=आ&गे >\nButtonInstall=&स्थापना\nButtonOK=OK\nButtonCancel=रद्द करें\nButtonYes=हाँ\nButtonYesToAll=सभी के लिए हाँ\nButtonNo=नहीं\nButtonNoToAll=सभी के लिए नहीं\nButtonFinish=समाप्त\nButtonBrowse=ब्राउज़...\nButtonWizardBrowse=खोजें...\nButtonNewFolder=नया फ़ोल्डर बनाएँ\n\n; *** \"Select Language\" dialog messages\nSelectLanguageTitle=स्थापना के लिए भाषा चुनें\nSelectLanguageLabel=स्थापना के दौरान प्रदर्शित करने के लिए भाषा चुनें:\n\n; *** Common wizard text\nClickNext=जारी रखने के लिए 'आगे' पर क्लिक करें, या बाहर निकलने के लिए 'रद्द करें' पर क्लिक करें.\nBeveledLabel=\nBrowseDialogTitle=फ़ोल्डर खोजें\nBrowseDialogLabel=नीचे सूची में से एक फ़ोल्डर चुनें, फिर OK पर क्लिक करें.\nNewFolderName=नया फ़ोल्डर\n\n; *** \"Welcome\" wizard page\nWelcomeLabel1=[name] स्थापना में आपका स्वागत है\nWelcomeLabel2=[name/ver] आपके कंप्यूटर पर स्थापित किया जाएगा.%n%nजारी रखने से पहले आपको सभी संबंधित प्रोग्राम बंद करने होंगे.\n\n; *** \"Password\" wizard page\nWizardPassword=पासवर्ड\nPasswordLabel1=यह स्थापना पासवर्ड द्वारा संरक्षित है.\nPasswordLabel3=कृपया पासवर्ड दर्ज करें, फिर जारी रखने के लिए 'आगे' पर क्लिक करें. पासवर्ड 100% सही दर्ज करें (बड़े और छोटे अक्षरों में भेद होता है).\nPasswordEditLabel=&पासवर्ड:\nIncorrectPassword=आपने जो पासवर्ड दर्ज किया है वह गलत है. कृपया पुनः प्रयास करें.\n\n; *** \"License Agreement\" wizard page\nWizardLicense=लाइसेंस समझौता\nLicenseLabel=कृपया जारी रखने से पहले निम्नलिखित महत्वपूर्ण जानकारी पढ़ें.\nLicenseLabel3=कृपया नीचे दिया गया लाइसेंस समझौता पढ़ें. जारी रखने से पहले आपको इसकी शर्तों को स्वीकार करना अनिवार्य है.\nLicenseAccepted=मैं &शर्तों को स्वीकार करता हूँ\nLicenseNotAccepted=मैं शर्तों को &स्वीकार नहीं करता\n\n; *** \"Information\" wizard pages\nWizardInfoBefore=जानकारी\nInfoBeforeLabel=कृपया जारी रखने से पहले निम्नलिखित महत्वपूर्ण जानकारी पढ़ें.\nInfoBeforeClickLabel=जब आप स्थापना जारी रखने के लिए तैयार हों, तो 'आगे' पर क्लिक करें.\nWizardInfoAfter=जानकारी\nInfoAfterLabel=कृपया जारी रखने से पहले निम्नलिखित महत्वपूर्ण जानकारी पढ़ें.\nInfoAfterClickLabel=जब आप स्थापना जारी रखने के लिए तैयार हों, तो 'आगे' पर क्लिक करें.\n\n; *** \"User Information\" wizard page\nWizardUserInfo=उपयोगकर्ता जानकारी\nUserInfoDesc=कृपया अपनी जानकारी दर्ज करें.\nUserInfoName=उपयोगकर्ता का &नाम:\nUserInfoOrg=संग&ठन:\nUserInfoSerial=&सीरियल:\nUserInfoNameRequired=आपको एक नाम दर्ज करना आवश्यक है.\n\n; *** \"Select Destination Location\" wizard page\nWizardSelectDir=गंतव्य फ़ोल्डर चुनें\nSelectDirDesc=[name] कहाँ स्थापित किया जाए?\nSelectDirLabel3=स्थापना [name] को निम्नलिखित फ़ोल्डर में स्थापित करेगी.\nSelectDirBrowseLabel=जारी रखने के लिए 'आगे' पर क्लिक करें. यदि आप कोई अन्य फ़ोल्डर चुनना चाहते हैं, तो 'ब्राउज़' पर क्लिक करें.\nDiskSpaceMBLabel=स्थापना के लिए कम से कम [mb] MB खाली स्थान आवश्यक है.\nCannotInstallToNetworkDrive=स्थापना नेटवर्क ड्राइव पर नहीं की जा सकती.\nCannotInstallToUNCPath=स्थापना UNC पथ पर नहीं की जा सकती.\nInvalidPath=आपको पूर्ण पथ दर्ज करना होगा जिसमें ड्राइव अक्षर शामिल हो; उदाहरण:%n%nC:\\APP%n%nया एक UNC पथ जैसे:%n%n\\\\server\\share\nInvalidDrive=आपके द्वारा चयनित ड्राइव या UNC शेयर मौजूद नहीं है या एक्सेस नहीं किया जा सकता. कृपया कोई अन्य चुनें.\nDiskSpaceWarningTitle=अपर्याप्त डिस्क स्थान\nDiskSpaceWarning=स्थापना के लिए कम से कम %1 KB की आवश्यकता है, लेकिन चयनित ड्राइव में केवल %2 KB उपलब्ध है.%n%nक्या आप जारी रखना चाहते हैं?\nDirNameTooLong=फ़ोल्डर का नाम या पथ बहुत लंबा है.\nInvalidDirName=अमान्य फ़ोल्डर नाम.\nBadDirName32=फ़ोल्डर नाम में निम्नलिखित वर्ण नहीं होने चाहिए:%n%n%1\nDirExistsTitle=फ़ोल्डर पहले से मौजूद है\nDirExists=फ़ोल्डर:%n%n%1%n%nपहले से मौजूद है. क्या आप इस फ़ोल्डर का उपयोग करना चाहते हैं?\nDirDoesntExistTitle=फ़ोल्डर मौजूद नहीं है\nDirDoesntExist=फ़ोल्डर:%n%n%1%n%nमौजूद नहीं है. क्या आप इसे बनाना चाहते हैं?\n\n; *** \"Select Components\" wizard page\nWizardSelectComponents=अतिरिक्त घटक चुनें\nSelectComponentsDesc=कौन से अतिरिक्त घटक स्थापित किए जाने चाहिए?\nSelectComponentsLabel2=अपने पसंदीदा अतिरिक्त घटक चुनें; जिनकी आप स्थापना नहीं चाहते उन्हें हटाएं. जब आप तैयार हों तो 'आगे' पर क्लिक करें.\nFullInstallation=पूर्ण स्थापना\nCompactInstallation=बेसिक स्थापना\nCustomInstallation=कस्टम स्थापना\nNoUninstallWarningTitle=कुछ घटक पहले से स्थापित हैं\nNoUninstallWarning=स्थापना बाधित की गई क्योंकि आपके कंप्यूटर पर निम्नलिखित अतिरिक्त घटक पहले से स्थापित हैं:%n%n%1%n%nइन घटकों को हटाने से इन्हें पुनः स्थापित नहीं किया जाएगा.%n%nक्या आप जारी रखना चाहते हैं?\nComponentSize1=%1 KB\nComponentSize2=%1 MB\nComponentsDiskSpaceMBLabel=इस विकल्प के लिए कम से कम [mb] MB खाली स्थान आवश्यक है.\n\n; *** \"Select Additional Tasks\" wizard page\nWizardSelectTasks=अतिरिक्त कार्य चुनें\nSelectTasksDesc=कौन से अतिरिक्त कार्य जोड़े जाने चाहिए?\nSelectTasksLabel2=उस कार्य को चुनें जिसे आप [name] की स्थापना के दौरान जोड़ना चाहते हैं, फिर 'आगे' पर क्लिक करें.\n\n; *** \"Select Start Menu Folder\" wizard page\nWizardSelectProgramGroup=स्टार्ट मेन्यू फ़ोल्डर चुनें\nSelectStartMenuFolderDesc=प्रोग्राम का शॉर्टकट स्टार्ट मेन्यू में कहाँ रखा जाना चाहिए?\nSelectStartMenuFolderLabel3=स्थापना स्टार्ट मेन्यू में निम्नलिखित फ़ोल्डर में प्रोग्राम के शॉर्टकट बनाएगी.\nSelectStartMenuFolderBrowseLabel=जारी रखने के लिए 'आगे' पर क्लिक करें. यदि आप कोई अन्य फ़ोल्डर चुनना चाहते हैं, तो 'ब्राउज़' पर क्लिक करें.\nMustEnterGroupName=आपको एक फ़ोल्डर का नाम दर्ज करना होगा.\nGroupNameTooLong=फ़ोल्डर का नाम या पथ बहुत लंबा है.\nInvalidGroupName=अमान्य फ़ोल्डर नाम.\nBadGroupName=फ़ोल्डर नाम में निम्नलिखित वर्ण नहीं होने चाहिए:%n%n%1\nNoProgramGroupCheck2=&स्टार्ट मेन्यू में फ़ोल्डर न बनाएं\n\n; *** \"Ready to Install\" wizard page\nWizardReady=स्थापना के लिए तैयार\nReadyLabel1=आपके कंप्यूटर पर [name] की स्थापना के लिए तैयार है.\nReadyLabel2a=स्थापना जारी रखने के लिए 'स्थापना' पर क्लिक करें, या समीक्षा/परिवर्तन के लिए 'पिछला' पर क्लिक करें.\nReadyLabel2b=स्थापना जारी रखने के लिए 'स्थापना' पर क्लिक करें.\nReadyMemoUserInfo=उपयोगकर्ता जानकारी:\nReadyMemoDir=गंतव्य फ़ोल्डर:\nReadyMemoType=स्थापना प्रकार:\nReadyMemoComponents=चयनित अतिरिक्त घटक:\nReadyMemoGroup=स्टार्ट मेन्यू में फ़ोल्डर:\nReadyMemoTasks=अतिरिक्त कार्य:\n\n; *** \"Preparing to Install\" wizard page\nWizardPreparing=स्थापना के लिए तैयारी\nPreparingDesc=आपके कंप्यूटर पर [name] की स्थापना की तैयारी हो रही है.\nPreviousInstallNotCompleted=पिछली स्थापना (या अनइंस्टॉल) अधूरी है. स्थापना पूरी करने के लिए आपको कंप्यूटर को पुनरारंभ करना होगा.%n%nपुनरारंभ के बाद, कृपया [name] की स्थापना पूरी करने के लिए इंस्टॉलर को पुनः चलाएँ.\nCannotContinue=स्थापना जारी नहीं रह सकती. बाहर निकलने के लिए 'रद्द करें' पर क्लिक करें.\nApplicationsFound=निम्नलिखित प्रोग्राम उन फ़ाइलों का उपयोग कर रहे हैं जिन्हें स्थापना द्वारा अद्यतन किया जाना है. कृपया इन्हें बंद करें.\nApplicationsFound2=निम्नलिखित प्रोग्राम उन फ़ाइलों का उपयोग कर रहे हैं जिन्हें स्थापना द्वारा अद्यतन किया जाना है. स्थापना से पहले इन्हें बंद करना आवश्यक है. स्थापना पूर्ण होने के बाद, इंस्टॉलर इन्हें फिर से खोल देगा.\nCloseApplications=इन प्रोग्रामों को &स्वत: बंद करें\nDontCloseApplications=&इन प्रोग्रामों को बंद न करें\nErrorCloseApplications=कुछ प्रोग्राम बंद नहीं हो सके. स्थापना जारी रखने से पहले कृपया उन प्रोग्रामों को बंद करें जो अद्यतन की जाने वाली फ़ाइलों का उपयोग कर रहे हैं.\n\n; *** \"Installing\" wizard page\nWizardInstalling=स्थापना चल रही है\nInstallingLabel=कृपया प्रतीक्षा करें, [name] की स्थापना आपके कंप्यूटर पर हो रही है.\n\n; *** \"Setup Completed\" wizard page\nFinishedHeadingLabel=[name] की स्थापना पूरी हुई\nFinishedLabelNoIcons=[name] आपके कंप्यूटर पर सफलतापूर्वक स्थापित हो गया है.\nFinishedLabel=[name] आपके कंप्यूटर पर सफलतापूर्वक स्थापित हो गया है. इसे उसके आइकन पर क्लिक करके चलाया जा सकता है.\nClickFinish=स्थापना से बाहर निकलने के लिए 'समाप्त' पर क्लिक करें.\nFinishedRestartLabel=स्थापना पूरी करने के लिए, आपके कंप्यूटर को पुनरारंभ करना होगा. क्या आप पुनरारंभ करना चाहते हैं?\nFinishedRestartMessage=स्थापना पूरी करने के लिए, आपके कंप्यूटर को पुनरारंभ करना होगा.%n%nक्या आप पुनरारंभ करना चाहते हैं?\nShowReadmeCheck=हाँ, मैं README फ़ाइल देखना चाहता हूँ\nYesRadio=&हाँ, अभी कंप्यूटर पुनरारंभ करें\nNoRadio=&नहीं, मैं बाद में पुनरारंभ करूँगा\nRunEntryExec=%1 चलाएं\nRunEntryShellExec=%1 प्रदर्शित करें\n\n; *** \"Setup Needs the Next Disk\" stuff\nChangeDiskTitle=अगला डिस्क आवश्यक\nSelectDiskLabel2=कृपया %1 डिस्क डालें और OK पर क्लिक करें.%n%nयदि उस डिस्क पर फ़ाइलें कहीं और स्थित हैं, तो सही पथ दर्ज करें या 'ब्राउज़' पर क्लिक करें.\nPathLabel=&पथ:\nFileNotInDir2=फ़ाइल \"%1\" \"%2\" में नहीं पाई गई. कृपया सही डिस्क डालें या कोई अन्य फ़ोल्डर चुनें.\nSelectDirectoryLabel=कृपया अगले डिस्क का स्थान निर्दिष्ट करें.\n\n; *** Installation phase messages\nSetupAborted=स्थापना पूरी नहीं हुई.%n%nकृपया त्रुटि को सुधारें और स्थापना को पुनः चलाएँ.\nEntryAbortRetryIgnore=पुनः प्रयास करने के लिए 'पुनः प्रयास करें', छोड़ने के लिए 'छोड़ें' (अनुशंसित नहीं), या स्थापना रद्द करने के लिए 'रद्द करें' पर क्लिक करें.\n\n; *** Installation status messages\nStatusClosingApplications=प्रोग्राम बंद किए जा रहे हैं...\nStatusCreateDirs=फ़ोल्डर बनाए जा रहे हैं...\nStatusExtractFiles=फ़ाइलें निकाली जा रही हैं...\nStatusCreateIcons=शॉर्टकट बनाए जा रहे हैं...\nStatusCreateIniEntries=INI प्रविष्टियाँ बनाई जा रही हैं...\nStatusCreateRegistryEntries=Registry प्रविष्टियाँ बनाई जा रही हैं...\nStatusRegisterFiles=फ़ाइलें सत्यापित की जा रही हैं...\nStatusSavingUninstall=अनइंस्टॉल जानकारी सहेजी जा रही है...\nStatusRunProgram=स्थापना पूरी की जा रही है...\nStatusRestartingApplications=प्रोग्राम पुनः प्रारंभ किए जा रहे हैं...\nStatusRollback=परिवर्तनों को पूर्ववत किया जा रहा है...\n\n; *** Misc. errors\nErrorInternal2=त्रुटि: %1\nErrorFunctionFailedNoCode=%1 विफल हुआ\nErrorFunctionFailed=%1 विफल हुआ; कोड %2\nErrorFunctionFailedWithMessage=%1 विफल हुआ; कोड %2.%n%3\nErrorExecutingProgram=प्रोग्राम निष्पादित करने में विफल:%n%1\n\n; *** Registry errors\nErrorRegOpenKey=Registry कुंजी खोलने में त्रुटि:%n%1\\%2\nErrorRegCreateKey=Registry कुंजी बनाने में त्रुटि:%n%1\\%2\nErrorRegWriteKey=Registry कुंजी में लिखने में त्रुटि:%n%1\\%2\n\n; *** INI errors\nErrorIniEntry=फ़ाइल \"%1\" में INI प्रविष्टि बनाने में त्रुटि.\n\n; *** File copying errors\nFileAbortRetryIgnore=पुनः प्रयास करने के लिए 'पुनः प्रयास करें', फ़ाइल छोड़ने के लिए 'छोड़ें' (अनुशंसित नहीं), या स्थापना रद्द करने के लिए 'रद्द करें' पर क्लिक करें.\nFileAbortRetryIgnore2=पुनः प्रयास करने के लिए 'पुनः प्रयास करें', त्रुटि छोड़ने के लिए 'छोड़ें' (अनुशंसित नहीं), या स्थापना रद्द करने के लिए 'रद्द करें' पर क्लिक करें.\nSourceIsCorrupted=स्रोत फ़ाइल भ्रष्ट है\nSourceDoesntExist=स्रोत फ़ाइल \"%1\" मौजूद नहीं है\nExistingFileReadOnly=यह फ़ाइल केवल-पढ़ने के रूप में चिह्नित है.%n%nकेवल-पढ़ने का चिह्न हटाने और पुनः प्रयास करने के लिए 'पुनः प्रयास करें', छोड़ने के लिए 'छोड़ें', या स्थापना रद्द करने के लिए 'रद्द करें' पर क्लिक करें.\nErrorReadingExistingDest=फ़ाइल पढ़ने में त्रुटि:\nFileExists=फ़ाइल पहले से मौजूद है.%n%nक्या आप इसे बदलना चाहते हैं?\nExistingFileNewer=यह फ़ाइल उस फ़ाइल से नई है जिसे स्थापना द्वारा स्थापित किया जाना है. आपको इसे रखना आवश्यक है.%n%nक्या आप इसे रखना चाहते हैं?\nErrorChangingAttr=फ़ाइल की विशेषताएँ बदलने में त्रुटि:\nErrorCreatingTemp=गंतव्य फ़ोल्डर में अस्थायी फ़ाइल बनाने में त्रुटि:\nErrorReadingSource=स्रोत फ़ाइल पढ़ने में त्रुटि:\nErrorCopying=फ़ाइल कॉपी करते समय त्रुटि:\nErrorReplacingExistingFile=फ़ाइल बदलने में त्रुटि:\nErrorRestartReplace=पुनरारंभ के बाद फ़ाइल बदलना विफल रहा:\nErrorRenamingTemp=गंतव्य फ़ोल्डर में अस्थायी फ़ाइल का नाम बदलने में त्रुटि:\nErrorRegisterServer=DLL/OCX पंजीकृत करने में विफल: %1\nErrorRegSvr32Failed=RegSvr32 विफल, निकास कोड %1\nErrorRegisterTypeLib=टाइप लाइब्रेरी पंजीकृत करने में विफल: %1\n\n; *** Post-installation errors\nErrorOpeningReadme=README फ़ाइल खोलने में त्रुटि.\nErrorRestartingComputer=कंप्यूटर पुनरारंभ करने में विफल. कृपया मैन्युअल रूप से पुनरारंभ करें.\n\n; *** Uninstaller messages\nUninstallNotFound=फ़ाइल \"%1\" नहीं मिली. अनइंस्टॉल नहीं किया जा सकता.\nUninstallOpenError=फ़ाइल \"%1\" खोलने में विफल. अनइंस्टॉल नहीं किया जा सकता.\nUninstallUnsupportedVer=अनइंस्टॉलर लॉग फ़ाइल \"%1\" असमर्थित प्रकार की है. अनइंस्टॉल नहीं किया जा सकता.\nUninstallUnknownEntry=अनइंस्टॉलर लॉग में अज्ञात प्रविष्टि (%1) मिली.\nConfirmUninstall=क्या आप वाकई %1 और उससे संबंधित सभी घटकों को अनइंस्टॉल करना चाहते हैं?\nUninstallOnlyOnWin64=यह अनइंस्टॉल केवल Windows 64-bit संस्करण पर किया जा सकता है.\nOnlyAdminCanUninstall=यह अनइंस्टॉल केवल व्यवस्थापक द्वारा किया जा सकता है.\nUninstallStatusLabel=कृपया प्रतीक्षा करें, %1 को आपके कंप्यूटर से अनइंस्टॉल किया जा रहा है.\nUninstalledAll=%1 को आपके कंप्यूटर से सफलतापूर्वक अनइंस्टॉल कर दिया गया है.\nUninstalledMost=%1 का अनइंस्टॉल पूरा हुआ है.%n%nकुछ घटकों को अनइंस्टॉल नहीं किया जा सका. इन्हें मैन्युअल रूप से अनइंस्टॉल किया जा सकता है.\nUninstalledAndNeedsRestart=अनइंस्टॉल पूरा करने के लिए, आपको कंप्यूटर को पुनरारंभ करना होगा.%n%nक्या आप पुनरारंभ करना चाहते हैं?\nUninstallDataCorrupted=फ़ाइल \"%1\" भ्रष्ट है. अनइंस्टॉल नहीं किया जा सकता.\n\n; *** Uninstallation phase messages\nConfirmDeleteSharedFileTitle=साझा फ़ाइल हटाएं?\nConfirmDeleteSharedFile2=सिस्टम ने संकेत दिया है कि निम्नलिखित साझा फ़ाइलें किसी अन्य प्रोग्राम द्वारा उपयोग में नहीं हैं. क्या आप इन्हें हटाना चाहते हैं?%n%nयदि कोई प्रोग्राम अभी भी इन फ़ाइलों का उपयोग कर रहा है, तो ये ठीक से काम नहीं कर सकतीं. यदि आप सुनिश्चित नहीं हैं, तो 'नहीं' चुनें. आपके सिस्टम से इन्हें हटाने से कोई नुकसान नहीं होगा.\nSharedFileNameLabel=फ़ाइल का नाम:\nSharedFileLocationLabel=स्थान:\nWizardUninstalling=अनइंस्टॉल स्थिति\nStatusUninstalling=%1 को अनइंस्टॉल किया जा रहा है...\n\n; *** Shutdown block reasons\nShutdownBlockReasonInstallingApp=%1 की स्थापना चल रही है.\nShutdownBlockReasonUninstallingApp=%1 का अनइंस्टॉल चल रहा है.\n\n[CustomMessages]\n\nNameAndVersion=%1 संस्करण %2\nAdditionalIcons=अतिरिक्त शॉर्टकट:\nCreateDesktopIcon=डेस्कटॉप पर शॉर्टकट बनाएँ\nCreateQuickLaunchIcon=क्विक लॉन्च पर शॉर्टकट बनाएँ\nProgramOnTheWeb=%1 वेब पर\nUninstallProgram=%1 का अनइंस्टॉल\nLaunchProgram=%1 चलाएं\nAssocFileExtension=&%1 को %2 फ़ाइल एक्सटेंशन के साथ जोड़ें\nAssocingFileExtension=%1 को %2 फ़ाइल एक्सटेंशन के साथ जोड़ा जा रहा है...\nAutoStartProgramGroupDescription=स्वचालित प्रारंभ:\nAutoStartProgram=%1 को स्वचालित रूप से प्रारंभ करें\nAddonHostProgramNotFound=%1 को चुने गए फ़ोल्डर में स्थापित नहीं किया जा सका.%n%nक्या आप जारी रखना चाहते हैं?\n"
  },
  {
    "path": "installer/lang/Vietnamese.isl",
    "content": "﻿; *** Inno Setup version 6.1.0+ Vietnamese messages ***\n; Translated by Vu Khac Hiep (email: vukhachiep@gmail.com)\n; To download user-contributed translations of this file, go to:\n;   https://jrsoftware.org/files/istrans/\n;\n; Note: When translating this text, do not add periods (.) to the end of\n; messages that didn't have them already, because on those messages Inno\n; Setup adds the periods automatically (appending a period would result in\n; two periods being displayed).\n\n[LangOptions]\n; The following three entries are very important. Be sure to read and \n; understand the '[LangOptions] section' topic in the help file.\nLanguageName=Vietnamese\nLanguageID=$042A\nLanguageCodePage=0\n; If the language you are translating to requires special font faces or\n; sizes, uncomment any of the following entries and change them accordingly.\n;DialogFontName=\n;DialogFontSize=8\n;WelcomeFontName=Verdana\n;WelcomeFontSize=12\n;TitleFontName=Arial\n;TitleFontSize=29\n;CopyrightFontName=Arial\n;CopyrightFontSize=8\n\n[Messages]\n\n; *** Application titles\nSetupAppTitle=Cài đặt\nSetupWindowTitle=Cài đặt - %1\nUninstallAppTitle=Gỡ cài đặt\nUninstallAppFullTitle=Gỡ cài đặt - %1\n\n; *** Misc. common\nInformationTitle=Thông tin\nConfirmTitle=Xác nhận\nErrorTitle=Lỗi\n\n; *** SetupLdr messages\nSetupLdrStartupMessage=Chương trình này sẽ cài đặt %1. Bạn có muốn tiếp tục không?\nLdrCannotCreateTemp=Không thể tạo tệp tạm thời. Cài đặt bị hủy bỏ\nLdrCannotExecTemp=Không thể chạy tệp trong thư mục tạm thời. Cài đặt bị hủy bỏ\nHelpTextNote=\n\n; *** Startup error messages\nLastErrorMessage=%1.%n%nLỗi %2: %3\nSetupFileMissing=Tệp %1 bị thiếu trong thư mục cài đặt. Hãy sửa lỗi hoặc lấy một bản sao mới của chương trình.\nSetupFileCorrupt=Các tệp cài đặt đã bị hỏng. Hãy sửa lỗi hoặc lấy một bản sao của chương trình.\nSetupFileCorruptOrWrongVer=Các tệp cài đặt bị hỏng, hoặc không tương thích với bản cài đặt này. Hãy sửa lỗi hoặc lấy một bản sao mới của chương trình.\nInvalidParameter=Một thông số không hợp lệ đã được đưa vào dòng lệnh:%n%n%1\nSetupAlreadyRunning=Cài đặt này đang chạy.\nWindowsVersionNotSupported=Chương trình này không tương thích với phiên bản Windows bạn đang chạy.\nWindowsServicePackRequired=Chương trình này yêu cầu %1 Service Pack %2 hoặc mới hơn.\nNotOnThisPlatform=Chương trình này sẽ không chạy trên %1.\nOnlyOnThisPlatform=Chương trình này phải chạy trên %1.\nOnlyOnTheseArchitectures=Chương trình này chỉ có thể được cài đặt trên phiên bản Windows được thiết kế cho các hệ vi xử lí:%n%n%1\nWinVersionTooLowError=Chương trình này yêu cầu %1 phiên bản %2 hoặc mới hơn.\nWinVersionTooHighError=Chương trình này không thể được cài đặt trên %1 phiên bản %2 hoặc mới hơn.\nAdminPrivilegesRequired=Bạn phải được đăng nhập như người quản trị khi cài đặt chương trình này.\nPowerUserPrivilegesRequired=Bạn phải được đăng nhập như người quản trị hoặc thành viên trong nhóm Người dùng mạnh khi cài đặt chương trình này.\nSetupAppRunningError=Cài đặt phát hiện %1 đang chạy.%n%nHãy đóng tất cả các tiến trình của nó ngay, rồi click OK để tiếp tục, hoặc Hủy để thoát.\nUninstallAppRunningError=Gỡ cài đặt phát hiện %1 đang chạy.%n%nHãy đóng tất cả các tiến trình của nó ngay, rồi click OK để tiếp tục, hoặc Hủy để thoát.\n\n; *** Startup questions\nPrivilegesRequiredOverrideTitle=Select Setup Install Mode\nPrivilegesRequiredOverrideInstruction=Select install mode\nPrivilegesRequiredOverrideText1=%1 can be installed for all users (requires administrative privileges), or for you only.\nPrivilegesRequiredOverrideText2=%1 can be installed for you only, or for all users (requires administrative privileges).\nPrivilegesRequiredOverrideAllUsers=Install for &all users\nPrivilegesRequiredOverrideAllUsersRecommended=Install for &all users (recommended)\nPrivilegesRequiredOverrideCurrentUser=Install for &me only\nPrivilegesRequiredOverrideCurrentUserRecommended=Install for &me only (recommended)\n\n; *** Misc. errors\nErrorCreatingDir=Cài đặt không thể tạo ra thư mục \"%1\"\nErrorTooManyFilesInDir=Không thể tạo một tệp trong thư mục \"%1\" vì nó chứa quá nhiều tệp\n\n; *** Setup common messages\nExitSetupTitle=Thoát cài đặt\nExitSetupMessage=Cài đặt chưa hoàn thành. Nếu bạn thoát bây giờ, chương trình sẽ không được cài đặt.%n%nBạn có thể chạy lại Cài đặt một lần khác để hoàn thành cài đặt.%n%nThoát ngay?\nAboutSetupMenuItem=&Về trình cài đặt...\nAboutSetupTitle=Về trình cài đặt\nAboutSetupMessage=%1 phiên bản %2%n%3%n%n%1 trang chủ:%n%4\nAboutSetupNote=\nTranslatorNote=Giao diện người dùng tiếng Việt bởi: Vũ Khắc Hiệp\n\n; *** Buttons\nButtonBack=< &Trước\nButtonNext=T&iếp >\nButtonInstall=&Cài đặt\nButtonOK=OK\nButtonCancel=Hủy\nButtonYes=&Có\nButtonYesToAll=Có c&ho tất cả\nButtonNo=&Không\nButtonNoToAll=Khô&ng cho tất cả\nButtonFinish=&Hoàn thành\nButtonBrowse=&Duyệt...\nButtonWizardBrowse=D&uyệt...\nButtonNewFolder=Tạ&o thư mục mới\n\n; *** \"Select Language\" dialog messages\nSelectLanguageTitle=Chọn ngôn ngữ cài đặt\nSelectLanguageLabel=Chọn ngôn ngữ để sử dụng khi cài đặt:\n\n; *** Common wizard text\nClickNext=Nhấn Tiếp để tiếp tục, hoặc Hủy để thoát cài đặt\nBeveledLabel=\nBrowseDialogTitle=Tìm thư mục\nBrowseDialogLabel=Chọn một thư mục trong danh sách sau rồi ấn OK.\nNewFolderName=Tạo thư mục mới\n\n; *** \"Welcome\" wizard page\nWelcomeLabel1=Chào mừng tới trình cài đặt [name]\nWelcomeLabel2=Chương trình này sẽ cài [name/ver] trên máy tính của bạn.%n%nChúng tôi khuyên bạn đóng mọi chương trình khác lại trước khi cài đặt.\n\n; *** \"Password\" wizard page\nWizardPassword=Mật khẩu\nPasswordLabel1=Việc cài đặt được bảo vệ bằng mật khẩu.\nPasswordLabel3=Hãy nhập mật khẩu, rồi nhấn Tiếp để tiếp tục. Mật khẩu phân biệt chữ hoa/thường.\nPasswordEditLabel=&Mật khẩu:\nIncorrectPassword=Mật khẩu bạn đã nhập không đúng. Hãy thử lại.\n\n; *** \"License Agreement\" wizard page\nWizardLicense=Thỏa thuận cấp phép\nLicenseLabel=Hãy đọc những thông tin quan trọng sau trước khi tiếp tục.\nLicenseLabel3=Hãy đọc Thỏa thuận cấp phép sau. Bạn phải chấp nhận các điều khoản của cài đặt này trước khi tiếp tục.\nLicenseAccepted=Tô&i chấp nhận thỏa thuận\nLicenseNotAccepted=Tôi khôn&g chấp nhận thỏa thuận\n\n; *** \"Information\" wizard pages\nWizardInfoBefore=Thông tin\nInfoBeforeLabel=Hãy đọc những thông tin quan trọng sau trước khi tiếp tục.\nInfoBeforeClickLabel=Khi bạn đã sẵn sàng cài đặt tiếp, click Tiếp.\nWizardInfoAfter=Thông tin\nInfoAfterLabel=Hãy đọc những thông tin quan trọng sau trước khi tiếp tục.\nInfoAfterClickLabel=Khi bạn đã sẵn sàng cài đặt tiếp, click Tiếp.\n\n; *** \"User Information\" wizard page\nWizardUserInfo=Thông tin người dùng\nUserInfoDesc=Hãy nhập thông tin của bạn.\nUserInfoName=Tên n&gười dùng:\nUserInfoOrg=Tổ c&hức:\nUserInfoSerial=&Số serial:\nUserInfoNameRequired=Bạn phải nhập một tên.\n\n; *** \"Select Destination Location\" wizard page\nWizardSelectDir=Chọn vị trí cài đặt\nSelectDirDesc=[name] nên được cài đặt ở đâu?\nSelectDirLabel3=[name] sẽ được cài đặt vào thư mục sau:\nSelectDirBrowseLabel=Để tiếp tục. nhấn Tiếp. Nếu bạn muốn chọn một thư mục khác, nhấn Duyệt.\nDiskSpaceGBLabel=Cần có ít nhất [gb] GB ổ đĩa trống.\nDiskSpaceMBLabel=Cần có ít nhất [mb] MB ổ đĩa trống.\nCannotInstallToNetworkDrive=Cài đặt không thể cài vào một ổ đĩa mạng.\nCannotInstallToUNCPath=Cài đặt không thể cài vào đường dẫn UNC.\nInvalidPath=Bạn phải nhập đường dẫn đầy đủ với chữ cái ổ đĩa, ví dụ:%n%nC:\\APP%n%nhoặc một đường dẫn UNC theo mẫu:%n%n\\\\server\\share\nInvalidDrive=Ổ đĩa hoặc chia sẻ UNC bạn đã chọn không tồn tại hoặc không truy cập được. Hãy chọn cái khác.\nDiskSpaceWarningTitle=Không đủ dung lượng đĩa\nDiskSpaceWarning=Cài đặt yêu cầu ít nhất %1 KB dung lượng trống để cài đặt, nhưng ổ đĩa đã chọn chỉ còn %2KB.%n%nBạn muốn tiếp tục bằng mọi giá?\nDirNameTooLong=Tên thư mục hoặc đường dẫn quá dài.\nInvalidDirName=Tên thư mục không hợp lệ.\nBadDirName32=Tên thư mục không được chứa các kí tự sau:%n%n%1\nDirExistsTitle=Thư mục đã tồn tại\nDirExists=Thư mục:%n%n%1%n%nđã tồn tại. Bạn có muốn cài đặt vào thư mục đó bằng mọi giá?\nDirDoesntExistTitle=Thư mục không tồn tại\nDirDoesntExist=Thư mục:%n%n%1%n%nkhông tồn tại. Bạn có muốn tạo thư mục không?\n\n; *** \"Select Components\" wizard page\nWizardSelectComponents=Chọn các thành phần\nSelectComponentsDesc=Những thành phần nào nên được cài đặt?\nSelectComponentsLabel2=Chọn các thành phần bạn muốn cài đặt, bỏ chọn các thành phần bạn không muốn. Click Tiếp khi bạn đã sẵn sàng để tiếp tục.\nFullInstallation=Cài đặt đầy đủ\n; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)\nCompactInstallation=Cài đặt rút gọn\nCustomInstallation=Cài đặt tủy chỉnh\nNoUninstallWarningTitle=Thành phần đã tồn tại\nNoUninstallWarning=Cài đặt phát hiện các thành phần sau đã được cài đặt trên máy tính của bạn:%n%n%1%n%nBỏ chọn những thành phần này sẽ không cài đặt chúng.%n%nBạn có muốn tiếp tục bằng mọi giá?\nComponentSize1=%1 KB\nComponentSize2=%1 MB\nComponentsDiskSpaceGBLabel=Lựa chọn này yêu cầu ít nhất [gb] GB không gian đĩa.\nComponentsDiskSpaceMBLabel=Lựa chọn này yêu cầu ít nhất [mb] MB không gian đĩa.\n\n; *** \"Select Additional Tasks\" wizard page\nWizardSelectTasks=Chọn các tác vụ bổ sung\nSelectTasksDesc=Các tác vụ bổ sung nào nên được thực hiện?\nSelectTasksLabel2=Chọn các tác vụ bổ sung mà bạn muốn cài đặt thực hiện khi cài đặt [name], rồi nhấn Tiếp.\n\n; *** \"Select Start Menu Folder\" wizard page\nWizardSelectProgramGroup=Chọn thư mục bắt đầu\nSelectStartMenuFolderDesc=Các lối tắt đến chương trình nên được đặt ở đâu?\nSelectStartMenuFolderLabel3=Cài đặt sẽ tạo các lối tắt đến chương trình trong thư mục bắt đầu sau.\nSelectStartMenuFolderBrowseLabel=Để tiếp tục, click Tiếp. Nếu bạn muốn chọn thư mục khác, click Duyệt.\nMustEnterGroupName=Bạn phải nhập tên một thư mục.\nGroupNameTooLong=Tên thư mục hoặc đường dẫn quá dài.\nInvalidGroupName=Tên thư mục không hợp lệ.\nBadGroupName=Tên thư mục không được chứa các kí tự sau:%n%n%1\nNoProgramGroupCheck2=&Không tạo thư mục bắt đầu\n\n; *** \"Ready to Install\" wizard page\nWizardReady=Sẵn sàng cài đặt\nReadyLabel1=[name] đã sẵn sàng để dược cài đặt trên máy tính của bạn.\nReadyLabel2a=Click Cài đặt để tiếp tục, hoặc click Trước nếu bạn muốn xem lại/thay đổi bất kì cài đặt nào.\nReadyLabel2b=Click Cài đặt để tiếp tục cài đặt.\nReadyMemoUserInfo=Thông tin người dùng:\nReadyMemoDir=Vị trí đích:\nReadyMemoType=Kiểu cài đặt:\nReadyMemoComponents=Các thành phần được chọn:\nReadyMemoGroup=Thư mục bắt đầu:\nReadyMemoTasks=Các tác vụ bổ sung:\n\n; *** TDownloadWizardPage wizard page and DownloadTemporaryFile\nDownloadingLabel=Đang tải các tập tin bổ sung...\nButtonStopDownload=&Dừng tải xuống\nStopDownload=Bạn có chắc chắn muốn dừng tải xuống không?\nErrorDownloadAborted=Tải xuống bị hủy bỏ\nErrorDownloadFailed=Tải xuống không thành công: %1 %2\nErrorDownloadSizeFailed=Getting size failed: %1 %2\nErrorFileHash1=File hash failed: %1\nErrorFileHash2=Invalid file hash: expected %1, found %2\nErrorProgress=Invalid progress: %1 of %2\nErrorFileSize=Invalid file size: expected %1, found %2\n\n; *** \"Preparing to Install\" wizard page\nWizardPreparing=Chuẩn bị cài đặt\nPreparingDesc=[name] đang chuẩn bị được cài đặt trên máy tính của bạn.\nPreviousInstallNotCompleted=Việc cài đặt/gỡ bỏ một chương trình chưa được hoàn tất trước đó. Bạn sẽ phải khởi động lại máy tính để hoàn tất cài đặt đó.%n%nSau khi chởi động lại, chạy Cài đặt một lần nữa để hoàn tất cài đặt [name].\nCannotContinue=Cài đặt không thể tiếp tục. Nhấn Hủy để thoát.\nApplicationsFound=Những chương trình sau đang sử dụng các tệp cần được cập nhật bởi trình cài đặt. Chúng tôi khuyên bạn cho phép Cài đặt đóng các chương trình này.\nApplicationsFound2=Những chương trình sau đang sử dụng các tệp cần được cập nhật bởi trình cài đặt. Chúng tôi khuyên bạn cho phép Cài đặt đóng các chương trình này. Sau khi hoàn thành cài đặt, chúng tôi sẽ thử khởi động lại các chương trình này.\nCloseApplications=Tự độn&g đóng các chương trình này\nDontCloseApplications=Không đóng các chương t&rình này\nErrorCloseApplications=Cài đặt không thể đóng mọi chương trình. Chúng tôi khuyên bạn đóng các chương trình đang sử dụng các tệp cần được cập nhật bởi Cài đặt một cách thủ công trước khi tiếp tục.\nPrepareToInstallNeedsRestart=Setup must restart your computer. After restarting your computer, run Setup again to complete the installation of [name].%n%nWould you like to restart now?\n\n; *** \"Installing\" wizard page\nWizardInstalling=Đang cài đặt\nInstallingLabel=Hãy đợi khi [name] đang được cài đặt trên máy tính của bạn.\n\n; *** \"Setup Completed\" wizard page\nFinishedHeadingLabel=Hoàn thành cài đặt [name]\nFinishedLabelNoIcons=[name] đã được cài đặt xong trên máy tính của bạn.\nFinishedLabel=[name] đã được cài đặt xong trên máy tính của bạn. Chương trình có thể được khởi động bằng cách click vào lối tắt đến chương trình.\nClickFinish=Click Hoàn thành để thoát Cài đặt.\nFinishedRestartLabel=Để hoàn thành cài đặt [name], máy tính của bạn cần đươc khởi động lại. Bạn có muốn khởi động lại ngay?\nFinishedRestartMessage=Để hoàn thành cài đặt [name], máy tính của bạn cần đươc khởi động lại.%n%nBạn có muốn khởi động lại ngay?\nShowReadmeCheck=Có, tôi muốn xem tệp README\nYesRadio=&Có, khởi động lại máy tính ngay\nNoRadio=&Không, tôi sẽ khởi động lại máy tính sau\n; used for example as 'Run MyProg.exe'\nRunEntryExec=Chạy %1\n; used for example as 'View Readme.txt'\nRunEntryShellExec=Xem %1\n\n; *** \"Setup Needs the Next Disk\" stuff\nChangeDiskTitle=Cài đặt cần đĩa tiếp theo\nSelectDiskLabel2=Hãy chèn đĩa %1 và click OK.%n%nNếu các tệp trên đĩa này có thể được tìm thấy trên một thư mục khác với được hiển thị dưới đây, nhập đường dẫn hoặc click Duyệt.\nPathLabel=Đườ&ng dẫn:\nFileNotInDir2=Tệp \"%1\" không thể được xác định trong \"%2\". Hãy chọn đia xđúng hoặc chọn thư mục khác.\nSelectDirectoryLabel=Hãy chọn vị trí của đĩa tiếp theo.\n\n; *** Installation phase messages\nSetupAborted=Cài đặt không được hoàn thành.%n%nHãy sửa lỗi và chạy Cài đặt lại.\nAbortRetryIgnoreSelectAction=Chọn hành động\nAbortRetryIgnoreRetry=&Thử lại\nAbortRetryIgnoreIgnore=&Bỏ qua lỗi và tiếp tục\nAbortRetryIgnoreCancel=Hủy\n\n; *** Installation status messages\nStatusClosingApplications=Đang đóng các chương trình...\nStatusCreateDirs=Đang tạo các thư mục...\nStatusExtractFiles=Đang giải nén các tệp...\nStatusCreateIcons=Đang tạo các lối tắt...\nStatusCreateIniEntries=Đang tạo các đầu vào INI...\nStatusCreateRegistryEntries=Đang tạo các đầu vào registry...\nStatusRegisterFiles=Đang đăng kí các tệp...\nStatusSavingUninstall=Đang lưu thông tin gỡ cài đặt...\nStatusRunProgram=Đang hoàn thành cài đặt...\nStatusRestartingApplications=Đang khởi động lại các chương trình...\nStatusRollback=Đang hoàn lại các thay đổi...\n\n; *** Misc. errors\nErrorInternal2=Lỗi nội bộ: %1\nErrorFunctionFailedNoCode=%1 thất bại\nErrorFunctionFailed=%1 thất bại với mã lỗi %2\nErrorFunctionFailedWithMessage=%1 thất bại với mã lỗi %2.%n%3\nErrorExecutingProgram=Không thể chạy tệp:%n%1\n\n; *** Registry errors\nErrorRegOpenKey=Lỗi khi mở registry:%n%1\\%2\nErrorRegCreateKey=Lỗi khi tạo registry:%n%1\\%2\nErrorRegWriteKey=Lỗi khi viết registry:%n%1\\%2\n\n; *** INI errors\nErrorIniEntry=Lỗi tạo đầu vào INI cho tệp \"%1\".\n\n; *** File copying errors\nFileAbortRetryIgnoreSkipNotRecommended=&Bỏ qua tệp này (không khuyến nghị)\nFileAbortRetryIgnoreIgnoreNotRecommended=&Bỏ qua để tiếp tục bằng mọi giá (không khuyến nghị)\nSourceIsCorrupted=Tệp nguồn bị hỏng\nSourceDoesntExist=Tệp nguồn \"%1\" không tồn tại\nExistingFileReadOnly2=Tệp đã tồn tại với đánh dấu chỉ đọc.\nExistingFileReadOnlyRetry=&Xóa thuộc tính chỉ đọc và thử lại\nExistingFileReadOnlyKeepExisting=&Giữ tập tin hiện có\nErrorReadingExistingDest=Một lỗi đã xảy ra khi đọc tệp:\nFileExistsSelectAction=Select action\nFileExists2=Tệp đã tồn tại.\nFileExistsOverwriteExisting=G&hi đè tệp hiện có\nFileExistsKeepExisting=&Giữ tệp hiện có\nFileExistsOverwriteOrKeepAll=&Do this for the next conflicts\nExistingFileNewerSelectAction=Select action\nExistingFileNewer2=Tệp hiện có mới hơn tệp mà Thiết lập đang cố gắng cài đặt.\nExistingFileNewerOverwriteExisting=&Ghi đè tệp hiện có\nExistingFileNewerKeepExisting=&Giữ tệp hiện có (khuyến nghị)\nExistingFileNewerOverwriteOrKeepAll=&Do this for the next conflicts\nErrorChangingAttr=Một lỗi đã xảy ra khi thay đổi thuộc tính của tệp sau:\nErrorCreatingTemp=Một lỗi đã xảy ra khi tạo một tệp trong thư mục đích:\nErrorReadingSource=Một lỗi đã xảy ra khi đọc tệp nguồn:\nErrorCopying=Một lỗi đã xảy ra khi sao chép tệp:\nErrorReplacingExistingFile=Một lỗi đã xảy ra khi thay thế tệp:\nErrorRestartReplace=Khởi động lại & Thay thế (RestartReplace) thất bại:\nErrorRenamingTemp=Một lỗi đã xảy ra khi đổi tên tệp trong thư mục đích:\nErrorRegisterServer=Không thể đăng kí DLL/OCX: %1\nErrorRegSvr32Failed=RegSvr32 thất bại với mã thoát %1\nErrorRegisterTypeLib=Không thể đăng kí thư viện kiểu: %1\n\n; *** Uninstall display name markings\n; used for example as 'My Program (32-bit)'\nUninstallDisplayNameMark=%1 (%2)\n; used for example as 'My Program (32-bit, All users)'\nUninstallDisplayNameMarks=%1 (%2, %3)\nUninstallDisplayNameMark32Bit=32-bit\nUninstallDisplayNameMark64Bit=64-bit\nUninstallDisplayNameMarkAllUsers=All users\nUninstallDisplayNameMarkCurrentUser=Current user\n\n; *** Post-installation errors\nErrorOpeningReadme=Một lỗi đã xảy ra khi mở tệp README.\nErrorRestartingComputer=Cài đặt không thể khởi động lại máy tính. Hãy làm việc này một cách thủ công.\n\n; *** Uninstaller messages\nUninstallNotFound=Tệp \"%1\" không tồn tại. Không thể gỡ cài đặt.\nUninstallOpenError=Tệp \"%1\" không thể được mở. Không thể gỡ cài đặt\nUninstallUnsupportedVer=Tệp nhật kí gỡ cài đặt \"%1\" có định dạng không thể được xác định bởi phiên bản gỡ cài đặt này. Không thể gỡ cài đặt\nUninstallUnknownEntry=Một đầu vào không xác định (%1) đã bị phát hiện trong nhật kí gỡ cài đặt\nConfirmUninstall=Bạn có muốn dỡ bỏ hoàn toàn %1 và mọi thành phần của nó?\nUninstallOnlyOnWin64=Cài đặt này chỉ có thể được gỡ bỏ trên Windows 64 bit.\nOnlyAdminCanUninstall=Cài đặt này chỉ có thể được gỡ bỏ bằng một người dùng có quyền người quản trị.\nUninstallStatusLabel=Hãy đợi khi %1 được gỡ khỏi máy tính của bạn.\nUninstalledAll=%1 đã được gỡ bỏ thành công khỏi máy tính của bạn.\nUninstalledMost=%1 đã được gỡ bỏ thành công.%n%nMột số thành phần không thể được gỡ bỏ. Hãy làm việc này một cách thủ công.\nUninstalledAndNeedsRestart=Để hoàn thành việc gỡ cài đặt %1, bạn phải khởi động lại máy tính.%n%nBạn có muốn khởi động lại ngay?\nUninstallDataCorrupted=Tệp \"%1\" bị hỏng. Không thể gỡ cài đặt\n\n; *** Uninstallation phase messages\nConfirmDeleteSharedFileTitle=Gỡ bỏ tệp được chia sẻ?\nConfirmDeleteSharedFile2=Hệ thống chỉ ra các tệp được chia sẻ sau không được sử dụng bởi chương trình nào. Bạn có muốn gỡ bỏ tệp này?%n%nNếu có một chương trình vẫn sử dụng tệp này mà tệp bị gỡ bỏ, chúng có thể không chạy tốt. Nếu bạn không chắc chắn, chọn Không. Để lại tệp trên hệ thống của bạn sẽ không gây ra tổn hại.\nSharedFileNameLabel=Tên tệp:\nSharedFileLocationLabel=Vị trí:\nWizardUninstalling=Trạng thái gỡ cài đặt\nStatusUninstalling=Đang gỡ cài đặt %1...\n\n; *** Shutdown block reasons\nShutdownBlockReasonInstallingApp=Đang cài đặt %1.\nShutdownBlockReasonUninstallingApp=Đang gỡ cài đặt %1.\n\n; The custom messages below aren't used by Setup itself, but if you make\n; use of them in your scripts, you'll want to translate them.\n\n[CustomMessages]\n\nNameAndVersion=%1 phiên bản %2\nAdditionalIcons=Các lối tắt bổ sung:\nCreateDesktopIcon=Tạo một &lối tắt trên Desktop\nCreateQuickLaunchIcon=Tạo một lối tắt &Khởi động nhanh\nProgramOnTheWeb=%1 trên Web\nUninstallProgram=Gỡ cài đặt %1\nLaunchProgram=Khởi động %1\nAssocFileExtension=&Gán %1 với đuôi tệp %2\nAssocingFileExtension=Đang gán %1 với đuôi tệp %2...\nAutoStartProgramGroupDescription=Khởi động:\nAutoStartProgram=Tự động khởi động %1\nAddonHostProgramNotFound=%1 không thể được xác định trong thư mục bạn đã chọn.%n%nBạn có muốn tiếp tục bằng mọi giá?\n"
  },
  {
    "path": "publish.bat",
    "content": "@echo off\ncls\n\nrem Release Debug\nset config=Release\n\nset msbuild=\"D:\\Applications\\VS2022\\MSBuild\\Current\\Bin\\amd64\\MSBuild.exe\"\nset publish=%CD%\\bin\\publish\n\nset netVer=net8.0\nset netVerFull=net8.0-windows10.0.18362.0\n\nrmdir /q /s \"%publish%\"\nif errorlevel 1 (pause)\nrmdir /q /s bin\\launcher\nif errorlevel 1 (pause)\n\n\nset platform=x64\ncall :publish\n\nrem Since BCU is now on .NET8, realistically only Arm64 and x64 Windows systems are supported now, so there's no point in building x86\nrem set platform=x86\nrem call :publish\n\ncopy bin\\launcher\\BCU-launcher.exe %publish%\\BCUninstaller.exe\ncopy \"%target%\\BCU_manual.html\" \"%publish%\\BCU_manual.html\"\ncopy \"%target%\\Licence.txt\" \"%publish%\\Licence.txt\"\ncopy \"%target%\\PrivacyPolicy.txt\" \"%publish%\\PrivacyPolicy.txt\"\ncopy \"%target%\\NOTICE\" \"%publish%\\NOTICE\"\n\nrmdir /q /s bin\\launcher\n\nIF %config%==Release (del /f /s /q \"%publish%\\*.pdb\")\n\n\nrem --- AnyCPU --------------------------------------------------\n\nset target=%CD%\\bin\\publish-AnyCPU-%netVer%\n\nrmdir /q /s \"%target%\"\nif errorlevel 1 (pause)\n\necho ====== Building AnyCPU ======\n\n%msbuild% \"source\\BulkCrapUninstaller.sln\" /p:filealignment=512 /t:Publish /p:DeployOnBuild=true /p:PublishSingleFile=False /p:SelfContained=False /p:PublishProtocol=FileSystem /p:Configuration=%config% /p:Platform=\"Any CPU\" /p:TargetFrameworks=%netVerFull% /p:PublishDir=\"%target%\"  /p:PublishReadyToRun=false /p:PublishTrimmed=False /verbosity:minimal\n\nIF %config%==Release (del /f /s /q \"%target%\\*.pdb\")\n\npause\nexit\n\n\n\nrem -------------------------------------------------------------\n\n:publish\nset identifier=win-%platform%\nset target=%CD%\\bin\\publish\\%identifier%\n\necho ====== Building %identifier% ======\n\n%msbuild% \"source\\BulkCrapUninstaller.sln\" /p:filealignment=512 /t:Restore;Rebuild /p:DeployOnBuild=true /p:PublishSingleFile=False /p:SelfContained=True /p:PublishProtocol=FileSystem /p:Configuration=%config% /p:Platform=%platform% /p:TargetFrameworks=%netVerFull% /p:PublishDir=\"%target%\" /p:RuntimeIdentifier=%identifier% /p:PublishReadyToRun=false /p:PublishTrimmed=False /verbosity:minimal\n\n%msbuild% \"source\\BulkCrapUninstaller.sln\" /p:filealignment=512 /t:Publish /p:DeployOnBuild=true /p:PublishSingleFile=False /p:SelfContained=True /p:PublishProtocol=FileSystem /p:Configuration=%config% /p:Platform=%platform% /p:TargetFrameworks=%netVerFull% /p:PublishDir=\"%target%\" /p:RuntimeIdentifier=%identifier% /p:PublishReadyToRun=false /p:PublishTrimmed=False /verbosity:minimal\n\ngoto :eof\n\nrem -------------------------------------------------------------"
  },
  {
    "path": "source/BCU-console/BCU-console.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\t<PropertyGroup>\n\t\t<OutputType>Exe</OutputType>\n\t\t<RootNamespace>BCU_console</RootNamespace>\n\n\t\t<Product>Command Line Interface for Bulk Crap Uninstaller</Product>\n\t\t<AssemblyTitle>Command line utility that offers some of BCU's functionality for scripting</AssemblyTitle>\n\t\t\n\t\t<ApplicationIcon>..\\BulkCrapUninstaller\\Resources\\logo.ico</ApplicationIcon>\n\t\t<StartupObject>BCU_console.Program</StartupObject>\n\t</PropertyGroup>\n\n\t<ItemGroup>\n\t\t<ProjectReference Include=\"..\\UninstallTools\\UninstallTools.csproj\" />\n\t</ItemGroup>\n</Project>"
  },
  {
    "path": "source/BCU-console/Program.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing Klocman.Extensions;\nusing System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.IO;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing System.Threading;\nusing UninstallTools;\nusing UninstallTools.Factory;\nusing UninstallTools.Junk;\nusing UninstallTools.Junk.Confidence;\nusing UninstallTools.Junk.Containers;\nusing UninstallTools.Lists;\nusing UninstallTools.Uninstaller;\n\nnamespace BCU_console\n{\n    internal static class Program\n    {\n        private static void ShowHelp()\n        {\n            Console.WriteLine(@\"BCU-console [help | /?] - Show help (this screen)\n\nBCU-console uninstall [drive:][path]filename [/Q] [/U] [/V] [/J=<Level>] - Uninstall applications.\n [drive:][path]\t– Specifies drive and directory of the uninstall list.\n filename       – Specifies filename of the .bcul uninstall list that contains information about\n                  what applications to uninstall.\n\nBCU-console export [drive:][path]filename [/Q] [/U] [/V] - Export installed application data to xml file.\n [drive:][path]\t– Specifies drive and directory to where the export should be saved.\n filename       – Specifies filename of the .xml file to save the exported application information to.\n\nBCU-console list [/Q] [/U] [/V] - Display a list of installed applications.\n\nSwitches:\n /Q             - Use quiet uninstallers wherever possible (by default only use loud).\n /U             - Unattended mode (do not ask user for confirmation). WARNING: ONLY USE AFTER\n                  THOROUGH TESTING. UNINSTALL LISTS SHOULD BE AS SPECIFIC AS POSSIBLE TO AVOID\n                  FALSE POSITIVES. THERE ARE NO WARRANTIES, USE WITH CAUTION.\n /J=<Level>     - Attempt to clean up leftover \"\"junk\"\" (Registry entries and files/folders) after\n                  uninstall. If no level is passed then defaults to \"\"VeryGood\"\". ***WARNING***: USE\n                  EXTREME CAUTION WHEN CHOOSING ANY LEVEL BELOW VeryGood. THERE ARE NO WARRANTIES.\n                  Valid levels are: VeryGood, Good, Questionable, Bad, Unknown\n /V             - Verbose logging mode (show more information about what is currently happening).\n\nReturn codes:\n 0\t- The operation completed successfully.\n 1\t- Invalid arguments.\n 1223\t- The operation was canceled by the user.\");\n        }\n\n        private static int Main(string[] args)\n        {\n            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;\n            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;\n\n            try { Console.OutputEncoding = Encoding.Unicode; }\n            catch (SystemException) { }\n\n            var info = Assembly.GetExecutingAssembly();\n            Console.WriteLine(info.FullName);\n            Console.WriteLine();\n\n            if (args.Length == 0 || args.Any(x =>\n                    x.Equals(\"help\", StringComparison.OrdinalIgnoreCase) ||\n                    x.Equals(\"/?\", StringComparison.OrdinalIgnoreCase)))\n            {\n                ShowHelp();\n                Console.ReadKey();\n                return 0;\n            }\n\n            try\n            {\n                switch (args[0].Normalize().ToLowerInvariant())\n                {\n                    case \"uninstall\":\n                        return ProcessUninstallCommand(args.Skip(1).ToArray());\n                    case \"list\":\n                        return ProcessListCommand(args.Skip(1).ToArray());\n                    case \"export\":\n                        return ProcessExportCommand(args.Skip(1).ToArray());\n                    default:\n                        Console.WriteLine($\"Invalid command \\\"{args[0]}\\\"\\n\");\n                        ShowHelp();\n                        return 1;\n                }\n            }\n            catch (SystemException ex)\n            {\n                Console.WriteLine(@\"Encountered an unexpected error!\");\n                Console.WriteLine(ex);\n                return 13;\n            }\n        }\n\n        private static int ProcessListCommand(string[] args)\n        {\n            var isVerbose = args.Any(x => x.Equals(\"/V\", StringComparison.OrdinalIgnoreCase));\n            var isQuiet = args.Any(x => x.Equals(\"/Q\", StringComparison.OrdinalIgnoreCase));\n            var isUnattended = args.Any(x => x.Equals(\"/U\", StringComparison.OrdinalIgnoreCase));\n\n            var serializer = new ApplicationEntrySerializer(QueryApps(isQuiet, isUnattended, isVerbose));\n\n            Console.WriteLine($@\"{\"Display Name\",-40}  {\"Version\",-20}  {\"Source\",-40}\");\n            var sb = new StringBuilder(82);\n            for (var i = 0; i < 102; i++)\n            {\n                sb.Append('-');\n            }\n            Console.WriteLine(sb.ToString());\n\n            foreach (var entry in serializer.Items)\n            {\n                var displayName = entry.DisplayNameTrimmed;\n                if (displayName.Length > 40)\n                {\n                    displayName = displayName.Substring(0, 40);\n                }\n\n                var version = entry.DisplayVersion ?? string.Empty;\n                if (version.Length > 20)\n                {\n                    version = version.Substring(0, 20);\n                }\n\n                var source = entry.AboutUrl ?? string.Empty;\n                if (source.Length > 40)\n                {\n                    source = source.Substring(0, 40);\n                }\n\n                Console.WriteLine($@\"{displayName,-40}  {version,-20}  {source,-40}\");\n            }\n            return 0;\n        }\n\n        private static int ProcessExportCommand(string[] args)\n        {\n            var isVerbose = args.Any(x => x.Equals(\"/V\", StringComparison.OrdinalIgnoreCase));\n            var isQuiet = args.Any(x => x.Equals(\"/Q\", StringComparison.OrdinalIgnoreCase));\n            var isUnattended = args.Any(x => x.Equals(\"/U\", StringComparison.OrdinalIgnoreCase));\n\n            args = args.Where(x => !x.StartsWith(\"/\", StringComparison.Ordinal)).ToArray();\n            if (args.Length != 1)\n                return ShowInvalidSyntaxError(\"Missing export filename or invalid arguments\");\n\n            Console.WriteLine($@\"Starting export to {args[0]}\");\n            var apps = QueryApps(isQuiet, isUnattended, isVerbose);\n\n            Console.WriteLine(@\"Exporting data...\");\n            ApplicationEntrySerializer.SerializeApplicationEntries(args[0], apps);\n            Console.WriteLine(@\"Success!\");\n            return 0;\n        }\n\n        private static int ProcessUninstallCommand(string[] args)\n        {\n            if (args.Length < 1)\n                return ShowInvalidSyntaxError(\"Missing path argument\");\n\n            if (!File.Exists(args[0]))\n                return ShowInvalidSyntaxError(\"Invalid path or missing list file\");\n\n            UninstallList list;\n            try\n            {\n                list = UninstallList.ReadFromFile(args[0]);\n                if (list == null || list.Filters.Count == 0)\n                    throw new IOException(\"List is empty\");\n            }\n            catch (SystemException ex)\n            {\n                return ShowInvalidSyntaxError(\n                    $\"Invalid or damaged uninstall list file - \\\"{args[0]}\\\"\\nError: {ex.Message}\\n\");\n            }\n\n            var isVerbose = args.Any(x => x.Equals(\"/V\", StringComparison.OrdinalIgnoreCase));\n            var isQuiet = args.Any(x => x.Equals(\"/Q\", StringComparison.OrdinalIgnoreCase));\n            var isUnattended = args.Any(x => x.Equals(\"/U\", StringComparison.OrdinalIgnoreCase));\n\n            int junkArgumentIndex = Array.FindIndex(args, a => a.Equals(\"/J\", StringComparison.OrdinalIgnoreCase));\n            string junkArg = args.Where(a => a.Equals(\"/J\", StringComparison.OrdinalIgnoreCase) || a.StartsWith(\"/J=\", StringComparison.OrdinalIgnoreCase)).FirstOrDefault() ?? string.Empty;\n            ConfidenceLevel? junkConfidenceLevel = null;\n            if(junkArg.IsNotEmpty()) {\n                string[] junkSplit = junkArg.Split('=', 2);\n                junkConfidenceLevel = ConfidenceLevel.VeryGood;\n                if (junkSplit.Length == 2) {\n                    if (!Enum.TryParse(junkSplit[1], out ConfidenceLevel parsedJunkConfidenceLevel)) {\n                        Console.WriteLine($\"An invalid junk confidence level was passed: {junkSplit[1]}\");\n                        ShowHelp();\n                        return 1;\n                    }\n                    junkConfidenceLevel = parsedJunkConfidenceLevel;\n                }\n            }\n            if (isUnattended)\n                Console.WriteLine(@\"WARNING: Running in unattended mode. To abort press Ctrl+C or close the window.\");\n\n            return RunUninstall(list, isQuiet, isUnattended, isVerbose, junkConfidenceLevel);\n        }\n\n        private static int RunUninstall(UninstallList list, bool isQuiet, bool isUnattended, bool isVerbose, ConfidenceLevel? junkConfidenceLevel = null)\n        {\n            Console.WriteLine(@\"Starting bulk uninstall...\");\n            var apps = QueryApps(isQuiet, isUnattended, isVerbose);\n\n            apps = apps.Where(a => list.TestEntry(a) == true).OrderBy(x => x.DisplayName).ToList();\n\n            if (apps.Count == 0)\n            {\n                Console.WriteLine(@\"No applications matched the supplied uninstall list.\");\n                return 0;\n            }\n\n            Console.WriteLine(@\"{0} application(s) were matched by the list: {1}\", apps.Count,\n                          string.Join(\"; \", apps.Select(x => x.DisplayName)));\n\n            Console.WriteLine(@\"These applications will now be uninstalled PERMANENTLY.\");\n\n            if (!isUnattended)\n            {\n                Console.WriteLine(@\"Do you want to continue? [Y]es/[N]o\");\n                if (Console.ReadKey(true).Key != ConsoleKey.Y)\n                    return CancelledByUser();\n            }\n\n            Console.WriteLine(@\"Setting-up for the uninstall task...\");\n            var targets = apps.Select(a => new BulkUninstallEntry(a, a.QuietUninstallPossible, UninstallStatus.Waiting))\n                .ToList();\n            var task = UninstallManager.CreateBulkUninstallTask(targets,\n                new BulkUninstallConfiguration(false, isQuiet, false, true, true));\n            var isDone = false;\n            task.OnStatusChanged += (sender, args) =>\n            {\n                ClearCurrentConsoleLine();\n\n                var running = task.AllUninstallersList.Count(x => x.IsRunning);\n                var waiting = task.AllUninstallersList.Count(x => x.CurrentStatus == UninstallStatus.Waiting);\n                var finished = task.AllUninstallersList.Count(x => x.Finished);\n                var errors = task.AllUninstallersList.Count(x => x.CurrentStatus == UninstallStatus.Failed ||\n                    x.CurrentStatus == UninstallStatus.Invalid);\n                Console.Write(\"Running: {0}, Waiting: {1}, Finished: {2}, Failed: {3}\",\n                    running, waiting, finished, errors);\n\n                if (task.Finished)\n                {\n                    isDone = true;\n                    Console.WriteLine();\n                    Console.WriteLine(@\"Uninstall task Finished.\");\n\n                    foreach (var error in task.AllUninstallersList.Where(x =>\n                        x.CurrentStatus != UninstallStatus.Completed && x.CurrentError != null))\n                        Console.WriteLine($@\"Error: {error.UninstallerEntry.DisplayName} - {error.CurrentError.Message}\");\n                }\n            };\n            task.Start();\n\n            while (!isDone)\n                Thread.Sleep(250);\n\n            if (junkConfidenceLevel is not null) {\n                Console.WriteLine($\"Starting junk cleanup with a minimum confidence level of {junkConfidenceLevel}\");\n                List<IJunkResult> remainingJunk = JunkManager.FindJunk(apps, apps, _ => { })\n                    .Where(j => j.Confidence.GetConfidence() >= junkConfidenceLevel)\n                    .ToList();\n\n                if (!remainingJunk.Any()) {\n                    Console.WriteLine($\"No remaining junk found for any target applications.\");\n                    return 0;\n                }\n\n                Console.WriteLine(\"The following junk items will be permanently deleted:\");\n                remainingJunk.ForEach(Console.WriteLine);\n                if (!isUnattended) {\n                    Console.WriteLine(@\"Do you want to continue? [Y]es/[N]o\");\n                    if (Console.ReadKey(true).Key != ConsoleKey.Y)\n                        return CancelledByUser();\n                }\n\n                foreach (ApplicationUninstallerEntry entry in apps) {\n                    // ApplicationUninstallerEntry doesn't currently implement an equality operator so ToLongString() will do as an object \"hash\".\n                    List<IJunkResult> appJunk = remainingJunk.Where(j => j.Application.ToLongString().Equals(entry.ToLongString())).ToList();\n                    Console.WriteLine($\"{entry.DisplayName} Junk - {appJunk.Count} Entries Found\");\n                    appJunk.ForEach(j => j.Delete());\n                }\n            }\n            return 0;\n        }\n\n        public static void ClearCurrentConsoleLine()\n        {\n            var currentLineCursor = Console.CursorTop;\n            Console.SetCursorPosition(0, Console.CursorTop);\n            Console.Write(new string(' ', Console.WindowWidth));\n            Console.SetCursorPosition(0, currentLineCursor);\n        }\n\n        private static int CancelledByUser()\n        {\n            Console.WriteLine(@\"Operation cancelled by the user.\");\n            return 1223;\n        }\n\n        private static IList<ApplicationUninstallerEntry> QueryApps(bool isQuiet, bool isUnattended, bool isVerbose)\n        {\n            ConfigureUninstallTools();\n\n            Console.WriteLine(@\"Looking for applications...\");\n            string previousMain = null;\n\n            IList<ApplicationUninstallerEntry> result;\n            if (isQuiet || isUnattended)\n            {\n                result = ApplicationUninstallerFactory.GetUninstallerEntries(_ => { });\n            }\n            else\n            {\n                result = ApplicationUninstallerFactory.GetUninstallerEntries(report =>\n                            {\n                                if (previousMain != report.Message)\n                                {\n                                    previousMain = report.Message;\n                                    Console.WriteLine(report.Message);\n                                }\n                                if (isVerbose)\n                                {\n                                    if (!string.IsNullOrEmpty(report.Inner?.Message))\n                                    {\n                                        Console.Write(\"-> \");\n                                        Console.WriteLine(report.Inner.Message);\n                                    }\n                                }\n                            });\n            }\n\n            Console.WriteLine(\"Found {0} applications.\", result.Count);\n            return result;\n        }\n\n        private static void ConfigureUninstallTools()\n        {\n            UninstallToolsGlobalConfig.ScanWinUpdates = false;\n            UninstallToolsGlobalConfig.QuietAutomatizationKillStuck = true;\n            UninstallToolsGlobalConfig.QuietAutomatization = true;\n            UninstallToolsGlobalConfig.UseQuietUninstallDaemon = true;\n            UninstallToolsGlobalConfig.AutoDetectCustomProgramFiles = true;\n            UninstallToolsGlobalConfig.EnableAppInfoCache = false;\n        }\n\n        private static int ShowInvalidSyntaxError(string message)\n        {\n            Console.WriteLine(\"Invalid command syntax. \" + message);\n            return 87;\n        }\n    }\n}"
  },
  {
    "path": "source/BCU-launcher/BCU-launcher.rc",
    "content": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////////////////////////////////////////////////////////////////////////\n//\n// Generated from the TEXTINCLUDE 2 resource.\n//\n#include \"winres.h\"\n\n/////////////////////////////////////////////////////////////////////////////\n#undef APSTUDIO_READONLY_SYMBOLS\n\n/////////////////////////////////////////////////////////////////////////////\n// English (United Kingdom) resources\n\n#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)\nLANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK\n#pragma code_page(1252)\n\n#ifdef APSTUDIO_INVOKED\n/////////////////////////////////////////////////////////////////////////////\n//\n// TEXTINCLUDE\n//\n\n1 TEXTINCLUDE \nBEGIN\n    \"resource.h\\0\"\nEND\n\n2 TEXTINCLUDE \nBEGIN\n    \"#include \"\"winres.h\"\"\\r\\n\"\n    \"\\0\"\nEND\n\n3 TEXTINCLUDE \nBEGIN\n    \"\\r\\n\"\n    \"\\0\"\nEND\n\n#endif    // APSTUDIO_INVOKED\n\n\n/////////////////////////////////////////////////////////////////////////////\n//\n// Icon\n//\n\n// Icon with lowest ID value placed first to ensure application icon\n// remains consistent on all systems.\nIDI_ICON1               ICON                    \"..\\\\BulkCrapUninstaller\\\\Resources\\\\logo.ico\"\n\n\n/////////////////////////////////////////////////////////////////////////////\n//\n// Version\n//\n\nVS_VERSION_INFO VERSIONINFO\n FILEVERSION 1,2,0,0\n PRODUCTVERSION 1,2,0,0\n FILEFLAGSMASK 0x3fL\n#ifdef _DEBUG\n FILEFLAGS 0x1L\n#else\n FILEFLAGS 0x0L\n#endif\n FILEOS 0x40004L\n FILETYPE 0x1L\n FILESUBTYPE 0x0L\nBEGIN\n    BLOCK \"StringFileInfo\"\n    BEGIN\n        BLOCK \"080904b0\"\n        BEGIN\n            VALUE \"CompanyName\", \"Marcin Szeniak\"\n            VALUE \"FileDescription\", \"BCUninstaller launcher\"\n            VALUE \"FileVersion\", \"1.2.0.0\"\n            VALUE \"InternalName\", \"BCUninstaller.exe\"\n            VALUE \"LegalCopyright\", \"Copyright (C) 2023\"\n            VALUE \"OriginalFilename\", \"BCUninstaller.exe\"\n            VALUE \"ProductName\", \"BCUninstaller launcher\"\n            VALUE \"ProductVersion\", \"1.2.0.0\"\n        END\n    END\n    BLOCK \"VarFileInfo\"\n    BEGIN\n        VALUE \"Translation\", 0x809, 1200\n    END\nEND\n\n#endif    // English (United Kingdom) resources\n/////////////////////////////////////////////////////////////////////////////\n\n\n\n#ifndef APSTUDIO_INVOKED\n/////////////////////////////////////////////////////////////////////////////\n//\n// Generated from the TEXTINCLUDE 3 resource.\n//\n\n\n/////////////////////////////////////////////////////////////////////////////\n#endif    // not APSTUDIO_INVOKED\n\n"
  },
  {
    "path": "source/BCU-launcher/BCU-launcher.vcxproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemGroup Label=\"ProjectConfigurations\">\n    <ProjectConfiguration Include=\"Debug|Win32\">\n      <Configuration>Debug</Configuration>\n      <Platform>Win32</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|Win32\">\n      <Configuration>Release</Configuration>\n      <Platform>Win32</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Debug|x64\">\n      <Configuration>Debug</Configuration>\n      <Platform>x64</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|x64\">\n      <Configuration>Release</Configuration>\n      <Platform>x64</Platform>\n    </ProjectConfiguration>\n  </ItemGroup>\n  <PropertyGroup Label=\"Globals\">\n    <VCProjectVersion>16.0</VCProjectVersion>\n    <Keyword>Win32Proj</Keyword>\n    <ProjectGuid>{c54b5afd-c079-4852-960e-906b8cee0e07}</ProjectGuid>\n    <RootNamespace>TestConsole</RootNamespace>\n    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>\n    <ProjectName>BCU-launcher</ProjectName>\n  </PropertyGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.Default.props\" />\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\" Label=\"Configuration\">\n    <ConfigurationType>Application</ConfigurationType>\n    <UseDebugLibraries>true</UseDebugLibraries>\n    <PlatformToolset>v143</PlatformToolset>\n    <CharacterSet>Unicode</CharacterSet>\n    <UseOfMfc>Static</UseOfMfc>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\" Label=\"Configuration\">\n    <ConfigurationType>Application</ConfigurationType>\n    <UseDebugLibraries>false</UseDebugLibraries>\n    <PlatformToolset>v143</PlatformToolset>\n    <WholeProgramOptimization>true</WholeProgramOptimization>\n    <CharacterSet>Unicode</CharacterSet>\n    <UseOfMfc>Static</UseOfMfc>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\" Label=\"Configuration\">\n    <ConfigurationType>Application</ConfigurationType>\n    <UseDebugLibraries>true</UseDebugLibraries>\n    <PlatformToolset>v143</PlatformToolset>\n    <CharacterSet>Unicode</CharacterSet>\n    <UseOfMfc>Static</UseOfMfc>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\" Label=\"Configuration\">\n    <ConfigurationType>Application</ConfigurationType>\n    <UseDebugLibraries>false</UseDebugLibraries>\n    <PlatformToolset>v143</PlatformToolset>\n    <WholeProgramOptimization>true</WholeProgramOptimization>\n    <CharacterSet>Unicode</CharacterSet>\n    <UseOfMfc>Static</UseOfMfc>\n  </PropertyGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.props\" />\n  <ImportGroup Label=\"ExtensionSettings\">\n  </ImportGroup>\n  <ImportGroup Label=\"Shared\">\n  </ImportGroup>\n  <ImportGroup Label=\"PropertySheets\" Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <ImportGroup Label=\"PropertySheets\" Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <ImportGroup Label=\"PropertySheets\" Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <ImportGroup Label=\"PropertySheets\" Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <PropertyGroup Label=\"UserMacros\" />\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n    <LinkIncremental>true</LinkIncremental>\n    <OutDir>$(SolutionDir)..\\bin\\launcher\\</OutDir>\n    <TargetName>$(ProjectName)</TargetName>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n    <LinkIncremental>false</LinkIncremental>\n    <OutDir>$(SolutionDir)..\\bin\\launcher\\</OutDir>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\">\n    <LinkIncremental>true</LinkIncremental>\n    <TargetName>$(ProjectName)</TargetName>\n    <OutDir>$(SolutionDir)..\\bin\\launcher</OutDir>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\">\n    <LinkIncremental>false</LinkIncremental>\n    <OutDir>$(SolutionDir)..\\bin\\launcher</OutDir>\n  </PropertyGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n    <ClCompile>\n      <WarningLevel>Level3</WarningLevel>\n      <SDLCheck>true</SDLCheck>\n      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <ConformanceMode>true</ConformanceMode>\n      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\n    </ClCompile>\n    <Link>\n      <SubSystem>Windows</SubSystem>\n      <GenerateDebugInformation>true</GenerateDebugInformation>\n      <EntryPointSymbol>mainCRTStartup</EntryPointSymbol>\n      <UACExecutionLevel>RequireAdministrator</UACExecutionLevel>\n    </Link>\n  </ItemDefinitionGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n    <ClCompile>\n      <WarningLevel>Level3</WarningLevel>\n      <FunctionLevelLinking>true</FunctionLevelLinking>\n      <IntrinsicFunctions>true</IntrinsicFunctions>\n      <SDLCheck>true</SDLCheck>\n      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <ConformanceMode>true</ConformanceMode>\n      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\n    </ClCompile>\n    <Link>\n      <SubSystem>Windows</SubSystem>\n      <EnableCOMDATFolding>true</EnableCOMDATFolding>\n      <OptimizeReferences>true</OptimizeReferences>\n      <GenerateDebugInformation>true</GenerateDebugInformation>\n      <UACExecutionLevel>RequireAdministrator</UACExecutionLevel>\n      <EntryPointSymbol>mainCRTStartup</EntryPointSymbol>\n    </Link>\n  </ItemDefinitionGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\">\n    <ClCompile>\n      <WarningLevel>Level3</WarningLevel>\n      <SDLCheck>true</SDLCheck>\n      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <ConformanceMode>true</ConformanceMode>\n      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\n    </ClCompile>\n    <Link>\n      <SubSystem>Windows</SubSystem>\n      <GenerateDebugInformation>true</GenerateDebugInformation>\n      <EntryPointSymbol>mainCRTStartup</EntryPointSymbol>\n      <UACExecutionLevel>RequireAdministrator</UACExecutionLevel>\n    </Link>\n  </ItemDefinitionGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\">\n    <ClCompile>\n      <WarningLevel>Level3</WarningLevel>\n      <FunctionLevelLinking>true</FunctionLevelLinking>\n      <IntrinsicFunctions>true</IntrinsicFunctions>\n      <SDLCheck>true</SDLCheck>\n      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <ConformanceMode>true</ConformanceMode>\n      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\n    </ClCompile>\n    <Link>\n      <SubSystem>Windows</SubSystem>\n      <EnableCOMDATFolding>true</EnableCOMDATFolding>\n      <OptimizeReferences>true</OptimizeReferences>\n      <GenerateDebugInformation>true</GenerateDebugInformation>\n      <EntryPointSymbol>mainCRTStartup</EntryPointSymbol>\n      <UACExecutionLevel>RequireAdministrator</UACExecutionLevel>\n    </Link>\n  </ItemDefinitionGroup>\n  <ItemGroup>\n    <ClCompile Include=\"main.cpp\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ClInclude Include=\"resource.h\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ResourceCompile Include=\"BCU-launcher.rc\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Image Include=\"..\\BulkCrapUninstaller\\Resources\\logo.ico\" />\n  </ItemGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.targets\" />\n  <ImportGroup Label=\"ExtensionTargets\">\n  </ImportGroup>\n</Project>"
  },
  {
    "path": "source/BCU-launcher/main.cpp",
    "content": "#include <iostream>\n#include <Windows.h>\n#include <tchar.h>\n#include <cstring> \n#include <string>\n\nstd::wstring ExePath()\n{\n\tTCHAR buffer[MAX_PATH] = { 0 };\n\tGetModuleFileName(NULL, buffer, MAX_PATH);\n\tstd::wstring::size_type pos = std::wstring(buffer).find_last_of(L\"\\\\/\");\n\treturn std::wstring(buffer).substr(0, pos);\n}\n\nBOOL Is64BitOS()\n{\n\tBOOL bIs64BitOS = FALSE;\n\n\t// We check if the OS is 64 Bit\n\ttypedef BOOL(WINAPI* LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);\n\n\tLPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(L\"kernel32\"), \"IsWow64Process\");\n\n\tif (NULL != fnIsWow64Process)\n\t{\n\t\tif (!fnIsWow64Process(GetCurrentProcess(), &bIs64BitOS))\n\t\t{\n\t\t\t//error, try to start the app anyways\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn bIs64BitOS;\n}\n\nstd::wstring GetLastErrorAsString()\n{\n\t//Get the error message ID, if any.\n\tDWORD errorMessageID = ::GetLastError();\n\tif (errorMessageID == 0) {\n\t\treturn std::wstring(); //No error message has been recorded\n\t}\n\n\tLPWSTR messageBuffer = nullptr;\n\n\t//Ask Win32 to give us the string version of that message ID.\n\t//The parameters we pass in, tell Win32 to create the buffer that holds the message for us (because we don't yet know how long the message string will be).\n\tsize_t size = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,\n\t\tNULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR)&messageBuffer, 0, NULL);\n\n\t//Copy the error message into a std::string.\n\tstd::wstring message(messageBuffer, size);\n\n\t//Free the Win32's string's buffer.\n\tLocalFree(messageBuffer);\n\n\treturn message;\n}\n#include <fstream>\nbool fexists(const std::wstring& filename) {\n\tstd::ifstream ifile(filename.c_str());\n\treturn (bool)ifile;\n}\n\nbool IsWindowsVersionOrGreater(WORD wMajorVersion, WORD wMinorVersion, WORD wServicePackMajor)\n{\n    OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0 };\n    DWORDLONG        const dwlConditionMask = VerSetConditionMask(\n        VerSetConditionMask(\n        VerSetConditionMask(\n            0, VER_MAJORVERSION, VER_GREATER_EQUAL),\n               VER_MINORVERSION, VER_GREATER_EQUAL),\n               VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);\n\n    osvi.dwMajorVersion = wMajorVersion;\n    osvi.dwMinorVersion = wMinorVersion;\n    osvi.wServicePackMajor = wServicePackMajor;\n\n    return VerifyVersionInfoW(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask) != FALSE;\n}\n\nbool isWin7orLater()\n{\n    return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN7), LOBYTE(_WIN32_WINNT_WIN7), 1);\n}\n\n// Needed to get MessageBox working with MFC\n#pragma comment(lib, \"user32.lib\")\n\nint main()\n{\n\tstd::wstring p;\n\n\tif (Is64BitOS())\n\t{\n\t\tp = ExePath() + L\"\\\\win-x64\\\\BCUninstaller.exe\";\n\t\tif (!fexists(p))\n\t\t{\n\t\t\tMessageBox(nullptr, L\"This installation of BCUninstaller does not have files needed to run on 64 bit versions of Windows.\\n\\nDownload a 64 bit version of BCUninstaller and try again. The installer includes both 32 and 64 bit versions.\", L\"Could not start BCUninstaller.\", MB_ICONERROR | MB_OK);\n\t\t\treturn 1;\n\t\t}\n\t}\n\telse\n\t{\n\t\tp = ExePath() + L\"\\\\win-x86\\\\BCUninstaller.exe\";\n\t\tif (!fexists(p))\n\t\t{\n\t\t\tMessageBox(nullptr, L\"This installation of BCUninstaller does not have files needed to run on 32 bit versions of Windows.\\n\\nDownload a 32 bit version of BCUninstaller and try again. The installer includes both 32 and 64 bit versions.\", L\"Could not start BCUninstaller.\", MB_ICONERROR | MB_OK);\n\t\t\treturn 1;\n\t\t}\n\t}\n\n\tif(!isWin7orLater())\n\t{\n\t\tMessageBox(nullptr, L\"This version of BCUninstaller needs Windows 7 SP1 / Windows Server 2008 R2 SP1 or later. Either update your system, or use an old version of BCUninstaller.\\n\\nTo bypass this check you can run BCUninstaller.exe directly from one of the subfolders.\", L\"Could not start BCUninstaller.\", MB_ICONERROR | MB_OK);\n\t\treturn 2;\n\t}\n\n\t// Required on some systems or CreateProcess fails\n\tp = L\"\\\"\" + p + L\"\\\"\";\n\n\tauto cl = p.c_str();\n\tsize_t pSizeTerminated = p.size() + 1;\n\twchar_t* cla = new wchar_t[pSizeTerminated];\n\twcscpy_s(cla, pSizeTerminated, cl);\n\n\tSTARTUPINFO si;\n\tPROCESS_INFORMATION pi;\n\tZeroMemory(&si, sizeof(si));\n\tsi.cb = sizeof(si);\n\tZeroMemory(&pi, sizeof(pi));\n\t// Start the child process. \n\tif (!CreateProcess(NULL,   // No module name (use command line)\n\t\tcla,        // Command line\n\t\tNULL,           // Process handle not inheritable\n\t\tNULL,           // Thread handle not inheritable\n\t\tFALSE,          // Set handle inheritance to FALSE\n\t\t0,              // No creation flags\n\t\tNULL,           // Use parent's environment block\n\t\tNULL,           // Use parent's starting directory \n\t\t&si,            // Pointer to STARTUPINFO structure\n\t\t&pi)           // Pointer to PROCESS_INFORMATION structure\n\t\t)\n\t{\n\t\tMessageBox(nullptr, (L\"Failed to start BCUninstaller - \" + GetLastErrorAsString()).c_str(), L\"Could not start BCUninstaller.\", MB_ICONERROR | MB_OK);\n\t\tprintf(\"CreateProcess failed (%d).\\n\", GetLastError());\n\t\treturn 3;\n\t}\n\n\t// Wait until child process exits.\n\t//WaitForSingleObject( pi.hProcess, INFINITE );\n\n\t// Close process and thread handles. \n\tCloseHandle(pi.hProcess);\n\tCloseHandle(pi.hThread);\n}\n"
  },
  {
    "path": "source/BCU-launcher/resource.h",
    "content": "//{{NO_DEPENDENCIES}}\n// Microsoft Visual C++ generated include file.\n// Used by BCU-launcher.rc\n//\n#define IDI_ICON1                       101\n\n// Next default values for new objects\n// \n#ifdef APSTUDIO_INVOKED\n#ifndef APSTUDIO_READONLY_SYMBOLS\n#define _APS_NEXT_RESOURCE_VALUE        102\n#define _APS_NEXT_COMMAND_VALUE         40001\n#define _APS_NEXT_CONTROL_VALUE         1001\n#define _APS_NEXT_SYMED_VALUE           101\n#endif\n#endif\n"
  },
  {
    "path": "source/BulkCrapUninstaller/BulkCrapUninstaller.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\t<PropertyGroup>\r\n\t\t<OutputType>WinExe</OutputType>\r\n\t\t<AssemblyName>BCUninstaller</AssemblyName>\r\n\t\t\r\n\t\t<Product>Bulk Crap Uninstaller</Product>\r\n\t\t<AssemblyTitle>Remove large amounts of unwanted applications quickly</AssemblyTitle>\r\n\r\n\t\t<ApplicationIcon>Resources\\logo.ico</ApplicationIcon>\r\n\t\t<StartupObject>BulkCrapUninstaller.EntryPoint</StartupObject>\r\n\t</PropertyGroup>\r\n\r\n\t<ItemGroup>\r\n\t\t<Content Include=\"..\\..\\NOTICE\">\r\n\t\t\t<Link>NOTICE</Link>\r\n\t\t\t<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n\t\t\t<Visible>False</Visible>\r\n\t\t</Content>\r\n\t\t<Content Include=\"..\\..\\PrivacyPolicy.txt\">\r\n\t\t\t<Link>PrivacyPolicy.txt</Link>\r\n\t\t\t<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n\t\t\t<Visible>False</Visible>\r\n\t\t</Content>\r\n\t\t<Content Include=\"..\\..\\Licence.txt\">\r\n\t\t\t<Link>Licence.txt</Link>\r\n\t\t\t<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n\t\t\t<Visible>False</Visible>\r\n\t\t</Content>\r\n\t\t<Content Include=\"..\\..\\doc\\BCU_manual.html\">\r\n\t\t\t<Link>BCU_manual.html</Link>\r\n\t\t\t<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n\t\t\t<Visible>False</Visible>\r\n\t\t</Content>\r\n\r\n\t\t<Content Include=\"..\\es.exe\">\r\n\t\t\t<Link>es.exe</Link>\r\n\t\t\t<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n\t\t\t<Visible>False</Visible>\r\n\t\t</Content>\r\n\t\t<Content Include=\"CleanLogs.bat\">\r\n\t\t\t<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n\t\t\t<Visible>False</Visible>\r\n\t\t</Content>\r\n\t\t<None Update=\"Resources\\MicrosoftProgram_Install_and_Uninstall.meta.diagcab\">\r\n\t\t\t<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n\t\t\t<Visible>False</Visible>\r\n\t\t</None>\r\n\t</ItemGroup>\r\n\r\n\t<ItemGroup>\r\n\t\t<ProjectReference Include=\"..\\KlocTools\\KlocTools.csproj\" />\r\n\t\t<ProjectReference Include=\"..\\NBug_custom\\NBug.csproj\" />\r\n\t\t<ProjectReference Include=\"..\\NetSettingBinder\\NetSettingBinder.csproj\" />\r\n\t\t<ProjectReference Include=\"..\\ObjectListView\\ObjectListView.csproj\" />\r\n\t\t<ProjectReference Include=\"..\\PortableSettingsProvider\\PortableSettingsProvider.csproj\" />\r\n\t\t<ProjectReference Include=\"..\\SimpleTreeMap\\SimpleTreeMap.csproj\" />\r\n\t\t<ProjectReference Include=\"..\\UninstallTools\\UninstallTools.csproj\" />\r\n\t</ItemGroup>\r\n\r\n\t<ItemGroup>\r\n\t\t<PackageReference Include=\"Microsoft.VisualBasic\" Version=\"10.3.0\" />\r\n\t</ItemGroup>\r\n\r\n\t<ItemGroup>\r\n\t  <Compile Update=\"Properties\\Localisable.Designer.cs\">\r\n\t    <DesignTime>True</DesignTime>\r\n\t    <AutoGen>True</AutoGen>\r\n\t    <DependentUpon>Localisable.resx</DependentUpon>\r\n\t  </Compile>\r\n\t  <Compile Update=\"Properties\\Resources.Designer.cs\">\r\n\t    <DesignTime>True</DesignTime>\r\n\t    <AutoGen>True</AutoGen>\r\n\t    <DependentUpon>Resources.resx</DependentUpon>\r\n\t  </Compile>\r\n\t</ItemGroup>\r\n\r\n\t<ItemGroup>\r\n\t  <EmbeddedResource Update=\"Properties\\Localisable.resx\">\r\n\t    <Generator>ResXFileCodeGenerator</Generator>\r\n\t    <LastGenOutput>Localisable.Designer.cs</LastGenOutput>\r\n\t  </EmbeddedResource>\r\n\t  <EmbeddedResource Update=\"Properties\\Resources.resx\">\r\n\t    <Generator>ResXFileCodeGenerator</Generator>\r\n\t    <LastGenOutput>Resources.Designer.cs</LastGenOutput>\r\n\t  </EmbeddedResource>\r\n\t</ItemGroup>\r\n</Project>"
  },
  {
    "path": "source/BulkCrapUninstaller/CleanLogs.bat",
    "content": "title Removing BCU log files...\r\n@echo off\r\ncls\r\n\r\nif not exist %LOCALAPPDATA% (\r\nREM LOCALAPPDATA doesn't exist on windows older than Vista\r\nset APPDATASAFE=%APPDATA%\r\n) else (\r\nset APPDATASAFE=%LOCALAPPDATA%\r\n)\r\n\r\nREM Wait for BCU to exit so the logs are written\r\necho Waiting for BCUninstaller to exit...\r\n:loop\r\ntasklist | find \"BCUninstaller.exe \" >nul\r\nif not errorlevel 1 (\r\n\tREM Wait for 1 second before checking again\r\n    ping -n 2 127.0.0.1 >nul\r\n    goto :loop\r\n)\r\n\r\nREM Wait some more to be safe\r\nping -n 2 127.0.0.1 >nul\r\n\r\nREM Move to the log dir and remove all logs. They can be under following directories:\r\nREM \\CLR_v2.0\\UsageLogs \\CLR_v2.0_32\\UsageLogs \\CLR_v4.0\\UsageLogs \\CLR_v4.0_32\\UsageLogs\r\ncd /d \"%APPDATASAFE%\\Microsoft\"\r\n\r\necho Deleting Assembly Usage Logs...\r\ndel /f /s BCUninstaller.exe.log SteamHelper.exe.log StoreAppHelper.exe.log UninstallerAutomatizer.exe.log UpdateHelper.exe.log\r\n\r\necho Deleting .NET generated drectories...\r\nREM Settings directory automatically created by .NET\r\nset SETTINGSDIR=%APPDATASAFE%\\Marcin_Szeniak\r\n\r\nif not exist %SETTINGSDIR% (\r\nexit\r\n)\r\n\r\nREM Remove all directories related to BCU\r\nfor /d %%G in (\"%SETTINGSDIR%\\BCUninstaller*\") do rd /s /q \"%%~G\"\r\n\r\nREM Check if the settings dir is empty. If there are directories left, exit.\r\nfor /d %%i in (\"%SETTINGSDIR%\\*\") do exit\r\n\r\nREM Dir is empty, so remove it.\r\nrd \"%SETTINGSDIR%\"\r\n\r\nexit"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Controls\r\n{\r\n    partial class AdvancedClipboardCopy\r\n    {\r\n        /// <summary> \r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary> \r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Component Designer generated code\r\n\r\n        /// <summary> \r\n        /// Required method for Designer support - do not modify \r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AdvancedClipboardCopy));\r\n            groupBox1 = new System.Windows.Forms.GroupBox();\r\n            panel2 = new System.Windows.Forms.Panel();\r\n            comboBoxInsert = new System.Windows.Forms.ComboBox();\r\n            panel3 = new System.Windows.Forms.Panel();\r\n            checkBoxUnescape = new System.Windows.Forms.CheckBox();\r\n            buttonHelp = new System.Windows.Forms.Button();\r\n            textBoxPatternInput = new System.Windows.Forms.TextBox();\r\n            groupBox2 = new System.Windows.Forms.GroupBox();\r\n            textBoxResults = new System.Windows.Forms.TextBox();\r\n            panel1 = new System.Windows.Forms.Panel();\r\n            groupBox1.SuspendLayout();\r\n            panel2.SuspendLayout();\r\n            groupBox2.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // groupBox1\r\n            // \r\n            groupBox1.Controls.Add(panel2);\r\n            groupBox1.Controls.Add(textBoxPatternInput);\r\n            resources.ApplyResources(groupBox1, \"groupBox1\");\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.TabStop = false;\r\n            // \r\n            // panel2\r\n            // \r\n            resources.ApplyResources(panel2, \"panel2\");\r\n            panel2.Controls.Add(comboBoxInsert);\r\n            panel2.Controls.Add(panel3);\r\n            panel2.Controls.Add(checkBoxUnescape);\r\n            panel2.Controls.Add(buttonHelp);\r\n            panel2.Name = \"panel2\";\r\n            // \r\n            // comboBoxInsert\r\n            // \r\n            resources.ApplyResources(comboBoxInsert, \"comboBoxInsert\");\r\n            comboBoxInsert.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;\r\n            comboBoxInsert.FormattingEnabled = true;\r\n            comboBoxInsert.Items.AddRange(new object[] { resources.GetString(\"comboBoxInsert.Items\") });\r\n            comboBoxInsert.Name = \"comboBoxInsert\";\r\n            comboBoxInsert.SelectedIndexChanged += comboBox1_SelectedIndexChanged;\r\n            // \r\n            // panel3\r\n            // \r\n            resources.ApplyResources(panel3, \"panel3\");\r\n            panel3.Name = \"panel3\";\r\n            // \r\n            // checkBoxUnescape\r\n            // \r\n            resources.ApplyResources(checkBoxUnescape, \"checkBoxUnescape\");\r\n            checkBoxUnescape.Name = \"checkBoxUnescape\";\r\n            checkBoxUnescape.UseVisualStyleBackColor = true;\r\n            checkBoxUnescape.CheckedChanged += checkBox1_CheckedChanged;\r\n            // \r\n            // buttonHelp\r\n            // \r\n            resources.ApplyResources(buttonHelp, \"buttonHelp\");\r\n            buttonHelp.Name = \"buttonHelp\";\r\n            buttonHelp.UseVisualStyleBackColor = true;\r\n            buttonHelp.Click += buttonHelp_Click;\r\n            // \r\n            // textBoxPatternInput\r\n            // \r\n            resources.ApplyResources(textBoxPatternInput, \"textBoxPatternInput\");\r\n            textBoxPatternInput.Name = \"textBoxPatternInput\";\r\n            textBoxPatternInput.TextChanged += RefreshResult;\r\n            // \r\n            // groupBox2\r\n            // \r\n            groupBox2.Controls.Add(textBoxResults);\r\n            resources.ApplyResources(groupBox2, \"groupBox2\");\r\n            groupBox2.Name = \"groupBox2\";\r\n            groupBox2.TabStop = false;\r\n            // \r\n            // textBoxResults\r\n            // \r\n            textBoxResults.BackColor = System.Drawing.SystemColors.Window;\r\n            resources.ApplyResources(textBoxResults, \"textBoxResults\");\r\n            textBoxResults.Name = \"textBoxResults\";\r\n            textBoxResults.ReadOnly = true;\r\n            // \r\n            // panel1\r\n            // \r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // AdvancedClipboardCopy\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            Controls.Add(groupBox2);\r\n            Controls.Add(panel1);\r\n            Controls.Add(groupBox1);\r\n            Name = \"AdvancedClipboardCopy\";\r\n            groupBox1.ResumeLayout(false);\r\n            groupBox1.PerformLayout();\r\n            panel2.ResumeLayout(false);\r\n            panel2.PerformLayout();\r\n            groupBox2.ResumeLayout(false);\r\n            groupBox2.PerformLayout();\r\n            ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.GroupBox groupBox1;\r\n        private System.Windows.Forms.GroupBox groupBox2;\r\n        private System.Windows.Forms.TextBox textBoxPatternInput;\r\n        private System.Windows.Forms.TextBox textBoxResults;\r\n        private System.Windows.Forms.Panel panel1;\r\n        private System.Windows.Forms.Button buttonHelp;\r\n        private System.Windows.Forms.ComboBox comboBoxInsert;\r\n        private System.Windows.Forms.Panel panel2;\r\n        private System.Windows.Forms.Panel panel3;\r\n        private System.Windows.Forms.CheckBox checkBoxUnescape;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>نمط</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>التعليمات</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>الغاء الهروب</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>النتائج</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>ادخال...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text.RegularExpressions;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Controls\r\n{\r\n    public partial class AdvancedClipboardCopy : UserControl\r\n    {\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IEnumerable<ApplicationUninstallerEntry> Targets { get; set; }\r\n\r\n        public AdvancedClipboardCopy()\r\n        {\r\n            InitializeComponent();\r\n\r\n            comboBoxInsert.Items.AddRange(ClipboardCopyItem.Items.Cast<object>().ToArray());\r\n            comboBoxInsert.SelectedIndex = 0;\r\n        }\r\n\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public string PatternText\r\n        {\r\n            get { return textBoxPatternInput.Text; }\r\n            set { textBoxPatternInput.Text = value; }\r\n        }\r\n\r\n        public string Result => textBoxResults.Text;\r\n\r\n        private void RefreshResult(object sender, EventArgs e)\r\n        {\r\n            try\r\n            {\r\n                var pattern = checkBoxUnescape.Checked\r\n                    ? Regex.Unescape(textBoxPatternInput.Text)\r\n                    : textBoxPatternInput.Text;\r\n                textBoxResults.Text = string.Join(Environment.NewLine,\r\n                    Targets.Select(x => ClipboardCopyItem.GetStringFromPattern(pattern, x))\r\n                        .ToArray());\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                textBoxResults.Text = ex.Message;\r\n            }\r\n        }\r\n\r\n        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n            if (comboBoxInsert.SelectedIndex == 0) return;\r\n            if (comboBoxInsert.SelectedItem is ClipboardCopyItem x)\r\n                textBoxPatternInput.SelectedText = x.Name;\r\n            comboBoxInsert.SelectedIndex = 0;\r\n        }\r\n\r\n        private void checkBox1_CheckedChanged(object sender, EventArgs e)\r\n        {\r\n            RefreshResult(sender, e);\r\n        }\r\n\r\n        private void buttonHelp_Click(object sender, EventArgs e)\r\n        {\r\n            MessageBoxes.DisplayHelp();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Vzor</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Pomoc</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>Ukončit</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Výsledek</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>Vybrat</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Muster</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>Hilfe</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Ergebnis</value>\n  </data>\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\n    <value>Einfügen</value>\n  </data>\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\n    <value>Ausgabe abbrechen</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Patrón</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Ayuda</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>Unescape</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Resultados</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>Insertar...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Modèle</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Aide</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>Déséchap</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Résultats</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>Insérer...</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Minta</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Súgó</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>Unescape</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Eredmény</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>Beszúrás...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Percorso</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Aiuto</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>Unescape</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Risultati</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>Inserisci...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\n    <value>挿入</value>\n  </data>\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\n    <value>アンエスケープ</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>ヘルプ</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>パターン</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>結果</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Patroon</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Help</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>Onbeschermd</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Resultaten</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>Invoegen...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Szablon</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>Wstaw...</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Pomoc</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Wyniki</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>Unescape</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Padrão</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Ajuda</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>Cancelar saída</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Resultados</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>Inserir...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Padrão</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Ajuda</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>Cancelar saída</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Resultados</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>Inserir...</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"panel2.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Top, Left, Right</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>Insert...</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"comboBoxInsert.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>77, 0</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"comboBoxInsert.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>274, 23</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"comboBoxInsert.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxInsert.Name\" xml:space=\"preserve\">\r\n    <value>comboBoxInsert</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxInsert.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxInsert.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxInsert.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"panel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>351, 0</value>\r\n  </data>\r\n  <data name=\"panel3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>7, 25</value>\r\n  </data>\r\n  <data name=\"panel3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Name\" xml:space=\"preserve\">\r\n    <value>panel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>77, 25</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>Unescape</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxUnescape.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxUnescape</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxUnescape.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxUnescape.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxUnescape.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>358, 0</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonHelp.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>106, 27</value>\r\n  </data>\r\n  <data name=\"buttonHelp.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>106, 27</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>106, 27</value>\r\n  </data>\r\n  <data name=\"buttonHelp.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Help</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonHelp.Name\" xml:space=\"preserve\">\r\n    <value>buttonHelp</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonHelp.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonHelp.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonHelp.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"panel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>10, 52</value>\r\n  </data>\r\n  <data name=\"panel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>464, 25</value>\r\n  </data>\r\n  <data name=\"panel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Name\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"textBoxPatternInput.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Top, Left, Right</value>\r\n  </data>\r\n  <data name=\"textBoxPatternInput.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 22</value>\r\n  </data>\r\n  <data name=\"textBoxPatternInput.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"textBoxPatternInput.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>467, 23</value>\r\n  </data>\r\n  <data name=\"textBoxPatternInput.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxPatternInput.Name\" xml:space=\"preserve\">\r\n    <value>textBoxPatternInput</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxPatternInput.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxPatternInput.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxPatternInput.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>482, 84</value>\r\n  </data>\r\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Pattern</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"textBoxResults.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"textBoxResults.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 23</value>\r\n  </data>\r\n  <data name=\"textBoxResults.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"textBoxResults.Multiline\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"textBoxResults.ScrollBars\" type=\"System.Windows.Forms.ScrollBars, System.Windows.Forms\">\r\n    <value>Both</value>\r\n  </data>\r\n  <data name=\"textBoxResults.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>468, 287</value>\r\n  </data>\r\n  <data name=\"textBoxResults.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"textBoxResults.WordWrap\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxResults.Name\" xml:space=\"preserve\">\r\n    <value>textBoxResults</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxResults.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxResults.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxResults.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"groupBox2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 89</value>\r\n  </data>\r\n  <data name=\"groupBox2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 7</value>\r\n  </data>\r\n  <data name=\"groupBox2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>482, 317</value>\r\n  </data>\r\n  <data name=\"groupBox2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Results</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Name\" xml:space=\"preserve\">\r\n    <value>groupBox2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 84</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>482, 5</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>482, 406</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>AdvancedClipboardCopy</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Шаблон</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Справка</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>И выйти</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Результат</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>Выбрать...</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Vzorec</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Pomoč</value>\r\n  </data>\r\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\r\n    <value>Ne zbeži</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Rezultati</value>\r\n  </data>\r\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\r\n    <value>Vstavi</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\n    <value>Infoga...</value>\n    <comment>...</comment>\n  </data>\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\n    <value>Avkoda tecken</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>Hjälp</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Mönster</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Resultat</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\n    <value>Ekle...</value>\n  </data>\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\n    <value>Çıkmaktan vazgeç</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>Yardım</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Desen</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Sonuçlar</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\n    <value>Chèn...</value>\n  </data>\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\n    <value>Cho phép ký tự thoát</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>Trợ giúp</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Định dạng</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Kết quả</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\n    <value>插入...</value>\n  </data>\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\n    <value>反转义</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>帮助</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>模式</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>结果</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/AdvancedClipboardCopy.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"comboBoxInsert.Items\" xml:space=\"preserve\">\n    <value>插入</value>\n  </data>\n  <data name=\"checkBoxUnescape.Text\" xml:space=\"preserve\">\n    <value>反轉義</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>幫助</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>模式</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>結果</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ClipboardCopyItem.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Globalization;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing Klocman.Localising;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Controls\r\n{\r\n    internal sealed class ClipboardCopyItem\r\n    {\r\n        static ClipboardCopyItem()\r\n        {\r\n            var results = new List<ClipboardCopyItem>(typeof (ApplicationUninstallerEntry)\r\n                .GetProperties(BindingFlags.Instance | BindingFlags.Public)\r\n                .Select(p => new ClipboardCopyItem(p.Name, p.GetLocalisedName(), entry => p.GetValue(entry, null)))\r\n                .OrderBy(x => x.FancyName));\r\n\r\n            for (var i = 0; i < results.Count; i++)\r\n                results[i].Id = string.Concat(\"{\", i.ToString(CultureInfo.CurrentCulture), \"}\");\r\n\r\n            Items = results.AsEnumerable();\r\n            FormatGetterFuncs = results.Select(x => x.Getter).ToArray();\r\n        }\r\n\r\n        private ClipboardCopyItem(string name, string fancyName, Func<ApplicationUninstallerEntry, object> getter)\r\n        {\r\n            Getter = getter;\r\n            FancyName = fancyName;\r\n            Name = string.Concat(\"{\", name, \"}\");\r\n        }\r\n\r\n        public static IEnumerable<ClipboardCopyItem> Items { get; }\r\n        private static Func<ApplicationUninstallerEntry, object>[] FormatGetterFuncs { get; }\r\n\r\n        public Func<ApplicationUninstallerEntry, object> Getter { get; }\r\n        public string Name { get; }\r\n        public string FancyName { get; }\r\n        public string Id { get; private set; }\r\n\r\n        public static string GetStringFromPattern(string pattern, ApplicationUninstallerEntry entry)\r\n        {\r\n            return string.Format(CultureInfo.CurrentCulture, Items.Aggregate(pattern,\r\n                (current, clipboardCopyItem) => current.Replace(clipboardCopyItem.Name, clipboardCopyItem.Id)),\r\n                FormatGetterFuncs.Select(x => x(entry)).ToArray());\r\n        }\r\n\r\n        public override string ToString()\r\n        {\r\n            return Name + \" - \" + FancyName;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Controls\r\n{\r\n    partial class FileTargeter\r\n    {\r\n        /// <summary> \r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary> \r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Component Designer generated code\r\n\r\n        /// <summary> \r\n        /// Required method for Designer support - do not modify \r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FileTargeter));\r\n            panel1 = new System.Windows.Forms.Panel();\r\n            button1 = new System.Windows.Forms.Button();\r\n            pictureBox1 = new System.Windows.Forms.PictureBox();\r\n            flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\r\n            openFileDialog1 = new System.Windows.Forms.OpenFileDialog();\r\n            panel2 = new System.Windows.Forms.Panel();\r\n            button2 = new System.Windows.Forms.Button();\r\n            panel1.SuspendLayout();\r\n            ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();\r\n            panel2.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // panel1\r\n            // \r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Controls.Add(button1);\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // button1\r\n            // \r\n            resources.ApplyResources(button1, \"button1\");\r\n            button1.Name = \"button1\";\r\n            button1.UseVisualStyleBackColor = true;\r\n            button1.Click += button1_Click;\r\n            // \r\n            // pictureBox1\r\n            // \r\n            resources.ApplyResources(pictureBox1, \"pictureBox1\");\r\n            pictureBox1.Image = Properties.Resources.layerdown;\r\n            pictureBox1.Name = \"pictureBox1\";\r\n            pictureBox1.TabStop = false;\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // openFileDialog1\r\n            // \r\n            openFileDialog1.DereferenceLinks = false;\r\n            openFileDialog1.FileName = \"openFileDialog1\";\r\n            resources.ApplyResources(openFileDialog1, \"openFileDialog1\");\r\n            openFileDialog1.Multiselect = true;\r\n            // \r\n            // panel2\r\n            // \r\n            resources.ApplyResources(panel2, \"panel2\");\r\n            panel2.Controls.Add(button2);\r\n            panel2.Name = \"panel2\";\r\n            // \r\n            // button2\r\n            // \r\n            resources.ApplyResources(button2, \"button2\");\r\n            button2.Name = \"button2\";\r\n            button2.UseVisualStyleBackColor = true;\r\n            button2.Click += button2_Click;\r\n            // \r\n            // FileTargeter\r\n            // \r\n            AllowDrop = true;\r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            Controls.Add(panel1);\r\n            Controls.Add(panel2);\r\n            Controls.Add(flowLayoutPanel1);\r\n            Controls.Add(pictureBox1);\r\n            Name = \"FileTargeter\";\r\n            panel1.ResumeLayout(false);\r\n            panel1.PerformLayout();\r\n            ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();\r\n            panel2.ResumeLayout(false);\r\n            panel2.PerformLayout();\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.Panel panel1;\r\n        private System.Windows.Forms.Button button1;\r\n        private System.Windows.Forms.PictureBox pictureBox1;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;\r\n        private System.Windows.Forms.OpenFileDialog openFileDialog1;\r\n        private System.Windows.Forms.Panel panel2;\r\n        private System.Windows.Forms.Button button2;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>تثبيت الدليل...</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>حدد اي الملفات التي تنتمي للتطبيق</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>كل الملفات|*.*</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>ملف الارتباط او التطبيق...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Tools;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Controls\r\n{\r\n    public partial class FileTargeter : UserControl\r\n    {\r\n        public FileTargeter()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        private void ProcessFiles(ICollection<string> files)\r\n        {\r\n            if (files == null || files.Count < 1)\r\n                return;\r\n\r\n            var folders = new List<string>();\r\n\r\n            foreach (var file in files)\r\n            {\r\n                var fname = file;\r\n\r\n                if (string.IsNullOrEmpty(fname))\r\n                    continue;\r\n\r\n                RewindDropLoop:\r\n\r\n                if (Directory.Exists(fname))\r\n                {\r\n                    folders.Add(fname);\r\n                    continue;\r\n                }\r\n\r\n                if (!File.Exists(fname))\r\n                {\r\n                    try\r\n                    {\r\n                        fname = ProcessTools.SeparateArgsFromCommand(file).FileName;\r\n\r\n                        if (Directory.Exists(fname))\r\n                        {\r\n                            folders.Add(fname);\r\n                            continue;\r\n                        }\r\n                    }\r\n                    catch (Exception ex)\r\n                    {\r\n                        Console.WriteLine(ex);\r\n                    }\r\n                }\r\n\r\n                if (fname.TrimEnd().EndsWith(\".lnk\", StringComparison.OrdinalIgnoreCase))\r\n                {\r\n                    try\r\n                    {\r\n                        var result = WindowsTools.ResolveShortcut(fname);\r\n                        if (result != null)\r\n                        {\r\n                            fname = result;\r\n                            goto RewindDropLoop;\r\n                        }\r\n                    }\r\n                    catch (Exception ex)\r\n                    {\r\n                        PremadeDialogs.GenericError(ex);\r\n                    }\r\n                }\r\n                else\r\n                {\r\n                    try\r\n                    {\r\n                        var dirName = Path.GetDirectoryName(fname);\r\n                        folders.Add(dirName);\r\n                    }\r\n                    catch (Exception ex)\r\n                    {\r\n                        PremadeDialogs.GenericError(ex);\r\n                    }\r\n                }\r\n            }\r\n\r\n            var distinctFolders = folders.Where(x => x != null)\r\n                .Select(x => x.SafeNormalize().ToLowerInvariant().Trim().Trim('\\'', '\"').Trim())\r\n                .Distinct();\r\n\r\n            var folderInfos = distinctFolders.Select(x =>\r\n            {\r\n                try\r\n                {\r\n                    return new DirectoryInfo(x);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    Console.WriteLine(ex);\r\n                    return null;\r\n                }\r\n            }).Where(x => x != null);\r\n\r\n            var results = folderInfos.Where(x => !UninstallToolsGlobalConfig.IsSystemDirectory(x) && !UninstallToolsGlobalConfig.IsKnownFolder(x)).ToList();\r\n\r\n            DirectoriesSelected?.Invoke(this, new DirectoriesSelectedEventArgs(results));\r\n        }\r\n\r\n        protected override void OnLoad(EventArgs e)\r\n        {\r\n            base.OnLoad(e);\r\n            AllowDrop = true;\r\n        }\r\n\r\n        public event EventHandler<DirectoriesSelectedEventArgs> DirectoriesSelected;\r\n\r\n        private void button1_Click(object sender, EventArgs e)\r\n        {\r\n            if (openFileDialog1.ShowDialog() == DialogResult.OK\r\n                && openFileDialog1.FileNames.Any())\r\n                ProcessFiles(openFileDialog1.FileNames);\r\n        }\r\n\r\n        private void button2_Click(object sender, EventArgs e)\r\n        {\r\n            if (ParentForm != null) ParentForm.Enabled = false;\r\n            else Enabled = false;\r\n\r\n            var path = MessageBoxes.SelectFolder(Localisable.FileTargeter_SelectDirectoryWithAppsToRemove);\r\n            if (!string.IsNullOrEmpty(path))\r\n                ProcessFiles(new[] { path });\r\n            \r\n            if (ParentForm != null) ParentForm.Enabled = true;\r\n            else Enabled = true;\r\n        }\r\n    }\r\n\r\n    public sealed class DirectoriesSelectedEventArgs : EventArgs\r\n    {\r\n        public DirectoriesSelectedEventArgs(ICollection<DirectoryInfo> selectedFiles)\r\n        {\r\n            SelectedFiles = selectedFiles;\r\n        }\r\n\r\n        public ICollection<DirectoryInfo> SelectedFiles { get; }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>Adresář instalace</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Vyberte všechny soubory, které patří k aplikaci</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Všechny soubory|*.*</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Odkaz nebo soubor aplikace...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>Install Verzeichnis</value>\n  </data>\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\n    <value>Wählen Sie alle Dateien aus, die zur Anwendung gehören</value>\n  </data>\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>Alle Dateien|*.*</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Link oder Anwendungsdatei...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>Directorio de instalación</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Seleccione los archivos que pertenecen a la aplicación</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Todos los archivos|*.*</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Enlace o archivo de la aplicación...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>Dossier d'installation...</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Sélectionner tout fichier appartenant à l'application</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Tous les fichiers|*.*</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Lien ou fichier d'application...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>Telepítési hely...</value>\n  </data>\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\n    <value>Válassza ki az alkalmazáshoz tartozó fájlokat</value>\n  </data>\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>Minden fájl|*.*</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Hivatkozás vagy programfájl...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>Cartella installazione</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Seleziona qualunque file che fa parte dell'applicazione</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Tutti i file|*.*</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Collegamento o file dell'applicazione</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>インストールディレクトリ</value>\n  </data>\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\n    <value>アプリケーションに属するファイルを選択する</value>\n  </data>\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>全てのファイル|*.*</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>リンクまたはアプリケーションのファイル</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>Installatie map...</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Alle bestanden|*.*</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Link of programma bestand...</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Selecteer de bestanden die behoren tot het programma</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>Miejsce instalacji...</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Wybierz dowolne pliki należące do aplikacji</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Wszystkie pliki|*.*</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Link lub plik aplikacji...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>Diretório de instalação...</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Selecione os arquivos que pertencem à aplicação</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Todos os arquivos|*.*</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Link ou arquivo do aplicativo</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>Directório de Instalação</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Seleccione qualquer dos arquivos que pertencem à aplicação</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Todos os arquivos|*.*</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Link ou arquivo da aplicação...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"panel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"panel1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"button1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"button1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"button1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>14, 2</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"button1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"button1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>182, 29</value>\r\n  </data>\r\n  <data name=\"button1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Link or application's file...</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button1.Name\" xml:space=\"preserve\">\r\n    <value>button1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button1.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>58, 35</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>14, 2, 14, 2</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>210, 33</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>2, 2</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>6, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>56, 87</value>\r\n  </data>\r\n  <data name=\"pictureBox1.SizeMode\" type=\"System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms\">\r\n    <value>AutoSize</value>\r\n  </data>\r\n  <data name=\"pictureBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Name\" xml:space=\"preserve\">\r\n    <value>pictureBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>58, 2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>210, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <metadata name=\"openFileDialog1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>All files|*.*</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Select any files that belong to the application</value>\r\n  </data>\r\n  <data name=\"panel2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"panel2.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"button2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"button2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"button2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>14, 2</value>\r\n  </data>\r\n  <data name=\"button2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"button2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>182, 29</value>\r\n  </data>\r\n  <data name=\"button2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>Install directory...</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button2.Name\" xml:space=\"preserve\">\r\n    <value>button2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button2.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button2.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>58, 2</value>\r\n  </data>\r\n  <data name=\"panel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>14, 2, 14, 2</value>\r\n  </data>\r\n  <data name=\"panel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>210, 33</value>\r\n  </data>\r\n  <data name=\"panel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Name\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>2, 2, 2, 2</value>\r\n  </data>\r\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>270, 91</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openFileDialog1.Name\" xml:space=\"preserve\">\r\n    <value>openFileDialog1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openFileDialog1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>FileTargeter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>папка установки</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Выберите файлы, принадлежащие приложению</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Все|*.*</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Ссылка или файл приложения</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>Mapa za nameščanje...</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Izberite vse datoteke, ki pripadajo aplikaciji</value>\r\n  </data>\r\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Vse datoteke|*.*</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Povezava ali datoteka aplikacije...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>Installationsmapp...</value>\n  </data>\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\n    <value>Välj de filer som tillhör appen</value>\n  </data>\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>Alla filer|*.*</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Länk eller programmets fil</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>Kurulum dizini</value>\n  </data>\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\n    <value>Uygulamaya ait tüm dosyaları seçin</value>\n  </data>\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>Tüm dosyalar|*.*</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Bağlantı veya uygulamanın dosyası ...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>Thư mục cài đặt...</value>\n  </data>\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\n    <value>Chọn bất kỳ tệp nào liên quan đến ứng dụng</value>\n  </data>\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>Tất cả tệp|*.*</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Đường dẫn hoặc tệp tin ứng dụng...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>安装目录...</value>\n  </data>\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\n    <value>选择属于应用程序的所有文件</value>\n  </data>\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>所有文件|*.*</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>链接或应用程序文件...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/FileTargeter.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>安裝目錄</value>\n  </data>\n  <data name=\"openFileDialog1.Title\" xml:space=\"preserve\">\n    <value>選擇屬於應用程式的所有文件</value>\n  </data>\n  <data name=\"openFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>所有檔案|*.*</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>連結應用程式檔案</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Controls\r\n{\r\n    partial class ListLegend\r\n    {\r\n        /// <summary> \r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary> \r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Component Designer generated code\r\n\r\n        /// <summary> \r\n        /// Required method for Designer support - do not modify \r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ListLegend));\r\n            labelWinFeature = new System.Windows.Forms.Label();\r\n            labelOrphaned = new System.Windows.Forms.Label();\r\n            labelInvalid = new System.Windows.Forms.Label();\r\n            labelUnverified = new System.Windows.Forms.Label();\r\n            labelVerified = new System.Windows.Forms.Label();\r\n            labelLegend = new System.Windows.Forms.Label();\r\n            labelStoreApp = new System.Windows.Forms.Label();\r\n            flowLayoutPanellabelVerified = new System.Windows.Forms.FlowLayoutPanel();\r\n            flowLayoutPanellabelUnverified = new System.Windows.Forms.FlowLayoutPanel();\r\n            flowLayoutPanellabelInvalid = new System.Windows.Forms.FlowLayoutPanel();\r\n            flowLayoutPanellabelOrphaned = new System.Windows.Forms.FlowLayoutPanel();\r\n            flowLayoutPanellabelWinFeature = new System.Windows.Forms.FlowLayoutPanel();\r\n            flowLayoutPanellabelStoreApp = new System.Windows.Forms.FlowLayoutPanel();\r\n            flowLayoutPanellabelVerified.SuspendLayout();\r\n            flowLayoutPanellabelUnverified.SuspendLayout();\r\n            flowLayoutPanellabelInvalid.SuspendLayout();\r\n            flowLayoutPanellabelOrphaned.SuspendLayout();\r\n            flowLayoutPanellabelWinFeature.SuspendLayout();\r\n            flowLayoutPanellabelStoreApp.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // labelWinFeature\r\n            // \r\n            resources.ApplyResources(labelWinFeature, \"labelWinFeature\");\r\n            labelWinFeature.Cursor = System.Windows.Forms.Cursors.Hand;\r\n            labelWinFeature.Name = \"labelWinFeature\";\r\n            labelWinFeature.MouseDown += OnMouseDown;\r\n            // \r\n            // labelOrphaned\r\n            // \r\n            resources.ApplyResources(labelOrphaned, \"labelOrphaned\");\r\n            labelOrphaned.Cursor = System.Windows.Forms.Cursors.Hand;\r\n            labelOrphaned.Name = \"labelOrphaned\";\r\n            labelOrphaned.MouseDown += OnMouseDown;\r\n            // \r\n            // labelInvalid\r\n            // \r\n            resources.ApplyResources(labelInvalid, \"labelInvalid\");\r\n            labelInvalid.Cursor = System.Windows.Forms.Cursors.Hand;\r\n            labelInvalid.Name = \"labelInvalid\";\r\n            labelInvalid.MouseDown += OnMouseDown;\r\n            // \r\n            // labelUnverified\r\n            // \r\n            resources.ApplyResources(labelUnverified, \"labelUnverified\");\r\n            labelUnverified.Cursor = System.Windows.Forms.Cursors.Hand;\r\n            labelUnverified.Name = \"labelUnverified\";\r\n            labelUnverified.MouseDown += OnMouseDown;\r\n            // \r\n            // labelVerified\r\n            // \r\n            resources.ApplyResources(labelVerified, \"labelVerified\");\r\n            labelVerified.Cursor = System.Windows.Forms.Cursors.Hand;\r\n            labelVerified.Name = \"labelVerified\";\r\n            labelVerified.MouseDown += OnMouseDown;\r\n            // \r\n            // labelLegend\r\n            // \r\n            labelLegend.BackColor = System.Drawing.SystemColors.Control;\r\n            labelLegend.Cursor = System.Windows.Forms.Cursors.Hand;\r\n            resources.ApplyResources(labelLegend, \"labelLegend\");\r\n            labelLegend.Name = \"labelLegend\";\r\n            labelLegend.MouseDown += OnMouseDown;\r\n            // \r\n            // labelStoreApp\r\n            // \r\n            resources.ApplyResources(labelStoreApp, \"labelStoreApp\");\r\n            labelStoreApp.Cursor = System.Windows.Forms.Cursors.Hand;\r\n            labelStoreApp.Name = \"labelStoreApp\";\r\n            // \r\n            // flowLayoutPanellabelVerified\r\n            // \r\n            resources.ApplyResources(flowLayoutPanellabelVerified, \"flowLayoutPanellabelVerified\");\r\n            flowLayoutPanellabelVerified.BackColor = System.Drawing.Color.PaleGreen;\r\n            flowLayoutPanellabelVerified.Controls.Add(labelVerified);\r\n            flowLayoutPanellabelVerified.Name = \"flowLayoutPanellabelVerified\";\r\n            flowLayoutPanellabelVerified.MouseDown += OnMouseDown;\r\n            // \r\n            // flowLayoutPanellabelUnverified\r\n            // \r\n            resources.ApplyResources(flowLayoutPanellabelUnverified, \"flowLayoutPanellabelUnverified\");\r\n            flowLayoutPanellabelUnverified.BackColor = System.Drawing.Color.Aquamarine;\r\n            flowLayoutPanellabelUnverified.Controls.Add(labelUnverified);\r\n            flowLayoutPanellabelUnverified.Name = \"flowLayoutPanellabelUnverified\";\r\n            flowLayoutPanellabelUnverified.MouseDown += OnMouseDown;\r\n            // \r\n            // flowLayoutPanellabelInvalid\r\n            // \r\n            resources.ApplyResources(flowLayoutPanellabelInvalid, \"flowLayoutPanellabelInvalid\");\r\n            flowLayoutPanellabelInvalid.BackColor = System.Drawing.Color.LightSteelBlue;\r\n            flowLayoutPanellabelInvalid.Controls.Add(labelInvalid);\r\n            flowLayoutPanellabelInvalid.Name = \"flowLayoutPanellabelInvalid\";\r\n            flowLayoutPanellabelInvalid.MouseDown += OnMouseDown;\r\n            // \r\n            // flowLayoutPanellabelOrphaned\r\n            // \r\n            resources.ApplyResources(flowLayoutPanellabelOrphaned, \"flowLayoutPanellabelOrphaned\");\r\n            flowLayoutPanellabelOrphaned.BackColor = System.Drawing.Color.LightPink;\r\n            flowLayoutPanellabelOrphaned.Controls.Add(labelOrphaned);\r\n            flowLayoutPanellabelOrphaned.Name = \"flowLayoutPanellabelOrphaned\";\r\n            flowLayoutPanellabelOrphaned.MouseDown += OnMouseDown;\r\n            // \r\n            // flowLayoutPanellabelWinFeature\r\n            // \r\n            resources.ApplyResources(flowLayoutPanellabelWinFeature, \"flowLayoutPanellabelWinFeature\");\r\n            flowLayoutPanellabelWinFeature.BackColor = System.Drawing.Color.SlateBlue;\r\n            flowLayoutPanellabelWinFeature.Controls.Add(labelWinFeature);\r\n            flowLayoutPanellabelWinFeature.Name = \"flowLayoutPanellabelWinFeature\";\r\n            flowLayoutPanellabelWinFeature.MouseDown += OnMouseDown;\r\n            // \r\n            // flowLayoutPanellabelStoreApp\r\n            // \r\n            resources.ApplyResources(flowLayoutPanellabelStoreApp, \"flowLayoutPanellabelStoreApp\");\r\n            flowLayoutPanellabelStoreApp.BackColor = System.Drawing.Color.DeepSkyBlue;\r\n            flowLayoutPanellabelStoreApp.Controls.Add(labelStoreApp);\r\n            flowLayoutPanellabelStoreApp.Name = \"flowLayoutPanellabelStoreApp\";\r\n            flowLayoutPanellabelStoreApp.MouseDown += OnMouseDown;\r\n            // \r\n            // ListLegend\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r\n            Controls.Add(flowLayoutPanellabelStoreApp);\r\n            Controls.Add(flowLayoutPanellabelWinFeature);\r\n            Controls.Add(flowLayoutPanellabelOrphaned);\r\n            Controls.Add(flowLayoutPanellabelInvalid);\r\n            Controls.Add(flowLayoutPanellabelUnverified);\r\n            Controls.Add(flowLayoutPanellabelVerified);\r\n            Controls.Add(labelLegend);\r\n            Cursor = System.Windows.Forms.Cursors.Hand;\r\n            Name = \"ListLegend\";\r\n            EnabledChanged += ThisEnabledChanged;\r\n            MouseDown += OnMouseDown;\r\n            flowLayoutPanellabelVerified.ResumeLayout(false);\r\n            flowLayoutPanellabelVerified.PerformLayout();\r\n            flowLayoutPanellabelUnverified.ResumeLayout(false);\r\n            flowLayoutPanellabelUnverified.PerformLayout();\r\n            flowLayoutPanellabelInvalid.ResumeLayout(false);\r\n            flowLayoutPanellabelInvalid.PerformLayout();\r\n            flowLayoutPanellabelOrphaned.ResumeLayout(false);\r\n            flowLayoutPanellabelOrphaned.PerformLayout();\r\n            flowLayoutPanellabelWinFeature.ResumeLayout(false);\r\n            flowLayoutPanellabelWinFeature.PerformLayout();\r\n            flowLayoutPanellabelStoreApp.ResumeLayout(false);\r\n            flowLayoutPanellabelStoreApp.PerformLayout();\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n        private System.Windows.Forms.Label labelWinFeature;\r\n        private System.Windows.Forms.Label labelOrphaned;\r\n        private System.Windows.Forms.Label labelInvalid;\r\n        private System.Windows.Forms.Label labelUnverified;\r\n        private System.Windows.Forms.Label labelVerified;\r\n        private System.Windows.Forms.Label labelLegend;\r\n        private System.Windows.Forms.Label labelStoreApp;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanellabelVerified;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanellabelUnverified;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanellabelInvalid;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanellabelOrphaned;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanellabelWinFeature;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanellabelStoreApp;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>ميزة النوافذ</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>تطبيق غير مسجل</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت مفقود</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>شهادة غير متحقق منها</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>شهادة تم التحقق منها</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>توضيحات اللون</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>نوافذ متجر التطبيق</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.ComponentModel;\r\nusing System.Drawing;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions.ApplicationList;\r\nusing Klocman.Forms.Tools;\r\n\r\nnamespace BulkCrapUninstaller.Controls\r\n{\r\n    [WindowStyleController.ControlStyle(false)]\r\n    public partial class ListLegend : UserControl\r\n    {\r\n        public ListLegend()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        protected override void OnLoad(EventArgs e)\r\n        {\r\n            base.OnLoad(e);\r\n\r\n            Properties.Settings.Default.SettingBinder.Subscribe((x, y) => UpdateColors(), settings => settings.MiscColorblind, this);\r\n            UpdateColors();\r\n        }\r\n\r\n        private void UpdateColors()\r\n        {\r\n            flowLayoutPanellabelInvalid.BackColor = ApplicationListConstants.Colors.InvalidColor;\r\n            flowLayoutPanellabelOrphaned.BackColor = ApplicationListConstants.Colors.UnregisteredColor;\r\n            flowLayoutPanellabelUnverified.BackColor = ApplicationListConstants.Colors.UnverifiedColor;\r\n            flowLayoutPanellabelVerified.BackColor = ApplicationListConstants.Colors.VerifiedColor;\r\n            flowLayoutPanellabelWinFeature.BackColor = ApplicationListConstants.Colors.WindowsFeatureColor;\r\n            flowLayoutPanellabelStoreApp.BackColor = ApplicationListConstants.Colors.WindowsStoreAppColor;\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool InvalidEnabled\r\n        {\r\n            get { return flowLayoutPanellabelInvalid.Visible; }\r\n            set { flowLayoutPanellabelInvalid.Visible = value; }\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool WinFeatureEnabled\r\n        {\r\n            get { return flowLayoutPanellabelWinFeature.Visible; }\r\n            set { flowLayoutPanellabelWinFeature.Visible = value; }\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool CertificatesEnabled\r\n        {\r\n            get { return flowLayoutPanellabelVerified.Visible; }\r\n            set { flowLayoutPanellabelVerified.Visible = value; flowLayoutPanellabelUnverified.Visible = value; }\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool OrphanedEnabled\r\n        {\r\n            get { return flowLayoutPanellabelOrphaned.Visible; }\r\n            set { flowLayoutPanellabelOrphaned.Visible = value; }\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool StoreAppEnabled\r\n        {\r\n            get { return flowLayoutPanellabelStoreApp.Visible; }\r\n            set { flowLayoutPanellabelStoreApp.Visible = value; }\r\n        }\r\n\r\n        private void OnMouseDown(object sender, MouseEventArgs e)\r\n        {\r\n            CloseRequested?.Invoke(sender, e);\r\n        }\r\n\r\n        private void ThisEnabledChanged(object sender, EventArgs e)\r\n        {\r\n            BackColor = Enabled ? SystemColors.ControlLightLight : SystemColors.Control;\r\n        }\r\n\r\n        public event EventHandler CloseRequested;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Funkce systém Windows</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Neregistrované aplikace</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Neplatný odinstalátor</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Neověřené certifikáty</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Ověřený certifikát</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Barevná legenda</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>Aplikace Windows Store</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Windowsfunktion</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Nicht registrierte Anwendung</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Ungültiger Uninstaller</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Ungeprüftes Zertifikat</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Geprüftes Zertifikat</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Farblegende</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>Windows Store Programme</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Característica de Windows</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Aplicación no registrada</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>No hay desinstalador</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Certificado sin verificar</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Certificado verificado</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Leyendo colores</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>Apps de Windows Store</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Fonctionnalité Windows</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Application non enregistrée</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Désinstalleur manquant</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Certificat non vérifié</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Certificat vérifié</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Légende des couleurs</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>Appli du Windows Store</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Windows szolgáltatás</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Nem regisztrált alkalmazás</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Hiányzó eltávolító</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Nem ellenőrzött</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Ellenőrzött tanúsítvány</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Színjelmagyarázat</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>Windows Store alkalmazás</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Funzionalità di Windows</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Applicazione non registrata</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Disinstallatore mancante</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Certificato non verificato</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Certificato verificato</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Legenda colori</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>App di Windows Store</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\n    <value>Windowsの機能</value>\n  </data>\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\n    <value>未登録のアプリケーション</value>\n  </data>\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\n    <value>アンインストーラーが見つかりません</value>\n  </data>\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\n    <value>未認証の証明書</value>\n  </data>\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\n    <value>検証済み証明書</value>\n  </data>\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\n    <value>色の説明</value>\n  </data>\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\n    <value>Windowsストアアプリ</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Windows onderdeel</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Niet geregistreerd programma</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>De-installer ontbreekt</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Ongeverifieerd certificaat</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Geverifieerd certificaat</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Kleuren legenda</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>Windows Store app</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Funkcja systemu Windows</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Niezarejestrowana aplikacja</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Uszkodzony dezinstalator</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Niezweryfikowany certyfikat</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Zweryfikowany certyfikat</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Legenda kolorów</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>Aplikacja Windows Store</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Recurso do Windows</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Aplicativo não registrado</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalador faltando</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Certificado não verificado</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Certificado verificado</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Legenda de cores</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>App da Loja do Windows</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Funcionalidade do Windows</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Aplicação não registada</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalador invélido</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Certificado não verificado</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Certificado verificado</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Legenda de cores</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>App do Windows Store</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelWinFeature.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"labelWinFeature.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 2</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelWinFeature.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelWinFeature.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 3, 1, 3</value>\r\n  </data>\r\n  <data name=\"labelWinFeature.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>97, 21</value>\r\n  </data>\r\n  <data name=\"labelWinFeature.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Windows feature</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWinFeature.Name\" xml:space=\"preserve\">\r\n    <value>labelWinFeature</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWinFeature.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWinFeature.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanellabelWinFeature</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWinFeature.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 2</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 3, 1, 3</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>137, 21</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Unregistered application</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelOrphaned.Name\" xml:space=\"preserve\">\r\n    <value>labelOrphaned</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelOrphaned.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelOrphaned.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanellabelOrphaned</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelOrphaned.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelInvalid.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 2</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 3, 1, 3</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>107, 21</value>\r\n  </data>\r\n  <data name=\"labelInvalid.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Missing uninstaller</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInvalid.Name\" xml:space=\"preserve\">\r\n    <value>labelInvalid</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInvalid.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInvalid.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanellabelInvalid</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInvalid.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelUnverified.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 2</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 3, 1, 3</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>117, 21</value>\r\n  </data>\r\n  <data name=\"labelUnverified.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Unverified certificate</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelUnverified.Name\" xml:space=\"preserve\">\r\n    <value>labelUnverified</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelUnverified.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelUnverified.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanellabelUnverified</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelUnverified.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelVerified.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelVerified.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 2</value>\r\n  </data>\r\n  <data name=\"labelVerified.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelVerified.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 3, 1, 3</value>\r\n  </data>\r\n  <data name=\"labelVerified.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>102, 21</value>\r\n  </data>\r\n  <data name=\"labelVerified.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Verified certificate</value>\r\n  </data>\r\n  <data name=\"labelVerified.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleCenter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelVerified.Name\" xml:space=\"preserve\">\r\n    <value>labelVerified</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelVerified.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelVerified.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanellabelVerified</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelVerified.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelLegend.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"labelLegend.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"labelLegend.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelLegend.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>182, 23</value>\r\n  </data>\r\n  <data name=\"labelLegend.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Color legend</value>\r\n  </data>\r\n  <data name=\"labelLegend.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleCenter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelLegend.Name\" xml:space=\"preserve\">\r\n    <value>labelLegend</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelLegend.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelLegend.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelLegend.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 2</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 3, 1, 3</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>112, 21</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>Windows Store App</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelStoreApp.Name\" xml:space=\"preserve\">\r\n    <value>labelStoreApp</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelStoreApp.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelStoreApp.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanellabelStoreApp</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelStoreApp.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelVerified.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelVerified.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelVerified.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelVerified.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 23</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelVerified.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelVerified.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 2, 0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelVerified.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>182, 23</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelVerified.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelVerified.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanellabelVerified</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelVerified.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelVerified.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelVerified.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelUnverified.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelUnverified.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelUnverified.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelUnverified.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 46</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelUnverified.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelUnverified.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 2, 0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelUnverified.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>182, 23</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelUnverified.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelUnverified.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanellabelUnverified</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelUnverified.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelUnverified.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelUnverified.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelInvalid.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelInvalid.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelInvalid.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelInvalid.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 69</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelInvalid.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelInvalid.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 2, 0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelInvalid.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>182, 23</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelInvalid.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelInvalid.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanellabelInvalid</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelInvalid.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelInvalid.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelInvalid.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelOrphaned.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelOrphaned.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelOrphaned.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelOrphaned.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 92</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelOrphaned.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelOrphaned.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 2, 0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelOrphaned.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>182, 23</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelOrphaned.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelOrphaned.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanellabelOrphaned</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelOrphaned.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelOrphaned.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelOrphaned.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelWinFeature.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelWinFeature.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelWinFeature.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelWinFeature.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 115</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelWinFeature.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelWinFeature.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 2, 0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelWinFeature.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>182, 23</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelWinFeature.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>11</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelWinFeature.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanellabelWinFeature</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelWinFeature.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelWinFeature.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelWinFeature.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelStoreApp.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelStoreApp.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelStoreApp.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelStoreApp.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 138</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelStoreApp.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelStoreApp.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 2, 0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelStoreApp.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>182, 23</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanellabelStoreApp.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>12</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelStoreApp.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanellabelStoreApp</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelStoreApp.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelStoreApp.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanellabelStoreApp.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"$this.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>184, 2</value>\r\n  </data>\r\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>182, 161</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>ListLegend</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Компонент Windows</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Незарегистрирован</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Без деинсталлятора</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Непроверен</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Проверен</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Легенда подсветки</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>Приложение магазина Windows</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Windows funkcija</value>\r\n  </data>\r\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\r\n    <value>Neregistrirane aplikacije</value>\r\n  </data>\r\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Neveljaven odstranjevalec</value>\r\n  </data>\r\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\r\n    <value>Nepreverjeno digitalno potrdilo</value>\r\n  </data>\r\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\r\n    <value>Preverjeno digitalno potrdilo</value>\r\n  </data>\r\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\r\n    <value>Barvna legenda</value>\r\n  </data>\r\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\r\n    <value>Windows Store aplikacija</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\n    <value>Windows-funktion</value>\n  </data>\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\n    <value>Oregistrerad app</value>\n  </data>\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\n    <value>Saknad avinstallerare</value>\n  </data>\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\n    <value>Overifierat certifikat</value>\n  </data>\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\n    <value>Verifierat certifikat</value>\n  </data>\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\n    <value>Färgförklaring</value>\n  </data>\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\n    <value>Windows Store App</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\n    <value>Pencere özelliği</value>\n  </data>\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\n    <value>Kayıtsız uygulama</value>\n  </data>\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\n    <value>Eksik kaldırıcı</value>\n  </data>\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\n    <value>Doğrulanmamış sertifika</value>\n  </data>\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\n    <value>Doğrulanmış Sertifika</value>\n  </data>\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\n    <value>Renk açıklaması</value>\n  </data>\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\n    <value>Windows Mağazası Uygulaması</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\n    <value>Windows Feature</value>\n  </data>\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\n    <value>Ứng dụng chưa đăng ký</value>\n  </data>\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\n    <value>Thiếu trình gỡ cài đặt</value>\n  </data>\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\n    <value>Chứng chỉ chưa được xác minh</value>\n  </data>\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\n    <value>Chứng chỉ đã được xác minh</value>\n  </data>\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\n    <value>Chú thích màu</value>\n  </data>\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\n    <value>Ứng dụng từ Windows Store</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\n    <value>Windows功能</value>\n  </data>\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\n    <value>未注册的应用程序</value>\n  </data>\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\n    <value>卸载程序丢失</value>\n  </data>\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\n    <value>未验证的证书</value>\n  </data>\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\n    <value>已验证的证书</value>\n  </data>\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\n    <value>颜色图例</value>\n  </data>\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\n    <value>Windows商店应用</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/ListLegend.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelWinFeature.Text\" xml:space=\"preserve\">\n    <value>Windows 功能</value>\n  </data>\n  <data name=\"labelOrphaned.Text\" xml:space=\"preserve\">\n    <value>未註冊的應用程式</value>\n  </data>\n  <data name=\"labelInvalid.Text\" xml:space=\"preserve\">\n    <value>遺失移除軟體</value>\n  </data>\n  <data name=\"labelUnverified.Text\" xml:space=\"preserve\">\n    <value>未驗證的憑證</value>\n  </data>\n  <data name=\"labelVerified.Text\" xml:space=\"preserve\">\n    <value>已驗證的憑證</value>\n  </data>\n  <data name=\"labelLegend.Text\" xml:space=\"preserve\">\n    <value>顏色圖例</value>\n  </data>\n  <data name=\"labelStoreApp.Text\" xml:space=\"preserve\">\n    <value>Windows 商店應用程式</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class RelatedUninstallerAdder\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RelatedUninstallerAdder));\r\n            objectListView1 = new BrightIdeasSoftware.ObjectListView();\r\n            olvColumnName = new BrightIdeasSoftware.OLVColumn();\r\n            olvColumnEnabled = new BrightIdeasSoftware.OLVColumn();\r\n            olvColumnRelatedApps = new BrightIdeasSoftware.OLVColumn();\r\n            flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\r\n            labelInfo = new System.Windows.Forms.Label();\r\n            labelInfo2 = new System.Windows.Forms.Label();\r\n            pictureBox1 = new System.Windows.Forms.PictureBox();\r\n            ((System.ComponentModel.ISupportInitialize)objectListView1).BeginInit();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();\r\n            SuspendLayout();\r\n            // \r\n            // objectListView1\r\n            // \r\n            objectListView1.AllColumns.Add(olvColumnName);\r\n            objectListView1.AllColumns.Add(olvColumnEnabled);\r\n            objectListView1.AllColumns.Add(olvColumnRelatedApps);\r\n            objectListView1.CellEditUseWholeCell = false;\r\n            objectListView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { olvColumnName, olvColumnEnabled, olvColumnRelatedApps });\r\n            resources.ApplyResources(objectListView1, \"objectListView1\");\r\n            objectListView1.FullRowSelect = true;\r\n            objectListView1.GridLines = true;\r\n            objectListView1.MultiSelect = false;\r\n            objectListView1.Name = \"objectListView1\";\r\n            objectListView1.ShowGroups = false;\r\n            objectListView1.ShowItemToolTips = true;\r\n            objectListView1.UseCompatibleStateImageBehavior = false;\r\n            objectListView1.View = System.Windows.Forms.View.Details;\r\n            // \r\n            // olvColumnName\r\n            // \r\n            resources.ApplyResources(olvColumnName, \"olvColumnName\");\r\n            // \r\n            // olvColumnEnabled\r\n            // \r\n            olvColumnEnabled.CheckBoxes = true;\r\n            olvColumnEnabled.Hideable = false;\r\n            resources.ApplyResources(olvColumnEnabled, \"olvColumnEnabled\");\r\n            // \r\n            // olvColumnRelatedApps\r\n            // \r\n            olvColumnRelatedApps.FillsFreeSpace = true;\r\n            resources.ApplyResources(olvColumnRelatedApps, \"olvColumnRelatedApps\");\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Controls.Add(labelInfo);\r\n            flowLayoutPanel1.Controls.Add(labelInfo2);\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // labelInfo\r\n            // \r\n            resources.ApplyResources(labelInfo, \"labelInfo\");\r\n            labelInfo.Name = \"labelInfo\";\r\n            // \r\n            // labelInfo2\r\n            // \r\n            resources.ApplyResources(labelInfo2, \"labelInfo2\");\r\n            labelInfo2.Name = \"labelInfo2\";\r\n            // \r\n            // pictureBox1\r\n            // \r\n            resources.ApplyResources(pictureBox1, \"pictureBox1\");\r\n            pictureBox1.Image = Properties.Resources.warning;\r\n            pictureBox1.Name = \"pictureBox1\";\r\n            pictureBox1.TabStop = false;\r\n            // \r\n            // RelatedUninstallerAdder\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            Controls.Add(pictureBox1);\r\n            Controls.Add(objectListView1);\r\n            Controls.Add(flowLayoutPanel1);\r\n            Name = \"RelatedUninstallerAdder\";\r\n            ((System.ComponentModel.ISupportInitialize)objectListView1).EndInit();\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private BrightIdeasSoftware.ObjectListView objectListView1;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;\r\n        private System.Windows.Forms.Label labelInfo;\r\n        private BrightIdeasSoftware.OLVColumn olvColumnEnabled;\r\n        private BrightIdeasSoftware.OLVColumn olvColumnName;\r\n        private BrightIdeasSoftware.OLVColumn olvColumnRelatedApps;\r\n        private System.Windows.Forms.PictureBox pictureBox1;\r\n        private System.Windows.Forms.Label labelInfo2;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>اسم الغاء التثبيت ذات الصلة</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>اضافة الى المهمة</value>\r\n  </data>\r\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\r\n    <value>تتعلق بما يلي:</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>هذه قائمه بالتطبيقات التي قد تكون مرتبطة بالتطبيقات التي قمت بتحديدها للغاء التثبيت. يمكنك أضافه هذه التطبيقات إلى قائمه انتظار إلغاء التثبيت بواسطة التحقق منها.</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>تاكد من عدم إلغاء تثبيت البرامج الهامه التي قد لا تزال التطبيقات الأخرى تحتاج إلى العمل بشكل صحيح.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class RelatedUninstallerAdder : UserControl\r\n    {\r\n        public RelatedUninstallerAdder()\r\n        {\r\n            InitializeComponent();\r\n\r\n            olvColumnEnabled.AspectGetter = rowObject => ((RelatedApplicationEntry)rowObject).Enabled;\r\n            olvColumnEnabled.AspectPutter = (rowObject, value) => ((RelatedApplicationEntry)rowObject).Enabled = (bool)value;\r\n\r\n            olvColumnRelatedApps.AspectGetter = rowObject => string.Join(\", \",\r\n                ((RelatedApplicationEntry)rowObject).RelatedEntries.Select(x => x.DisplayName).ToArray());\r\n\r\n            olvColumnName.AspectGetter = rowObject => ((RelatedApplicationEntry)rowObject).Entry.DisplayName;\r\n        }\r\n\r\n        private IEnumerable<RelatedApplicationEntry> Entries => (objectListView1.Objects ?? Enumerable.Empty<RelatedApplicationEntry>()).Cast<RelatedApplicationEntry>();\r\n\r\n        public IEnumerable<ApplicationUninstallerEntry> GetResults()\r\n        {\r\n            return Entries.Where(x => x.Enabled).Select(x => x.Entry);\r\n        }\r\n\r\n        public void SetRelatedApps(IEnumerable<RelatedApplicationEntry> items)\r\n        {\r\n            objectListView1.SetObjects(items\r\n                .OrderBy(x => x.RelatedEntries.FirstOrDefault()?.DisplayName ?? string.Empty)\r\n                .ThenBy(x => x.Entry.DisplayName).ToList());\r\n        }\r\n\r\n        public sealed class RelatedApplicationEntry\r\n        {\r\n            public RelatedApplicationEntry(ApplicationUninstallerEntry entry,\r\n                IEnumerable<ApplicationUninstallerEntry> relatedEntries)\r\n            {\r\n                Entry = entry;\r\n                RelatedEntries = relatedEntries.OrderBy(x => x.DisplayName).ToList();\r\n                Enabled = false;\r\n            }\r\n\r\n            private bool _enabled;\r\n\r\n            public bool Enabled\r\n            {\r\n                get { return _enabled; }\r\n                set { _enabled = value; }\r\n            }\r\n\r\n            public ApplicationUninstallerEntry Entry { get; }\r\n\r\n            public IEnumerable<ApplicationUninstallerEntry> RelatedEntries { get; }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Související název odinstalátoru</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Přidat do úkolu</value>\r\n  </data>\r\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\r\n    <value>Související s:</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Toto je seznam aplikací, které mohou být odinstalovány. Aplikace můžete přidat do fronty odinstalace a zkontrolovat je.</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Ujistěte se, že nechcete odinstalovat důležitý software, nebo že je nepoužívají jiné aplikace pro svoji práci.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Verbundener Uninstaller</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>Aufgabe hinzufügen</value>\n  </data>\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\n    <value>Verbunden mit:</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>Dies ist eine Liste der Anwendungen welche im Zusammenhang mit den ausgewählten Anwendungen stehen, die du zum Deinstallieren markiert hast. Du kannst diese Anwendungen durch markieren zur Überprüfung in die Warteschlange zum Prüfen hinzufügen</value>\n  </data>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>Bitte stelle sicher, dass keine wichtigen Dateien deinstalliert werden welche von anderen Anwendungen noch benötigt werden.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nombre del desinstalador relacionado</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Añadir a la tarea</value>\r\n  </data>\r\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\r\n    <value>Relacionado con:</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Esta es la lista de aplicaciones que podrían estar relacionadas con las aplicaciones que seleccionó para desinstalar. Puede añadir estas aplicaciones a la cola de desinstalación comprobándolas.</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Asegúrese de no desinstalar un software importante que otras aplicaciones podrían necesitar para funcionar correctamente.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nom du désinstalleur relatif</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Ajouter à la tâche</value>\r\n  </data>\r\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\r\n    <value>Relatif à:</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Ceci est une liste d'applications en relation avec les applications sélectionnées à désinstaller. Vous pouvez ajouter ces applications à la file de désinstallation en les cochant.</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Assurez-vous de ne pas désinstaller un logiciel important dont les autres applications auraient besoin pour fonctionner correctement.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Kapcsolódó eltávolító neve</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>Feladathoz adás</value>\n  </data>\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\n    <value>Kapcsolódik ehhez:</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>Ezek olyan alkalmazások, amelyek az eltávolítandó alkalmazásokhoz kapcsolódhatnak. Ezeket az alkalmazásokat hozzáadhatja az eltávolítási várólistához.</value>\n  </data>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>Ne távolítson el fontos programokat, mert más alkalmazásoknak továbbra is szükségük lehet rájuk ahhoz, hogy megfelelően működjenek.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nome disinstallatore associato</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Aggiungi alle operazioni</value>\r\n  </data>\r\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\r\n    <value>Associato a:</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Questo è un elenco di applicazioni che potrebbero essere correlate alle applicazioni selezionate per la disinstallazione. Puoi aggiungere queste applicazioni alla coda di disinstallazione spuntandole.</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Assicurati di non disinstallare programmi importanti di cui necessitino altre applicazioni per funzionare correttamente</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>関連するアンインストーラー名</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>タスクに追加</value>\n  </data>\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\n    <value>関連アプリ：</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>これは、アンインストールすることに選択したアプリケーションに関連している可能性があるアプリケーションのリストです。これらのアプリケーションをアンインストールキューに追加するには、チェックを入れてください。</value>\n  </data>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>他のアプリケーションが正常に動作するために必要な重要なソフトウェアをアンインストールしないようにしてください。</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Verbonden de-installer naam</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Aan taak toevoegen</value>\r\n  </data>\r\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\r\n    <value>Verbonden met:</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Dit is een lijst met toepassingen die mogelijk verbonden zijn met toepassingen, die u selecteerde om te de-installeren. U kunt deze toepassingen toevoegen aan de de-installer wachtrij door deze aan te vinken.</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Overtuig u zelf ervan dat u geen belangrijke software de-installeert, die andere toepassingen nog nodig hebben om goed te werken.</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nazwa powiązanego dezinstalatora</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Dodaj do zadania</value>\r\n  </data>\r\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\r\n    <value>Powiązany z:</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Jest to lista aplikacji, które mogą być związane z aplikacjami wybranymi do odinstalowania. Zaznaczając je, możesz dodać te aplikacje do kolejki dezinstalacji.</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Upewnij się że nie odinstalowujesz czegoś wymaganego do poprawnego działania innych aplikacji i systemu.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Nome do desinstalador relacionado</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>Adicionar a tarefa</value>\n  </data>\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\n    <value>Relacionado com:</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>Isso é uma lista de aplicações que podem ser relacionadas às aplicações que você selecionou. Você pode adicionar essas aplicações à fila de desinstalação selecionando-as.</value>\n  </data>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>Certifique-se de não desinstalar softwares que podem ser necessários para outras aplicações.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Nome do correspondente desinstalador</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>Juntar à tarefa</value>\n  </data>\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\n    <value>Relacionado com:</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>Esta é a lista de aplicativos que podem estar relacionados com os aplicativos que selecionou para desinstalar. Pode adicioná-los à lista de desinstalação, procedendo à sua verificação.</value>\n  </data>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>Certifique-se de que não desinstala software importante que ainda é necessário para que outras aplicações funcionem correctamente.</value>\n  </data>\n</root>\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Related uninstaller name</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"olvColumnName.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>250</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Add to task</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"olvColumnEnabled.TextAlign\" type=\"System.Windows.Forms.HorizontalAlignment, System.Windows.Forms\">\r\n    <value>Center</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>85</value>\r\n  </data>\r\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\r\n    <value>Related to:</value>\r\n  </data>\r\n  <data name=\"olvColumnRelatedApps.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>264</value>\r\n  </data>\r\n  <data name=\"objectListView1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"objectListView1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 65</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"objectListView1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"objectListView1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>722, 268</value>\r\n  </data>\r\n  <data name=\"objectListView1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListView1.Name\" xml:space=\"preserve\">\r\n    <value>objectListView1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListView1.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.ObjectListView, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListView1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListView1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelInfo.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelInfo.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 0</value>\r\n  </data>\r\n  <data name=\"labelInfo.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelInfo.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>58, 0, 0, 5</value>\r\n  </data>\r\n  <data name=\"labelInfo.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>656, 35</value>\r\n  </data>\r\n  <data name=\"labelInfo.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>This is a list of applications that might be related to the applications you selected to uninstall. You can add these applications to the uninstall queue by checking them.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo.Name\" xml:space=\"preserve\">\r\n    <value>labelInfo</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelInfo2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 35</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>58, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>649, 15</value>\r\n  </data>\r\n  <data name=\"labelInfo2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Make sure that you don't uninstall important software that other applications might still need to work properly.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo2.Name\" xml:space=\"preserve\">\r\n    <value>labelInfo2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo2.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 7</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>0, 58</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 7</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>722, 58</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.WrapContents\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"pictureBox1.BackgroundImageLayout\" type=\"System.Windows.Forms.ImageLayout, System.Windows.Forms\">\r\n    <value>Center</value>\r\n  </data>\r\n  <data name=\"pictureBox1.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 3</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>58, 58</value>\r\n  </data>\r\n  <data name=\"pictureBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>11</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Name\" xml:space=\"preserve\">\r\n    <value>pictureBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 7</value>\r\n  </data>\r\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>736, 340</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnName.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnName</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnName.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnEnabled.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnEnabled</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnEnabled.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnRelatedApps.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnRelatedApps</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnRelatedApps.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>RelatedUninstallerAdder</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Имя связанного деинсталлятора</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Добавить к задаче</value>\r\n  </data>\r\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\r\n    <value>Связан с:</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Это список приложений, которые могут быть связаны с приложениями, выбранными для удаления. Их можно добавить в очередь удаления, предварительно проверив.</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Убедитесь, что Вы не удаляете компоненты, нужные для правильной работы других приложений.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Povezano ime odstranjevalca</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Dodaj v opravilo</value>\r\n  </data>\r\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\r\n    <value>Povezan z:</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>To je seznam aplikacij, ki so lahko povezane z izbranimi aplikacijami za odstranitev. Te programe lahko dodate v čakalno vrsto za odstranitev, tako da jih preverite.</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Prepričajte se, da ne odstranite pomembne programe, ki bi jih lahko še vedno uporabljale druge aplikacije za pravilno delovanje.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>İlgili kaldırıcı adı</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>Görev ekle</value>\n  </data>\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\n    <value>İlişkili;</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>Bu, kaldırmak için seçtiğiniz uygulamalar ile ilgili olabilecek uygulamaların bir listesidir. Bu uygulamaları, kontrol ederek sırasına ekleyebilirsiniz.</value>\n  </data>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>Diğer uygulamaların düzgün çalışması için gerekli olabilecek önemli yazılımları kaldırdığınızdan emin olun.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Tên trình gỡ cài có đặt liên quan</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>Thêm vào danh sách tác vụ</value>\n  </data>\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\n    <value>Liên quan đến: </value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>Đây là danh sách các ứng dụng có thể liên quan đến ứng các dụng bạn đã chọn để gỡ cài đặt. Bằng cách kiểm tra các ứng dụng này, bạn có thể thêm chúng vào hàng đợi gỡ cài đặt.</value>\n  </data>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>Hãy cẩn thận để không gỡ cài đặt phần mềm quan trọng mà các ứng dụng khác có thể cần để hoạt động bình thường.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>关联卸载程序名称</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>添加到任务</value>\n  </data>\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\n    <value>关联到:</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>这是可能与所选应用程序相关的应用程序列表。你可以通过选中它们将这些应用程序添加到卸载队列。</value>\n  </data>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>确保不要卸载其他应用程序工作需要的重要软件。</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/RelatedUninstallerAdder.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>移除相關軟體名稱</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>新增任務</value>\n  </data>\n  <data name=\"olvColumnRelatedApps.Text\" xml:space=\"preserve\">\n    <value>關聯到：</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>這些是相關的應用程式，你可以透過新增來將它們加入到移除列表內。</value>\n  </data>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>確保移除軟體時沒有相關的服務正在執行</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Controls\r\n{\r\n    partial class AdvancedFilters\r\n    {\r\n        /// <summary> \r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary> \r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Component Designer generated code\r\n\r\n        /// <summary> \r\n        /// Required method for Designer support - do not modify \r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AdvancedFilters));\r\n            this.uninstallListEditor1 = new UninstallTools.Controls.UninstallListEditor();\r\n            this.toolStripUninstallerList = new System.Windows.Forms.ToolStrip();\r\n            this.toolStripButtonToBasicFilters = new System.Windows.Forms.ToolStripButton();\r\n            this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();\r\n            this.toolStripButtonAddSelectedAsFilters = new System.Windows.Forms.ToolStripButton();\r\n            this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();\r\n            this.toolStripButtonOpenUl = new System.Windows.Forms.ToolStripButton();\r\n            this.toolStripButtonSaveUl = new System.Windows.Forms.ToolStripButton();\r\n            this.toolStripButtonSaveUlDef = new System.Windows.Forms.ToolStripButton();\r\n            this.toolStripButtonDelete = new System.Windows.Forms.ToolStripButton();\r\n            this.saveUlDialog = new System.Windows.Forms.SaveFileDialog();\r\n            this.openUlDialog = new System.Windows.Forms.OpenFileDialog();\r\n            this.toolStripUninstallerList.SuspendLayout();\r\n            this.SuspendLayout();\r\n            // \r\n            // uninstallListEditor1\r\n            // \r\n            resources.ApplyResources(this.uninstallListEditor1, \"uninstallListEditor1\");\r\n            this.uninstallListEditor1.Name = \"uninstallListEditor1\";\r\n            // \r\n            // toolStripUninstallerList\r\n            // \r\n            this.toolStripUninstallerList.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;\r\n            this.toolStripUninstallerList.ImageScalingSize = new System.Drawing.Size(22, 22);\r\n            this.toolStripUninstallerList.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\r\n            this.toolStripButtonToBasicFilters,\r\n            this.toolStripSeparator3,\r\n            this.toolStripButtonAddSelectedAsFilters,\r\n            this.toolStripSeparator1,\r\n            this.toolStripButtonOpenUl,\r\n            this.toolStripButtonSaveUl,\r\n            this.toolStripButtonSaveUlDef,\r\n            this.toolStripButtonDelete});\r\n            resources.ApplyResources(this.toolStripUninstallerList, \"toolStripUninstallerList\");\r\n            this.toolStripUninstallerList.Name = \"toolStripUninstallerList\";\r\n            // \r\n            // toolStripButtonToBasicFilters\r\n            // \r\n            this.toolStripButtonToBasicFilters.Image = global::BulkCrapUninstaller.Properties.Resources.magnifyforward;\r\n            resources.ApplyResources(this.toolStripButtonToBasicFilters, \"toolStripButtonToBasicFilters\");\r\n            this.toolStripButtonToBasicFilters.Name = \"toolStripButtonToBasicFilters\";\r\n            this.toolStripButtonToBasicFilters.Click += new System.EventHandler(this.toolStripButtonToBasicFilters_Click);\r\n            // \r\n            // toolStripSeparator3\r\n            // \r\n            this.toolStripSeparator3.Name = \"toolStripSeparator3\";\r\n            resources.ApplyResources(this.toolStripSeparator3, \"toolStripSeparator3\");\r\n            // \r\n            // toolStripButtonAddSelectedAsFilters\r\n            // \r\n            this.toolStripButtonAddSelectedAsFilters.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;\r\n            this.toolStripButtonAddSelectedAsFilters.Image = global::BulkCrapUninstaller.Properties.Resources.add_multiple;\r\n            resources.ApplyResources(this.toolStripButtonAddSelectedAsFilters, \"toolStripButtonAddSelectedAsFilters\");\r\n            this.toolStripButtonAddSelectedAsFilters.Name = \"toolStripButtonAddSelectedAsFilters\";\r\n            this.toolStripButtonAddSelectedAsFilters.Click += new System.EventHandler(this.toolStripButtonAddSelectedAsFilters_Click);\r\n            // \r\n            // toolStripSeparator1\r\n            // \r\n            this.toolStripSeparator1.Name = \"toolStripSeparator1\";\r\n            resources.ApplyResources(this.toolStripSeparator1, \"toolStripSeparator1\");\r\n            // \r\n            // toolStripButtonOpenUl\r\n            // \r\n            resources.ApplyResources(this.toolStripButtonOpenUl, \"toolStripButtonOpenUl\");\r\n            this.toolStripButtonOpenUl.Name = \"toolStripButtonOpenUl\";\r\n            this.toolStripButtonOpenUl.Click += new System.EventHandler(this.toolStripButtonOpenUl_Click);\r\n            // \r\n            // toolStripButtonSaveUl\r\n            // \r\n            resources.ApplyResources(this.toolStripButtonSaveUl, \"toolStripButtonSaveUl\");\r\n            this.toolStripButtonSaveUl.Name = \"toolStripButtonSaveUl\";\r\n            this.toolStripButtonSaveUl.Click += new System.EventHandler(this.ShowSaveDialog);\r\n            // \r\n            // toolStripButtonSaveUlDef\r\n            // \r\n            this.toolStripButtonSaveUlDef.Image = global::BulkCrapUninstaller.Properties.Resources.weather_sun_set;\r\n            resources.ApplyResources(this.toolStripButtonSaveUlDef, \"toolStripButtonSaveUlDef\");\r\n            this.toolStripButtonSaveUlDef.Name = \"toolStripButtonSaveUlDef\";\r\n            this.toolStripButtonSaveUlDef.Click += new System.EventHandler(this.toolStripButtonSaveUlDef_Click);\r\n            // \r\n            // toolStripButtonDelete\r\n            // \r\n            this.toolStripButtonDelete.Image = global::BulkCrapUninstaller.Properties.Resources.delete;\r\n            resources.ApplyResources(this.toolStripButtonDelete, \"toolStripButtonDelete\");\r\n            this.toolStripButtonDelete.Name = \"toolStripButtonDelete\";\r\n            this.toolStripButtonDelete.Click += new System.EventHandler(this.toolStripButtonDelete_Click);\r\n            // \r\n            // saveUlDialog\r\n            // \r\n            this.saveUlDialog.DefaultExt = \"bcul\";\r\n            resources.ApplyResources(this.saveUlDialog, \"saveUlDialog\");\r\n            this.saveUlDialog.FileOk += new System.ComponentModel.CancelEventHandler(this.saveUlDialog_FileOk);\r\n            // \r\n            // openUlDialog\r\n            // \r\n            this.openUlDialog.DefaultExt = \"bcul\";\r\n            resources.ApplyResources(this.openUlDialog, \"openUlDialog\");\r\n            this.openUlDialog.FileOk += new System.ComponentModel.CancelEventHandler(this.openUlDialog_FileOk);\r\n            // \r\n            // AdvancedFilters\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            this.Controls.Add(this.uninstallListEditor1);\r\n            this.Controls.Add(this.toolStripUninstallerList);\r\n            this.Name = \"AdvancedFilters\";\r\n            this.toolStripUninstallerList.ResumeLayout(false);\r\n            this.toolStripUninstallerList.PerformLayout();\r\n            this.ResumeLayout(false);\r\n            this.PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private UninstallTools.Controls.UninstallListEditor uninstallListEditor1;\r\n        private System.Windows.Forms.ToolStrip toolStripUninstallerList;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonToBasicFilters;\r\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonOpenUl;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonSaveUl;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonSaveUlDef;\r\n        private System.Windows.Forms.SaveFileDialog saveUlDialog;\r\n        private System.Windows.Forms.OpenFileDialog openUlDialog;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonAddSelectedAsFilters;\r\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonDelete;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>الفلترة الاساسيه</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>افتح...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>حفظ باسم...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>حفظ باسم افتراضي</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>اضافه تطبيقات محدده باسم فلترة</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>قوائم الغاء تثبيت|*.bcul</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>حفظ قائمه الغاء التثبيت...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>قوائم الغاء تثبيت|*.bcul</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>فتح قائمه الغاء التثبيت...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>حذف الافتراضي</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing BulkCrapUninstaller.Functions;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Forms.Tools;\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Security;\r\nusing System.Windows.Forms;\r\nusing UninstallTools;\r\nusing UninstallTools.Lists;\r\n\r\nnamespace BulkCrapUninstaller.Controls\r\n{\r\n    public partial class AdvancedFilters : UserControl\r\n    {\r\n        public event EventHandler CurrentListChanged;\r\n        public event EventHandler CurrentListFileNameChanged;\r\n        public event EventHandler FiltersChanged;\r\n        public event EventHandler UnsavedChangesChanged;\r\n\r\n        private static readonly string DefaultUninstallListPath = Path.Combine(Program.AssemblyLocation.FullName, Resources.DefaultUninstallListFilename);\r\n        private string _currentListFileName;\r\n        private bool _unsavedChanges;\r\n\r\n        public UninstallList CurrentList => uninstallListEditor1.CurrentList;\r\n\r\n        public bool UnsavedChanges\r\n        {\r\n            get { return _unsavedChanges; }\r\n            private set\r\n            {\r\n                if (_unsavedChanges != value)\r\n                {\r\n                    _unsavedChanges = value;\r\n                    UnsavedChangesChanged?.Invoke(this, EventArgs.Empty);\r\n                }\r\n            }\r\n        }\r\n\r\n        public string CurrentListFileName\r\n        {\r\n            get { return _currentListFileName; }\r\n            private set\r\n            {\r\n                if (_currentListFileName != value)\r\n                {\r\n                    _currentListFileName = value;\r\n                    CurrentListFileNameChanged?.Invoke(this, EventArgs.Empty);\r\n                }\r\n            }\r\n        }\r\n\r\n        public AdvancedFilters()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        protected override void OnLoad(EventArgs e)\r\n        {\r\n            base.OnLoad(e);\r\n\r\n            uninstallListEditor1.CurrentListChanged += OnCurrentListChanged;\r\n            uninstallListEditor1.FiltersChanged += OnFiltersChanged;\r\n\r\n            toolStripButtonDelete.Enabled = File.Exists(DefaultUninstallListPath);\r\n        }\r\n\r\n        private bool AskToSaveUnsaved()\r\n        {\r\n            if (!UnsavedChanges || uninstallListEditor1.CurrentList == null)\r\n                return true;\r\n\r\n            switch (MessageBoxes.AskToSaveUninstallList())\r\n            {\r\n                case MessageBoxes.PressedButton.Cancel:\r\n                    return false;\r\n                case MessageBoxes.PressedButton.Yes:\r\n                    return ShowSaveDialog();\r\n                case MessageBoxes.PressedButton.No:\r\n                    return true;\r\n                default:\r\n                    throw new InvalidEnumArgumentException();\r\n            }\r\n        }\r\n\r\n        public void LoadUninstallList(UninstallList list)\r\n        {\r\n            CurrentListFileName = string.Empty;\r\n            uninstallListEditor1.CurrentList = list;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Load a list silently from filename\r\n        /// </summary>\r\n        /// <param name=\"fileName\">Filename of the list</param>\r\n        public void LoadUninstallList(string fileName)\r\n        {\r\n            try\r\n            {\r\n                var result = UninstallList.ReadFromFile(fileName);\r\n\r\n                CurrentListFileName = fileName;\r\n                uninstallListEditor1.CurrentList = result;\r\n                UnsavedChanges = false;\r\n            }\r\n            catch (SecurityException ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(\"File is not an uninstall list or it can't be opened\",\r\n                    \"Please note that uninstall lists are saved in the \\\"Advanced filtering\\\" view, not by exporting. Lists should have the .bcul extension.\\n\\nError message: \" + ex.Message);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Show file select gui\r\n        /// </summary>\r\n        public void LoadUninstallList()\r\n        {\r\n            toolStripButtonOpenUl_Click(this, EventArgs.Empty);\r\n        }\r\n\r\n        private void OnCurrentListChanged(object sender, EventArgs e)\r\n        {\r\n            if (CurrentList == null)\r\n                CurrentListFileName = string.Empty;\r\n\r\n            UnsavedChanges = false;\r\n            CurrentListChanged?.Invoke(sender, e);\r\n        }\r\n\r\n        private void OnFiltersChanged(object sender, EventArgs e)\r\n        {\r\n            UnsavedChanges = true;\r\n            FiltersChanged?.Invoke(sender, e);\r\n        }\r\n\r\n        private void openUlDialog_FileOk(object sender, CancelEventArgs e)\r\n        {\r\n            LoadUninstallList(openUlDialog.FileName);\r\n        }\r\n\r\n        private void saveUlDialog_FileOk(object sender, CancelEventArgs e)\r\n        {\r\n            try\r\n            {\r\n                CurrentList.SaveToFile(saveUlDialog.FileName);\r\n                CurrentListFileName = saveUlDialog.FileName;\r\n                UnsavedChanges = false;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n            }\r\n        }\r\n\r\n        private void ShowSaveDialog(object sender, EventArgs e)\r\n        {\r\n            ShowSaveDialog();\r\n        }\r\n\r\n        private bool ShowSaveDialog()\r\n        {\r\n            if (!string.IsNullOrEmpty(CurrentListFileName))\r\n            {\r\n                try\r\n                {\r\n                    saveUlDialog.InitialDirectory = Path.GetDirectoryName(CurrentListFileName);\r\n                    saveUlDialog.FileName = Path.GetFileName(CurrentListFileName);\r\n                }\r\n                catch (ArgumentException)\r\n                {\r\n                }\r\n                catch (PathTooLongException)\r\n                {\r\n                }\r\n            }\r\n            return saveUlDialog.ShowDialog(this) == DialogResult.OK;\r\n        }\r\n\r\n        private void toolStripButtonOpenUl_Click(object sender, EventArgs e)\r\n        {\r\n            if (!AskToSaveUnsaved()) return;\r\n\r\n            if (!string.IsNullOrEmpty(CurrentListFileName))\r\n            {\r\n                try\r\n                {\r\n                    openUlDialog.InitialDirectory = Path.GetDirectoryName(CurrentListFileName);\r\n                    openUlDialog.FileName = Path.GetFileName(CurrentListFileName);\r\n                }\r\n                catch (ArgumentException)\r\n                {\r\n                }\r\n                catch (PathTooLongException)\r\n                {\r\n                }\r\n            }\r\n            openUlDialog.ShowDialog(this);\r\n        }\r\n\r\n        private void toolStripButtonSaveUlDef_Click(object sender, EventArgs e)\r\n        {\r\n            CurrentList.SaveToFile(DefaultUninstallListPath);\r\n            CurrentListFileName = DefaultUninstallListPath;\r\n\r\n            toolStripButtonDelete.Enabled = true;\r\n        }\r\n\r\n        private void toolStripButtonToBasicFilters_Click(object sender, EventArgs e)\r\n        {\r\n            if (!AskToSaveUnsaved()) return;\r\n\r\n            uninstallListEditor1.CurrentList = null;\r\n        }\r\n\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Func<IEnumerable<ApplicationUninstallerEntry>> SelectedEntryGetter { get; set; }\r\n\r\n        private void toolStripButtonAddSelectedAsFilters_Click(object sender, EventArgs e)\r\n        {\r\n            if (SelectedEntryGetter == null) throw new InvalidOperationException(nameof(SelectedEntryGetter) + \" is null\");\r\n            if (CurrentList == null) throw new InvalidOperationException(nameof(CurrentList) + \" is null\");\r\n\r\n            var entries = SelectedEntryGetter();\r\n            var filters = entries.Select(x => new Filter(x.DisplayName, false,\r\n                new FilterCondition(x.DisplayName, ComparisonMethod.Equals,\r\n                    nameof(ApplicationUninstallerEntry.DisplayName))));\r\n\r\n            CurrentList.AddItems(filters);\r\n\r\n            RepopulateList();\r\n        }\r\n\r\n        public void RepopulateList()\r\n        {\r\n            uninstallListEditor1.PopulateList();\r\n            //OnCurrentListChanged(this, EventArgs.Empty);\r\n            OnFiltersChanged(this, EventArgs.Empty);\r\n        }\r\n\r\n        private void toolStripButtonDelete_Click(object sender, EventArgs e)\r\n        {\r\n            try\r\n            {\r\n                File.Delete(DefaultUninstallListPath);\r\n\r\n                toolStripButtonDelete.Enabled = false;\r\n            }\r\n            catch (SystemException ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Uložení seznamu odinstalaci ...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>Uložit cíl jako ...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Seznam odinstalací|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>Otevřené...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Otevřít seznam Odinstalací ...</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Seznam odinstalací|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>Uložit jako výchozí</value>\r\n  </data>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>Základní filtrování</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>Přidat vybrané aplikace jako filtry</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>Odstranit výchozí</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\n    <value>Einfache Filterung</value>\n  </data>\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\n    <value>Hinzufügen von ausgewählten Programmen als Filter</value>\n  </data>\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\n    <value>Öffnen...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\n    <value>Speichern unter...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\n    <value>Als Standard speichern</value>\n  </data>\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\n    <value>Standard Gelöscht</value>\n  </data>\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\n    <value>Uninstall Listen|*.bcul</value>\n  </data>\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\n    <value>Speichern einer Uninstall Liste...</value>\n  </data>\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\n    <value>Uninstall Listen|*.bcul</value>\n  </data>\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\n    <value>Öffnen einer Uninstall Liste...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Guardar una Lista de Desinstalación...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>Guardar como...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listas de Desinstalación|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>Abrir...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Abrir una Lista de Desinstalación...</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listas de Desinstalación|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>Guardar como predeterminado</value>\r\n  </data>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>Filtrado básico</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>Añadir seleccionados como filtros</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>Eliminar por defecto</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Enregistrer une Liste de Désinstallation...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>Enregistrer sous...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listes de désinstallation|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Ouvrir une Liste de Désinstallation...</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listes de désinstallation|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>Enregistrer par défaut</value>\r\n  </data>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>Filtrage basique</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>Ajouter applis sélectionnées comme filtres</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>Supprimer le défaut</value>\r\n  </data>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"saveUlDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>192, 17</value>\r\n  </metadata>\r\n  <metadata name=\"openUlDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>314, 17</value>\r\n  </metadata>\r\n  <metadata name=\"toolStripUninstallerList.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Mentés egy eltávolítási listába...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>Mentés másként...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Eltávolítási lista|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>Megnyitás...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Eltávolítási lista megnyitása...</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Eltávolítási lista|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>Mentés alapértékként</value>\r\n  </data>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>Alap szűrés</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>Szűrőként adja hozzá a kiválasztott alkalmazásokat</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>Alapértelmezett törlés</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Salva elenco disinstallazione...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>Salva come...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Elenco disinstallazione|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>Apri...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Apri elenco disinstallazione...</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Elenco disinstallazione|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>Salva come predefinito</value>\r\n  </data>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>Filtro base</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>Aggiungi selezionati come filtri</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>Elimina predefinito</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\n    <value>基本フィルタ</value>\n  </data>\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\n    <value>選択したアプリケーションをフィルタとして追加</value>\n  </data>\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\n    <value>開く...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\n    <value>名前を付けて保存...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\n    <value>デフォルトとして保存</value>\n  </data>\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\n    <value>デフォルトを削除</value>\n  </data>\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\n    <value>アンインストールリスト|*.bcul</value>\n  </data>\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\n    <value>アンインストールリスト</value>\n  </data>\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\n    <value>アンインストールリスト|*.bcul</value>\n  </data>\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\n    <value>アンインストールリストを保存...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>Basis filtering</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>Openen...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>Opslaan als...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>Als standaard opslaan</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>Voeg geselecteerde programma's toe als filters</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>De-installeer lijsten|*.bcul</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Een de-installeer lijst opslaan...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>De-installeer lijsten|*.bcul</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Open een de-installeer lijst ...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>Standaard verwijderen</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>Podstawowe filtrowanie</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>Zapisz jako...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>Zapisz jako domyślne</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listy dezinstalatorów|*.bcul</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Zapisz listę dezinstalatorów...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listy dezinstalatorów|*.bcul</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Otwórz listę dezinstalatorów...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>Dodaj wybrane aplikacje jako filtry</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>Usuń domyślne</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>Filtragem básica</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>Adicionar os aplicativos selecionados como filtros</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>Abrir...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>Salvar como...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>Salvar como padrão</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listas de Desinstalação|*.bcul</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Salvar Lista de Desinstalação...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listas de Desinstalação|*.bcul</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Abrir uma Lista de Desinstalação...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>Excluir padrão</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Salvar Lista de Desinstalação...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>Salvar como...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listas de Desinstalação|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>Abrir...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Abrir uma Lista de Desinstalação...</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listas de Desinstalação|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>Salvar como padrão</value>\r\n  </data>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>Filtragem básica</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>Adicionar os aplicativos selecionados como filtros</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>Excluir padrão</value>\r\n  </data>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"saveUlDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>192, 17</value>\r\n  </metadata>\r\n  <metadata name=\"openUlDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>314, 17</value>\r\n  </metadata>\r\n  <metadata name=\"toolStripUninstallerList.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"uninstallListEditor1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"uninstallListEditor1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 29</value>\r\n  </data>\r\n  <data name=\"uninstallListEditor1.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>310, 0</value>\r\n  </data>\r\n  <data name=\"uninstallListEditor1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>319, 483</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"uninstallListEditor1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallListEditor1.Name\" xml:space=\"preserve\">\r\n    <value>uninstallListEditor1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallListEditor1.Type\" xml:space=\"preserve\">\r\n    <value>UninstallTools.Controls.UninstallListEditor, UninstallTools, Version=4.3.0.34856, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallListEditor1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallListEditor1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"toolStripButtonToBasicFilters.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonToBasicFilters.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>104, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>Basic filtering</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>6, 29</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>Add selected applications as filters</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>6, 29</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r\n        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFdSURBVGhD7dehS8VQFIDxgYLBYjMYLILVZLBbzFYNgs1q\r\n        MQoGMdoV/wCjxS6CxWATQbPFYhKZfkd24TIO292d7uzh+eCHj4173HvM3WfheZ7neZ73/1rAM746OMeo\r\n        msINtIttM6q2oF1kilF1C+0iU/xq2i+w0ittoJVeaQOt9EobaKVX2sDgGhOT9gbEJ1YwMWlvQoSddx3a\r\n        eQuNd4i24B3ytWMa99Uxa613iLboENIOtPMWztBYfcErZivyun7egtwh82isvmgX0hHq56wcoLV4wQPk\r\n        72IR8inE56y8QO6O1uJFG3KALhAft7SNpMKCn0dbWZar0TFrd0hOFsSPttx/kv7CGpKTBWHz20R9mJVL\r\n        dCpsfjN4gjZ0aB9YQqeOq5/70IZaOEHn5NEmm80btKFDk014DlmdQhtqYQ9ZLUOeWtrQoT1CNuSsrqAN\r\n        tRA2ZM/zPM/zPM/LrSi+AcolLVcO8kgZAAAAAElFTkSuQmCC\r\n</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>Open...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r\n        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADQSURBVGhD7Zm9DcIwFAbTMgBj0DAAYgQaNqBCrMM8iHUY\r\n        gSLwPSk09lOU2HrEiu6kkxv/XZMU7gAAoEV28taIdpdirvLTiHaXYlYf8pbPIG1v78yQkJeMwvb2ziTE\r\n        IKQCQsYgpAJCxlh9yGr+7EtIiEFIgIQYhARIiEFIgH8JuchzobbW2zM1PqTv+63GIoa17r6JhBiETIWQ\r\n        mZSEHGX2ddKcvcaMlkMe0pt3lxmEzIQQx0VDJj296TIbjT9O0pt3kBnDWm9+atXTGwAABNB1XwrCm1F2\r\n        tP9AAAAAAElFTkSuQmCC\r\n</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>Save as...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>111, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>Save as default</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>106, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>Delete default</value>\r\n  </data>\r\n  <data name=\"toolStripUninstallerList.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"toolStripUninstallerList.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>319, 29</value>\r\n  </data>\r\n  <data name=\"toolStripUninstallerList.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripUninstallerList.Name\" xml:space=\"preserve\">\r\n    <value>toolStripUninstallerList</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripUninstallerList.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripUninstallerList.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripUninstallerList.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Uninstall lists|*.bcul</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Save an Uninstall List...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Uninstall lists|*.bcul</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Open an Uninstall List...</value>\r\n  </data>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>6, 13</value>\r\n  </data>\r\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>319, 512</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonToBasicFilters.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonToBasicFilters</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonToBasicFilters.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator3.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonAddSelectedAsFilters.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonAddSelectedAsFilters</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonAddSelectedAsFilters.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator1.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonOpenUl.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonOpenUl</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonOpenUl.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSaveUl.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonSaveUl</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSaveUl.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSaveUlDef.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonSaveUlDef</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSaveUlDef.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;saveUlDialog.Name\" xml:space=\"preserve\">\r\n    <value>saveUlDialog</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;saveUlDialog.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openUlDialog.Name\" xml:space=\"preserve\">\r\n    <value>openUlDialog</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openUlDialog.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonDelete.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonDelete</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonDelete.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>AdvancedFilters</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <metadata name=\"toolStripUninstallerList.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"saveUlDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>192, 17</value>\r\n  </metadata>\r\n  <metadata name=\"openUlDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>314, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Сохранить список деинсталляции...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>Сохранить как...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Список деинсталляции|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>Открыть...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Открыть список деинсталляции...</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Список деинсталяции|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>Сохранить по умолчанию</value>\r\n  </data>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>Основная фильтрация</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>Добавить выбранные приложения как фильтры</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>Удалить значение по умолчанию</value>\r\n  </data>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"saveUlDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>192, 17</value>\r\n  </metadata>\r\n  <metadata name=\"openUlDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>314, 17</value>\r\n  </metadata>\r\n  <metadata name=\"toolStripUninstallerList.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Shrani seznam odstranjevanja...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\r\n    <value>Shrani kot...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Seznami odstranjevanja|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\r\n    <value>Odpri...</value>\r\n  </data>\r\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\r\n    <value>Odpri seznam odstranjevanj...</value>\r\n  </data>\r\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Seznami odstranjevanja|*.bcul</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\r\n    <value>Shrani kot privzeto</value>\r\n  </data>\r\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\r\n    <value>Osnovno filtriranje</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\r\n    <value>Dodaj izbrane aplikacije kot filtre</value>\r\n  </data>\r\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\r\n    <value>Izbriši privzeto</value>\r\n  </data>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"saveUlDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>192, 17</value>\r\n  </metadata>\r\n  <metadata name=\"openUlDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>314, 17</value>\r\n  </metadata>\r\n  <metadata name=\"toolStripUninstallerList.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\n    <value>Grundläggande filtrering</value>\n  </data>\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\n    <value>Lägg till markerade appar som filter</value>\n  </data>\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\n    <value>Öppna...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\n    <value>Spara som...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\n    <value>Spara som standard</value>\n  </data>\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\n    <value>Ta bort standard</value>\n  </data>\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\n    <value>Avinstallera listor|*.bcul</value>\n  </data>\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\n    <value>Spara en avinstallations-lista</value>\n  </data>\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\n    <value>Avinstallera listor|*.bcul</value>\n  </data>\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\n    <value>Öppna en avinstallations-lista</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\n    <value>Kolay filtreleme</value>\n  </data>\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\n    <value>Seçilen uygulamaları filtre olarak ekle</value>\n  </data>\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\n    <value>Aç...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\n    <value>Farklı kaydet...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\n    <value>Varsayılan olarak kaydet</value>\n  </data>\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\n    <value>Varsayılanı sil</value>\n  </data>\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\n    <value>Kaldırma listeleri|*.bcul</value>\n  </data>\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\n    <value>Bir Kaldırma Listesini Kaydet ...</value>\n  </data>\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\n    <value>Kaldırma listeleri|*.bcul</value>\n  </data>\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\n    <value>Bir Kaldırma Listesi Açın ...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\n    <value>Bộ lọc cơ bản</value>\n  </data>\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\n    <value>Thêm các ứng dụng đã chọn làm bộ lọc</value>\n  </data>\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\n    <value>Mở...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\n    <value>Lưu thành...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\n    <value>Lưu làm mặc định</value>\n  </data>\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\n    <value>Xoá danh sách mặc định</value>\n  </data>\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\n    <value>Danh sách bộ lọc gỡ cài đặt|*.bcul</value>\n  </data>\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\n    <value>Lưu danh sách bộ lọc gỡ cài đặt...</value>\n  </data>\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\n    <value>Danh sách bộ lọc gỡ cài đặt|*.bcul</value>\n  </data>\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\n    <value>Mở danh sách bộ lọc gỡ cài đặt...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\n    <value>基础筛选器</value>\n  </data>\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\n    <value>添加选中应用程序为筛选器</value>\n  </data>\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\n    <value>打开...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\n    <value>另存为...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\n    <value>另存为预设</value>\n  </data>\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\n    <value>删除预设</value>\n  </data>\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\n    <value>卸载列表|*.bcul</value>\n  </data>\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\n    <value>保存卸载列表...</value>\n  </data>\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\n    <value>卸载列表|*.bcul</value>\n  </data>\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\n    <value>打开卸载列表...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/AdvancedFilters.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonToBasicFilters.Text\" xml:space=\"preserve\">\n    <value>基本篩選</value>\n  </data>\n  <data name=\"toolStripButtonAddSelectedAsFilters.Text\" xml:space=\"preserve\">\n    <value>新增尋找應用程式條件</value>\n  </data>\n  <data name=\"toolStripButtonOpenUl.Text\" xml:space=\"preserve\">\n    <value>開啟...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUl.Text\" xml:space=\"preserve\">\n    <value>儲存...</value>\n  </data>\n  <data name=\"toolStripButtonSaveUlDef.Text\" xml:space=\"preserve\">\n    <value>另存為預設值</value>\n  </data>\n  <data name=\"toolStripButtonDelete.Text\" xml:space=\"preserve\">\n    <value>刪除預設值</value>\n  </data>\n  <data name=\"saveUlDialog.Filter\" xml:space=\"preserve\">\n    <value>解除安裝清單|*.bcul</value>\n  </data>\n  <data name=\"saveUlDialog.Title\" xml:space=\"preserve\">\n    <value>儲存解除安裝清單</value>\n  </data>\n  <data name=\"openUlDialog.Filter\" xml:space=\"preserve\">\n    <value>開啟解除安裝清單|*.bcul</value>\n  </data>\n  <data name=\"openUlDialog.Title\" xml:space=\"preserve\">\n    <value>開啟解除安裝清單...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Controls.Settings\r\n{\r\n    partial class CacheSettings\r\n    {\r\n        /// <summary> \r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary> \r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Component Designer generated code\r\n\r\n        /// <summary> \r\n        /// Required method for Designer support - do not modify \r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CacheSettings));\r\n            flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\r\n            label1 = new System.Windows.Forms.Label();\r\n            panel1 = new System.Windows.Forms.Panel();\r\n            checkBoxCerts = new System.Windows.Forms.CheckBox();\r\n            checkBoxInfo = new System.Windows.Forms.CheckBox();\r\n            button1 = new System.Windows.Forms.Button();\r\n            groupBox1 = new System.Windows.Forms.GroupBox();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            groupBox1.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Controls.Add(label1);\r\n            flowLayoutPanel1.Controls.Add(panel1);\r\n            flowLayoutPanel1.Controls.Add(checkBoxCerts);\r\n            flowLayoutPanel1.Controls.Add(checkBoxInfo);\r\n            flowLayoutPanel1.Controls.Add(button1);\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // label1\r\n            // \r\n            resources.ApplyResources(label1, \"label1\");\r\n            label1.Name = \"label1\";\r\n            // \r\n            // panel1\r\n            // \r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // checkBoxCerts\r\n            // \r\n            resources.ApplyResources(checkBoxCerts, \"checkBoxCerts\");\r\n            checkBoxCerts.Name = \"checkBoxCerts\";\r\n            checkBoxCerts.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxInfo\r\n            // \r\n            resources.ApplyResources(checkBoxInfo, \"checkBoxInfo\");\r\n            checkBoxInfo.Name = \"checkBoxInfo\";\r\n            checkBoxInfo.UseVisualStyleBackColor = true;\r\n            // \r\n            // button1\r\n            // \r\n            resources.ApplyResources(button1, \"button1\");\r\n            button1.Name = \"button1\";\r\n            button1.UseVisualStyleBackColor = true;\r\n            // \r\n            // groupBox1\r\n            // \r\n            resources.ApplyResources(groupBox1, \"groupBox1\");\r\n            groupBox1.Controls.Add(flowLayoutPanel1);\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.TabStop = false;\r\n            // \r\n            // CacheSettings\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            Controls.Add(groupBox1);\r\n            Name = \"CacheSettings\";\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            groupBox1.ResumeLayout(false);\r\n            groupBox1.PerformLayout();\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;\r\n        private System.Windows.Forms.CheckBox checkBoxCerts;\r\n        private System.Windows.Forms.CheckBox checkBoxInfo;\r\n        private System.Windows.Forms.Button button1;\r\n        private System.Windows.Forms.GroupBox groupBox1;\r\n        private System.Windows.Forms.Label label1;\r\n        private System.Windows.Forms.Panel panel1;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value> قد لا تلاحظ التغييرات. (مثلا الحجم) BCU يمكن للتخزين المؤقت تقليل أوقات البحث بشكل كبير ، ولكن إذا تم تعديل التطبيق  \r\n لأعاده التشغيل.BCU ملاحظه: لتنفيذ هذه الإعدادات قد تتطلب </value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\r\n    <value>نتائج تفحص شهادة تطبيق ذاكره التخزين المؤقت</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\r\n    <value>ذاكره التخزين المؤقت المجمعة معلومات مفقوده</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>مسح مخابئ</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>تخزين</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Windows.Forms;\r\nusing Klocman.Binding.Settings;\r\n\r\nnamespace BulkCrapUninstaller.Controls.Settings\r\n{\r\n    public partial class CacheSettings : UserControl\r\n    {\r\n        private readonly SettingBinder<Properties.Settings> _settings = Properties.Settings.Default.SettingBinder;\r\n\r\n        public CacheSettings()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        protected override void OnLoad(System.EventArgs e)\r\n        {\r\n            base.OnLoad(e);\r\n\r\n            if (DesignMode) return;\r\n\r\n            _settings.BindControl(checkBoxCerts, x => x.CacheCertificates, this);\r\n            _settings.BindControl(checkBoxInfo, x => x.CacheAppInfo, this);\r\n\r\n            _settings.SendUpdates(this);\r\n            Disposed += (x, y) => _settings.RemoveHandlers(this);\r\n\r\n            button1.Click += (x, y) =>\r\n            {\r\n                Program.ClearCaches(true);\r\n                button1.Enabled = false;\r\n            };\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Ukládání do mezipaměti může výrazně zkrátit dobu vyhledávání, ale jen pokud je aplikace upraveny, BCU nemusí zaznamenat změny. (např. velikost)\r\nPoznámka: Chcete-li aby se projevilo tato nastavení může být požadován restart  BCU.</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\r\n    <value>Výsledky prohledávání certifikátů aplikací v mezipaměti</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\r\n    <value>Ve vyrovnávací paměti byly shromážděny chybějící informace</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Vymazání mezipamětí</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Mezipamět</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Die Benutzung des Cache kann die Suchgeschwindigkeit stark verkürzen. Wenn ein Programm aber verändert wurde, kann BCU diese Änderung nicht finden. (z.B. Größe) Bemerkung: Um diese Änderung zu aktivieren muss BCU neu gestartet werden.</value>\n  </data>\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\n    <value>Scan Ergebnisse der Cache Anwendung zertifizieren.</value>\n  </data>\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\n    <value>Cache sammelt verlorene Informationen</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Cache löschen</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Caching</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>El almacenamiento en caché puede reducir en gran medida los tiempos de búsqueda, pero si una aplicación se modifica, BCU podría no notar los cambios. (ej. el tamaño)\nNOTA: Para que estos ajustes surtan efecto puede ser necesario reiniciar BCU.</value>\n  </data>\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\n    <value>Almacenar en caché los resultados del escaneo de certificados de aplicación</value>\n  </data>\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\n    <value>Almacenar en caché la información faltante recopilada</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Limpiar cachés</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Almacenamiento en la caché</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>La mise en cache peut beaucoup réduire le temps de recherche, mais si une application est modifiée, BCU pourrait ne pas noter le changement (ex. la taille). NOTE : pour prendre effet, ces paramètres peuvent requérir le redémarrage de BCU.</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\r\n    <value>Mettre en cache les résultats de scan de certificat d'application</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\r\n    <value>Mettre en cache l'information manquante collectée</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Effacer les caches</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Mise en cache</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>A gyorsítótárazással nagymértékben csökkenthető a keresési idő, de ha egy alkalmazás módosul, a BCU nem feltétlenül veszi észre a változásokat. (pl. méret)\nMEGJEGYZÉS: Ahhoz, hogy ezek a beállítások érvénybe lépjenek, a BCU újraindítása szükséges lehet.</value>\n  </data>\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\n    <value>Az alkalmazástanúsítvány vizsgálat eredményeinek gyorsítótárazása</value>\n  </data>\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\n    <value>Az összegyűjtött hiányzó információk gyorsítótárazása</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Gyorsítótár törlése</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Gyorsítótározás</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Il caching può ridurre notevolmente il tempo di ricerca, ma se una applicazione viene modificata BCU potrebbe non accorgersi del cambiamento (ad es. la dimensione).\r\n    NOTA:  per attivare queste opzioni potrebbe essere necessario riavviare BCU.</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\r\n    <value>Risultati controllo certificato della cache applicazione</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\r\n    <value>La cache ha raccolto informazioni mancanti</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Svuota cache</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Caching</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>キャッシュは検索時間を大幅に短縮できますが、アプリケーションが変更された場合、BCUが変更に気づかないことがあります。（例: サイズ）\n注：これらの設定を反映するには、BCUの再起動が必要な場合があります。</value>\n  </data>\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\n    <value>アプリケーション証明書のスキャン結果をキャッシュする</value>\n  </data>\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\n    <value>収集された不足情報をキャッシュする</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>キャッシュをクリア</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>キャッシュ</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Caching kan zoektijden aanzienlijk reduceren, maar als een programma is gewijzigd, heeft BCU de wijziging(en) mogelijk niet opgemerkt (bijv. de grootte).\r\nOpm.: voordat deze instellingen effect hebben, moet BCU mogelijk herstart worden.</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\r\n    <value>Cache programma certifcaat scan resultaten</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\r\n    <value>Ontbrekende door cache verzamelde informatie</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Wissen caches</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Caching</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Buforowanie może znacznie skrócić czas wyszukiwania, ale w przypadku modyfikacji aplikacji BCU może nie zauważyć zmian (np. zmiany rozmiaru).\r\nUWAGA: Aby zastosować te ustawienia może być konieczne ponowne uruchomienie BCU.</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\r\n    <value>Buforuj zebrane informacje o certyfikatach</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\r\n    <value>Buforuj zebrane informacje o aplikacjach</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Wyczyść bufory</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Buforowanie</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Cache pode reduzir significamente o tempo de busca, mas se uma aplicação é modificada BCU pode não reconhecer as mudaças.(Ex: Tamanho)\nNOTA: Para as mudaças terem efeito é necessário a reinicialização do BCU.</value>\n  </data>\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\n    <value>Resultados da verificação de cache do certificado da aplicação</value>\n  </data>\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\n    <value>Cache das informações ausentes coletadas</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Limpar Cache</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Caches</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>A cache pode reduzir em muito os tempos de pesquisa, mas se um aplicativo for modificado, a BCU pode não notar as alterações (como, por exemplo, o tamanho).\nNOTA: Para que surta efeito, essas configurações podem exigir a reiniciação do BCU.</value>\n  </data>\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\n    <value>Resultados da verificação do certificado de aplicativo da cache</value>\n  </data>\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\n    <value>Informação em falta na cache recolhida </value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Limpar a cache</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Cache em processamento</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"flowLayoutPanel1.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Top, Left, Right</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"label1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 0</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"label1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 4</value>\r\n  </data>\r\n  <data name=\"label1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>552, 49</value>\r\n  </data>\r\n  <data name=\"label1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Caching can greatly reduce searching times, but if an application is modified BCU might not notice the changes. (e.g. size)\r\nNOTE: To take effect these settings might require BCU to restart.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Name\" xml:space=\"preserve\">\r\n    <value>label1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 49</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 53</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 4, 4, 4</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>240, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\r\n    <value>Cache application certificate scan results</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCerts.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxCerts</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCerts.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCerts.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCerts.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 80</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 4, 4, 4</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>220, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\r\n    <value>Cache collected missing information</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInfo.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxInfo</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInfo.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInfo.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInfo.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"button1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 107</value>\r\n  </data>\r\n  <data name=\"button1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 4, 4, 4</value>\r\n  </data>\r\n  <data name=\"button1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>144, 34</value>\r\n  </data>\r\n  <data name=\"button1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Clear caches</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button1.Name\" xml:space=\"preserve\">\r\n    <value>button1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button1.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button1.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 16</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 4, 4, 4</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>602, 145</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.WrapContents\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"groupBox1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 4, 4, 4</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>6, 4, 6, 0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>612, 181</value>\r\n  </data>\r\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Caching</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 4, 4, 4</value>\r\n  </data>\r\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>612, 272</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>CacheSettings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Кэширование может значительно сократить время поиска, но, если приложение изменено, BCU может не заметить изменений. (например, размер)\r\nПРИМЕЧАНИЕ: Для вступления в силу этих параметров может потребоваться перезапуск BCU.</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\r\n    <value>Кэш результатов сканирования сертификатов приложений</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\r\n    <value>Кэш сбора недостающей информации</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Очистить кэш</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Кэширование</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value> Medpomnjenje lahko izjemno skrajša čas iskanja toda, če je aplikacija spremenjena, BCU morda ne bodo opazili sprememb. (npr. velikost)\r\nOPOMBA: Za uveljavitev teh nastavitev bo morda potrebno BCU ponovno zagnati.</value>\r\n  </data>\r\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\r\n    <value>Rezultati pregleda certifikata aplikacije za medpomnjenje\r\n</value>\r\n  </data>\r\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\r\n    <value>Manjkajoče informacije zbranega medpomnilnika</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Počisti medpomnilnike</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Medpomnjenje</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Cachning kan kraftigt minska söktiderna, men om en applikation ändras kanske inte BCU upptäcker förändringarna. (t.ex. storlek). OBS: För att träda i kraft kan dessa inställningar kräva att BCU startas om.</value>\n  </data>\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\n    <value>Cacha resultat från applikationscertifikatskanning</value>\n  </data>\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\n    <value>Cacha samlad saknad information</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Rensa cache</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Cachning</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Önbelleğe alma, arama sürelerini büyük ölçüde azaltabilir, ancak bir uygulama değiştirilirse BCU, değişiklikleri fark etmeyebilir. (ör. boyut) NOT: Bu ayarların yürürlüğe girmesi için BCU'nun yeniden başlatılması gerekebilir.</value>\n  </data>\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\n    <value>Önbellek uygulama sertifikası tarama sonuçları</value>\n  </data>\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\n    <value>Önbellek eksik bilgi topladı</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Önbelleği temizle</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Önbelleğe alınıyor</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Bộ nhớ đệm có thể giảm đáng kể thời gian tìm kiếm nhưng BCU có thể không biết những thay đổi đối với ứng dụng của bạn.\nLưu ý: Bạn có thể cần phải khởi động lại BCU để các cài đặt này có hiệu lực.</value>\n  </data>\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\n    <value>Lưu trữ tạm thời các kết quả quét chứng chỉ ứng dụng</value>\n  </data>\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\n    <value>Lưu trữ tạm thời thông tin bị thiếu được thu thập</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Xoá bộ nhớ đệm</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Bộ nhớ đệm</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>缓存可以大大减少搜索时间，但如果修改了应用程序，BCU可能不会注意到更改。 （例如大小）\n注意：要使设置生效，可能需要重启BCU。</value>\n  </data>\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\n    <value>缓存应用程序证书扫描结果</value>\n  </data>\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\n    <value>缓存收集的丢失信息</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>清除缓存</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>缓存</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/CacheSettings.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>快取可以大大降低搜尋時間，但如果修改應用程式，BCU可能不會注意到變更。(例如大小)\n警告：要使設定生效，可能需要重新啟動BCU。</value>\n  </data>\n  <data name=\"checkBoxCerts.Text\" xml:space=\"preserve\">\n    <value>快取應用程式證書掃描結果</value>\n  </data>\n  <data name=\"checkBoxInfo.Text\" xml:space=\"preserve\">\n    <value>快取收集到的遺失資訊</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>清理快取</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>快取</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.Designer.cs",
    "content": "﻿using System.ComponentModel;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions.Tracking;\r\nusing Klocman.Controls;\r\n\r\nnamespace BulkCrapUninstaller.Controls\r\n{\r\n    partial class PropertiesSidebar\r\n    {\r\n        /// <summary> \r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private IContainer components = null;\r\n\r\n        /// <summary> \r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Component Designer generated code\r\n\r\n        /// <summary> \r\n        /// Required method for Designer support - do not modify \r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            components = new Container();\r\n            ComponentResourceManager resources = new ComponentResourceManager(typeof(PropertiesSidebar));\r\n            checkBoxOrphans = new CheckBox();\r\n            checkBoxInvalidTest = new CheckBox();\r\n            checkBoxCertTest = new CheckBox();\r\n            groupBox2 = new GroupBox();\r\n            flowLayoutPanel2 = new FlowLayoutPanel();\r\n            checkBoxListHideMicrosoft = new CheckBox();\r\n            checkBoxListSysComp = new CheckBox();\r\n            checkBoxListProtected = new CheckBox();\r\n            checkBoxTweaks = new CheckBox();\r\n            checkBoxShowUpdates = new CheckBox();\r\n            checkBoxWinFeature = new CheckBox();\r\n            checkBoxShowStoreApps = new CheckBox();\r\n            groupBox1 = new GroupBox();\r\n            flowLayoutPanel1 = new FlowLayoutPanel();\r\n            checkBoxViewCheckboxes = new CheckBox();\r\n            checkBoxViewGroups = new CheckBox();\r\n            checkBoxHighlightSpecial = new CheckBox();\r\n            toolTip1 = new ToolTip(components);\r\n            usageTracker1 = new UsageTracker();\r\n            groupBox2.SuspendLayout();\r\n            flowLayoutPanel2.SuspendLayout();\r\n            groupBox1.SuspendLayout();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // checkBoxOrphans\r\n            // \r\n            resources.ApplyResources(checkBoxOrphans, \"checkBoxOrphans\");\r\n            checkBoxOrphans.Name = \"checkBoxOrphans\";\r\n            toolTip1.SetToolTip(checkBoxOrphans, resources.GetString(\"checkBoxOrphans.ToolTip\"));\r\n            checkBoxOrphans.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxInvalidTest\r\n            // \r\n            resources.ApplyResources(checkBoxInvalidTest, \"checkBoxInvalidTest\");\r\n            checkBoxInvalidTest.Name = \"checkBoxInvalidTest\";\r\n            toolTip1.SetToolTip(checkBoxInvalidTest, resources.GetString(\"checkBoxInvalidTest.ToolTip\"));\r\n            checkBoxInvalidTest.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxCertTest\r\n            // \r\n            resources.ApplyResources(checkBoxCertTest, \"checkBoxCertTest\");\r\n            checkBoxCertTest.Name = \"checkBoxCertTest\";\r\n            toolTip1.SetToolTip(checkBoxCertTest, resources.GetString(\"checkBoxCertTest.ToolTip\"));\r\n            checkBoxCertTest.UseVisualStyleBackColor = true;\r\n            // \r\n            // groupBox2\r\n            // \r\n            resources.ApplyResources(groupBox2, \"groupBox2\");\r\n            groupBox2.Controls.Add(flowLayoutPanel2);\r\n            groupBox2.Name = \"groupBox2\";\r\n            groupBox2.TabStop = false;\r\n            // \r\n            // flowLayoutPanel2\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel2, \"flowLayoutPanel2\");\r\n            flowLayoutPanel2.Controls.Add(checkBoxListHideMicrosoft);\r\n            flowLayoutPanel2.Controls.Add(checkBoxOrphans);\r\n            flowLayoutPanel2.Controls.Add(checkBoxListSysComp);\r\n            flowLayoutPanel2.Controls.Add(checkBoxListProtected);\r\n            flowLayoutPanel2.Controls.Add(checkBoxTweaks);\r\n            flowLayoutPanel2.Controls.Add(checkBoxShowUpdates);\r\n            flowLayoutPanel2.Controls.Add(checkBoxWinFeature);\r\n            flowLayoutPanel2.Controls.Add(checkBoxShowStoreApps);\r\n            flowLayoutPanel2.Name = \"flowLayoutPanel2\";\r\n            // \r\n            // checkBoxListHideMicrosoft\r\n            // \r\n            resources.ApplyResources(checkBoxListHideMicrosoft, \"checkBoxListHideMicrosoft\");\r\n            checkBoxListHideMicrosoft.Name = \"checkBoxListHideMicrosoft\";\r\n            toolTip1.SetToolTip(checkBoxListHideMicrosoft, resources.GetString(\"checkBoxListHideMicrosoft.ToolTip\"));\r\n            checkBoxListHideMicrosoft.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxListSysComp\r\n            // \r\n            resources.ApplyResources(checkBoxListSysComp, \"checkBoxListSysComp\");\r\n            checkBoxListSysComp.Name = \"checkBoxListSysComp\";\r\n            toolTip1.SetToolTip(checkBoxListSysComp, resources.GetString(\"checkBoxListSysComp.ToolTip\"));\r\n            checkBoxListSysComp.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxListProtected\r\n            // \r\n            resources.ApplyResources(checkBoxListProtected, \"checkBoxListProtected\");\r\n            checkBoxListProtected.Name = \"checkBoxListProtected\";\r\n            toolTip1.SetToolTip(checkBoxListProtected, resources.GetString(\"checkBoxListProtected.ToolTip\"));\r\n            checkBoxListProtected.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxTweaks\r\n            // \r\n            resources.ApplyResources(checkBoxTweaks, \"checkBoxTweaks\");\r\n            checkBoxTweaks.Name = \"checkBoxTweaks\";\r\n            checkBoxTweaks.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxShowUpdates\r\n            // \r\n            resources.ApplyResources(checkBoxShowUpdates, \"checkBoxShowUpdates\");\r\n            checkBoxShowUpdates.Name = \"checkBoxShowUpdates\";\r\n            toolTip1.SetToolTip(checkBoxShowUpdates, resources.GetString(\"checkBoxShowUpdates.ToolTip\"));\r\n            checkBoxShowUpdates.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxWinFeature\r\n            // \r\n            resources.ApplyResources(checkBoxWinFeature, \"checkBoxWinFeature\");\r\n            checkBoxWinFeature.Name = \"checkBoxWinFeature\";\r\n            checkBoxWinFeature.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxShowStoreApps\r\n            // \r\n            resources.ApplyResources(checkBoxShowStoreApps, \"checkBoxShowStoreApps\");\r\n            checkBoxShowStoreApps.Name = \"checkBoxShowStoreApps\";\r\n            checkBoxShowStoreApps.UseVisualStyleBackColor = true;\r\n            // \r\n            // groupBox1\r\n            // \r\n            resources.ApplyResources(groupBox1, \"groupBox1\");\r\n            groupBox1.Controls.Add(flowLayoutPanel1);\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.TabStop = false;\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Controls.Add(checkBoxViewCheckboxes);\r\n            flowLayoutPanel1.Controls.Add(checkBoxViewGroups);\r\n            flowLayoutPanel1.Controls.Add(checkBoxCertTest);\r\n            flowLayoutPanel1.Controls.Add(checkBoxInvalidTest);\r\n            flowLayoutPanel1.Controls.Add(checkBoxHighlightSpecial);\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // checkBoxViewCheckboxes\r\n            // \r\n            resources.ApplyResources(checkBoxViewCheckboxes, \"checkBoxViewCheckboxes\");\r\n            checkBoxViewCheckboxes.Name = \"checkBoxViewCheckboxes\";\r\n            toolTip1.SetToolTip(checkBoxViewCheckboxes, resources.GetString(\"checkBoxViewCheckboxes.ToolTip\"));\r\n            checkBoxViewCheckboxes.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxViewGroups\r\n            // \r\n            resources.ApplyResources(checkBoxViewGroups, \"checkBoxViewGroups\");\r\n            checkBoxViewGroups.Name = \"checkBoxViewGroups\";\r\n            toolTip1.SetToolTip(checkBoxViewGroups, resources.GetString(\"checkBoxViewGroups.ToolTip\"));\r\n            checkBoxViewGroups.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxHighlightSpecial\r\n            // \r\n            resources.ApplyResources(checkBoxHighlightSpecial, \"checkBoxHighlightSpecial\");\r\n            checkBoxHighlightSpecial.Name = \"checkBoxHighlightSpecial\";\r\n            toolTip1.SetToolTip(checkBoxHighlightSpecial, resources.GetString(\"checkBoxHighlightSpecial.ToolTip\"));\r\n            checkBoxHighlightSpecial.UseVisualStyleBackColor = true;\r\n            // \r\n            // usageTracker1\r\n            // \r\n            usageTracker1.ContainerControl = this;\r\n            // \r\n            // PropertiesSidebar\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = AutoScaleMode.Font;\r\n            Controls.Add(groupBox1);\r\n            Controls.Add(groupBox2);\r\n            Name = \"PropertiesSidebar\";\r\n            groupBox2.ResumeLayout(false);\r\n            groupBox2.PerformLayout();\r\n            flowLayoutPanel2.ResumeLayout(false);\r\n            flowLayoutPanel2.PerformLayout();\r\n            groupBox1.ResumeLayout(false);\r\n            groupBox1.PerformLayout();\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n        private GroupBox groupBox2;\r\n        private FlowLayoutPanel flowLayoutPanel2;\r\n        private CheckBox checkBoxListHideMicrosoft;\r\n        private CheckBox checkBoxShowUpdates;\r\n        private CheckBox checkBoxListSysComp;\r\n        private CheckBox checkBoxListProtected;\r\n        private GroupBox groupBox1;\r\n        private FlowLayoutPanel flowLayoutPanel1;\r\n        private CheckBox checkBoxViewCheckboxes;\r\n        private CheckBox checkBoxViewGroups;\r\n        private ToolTip toolTip1;\r\n        private UsageTracker usageTracker1;\r\n        private CheckBox checkBoxCertTest;\r\n        private CheckBox checkBoxInvalidTest;\r\n        private CheckBox checkBoxOrphans;\r\n        private CheckBox checkBoxShowStoreApps;\r\n        private CheckBox checkBoxWinFeature;\r\n        private CheckBox checkBoxHighlightSpecial;\r\n        private CheckBox checkBoxTweaks;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>تمييز المثبتات المعتمدة</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>اظهار مكونات النظام</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>عرض التطبيقات التي ليس لديها اي من المثبتات المسجلة. وهي غير مرئية في معظم مديري الالغاء ولكن لا تزال تاخذ مساحة. يتم تمييز العناصر غير المسجلة بلون احمر.\r\n\r\nتحذير: فحص مزدوج قبل ازاله هذه التطبيقات ، فانها قد لا تزال ضرورية!</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>تحديد استخدام مربعات الاختيار</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>استخدام الالوان للتعرف على المثبتات المعتمدة.\r\nاذا تم التحقق من الشهادة بنجاح استخدام اللون الاخضر ، والا استخدم اللون الازرق.\r\n\r\nتحذير: يمكن ان يستغرق التحقق وقتا طويلا للاكتمال.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>اظهار التحديثات</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>اظهار المواد المحمية</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>تغيير نمط التحديد للقائمة الى خانات الاختيار. وهي اكثر امانا لان\r\nنقره واحده لا يمكن الغاء كل شيء.\r\n\r\nيمكنك التحقق من مواد متعددة من خلال تمييزها والضغط على مفتاح المسافة.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>تحديثات التطبيقات الاخرى. وعاده ما يتم الغاء تثبيتها مع التطبيق الاصلي ، بحيث يمكن تجاهلها.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>اظهار التطبيقات الغير مسجلة</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>عرض تطبيقات مخزن وندوز</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>فلترة كل ما نشر من مايكروسوفت. انها بهذه البساطة</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>استخدم اللون الرمادي لتعريف التثبيتات التالفة او المفقودة.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>اظهار المواد في مجموعات</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>اظهار ميزات الوندوز</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>يمكن وضع علامة على بعض الغير مثبتات باسم \"مكونات النظام\" لاخفاءها من قائمه اضافه/ازاله البرامج.\r\nغالبا ما يتم وضع علامة على برامج التشغيل بهذه العلامة.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>اعدادات عرض القائمة</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>اخفاء ما نشرتها مايكروسوفت</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>تمييز المثبتات المفقودة</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>تجميع المواد وفقا للعمود يتم فرز القائمة حسب.\r\nيستخدم تجميع معظم الاعمده الفلترة الذكية.</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>الفلترة</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>يتم وضع علامة على المواد المحمية بعلامة \"عدم الازاله\" ، مما يعني ان الناشر لا يريد منك ازالتها.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing System.Windows.Forms;\r\nusing Klocman.Binding.Settings;\r\n\r\nnamespace BulkCrapUninstaller.Controls\r\n{\r\n    public partial class PropertiesSidebar : UserControl\r\n    {\r\n        private readonly SettingBinder<Properties.Settings> _settings = Properties.Settings.Default.SettingBinder;\r\n\r\n        public PropertiesSidebar()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        protected override void OnLoad(System.EventArgs e)\r\n        {\r\n            base.OnLoad(e);\r\n\r\n            if (DesignMode) return;\r\n\r\n            _settings.BindControl(checkBoxViewCheckboxes, x => x.UninstallerListUseCheckboxes, this);\r\n            _settings.BindControl(checkBoxViewGroups, x => x.UninstallerListUseGroups, this);\r\n\r\n            _settings.BindControl(checkBoxListHideMicrosoft, x => x.FilterHideMicrosoft, this);\r\n            _settings.BindControl(checkBoxShowUpdates, x => x.FilterShowUpdates, this);\r\n            _settings.BindControl(checkBoxListSysComp, x => x.FilterShowSystemComponents, this);\r\n            _settings.BindControl(checkBoxListProtected, x => x.FilterShowProtected, this);\r\n            _settings.BindControl(checkBoxShowStoreApps, x => x.FilterShowStoreApps, this);\r\n            _settings.BindControl(checkBoxWinFeature, x => x.FilterShowWinFeatures, this);\r\n            _settings.BindControl(checkBoxTweaks, x => x.FilterShowTweaks, this);\r\n\r\n            _settings.BindControl(checkBoxInvalidTest, x => x.AdvancedTestInvalid, this);\r\n            _settings.BindControl(checkBoxCertTest, x => x.AdvancedTestCertificates, this);\r\n            _settings.BindControl(checkBoxOrphans, x => x.AdvancedDisplayOrphans, this);\r\n            _settings.BindControl(checkBoxHighlightSpecial, x => x.AdvancedHighlightSpecial, this);\r\n\r\n            _settings.SendUpdates(this);\r\n            Disposed += (x, y) => _settings.RemoveHandlers(this);\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        public int GetSuggestedWidth()\r\n        {\r\n            var maxWidth = typeof(PropertiesSidebar)\r\n                .GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)\r\n                .Where(x => x.FieldType == typeof(CheckBox))\r\n                .Select(x => x.GetValue(this))\r\n                .Cast<CheckBox>()\r\n                .Max(c => c.Width);\r\n\r\n            return maxWidth + (groupBox1.Width - groupBox1.DisplayRectangle.Width) + Padding.Left + Padding.Right;\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool SysCompEnabled\r\n        {\r\n            get { return checkBoxListSysComp.Enabled; }\r\n            set { checkBoxListSysComp.Enabled = value; checkBoxListSysComp.Visible = value; }\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool ProtectedEnabled\r\n        {\r\n            get { return checkBoxListProtected.Enabled; }\r\n            set { checkBoxListProtected.Enabled = value; checkBoxListProtected.Visible = value; }\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool UpdatesEnabled\r\n        {\r\n            get { return checkBoxShowUpdates.Enabled; }\r\n            set { checkBoxShowUpdates.Enabled = value; checkBoxShowUpdates.Visible = value; }\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool OrphansEnabled\r\n        {\r\n            get { return checkBoxOrphans.Enabled; }\r\n            set { checkBoxOrphans.Enabled = value; checkBoxOrphans.Visible = value; }\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool StoreAppsEnabled\r\n        {\r\n            get { return checkBoxShowStoreApps.Enabled; }\r\n            set { checkBoxShowStoreApps.Enabled = value; checkBoxShowStoreApps.Visible = value; }\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool InvalidEnabled\r\n        {\r\n            get { return checkBoxInvalidTest.Enabled; }\r\n            set { checkBoxInvalidTest.Enabled = value; checkBoxInvalidTest.Visible = value; }\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool WinFeaturesEnabled\r\n        {\r\n            get { return checkBoxWinFeature.Enabled; }\r\n            set { checkBoxWinFeature.Enabled = value; checkBoxWinFeature.Visible = value; }\r\n        }\r\n\r\n        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool ShowTweaksEnabled\r\n        {\r\n            get { return checkBoxTweaks.Enabled; }\r\n            set { checkBoxTweaks.Enabled = value; checkBoxTweaks.Visible = value; }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit systémové součásti</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Vyberte pomocí zaškrtávacích políček</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit aktualizace</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit chráněné položky</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Zvýraznit neplatné odinstalátory</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Aktualizace dalších aplikací. Obvykle jsou odinstalován spolu s jejich mateřskou aplikací, takže mohou být ignorovány.</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Skrýt publikováné společností Microsoft</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazení neregistrovaných aplikací</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Odfiltrovat vše, co byla vydána společností Microsoft. Je to tak snadné.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Změní výběru stylu seznamu na zaškrtávacích políčkách. Jsou bezpečnější, protože jedním kliknutím nelze zrušit výběr všech. Můžete zkontrolovat více položek zvýraznít je stiskem mezerníku.</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Použít šedou barvu pro identifikaci odinstalátorů, které jsou poškozeny nebo chybí.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit položky ve skupinách</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Některé odinstalátory mohou být označeny jako \"součásti systému\" skrýt z Přidat / Odebrat software.\r\nOvladače jsou často označeny touto značkou.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Použít barvy k identifikaci certifikovaných odinstalátorů. V případě, že certifikát byl úspěšně ověřen použít zelenou barvu, jinak používat modrou barvu.\r\n                    Upozornění: Dokončení ověření může trvat delší dobu.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Nastavení zobrazení seznamu</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Zobrazené aplikace, které nemají žádné registrované odinstalátory. Tyto nejsou viditelné v mnoha odinstalačních manažerech, ale stále zabírají místo. Neregistrované položky jsou označeny červenou barvou.\r\n\r\nUpozornění: Dvojtá kontrola před vyjmutím těchto aplikací, mohli by být stále nezbytné!</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Skupina položek podle sloupce seznamu je seřazen podle.\r\nSeskupení většiny sloupců používá inteligentní filtrování.</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Filtrování</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Zvýraznit ověřené odinstalátory</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Chráněné položek jsou označeny \"NoRemove\" značkou, což znamená, že vydavatel nechce jejich odstranění.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit Windows Store aplikace</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit funkce systému Windows </value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"toolTip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>109, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Ungültige Uninstaller hervorheben</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Graue Farbe kennzeichnet beschädigte oder fehlende Uninstaller</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Zertifizierte Uninstaller hervorheben</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Farben verwenden, um zertifizierte Uninstaller zu identifizieren.\r\nErfolgreich geprüfte Zertifikate erscheinen in grüner, andernfalls in  blauer Farbe.\r\nAchtung: Die Überprüfung kann einige Zeit in Anspruch nehmen.</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Microsoft Komponenten ausblenden</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Alles ausblenden, was von Microsoft veröffentlicht wurde.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Systemkomponenten anzeigen</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Einige Uninstaller können als \"Systemkomponente\" markiert sein, \r\num sie in der Systemsteuerung-Software-Liste zu verstecken. \r\nTreiber sind oft so gekennzeichnet</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Geschützte Elemente anzeigen</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Geschützte Elemente werden mit \"NoRemove\" gekennzeichnet, \r\nwas bedeutet, dass der Hersteller nicht will, dass sie entfernt werden.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Updates anzeigen</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Updates für andere Anwendungen. In der Regel werden sie zusammen mit ihrer \r\nübergeordneten Anwendung deinstalliert, sie können daher ignoriert werden.</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Filtern</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Auswahl mit Checkboxen</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Auswahl per Markierungsfeld (Checkbox). \r\nDas ist sicherer, damit ein einzelner Klick nicht alles deaktivieren kann.\r\nSie können mehrere Elemente aktivieren, indem Sie sie markieren \r\nund die Leertaste drücken.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Elemente gruppieren</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Gruppierung von Elementen entsprechend der Spalte nach der die Liste sortiert ist.\r\n'Smartes' Filtern findet bei den meisten Spalten Verwendung.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Ansicht der Einstellungen</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Nicht registrierte Anwendungen anzeigen</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Anzeige von Anwendungen, die über keine registrierten Uninstaller verfügen. \r\nSie bleiben den meisten Uninstall-Programmen verborgen, benötigen aber dennoch Plattenplatz. Nicht registrierte Elemente werden rot dargestellt.\r\n\r\nAchtung: Vor dem Entfernen dieser Anwendungen bitte genau überprüfen, ob sie nicht doch noch beötigt werden.</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Zeige Windows Eigenschaften</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Zeige Windows Store Programme</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\r\n    <value>Hervorheben spezieller Uninstaller</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\r\n    <value>Benutze Farben für spezielle Programme wie z.B. Windows Store Programme oder Eigenschaften.</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\r\n    <value>Änderungen anzeigen</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar aplicaciones no registradas</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Mostrar aplicaciones sin ningún desinstalador registrado. No son visibles en la mayoría de desinstaladores, pero aún ocupan espacio. Los no registrados aparecen de color rojo. \r\n\r\nADVERTENCIA: Asegúrese antes de eliminar estas aplicaciones, puede que aún sean necesarias!</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Resaltar los desinstaladores que faltan</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Utilizar el color gris para identificar desinstaladores ausentes o dañados.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Resaltar desinstaladores certificados</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Utilizar colores para identificar desinstaladores certificados.\r\nSi el certificado se ha verificado correctamente utilizar el color verde, si no utilizar el color azul.\r\n\r\nAdvertencia: La verificación puede tardar mucho tiempo.</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Ocultar lo publicado por Microsoft</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Filtrar todo lo que fue publicado por Microsoft. Es así de simple.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar componentes del sistema</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Algunos desinstaladores pueden marcarse como \"componentes del sistema\" para ocultarlos de la opción Agregar/Quitar lista de software.\r\nLos drivers son a menudo marcados con esta etiqueta.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar elementos protegidos</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Los elementos protegidos están marcados con la etiqueta \"No Eliminar\", lo que significa que el editor no quiere que los elimine.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar actualizaciones</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Actualizaciones de otras aplicaciones. Por lo general, se desinstalan junto con su aplicación principal, por lo que se pueden ignorar.</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar características de Windows</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar apps de Windows Store</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Filtrado</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Seleccionar usando checkboxes</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Cambia el estilo de selección de la lista a casillas de verificación. Son más seguros porque un solo click no puede anular la selección de todo.\r\n\r\nPuede comprobar varios elementos resaltándolos y presionando la barra espaciadora.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar elementos en grupos</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Agrupar elementos por la columna de la lista por la que está ordenada. \r\nAgrupar la mayoría de las columnas usa filtrado inteligente.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Configuración de la vista de lista</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar retoques</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\r\n    <value>Destacar los desinstaladores especiales</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\r\n    <value>Utilizar colores para diferencias las aplicaciones especiales, por ejemplo, Aplicaciones de la Tienda y Características de Windows.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Afficher les applications non enregistrées </value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Afficher les applications n'ayant pas de désinstalleur enregistré.\r\nElles sont invisibles dans la plupart des gestionnaires de désinstallation, mais prennent quand même de la place. Les éléments non enregistrés sont marqués avec une couleur rouge.\r\n\r\nAttention : vérifiez à deux fois avant de supprimer ces applications, elles pourraient être encore nécessaires !</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Surligner les désinstalleurs invalides</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Utiliser la couleur grise pour identifier les désinstalleurs corrompus ou manquants.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Surligner les désinstalleurs certifiés</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Utiliser des couleurs pour identifier les désinstalleurs certifiés. \r\nSi le certificat a été vérifié avec succès utiliser la couleur verte, autrement utiliser la couleur bleue.\r\n\r\nAttention : la vérification peut mettre longtemps à se terminer.</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Cacher si publié par Microsoft</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Filtrer tout ce qui a été publié par Microsoft. C'est aussi simple que cela.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Afficher les composants système</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Quelques désinstalleurs peuvent être marqués comme \"composants système\" pour les masquer dans la\r\nliste Ajout/Suppression de programmes. \r\nLes pilotes sont souvent marqués avec cette balise.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Afficher les éléments protégés</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Les éléments protégés sont marqués avec la balise \"NoRemove\", signifiant que l'éditeur ne veut pas que vous les enleviez.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Afficher les mises à jour</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Mises à jour d'autres applications. En général elles sont désinstallées ensemble avec leur application parente, ainsi elles peuvent être ignorées.</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Filtrage</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Sélectionnner par cases à cocher</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Change le style de sélection de la liste en cases à cocher. Elles sont plus fiables car un simple clic ne peut désélectionner tout.\r\n\r\nVous pouvez cocher de multiples éléments en les surlignant et en pressant la barre d'espace.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Afficher les éléments en groupes</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Grouper les éléments en fonction de la colonne \r\nutilisée pour les trier. \r\nLe groupage de la plupart des colonnes utilise un tri intelligent.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Réglages de la vue liste</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Afficher les applis du Windows Store</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Afficher les fonctionnalités Windows</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\r\n    <value>Surligner les désinstalleurs spéciaux</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\r\n    <value>Utiliser des couleurs pour différencier les applications spéciales, par exemple les applis du Store et les Fonctionnalités Windows.</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\r\n    <value>Afficher les perfectionnements</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Hitelesítettek megjelölése</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Rendszerelemek mutatása</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Kijelölés jelölőnégyzetekkel</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Színek alkalmazása a hitelesített eltávolítókhoz.\r\nHa a tanúsítvány sikeresen ellenőrzésre került akkor zöld szín, egyébként a kék szín kerül alkalmazásra.\r\n\r\nFigyelmeztetés: Az ellenőrzés hosszabb ideig is eltarthat.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Frissítések mutatása</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Védett elemek mutatása</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Hiányzók megjelölése</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Lista kijelölési stílusának módosítása a jelölőnégyzetekkel. Ez biztonságos \r\nmivel egy kattintással nem vonhatja vissza mindet.\r\n\r\nTöbb elemet is kijelölhet a kiemelés és a szóköz billentyű lenyomásával.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Egyéb alkalmazások frissítései. Általában ezek eltávolításra kerülnek a kapcsolódó alkalmazással együtt, így kihagyhatók a listából.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Nem regisztrált alkalmazás mutatása</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Áruházbeli alk. mutatása</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Ezzel egyszerűen kiszűrheti a Microsoft által közzétett alkalmazásokat.</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Szürke szín alkalmazása a sérült, vagy hiányzó eltávolítók azonosításához.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Elemek csoportosítása</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Windows-szolg. mutatása</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Néhány eltávolító \"rendszerelemként\" kerülhet megjelölésre, ezeket elrejtheti a programok listájában.\r\nÁltalában az illesztőprogramok vannak ezzel a címkével jelölve.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Listanézet beállításai</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Microsoft kiadások elrejtése</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Azoknak az alkalmazásoknak a megjelenítése, amelyek nem rendelkeznek szabályos eltávolítóval. Ezek nem láthatók az eltávolítás kezelők számára, azonban sok helyet foglalhatnak. Az nem regisztrált elemek piros színnel kerülnek megjelölésre. \r\n\r\nFigyelem: Az eltávolításuk előtt ellenőrizze ezeket az alkalmazásokat mert lehet, hogy még mindig szükség van rájuk!</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Elemek csoportosítása a lista oszlopainak elrendezése alapján.\r\nA leggyakrabban használt oszlopok csoportosítása intelligens szűréssel.</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Szűrés</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Védett elemek, amelyek \"NoRemove\" címkével vannak ellátva. Ebben az esetben a kiadó nem akarja, hogy eltávolítsa ezeket.</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\r\n    <value>Javítások mutatása</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\r\n    <value>Különleges eltávolítók kiemelése</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\r\n    <value>Színek alkalmazása a speciális alkalmazások (Store alkalmazások, Windows szolgáltatások) megkülönböztetésére.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Evidenza disinstallatori certificati</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza componenti di sistema</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Seleziona con casella di controllo</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Usa i colori per identificare i disinstallatori certificati. Se il certificato è stato verificato correttamente usa il colore verde, altrimenti usa il colore blu.\r\n\r\nAttenzione: la verifica potrebbe durare a lungo.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza aggiornamenti</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza elementi protetti</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Evidenzia disinstallatori mancanti</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Modifica stile di selezione dell'elenco da marcare con casella di controllo. È più sicuro perché un clic singolo non deseleziona nulla.\r\n\r\nPuoi selezionare più elementi selezionandoli e premendo la barra spazio.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Aggiornamenti di altre applicazioni. Normalmente sono disinstallate con le applicazioni da cui dipendono, possono quindi essere ignorate.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza applicazioni non registrate</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza app di Windows Store</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Filtra tutto quanto prodotto da Microsoft.</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Usa il colore grigio per identificare i disinstallatori corrotti o mancanti.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza elementi in gruppo</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza funzionalità di Windows</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Alcuni disinstallatori possono essere marcati come \"componenti di sistema\" per nasconderli nell'elenco Aggiungi/Rimuovi programmi. I driver sono spesso marcati con questo attributo.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Impostazioni vista elenco</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Nascondi quelli prodotti da Microsoft</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Visualizza le applicazioni che non hanno nessun disinstallatore registrato. Non sono visibili alla maggior parte dei gestori di disinstallazione ma possono ancora occupare spazio. Gli elementi non registrati sono marcati con colore rosso.\r\n\r\nAttenzione: verifica attentamente prima di rimuovere queste applicazioni, potrebbero essere necessarie!</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Raggruppa gli elementi secondo la colonna per cui la'elenco è stata ordinato. Il raggruppamento della maggior parte delle colonne usa un filtro intelligente.</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Filtro</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Gli elementi protetti sono marcati con l'attributo \"NoRemove\" che indica che il produttore non vuole che vengano rimossi.</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza trucchi</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\r\n    <value>Evidenzia disinstallatori speciali</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\r\n    <value>Usa i colori per distinguere applicazioni speciali, ad esempio App dell Store e funzionalità di Windows.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\n    <value>未登録のアプリを表示</value>\n  </data>\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\n    <value>登録されたアンインストーラーがないアプリケーションを表示します。これらは多くのアンインストールマネージャーで表示されませんが、依然としてディスク容量を使用しています。未登録のアイテムはレッドで表示されます。\n\n警告： これらのアプリケーションを削除する前に、必ず再確認してください。まだ必要である可能性があります。</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\n    <value>欠落しているアンインストーラーを強調表示</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\n    <value>破損または欠落しているアンインストーラーをグレーで表示します。</value>\n  </data>\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\n    <value>認証済みのアンインストーラーを強調表示</value>\n  </data>\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\n    <value>認証済みのアンインストーラーを色で識別します。証明書が正常に確認された場合はグリーン、確認に失敗した場合はブルーで表示します。\n\n警告：証明書の確認には時間がかかる場合があります。\n\n</value>\n  </data>\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\n    <value>Microsoft社製のものを非表示</value>\n  </data>\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\n    <value>Microsoft社が公開したすべてのアイテムをフィルタリングして非表示にします。非常にシンプルです。</value>\n  </data>\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\n    <value>システムコンポーネントを表示</value>\n  </data>\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\n    <value>一部のアンインストーラーは「システムコンポーネント」としてマークされ、ソフトウェアの追加/削除リストから隠されます。ドライバーにはこのタグが付けられることが多いです。</value>\n  </data>\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\n    <value>保護されたアイテムを表示</value>\n  </data>\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\n    <value>「NoRemove」タグが付けられた保護されたアイテムは、パブリッシャーが削除を推奨していないことを示しています。</value>\n  </data>\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\n    <value>tweaksを表示する</value>\n  </data>\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\n    <value>アップデートを表示</value>\n  </data>\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\n    <value>他のアプリケーションの更新プログラムです。通常、親アプリケーションと一緒にアンインストールされるため、無視しても問題ありません。</value>\n  </data>\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\n    <value>Windows機能を表示</value>\n  </data>\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\n    <value>Windowsストアアプリを表示</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>フィルタリング</value>\n  </data>\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\n    <value>チェックボックスで選択</value>\n  </data>\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\n    <value>リストの選択スタイルをチェックボックスに変更します。これにより、1回のクリックで全ての選択を解除できなくなるため、安全性が向上します。\n\n複数のアイテムをハイライトして、スペースキーを押すことで選択が可能です。</value>\n  </data>\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\n    <value>アイテムをグループで表示</value>\n  </data>\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\n    <value>リストの並べ替え基準に基づいてアイテムをグループ化します。多くの列でのグループ化はスマートフィルタリングを使用します。</value>\n  </data>\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\n    <value>特別なアンインストーラーを強調表示</value>\n  </data>\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\n    <value>WindowsストアアプリやWindows機能などの特別なアプリケーションを色分けして区別します。</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>リストビューの設定</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Systeem componenten tonen</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Keuze met checkboxen</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Kleuren gebruiken om gecertificeerde de-installer te identificeren. Succesvol gecontroleerde certificaten verschijnen in het groen, andere in het blauw gekleurd.\r\nLet op: de verificatie kan enige tijd duren.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Updates tonen</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Beveiligde onderdelen tonen</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Keuze met een markeringsveld (Checkbox).\r\nDit is veiliger, omdat een enkele klik niet alles kan deactiveren.\r\nU kunt meerdere onderdelen activeren, wanneer u deze markeert en op de spatiebalk drukt.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Updates voor andere programma's. In de regel worden zij tezamen met hun 'ouder' programma gede-installeerd. Daarom kunnen zij worden genegeerd.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Niet geregistreerde programma's tonen</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Alles verbergen wat door Microsoft werd uitgebracht.</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>De grijze kleur betekende beschadigde of ontbrekende de-installers.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Toon onderdelen in groepen</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Enkele de-installers kunnen als systeem componenten zijn aangeduid, om deze te verbergen in de Toevoegen/Verwijderen software lijst.\r\nStuurprogramma's zijn vaak gemarkeerd met dit label.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Weergave instellingen</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Microsoft componenten verbergen</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Ongeldige de-installers accentueren</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Groepering van onderdelen overeenkomstig de kolom volgens welke de lijst is gesorteerd. Slim filteren is op de meeste kolommen van toepassing</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Filteren</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Beveiligde onderdelen worden met het \"NietVerwijderen\" label aangeduid hetgeen betekent, dat de uitgever niet wil, dat deze worden verwijderd.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Gecertificeerde de-installers accentueren</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Weergave van programma's, die geen enkele gecertificeerde de-installer hebben. Deze blijven in de meeste de-installer programma's verborgen, maar nemen evenwel schijfruimte in. Niet geregistreerde onderdelen worden rood weergegeven.\r\n\r\nWaarschuwing: controleer alvorens deze programma's te verwijderen of deze niet nodig zijn!</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Windows Store apps tonen</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Windows onderdelen tonen</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\r\n    <value>Tweaks tonen</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\r\n    <value>Markeer speciale de-installers </value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\r\n    <value>Gebruik kleuren om speciale applicaties te onderscheiden, bijvoorbeeld Store Apps en Windows functies.</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Wyświetlaj niezarejestrowane</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Pokaż aplikacje które nie mają żadnych zarejestrowanych dezinstalatorów. Nie są one widoczne w większości menedżerów aplikacji, ale wciąż zajmują miejsce. Niezarejestrowane elementy są oznaczone kolorem czerwonym. \r\n\r\nUwaga: Przed usunięciem tych aplikacji sprawdź dwukrotnie czy nie są jeszcze potrzebne!</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Zaznacz uszkodzone</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Użyj szarego tła do identyfikacji uszkodzonych lub brakujących dezinstalatorów.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Zaznacz certyfikowane</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Użyj kolorów do identyfikacji certyfikowanych programów odinstalowujących. \r\nJeśli certyfikat został pomyślnie zweryfikowany użyj zielonego tła, w innym przypadku użyj niebieskiego tła.\r\n\r\nUwaga: Weryfikacja może zająć dużo czasu.</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Ukryj pozycje Microsoftu</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Odfiltruj wszystko co zostało opublikowane przez firmę Microsoft.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż elementy systemowe</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Niektóre dezinstalatory mogą być oznaczone jako \"składniki systemu\", aby ukryć je z listy Dodaj / Usuń programy.\r\nSterowniki są często oznaczone tym tagiem.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż zabezpieczone</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Chronione elementy są oznaczone tagiem \"NoRemove\", co oznacza, że wydawca nie chce abyś je usunął.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż uaktualnienia</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Aktualizacje innych zainstalowanych aplikacji. Zazwyczaj są usuwane razem z ich nadrzędną aplikacją, więc nie wymagają uwagi.</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Filtrowanie</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Zaznaczaj polami wyboru</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Zmienia styl zaznaczenia na liście do pól wyboru. Są one bezpieczniejsze, ponieważ\r\npojedyncze kliknięcie nie może odznaczyć wszystkiego.\r\n\r\nMożesz zaznaczyć kilka pozycji podświetlając je i naciskając spację.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Grupuj podobne pozycje</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Grupuj elementy według kolumny którą posortowana jest lista.\r\nGrupowanie większości kolumn używa inteligentnych filtrów.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Ustawienia listy</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż Store Apps</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż funkcje systemu</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\r\n    <value>Zaznacz specjalne</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\r\n    <value>Użyj kolorów do rozróżniania specjalnych aplikacji, na przykład aplikacji ze sklepu Windows i Funkcji systemu Windows.</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż usprawnienia</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Destacar os desinstaladores certificados</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar os componentes do sistema</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Exibir aplicativos que não possuem nenhum desinstalador registrado. Eles não são visíveis na maioria dos gerenciadores de desinstalação, mas ainda ocupam espaço. Os itens não registrados estão marcados com uma cor vermelha.\r\n\r\nAviso: Verifique antes de remover esses aplicativos, eles ainda podem ser necessários!</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Selecione usando caixas de seleção</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Use cores para identificar desinstaladores certificados.\r\nSe o certificado foi verificado com sucesso use cor verde, caso contrário use cor azul.\r\n\r\nAviso: a verificação pode demorar muito para ser concluída.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Exibir atualizações</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Exibir itens protegidos</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Muda o estilo de seleção da lista para caixas de seleção. Eles são mais seguros porque um único clique não pode desmarcar tudo.\r\n\r\nVocê pode verificar vários itens, destacando-os e pressionando a barra de espaço.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Atualizações de outros aplicativos. Normalmente, eles são desinstalados junto com seu aplicativo pai, para que possam ser ignorados.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Exibir aplicativos não registrados</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Exibir Apps da Windows Store</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Filtre tudo o que foi publicado pela Microsoft. É simples assim.</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Use cor cinza para identificar desinstaladores corrompidos ou ausente</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Exibir itens em grupos</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Exibir os recursos do Windows</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Alguns desinstaladores podem ser marcados como \"componentes do sistema\" para ocultá-los da lista Adicionar/Remover.\r\nOs drivers são frequentemente marcados com esta etiqueta.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Configurações de exibição de lista</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Ocultar os publicados pela Microsoft</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Destacar os desinstaladores inválidos</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Agrupar itens de acordo com a coluna pela qual a lista foi classificada.\r\nO agrupamento da maioria das colunas usa filtragem inteligente.</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Filtragem</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Os itens protegidos são marcados com a tag \"NoRemove\", o que significa que o editor não deseja que você os remova.</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar modificações</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\r\n    <value>Destacar desinstaladores especiais</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\r\n    <value>Usa cores para diferenciar aplicações especiais, como por exemplo Window Store e Recursos do Windows</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar aplicações não registada na lista.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Exibe aplicações sem desinstaladores registados.\r\nSão invisíveis na maioria dos gestores de desinstalação, mas ainda ocupam espaço. Itens não registrada são marcados a cor vermelha.\r\n\r\nAviso: Pense duas vezes antes de remover esses aplicativos pois poderão ainda ser necessários!</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Destacar os desinstaladores \r\ninválidos</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Use a cor cinzenta para identificar desinstaladores corrompidos ou ausentes.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Destacar os desinstaladores \r\ncertificados</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Use cores para identificar os desinstaladores certificados. Se o certificado foi verificado com êxito, utilize a cor cinzenta, caso contrário use a cor azul.\r\n\r\nAtenção: O processo de verificação pode demorar muito tempo.\r\n</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Ocultar se publicado pela Microsoft</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Filtra tudo o que foi publicado pela Microsoft. Tão simples como isso.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar os componentes do sistema</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Alguns desinstaladores podem ser designados como \"componentes do sistema\" para os esconder na lista\r\nAdicionar/Remover Programas. Os drivers são muitas vezes rotulados com essa designação.\r\n</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar itens protegidos</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Itens protegidos assinalados com a denominação \"NoRemove (NãoRemover)\" significa que o editor não quer que você os remova.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar actualizações</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Actualizações de outras aplicações. Normalmente, elas são desinstaladas em conjunto com aplicações semelhantes, para que possam ser ignoradas.</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar os recursos do Windows</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar as app do Windows Store</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Filtrando</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Seleccione usando as caixas \r\nde selecção.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Mudar o tipo de selecção da lista de caixas de opção.  São mais seguros porque um\r\núnico clique não consegue desmarcar tudo.\r\n\r\nVocê pode verificar vários itens, destacando-os e carregando na barra de espaço.\r\n</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar os itens em grupos</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Agrupar itens com base na coluna\r\nusada para as ordenar.\r\nO agrupamento da maior parte das colunas utiliza uma triagem inteligente.\r\n\r\n</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Configurações da lista de exibição</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"checkBoxOrphans.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"checkBoxOrphans.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"checkBoxOrphans.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 28</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"checkBoxOrphans.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>191, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Show unregistered applications</value>\r\n  </data>\r\n  <metadata name=\"toolTip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>202, 17</value>\r\n  </metadata>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Display applications that do not have any registered uninstallers. They are not visible in most uninstall managers but still take up space. Unregistered items are marked with a red color. \r\n\r\nWarning: Double check before removing these applications, they might still be necessary!</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxOrphans.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxOrphans</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxOrphans.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxOrphans.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxOrphans.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 78</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Highlight missing uninstallers</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Use grey color to identify uninstallers that are corrupted or missing.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInvalidTest.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxInvalidTest</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInvalidTest.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInvalidTest.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInvalidTest.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 53</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>185, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Highlight certified uninstallers</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Use colors to identify certified uninstallers.\r\nIf the certificate was successfully verified use green color, otherwise use blue color.\r\n\r\nWarning: Verification can take a long time to complete.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCertTest.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxCertTest</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCertTest.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCertTest.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCertTest.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"groupBox2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"groupBox2.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>176, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Hide published by Microsoft</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Filter out everything that was published by Microsoft. It's that simple.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListHideMicrosoft.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxListHideMicrosoft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListHideMicrosoft.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListHideMicrosoft.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListHideMicrosoft.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 53</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>165, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Show system components</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Some uninstallers can be marked as \"system components\" to hide them from the Add/Remove software list.\r\nDrivers are often marked with this tag.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListSysComp.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxListSysComp</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListSysComp.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListSysComp.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListSysComp.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 78</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>141, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Show protected items</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Protected items are marked with the \"NoRemove\" tag, which means that the publisher doesn't want you to remove them.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListProtected.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxListProtected</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListProtected.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListProtected.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListProtected.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 103</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>94, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\r\n    <value>Show tweaks</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxTweaks.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxTweaks</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxTweaks.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxTweaks.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxTweaks.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 128</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>100, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Show updates</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Updates of other applications. Usually they are uninstalled together with their parent application, so they can be ignored.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShowUpdates.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxShowUpdates</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShowUpdates.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShowUpdates.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShowUpdates.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 153</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>152, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Show Windows features</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxWinFeature.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxWinFeature</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxWinFeature.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxWinFeature.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxWinFeature.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 178</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>165, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Show Windows Store apps</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShowStoreApps.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxShowStoreApps</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShowStoreApps.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShowStoreApps.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShowStoreApps.ZOrder\" xml:space=\"preserve\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 19</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>105, 200</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"groupBox2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>6, 3, 6, 3</value>\r\n  </data>\r\n  <data name=\"groupBox2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>117, 222</value>\r\n  </data>\r\n  <data name=\"groupBox2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Filtering</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Name\" xml:space=\"preserve\">\r\n    <value>groupBox2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"groupBox1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>154, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Select using checkboxes</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Changes selection style of the list to checkboxes. They are safer because a \r\nsingle click can't deselect everything.\r\n\r\nYou can check multiple items by highlighting them and pressing spacebar.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxViewCheckboxes.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxViewCheckboxes</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxViewCheckboxes.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxViewCheckboxes.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxViewCheckboxes.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 28</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>140, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Show items in groups</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Group items according to the column the list is sorted by.\r\nGrouping of most of the columns uses smart filtering.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxViewGroups.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxViewGroups</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxViewGroups.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxViewGroups.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxViewGroups.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 103</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>178, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\r\n    <value>Highlight special uninstallers</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\r\n    <value>Use colors to differentiate special applications, for example Store Apps and Windows Features.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxHighlightSpecial.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxHighlightSpecial</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxHighlightSpecial.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxHighlightSpecial.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxHighlightSpecial.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 19</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>105, 125</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 222</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 12</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>6, 3, 6, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>117, 147</value>\r\n  </data>\r\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>List view settings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>299, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"$this.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>117, 115</value>\r\n  </data>\r\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>117, 369</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolTip1.Name\" xml:space=\"preserve\">\r\n    <value>toolTip1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolTip1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolTip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;usageTracker1.Name\" xml:space=\"preserve\">\r\n    <value>usageTracker1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;usageTracker1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Functions.Tracking.UsageTracker, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>PropertiesSidebar</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Незарегистрированные</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Показывать приложения, которые не имеют зарегистрированных деинсталляторов. Они не видны в большинстве менеджеров удаления, но всё равно занимают место. Незарегистрированные элементы отмечены красным цветом. \r\n\r\nВнимание: Проверьте приложения перед их удалением, они могут быть необходимы!</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Нет деинсталлятора</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Выделять серым цветом деинсталляторы, которые повреждены или отсутствуют.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Подписанные деинсталляторы</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Использовать цвета для идентификации сертифицированных деинсталляторов.\r\nЕсли сертификат проверен - зелёный цвет, не проверен - синий цвет.\r\n\r\nВнимание: Проверка может занять длительное время.</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Фильтрация</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Скрыть приложения Microsoft</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Скрыть всё, что подписано Майкрософт.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Отобразить системные приложения</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Некоторые деинсталляторы могут быть помечены как \"системные\", можете скрыть эти программы из списка.\r\nДрайвера часто помечены этим тегом.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Отобразить защищённые</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Защищённые элементы имеют пометку \"NoRemove\", это означает, что разработчик не хочет, чтобы их удаляли.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Отобразить обновления</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Обновления для других приложений. Обычно они удаляются вместе с родительским приложением, поэтому ими можно пренебречь.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Отобразить приложения Windows Store</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Вид списка</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Выбирать, используя флажки </value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Изменяет способ выбора элементов, используя флажки. Пользование ими безопасней, так как одним щелчком нельзя отменить всё.\r\n\r\nВы можете отметить несколько элементов, выделив их и нажав пробел.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Группировать элементы</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Группировка элементов \"абзацами\" согласно колонке, по которой сортируется список.\r\nГруппировка большинства колонок использует смарт-фильтрацию.</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Функции Windows</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\r\n    <value>Отобразить твики</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\r\n    <value>Выделить особые деинсталляторы</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\r\n    <value>Использовать цвета для различения особых приложений, например, приложений магазина и функций Windows.</value>\r\n  </data>\r\n  <metadata name=\"toolTip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>202, 17</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>299, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži sistemske sestavine</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\r\n    <value>Prikaz aplikacij, ki nimajo nobene registrirane odstranjevalce. Ti niso vidni v večini upraviteljev odstranjevanja toda še vedno zasedejo prostor. Neregistrirani vnosi so označeni z rdečo barvo.\r\n\r\nOpozorilo: Dvakrat preverite pred odstranjevanjem teh aplikacij, ki so morda še vedno potrebne!</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Filtriranje</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Izberi s potrditvenimi polji</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži posodobitve</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži zaščitene vnose</value>\r\n  </data>\r\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\r\n    <value>Posodobitve drugih aplikacij. Ponavadi so te odstranjene skupaj z nadrejeno aplikacijo, tako da jih je mogoče prezreti.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži neregistrirane aplikacije</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\r\n    <value>Nekateri odstranjevalci so lahko označeni kot \"sestavine sistema\". Za njihovo skrivanje s seznama Dodaj/odstrani program. \r\nGonilnikii so pogosto označeni s to oznako.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\r\n    <value>Spremeni izbor sloga seznama potrditvenih polj. Varnejše je, ker en klik ne more počistiti vsega.\r\n\r\nLahko označite več vnosov tako, da jih označite in pritisnete na preslednico.</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\r\n    <value>Izloči iz filtra vse, kar je objavil Microsoft. To je preprosto.</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Uporabi sivo barvo za identifikacijo odstranjevalcev, ki so poškodovani ali manjkajo.</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži vnose v skupinah</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\r\n    <value>Uporabi barve za označevanje potrjenih odstranjevalcev.\r\nČe je bilo digitalno potrdilo uspešno preverjeno, uporabi zeleno barvo, sicer uporabi modro barvo.\r\n\r\nOpozorilo: Konec preverjanja lahko traja dolgo časa.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Nastavitve pogleda seznama</value>\r\n  </data>\r\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\r\n    <value>Skrij objavljeno od Microsofta</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Označi neveljavne odstranjevalce</value>\r\n  </data>\r\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\r\n    <value>Seznam je razvrščen v skupine vnosov glede na stolpec. \r\nZdruževanje v skupine uporablja pametno filtriranje.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Označi overjene odstranjevalce</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\r\n    <value>Zaščiteni vnosi so označeni z oznako \"NeOdstrani\", kar pomeni, da izdajatelj ne želi, da jih odstranite.</value>\r\n  </data>\r\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži Windows Store aplikacije</value>\r\n  </data>\r\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži Windows funkcije</value>\r\n  </data>\r\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži izboljšave</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\r\n    <value>Označi posebne odstranjevalce</value>\r\n  </data>\r\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\r\n    <value>Uporabi barve zarazlikovanje posebnih aplikacij, kot so npr. Store Apps in funkcije Windows.</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"toolTip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>202, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>299, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\n    <value>Visa oregistrerade appar</value>\n  </data>\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\n    <value>Visa appar som inte har några registrerade avinstallationsprogram. De är inte synliga i de flesta avinstallationshanterare men tar fortfarande upp plats. Oregistrerade objekt markeras med en röd färg.\n\nVarning: Dubbelkolla innan du tar bort dessa applikationer, de kan fortfarande vara nödvändiga!</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\n    <value>Markera saknade avinstallationsprogram</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\n    <value>Använd grå färg för att identifiera avinstallationsprogram som är korrupta eller saknas.</value>\n  </data>\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\n    <value>Markera certifierade avinstallationsprogram</value>\n  </data>\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\n    <value>Använd färger för att identifiera certifierade avinstallationsprogram.\nOm certifikatet verifierades framgångsrikt, använd grönt, annars använd blått.\n\nVarning: Verifiering kan ta lång tid att slutföra.</value>\n  </data>\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\n    <value>Dölj publicerade av Microsoft</value>\n  </data>\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\n    <value>Filtrera bort allt som publicerades av Microsoft. Så enkelt är det.</value>\n  </data>\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\n    <value>Visa systemkomponenter</value>\n  </data>\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\n    <value>Vissa avinstallationsprogram kan markeras som \"systemkomponenter\" för att dölja dem från Lägg till/Ta bort listan av appar. Drivrutiner markeras ofta med denna tagg.</value>\n  </data>\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\n    <value>Visa skyddade objekt</value>\n  </data>\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\n    <value>Skyddade objekt är märkta med taggen \"NoRemove\", vilket innebär att utgivaren inte vill att du tar bort dem.</value>\n  </data>\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\n    <value>Visa justeringar</value>\n  </data>\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\n    <value>Visa uppdateringar</value>\n  </data>\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\n    <value>Uppdateringar av andra appar. Vanligtvis avinstalleras de tillsammans med sin huvudapp, så de kan ignoreras.</value>\n  </data>\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\n    <value>Visa Windows-funktioner</value>\n  </data>\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\n    <value>Visa Windows Store-appar</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Filtrering</value>\n  </data>\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\n    <value>Välj med hjälp av kryssrutor</value>\n  </data>\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\n    <value>Ändrar urvalsstilen för listan till kryssrutor. De är säkrare eftersom enstaka klick inte kan avmarkera allt.\n\nDu kan markera flera objekt genom att markera dem och trycka på mellanslag.</value>\n  </data>\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\n    <value>Visa objekt i grupper</value>\n  </data>\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\n    <value>\"Gruppera objekt enligt kolumnen som listan är sorterad efter. Gruppering av de flesta kolumnerna använder smart filtrering.</value>\n  </data>\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\n    <value>Markera speciella avinstallationsprogram</value>\n  </data>\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\n    <value>Använd färger för att särskilja speciella appar, till exempel Microsoft Store-appar och Windows-funktioner.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Inställningar för listvy</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\n    <value>Kayıtsız uygulamaları göster</value>\n  </data>\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\n    <value>Kayıtlı kaldırıcılar içermeyen uygulamaları görüntüleyin. Çoğu kaldırma yöneticisinde görünmezler ancak yine de yer kaplarlar. Kayıtlı olmayan öğeler kırmızı renkle işaretlenir. Uyarı: Bu uygulamaları kaldırmadan önce iki kez kontrol edin, yine de gerekli olabilir!</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\n    <value>Eksik kaldırıcıları vurgula</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\n    <value>Bozulmuş veya eksik olan kaldırıcıları tanımlamak için gri renk kullanın.</value>\n  </data>\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\n    <value>Sertifikalı kaldırıcıları vurgulayın</value>\n  </data>\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\n    <value>Sertifikalı kaldırıcıları tanımlamak için renkleri kullanın. Sertifika başarıyla doğrulandıysa yeşil renk kullanın, aksi halde mavi renk kullanın. Uyarı: Doğrulamanın tamamlanması uzun sürebilir.</value>\n  </data>\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\n    <value>Yayıncısı Microsoft olanları gizle</value>\n  </data>\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\n    <value>Microsoft tarafından yayınlanan her şeyi filtreleyin. Bu kadar basit.</value>\n  </data>\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\n    <value>Sistem bileşenlerini göster</value>\n  </data>\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\n    <value>Bazı kaldırıcılar, Ekle / Kaldır yazılım listesinden gizlemek için \"sistem bileşenleri\" olarak işaretlenebilir. Sürücüler genellikle bu etiketle işaretlenir.</value>\n  </data>\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\n    <value>Korunan öğeleri göster</value>\n  </data>\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\n    <value>Korunan öğeler \"NoRemove\" etiketi ile işaretlenir, yani yayıncı bunları kaldırmanızı istemez.</value>\n  </data>\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\n    <value>İnce ayarları göster</value>\n  </data>\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\n    <value>Güncellemeleri göster</value>\n  </data>\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\n    <value>Diğer uygulamaların güncellemeleri. Genellikle ebeveyn uygulamaları ile birlikte kaldırılırlar, böylece göz ardı edilebilirler.</value>\n  </data>\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\n    <value>Pencere özelliklerini göster</value>\n  </data>\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\n    <value>Windows Mağazası uygulamalarını göster</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Süz</value>\n  </data>\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\n    <value>Onay kutularını kullanarak seçin</value>\n  </data>\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\n    <value>Listenin seçim stilini onay kutularına değiştirir. Onlar daha güvenli çünkü tek tıklama, her şeyin seçimini kaldıramaz. Birden fazla öğeyi vurgulayarak ve boşluk tuşuna basarak kontrol edebilirsiniz.</value>\n  </data>\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\n    <value>Öğeleri gruplarda göster</value>\n  </data>\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\n    <value>Listeye göre grup öğeleri gruplarına göre sıralanır. Sütunların çoğunun gruplanması akıllı filtreleme kullanır.</value>\n  </data>\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\n    <value>Özel kaldırıcıları vurgulayın</value>\n  </data>\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\n    <value>Özel uygulamaları ayırt etmek için renkleri kullanın, örneğin Mağaza Uygulamaları ve Windows Özellikleri.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Liste görünümü ayarları</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\n    <value>Hiển thị các ứng dụng chưa đăng ký</value>\n  </data>\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\n    <value>Hiển thị các ứng dụng chưa có bất kỳ trình gỡ cài đặt được đăng ký nào. Chúng không hiển thị trong hầu hết các trình quản lý gỡ cài đặt nhưng vẫn chiếm dung lượng. Các mục chưa đăng ký được đánh dấu bằng màu đỏ.\n\nCảnh báo: Hãy kiểm tra kỹ trước khi xóa các ứng dụng này, chúng có thể vẫn cần thiết!</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\n    <value>Đánh dấu các mục thiếu trình gỡ cài đặt</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\n    <value>Dùng màu xám để xác định trình gỡ cài đặt bị hỏng hoặc bị thiếu.</value>\n  </data>\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\n    <value>Đánh dấu trình gỡ cài đặt đã đạt chứng chỉ</value>\n  </data>\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\n    <value>Sử dụng màu sắc để xác định trình gỡ cài đặt đã đạt chứng chỉ.\nMàu xanh lục nếu chứng chỉ đã được xác minh thành công, ngược lại là màu xanh lam.\n\nCảnh báo: Quá trình xác minh có thể mất nhiều thời gian để hoàn tất.</value>\n  </data>\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\n    <value>Ẩn mọi thứ do Microsoft phát hành</value>\n  </data>\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\n    <value>Lọc bỏ mọi thứ do Microsoft phát hành. Chỉ thế thôi.</value>\n  </data>\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\n    <value>Hiển thị các thành phần hệ thống</value>\n  </data>\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\n    <value>Một số trình gỡ cài đặt có thể được đánh dấu là \"thành phần hệ thống\" và bị ẩn khỏi danh sách Thêm/Xóa phần mềm.\nCác \"Driver\" thường được đánh dấu bằng thẻ này.</value>\n  </data>\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\n    <value>Hiển thị các mục được bảo vệ</value>\n  </data>\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\n    <value>Các mục được bảo vệ được đánh dấu bằng thẻ \"NoRemove\", có nghĩa là nhà phát hành không muốn bạn xóa chúng.</value>\n  </data>\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\n    <value>Hiển thị các tinh chỉnh</value>\n  </data>\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\n    <value>Hiển thị các ứng dụng cập nhật</value>\n  </data>\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\n    <value>Các ứng dụng dùng để cập nhật các ứng dụng khác. Chúng thường được gỡ cài đặt cùng với ứng dụng gốc nên có thể yên tâm bỏ qua.</value>\n  </data>\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\n    <value>Hiển thị Windows features</value>\n  </data>\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\n    <value>Hiển thị ứng dụng từ Windows Store</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Bộ lọc</value>\n  </data>\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\n    <value>Chọn bằng cách tích vào hộp kiểm</value>\n  </data>\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\n    <value>Thay đổi kiểu lựa chọn của danh sách thành bằng cách tích các hộp kiểm. Chúng an toàn hơn vì không thể bỏ chọn mọi thứ bằng một cú nhấp chuột.\n\nBạn có thể kiểm tra nhiều mục bằng cách tích chúng và nhấn phím cách.</value>\n  </data>\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\n    <value>Hiển thị các mục theo nhóm</value>\n  </data>\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\n    <value>Nhóm các mục trong danh sách theo các cột được sắp xếp.\nViệc nhóm hầu hết các cột sử dụng bộ lọc thông minh.</value>\n  </data>\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\n    <value>Đánh dấu các trình gỡ cài đặt đặc biệt</value>\n  </data>\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\n    <value>Dùng màu sắc để phân biệt các ứng dụng đặc biệt, ví dụ như Store Apps và Windows Features.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Cài đặt chế độ xem</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\n    <value>显示未注册的应用程序</value>\n  </data>\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\n    <value>显示没有任何已注册卸载程序的应用程序。它们在大多数卸载管理器中不可见，但仍会占用空间。未注册的项目用红色标记。\n\n警告：在删除这些应用程序之前，请仔细检查，它们可能仍然是必需的！</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\n    <value>突出显示丢失的卸载程序</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\n    <value>使用灰色标记已损坏或丢失的卸载程序。</value>\n  </data>\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\n    <value>突出显示已认证卸载程序</value>\n  </data>\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\n    <value>使用颜色标识已认证的卸载程序。\n如果证书验证成功，使用绿色，否则使用蓝色。\n\n警告：验证可能需要很长时间才能完成。</value>\n  </data>\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\n    <value>隐藏由Microsoft发布的内容</value>\n  </data>\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\n    <value>筛选掉Microsoft发布的所有内容。就这么简单。</value>\n  </data>\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\n    <value>显示系统组件</value>\n  </data>\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\n    <value>一些卸载程序可能被标记为\"系统组件\"，以从添加/删除软件列表中隐藏它们。\n驱动程序经常被标上这个标签。</value>\n  </data>\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\n    <value>显示受保护项目</value>\n  </data>\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\n    <value>受保护项目被标记为\"不要删除\"标签，表示发布者不希望你删除它们。</value>\n  </data>\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\n    <value>显示调整</value>\n  </data>\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\n    <value>显示更新</value>\n  </data>\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\n    <value>其他应用程序的更新。通常它们与父应用程序一起卸载，因此可以忽略它们。</value>\n  </data>\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\n    <value>显示Windows功能</value>\n  </data>\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\n    <value>显示Windows商店应用</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>筛选器</value>\n  </data>\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\n    <value>使用复选框选择</value>\n  </data>\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\n    <value>将列表的选择样式更改为复选框。这样更安全，因为单击不能取消选择所有内容。\n\n你可以通过突出显示多个项目并按空格键来选中它们。</value>\n  </data>\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\n    <value>按组显示项目</value>\n  </data>\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\n    <value>根据列表排序的列对项目进行分组。\n大多数列的分组使用智能筛选。</value>\n  </data>\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\n    <value>突出显示特殊的卸载程序</value>\n  </data>\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\n    <value>使用颜色区分特殊应用程序，例如商店应用程序和Windows功能。</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>列表视图设置</value>\n  </data>\n</root>\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/PropertiesSidebar.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\n    <value>顯示未註冊的應用程式</value>\n  </data>\n  <data name=\"checkBoxOrphans.ToolTip\" xml:space=\"preserve\">\n    <value>顯示應用程式沒有任何已註冊的解除安裝軟體。它們不會出現在大多數的解除安裝管理程式內，但仍會佔用空間。未註冊的項目會用紅色來做標示。\n\n警告：在刪除這些應用程式之前，請仔細檢查，它們可能是必須的！</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\n    <value>提高顯示遺失的應用程式解除軟體</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.ToolTip\" xml:space=\"preserve\">\n    <value>用灰色顯示應用程式解除軟體遺失或損壞。</value>\n  </data>\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\n    <value>提高顯示已認證的應用程式解除軟體</value>\n  </data>\n  <data name=\"checkBoxCertTest.ToolTip\" xml:space=\"preserve\">\n    <value>使用顏色標示已認證的應用程式解除軟體。如果憑證驗證成功，用綠色標示，否則為藍色。\n\n警告：驗證可能會花一段時間才能完成。</value>\n  </data>\n  <data name=\"checkBoxListHideMicrosoft.Text\" xml:space=\"preserve\">\n    <value>隱藏由Microsoft發布的內容</value>\n  </data>\n  <data name=\"checkBoxListHideMicrosoft.ToolTip\" xml:space=\"preserve\">\n    <value>搜尋由Microsoft發布的所有內容</value>\n  </data>\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\n    <value>顯示系統目錄</value>\n  </data>\n  <data name=\"checkBoxListSysComp.ToolTip\" xml:space=\"preserve\">\n    <value>有些軟體解除安裝程式可能會被標示為系統目錄。從新增/移除軟體清單來隱藏它們。驅動程式常常會被標上這個標籤。</value>\n  </data>\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\n    <value>顯示保護項目</value>\n  </data>\n  <data name=\"checkBoxListProtected.ToolTip\" xml:space=\"preserve\">\n    <value>保護項目已被標記為\"不要刪除\"，表示發布人員不希望你移除它們。</value>\n  </data>\n  <data name=\"checkBoxTweaks.Text\" xml:space=\"preserve\">\n    <value>顯示調整軟體</value>\n  </data>\n  <data name=\"checkBoxShowUpdates.Text\" xml:space=\"preserve\">\n    <value>顯示更新</value>\n  </data>\n  <data name=\"checkBoxShowUpdates.ToolTip\" xml:space=\"preserve\">\n    <value>其他應用程式的更新。通常它們與主程式一起解除，因此可以忽略他們</value>\n  </data>\n  <data name=\"checkBoxWinFeature.Text\" xml:space=\"preserve\">\n    <value>顯示Windows 功能</value>\n  </data>\n  <data name=\"checkBoxShowStoreApps.Text\" xml:space=\"preserve\">\n    <value>顯示Windows商店應用程式</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>過濾選項</value>\n  </data>\n  <data name=\"checkBoxViewCheckboxes.Text\" xml:space=\"preserve\">\n    <value>使用複選框選擇</value>\n  </data>\n  <data name=\"checkBoxViewCheckboxes.ToolTip\" xml:space=\"preserve\">\n    <value>將列表的選擇樣式改為複選。這樣更安全，因為不能透過點擊來取消選擇所有內容\n\n你可以透過提高顯示多個項目並按空白鍵來選擇它們。</value>\n  </data>\n  <data name=\"checkBoxViewGroups.Text\" xml:space=\"preserve\">\n    <value>以群組顯示項目</value>\n  </data>\n  <data name=\"checkBoxViewGroups.ToolTip\" xml:space=\"preserve\">\n    <value>根據列表的排序對項目進行分組。大多數列的分組能夠自動篩選。</value>\n  </data>\n  <data name=\"checkBoxHighlightSpecial.Text\" xml:space=\"preserve\">\n    <value>提高顯示特殊的移除程式</value>\n  </data>\n  <data name=\"checkBoxHighlightSpecial.ToolTip\" xml:space=\"preserve\">\n    <value>用顏色區分應用程式，例如商店應用程式和Windows 功能。</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>以清單顯示設定</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Controls\r\n{\r\n    partial class UninstallationSettings\r\n    {\r\n        /// <summary> \r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary> \r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Component Designer generated code\r\n\r\n        /// <summary> \r\n        /// Required method for Designer support - do not modify \r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            components = new System.ComponentModel.Container();\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UninstallationSettings));\r\n            groupBox3 = new System.Windows.Forms.GroupBox();\r\n            checkBoxManualNoCollisionProtection = new System.Windows.Forms.CheckBox();\r\n            checkBoxConcurrentOneLoud = new System.Windows.Forms.CheckBox();\r\n            checkBoxConcurrent = new System.Windows.Forms.CheckBox();\r\n            numericUpDownMaxConcurrent = new System.Windows.Forms.NumericUpDown();\r\n            label2 = new System.Windows.Forms.Label();\r\n            groupBox2 = new System.Windows.Forms.GroupBox();\r\n            flowLayoutPanel4 = new System.Windows.Forms.FlowLayoutPanel();\r\n            checkBoxShutdown = new System.Windows.Forms.CheckBox();\r\n            checkBoxRestorePoint = new System.Windows.Forms.CheckBox();\r\n            checkBoxBatchSortQuiet = new System.Windows.Forms.CheckBox();\r\n            checkBoxDiisableProtection = new System.Windows.Forms.CheckBox();\r\n            checkBoxSimulate = new System.Windows.Forms.CheckBox();\r\n            groupBox1 = new System.Windows.Forms.GroupBox();\r\n            flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\r\n            checkBoxAutoKillQuiet = new System.Windows.Forms.CheckBox();\r\n            checkBoxRetryQuiet = new System.Windows.Forms.CheckBox();\r\n            checkBoxGenerate = new System.Windows.Forms.CheckBox();\r\n            checkBoxGenerateStuck = new System.Windows.Forms.CheckBox();\r\n            checkBoxAutoDaemon = new System.Windows.Forms.CheckBox();\r\n            toolTip1 = new System.Windows.Forms.ToolTip(components);\r\n            groupBox3.SuspendLayout();\r\n            ((System.ComponentModel.ISupportInitialize)numericUpDownMaxConcurrent).BeginInit();\r\n            groupBox2.SuspendLayout();\r\n            flowLayoutPanel4.SuspendLayout();\r\n            groupBox1.SuspendLayout();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // groupBox3\r\n            // \r\n            resources.ApplyResources(groupBox3, \"groupBox3\");\r\n            groupBox3.Controls.Add(checkBoxManualNoCollisionProtection);\r\n            groupBox3.Controls.Add(checkBoxConcurrentOneLoud);\r\n            groupBox3.Controls.Add(checkBoxConcurrent);\r\n            groupBox3.Controls.Add(numericUpDownMaxConcurrent);\r\n            groupBox3.Controls.Add(label2);\r\n            groupBox3.Name = \"groupBox3\";\r\n            groupBox3.TabStop = false;\r\n            // \r\n            // checkBoxManualNoCollisionProtection\r\n            // \r\n            resources.ApplyResources(checkBoxManualNoCollisionProtection, \"checkBoxManualNoCollisionProtection\");\r\n            checkBoxManualNoCollisionProtection.Name = \"checkBoxManualNoCollisionProtection\";\r\n            checkBoxManualNoCollisionProtection.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxConcurrentOneLoud\r\n            // \r\n            resources.ApplyResources(checkBoxConcurrentOneLoud, \"checkBoxConcurrentOneLoud\");\r\n            checkBoxConcurrentOneLoud.Name = \"checkBoxConcurrentOneLoud\";\r\n            checkBoxConcurrentOneLoud.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxConcurrent\r\n            // \r\n            resources.ApplyResources(checkBoxConcurrent, \"checkBoxConcurrent\");\r\n            checkBoxConcurrent.Name = \"checkBoxConcurrent\";\r\n            checkBoxConcurrent.UseVisualStyleBackColor = true;\r\n            // \r\n            // numericUpDownMaxConcurrent\r\n            // \r\n            resources.ApplyResources(numericUpDownMaxConcurrent, \"numericUpDownMaxConcurrent\");\r\n            numericUpDownMaxConcurrent.Maximum = new decimal(new int[] { 10, 0, 0, 0 });\r\n            numericUpDownMaxConcurrent.Minimum = new decimal(new int[] { 2, 0, 0, 0 });\r\n            numericUpDownMaxConcurrent.Name = \"numericUpDownMaxConcurrent\";\r\n            numericUpDownMaxConcurrent.Value = new decimal(new int[] { 2, 0, 0, 0 });\r\n            // \r\n            // label2\r\n            // \r\n            label2.AccessibleRole = System.Windows.Forms.AccessibleRole.StaticText;\r\n            resources.ApplyResources(label2, \"label2\");\r\n            label2.Name = \"label2\";\r\n            // \r\n            // groupBox2\r\n            // \r\n            resources.ApplyResources(groupBox2, \"groupBox2\");\r\n            groupBox2.Controls.Add(flowLayoutPanel4);\r\n            groupBox2.Name = \"groupBox2\";\r\n            groupBox2.TabStop = false;\r\n            // \r\n            // flowLayoutPanel4\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel4, \"flowLayoutPanel4\");\r\n            flowLayoutPanel4.Controls.Add(checkBoxShutdown);\r\n            flowLayoutPanel4.Controls.Add(checkBoxRestorePoint);\r\n            flowLayoutPanel4.Controls.Add(checkBoxBatchSortQuiet);\r\n            flowLayoutPanel4.Controls.Add(checkBoxDiisableProtection);\r\n            flowLayoutPanel4.Controls.Add(checkBoxSimulate);\r\n            flowLayoutPanel4.Name = \"flowLayoutPanel4\";\r\n            // \r\n            // checkBoxShutdown\r\n            // \r\n            resources.ApplyResources(checkBoxShutdown, \"checkBoxShutdown\");\r\n            checkBoxShutdown.Name = \"checkBoxShutdown\";\r\n            checkBoxShutdown.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxRestorePoint\r\n            // \r\n            resources.ApplyResources(checkBoxRestorePoint, \"checkBoxRestorePoint\");\r\n            checkBoxRestorePoint.Name = \"checkBoxRestorePoint\";\r\n            toolTip1.SetToolTip(checkBoxRestorePoint, resources.GetString(\"checkBoxRestorePoint.ToolTip\"));\r\n            checkBoxRestorePoint.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxBatchSortQuiet\r\n            // \r\n            resources.ApplyResources(checkBoxBatchSortQuiet, \"checkBoxBatchSortQuiet\");\r\n            checkBoxBatchSortQuiet.Name = \"checkBoxBatchSortQuiet\";\r\n            checkBoxBatchSortQuiet.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxDiisableProtection\r\n            // \r\n            resources.ApplyResources(checkBoxDiisableProtection, \"checkBoxDiisableProtection\");\r\n            checkBoxDiisableProtection.Name = \"checkBoxDiisableProtection\";\r\n            checkBoxDiisableProtection.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxSimulate\r\n            // \r\n            resources.ApplyResources(checkBoxSimulate, \"checkBoxSimulate\");\r\n            checkBoxSimulate.Name = \"checkBoxSimulate\";\r\n            checkBoxSimulate.UseVisualStyleBackColor = true;\r\n            // \r\n            // groupBox1\r\n            // \r\n            resources.ApplyResources(groupBox1, \"groupBox1\");\r\n            groupBox1.Controls.Add(flowLayoutPanel1);\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.TabStop = false;\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Controls.Add(checkBoxAutoKillQuiet);\r\n            flowLayoutPanel1.Controls.Add(checkBoxRetryQuiet);\r\n            flowLayoutPanel1.Controls.Add(checkBoxGenerate);\r\n            flowLayoutPanel1.Controls.Add(checkBoxGenerateStuck);\r\n            flowLayoutPanel1.Controls.Add(checkBoxAutoDaemon);\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // checkBoxAutoKillQuiet\r\n            // \r\n            resources.ApplyResources(checkBoxAutoKillQuiet, \"checkBoxAutoKillQuiet\");\r\n            checkBoxAutoKillQuiet.Name = \"checkBoxAutoKillQuiet\";\r\n            checkBoxAutoKillQuiet.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxRetryQuiet\r\n            // \r\n            resources.ApplyResources(checkBoxRetryQuiet, \"checkBoxRetryQuiet\");\r\n            checkBoxRetryQuiet.Name = \"checkBoxRetryQuiet\";\r\n            checkBoxRetryQuiet.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxGenerate\r\n            // \r\n            resources.ApplyResources(checkBoxGenerate, \"checkBoxGenerate\");\r\n            checkBoxGenerate.Name = \"checkBoxGenerate\";\r\n            checkBoxGenerate.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxGenerateStuck\r\n            // \r\n            resources.ApplyResources(checkBoxGenerateStuck, \"checkBoxGenerateStuck\");\r\n            checkBoxGenerateStuck.Name = \"checkBoxGenerateStuck\";\r\n            checkBoxGenerateStuck.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxAutoDaemon\r\n            // \r\n            resources.ApplyResources(checkBoxAutoDaemon, \"checkBoxAutoDaemon\");\r\n            checkBoxAutoDaemon.Name = \"checkBoxAutoDaemon\";\r\n            checkBoxAutoDaemon.UseVisualStyleBackColor = true;\r\n            // \r\n            // UninstallationSettings\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            Controls.Add(groupBox3);\r\n            Controls.Add(groupBox1);\r\n            Controls.Add(groupBox2);\r\n            Name = \"UninstallationSettings\";\r\n            groupBox3.ResumeLayout(false);\r\n            groupBox3.PerformLayout();\r\n            ((System.ComponentModel.ISupportInitialize)numericUpDownMaxConcurrent).EndInit();\r\n            groupBox2.ResumeLayout(false);\r\n            groupBox2.PerformLayout();\r\n            flowLayoutPanel4.ResumeLayout(false);\r\n            flowLayoutPanel4.PerformLayout();\r\n            groupBox1.ResumeLayout(false);\r\n            groupBox1.PerformLayout();\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.GroupBox groupBox3;\r\n        private System.Windows.Forms.CheckBox checkBoxConcurrentOneLoud;\r\n        private System.Windows.Forms.CheckBox checkBoxConcurrent;\r\n        private System.Windows.Forms.NumericUpDown numericUpDownMaxConcurrent;\r\n        private System.Windows.Forms.Label label2;\r\n        private System.Windows.Forms.GroupBox groupBox2;\r\n        private System.Windows.Forms.CheckBox checkBoxShutdown;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel4;\r\n        private System.Windows.Forms.CheckBox checkBoxBatchSortQuiet;\r\n        private System.Windows.Forms.CheckBox checkBoxDiisableProtection;\r\n        private System.Windows.Forms.CheckBox checkBoxSimulate;\r\n        private System.Windows.Forms.GroupBox groupBox1;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;\r\n        private System.Windows.Forms.CheckBox checkBoxAutoKillQuiet;\r\n        private System.Windows.Forms.CheckBox checkBoxRetryQuiet;\r\n        private System.Windows.Forms.CheckBox checkBoxGenerate;\r\n        private System.Windows.Forms.CheckBox checkBoxGenerateStuck;\r\n        private System.Windows.Forms.CheckBox checkBoxManualNoCollisionProtection;\r\n        private System.Windows.Forms.CheckBox checkBoxAutoDaemon;\r\n        private System.Windows.Forms.CheckBox checkBoxRestorePoint;\r\n        private System.Windows.Forms.ToolTip toolTip1;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>تعطيل منع الاصطدام عند تشغيل\r\nالغاء التثبيت يدويا</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>الغاء تثبيت واحد فقط  بصوت عال كل مرة</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>(تشغيل التثبيت تلقائيا بشكل متزامن (اذا كان ذلك ممكنا </value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>الحد الاقصى لعدد المثبتات التي قيد التشغيل:</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>الغاء تثبيت متزامن</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>منع ايقاف/اعاده تشغيل النظام</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>فرز ذكي الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>تعطيل الحماية</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>محاكاة الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>الاعدادات العامة</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>قتل المثبتات العالقة تلقائيا بهدوء</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>فشل اعاده محاولة التثبيت بهدوء مره</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>انشاء المثبتات المفقودة بهدوء اذا كان ذلك ممكنا</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>قتل تلقائيا اذا كان العالق في انتظار ادخال المستخدم</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت بهدوء</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>انشاء نقطه استعاده قبل الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>يمكنك انشاء نقطه استعاده النظام الى تسجيل النسخ الاحتياطي ، وبعض الاعدادات والملفات. من المستحسن انشاء نقطه استعاده قبل ازاله برامج التشغيل وتطبيقات النظام الهامه.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Drawing;\r\nusing System.Windows.Forms;\r\nusing Klocman;\r\nusing Klocman.Binding.Settings;\r\nusing Klocman.IO;\r\n\r\nnamespace BulkCrapUninstaller.Controls\r\n{\r\n    public partial class UninstallationSettings : UserControl\r\n    {\r\n        public UninstallationSettings()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        protected override void OnLoad(EventArgs e)\r\n        {\r\n            base.OnLoad(e);\r\n        \r\n            if (DesignMode) return;\r\n\r\n            var sb = Properties.Settings.Default.SettingBinder;\r\n        \r\n            // Shutdown blocking not available below Windows Vista\r\n            if (Environment.OSVersion.Version < new Version(6, 0))\r\n                checkBoxShutdown.Enabled = false;\r\n            else\r\n                sb.BindControl(checkBoxShutdown, settings => settings.UninstallPreventShutdown, this);\r\n        \r\n            checkBoxRestorePoint.Enabled = SysRestore.SysRestoreAvailable();\r\n            sb.Bind(x => checkBoxRestorePoint.Checked = x != YesNoAsk.No, () => checkBoxRestorePoint.Checked &&  sb.Settings.MessagesRestorePoints != YesNoAsk.No ? sb.Settings.MessagesRestorePoints : checkBoxRestorePoint.Checked ? YesNoAsk.Ask : YesNoAsk.No,\r\n                    eh => checkBoxRestorePoint.CheckedChanged += eh, eh => checkBoxRestorePoint.CheckedChanged -= eh,\r\n                    settings => settings.MessagesRestorePoints, this);\r\n        \r\n            sb.BindControl(checkBoxConcurrent, settings => settings.UninstallConcurrency, this);\r\n        \r\n            sb.BindControl(checkBoxConcurrentOneLoud, settings => settings.UninstallConcurrentOneLoud, this);\r\n            sb.BindControl(checkBoxManualNoCollisionProtection, settings => settings.UninstallConcurrentDisableManualCollisionProtection, this);\r\n        \r\n            sb.Subscribe(OnMaxCountChanged, settings => settings.UninstallConcurrentMaxCount, this);\r\n            numericUpDownMaxConcurrent.ValueChanged += NumericUpDownMaxConcurrentOnValueChanged;\r\n        \r\n            sb.BindControl(checkBoxBatchSortQuiet, x => x.AdvancedIntelligentUninstallerSorting, this);\r\n            sb.BindControl(checkBoxDiisableProtection, x => x.AdvancedDisableProtection, this);\r\n            sb.BindControl(checkBoxSimulate, x => x.AdvancedSimulate, this);\r\n        \r\n            sb.BindControl(checkBoxAutoKillQuiet, x => x.QuietAutoKillStuck, this);\r\n            sb.BindControl(checkBoxRetryQuiet, x => x.QuietRetryFailedOnce, this);\r\n            sb.BindControl(checkBoxGenerate, x => x.QuietAutomatization, this);\r\n            sb.BindControl(checkBoxGenerateStuck, x => x.QuietAutomatizationKillStuck, this);\r\n            sb.BindControl(checkBoxAutoDaemon, x => x.QuietUseDaemon, this);\r\n        \r\n            sb.Subscribe((sender, args) => checkBoxGenerateStuck.Enabled = args.NewValue, settings => settings.QuietAutomatization, this);\r\n        \r\n            sb.Subscribe(\r\n                (x, y) => checkBoxSimulate.ForeColor = y.NewValue ? Color.OrangeRed : SystemColors.ControlText,\r\n                x => x.AdvancedSimulate, this);\r\n        \r\n            sb.SendUpdates(this);\r\n            Disposed += (x, y) => sb.RemoveHandlers(this);\r\n        }\r\n\r\n        private void NumericUpDownMaxConcurrentOnValueChanged(object sender, EventArgs eventArgs)\r\n        {\r\n            Properties.Settings.Default.UninstallConcurrentMaxCount = (int)numericUpDownMaxConcurrent.Value;\r\n        }\r\n\r\n        private void OnMaxCountChanged(object sender, SettingChangedEventArgs<int> args)\r\n        {\r\n            numericUpDownMaxConcurrent.Value = Math.Clamp(args.NewValue, numericUpDownMaxConcurrent.Minimum, numericUpDownMaxConcurrent.Maximum);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>Simulace odinstalace</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Zakázat ochranu</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Inteligentní třídění odinstalace </value>\r\n  </data>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Zakázat prevenci kolizí, při spuštění\r\nOdinstalovat ručně</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Pouze jedno spuštění odinstalace </value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Automaticky spustit souběžné odinstalace (pokud je to možné)</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Maximální počet spuštění odinstalačních programů:</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Souběžná odinstalace</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Zabránit vypnutí/restartu systému</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Obecná nastavení</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Automaticky ukončit zablokované tiché odinstalace</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Opakovat ještě jednou selhané tiché odinstalace</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Pokud je to možné vytvořit tiché odinstalace</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Automaticky ukončit pokud zablokované čekání vyžaduje příkaz uživatele</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Tichá odinstalace</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Před odinstalováním vytvořte bod obnovení</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>Můžete vytvořit bod obnovení systému, zálohu registru, některá nastavení a soubory. Doporučujeme vytvořit bod obnovení před odebráním ovladačů a důležitých systémových aplikací.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>Deinstallation simulieren</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Schutz deaktivieren</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Intelligente Sortierung</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Allgemeine Einstellungen</value>\r\n  </data>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Ausschalten der Kollisionsverhütung beim manuellen Deinstallieren</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Nur eine Instanz erlauben</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Automatisch Uninstaller gleichzeitig benutzen (wenn möglich)</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Maximale Anzahl der laufenden Uninstaller</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Gleichzeitiges deinstallieren</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Verhinderung des Neustarts/Beenden</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Automatisches Abbrechen hängender leiser Uninstaller</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Einmaliger Versuch leise Deinstaller neu zu starten</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Erzeugen von fehlenden stillen Uninstaller wenn möglich</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Automatisches Beenden eines Uninstallers wenn auf Benutzereingabe gewartet wird</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\r\n    <value>Überwachung \"stiller\" Uninstaller nach Popups oder andere Hinweise zu automatisierung (Start automatisierter Daemon)</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Stille Deinstallation</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Wiederherstellungspunkt vor dem Deinstallieren erzeugen</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>Sie können einen Systemwiederherstellungspunkt für die Backup-Registrierung, einigen Einstellungen und Dateien erstellen. Es wird empfohlen, vor dem Entfernen von Treibern und wichtigen Systemanwendungen einen Wiederherstellungspunkt zu erstellen.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Desactivar la prevención de colisiones cuando se ejecutan desinstaladores manualmente</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Sólo un desinstalador fuerte a la vez</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Ejecutar desinstaladores simultáneamente (si es posible)</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Número máximo de desinstaladores en ejecución:</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalación simultánea</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Prevenir sistema de apagado/reinicio</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Clasificación de desinstalación inteligente</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Desactivar protección</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>Simular desinstalación</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Configuración general</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Eliminar automáticamente los desinstaladores bloqueados</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Reintentar los desinstaladores silenciosos fallidos una vez</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Generar posibles desinstaladores silenciosos si es posible</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Matar si está atascado esperando la entrada del usuario</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalación silenciosa</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Crear un punto de restauración antes de desinstalar</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>Puede crear un punto de restauración del sistema para hacer una copia de seguridad del registro, algunas configuraciones y archivos. Se recomienda crear un punto de restauración antes de eliminar los controladores y las aplicaciones importantes del sistema.</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\r\n    <value>Monitorear los desinstaladores \"silenciosos\" en busca de ventanas emergentes u otros atascos y automatizarlos (ejecutar daemon automatizador)</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>Simuler la désinstallation</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Désactiver la protection</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Tri intelligent des désinstalleurs</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Lancer automatiquement les désinstalleurs de concert (si possible)</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Nombre max de désinstalleurs lancés :</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Seulement un désinstalleur causant à la fois</value>\r\n  </data>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Désactiver la prévention de collision en lançant manuellement les désinstalleurs</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Réglages généraux</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Désinstallation de concert</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Empêcher l'arrêt/redémarrage du système</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Tuer automatiquement les désinstalleurs silencieux bloqués</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Retenter une fois les désinstalleurs silencieux échoués</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Générer si possible les désinstalleurs silencieux manquants</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Tuer automatiquement si bloqués attendant la saisie utilisateur</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Désinstallation silencieuse</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\r\n    <value>Surveiller les popups des désinstalleurs \"silencieux\" et autres attentes et les automatiser (lancer un démon automatiseur)</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Créer un point de restauration avant désinstallation</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>Vous pouvez créer un point de restauration système pour sauvegarder le registre, certains paramètres et fichiers. \r\nIl est recommandé de créer un point de restauration avant de supprimer des pilotes et des applications système importantes.\r\n\r\nSi ce paramètre est grisé, les Points de Restauration sont désactivés ou indisponibles. Dans ce cas, aucun point de restauration ne sera créé !</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Ütközéselhárító kikapcsolása, amikor \r\nkézzel indítja az eltávolítót</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Egyidejűleg csak egy beavatkozást kérő fusson</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítók egyidejű autom. futtatása (ha lehetséges)</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Max. futtatható eltávolítók száma:</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Egyidejű eltávolítás</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Rendszer leállítás/újraindítás megakadályozása</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Intelligens eltávolító kiválasztás</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Védelem kikapcsolása</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>Szimulált eltávolítás</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Általános beállítások</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Automatikus folytatás a beragadt eltávolításkor</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Egyszer ismételje meg a sikertelen eltávolítást</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Hiányzó eltávolító létrehozása, ha lehetséges</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Folytatás beragadt beavatkozási várakozás esetén</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Csendes eltávolítás</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Visszaállítási pont létrehozása az eltávolítás előtt</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>Létrehozhat egy rendszer-visszaállítási pontot a beállításjegyzék, egyes beállítások és fájlok biztonsági mentéséhez. Ajánlott visszaállítási pontot létrehozni az illesztőprogramok és fontos rendszeralkalmazások eltávolítása előtt.</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\r\n    <value>„Csendes” eltávolítók figyelése és automatizálása felugró ablakok vagy egyéb akadozások esetén (automatizáló szolgáltatás futtatása)</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Disabilita la prevenzione di collisione quando si eseguono manualmente i disinstallatori</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Solo un disinstallatore guidato per volta</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Esegue automaticamente e  simultaneamente (se possibile) i disinstallatori</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Numero massimo disinstallatori eseguibili:</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Disinstallazione simultanea</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Previene lo spegnimento/riavvio del sistema</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Ordinamento intelligente disinstallatore</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Disabilita protezione</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>Simula disinstallazione</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Impostazioni generali</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Termina automaticamente disinstallatori silenziosi bloccati</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Esegui nuovamente disinstallatori silenziosi non andati a buon fine</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Genera se possibile disinstallatori silenziosi mancanti</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Termina automaticamente se bloccato in attesa di comandi dell'utente</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Disinstallazione silenziosa</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\r\n    <value>Controlla i popup o le fasi di stallo dei disinstallatori \"silenziosi\" e rendili automatici (esegui demone che li automatizza)</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Crea un punto di ripristino prima della disinstallazione</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>È possibile creare un punto di ripristino del sistema per salvare il registro, alcune configurazioni e file. Ti raccomandiamo prima della rimozione di creare un punto di ripristino.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\n    <value>手動でアンインストーラーを実行する際の衝突防止を無効化</value>\n  </data>\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\n    <value>騒音アンインストーラーは1度に1つだけ</value>\n  </data>\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\n    <value>可能であればアンインストーラーを自動的に並行実行</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>同時に実行できるアンインストーラーの最大数：</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>並行アンインストール</value>\n  </data>\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\n    <value>システムのシャットダウン/再起動を防止</value>\n  </data>\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\n    <value>アンインストール前に復元ポイントを作成</value>\n  </data>\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\n    <value>レジストリ、一部の設定やファイルをバックアップするためにシステム復元ポイントを作成できます。ドライバや重要なシステムアプリケーションを削除する前に、復元ポイントを作成することを推奨します。</value>\n  </data>\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\n    <value>アンインストーラーを賢く並べ替え</value>\n  </data>\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\n    <value>保護を無効化</value>\n  </data>\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\n    <value>アンインストールをシミュレーション</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>一般設定</value>\n  </data>\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\n    <value>フリーズした無音アンインストーラーを自動的に強制終了</value>\n  </data>\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\n    <value>失敗した無音アンインストーラーを1度再試行</value>\n  </data>\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\n    <value>可能であれば不足している無音アンインストーラーを生成</value>\n  </data>\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\n    <value>ユーザー入力待機でフリーズした場合、自動的に強制終了</value>\n  </data>\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\n    <value>ポップアップやその他の停止状態を監視し、それらを自動化する（自動化デーモンを実行）</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>無音アンインストール</value>\n  </data>\n</root>\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Intelligente de-installer sortering</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Beveiliging deactiveren</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>De-installatie simuleren</value>\r\n  </data>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Schakel conflict preventie uit als de-installers handmatig worden uitgevoerd</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Slechts één de-installatie per keer</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Automatisch gelijktijdig uitvoeren van de-installers (indien mogelijk)</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Max. aantal lopende de-installers</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Gelijktijdige de-installatie</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Voorkom afsluiten/herstarten van het systeem</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Algemene instellingen</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Automatisch beëindigen van vastgelopen stille de-installers</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Probeer falende stille de-installers eenmaal opnieuw</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Genereer ontbrekende stille de-installers, indien mogelijk</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Automatisch beëindigen, als een vastgelopen\r\n de-installer wacht op gebruikers invoer</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Onzichtbare de-installatie</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\r\n    <value>Monitor \"stille\" de-installers voor pop-ups of andere vertragingen\r\n en automatiseer deze (start automatiseer daemon)</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Maak een herstelpunt alvorens te de-installeren</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>Het is mogelijk om een systeem herstelpunt maken voor een back-up van het register, sommige instellingen en bestanden. Het wordt aanbevolen om een herstelpunt te maken voor het verwijderen van stuurprogramma's en belangrijke systeem programma's.</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Wyłącz zapobiegania kolizji podczas uruchamiania\r\ndezinstalatorów ręcznie</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Tylko jeden głośny dezinstalator na raz</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Automatycznie uruchom dezinstalatory równolegle</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Maks. liczba działających dezinstalatorów:</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Równoległa deinstalacja</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Zapobiegaj restartowaniu systemu</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Inteligentne sortowanie</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Wyłącz zabezpieczenie</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>Symuluj dezinstalację</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Ustawienia ogólne</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Automatycznie zatrzymuj zawieszone ciche dezinstalatory</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Ponów raz próbę niepowiedzonej cichej dezinstalacji</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Wygeneruj brakujące ciche dezinstalatory jeśli to możliwe</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Automatycznie zakończ jeśli czeka na interwencję użytkownika</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Cicha dezinstalacja</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\r\n    <value>Monitoruj \"ciche\" deinstalatory I zautomatyzuj\r\nnieprzewidziane wyskakujące okiena</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Utwórz punkt przywracania przed odinstalowaniem</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>Możesz utworzyć systemowy punkt przywracania systemu (zachowuje rejestr, niektóre ustawienia i pliki). Zaleca się utworzenie punktu przywracania przed usunięciem sterowników i ważnych aplikacji systemowych.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Desativar a prevenção de colisão ao executar desinstaladores manualmente</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Só um desinstalador de primeiro plano por vez</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Execute automaticamente os desinstaladores de forma simultânea (se possível)</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Número máximo de desinstaladores em execução:</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalação simultânea</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Impedir o desligamento/reinício do sistema</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Classificação inteligente dos desinstaladores</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Desativar proteção</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>Simular desinstalação</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Configurações Gerais</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Finalizar automaticamente os instaladores silenciosos travados</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Tentar novamente os desinstaladores silenciosos que falharam</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Gerar desinstaladores silenciosos em falta, se possível</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Finalizar automaticamente se travar aguardando entrada do usuário</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalação silenciosa</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Criar um ponto de restauração antes de desinstalar</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>Você pode criar  um ponto de restaução do sistema para o backup do registro, algumas configurações e arquivos. É recomendado criar um ponto de restauração antes de remover drivers e aplicações de sistema importantes.</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\r\n    <value>Monitorar desinstaladores \"silenciosos\" para popups e outros travamentos e automatizá-los (Executar daemon de automatização)</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Desactivar a função anticonflito quando se correr manualmente os desinstaladores</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Só um desinstalador de primeiro plano de cada vez</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Correr automaticamente desinstaladores em simultâneo (se possível)</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Número máximo de desisnataldores em função:</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalação simultânea</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Impedir o fecho/reinício do sistema</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Ordenação inteligente do desinstalador </value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Descativar a protecção</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>Simulate uninstallation</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Configurações gerais</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Eliminar automaticamente os desinstaladores de segunto plano bloqueados</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Tentar de novo os desinstaladores de segundo plano fracassados</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Criar os desinstaladores de segundo plano em falta, se possível</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Eliminar automaticamente se bloqueado à espera da intervenção do utilizador</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalação em segundo plano</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Criar um ponto de restauro antes de desinstalar</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>Pode criar um ponto de restauro do sistema para o registo de backup, de algumas configurações e de arquivos. Recomenda-se criar um ponto de restauro antes de remover drivers e aplicativos importantes do sistema.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"groupBox3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"groupBox3.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"checkBoxManualNoCollisionProtection.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"checkBoxManualNoCollisionProtection.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"checkBoxManualNoCollisionProtection.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 95</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"checkBoxManualNoCollisionProtection.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>251, 34</value>\r\n  </data>\r\n  <data name=\"checkBoxManualNoCollisionProtection.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Disable collision prevention when running \r\nuninstallers manually</value>\r\n  </data>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Visible\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxManualNoCollisionProtection.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxManualNoCollisionProtection</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxManualNoCollisionProtection.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxManualNoCollisionProtection.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxManualNoCollisionProtection.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>24, 69</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>208, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Only one loud uninstaller at a time</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxConcurrentOneLoud.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxConcurrentOneLoud</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxConcurrentOneLoud.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxConcurrentOneLoud.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxConcurrentOneLoud.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 22</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>318, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Automatically run uninstallers concurrently (if possible)</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxConcurrent.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxConcurrent</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxConcurrent.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxConcurrent.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxConcurrent.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"numericUpDownMaxConcurrent.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Top, Right</value>\r\n  </data>\r\n  <data name=\"numericUpDownMaxConcurrent.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>258, 45</value>\r\n  </data>\r\n  <data name=\"numericUpDownMaxConcurrent.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"numericUpDownMaxConcurrent.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>80, 23</value>\r\n  </data>\r\n  <data name=\"numericUpDownMaxConcurrent.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;numericUpDownMaxConcurrent.Name\" xml:space=\"preserve\">\r\n    <value>numericUpDownMaxConcurrent</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;numericUpDownMaxConcurrent.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;numericUpDownMaxConcurrent.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;numericUpDownMaxConcurrent.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"label2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label2.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>21, 47</value>\r\n  </data>\r\n  <data name=\"label2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>200, 15</value>\r\n  </data>\r\n  <data name=\"label2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Max number of running uninstallers:</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Name\" xml:space=\"preserve\">\r\n    <value>label2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"groupBox3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 309</value>\r\n  </data>\r\n  <data name=\"groupBox3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>6, 3, 6, 3</value>\r\n  </data>\r\n  <data name=\"groupBox3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>348, 151</value>\r\n  </data>\r\n  <data name=\"groupBox3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Concurrent uninstallation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox3.Name\" xml:space=\"preserve\">\r\n    <value>groupBox3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox3.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox3.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>200, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Prevent system shutdown/restart</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShutdown.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxShutdown</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShutdown.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShutdown.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShutdown.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 28</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>241, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Create a restore point before uninstalling</value>\r\n  </data>\r\n  <metadata name=\"toolTip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>You can create a system restore point to backup registry, some settings and files.\r\nIt's recommended to create a restore point before removing drivers and important system applications.\r\n\r\nIf this setting is grayed out, Restore Points are disabled or unavailable. In this case no restore point will be created!</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRestorePoint.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxRestorePoint</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRestorePoint.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRestorePoint.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRestorePoint.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 53</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>177, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Intelligent uninstaller sorting</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxBatchSortQuiet.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxBatchSortQuiet</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxBatchSortQuiet.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxBatchSortQuiet.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxBatchSortQuiet.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 78</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>122, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Disable protection</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxDiisableProtection.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxDiisableProtection</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxDiisableProtection.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxDiisableProtection.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxDiisableProtection.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 103</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>147, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>Simulate uninstallation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxSimulate.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxSimulate</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxSimulate.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxSimulate.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxSimulate.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 19</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>336, 125</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.WrapContents\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"groupBox2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>6, 3, 6, 3</value>\r\n  </data>\r\n  <data name=\"groupBox2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>348, 147</value>\r\n  </data>\r\n  <data name=\"groupBox2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>General settings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Name\" xml:space=\"preserve\">\r\n    <value>groupBox2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"groupBox1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>242, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Automatically kill stuck quiet uninstallers</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoKillQuiet.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxAutoKillQuiet</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoKillQuiet.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoKillQuiet.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoKillQuiet.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 28</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>207, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Retry failed quiet uninstallers once</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRetryQuiet.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxRetryQuiet</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRetryQuiet.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRetryQuiet.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRetryQuiet.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 53</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>266, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Generate missing quiet uninstallers if possible</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxGenerate.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxGenerate</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxGenerate.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxGenerate.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxGenerate.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 78</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>15, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>290, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Automatically kill if stuck waiting for user input</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxGenerateStuck.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxGenerateStuck</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxGenerateStuck.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxGenerateStuck.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxGenerateStuck.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 103</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>308, 34</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\r\n    <value>Monitor \"silent\" uninstallers for popups or other stalls\r\nand automatize them (run automatizer daemon)</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoDaemon.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxAutoDaemon</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoDaemon.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoDaemon.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoDaemon.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 19</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>336, 140</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.WrapContents\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 147</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>6, 3, 6, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>348, 162</value>\r\n  </data>\r\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Quiet uninstallation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>348, 478</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolTip1.Name\" xml:space=\"preserve\">\r\n    <value>toolTip1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolTip1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolTip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>UninstallationSettings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Отключить предупреждения о конфликтах при ручном удалении</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Только одно шумное удаление за раз</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Автозапуск деинсталляторов одновременно (если возможно)</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Максимум запущенных деинсталляторов:</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Одновременное удаление</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Запрет выключения/перезагрузки системы</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Умная сортировка деинсталляторов</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Отключить защиту</value>\r\n  </data>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>Имитировать деинсталляцию</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Общие настройки</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Автоматически убивать зависшие тихие деинсталляторы</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Повторить один раз попытку тихой деинсталляции</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Генерировать тихую деинсталляцию, если возможно</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Автоубитие застрявших в ожидании ручного ввода</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Тихое удаление</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Создание точки восстановления перед удалением</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>Вы можете создать точку восстановления системы, чтобы сделать резервную копию реестра, некоторых настроек и файлов. Рекомендуется создавать точки восстановления перед удалением драйверов и важных системных приложений.</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\r\n    <value>Мониторить \"тихие\" деинсталляторы на наличие поп-апов или других внезапностей и автоматизировать их (запускать демона-автоматизатора)</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\r\n    <value>Simuliraj odstranitev</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Onemogoči zaščito</value>\r\n  </data>\r\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Inteligentno razvrščanje odstranjevalca</value>\r\n  </data>\r\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\r\n    <value>Onemogoči preprečevanje sporov, ko se  izvajajo ročna odstranjevanja.</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\r\n    <value>Samo en glasnen odstranjevalec naenkrat</value>\r\n  </data>\r\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\r\n    <value>Samodejno zaženi hkratne odstranjevalce (če je mogoče)</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Največje število zagnanih odstranjevalcev:</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Hkratno odstranjevanje</value>\r\n  </data>\r\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\r\n    <value>Prepreči ustavitev/ponovni zagon sistema</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Splošne nastavitve</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Samodejno uniči obtičale tihe odstranjevalce</value>\r\n  </data>\r\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Enkrat ponovi spodletele tihe odstranjevalce</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\r\n    <value>Če je mogoče, ustvari manjkajoče tihe odstranjevalce</value>\r\n  </data>\r\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\r\n    <value>Samodejno uniči, če obtičalo čakanje zahteva vnos uporabnika</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Tiho odstranjevanje</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\r\n    <value>Nadziraj pojavna okna \"tihih\" odstranjevalcev ali druge stojnice in jih avtomatiziraj (zaženi demona za avtomatizacijo)</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\r\n    <value>Preden odstranite program, ustvarite obnovitveno točko</value>\r\n  </data>\r\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\r\n    <value>Ustvarite lahko obnovitveno točko sistema za varnostni kopirni register, nekatere nastavitve in datoteke. Pred odstranjevanjem gonilnikov in pomembnih sistemskih aplikacij priporočamo, da ustvarite obnovitveno točko.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\n    <value>Inaktivera kollisionsförebyggning när du kör avinstallationsprogram manuellt.</value>\n  </data>\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\n    <value>Endast en synlig avinstallationsprocess åt gången</value>\n  </data>\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\n    <value>Automatisk samtidig körning av avinstallationsprogram (om möjligt)</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Max antal pågående avinstallationsprogram:</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>Samtidig avinstallation</value>\n  </data>\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\n    <value>Förhindra systemavstängning/omstart</value>\n  </data>\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\n    <value>Skapa en återställningspunkt innan avinstallation</value>\n  </data>\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\n    <value>Du kan skapa en systemåterställningspunkt för att säkerhetskopiera register, vissa inställningar och filer. Det rekommenderas att skapa en återställningspunkt innan du tar bort drivrutiner och viktiga systemapplikationer.</value>\n  </data>\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\n    <value>Intelligent sortering av avinstallationsprogram</value>\n  </data>\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\n    <value>Inaktivera skydd</value>\n  </data>\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\n    <value>Simulera avinstallation</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Allmänna inställningar</value>\n  </data>\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\n    <value>Automatisk stängning a frysta tysta avinstallationsprogram</value>\n  </data>\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\n    <value>Försök starta om misslyckade tysta avinstallationsprogram en gång</value>\n  </data>\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\n    <value>Generera saknade tysta avinstallationsprogram om möjligt</value>\n  </data>\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\n    <value>Automatisk avslutning vid väntan på användarindata</value>\n  </data>\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\n    <value>Automatisera tysta popup-fönster för avinstallation via daemon.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Tyst avinstallation</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\n    <value>Kaldırıcıları el ile çalıştırırken çakışma önleme özelliğini devre dışı bırak</value>\n  </data>\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\n    <value>Tek seferde sadece bir kaldırma</value>\n  </data>\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\n    <value>Kaldırıcıları otomatik olarak eşzamanlı olarak çalıştırın (eğer mümkünse)</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Maksimum sayıda çalışan kaldırıcı:</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>Eşzamanlı kaldırma</value>\n  </data>\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\n    <value>Sistem kapatmayı / yeniden başlatmayı engelle</value>\n  </data>\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\n    <value>Akıllı kaldırıcı sıralama</value>\n  </data>\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\n    <value>Korumayı devre dışı bırak</value>\n  </data>\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\n    <value>Kaldırma simülasyonu</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Genel ayarlar</value>\n  </data>\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\n    <value>Kilitlenmiş sessiz kaldırıcıları otomatik olarak sonlandır</value>\n  </data>\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\n    <value>Sessiz kaldırma girişimini bir kez daha tekrarlayın</value>\n  </data>\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\n    <value>Mümkünse sessiz kaldırma oluştur</value>\n  </data>\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\n    <value>Kullanıcı girişi için beklemede kaldığında otomatik olarak sonlandır</value>\n  </data>\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\n    <value>Pop-up veya diğer tezgahlar için \"sessiz\" kaldırıcılar izleyin ve onları otomatikleştirin (otomatikleştirici daemon çalıştır)</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Sessiz kaldırma</value>\n  </data>\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\n    <value>Kaldırmadan önce bir geri yükleme noktası oluşturun</value>\n  </data>\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\n    <value>Kayıt defterini, bazı ayarları ve dosyaları yedeklemek için bir sistem geri yükleme noktası oluşturabilirsiniz. Sürücüleri ve önemli sistem uygulamalarını kaldırmadan önce bir geri yükleme noktası oluşturmanız önerilir.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\n    <value>Tắt tính năng chống xung đột khi chạy trình gỡ\ncài đặt theo cách thủ công</value>\n  </data>\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\n    <value>Mỗi lần chỉ chạy một trình gỡ cài đặt</value>\n  </data>\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\n    <value>Tự động chạy đồng thời các trình gỡ cài đặt (nếu có thể)</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Số trình gỡ cài đặt tối đa chạy đồng thời:</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt đồng thời</value>\n  </data>\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\n    <value>Ngăn chặn việc tắt/khởi động lại hệ thống</value>\n  </data>\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\n    <value>Tạo điểm khôi phục trước khi gỡ cài đặt</value>\n  </data>\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\n    <value>Bạn có thể sao lưu registry, một số cài đặt và tệp bằng cách tạo điểm khôi phục hệ thống. Bạn nên tạo điểm khôi phục trước khi xóa driver và các ứng dụng hệ thống quan trọng.</value>\n  </data>\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\n    <value>Sắp xếp trình gỡ cài đặt một cách thông minh</value>\n  </data>\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\n    <value>Vô hiệu hóa bảo vệ</value>\n  </data>\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\n    <value>Mô phỏng quá trình gỡ cài đặt</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Cài đặt chung</value>\n  </data>\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\n    <value>Tự động huỷ các trình gỡ cài đặt âm thầm bị lỗi</value>\n  </data>\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\n    <value>Thử lại các trình gỡ cài đặt âm thầm không thành công một lần nữa</value>\n  </data>\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\n    <value>Tạo trình gỡ cài đặt âm thầm bị thiếu nếu có thể</value>\n  </data>\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\n    <value>Tự động huỷ trình gỡ cài đặt nếu nó bị kẹt khi chờ thao tác của người dùng</value>\n  </data>\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\n    <value>Giám sát các trình gỡ cài đặt \"im lặng\" bật lên cửa sổ\nkhông mong muốn hoặc treo máy, và tự động hóa chúng\n(chạy trình nền tự động)</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt âm thầm</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\n    <value>手动运行卸载程序时禁用冲突保护</value>\n  </data>\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\n    <value>一次一个交互卸载程序</value>\n  </data>\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\n    <value>自动同时运行卸载程序（如果可能）</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>同时运行的卸载程序最大数量:</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>同时卸载</value>\n  </data>\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\n    <value>防止系统关机/重启</value>\n  </data>\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\n    <value>卸载前创建还原点</value>\n  </data>\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\n    <value>你可以创建一个系统还原点来备份注册表、一些设置和文件。建议在删除驱动程序和重要的系统应用程序之前创建一个还原点。</value>\n  </data>\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\n    <value>智能卸载程序排序</value>\n  </data>\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\n    <value>禁用保护</value>\n  </data>\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\n    <value>模拟卸载</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>常规设置</value>\n  </data>\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\n    <value>自动终止卡死的静默卸载程序</value>\n  </data>\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\n    <value>重试一次失败的静默卸载程序</value>\n  </data>\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\n    <value>如果可能，生成丢失的静默卸载程序</value>\n  </data>\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\n    <value>如果在等待用户输入时卡住自动终止</value>\n  </data>\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\n    <value>监视“静默”卸载程序的弹出窗口或其他停滞并使其自动化（运行自动化程序守护进程）</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>静默卸载</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/Settings/UninstallationSettings.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxManualNoCollisionProtection.Text\" xml:space=\"preserve\">\n    <value>手動執行移除軟體時禁止衝突保護</value>\n  </data>\n  <data name=\"checkBoxConcurrentOneLoud.Text\" xml:space=\"preserve\">\n    <value>一次一種交互移除軟體</value>\n  </data>\n  <data name=\"checkBoxConcurrent.Text\" xml:space=\"preserve\">\n    <value>自動運行移除軟體(如果可以)</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>同時執行移除軟體的最大數量：</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>同時移除</value>\n  </data>\n  <data name=\"checkBoxShutdown.Text\" xml:space=\"preserve\">\n    <value>防止系統關機/重啟</value>\n  </data>\n  <data name=\"checkBoxRestorePoint.Text\" xml:space=\"preserve\">\n    <value>移除前建立系統還原點</value>\n  </data>\n  <data name=\"checkBoxRestorePoint.ToolTip\" xml:space=\"preserve\">\n    <value>你可以建立一個系統還原點來備份機碼、一些設定和文件。建議在刪除驅動程式和重要的系統應用程式之前創一個還原點。</value>\n  </data>\n  <data name=\"checkBoxBatchSortQuiet.Text\" xml:space=\"preserve\">\n    <value>智慧排序移除軟體</value>\n  </data>\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\n    <value>關閉保護</value>\n  </data>\n  <data name=\"checkBoxSimulate.Text\" xml:space=\"preserve\">\n    <value>模擬移除</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>一般設定</value>\n  </data>\n  <data name=\"checkBoxAutoKillQuiet.Text\" xml:space=\"preserve\">\n    <value>自動結束沒有回應的最小化移除軟體</value>\n  </data>\n  <data name=\"checkBoxRetryQuiet.Text\" xml:space=\"preserve\">\n    <value>重新執行失敗的最小化移除軟體</value>\n  </data>\n  <data name=\"checkBoxGenerate.Text\" xml:space=\"preserve\">\n    <value>如果可以，產生遺失最小化移除軟體</value>\n  </data>\n  <data name=\"checkBoxGenerateStuck.Text\" xml:space=\"preserve\">\n    <value>自動結束卡在等待使用者輸入的程式</value>\n  </data>\n  <data name=\"checkBoxAutoDaemon.Text\" xml:space=\"preserve\">\n    <value>監看\"最小化\"移除軟體的彈出視窗或其他程序並執行自動化(執行自動化程式保護服務)</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>最小化移除</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/TabControlWithoutHeader.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BulkCrapUninstaller.Controls\r\n{\r\n    public class TabControlWithoutHeader : TabControl\r\n    {\r\n        public TabControlWithoutHeader()\r\n        {\r\n            if (!DesignMode) Multiline = true;\r\n        }\r\n\r\n        protected override void WndProc(ref Message m)\r\n        {\r\n            if (m.Msg == 0x1328 && !DesignMode)\r\n                m.Result = new IntPtr(1);\r\n            else\r\n                base.WndProc(ref m);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class UninstallConfirmation\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UninstallConfirmation));\r\n            objectListView1 = new BrightIdeasSoftware.ObjectListView();\r\n            olvColumnName = new BrightIdeasSoftware.OLVColumn();\r\n            olvColumnEnabled = new BrightIdeasSoftware.OLVColumn();\r\n            olvColumnQuiet = new BrightIdeasSoftware.OLVColumn();\r\n            olvColumnInstallLocation = new BrightIdeasSoftware.OLVColumn();\r\n            panel1 = new System.Windows.Forms.Panel();\r\n            buttonSmartSort = new System.Windows.Forms.Button();\r\n            flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\r\n            labelInfo = new System.Windows.Forms.Label();\r\n            labelInfo2 = new System.Windows.Forms.Label();\r\n            pictureBox1 = new System.Windows.Forms.PictureBox();\r\n            ((System.ComponentModel.ISupportInitialize)objectListView1).BeginInit();\r\n            panel1.SuspendLayout();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();\r\n            SuspendLayout();\r\n            // \r\n            // objectListView1\r\n            // \r\n            objectListView1.AllColumns.Add(olvColumnName);\r\n            objectListView1.AllColumns.Add(olvColumnEnabled);\r\n            objectListView1.AllColumns.Add(olvColumnQuiet);\r\n            objectListView1.AllColumns.Add(olvColumnInstallLocation);\r\n            objectListView1.CellEditUseWholeCell = false;\r\n            objectListView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { olvColumnName, olvColumnEnabled, olvColumnQuiet, olvColumnInstallLocation });\r\n            resources.ApplyResources(objectListView1, \"objectListView1\");\r\n            objectListView1.FullRowSelect = true;\r\n            objectListView1.GridLines = true;\r\n            objectListView1.Name = \"objectListView1\";\r\n            objectListView1.ShowGroups = false;\r\n            objectListView1.ShowItemToolTips = true;\r\n            objectListView1.UseCompatibleStateImageBehavior = false;\r\n            objectListView1.View = System.Windows.Forms.View.Details;\r\n            // \r\n            // olvColumnName\r\n            // \r\n            resources.ApplyResources(olvColumnName, \"olvColumnName\");\r\n            // \r\n            // olvColumnEnabled\r\n            // \r\n            olvColumnEnabled.CheckBoxes = true;\r\n            olvColumnEnabled.Hideable = false;\r\n            resources.ApplyResources(olvColumnEnabled, \"olvColumnEnabled\");\r\n            // \r\n            // olvColumnQuiet\r\n            // \r\n            olvColumnQuiet.CheckBoxes = true;\r\n            resources.ApplyResources(olvColumnQuiet, \"olvColumnQuiet\");\r\n            // \r\n            // olvColumnInstallLocation\r\n            // \r\n            olvColumnInstallLocation.FillsFreeSpace = true;\r\n            resources.ApplyResources(olvColumnInstallLocation, \"olvColumnInstallLocation\");\r\n            // \r\n            // panel1\r\n            // \r\n            panel1.Controls.Add(buttonSmartSort);\r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // buttonSmartSort\r\n            // \r\n            resources.ApplyResources(buttonSmartSort, \"buttonSmartSort\");\r\n            buttonSmartSort.Name = \"buttonSmartSort\";\r\n            buttonSmartSort.UseVisualStyleBackColor = true;\r\n            buttonSmartSort.Click += buttonSort_Click;\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Controls.Add(labelInfo);\r\n            flowLayoutPanel1.Controls.Add(labelInfo2);\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // labelInfo\r\n            // \r\n            resources.ApplyResources(labelInfo, \"labelInfo\");\r\n            labelInfo.Name = \"labelInfo\";\r\n            // \r\n            // labelInfo2\r\n            // \r\n            resources.ApplyResources(labelInfo2, \"labelInfo2\");\r\n            labelInfo2.Name = \"labelInfo2\";\r\n            // \r\n            // pictureBox1\r\n            // \r\n            resources.ApplyResources(pictureBox1, \"pictureBox1\");\r\n            pictureBox1.Image = Properties.Resources.list_reorder;\r\n            pictureBox1.Name = \"pictureBox1\";\r\n            pictureBox1.TabStop = false;\r\n            // \r\n            // UninstallConfirmation\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            Controls.Add(pictureBox1);\r\n            Controls.Add(objectListView1);\r\n            Controls.Add(flowLayoutPanel1);\r\n            Controls.Add(panel1);\r\n            Name = \"UninstallConfirmation\";\r\n            ((System.ComponentModel.ISupportInitialize)objectListView1).EndInit();\r\n            panel1.ResumeLayout(false);\r\n            panel1.PerformLayout();\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private BrightIdeasSoftware.ObjectListView objectListView1;\r\n        private System.Windows.Forms.Panel panel1;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;\r\n        private System.Windows.Forms.Label labelInfo;\r\n        private BrightIdeasSoftware.OLVColumn olvColumnEnabled;\r\n        private BrightIdeasSoftware.OLVColumn olvColumnQuiet;\r\n        private BrightIdeasSoftware.OLVColumn olvColumnName;\r\n        private BrightIdeasSoftware.OLVColumn olvColumnInstallLocation;\r\n        private System.Windows.Forms.Button buttonSmartSort;\r\n        private System.Windows.Forms.PictureBox pictureBox1;\r\n        private System.Windows.Forms.Label labelInfo2;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>تغيير الترتيب اذا تم تمكين الغاء التثبيت المتزامن.BCU يعتمد الترتيب الاولي على اعدادات الغاء التثبيت ، ولكن يمكن تغييره عن طريق سحب المادة. ملاحظه: يمكن ل</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>هذه هي قائمه من التطبيقات التي سيتم الغاء تثبيتها ، من اجل من اعلى الى اسفل. اذا قمت بالغاء تحديد الحقل \"الغاء التثبيت\" ، لن يتم الغاء تثبيت التطبيق. اذا لم يكن التثبيت بهدوء متوفرا لمادة ، فلا يمكن التحقق منه</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\r\n    <value>فرز ذكي</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>موقع التثبيت </value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\r\n    <value>بهدوء</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>اسم الغاء التثبيت</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing BrightIdeasSoftware;\r\nusing BulkCrapUninstaller.Functions;\r\nusing UninstallTools.Uninstaller;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class UninstallConfirmation : UserControl\r\n    {\r\n        public UninstallConfirmation()\r\n        {\r\n            InitializeComponent();\r\n\r\n            olvColumnEnabled.AspectGetter = rowObject => ((ConfirmationEntry) rowObject).Enabled;\r\n            olvColumnEnabled.AspectPutter = (rowObject, value) => ((ConfirmationEntry) rowObject).Enabled = (bool) value;\r\n\r\n            olvColumnQuiet.AspectGetter = rowObject => ((ConfirmationEntry) rowObject).Entry.IsSilentPossible;\r\n            olvColumnQuiet.AspectPutter = (rowObject, value) =>\r\n            {\r\n                var entry = ((ConfirmationEntry) rowObject).Entry;\r\n                entry.IsSilentPossible = (bool) value && entry.UninstallerEntry.QuietUninstallPossible;\r\n            };\r\n\r\n            olvColumnInstallLocation.AspectGetter =\r\n                rowObject => ((ConfirmationEntry) rowObject).Entry.UninstallerEntry.InstallLocation;\r\n            olvColumnName.AspectGetter = rowObject => ((ConfirmationEntry) rowObject).Entry.UninstallerEntry.DisplayName;\r\n\r\n            objectListView1.DragSource = new SimpleDragSource();\r\n            var rearrangingDropSink = new RearrangingDropSink(false);\r\n            objectListView1.DropSink = rearrangingDropSink;\r\n            rearrangingDropSink.Dropped += (sender, args) =>\r\n            {\r\n                objectListView1.PrimarySortColumn = null;\r\n                objectListView1.Sort();\r\n            };\r\n\r\n            // Bug - sorting by column doesn't change the actual order, and disabling sorting doesn't do anything \r\n            objectListView1.HeaderStyle = ColumnHeaderStyle.Nonclickable;\r\n        }\r\n\r\n        private IEnumerable<ConfirmationEntry> Entries => (objectListView1.Objects ?? Enumerable.Empty<ConfirmationEntry>()).Cast<ConfirmationEntry>();\r\n\r\n        private void buttonSort_Click(object sender, EventArgs e)\r\n        {\r\n            objectListView1.PrimarySortColumn = null;\r\n            var results = AppUninstaller.SortIntelligently(Entries, entry => entry.Entry);\r\n            objectListView1.SetObjects(results.ToList());\r\n        }\r\n\r\n        public IEnumerable<BulkUninstallEntry> GetResults()\r\n        {\r\n            return Entries.Where(x => x.Enabled).Select(x => x.Entry);\r\n        }\r\n\r\n        public void SetRelatedApps(IEnumerable<BulkUninstallEntry> items)\r\n        {\r\n            var entries = items.Select(x => new ConfirmationEntry(x));\r\n\r\n            objectListView1.SetObjects(entries.ToList());\r\n        }\r\n\r\n        private sealed class ConfirmationEntry\r\n        {\r\n            public ConfirmationEntry(BulkUninstallEntry entry)\r\n            {\r\n                Entry = entry;\r\n                Enabled = true;\r\n            }\r\n\r\n            public bool Enabled { get; set; }\r\n\r\n            public BulkUninstallEntry Entry { get; }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Pořadí závisí na Vašem nastavení odinstalace, ale lze jej změnit přetažením položky. Poznámka: BCU můžete změnit pořadí, pokud je povolena souběžná odinstalace.</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Seznam aplikací, které budou odinstalovány, a to shora dolů. Pokud zrušíte výběr \"Odinstalovat\", aplikace nebude odinstalována. Není-li k dispozici tichá odinstalace pro položku, nelze ji zkontrolovat</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\r\n    <value>Inteligentní třídění</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Místo instalace</value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Potichu</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalovat</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Název odinstalátoru</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>Die erste Sortierung beruht auf deinen Uninstall Optionen, kann aber durch Ziehen der Items angepasst werden. Bemerkung: BCU kann die Reihenfolge ändern wenn gleichzeitiges Deinstallieren angeklickt ist.</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>Dies ist eine Liste der Programme, welche deinstalliert werden in der Reihenfolge von oben nach unten. Wenn das Uninstall Feld nicht angeklickt ist, wird das betreffende Programm nicht deinstalliert. Wenn eine stille Deinstallierung für ein Programm nicht möglich ist, kann dieses nicht überprüft werden.</value>\n  </data>\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\n    <value>Intelligentes Sortieren</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>Ort der Installierung</value>\n  </data>\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\n    <value>Still</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>Uninstall</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Names des Uninstallers</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>El orden inicial depende de la configuración de desinstalación, pero se puede cambiar arrastrando los elementos. Nota: BCU puede cambiar el orden si la desinstalación simultánea está habilitada.</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Esta es una lista de aplicaciones que se desinstalarán, en orden de arriba a abajo. Si anula la selección del campo \"Desinstalar\", la aplicación no se desinstalará. Si la desinstalación silenciosa no está disponible para un elemento, no se puede comprobar</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\r\n    <value>Clasificación inteligente</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Ubicación de la instalación</value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Silencioso</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nombre del desinstalador</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>L'ordre initial dépends de vos réglages de désinstallation, mais il peut être changé en faisant glisser les éléments. Note : BCU peut changer l'ordre si la désinstallation concurrente est activée.</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Ceci est une liste d'applications qui seront désinstallées dans l'ordre, de haut en bas. Si vous désélectionnez le champ \"Désinstaller\", l'application ne sera pas désinstallée. Si l'installation silencieuse n'est pas disponible pour un élément, elle ne peut pas ête cochée.</value>\r\n    <comment>jp translator: I don't know the difference between Quiet Uninstall and Silent Uninstall. Can I translate them to mean the same meaning? At this stage, we are trying to separate the two, but Quiet Uninstall is not very familiar to Japanese people.</comment>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\r\n    <value>Tri intelligent</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Emplacement d'installation</value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Silencieux</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nom de désinstalleur</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>A kezdeti sorrend az eltávolítási beállításoktól függ, de az elemek áthúzásával megváltoztatható. Megjegyzés: A BCU megváltoztathatja a sorrendet, ha az egyidejű eltávolítás engedélyezve van.</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>Ez az eltávolítandó alkalmazások listája, felülről lefelé haladva. Ha az „Eltávolítás” mezőt nem jelöli be, az alkalmazás nem lesz eltávolítva. Ha egy elemhez nem áll rendelkezésre a csendes eltávolítás, az nem jelölhető be</value>\n    <comment>jp translator: I don't know the difference between Quiet Uninstall and Silent Uninstall. Can I translate them to mean the same meaning? At this stage, we are trying to separate the two, but Quiet Uninstall is not very familiar to Japanese people.</comment>\n  </data>\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\n    <value>Intelligens rendezés</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>Telepítés helye</value>\n  </data>\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\n    <value>Csendes</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>Eltávolítás</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Eltávolító neve</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>L'ordine iniziale dipende dalla configurazione di disinstallazione, ma può essere modificato trascinando gli elementi. Nota: se è abilitata la disinstallazione simultanea BC può cambiare l'ordine di disinstallazione.</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Questa è una elenco di applicazioni che saranno disinstallate, ordinatamente dall'inizio alla fine. Se deselezioni l'opzione \"Disinstalla\" l'applicazione non sarà disinstallata. Se la disinstallazione silenziosa non è disponibile per un elemento non potrà essere selezionata.</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\r\n    <value>Ordinamento intelligente</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Cartella installazione</value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Silenzioso</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Disinstalla</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nome disinstallatore</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>初期の順序はアンインストール設定に依存しますが、項目をドラッグすることで変更できます。注意：同時アンインストールが有効な場合、BCUが順序を変更することがあります。</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>これは、上から下に向かってアンインストールされるアプリケーションのリストです。「アンインストール」フィールドの選択を外すと、そのアプリケーションはアンインストールされません。アイテムに対して静かなアンインストールが利用できない場合、そのチェックは入れられません。</value>\n    <comment>jp translator: I don't know the difference between Quiet Uninstall and Silent Uninstall. Can I translate them to mean the same meaning? At this stage, we are trying to separate the two, but Quiet Uninstall is not very familiar to Japanese people.</comment>\n  </data>\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\n    <value>インテリジェント選択</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>インストール場所</value>\n  </data>\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\n    <value>静かなアンインストール</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>アンインストール</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>アンインストーラー名</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>De-installer naam</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>De-installeer</value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Stil</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Installatie locatie</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\r\n    <value>Intelligent sorteren</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Dit is een lijst met programma's die zullen worden gede-installeerd, volgordelijk van boven naar beneden. Wanneer u het \"De-installeer\" veld deselecteerd, wordt het programma niet gede-installeerd. Als stille de-installatie niet beschikbaar is voor een onderdeel, kan dit niet worden aangevinkt.</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>De initiële volgorde hangt af van uw de-installatie instellingen, maar dit kan worden gewijzigd door de onderdelen te verslepen. Opm.: BCU kan de volgorde wijzigen als gelijktijdige de-installatie is ingeschakeld.</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Początkowa kolejność zależy od ustawień odinstalowywania, ale można ją zmienić przeciągając elementy. Uwaga: BCU może zmienić kolejność jeśli jest włączona równoczesna dezinstalacja.</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Poniżej znajduje się lista aplikacji, które zostaną odinstalowane, w kolejności od góry do dołu. Jeśli odznaczysz pole „Odinstaluj”, aplikacja nie zostanie odinstalowana. Jeśli cicha dezinstalacja nie jest dostępna, nie można jej zaznaczyć.</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\r\n    <value>Inteligentne sortowanie</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Miejsce zainstalowania</value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Cicho</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nazwa dezinstalatora</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>A ordem inicial depende das configurações de desinstalação, mas pode ser alterada arrastando os itens. Nota: O BCU pode alterar a ordem se a desinstalação simultânea estiver ativada.</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Esta é uma lista de aplicativos que serão desinstalados, ordenados do início ao fim. Se o campo \"Desinstalar\" for desmarcado, o aplicativo não será desinstalado. Se a desinstalação silenciosa não estiver disponível para um item, ela não poderá ser selecionada</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\r\n    <value>Classificação inteligente</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Local de desinstalação</value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Silencioso</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nome do desinstalador</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>A ordem inicial depende das configurações de desinstalação, mas pode ser alterada arrastando os itens. Nota: O BCU pode alterar a ordem se a desinstalação simultânea estiver activada.</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Esta é uma lista de aplicativos que serão desinstalados, do princípio ao fim. Se desmarcar o campo \"Desinstalar\", o aplicativo não será desinstalado. Se a desinstalação em segundo plano não estiver disponível para um item, não poderá ser verificada</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\r\n    <value>Classificação inteligente</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Local de desinstalação</value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Silencioso</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nome do desinstalador</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Uninstaller name</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"olvColumnName.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>250</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"olvColumnEnabled.TextAlign\" type=\"System.Windows.Forms.HorizontalAlignment, System.Windows.Forms\">\r\n    <value>Center</value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Quiet</value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.TextAlign\" type=\"System.Windows.Forms.HorizontalAlignment, System.Windows.Forms\">\r\n    <value>Center</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Install location</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>246</value>\r\n  </data>\r\n  <data name=\"objectListView1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"objectListView1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 79</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"objectListView1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"objectListView1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>722, 217</value>\r\n  </data>\r\n  <data name=\"objectListView1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListView1.Name\" xml:space=\"preserve\">\r\n    <value>objectListView1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListView1.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.ObjectListView, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListView1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListView1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>614, 7</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>108, 30</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\r\n    <value>Intelligent sort</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSmartSort.Name\" xml:space=\"preserve\">\r\n    <value>buttonSmartSort</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSmartSort.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSmartSort.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSmartSort.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 296</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 7, 0, 0</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>722, 37</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelInfo.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelInfo.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 0</value>\r\n  </data>\r\n  <data name=\"labelInfo.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelInfo.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>58, 0, 0, 5</value>\r\n  </data>\r\n  <data name=\"labelInfo.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>694, 35</value>\r\n  </data>\r\n  <data name=\"labelInfo.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>This is a list of applications that will be uninstalled, in order from top to bottom. If you deselect the \"Uninstall\" field, the application will not be uninstalled. If quiet uninstallation is not available for an item, it can't be checked on</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo.Name\" xml:space=\"preserve\">\r\n    <value>labelInfo</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelInfo2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 35</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>58, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>699, 30</value>\r\n  </data>\r\n  <data name=\"labelInfo2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>The initial order depends on your uninstall settings, but it can be changed by dragging the items. Note: BCU can change the order if concurrent uninstallation is enabled.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo2.Name\" xml:space=\"preserve\">\r\n    <value>labelInfo2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo2.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelInfo2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 7</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>0, 58</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 7</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>722, 72</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.WrapContents\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"pictureBox1.BackgroundImageLayout\" type=\"System.Windows.Forms.ImageLayout, System.Windows.Forms\">\r\n    <value>Center</value>\r\n  </data>\r\n  <data name=\"pictureBox1.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 3</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>58, 58</value>\r\n  </data>\r\n  <data name=\"pictureBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>11</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Name\" xml:space=\"preserve\">\r\n    <value>pictureBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 7</value>\r\n  </data>\r\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>736, 340</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnName.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnName</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnName.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnEnabled.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnEnabled</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnEnabled.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnQuiet.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnQuiet</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnQuiet.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnInstallLocation.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnInstallLocation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnInstallLocation.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>UninstallConfirmation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Первоначальный порядок зависит от настроек удаления, но его можно изменить, перетаскивая элементы. Примечание: BCU может изменить порядок, если включена одновременная деинсталляция.</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>Это список приложений, которые будут удалены в порядке сверху вниз. Если Вы отмените выбор в поле \"Деинсталляция\", приложение не будет удалено. Если тихая деинсталляция недоступна для элемента, его нельзя выбрать.</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\r\n    <value>Интеллектуальная сортировка</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Место установки</value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Тихо</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Деинсталляция</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Имя деинсталлятора</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\r\n    <value>Začetno zaporedje je odvisno od vaših nastavitev za odstranitev, vendar ga lahko spremenite tako, da povlečete vnose. Opomba: BCU lahko spremeni vrstni red, če je omogočeno sočasno odstranjevanje.</value>\r\n  </data>\r\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\r\n    <value>To je seznam aplikacij, ki bodo odstranjene, v zaporedju od zgoraj navzdol. Če počistite polje »Odstrani«, aplikacija ne bo odstranjena. Če za vnos ni na voljo tiho odstranjevanje, ga ni mogoče vklopiti</value>\r\n  </data>\r\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\r\n    <value>Inteligentno razvrsti</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Mesto namestitve</value>\r\n  </data>\r\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\r\n    <value>Tiho</value>\r\n  </data>\r\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\r\n    <value>Odstrani</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Ime odstranjevalca</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>Den initiala ordningen beror på dina avinstallationsinställningar, men den kan ändras genom att dra objekten. OBS: BCU kan ändra ordningen om samtidig avinstallation är aktiverad.</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>Detta är en lista över appar som kommer att avinstalleras, i ordning från topp till botten. Om du avmarkerar fältet \"Avinstallera\" kommer applikationen inte att avinstalleras. Om tyst avinstallation inte är tillgängligt för ett objekt, går det inte att markera.</value>\n    <comment>jp translator: I don't know the difference between Quiet Uninstall and Silent Uninstall. Can I translate them to mean the same meaning? At this stage, we are trying to separate the two, but Quiet Uninstall is not very familiar to Japanese people.</comment>\n  </data>\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\n    <value>Intelligent sortering</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>Installationsmapp</value>\n  </data>\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\n    <value>Tyst</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>Avinstallera</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Avinstallationsnamn</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>İlk işlem, kaldırma ayarlarınıza bağlıdır, ancak öğeleri sürükleyerek değiştirilebilir. Not: Eşzamanlı kaldırma etkinse BCU işlemi değiştirebilir.</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>Bu, yukarıdan aşağıya doğru sırayla kaldırılacak uygulamaların bir listesidir. \"Kaldır\" alanının seçimini kaldırırsanız, uygulama kaldırılmayacaktır. Bir öğe için sessiz kaldırma mevcut değilse, kontrol edilemez</value>\n  </data>\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\n    <value>Akıllı sıralama</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>Kurulum yeri</value>\n  </data>\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\n    <value>Sessiz</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>Kaldır</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Kaldırıcı adı</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>Thứ tự sắp xếp ban đầu tùy thuộc vào tuỳ chọn gỡ cài đặt của bạn nhưng có thể thay đổi bằng cách kéo các mục. Lưu ý: BCU có thể thay đổi thứ tự nếu bật tính năng gỡ cài đặt đồng thời.</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>Đây là danh sách các ứng dụng sẽ được gỡ cài đặt, theo thứ tự từ trên xuống dưới. Nếu bạn bỏ tích trường \"Gỡ cài đặt\", ứng dụng sẽ không được gỡ cài đặt. Nếu tính năng \"Gỡ cài đặt âm thầm\" không khả dụng cho một ứng dụng thì bạn không thể tích vào trường này.</value>\n    <comment>jp translator: I don't know the difference between Quiet Uninstall and Silent Uninstall. Can I translate them to mean the same meaning? At this stage, we are trying to separate the two, but Quiet Uninstall is not very familiar to Japanese people.</comment>\n  </data>\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\n    <value>Sắp xếp thông minh</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>Vị trí cài đặt</value>\n  </data>\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt âm thầm</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Tên trình gỡ cài đặt</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>初始顺序取决于你的卸载设置，但可以通过拖动项目来更改。注意：如果启用同时卸载，BCU可能更改顺序。</value>\n  </data>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>这是将卸载的应用程序列表，从上到下。如果取消选择“卸载”字段，则不会卸载应用程序。如果某个项目不能静默卸载，则不能选择</value>\n  </data>\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\n    <value>智能排序</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>安装位置</value>\n  </data>\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\n    <value>静默</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>卸载</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>卸载程序名称</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Controls/UninstallConfirmation.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelInfo.Text\" xml:space=\"preserve\">\n    <value>這是將移除的應用程式列表，從上到下。如果取消選擇\"移除\"字段，則不會移除應用程式。如果某個項目不能最小化移除，則不能選擇</value>\n  </data>\n  <data name=\"buttonSmartSort.Text\" xml:space=\"preserve\">\n    <value>智慧排序</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>安裝位置</value>\n  </data>\n  <data name=\"olvColumnQuiet.Text\" xml:space=\"preserve\">\n    <value>安靜</value>\n  </data>\n  <data name=\"olvColumnEnabled.Text\" xml:space=\"preserve\">\n    <value>解除安裝</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>移除程式名稱</value>\n  </data>\n  <data name=\"labelInfo2.Text\" xml:space=\"preserve\">\n    <value>初始移除順序取決於你的解除安裝設定，但可以透過拖曳項目來變更。請注意：如果啟用同時解除安裝時，BCU 可以變更順序。</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/CultureConfigurator.cs",
    "content": "﻿using BulkCrapUninstaller.Properties;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Threading;\r\n\r\nnamespace BulkCrapUninstaller\r\n{\r\n    public static class CultureConfigurator\r\n    {\r\n        private static IEnumerable<CultureInfo> _supportedLanguages;\r\n        private static CultureInfo _enUsCulture;\r\n\r\n        private static CultureInfo EnUsCulture => _enUsCulture ??= CultureInfo.GetCultureInfo(\"en-US\");\r\n\r\n        public static IEnumerable<CultureInfo> SupportedLanguages => _supportedLanguages ??= GetSupportedLanguages();\r\n\r\n        private static IEnumerable<CultureInfo> GetSupportedLanguages()\r\n        {\r\n            // Check what translations are available in program dir\r\n            var translationDirectories = Program.AssemblyLocation.GetDirectories()\r\n                .Where(x =>\r\n                {\r\n                    if (x.Name.Length < 2)\r\n                        return false;\r\n                    try\r\n                    {\r\n                        return x.GetFiles(\"BCUninstaller.resources.dll\", SearchOption.TopDirectoryOnly).Any();\r\n                    }\r\n                    catch (SystemException e)\r\n                    {\r\n                        Console.WriteLine(e);\r\n                        return false;\r\n                    }\r\n                })\r\n                .Select(x => x.Name.Substring(0, 2).ToLower())\r\n                .ToList();\r\n\r\n            var supportedCultures = new[]\r\n            {\r\n                // en - English\r\n                //(\"en-US\"),\r\n                \"en-AU\",\r\n                \"en-BZ\",\r\n                \"en-CA\",\r\n                \"en-IE\",\r\n                \"en-JM\",\r\n                \"en-NZ\",\r\n                \"en-PH\",\r\n                \"en-ZA\",\r\n                \"en-TT\",\r\n                \"en-GB\",\r\n                \"en-ZW\",\r\n\r\n                // ar - Arabic\r\n                \"ar-DZ\",\r\n                \"ar-BH\",\r\n                \"ar-EG\",\r\n                \"ar-IQ\",\r\n                \"ar-JO\",\r\n                \"ar-KW\",\r\n                \"ar-LB\",\r\n                \"ar-LY\",\r\n                \"ar-MA\",\r\n                \"ar-OM\",\r\n                \"ar-QA\",\r\n                \"ar-SA\",\r\n                \"ar-SY\",\r\n                \"ar-TN\",\r\n                \"ar-AE\",\r\n                \"ar-YE\",\r\n\r\n                // Czech\r\n                \"cs-CZ\",\r\n\r\n                // de - German\r\n                \"de-AT\",\r\n                \"de-DE\",\r\n                \"de-LI\",\r\n                \"de-LU\",\r\n                \"de-CH\",\r\n\r\n                // es - Spanish\r\n                \"es-AR\",\r\n                \"es-BO\",\r\n                \"es-CL\",\r\n                \"es-CO\",\r\n                \"es-CR\",\r\n                \"es-DO\",\r\n                \"es-EC\",\r\n                \"es-SV\",\r\n                \"es-GT\",\r\n                \"es-HN\",\r\n                \"es-MX\",\r\n                \"es-NI\",\r\n                \"es-PA\",\r\n                \"es-PY\",\r\n                \"es-PE\",\r\n                \"es-PR\",\r\n                \"es-ES\",\r\n                \"es-UY\",\r\n                \"es-VE\",\r\n\r\n                // fr - French\r\n                \"fr-BE\",\r\n                \"fr-CA\",\r\n                \"fr-FR\",\r\n                \"fr-LU\",\r\n                \"fr-MC\",\r\n                \"fr-CH\",\r\n\r\n                // Hungarian\r\n                \"hu-HU\",\r\n\r\n                // it - Italian\r\n                \"it-IT\",\r\n                \"it-CH\",\r\n\r\n                // ja - Japanese\r\n                \"ja-JP\",\r\n\r\n                // nl - Dutch\r\n                \"nl-NL\",\r\n                \"nl-BE\",\r\n\r\n                // Polish\r\n                \"pl-PL\",\r\n\r\n                // pt - Portuguese\r\n                \"pt-PT\",\r\n                \"pt-BR\",\r\n\r\n                // Russian\r\n                \"ru-RU\",\r\n\r\n                // Slovenian\r\n                \"sl-SI\",\r\n\r\n                // Swedish\r\n                \"sv-AX\",\r\n                \"sv-FI\",\r\n                \"sv-SE\",\r\n\r\n                // Turkish\r\n                \"tr-CY\",\r\n                \"tr-TR\",\r\n\r\n                // Vietnamese\r\n                \"vi-VN\",\r\n\r\n                // Simplified Chinese\r\n                \"zh-Hans\",\r\n\r\n                // Traditional Chinese\r\n                \"zh-Hant\"\r\n            }.Attempt(CultureInfo.GetCultureInfo).ToList();\r\n\r\n            supportedCultures.Add(EnUsCulture);\r\n\r\n            //Debug.Assert(translationDirectories.All(x => supportedCultures.Select(c => c.Name.Substring(0, 2)).Contains(x, StringComparison.OrdinalIgnoreCase)),\r\n            //    \"Translation is not added to supported cultures - \" + translationDirectories.FirstOrDefault(x => !supportedCultures.Select(c => c.Name.Substring(0, 2)).Contains(x, StringComparison.OrdinalIgnoreCase)));\r\n\r\n            return supportedCultures.Where(x =>\r\n            {\r\n                var code = x.Name.Substring(0, 2).ToLower();\r\n                return code.Equals(\"en\", StringComparison.Ordinal) || translationDirectories.Contains(code, StringComparison.Ordinal);\r\n            }).OrderBy(x => x.DisplayName).ToList().AsEnumerable();\r\n        }\r\n\r\n        public static void SetupCulture()\r\n        {\r\n            var currentCulture = CultureInfo.CurrentCulture;\r\n\r\n            var targetLocale = Settings.Default.Language;\r\n            if (targetLocale.IsNotEmpty())\r\n            {\r\n                try\r\n                {\r\n                    currentCulture = SupportedLanguages.First(x => x.Name.Equals(targetLocale));\r\n                }\r\n                catch\r\n                {\r\n                    Settings.Default.Language = string.Empty;\r\n                }\r\n            }\r\n\r\n            if (!currentCulture.Name.ContainsAny(SupportedLanguages.Select(x => x.Parent.Name),\r\n                StringComparison.OrdinalIgnoreCase))\r\n                currentCulture = EnUsCulture;\r\n\r\n            ProcessTools.SetDefaultCulture(currentCulture);\r\n            var thread = Thread.CurrentThread;\r\n            thread.CurrentCulture = currentCulture;\r\n            thread.CurrentUICulture = currentCulture;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/EntryPoint.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Diagnostics;\r\nusing System.Drawing;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing System.Runtime.InteropServices;\r\nusing System.Threading;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Forms;\r\nusing Klocman;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms;\r\nusing Klocman.Forms.Tools;\r\nusing UninstallTools.Dialogs;\r\n\r\nnamespace BulkCrapUninstaller\r\n{\r\n    internal static class EntryPoint\r\n    {\r\n        public static bool IsRestarting { get; internal set; }\r\n\r\n        private const string MUTEX_NAME = @\"Global\\BCU-singleinstance\";\r\n        private static Mutex _mutex;\r\n\r\n        [STAThread]\r\n        public static void Main(string[] args)\r\n        {\r\n            NBugConfigurator.SetupNBug();\r\n\r\n            using (LogWriter.StartLogging())\r\n            {\r\n                try\r\n                {\r\n                    Directory.SetCurrentDirectory(Program.AssemblyLocation.FullName);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    Console.WriteLine(ex);\r\n                }\r\n\r\n                try\r\n                {\r\n                    Application.SetCompatibleTextRenderingDefault(false);\r\n                    Application.EnableVisualStyles();\r\n\r\n                    _mutex = new Mutex(true, MUTEX_NAME, out var createdNew);\r\n                    if (!createdNew)\r\n                    {\r\n                        _mutex.Dispose();\r\n                        HandleBeingSecondInstance();\r\n                        return;\r\n                    }\r\n\r\n                    SetupDependancies();\r\n\r\n                    if(Properties.Settings.Default.WindowDpiAware)\r\n                        Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);\r\n\r\n                    var startupMgr = args.Contains(\"/startupmanager\", StringComparison.OrdinalIgnoreCase) || \r\n                                     args.Contains(\"/sm\", StringComparison.OrdinalIgnoreCase);\r\n\r\n                    if (startupMgr)\r\n                        Application.Run(StartupManagerWindow.ShowManagerWindow());\r\n                    else\r\n                        Application.Run(new MainWindow());\r\n                }\r\n                finally\r\n                {\r\n                    ProcessShutdown();\r\n                }\r\n            }\r\n        }\r\n\r\n        private static void ProcessShutdown()\r\n        {\r\n            if (!IsRestarting && !_mutex.SafeWaitHandle.IsClosed)\r\n                _mutex.ReleaseMutex();\r\n            _mutex.Dispose();\r\n            // If running as portable, delete any leftovers from the system\r\n            if (!IsRestarting && !Program.IsInstalled && !Program.EnableDebug)\r\n                Program.StartLogCleaner();\r\n        }\r\n\r\n        public static void Restart()\r\n        {\r\n            try\r\n            {\r\n                IsRestarting = true;\r\n\r\n                _mutex.ReleaseMutex();\r\n                Application.Restart();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n                IsRestarting = false;\r\n            }\r\n        }\r\n\r\n\r\n\r\n        private static void HandleBeingSecondInstance()\r\n        {\r\n            try\r\n            {\r\n                var location = Assembly.GetAssembly(typeof(EntryPoint))!.Location;\r\n                if (location.EndsWith(\".dll\")) location = location.Substring(0, location.Length - 3) + \"exe\";\r\n                var otherBcu = Process.GetProcesses().FirstOrDefault(x =>\r\n                {\r\n                    try\r\n                    {\r\n                        return string.Equals(x.MainModule!.FileName, location, StringComparison.OrdinalIgnoreCase);\r\n                    }\r\n                    catch\r\n                    {\r\n                        return false;\r\n                    }\r\n                });\r\n                var mainWind = otherBcu?.MainWindowHandle;\r\n                if (mainWind != null)\r\n                {\r\n                    try\r\n                    {\r\n                        NativeMethods.SetForegroundWindow(otherBcu.MainWindowHandle.ToInt32());\r\n                    }\r\n                    catch (Exception ex)\r\n                    {\r\n                        PremadeDialogs.GenericError(ex);\r\n                    }\r\n                }\r\n                else\r\n                {\r\n                    CustomMessageBox.ShowDialog(null, new CmbBasicSettings(\"BCUninstaller is already running\", \"BCUninstaller is already running\", \"You can start only one instance of BCUninstaller. Close previous instances and try again. If you don't see the BCUninstaller window or it's not responding, try closing it with Task Manager.\", Icon.ExtractAssociatedIcon(location), \"OK\"));\r\n                }\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Console.WriteLine(ex);\r\n            }\r\n        }\r\n\r\n        private static class NativeMethods\r\n        {\r\n            [DllImport(\"user32.dll\")]\r\n            public static extern int SetForegroundWindow(int hwnd);\r\n        }\r\n\r\n        private static void SetupDependancies()\r\n        {\r\n            // Order is semi-important, prepare settings should go first.\r\n            Program.PrepareSettings();\r\n            CultureConfigurator.SetupCulture();\r\n            //try\r\n            //{\r\n            //    UpdateSystem.ProcessPendingUpdates();\r\n            //}\r\n            //catch (Exception ex)\r\n            //{\r\n            //    PremadeDialogs.GenericError(ex);\r\n            //}\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class AdvancedClipboardCopyWindow\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AdvancedClipboardCopyWindow));\r\n            panel1 = new System.Windows.Forms.Panel();\r\n            buttonClose = new System.Windows.Forms.Button();\r\n            buttonCopyAll = new System.Windows.Forms.Button();\r\n            advancedClipboardCopy1 = new BulkCrapUninstaller.Controls.AdvancedClipboardCopy();\r\n            panel1.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // panel1\r\n            // \r\n            panel1.Controls.Add(buttonClose);\r\n            panel1.Controls.Add(buttonCopyAll);\r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // buttonClose\r\n            // \r\n            resources.ApplyResources(buttonClose, \"buttonClose\");\r\n            buttonClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;\r\n            buttonClose.Name = \"buttonClose\";\r\n            buttonClose.UseVisualStyleBackColor = true;\r\n            buttonClose.Click += button2_Click;\r\n            // \r\n            // buttonCopyAll\r\n            // \r\n            resources.ApplyResources(buttonCopyAll, \"buttonCopyAll\");\r\n            buttonCopyAll.Name = \"buttonCopyAll\";\r\n            buttonCopyAll.UseVisualStyleBackColor = true;\r\n            buttonCopyAll.Click += button1_Click;\r\n            // \r\n            // advancedClipboardCopy1\r\n            // \r\n            resources.ApplyResources(advancedClipboardCopy1, \"advancedClipboardCopy1\");\r\n            advancedClipboardCopy1.Name = \"advancedClipboardCopy1\";\r\n            // \r\n            // AdvancedClipboardCopyWindow\r\n            // \r\n            AcceptButton = buttonCopyAll;\r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            CancelButton = buttonClose;\r\n            Controls.Add(advancedClipboardCopy1);\r\n            Controls.Add(panel1);\r\n            Name = \"AdvancedClipboardCopyWindow\";\r\n            Shown += AdvancedClipboardCopyWindow_Shown;\r\n            panel1.ResumeLayout(false);\r\n            ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private Controls.AdvancedClipboardCopy advancedClipboardCopy1;\r\n        private System.Windows.Forms.Panel panel1;\r\n        private System.Windows.Forms.Button buttonClose;\r\n        private System.Windows.Forms.Button buttonCopyAll;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>اغلاق</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>نسخ الكل</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>نسخ المعلومات الى الحافظة</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions;\r\nusing Klocman.Forms.Tools;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class AdvancedClipboardCopyWindow : Form\r\n    {\r\n        private AdvancedClipboardCopyWindow()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        public static void ShowDialog(Form parent, IEnumerable<ApplicationUninstallerEntry> targets)\r\n        {\r\n            if (parent == null) throw new ArgumentNullException(nameof(parent));\r\n            if (targets == null) throw new ArgumentNullException(nameof(targets));\r\n            using (var window = new AdvancedClipboardCopyWindow())\r\n            {\r\n                window.advancedClipboardCopy1.Targets = targets;\r\n                window.Icon = parent.Icon;\r\n                window.ShowDialog(parent);\r\n            }\r\n        }\r\n\r\n        private void AdvancedClipboardCopyWindow_Shown(object sender, EventArgs e)\r\n        {\r\n            advancedClipboardCopy1.PatternText = \"{\" + nameof(ApplicationUninstallerEntry.DisplayName) + \"} - {\" +\r\n                                                 nameof(ApplicationUninstallerEntry.UninstallString) + \"}\";\r\n        }\r\n\r\n        private void button1_Click(object sender, EventArgs e)\r\n        {\r\n            if (string.IsNullOrEmpty(advancedClipboardCopy1.Result))\r\n            {\r\n                MessageBoxes.NothingToCopy();\r\n            }\r\n            else\r\n            {\r\n                try\r\n                {\r\n                    Clipboard.SetText(advancedClipboardCopy1.Result);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    PremadeDialogs.GenericError(ex);\r\n                }\r\n            }\r\n        }\r\n\r\n        private void button2_Click(object sender, EventArgs e)\r\n        {\r\n            Close();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Zavřít</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>Kopírovat vše</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Kopírování informací do schránky</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>Schließen</value>\n  </data>\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\n    <value>Kopiere alles</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Kopiere Information in die Zwischenablage</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Copiar información al portapapeles</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Cerrar</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>Copiar todo</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Copier l'information dans le presse-papiers</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Fermer</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>Tout copier</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Információk másolása a Vágólapra</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Bezárás</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>Mindent másol</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Copia informazioni negli Appunti</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Chiudi</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>Copia tutto</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>閉じる</value>\n  </data>\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\n    <value>全てコピー</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>情報をクリップボードにコピー</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Sluiten</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>Kopieer alles</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Kopieer informatie naar het klembord</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Zamknij</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>Kopiuj wszystko</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Kopiowanie informacji do schowka</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Fechar</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>Copiar tudo</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Copiar informação para a Área de Transferência</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Copiar a informação para a Área de Transferência</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Fechar</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>Copiar tudo</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"buttonClose.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Top, Right</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"buttonClose.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>528, 7</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"buttonClose.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonClose.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 27</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"buttonClose.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Close</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonClose.Name\" xml:space=\"preserve\">\r\n    <value>buttonClose</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonClose.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonClose.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonClose.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Top, Right</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>387, 7</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>134, 27</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>Copy all</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCopyAll.Name\" xml:space=\"preserve\">\r\n    <value>buttonCopyAll</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCopyAll.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCopyAll.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCopyAll.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 351</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>623, 42</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"advancedClipboardCopy1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"advancedClipboardCopy1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"advancedClipboardCopy1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"advancedClipboardCopy1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 3</value>\r\n  </data>\r\n  <data name=\"advancedClipboardCopy1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>623, 351</value>\r\n  </data>\r\n  <data name=\"advancedClipboardCopy1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedClipboardCopy1.Name\" xml:space=\"preserve\">\r\n    <value>advancedClipboardCopy1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedClipboardCopy1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Controls.AdvancedClipboardCopy, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedClipboardCopy1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedClipboardCopy1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>623, 393</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.StartPosition\" type=\"System.Windows.Forms.FormStartPosition, System.Windows.Forms\">\r\n    <value>CenterParent</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Copy information to clipboard</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>AdvancedClipboardCopyWindow</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Копировать информацию в буфер</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Закрыть</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>Копировать всё</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Kopiraj informacijo v odložišče</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Zapri</value>\r\n  </data>\r\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\r\n    <value>Kopiraj vse</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>Stäng</value>\n  </data>\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\n    <value>Kopiera alla</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Kopiera information till urklipp</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>Kapat</value>\n  </data>\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\n    <value>Tümünü kopyala</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bilgileri panoya kopyala</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>Đóng</value>\n  </data>\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\n    <value>Sao chép tất cả</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Sao chép vào bảng nhớ tạm</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\n    <value>复制全部</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>复制信息到剪贴板</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/AdvancedClipboardCopyWindow.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"buttonCopyAll.Text\" xml:space=\"preserve\">\n    <value>複製全部</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>複製資訊到剪貼簿</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/DebugWindow.Designer.cs",
    "content": "﻿using System.ComponentModel;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class DebugWindow\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            groupBox1 = new GroupBox();\r\n            checkBox1 = new CheckBox();\r\n            button2 = new Button();\r\n            button1 = new Button();\r\n            button5 = new Button();\r\n            groupBox3 = new GroupBox();\r\n            panel1 = new Panel();\r\n            panel2 = new Panel();\r\n            buttonGoMessages = new Button();\r\n            numericUpDownMessages = new NumericUpDown();\r\n            textBoxMessages = new TextBox();\r\n            comboBoxMessages = new ComboBox();\r\n            groupBox4 = new GroupBox();\r\n            labelVersion = new Label();\r\n            button3 = new Button();\r\n            button4 = new Button();\r\n            groupBox5 = new GroupBox();\r\n            checkBoxDebug = new CheckBox();\r\n            checkBox2 = new CheckBox();\r\n            groupBox6 = new GroupBox();\r\n            flowLayoutPanel1 = new FlowLayoutPanel();\r\n            button10 = new Button();\r\n            button11 = new Button();\r\n            button12 = new Button();\r\n            button13 = new Button();\r\n            button6 = new Button();\r\n            button7 = new Button();\r\n            button8 = new Button();\r\n            button9 = new Button();\r\n            button14 = new Button();\r\n            checkBoxSysRestoreAvail = new CheckBox();\r\n            button15 = new Button();\r\n            button16 = new Button();\r\n            button17 = new Button();\r\n            button18 = new Button();\r\n            groupBox1.SuspendLayout();\r\n            groupBox3.SuspendLayout();\r\n            panel1.SuspendLayout();\r\n            panel2.SuspendLayout();\r\n            ((ISupportInitialize)numericUpDownMessages).BeginInit();\r\n            groupBox4.SuspendLayout();\r\n            groupBox5.SuspendLayout();\r\n            groupBox6.SuspendLayout();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // groupBox1\r\n            // \r\n            groupBox1.Controls.Add(checkBox1);\r\n            groupBox1.Controls.Add(button2);\r\n            groupBox1.Controls.Add(button1);\r\n            groupBox1.Controls.Add(button5);\r\n            groupBox1.Dock = DockStyle.Bottom;\r\n            groupBox1.Location = new System.Drawing.Point(8, 403);\r\n            groupBox1.Margin = new Padding(4, 3, 4, 3);\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.Padding = new Padding(7);\r\n            groupBox1.Size = new System.Drawing.Size(571, 58);\r\n            groupBox1.TabIndex = 1;\r\n            groupBox1.TabStop = false;\r\n            groupBox1.Text = \"Settings\";\r\n            // \r\n            // checkBox1\r\n            // \r\n            checkBox1.AutoSize = true;\r\n            checkBox1.Dock = DockStyle.Left;\r\n            checkBox1.Location = new System.Drawing.Point(383, 23);\r\n            checkBox1.Margin = new Padding(4, 3, 4, 3);\r\n            checkBox1.Name = \"checkBox1\";\r\n            checkBox1.Size = new System.Drawing.Size(129, 28);\r\n            checkBox1.TabIndex = 1;\r\n            checkBox1.Text = \"Test setting binding\";\r\n            checkBox1.UseVisualStyleBackColor = true;\r\n            // \r\n            // button2\r\n            // \r\n            button2.AutoSize = true;\r\n            button2.Dock = DockStyle.Left;\r\n            button2.Location = new System.Drawing.Point(265, 23);\r\n            button2.Margin = new Padding(4, 3, 4, 3);\r\n            button2.Name = \"button2\";\r\n            button2.Size = new System.Drawing.Size(118, 28);\r\n            button2.TabIndex = 0;\r\n            button2.Text = \"External change\";\r\n            button2.UseVisualStyleBackColor = true;\r\n            button2.Click += button2_Click;\r\n            // \r\n            // button1\r\n            // \r\n            button1.AutoSize = true;\r\n            button1.Dock = DockStyle.Left;\r\n            button1.Location = new System.Drawing.Point(165, 23);\r\n            button1.Margin = new Padding(4, 3, 4, 3);\r\n            button1.Name = \"button1\";\r\n            button1.Size = new System.Drawing.Size(100, 28);\r\n            button1.TabIndex = 2;\r\n            button1.Text = \"Force update\";\r\n            button1.UseVisualStyleBackColor = true;\r\n            button1.Click += button1_Click_1;\r\n            // \r\n            // button5\r\n            // \r\n            button5.AutoSize = true;\r\n            button5.Dock = DockStyle.Left;\r\n            button5.Location = new System.Drawing.Point(7, 23);\r\n            button5.Margin = new Padding(4, 3, 4, 3);\r\n            button5.Name = \"button5\";\r\n            button5.Size = new System.Drawing.Size(158, 28);\r\n            button5.TabIndex = 3;\r\n            button5.Text = \"Open settings window\";\r\n            button5.UseVisualStyleBackColor = true;\r\n            button5.Click += button5_Click;\r\n            // \r\n            // groupBox3\r\n            // \r\n            groupBox3.Controls.Add(panel1);\r\n            groupBox3.Controls.Add(comboBoxMessages);\r\n            groupBox3.Dock = DockStyle.Fill;\r\n            groupBox3.Location = new System.Drawing.Point(8, 168);\r\n            groupBox3.Margin = new Padding(4, 3, 4, 3);\r\n            groupBox3.Name = \"groupBox3\";\r\n            groupBox3.Padding = new Padding(7);\r\n            groupBox3.Size = new System.Drawing.Size(571, 177);\r\n            groupBox3.TabIndex = 3;\r\n            groupBox3.TabStop = false;\r\n            groupBox3.Text = \"Test message boxes\";\r\n            // \r\n            // panel1\r\n            // \r\n            panel1.Controls.Add(panel2);\r\n            panel1.Controls.Add(textBoxMessages);\r\n            panel1.Dock = DockStyle.Fill;\r\n            panel1.Location = new System.Drawing.Point(7, 46);\r\n            panel1.Margin = new Padding(4, 3, 4, 3);\r\n            panel1.Name = \"panel1\";\r\n            panel1.Padding = new Padding(0, 7, 0, 0);\r\n            panel1.Size = new System.Drawing.Size(557, 124);\r\n            panel1.TabIndex = 1;\r\n            // \r\n            // panel2\r\n            // \r\n            panel2.Controls.Add(buttonGoMessages);\r\n            panel2.Controls.Add(numericUpDownMessages);\r\n            panel2.Dock = DockStyle.Fill;\r\n            panel2.Location = new System.Drawing.Point(462, 7);\r\n            panel2.Margin = new Padding(4, 3, 4, 3);\r\n            panel2.Name = \"panel2\";\r\n            panel2.Padding = new Padding(7, 0, 0, 0);\r\n            panel2.Size = new System.Drawing.Size(95, 117);\r\n            panel2.TabIndex = 3;\r\n            // \r\n            // buttonGoMessages\r\n            // \r\n            buttonGoMessages.Dock = DockStyle.Fill;\r\n            buttonGoMessages.Location = new System.Drawing.Point(7, 23);\r\n            buttonGoMessages.Margin = new Padding(4, 3, 4, 3);\r\n            buttonGoMessages.Name = \"buttonGoMessages\";\r\n            buttonGoMessages.Size = new System.Drawing.Size(88, 94);\r\n            buttonGoMessages.TabIndex = 1;\r\n            buttonGoMessages.Text = \"Open messagebox\";\r\n            buttonGoMessages.UseVisualStyleBackColor = true;\r\n            buttonGoMessages.Click += buttonGoMessages_Click;\r\n            // \r\n            // numericUpDownMessages\r\n            // \r\n            numericUpDownMessages.Dock = DockStyle.Top;\r\n            numericUpDownMessages.Location = new System.Drawing.Point(7, 0);\r\n            numericUpDownMessages.Margin = new Padding(4, 3, 4, 3);\r\n            numericUpDownMessages.Name = \"numericUpDownMessages\";\r\n            numericUpDownMessages.Size = new System.Drawing.Size(88, 23);\r\n            numericUpDownMessages.TabIndex = 3;\r\n            // \r\n            // textBoxMessages\r\n            // \r\n            textBoxMessages.Dock = DockStyle.Left;\r\n            textBoxMessages.Location = new System.Drawing.Point(0, 7);\r\n            textBoxMessages.Margin = new Padding(4, 3, 4, 3);\r\n            textBoxMessages.Multiline = true;\r\n            textBoxMessages.Name = \"textBoxMessages\";\r\n            textBoxMessages.Size = new System.Drawing.Size(462, 117);\r\n            textBoxMessages.TabIndex = 2;\r\n            textBoxMessages.Text = \"Text to send to the messagebox\\r\\nSecond line if the box takes multiple lines\\r\\nIf messagebox needs a number it takes it from the number box on right\";\r\n            // \r\n            // comboBoxMessages\r\n            // \r\n            comboBoxMessages.AutoCompleteMode = AutoCompleteMode.SuggestAppend;\r\n            comboBoxMessages.AutoCompleteSource = AutoCompleteSource.ListItems;\r\n            comboBoxMessages.Dock = DockStyle.Top;\r\n            comboBoxMessages.FormattingEnabled = true;\r\n            comboBoxMessages.Location = new System.Drawing.Point(7, 23);\r\n            comboBoxMessages.Margin = new Padding(4, 3, 4, 3);\r\n            comboBoxMessages.Name = \"comboBoxMessages\";\r\n            comboBoxMessages.Size = new System.Drawing.Size(557, 23);\r\n            comboBoxMessages.TabIndex = 0;\r\n            // \r\n            // groupBox4\r\n            // \r\n            groupBox4.Controls.Add(labelVersion);\r\n            groupBox4.Controls.Add(button3);\r\n            groupBox4.Controls.Add(button4);\r\n            groupBox4.Dock = DockStyle.Bottom;\r\n            groupBox4.Location = new System.Drawing.Point(8, 345);\r\n            groupBox4.Margin = new Padding(4, 3, 4, 3);\r\n            groupBox4.Name = \"groupBox4\";\r\n            groupBox4.Padding = new Padding(7);\r\n            groupBox4.Size = new System.Drawing.Size(571, 58);\r\n            groupBox4.TabIndex = 4;\r\n            groupBox4.TabStop = false;\r\n            groupBox4.Text = \"Update system\";\r\n            // \r\n            // labelVersion\r\n            // \r\n            labelVersion.Dock = DockStyle.Fill;\r\n            labelVersion.Location = new System.Drawing.Point(227, 23);\r\n            labelVersion.Margin = new Padding(4, 0, 4, 0);\r\n            labelVersion.Name = \"labelVersion\";\r\n            labelVersion.Size = new System.Drawing.Size(337, 28);\r\n            labelVersion.TabIndex = 3;\r\n            labelVersion.Text = \"remote version\";\r\n            labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;\r\n            // \r\n            // button3\r\n            // \r\n            button3.AutoSize = true;\r\n            button3.Dock = DockStyle.Left;\r\n            button3.Location = new System.Drawing.Point(139, 23);\r\n            button3.Margin = new Padding(4, 3, 4, 3);\r\n            button3.Name = \"button3\";\r\n            button3.Size = new System.Drawing.Size(88, 28);\r\n            button3.TabIndex = 2;\r\n            button3.Text = \"Download\";\r\n            button3.UseVisualStyleBackColor = true;\r\n            button3.Click += button3_Click;\r\n            // \r\n            // button4\r\n            // \r\n            button4.AutoSize = true;\r\n            button4.Dock = DockStyle.Left;\r\n            button4.Location = new System.Drawing.Point(7, 23);\r\n            button4.Margin = new Padding(4, 3, 4, 3);\r\n            button4.Name = \"button4\";\r\n            button4.Size = new System.Drawing.Size(132, 28);\r\n            button4.TabIndex = 0;\r\n            button4.Text = \"Check for updates\";\r\n            button4.UseVisualStyleBackColor = true;\r\n            button4.Click += button4_Click;\r\n            // \r\n            // groupBox5\r\n            // \r\n            groupBox5.Controls.Add(checkBoxDebug);\r\n            groupBox5.Controls.Add(checkBox2);\r\n            groupBox5.Dock = DockStyle.Bottom;\r\n            groupBox5.Location = new System.Drawing.Point(8, 461);\r\n            groupBox5.Margin = new Padding(4, 3, 4, 3);\r\n            groupBox5.Name = \"groupBox5\";\r\n            groupBox5.Padding = new Padding(7);\r\n            groupBox5.Size = new System.Drawing.Size(571, 58);\r\n            groupBox5.TabIndex = 5;\r\n            groupBox5.TabStop = false;\r\n            groupBox5.Text = \"Misc\";\r\n            // \r\n            // checkBoxDebug\r\n            // \r\n            checkBoxDebug.AutoSize = true;\r\n            checkBoxDebug.Dock = DockStyle.Left;\r\n            checkBoxDebug.Location = new System.Drawing.Point(162, 23);\r\n            checkBoxDebug.Margin = new Padding(4, 3, 4, 3);\r\n            checkBoxDebug.Name = \"checkBoxDebug\";\r\n            checkBoxDebug.Size = new System.Drawing.Size(132, 28);\r\n            checkBoxDebug.TabIndex = 1;\r\n            checkBoxDebug.Text = \"Enable debug mode\";\r\n            checkBoxDebug.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBox2\r\n            // \r\n            checkBox2.AutoSize = true;\r\n            checkBox2.Dock = DockStyle.Left;\r\n            checkBox2.Location = new System.Drawing.Point(7, 23);\r\n            checkBox2.Margin = new Padding(4, 3, 4, 3);\r\n            checkBox2.Name = \"checkBox2\";\r\n            checkBox2.Size = new System.Drawing.Size(155, 28);\r\n            checkBox2.TabIndex = 0;\r\n            checkBox2.Text = \"Override BCU is installed\";\r\n            checkBox2.UseVisualStyleBackColor = true;\r\n            checkBox2.CheckedChanged += checkBox2_CheckedChanged;\r\n            // \r\n            // groupBox6\r\n            // \r\n            groupBox6.Controls.Add(flowLayoutPanel1);\r\n            groupBox6.Dock = DockStyle.Top;\r\n            groupBox6.Location = new System.Drawing.Point(8, 8);\r\n            groupBox6.Margin = new Padding(4, 3, 4, 3);\r\n            groupBox6.Name = \"groupBox6\";\r\n            groupBox6.Padding = new Padding(7);\r\n            groupBox6.Size = new System.Drawing.Size(571, 160);\r\n            groupBox6.TabIndex = 6;\r\n            groupBox6.TabStop = false;\r\n            groupBox6.Text = \"Test methods\";\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            flowLayoutPanel1.AutoSize = true;\r\n            flowLayoutPanel1.Controls.Add(button10);\r\n            flowLayoutPanel1.Controls.Add(button11);\r\n            flowLayoutPanel1.Controls.Add(button12);\r\n            flowLayoutPanel1.Controls.Add(button13);\r\n            flowLayoutPanel1.Controls.Add(button6);\r\n            flowLayoutPanel1.Controls.Add(button7);\r\n            flowLayoutPanel1.Controls.Add(button8);\r\n            flowLayoutPanel1.Controls.Add(button9);\r\n            flowLayoutPanel1.Controls.Add(button14);\r\n            flowLayoutPanel1.Controls.Add(checkBoxSysRestoreAvail);\r\n            flowLayoutPanel1.Controls.Add(button15);\r\n            flowLayoutPanel1.Controls.Add(button16);\r\n            flowLayoutPanel1.Controls.Add(button17);\r\n            flowLayoutPanel1.Controls.Add(button18);\r\n            flowLayoutPanel1.Dock = DockStyle.Fill;\r\n            flowLayoutPanel1.Location = new System.Drawing.Point(7, 23);\r\n            flowLayoutPanel1.Margin = new Padding(4, 3, 4, 3);\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            flowLayoutPanel1.Size = new System.Drawing.Size(557, 130);\r\n            flowLayoutPanel1.TabIndex = 1;\r\n            // \r\n            // button10\r\n            // \r\n            button10.AutoSize = true;\r\n            button10.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            button10.Location = new System.Drawing.Point(4, 3);\r\n            button10.Margin = new Padding(4, 3, 4, 3);\r\n            button10.Name = \"button10\";\r\n            button10.Size = new System.Drawing.Size(110, 25);\r\n            button10.TabIndex = 7;\r\n            button10.Text = \"Test junk searcher\";\r\n            button10.UseVisualStyleBackColor = true;\r\n            button10.Click += TestJunkSearcher;\r\n            // \r\n            // button11\r\n            // \r\n            button11.AutoSize = true;\r\n            button11.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            button11.Location = new System.Drawing.Point(122, 3);\r\n            button11.Margin = new Padding(4, 3, 4, 3);\r\n            button11.Name = \"button11\";\r\n            button11.Size = new System.Drawing.Size(151, 25);\r\n            button11.TabIndex = 6;\r\n            button11.Text = \"Crash background thread\";\r\n            button11.UseVisualStyleBackColor = true;\r\n            button11.Click += TestCrashBackgroundThread;\r\n            // \r\n            // button12\r\n            // \r\n            button12.AutoSize = true;\r\n            button12.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            button12.Location = new System.Drawing.Point(281, 3);\r\n            button12.Margin = new Padding(4, 3, 4, 3);\r\n            button12.Name = \"button12\";\r\n            button12.Size = new System.Drawing.Size(97, 25);\r\n            button12.TabIndex = 5;\r\n            button12.Text = \"Crash ui thread\";\r\n            button12.UseVisualStyleBackColor = true;\r\n            button12.Click += TestCrashUiThread;\r\n            // \r\n            // button13\r\n            // \r\n            button13.AutoSize = true;\r\n            button13.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            button13.Location = new System.Drawing.Point(386, 3);\r\n            button13.Margin = new Padding(4, 3, 4, 3);\r\n            button13.Name = \"button13\";\r\n            button13.Size = new System.Drawing.Size(130, 25);\r\n            button13.TabIndex = 4;\r\n            button13.Text = \"Finish collecting stats\";\r\n            button13.UseVisualStyleBackColor = true;\r\n            button13.Click += button13_Click;\r\n            // \r\n            // button6\r\n            // \r\n            button6.AutoSize = true;\r\n            button6.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            button6.Location = new System.Drawing.Point(4, 34);\r\n            button6.Margin = new Padding(4, 3, 4, 3);\r\n            button6.Name = \"button6\";\r\n            button6.Size = new System.Drawing.Size(70, 25);\r\n            button6.TabIndex = 8;\r\n            button6.Text = \"Send stats\";\r\n            button6.UseVisualStyleBackColor = true;\r\n            button6.Click += button6_Click;\r\n            // \r\n            // button7\r\n            // \r\n            button7.AutoSize = true;\r\n            button7.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            button7.Location = new System.Drawing.Point(82, 34);\r\n            button7.Margin = new Padding(4, 3, 4, 3);\r\n            button7.Name = \"button7\";\r\n            button7.Size = new System.Drawing.Size(76, 25);\r\n            button7.TabIndex = 9;\r\n            button7.Text = \"Restart app\";\r\n            button7.UseVisualStyleBackColor = true;\r\n            button7.Click += button7_Click;\r\n            // \r\n            // button8\r\n            // \r\n            button8.AutoSize = true;\r\n            button8.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            button8.Location = new System.Drawing.Point(166, 34);\r\n            button8.Margin = new Padding(4, 3, 4, 3);\r\n            button8.Name = \"button8\";\r\n            button8.Size = new System.Drawing.Size(92, 25);\r\n            button8.TabIndex = 10;\r\n            button8.Text = \"Get hotkey list\";\r\n            button8.UseVisualStyleBackColor = true;\r\n            button8.Click += button8_Click;\r\n            // \r\n            // button9\r\n            // \r\n            button9.AutoSize = true;\r\n            button9.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            button9.Location = new System.Drawing.Point(266, 34);\r\n            button9.Margin = new Padding(4, 3, 4, 3);\r\n            button9.Name = \"button9\";\r\n            button9.Size = new System.Drawing.Size(69, 25);\r\n            button9.TabIndex = 11;\r\n            button9.Text = \"Soft crash\";\r\n            button9.UseVisualStyleBackColor = true;\r\n            button9.Click += SoftCrash;\r\n            // \r\n            // button14\r\n            // \r\n            button14.AutoSize = true;\r\n            button14.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            flowLayoutPanel1.SetFlowBreak(button14, true);\r\n            button14.Location = new System.Drawing.Point(343, 34);\r\n            button14.Margin = new Padding(4, 3, 4, 3);\r\n            button14.Name = \"button14\";\r\n            button14.Size = new System.Drawing.Size(90, 25);\r\n            button14.TabIndex = 12;\r\n            button14.Text = \"Feedback box\";\r\n            button14.UseVisualStyleBackColor = true;\r\n            button14.Click += button14_Click;\r\n            // \r\n            // checkBoxSysRestoreAvail\r\n            // \r\n            checkBoxSysRestoreAvail.AutoSize = true;\r\n            checkBoxSysRestoreAvail.Dock = DockStyle.Left;\r\n            checkBoxSysRestoreAvail.Enabled = false;\r\n            checkBoxSysRestoreAvail.Location = new System.Drawing.Point(4, 65);\r\n            checkBoxSysRestoreAvail.Margin = new Padding(4, 3, 4, 3);\r\n            checkBoxSysRestoreAvail.Name = \"checkBoxSysRestoreAvail\";\r\n            checkBoxSysRestoreAvail.Size = new System.Drawing.Size(131, 25);\r\n            checkBoxSysRestoreAvail.TabIndex = 16;\r\n            checkBoxSysRestoreAvail.Text = \"SysRestore available\";\r\n            checkBoxSysRestoreAvail.UseVisualStyleBackColor = true;\r\n            // \r\n            // button15\r\n            // \r\n            button15.AutoSize = true;\r\n            button15.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            button15.Location = new System.Drawing.Point(143, 65);\r\n            button15.Margin = new Padding(4, 3, 4, 3);\r\n            button15.Name = \"button15\";\r\n            button15.Size = new System.Drawing.Size(157, 25);\r\n            button15.TabIndex = 13;\r\n            button15.Text = \"Start restore point creation\";\r\n            button15.UseVisualStyleBackColor = true;\r\n            button15.Click += button15_Click;\r\n            // \r\n            // button16\r\n            // \r\n            button16.AutoSize = true;\r\n            button16.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            button16.Location = new System.Drawing.Point(308, 65);\r\n            button16.Margin = new Padding(4, 3, 4, 3);\r\n            button16.Name = \"button16\";\r\n            button16.Size = new System.Drawing.Size(76, 25);\r\n            button16.TabIndex = 14;\r\n            button16.Text = \"EndRestore\";\r\n            button16.UseVisualStyleBackColor = true;\r\n            button16.Click += button16_Click;\r\n            // \r\n            // button17\r\n            // \r\n            button17.AutoSize = true;\r\n            button17.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            button17.Location = new System.Drawing.Point(392, 65);\r\n            button17.Margin = new Padding(4, 3, 4, 3);\r\n            button17.Name = \"button17\";\r\n            button17.Size = new System.Drawing.Size(92, 25);\r\n            button17.TabIndex = 15;\r\n            button17.Text = \"CancelRestore\";\r\n            button17.UseVisualStyleBackColor = true;\r\n            button17.Click += button17_Click;\r\n            // \r\n            // button18\r\n            // \r\n            button18.AutoSize = true;\r\n            button18.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r\n            button18.Location = new System.Drawing.Point(4, 96);\r\n            button18.Margin = new Padding(4, 3, 4, 3);\r\n            button18.Name = \"button18\";\r\n            button18.Size = new System.Drawing.Size(134, 25);\r\n            button18.TabIndex = 17;\r\n            button18.Text = \"Simulate outdated W7\";\r\n            button18.UseVisualStyleBackColor = true;\r\n            button18.Click += button18_Click;\r\n            // \r\n            // DebugWindow\r\n            // \r\n            AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);\r\n            AutoScaleMode = AutoScaleMode.Font;\r\n            ClientSize = new System.Drawing.Size(587, 527);\r\n            Controls.Add(groupBox3);\r\n            Controls.Add(groupBox4);\r\n            Controls.Add(groupBox1);\r\n            Controls.Add(groupBox6);\r\n            Controls.Add(groupBox5);\r\n            Margin = new Padding(4, 3, 4, 3);\r\n            Name = \"DebugWindow\";\r\n            Padding = new Padding(8);\r\n            Text = \"DebugWindow (here be dragons)\";\r\n            groupBox1.ResumeLayout(false);\r\n            groupBox1.PerformLayout();\r\n            groupBox3.ResumeLayout(false);\r\n            panel1.ResumeLayout(false);\r\n            panel1.PerformLayout();\r\n            panel2.ResumeLayout(false);\r\n            ((ISupportInitialize)numericUpDownMessages).EndInit();\r\n            groupBox4.ResumeLayout(false);\r\n            groupBox4.PerformLayout();\r\n            groupBox5.ResumeLayout(false);\r\n            groupBox5.PerformLayout();\r\n            groupBox6.ResumeLayout(false);\r\n            groupBox6.PerformLayout();\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n        private GroupBox groupBox1;\r\n        private CheckBox checkBox1;\r\n        private Button button2;\r\n        private Button button1;\r\n        private GroupBox groupBox3;\r\n        private TextBox textBoxMessages;\r\n        private Button buttonGoMessages;\r\n        private ComboBox comboBoxMessages;\r\n        private NumericUpDown numericUpDownMessages;\r\n        private GroupBox groupBox4;\r\n        private Label labelVersion;\r\n        private Button button3;\r\n        private Button button4;\r\n        private Button button5;\r\n        private GroupBox groupBox5;\r\n        private CheckBox checkBox2;\r\n        private GroupBox groupBox6;\r\n        private Panel panel1;\r\n        private Panel panel2;\r\n        private CheckBox checkBoxDebug;\r\n        private FlowLayoutPanel flowLayoutPanel1;\r\n        private Button button10;\r\n        private Button button11;\r\n        private Button button12;\r\n        private Button button13;\r\n        private Button button6;\r\n        private Button button7;\r\n        private Button button8;\r\n        private Button button9;\r\n        private Button button14;\r\n        private Button button15;\r\n        private Button button16;\r\n        private Button button17;\r\n        private CheckBox checkBoxSysRestoreAvail;\r\n        private Button button18;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/DebugWindow.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing System.Threading;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions;\r\nusing BulkCrapUninstaller.Functions.ApplicationList;\r\nusing BulkCrapUninstaller.Functions.Tracking;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Binding.Settings;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.IO;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class DebugWindow : Form\r\n    {\r\n        private readonly UninstallerListViewUpdater _listView;\r\n        private readonly MainWindow _reference;\r\n        private readonly SettingBinder<Settings> _settings = Settings.Default.SettingBinder;\r\n        private readonly AppUninstaller _appUninstaller;\r\n\r\n        internal DebugWindow(MainWindow reference, UninstallerListViewUpdater listview, AppUninstaller appUninstaller)\r\n        {\r\n            _reference = reference;\r\n            _listView = listview;\r\n            _appUninstaller = appUninstaller;\r\n\r\n            InitializeComponent();\r\n\r\n            if (DesignMode) return;\r\n\r\n            _settings.Subscribe(TestHandler, x => x.FilterHideMicrosoft, this);\r\n            _settings.BindControl(checkBox1, x => x.FilterHideMicrosoft, this);\r\n\r\n            _settings.BindControl(checkBoxDebug, x => x.Debug, this);\r\n            checkBoxDebug.Checked = Settings.Default.Debug;\r\n\r\n            var messageboxes = typeof(MessageBoxes)\r\n                .GetMethods(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);\r\n            foreach (var x in messageboxes)\r\n            {\r\n                var wr = new ComboBoxWrapper<MethodInfo>(x, y =>\r\n                {\r\n                    var name = y.ToString();\r\n                    return name!.Substring(name.IndexOf(' ') + 1);\r\n                });\r\n                comboBoxMessages.Items.Add(wr);\r\n            }\r\n\r\n            checkBox2.Checked = Program.IsInstalled;\r\n            checkBoxSysRestoreAvail.Checked = SysRestore.SysRestoreAvailable();\r\n        }\r\n\r\n        private void button13_Click(object sender, EventArgs e)\r\n        {\r\n            UsageManager.FinishCollectingData();\r\n        }\r\n\r\n        private void button1_Click_1(object sender, EventArgs e)\r\n        {\r\n            _settings.SendUpdates(this);\r\n        }\r\n\r\n        private void button2_Click(object sender, EventArgs e)\r\n        {\r\n            Settings.Default.FilterHideMicrosoft = !Settings.Default.FilterHideMicrosoft;\r\n        }\r\n\r\n        private void button3_Click(object sender, EventArgs e)\r\n        {\r\n            //UpdateSystem.BeginUpdate();\r\n        }\r\n\r\n        private void button4_Click(object sender, EventArgs e)\r\n        {\r\n            //MessageBox.Show(UpdateSystem.CheckForUpdates().ToString());\r\n            //if (UpdateSystem.LastError != null)\r\n            //    MessageBox.Show(UpdateSystem.LastError.Message);\r\n            //\r\n            //if (UpdateSystem.LatestReply != null)\r\n            //{\r\n            //    MessageBox.Show(UpdateSystem.LatestReply.FullReply.ToString());\r\n            //    labelVersion.Text = UpdateSystem.LatestReply.GetUpdateVersion().ToString();\r\n            //}\r\n        }\r\n\r\n        private void button5_Click(object sender, EventArgs e)\r\n        {\r\n            using (var settingsW = new SettingsWindow())\r\n            {\r\n                settingsW.ShowDialog();\r\n            }\r\n        }\r\n\r\n        private void button6_Click(object sender, EventArgs e)\r\n        {\r\n            UsageManager.SendUsageData();\r\n        }\r\n\r\n        private void button7_Click(object sender, EventArgs e)\r\n        {\r\n            EntryPoint.Restart();\r\n        }\r\n\r\n        private void buttonGoMessages_Click(object sender, EventArgs e)\r\n        {\r\n            try\r\n            {\r\n                var wrapper = comboBoxMessages.SelectedItem as ComboBoxWrapper<MethodInfo>;\r\n                if (wrapper?.WrappedObject == null) return;\r\n\r\n                var methodInfo = wrapper.WrappedObject;\r\n                var parameters = methodInfo.GetParameters();\r\n                if (parameters.Length == 0)\r\n                    methodInfo.Invoke(null, Array.Empty<object>());\r\n                else\r\n                {\r\n                    var first = parameters.First();\r\n                    if (first.ParameterType.IsArray)\r\n                    {\r\n                        methodInfo.Invoke(null, new object[] { textBoxMessages.Lines });\r\n                    }\r\n                    else if (first.ParameterType == typeof(int))\r\n                    {\r\n                        methodInfo.Invoke(null, new object[] { (int)numericUpDownMessages.Value });\r\n                    }\r\n                    else if (first.ParameterType == typeof(Form))\r\n                    {\r\n                        methodInfo.Invoke(null, new object[] { _reference });\r\n                    }\r\n                    else if (first.ParameterType == typeof(Exception))\r\n                    {\r\n#pragma warning disable CA2201 // Do not raise reserved exception types\r\n                        methodInfo.Invoke(null, new object[] { new Exception(textBoxMessages.Text) });\r\n#pragma warning restore CA2201 // Do not raise reserved exception types\r\n                    }\r\n                    else\r\n                    {\r\n                        methodInfo.Invoke(null, new object[] { textBoxMessages.Text });\r\n                    }\r\n                }\r\n            }\r\n            catch (Exception exception)\r\n            {\r\n                MessageBox.Show(exception.Message);\r\n            }\r\n        }\r\n\r\n        private void checkBox2_CheckedChanged(object sender, EventArgs e)\r\n        {\r\n            Program.IsInstalled = checkBox2.Checked;\r\n        }\r\n\r\n        private void TestCrashBackgroundThread(object sender, EventArgs e)\r\n        {\r\n            NBug.Settings.ReleaseMode = false;\r\n            new Thread(() => throw new ArgumentException(\"TestCrashBackgroundThread\", new IOException(\"Inner exception\"))).Start();\r\n        }\r\n\r\n        private void TestCrashUiThread(object sender, EventArgs e)\r\n        {\r\n            NBug.Settings.ReleaseMode = false;\r\n            throw new ArgumentException(\"TestCrashUiThread\", new IOException(\"Inner exception\"));\r\n        }\r\n\r\n        private void TestHandler(object sender, SettingChangedEventArgs<bool> args)\r\n        {\r\n            button2.Text = args.NewValue.ToString();\r\n        }\r\n\r\n        private void TestJunkSearcher(object sender, EventArgs e)\r\n        {\r\n            _appUninstaller.AdvancedUninstall(_listView.SelectedUninstallers,\r\n                _listView.AllUninstallers.Except(_listView.SelectedUninstallers));\r\n        }\r\n\r\n        private void button8_Click(object sender, EventArgs e)\r\n        {\r\n            MessageBox.Show(string.Join(Environment.NewLine,\r\n                _reference.globalHotkeys1.GetHotkeyList().Select(x => x.ToString()).ToArray()));\r\n        }\r\n\r\n        private void SoftCrash(object sender, EventArgs e)\r\n        {\r\n            try\r\n            {\r\n                throw new ArithmeticException(\"Soft crash test\", new ArgumentException(\"Yer a bit bored, eh?\"));\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n            }\r\n        }\r\n\r\n        private void button14_Click(object sender, EventArgs e)\r\n        {\r\n            FeedbackBox.ShowFeedbackBox(this, true);\r\n        }\r\n\r\n        private static long _currentRestoreId;\r\n        private void button15_Click(object sender, EventArgs e)\r\n        {\r\n            SysRestore.StartRestore(\"BCU RESTORE POINT TEST \" + DateTime.Now.ToShortTimeString(), out _currentRestoreId);\r\n        }\r\n\r\n        private void button16_Click(object sender, EventArgs e)\r\n        {\r\n            SysRestore.EndRestore(_currentRestoreId);\r\n        }\r\n\r\n        private void button17_Click(object sender, EventArgs e)\r\n        {\r\n            SysRestore.CancelRestore(_currentRestoreId);\r\n        }\r\n\r\n        private void button18_Click(object sender, EventArgs e)\r\n        {\r\n            throw new DllNotFoundException(@\"Unable to load DLL 'api-ms-win-core-com-l1-1-0.dll' or one of its dependencies: The specified module could not be found. (0x8007007E)\");\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/DebugWindow.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class FeedbackBox\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FeedbackBox));\r\n            this.flowLayoutPanel5 = new System.Windows.Forms.FlowLayoutPanel();\r\n            this.p1welcomeHeading = new System.Windows.Forms.Label();\r\n            this.p1welcomeSubheading = new System.Windows.Forms.Label();\r\n            this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\r\n            this.buttonSendFeedback2 = new System.Windows.Forms.Button();\r\n            this.buttonRate = new System.Windows.Forms.Button();\r\n            this.buttonTwitter = new System.Windows.Forms.Button();\r\n            this.p1FeedbackHeading = new System.Windows.Forms.Label();\r\n            this.p1FeedbackDesc = new System.Windows.Forms.Label();\r\n            this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();\r\n            this.buttonSubmitGithub = new System.Windows.Forms.Button();\r\n            this.buttonSendFeedback = new System.Windows.Forms.Button();\r\n            this.p1HelpHeading = new System.Windows.Forms.Label();\r\n            this.p1HelpDesc = new System.Windows.Forms.Label();\r\n            this.flowLayoutPanel3 = new System.Windows.Forms.FlowLayoutPanel();\r\n            this.buttonDonate = new System.Windows.Forms.Label();\r\n            this.buttonTranslate = new System.Windows.Forms.Button();\r\n            this.buttonIssues = new System.Windows.Forms.Button();\r\n            this.panel1 = new System.Windows.Forms.Panel();\r\n            this.checkBoxNeverShow = new System.Windows.Forms.CheckBox();\r\n            this.buttonClose = new System.Windows.Forms.Button();\r\n            this.flowLayoutPanel5.SuspendLayout();\r\n            this.flowLayoutPanel1.SuspendLayout();\r\n            this.flowLayoutPanel2.SuspendLayout();\r\n            this.flowLayoutPanel3.SuspendLayout();\r\n            this.panel1.SuspendLayout();\r\n            this.SuspendLayout();\r\n            // \r\n            // flowLayoutPanel5\r\n            // \r\n            resources.ApplyResources(this.flowLayoutPanel5, \"flowLayoutPanel5\");\r\n            this.flowLayoutPanel5.BackColor = System.Drawing.SystemColors.ControlLightLight;\r\n            this.flowLayoutPanel5.Controls.Add(this.p1welcomeHeading);\r\n            this.flowLayoutPanel5.Controls.Add(this.p1welcomeSubheading);\r\n            this.flowLayoutPanel5.Controls.Add(this.flowLayoutPanel1);\r\n            this.flowLayoutPanel5.Controls.Add(this.p1FeedbackHeading);\r\n            this.flowLayoutPanel5.Controls.Add(this.p1FeedbackDesc);\r\n            this.flowLayoutPanel5.Controls.Add(this.flowLayoutPanel2);\r\n            this.flowLayoutPanel5.Controls.Add(this.p1HelpHeading);\r\n            this.flowLayoutPanel5.Controls.Add(this.p1HelpDesc);\r\n            this.flowLayoutPanel5.Controls.Add(this.flowLayoutPanel3);\r\n            this.flowLayoutPanel5.Name = \"flowLayoutPanel5\";\r\n            // \r\n            // p1welcomeHeading\r\n            // \r\n            resources.ApplyResources(this.p1welcomeHeading, \"p1welcomeHeading\");\r\n            this.flowLayoutPanel5.SetFlowBreak(this.p1welcomeHeading, true);\r\n            this.p1welcomeHeading.Name = \"p1welcomeHeading\";\r\n            // \r\n            // p1welcomeSubheading\r\n            // \r\n            resources.ApplyResources(this.p1welcomeSubheading, \"p1welcomeSubheading\");\r\n            this.p1welcomeSubheading.Name = \"p1welcomeSubheading\";\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(this.flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            this.flowLayoutPanel1.Controls.Add(this.buttonSendFeedback2);\r\n            this.flowLayoutPanel1.Controls.Add(this.buttonRate);\r\n            this.flowLayoutPanel1.Controls.Add(this.buttonTwitter);\r\n            this.flowLayoutPanel5.SetFlowBreak(this.flowLayoutPanel1, true);\r\n            this.flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // buttonSendFeedback2\r\n            // \r\n            resources.ApplyResources(this.buttonSendFeedback2, \"buttonSendFeedback2\");\r\n            this.buttonSendFeedback2.Name = \"buttonSendFeedback2\";\r\n            this.buttonSendFeedback2.UseVisualStyleBackColor = true;\r\n            this.buttonSendFeedback2.Click += new System.EventHandler(this.buttonSendFeedback2_Click);\r\n            // \r\n            // buttonRate\r\n            // \r\n            resources.ApplyResources(this.buttonRate, \"buttonRate\");\r\n            this.buttonRate.Name = \"buttonRate\";\r\n            this.buttonRate.UseVisualStyleBackColor = true;\r\n            this.buttonRate.Click += new System.EventHandler(this.buttonRate_Click);\r\n            // \r\n            // buttonTwitter\r\n            // \r\n            resources.ApplyResources(this.buttonTwitter, \"buttonTwitter\");\r\n            this.buttonTwitter.Name = \"buttonTwitter\";\r\n            this.buttonTwitter.UseVisualStyleBackColor = true;\r\n            this.buttonTwitter.Click += new System.EventHandler(this.buttonTwitter_Click);\r\n            // \r\n            // p1FeedbackHeading\r\n            // \r\n            resources.ApplyResources(this.p1FeedbackHeading, \"p1FeedbackHeading\");\r\n            this.flowLayoutPanel5.SetFlowBreak(this.p1FeedbackHeading, true);\r\n            this.p1FeedbackHeading.Name = \"p1FeedbackHeading\";\r\n            // \r\n            // p1FeedbackDesc\r\n            // \r\n            resources.ApplyResources(this.p1FeedbackDesc, \"p1FeedbackDesc\");\r\n            this.p1FeedbackDesc.Name = \"p1FeedbackDesc\";\r\n            // \r\n            // flowLayoutPanel2\r\n            // \r\n            resources.ApplyResources(this.flowLayoutPanel2, \"flowLayoutPanel2\");\r\n            this.flowLayoutPanel2.Controls.Add(this.buttonSubmitGithub);\r\n            this.flowLayoutPanel2.Controls.Add(this.buttonSendFeedback);\r\n            this.flowLayoutPanel5.SetFlowBreak(this.flowLayoutPanel2, true);\r\n            this.flowLayoutPanel2.Name = \"flowLayoutPanel2\";\r\n            // \r\n            // buttonSubmitGithub\r\n            // \r\n            resources.ApplyResources(this.buttonSubmitGithub, \"buttonSubmitGithub\");\r\n            this.buttonSubmitGithub.Name = \"buttonSubmitGithub\";\r\n            this.buttonSubmitGithub.UseVisualStyleBackColor = true;\r\n            this.buttonSubmitGithub.Click += new System.EventHandler(this.buttonSubmitGithub_Click);\r\n            // \r\n            // buttonSendFeedback\r\n            // \r\n            resources.ApplyResources(this.buttonSendFeedback, \"buttonSendFeedback\");\r\n            this.buttonSendFeedback.Name = \"buttonSendFeedback\";\r\n            this.buttonSendFeedback.UseVisualStyleBackColor = true;\r\n            this.buttonSendFeedback.Click += new System.EventHandler(this.buttonSendFeedback2_Click);\r\n            // \r\n            // p1HelpHeading\r\n            // \r\n            resources.ApplyResources(this.p1HelpHeading, \"p1HelpHeading\");\r\n            this.flowLayoutPanel5.SetFlowBreak(this.p1HelpHeading, true);\r\n            this.p1HelpHeading.Name = \"p1HelpHeading\";\r\n            // \r\n            // p1HelpDesc\r\n            // \r\n            resources.ApplyResources(this.p1HelpDesc, \"p1HelpDesc\");\r\n            this.p1HelpDesc.Name = \"p1HelpDesc\";\r\n            // \r\n            // flowLayoutPanel3\r\n            // \r\n            resources.ApplyResources(this.flowLayoutPanel3, \"flowLayoutPanel3\");\r\n            this.flowLayoutPanel3.Controls.Add(this.buttonDonate);\r\n            this.flowLayoutPanel3.Controls.Add(this.buttonTranslate);\r\n            this.flowLayoutPanel3.Controls.Add(this.buttonIssues);\r\n            this.flowLayoutPanel5.SetFlowBreak(this.flowLayoutPanel3, true);\r\n            this.flowLayoutPanel3.Name = \"flowLayoutPanel3\";\r\n            // \r\n            // buttonDonate\r\n            // \r\n            this.buttonDonate.Image = global::BulkCrapUninstaller.Properties.Resources.donate_button;\r\n            resources.ApplyResources(this.buttonDonate, \"buttonDonate\");\r\n            this.buttonDonate.Name = \"buttonDonate\";\r\n            this.buttonDonate.Click += new System.EventHandler(this.buttonDonate_Click);\r\n            // \r\n            // buttonTranslate\r\n            // \r\n            resources.ApplyResources(this.buttonTranslate, \"buttonTranslate\");\r\n            this.buttonTranslate.Name = \"buttonTranslate\";\r\n            this.buttonTranslate.UseVisualStyleBackColor = true;\r\n            this.buttonTranslate.Click += new System.EventHandler(this.buttonTranslate_Click);\r\n            // \r\n            // buttonIssues\r\n            // \r\n            resources.ApplyResources(this.buttonIssues, \"buttonIssues\");\r\n            this.buttonIssues.Name = \"buttonIssues\";\r\n            this.buttonIssues.UseVisualStyleBackColor = true;\r\n            this.buttonIssues.Click += new System.EventHandler(this.buttonIssues_Click);\r\n            // \r\n            // panel1\r\n            // \r\n            resources.ApplyResources(this.panel1, \"panel1\");\r\n            this.panel1.Controls.Add(this.checkBoxNeverShow);\r\n            this.panel1.Controls.Add(this.buttonClose);\r\n            this.panel1.Name = \"panel1\";\r\n            // \r\n            // checkBoxNeverShow\r\n            // \r\n            resources.ApplyResources(this.checkBoxNeverShow, \"checkBoxNeverShow\");\r\n            this.checkBoxNeverShow.Name = \"checkBoxNeverShow\";\r\n            this.checkBoxNeverShow.UseVisualStyleBackColor = true;\r\n            // \r\n            // buttonClose\r\n            // \r\n            this.buttonClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;\r\n            resources.ApplyResources(this.buttonClose, \"buttonClose\");\r\n            this.buttonClose.Name = \"buttonClose\";\r\n            this.buttonClose.UseVisualStyleBackColor = true;\r\n            // \r\n            // FeedbackBox\r\n            // \r\n            this.AcceptButton = this.buttonClose;\r\n            resources.ApplyResources(this, \"$this\");\r\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            this.CancelButton = this.buttonClose;\r\n            this.Controls.Add(this.panel1);\r\n            this.Controls.Add(this.flowLayoutPanel5);\r\n            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;\r\n            this.MaximizeBox = false;\r\n            this.MinimizeBox = false;\r\n            this.Name = \"FeedbackBox\";\r\n            this.flowLayoutPanel5.ResumeLayout(false);\r\n            this.flowLayoutPanel5.PerformLayout();\r\n            this.flowLayoutPanel1.ResumeLayout(false);\r\n            this.flowLayoutPanel1.PerformLayout();\r\n            this.flowLayoutPanel2.ResumeLayout(false);\r\n            this.flowLayoutPanel2.PerformLayout();\r\n            this.flowLayoutPanel3.ResumeLayout(false);\r\n            this.flowLayoutPanel3.PerformLayout();\r\n            this.panel1.ResumeLayout(false);\r\n            this.panel1.PerformLayout();\r\n            this.ResumeLayout(false);\r\n            this.PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel5;\r\n        private System.Windows.Forms.Label p1welcomeHeading;\r\n        private System.Windows.Forms.Label p1welcomeSubheading;\r\n        private System.Windows.Forms.Label p1FeedbackHeading;\r\n        private System.Windows.Forms.Label p1FeedbackDesc;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;\r\n        private System.Windows.Forms.Button buttonSendFeedback2;\r\n        private System.Windows.Forms.Button buttonRate;\r\n        private System.Windows.Forms.Button buttonTwitter;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;\r\n        private System.Windows.Forms.Button buttonSubmitGithub;\r\n        private System.Windows.Forms.Button buttonSendFeedback;\r\n        private System.Windows.Forms.Label p1HelpHeading;\r\n        private System.Windows.Forms.Label p1HelpDesc;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3;\r\n        private System.Windows.Forms.Button buttonIssues;\r\n        private System.Windows.Forms.Button buttonTranslate;\r\n        private System.Windows.Forms.Label buttonDonate;\r\n        private System.Windows.Forms.Panel panel1;\r\n        private System.Windows.Forms.CheckBox checkBoxNeverShow;\r\n        private System.Windows.Forms.Button buttonClose;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>فتحي الداودية يشكركم على استخدام المثبت!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>اذا وجدت هذه الحرة مفتوحة المصدر اداه مفيده ، يرجى النظر في قضاء دقيقه للمساعدة! اخبر اصدقائك عن ذلك ، وتقاسمها على وسائل الاعلام الاجتماعية ، واعطاء ردود الفعل--كل شيء يحسب قليلا!</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>ارسال الملاحظات</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>السعر (في أسفل الصفحة)</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>شاركنا على تويتر</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>اي مشاكل او الميزات المفقودة ؟</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>او اذا كنت ترغب في اقتراح ميزه جديده ، يرجى التحقق من هذه الروابط BCU،اذا كان لديك اي مشاكل مع:</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>(تحتاج الى حساب) GitHub تقدم على </value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>ارسال الملاحظات</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>هل تريد المساعدة ؟</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>الى لغتك الاصليه. كل مساعده هو موضع تقدير كبير ، مهما كانت صغيره BCU ليس عليك ان تكون مبرمجا للمساعدة! يمكنك التبرع لتسريع التحديثات ، او ترجمه </value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>BCU ترجمه  </value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>GitHub المسائل المتعلقة بـ </value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>لا تظهر هذه النافذة في وقت مضى مره اخرى ، من اي وقت مضي</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>اغلاق</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>ارسال الملاحظات</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Properties;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class FeedbackBox : Form\r\n    {\r\n        public static void ShowFeedbackBox(Form parent, bool showDisableCheckbox)\r\n        {\r\n            if (parent == null)\r\n                throw new ArgumentNullException(nameof(parent));\r\n\r\n            using (var f = new FeedbackBox())\r\n            {\r\n                f.checkBoxNeverShow.Visible = showDisableCheckbox;\r\n                f.checkBoxNeverShow.Enabled = showDisableCheckbox;\r\n\r\n                f.Icon = parent.Icon;\r\n                f.Owner = parent;\r\n                f.StartPosition = FormStartPosition.CenterParent;\r\n\r\n                f.ShowDialog(parent);\r\n            }\r\n        }\r\n\r\n        private FeedbackBox()\r\n        {\r\n            InitializeComponent();\r\n\r\n            if (DesignMode) return;\r\n\r\n            Settings.Default.SettingBinder.BindControl(checkBoxNeverShow, x => x.MiscFeedbackNagNeverShow, this);\r\n            Settings.Default.SettingBinder.SendUpdates(this);\r\n        }\r\n\r\n        private void buttonSendFeedback2_Click(object sender, EventArgs e)\r\n        {\r\n            MainWindow.OpenUrls(new[] { new Uri(Resources.SubmitFeedbackLink) });\r\n        }\r\n\r\n        private void buttonRate_Click(object sender, EventArgs e)\r\n        {\r\n            MainWindow.OpenUrls(new[] { new Uri(Resources.ReviewLink) });\r\n        }\r\n\r\n        private void buttonTwitter_Click(object sender, EventArgs e)\r\n        {\r\n            MainWindow.OpenUrls(new[] { new Uri(Resources.TwitterLink) });\r\n        }\r\n\r\n        private void buttonSubmitGithub_Click(object sender, EventArgs e)\r\n        {\r\n            MainWindow.OpenUrls(new[] { new Uri(Resources.GithubNewIssueLink) });\r\n        }\r\n\r\n        private void buttonIssues_Click(object sender, EventArgs e)\r\n        {\r\n            MainWindow.OpenUrls(new[] { new Uri(Resources.GithubIssuesLink) });\r\n        }\r\n\r\n        private void buttonTranslate_Click(object sender, EventArgs e)\r\n        {\r\n            MainWindow.OpenUrls(new[] { new Uri(Resources.TranslateLink) });\r\n        }\r\n\r\n        private void buttonDonate_Click(object sender, EventArgs e)\r\n        {\r\n            MainWindow.OpenUrls(new[] { new Uri(Resources.DonateLink) });\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Děkujeme vám za použití BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Pokud je tento bezplatný open-source nástroj pro Vás užitečný, prosím zvažte svoji pomoc! Řekněte svým přátelům, sdílet na sociálních sítích, poskytněte zpětnou vazbu - vše se počítá!</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>Poslat zpětnou vazbu</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>Poměr (v dolní části stránky)</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>Podělte se na Twitteru</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>Jakékoli problémy nebo chybějící funkce?</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>Pokud byste měli nějaké problémy s BCU, nebo chcete-li navrhnout novou funkci, viz tento odkaz:</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>Předložení návrhu na GitHub (Potřebujete účet)</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Poslat zpětnou vazbu</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>Chcete pomoci?</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>Nemusíte být programátor, aby jste pomohly! Můžete darovat k urychlení aktualizace nebo překládat BCU do Vašeho jazyka. Jakákoli pomoc je velmi ceněna, bez ohledu na to, jak malá je!</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>Přeložit BCU</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>Problémy na GitHub</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Nikdy nezobrazovat toto okno znovu</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Zavřít</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Poslat zpětnou vazbu</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>Danke für die Benutzung von BCUninstaller!</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>Wenn du dieses Open Source Tool nutzvoll findest, erzähle deinen Freunden davon, teile es auf den Sozialen Medien. Jedes bißchen Hilfe zählt.</value>\n  </data>\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\n    <value>Feedback senden</value>\n  </data>\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\n    <value>Bewertung am unteren Rand der Seite</value>\n  </data>\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\n    <value>Auf Twitter teilen</value>\n  </data>\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\n    <value>Probleme oder fehlende Funktionen?</value>\n  </data>\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\n    <value>Wenn Sie irgendwelche Probleme mit BCU hatten oder eine Verbesserung haben nutzen sie diese Links:</value>\n  </data>\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\n    <value>An GitHub senden (Account benötigt)</value>\n  </data>\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\n    <value>Feedback senden</value>\n  </data>\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\n    <value>Möchtest du helfen?</value>\n  </data>\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\n    <value>Du brauchst kein Programmierer zu sein um zu helfen. Du kannst Spenden oder in deine Sprache übersetzen. Jede Hilfe ist sehr willkommen, egal wie wenig.</value>\n  </data>\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\n    <value>BCU übersetzen</value>\n  </data>\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\n    <value>Probleme mit GitHub</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>Niemals mehr dieses Fenster zeigen</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>Schließen</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Feedback senden</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>¡Gracias por utilizar BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Si has encontrado útil esta herramienta gratuita de código abierto, ¡por favor considera dedicar un minuto a ayudar! Díselo a tus amigos, compártela en las redes sociales, envía comentarios - ¡cualquier cosa pequeña cuenta!</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentario</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>Tarifa (parte inferior de la página)</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>Compartir en Twitter</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>¿Problemas o características que faltan?</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>Si tuviste algún problema con BCU, o si quieres sugerir una nueva característica, consulte estos enlaces:</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>Enviar a GitHub (Necesita una cuenta)</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentario</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>¿Quieres ayudar?</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>¡No tienes que ser un programador para ayudar! Puedes donar para acelerar las actualizaciones o traducir BCU en tu lengua materna. Toda ayuda es muy apreciada ¡no importa si es pequeña!</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>Traducir BCU</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>Problemas en GitHub</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>No volver a mostrar esta ventana</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Cerrar</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentario</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Merci d'utiliser BCUninstaller !</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Si vous trouvez cet outil open-source gratuit utile, merci de prendre une minute pour aider ! Parlez-en à vos amis, partagez-le sur les réseaux sociaux, donnez un retour - chaque petit geste compte !</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>Envoyer un retour</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>Évaluer (en bas de la page)</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>Partager sur Twitter</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>Des problèmes ou des fonctions manquantes ?</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>Si vous avez des problèmes avec BCU ou si vous souhaitez suggérer une nouvelle fonction, merci de vérifier ces liens :</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>Soumettre sur GitHub (Nécessite un compte)</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Envoyer un retour</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>Voulez-vous aider ?</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>Vous n'avez pas à être un programmeur pour aider ! Vous pouvez faire un don pour accélérer les mises à jour, ou traduire BCU dans votre langue maternelle. Toute aide est grandement appréciée, même petite !</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>Traduire BCU</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>Problèmes sur GitHub</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Ne plus jamais montrer cette fenêtre, jamais</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Fermer</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Envoyer un retour</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Köszönjük, hogy a BCUninstaller-t használja!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Ha ezt az ingyenes nyílt forráskódú eszközt hasznosnak találta, szánjon egy percet az elterjesztésére! Ajánlja a barátainak a közösségi médiákban. A legkisebb segítség is sokat jelent nekünk!</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>Hibát talált, vagy hiányzik valamilyen funkció?</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>Hibát talált, vagy javaslata van? Kérem, használja ezeket a lehetőségeket:</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>Szeretne segíteni nekünk?</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>Nem kell programozónak lennie, hogy segítsen! Hozzájárulhat a frissítések felgyorsításához, vagy lefordíthatja a BCU-t a saját nyelvére. Bármilyen kicsi segítséget is szívesen veszünk!</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>Visszajelzés</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>Ár (az oldal alján)</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>Twitter megosztás</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>GitHub visszajelzés (fiók szükséges)</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Visszajelzés</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>BCU lefordítása</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>GitHub kérdés</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Ne jelenjen meg ez az oldal többé</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Bezárás</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Visszajelzés</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Grazie per l'uso di BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Se questo programma free ed open source ti è stato utile ti invito a spendere un minuto per aiutarci! Parlane ai tuoi amici, condividilo sui social media, scrivici le tue impressioni - ogni piccolo contributo è utile!</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>Hai avuto problemi o mancano delle funzionalità?</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>Se hai avuto problemi con BCU o se desideri suggerire una nuova funzionalità ti invitiamo a dare uno sguardo a questi collegamenti:</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>Vuoi aiutarci?</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>Per aiutarci non devi essere un programmatore! Potresti donare una piccola somma per accelerare lo sviluppo degli aggiornamenti, o tradurre BCU nella tua lingua. Qualunque aiuto, seppur piccolo, sarà molto apprezzato!</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>Invia feedback</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>Vota (in fondo alla pagina)</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>Condividi su Twitter</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>Invia su GitHub (richiesto account GitHub)</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Invia feedback</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>Traduci BCU</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>Segnalazioni su GitHub</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Non visualizzare più questa finestra</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Chiudi</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Invia feedback</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>BCUninstallerをご利用いただきありがとうございます！</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>この無料のオープンソースツールが役立った場合は、ぜひ1分だけお手伝いをお願いいたします！友人に教えたり、SNSで共有したり、フィードバックを送ったり、どんな小さなことでも大歓迎です！</value>\n  </data>\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\n    <value>フィードバックを送る</value>\n  </data>\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\n    <value>評価する（ページの一番下にあります）</value>\n  </data>\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\n    <value>Twitterで共有</value>\n  </data>\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\n    <value>問題や不足している機能はありますか？</value>\n  </data>\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\n    <value>BCUに関して問題があった場合や、新しい機能を提案したい場合は、これらのリンクをご確認ください：</value>\n  </data>\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\n    <value>GitHubで提出する（アカウントが必要です）</value>\n  </data>\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\n    <value>フィードバックを送信</value>\n  </data>\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\n    <value>お手伝いをしていただけますか？</value>\n  </data>\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\n    <value>プログラマーでなくてもお手伝いいただけます！更新を早めるために寄付することや、BCUを母国語に翻訳することができます。どんな小さなお手伝いも大変感謝いたします！</value>\n  </data>\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\n    <value>BCUを翻訳</value>\n  </data>\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\n    <value>GitHubの問題</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>このウィンドウを二度と表示しない</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>閉じる</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>フィードバックを送信</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Bedankt dat u BCUninstaller gebruikt!</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>Feedback sturen</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>Delen op Twitter</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>Problemen of ontbrekende mogelijkheden?</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>Heeft u problemen met BCU of suggesties voor nieuwe mogelijkheden, controleer dan deze links:</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>Aanmelden op GitHub (Acccount vereist)</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Feedback sturen</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>Wilt u ons helpen?</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>U hoeft geen programmeur te zijn om ons te helpen!\r\nU kunt een donatie doen om updates sneller uit te brengen, of BCU in uw taal te vertalen.\r\nAlle hulp wordt op prijs gesteld, ongeacht de wijze waarop!</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>Vertaal BCU</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>Problemen op GitHub</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Toon dit venster nooit meer</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Sluiten</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Stuur feedback</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Als u deze vrije open-source tool handig vindt, overweeg dan even om de helpfunctie te raadplegen! Vertel uw vrienden hierover, deel het op social media, stuur feedback - alle kleine beetjes helpen!</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>Tarief (onderaan de pagina)</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Dziękujemy za korzystanie z BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Jeśli to darmowe i otwarte narzędzie było tobie przydatne, pomyśl o pomocy temu projektowi! Powiedz znajomym o BCU, podziel się nim w portalach społecznościowych, zostaw opinię - wszystko się liczy!</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>Wyślij opinię</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>Oceń (na dole strony)</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>Twittuj o BCU</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>Jakieś problemy lub brakujące funkcje?</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>Sprawdź te linki aby zasugerować nową funkcję, lub zgłosić błąd w aplikacji:</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>Pomóż na GitHub</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Prześlij opinię</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>Chcesz pomóc?</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>Nie trzeba być programistą aby pomóc! Można przekazać darowiznę aby przyśpieszyć rozwój, lub przetłumaczyć BCU do swojego ojczystego języka. Każda pomoc jest mile widziana, nie ważne jak mała!</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>Przetłumacz BCU</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>Problemy na GitHub</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Nigdy nie pokazuj ponownie tego okna</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Zamknij</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Wyślij opinię</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Obrigado por usar o BCUninstaller! </value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Se você achou útil esta ferramenta gratuita de código aberto, considere gastar um minuto para ajudar! Fale com os seus amigos sobre isso, compartilhe nas mídias sociais, dê uma resposta - um pouco vale muito!</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentários</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>Avaliar (na parte inferior)</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>Compartilhe no Twitter</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>Algum problema ou recursos faltando?</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>Se você teve algum problema com o BCU, ou se quiser sugerir um novo recurso, verifique esses links:</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>Envie para GitHub (Necessita de uma conta)</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentário.</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>Você quer ajudar?</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>Você não precisa ser um programador para ajudar! Você pode fazer uma doação para acelerar as atualizações ou traduzir BCU para a sua língua nativa. Toda a ajuda é muito apreciada, não importa quão pequena!</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>Traduzir o BCU</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>Problemas no GitHub</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Nunca mais mostrar esta janela.</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Fechar</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentário.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Obrigado por usar o BCUninstaller! </value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Se achou útil esta ferramenta gratuita de código aberto, por favor pondere arranjar um minuto para ajudar! Diga aos seus amigos, compartilhe-o nas redes sociais, envie comentários – tudo conta!</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentário.</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>Taxa (na parte inferior)</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>Partilhe no Twitter</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>Problemas ou características em falta?</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>\r\n105/5000\r\nSe teve um problema com o BCU, ou se quiser sugerir um novo recurso, consulte estes links:</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>Envie para GitHub (Necessita de uma conta)</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentário.</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>Quer ajudar?</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>Não tem de ser um programador para ajudar! Pode doar para acelerar as actualizações ou traduzir o BCU para o seu idioma pátrio. Toda a ajuda é bem-vinda, por mais pequena que seja! </value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>Traduzir o BCU</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>Problemas com o GitHub</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Nunca mais mostrar esta janela.</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Fechar</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentário.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"flowLayoutPanel5.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"flowLayoutPanel5.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"p1welcomeHeading.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>11, 4</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 8, 0, 3</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>315, 34</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Thank you for using BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeHeading.Name\" xml:space=\"preserve\">\r\n    <value>p1welcomeHeading</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeHeading.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeHeading.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeHeading.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>11, 38</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 4</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>322, 43</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>If you found this free open-source tool useful, please consider spending a minute to help out! Tell your friends about it, share it on social media, give feedback - everything little bit counts!</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeSubheading.Name\" xml:space=\"preserve\">\r\n    <value>p1welcomeSubheading</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeSubheading.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeSubheading.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeSubheading.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>3, 3</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>90, 23</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>Send feedback</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSendFeedback2.Name\" xml:space=\"preserve\">\r\n    <value>buttonSendFeedback2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSendFeedback2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSendFeedback2.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSendFeedback2.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonRate.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonRate.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"buttonRate.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>99, 3</value>\r\n  </data>\r\n  <data name=\"buttonRate.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>168, 23</value>\r\n  </data>\r\n  <data name=\"buttonRate.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>Rate (at the bottom of the page)</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonRate.Name\" xml:space=\"preserve\">\r\n    <value>buttonRate</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonRate.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonRate.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonRate.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>3, 32</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>95, 23</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>Share on Twitter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonTwitter.Name\" xml:space=\"preserve\">\r\n    <value>buttonTwitter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonTwitter.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonTwitter.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonTwitter.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>11, 84</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>270, 58</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>11, 145</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 8, 0, 3</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>315, 34</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>Any problems or missing features?</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1FeedbackHeading.Name\" xml:space=\"preserve\">\r\n    <value>p1FeedbackHeading</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1FeedbackHeading.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1FeedbackHeading.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1FeedbackHeading.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>11, 179</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 4</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>309, 30</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>If you had any issues with BCU, or if you want to suggest a new feature, please check these links:</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1FeedbackDesc.Name\" xml:space=\"preserve\">\r\n    <value>p1FeedbackDesc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1FeedbackDesc.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1FeedbackDesc.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1FeedbackDesc.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>3, 3</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>192, 23</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>Submit on GitHub (Need an account)</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSubmitGithub.Name\" xml:space=\"preserve\">\r\n    <value>buttonSubmitGithub</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSubmitGithub.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSubmitGithub.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSubmitGithub.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>201, 3</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>90, 23</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Send feedback</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSendFeedback.Name\" xml:space=\"preserve\">\r\n    <value>buttonSendFeedback</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSendFeedback.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSendFeedback.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonSendFeedback.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>11, 212</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>294, 29</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>11, 244</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 8, 0, 3</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>195, 34</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>Do you want to help?</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1HelpHeading.Name\" xml:space=\"preserve\">\r\n    <value>p1HelpHeading</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1HelpHeading.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1HelpHeading.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1HelpHeading.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>11, 278</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 4</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>337, 43</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>You don't have to be a programmer to help! You can donate to speed up the updates, or translate BCU to your native language. All help is greatly appreciated, no matter how small!</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1HelpDesc.Name\" xml:space=\"preserve\">\r\n    <value>p1HelpDesc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1HelpDesc.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1HelpDesc.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1HelpDesc.ZOrder\" xml:space=\"preserve\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonDonate.ImageAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>TopLeft</value>\r\n  </data>\r\n  <data name=\"buttonDonate.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>3, 0</value>\r\n  </data>\r\n  <data name=\"buttonDonate.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 2, 0, 0</value>\r\n  </data>\r\n  <data name=\"buttonDonate.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>76, 29</value>\r\n  </data>\r\n  <data name=\"buttonDonate.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonDonate.Name\" xml:space=\"preserve\">\r\n    <value>buttonDonate</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonDonate.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonDonate.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonDonate.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>85, 3</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>86, 23</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>Translate BCU</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonTranslate.Name\" xml:space=\"preserve\">\r\n    <value>buttonTranslate</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonTranslate.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonTranslate.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonTranslate.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonIssues.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonIssues.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>177, 3</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>98, 23</value>\r\n  </data>\r\n  <data name=\"buttonIssues.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>Issues on GitHub</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonIssues.Name\" xml:space=\"preserve\">\r\n    <value>buttonIssues</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonIssues.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonIssues.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonIssues.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>11, 324</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>278, 29</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.ZOrder\" xml:space=\"preserve\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>8, 4, 8, 8</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>359, 364</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel5.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel5.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel5.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 8</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>9999, 23</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>0, 23</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>217, 23</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Don't ever show this window again, ever</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxNeverShow.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxNeverShow</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxNeverShow.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxNeverShow.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxNeverShow.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonClose.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"buttonClose.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>276, 8</value>\r\n  </data>\r\n  <data name=\"buttonClose.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>9999, 23</value>\r\n  </data>\r\n  <data name=\"buttonClose.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>0, 23</value>\r\n  </data>\r\n  <data name=\"buttonClose.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>75, 23</value>\r\n  </data>\r\n  <data name=\"buttonClose.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Close</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonClose.Name\" xml:space=\"preserve\">\r\n    <value>buttonClose</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonClose.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonClose.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonClose.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 364</value>\r\n  </data>\r\n  <data name=\"panel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>8, 8, 8, 8</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>359, 39</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>6, 13</value>\r\n  </data>\r\n  <data name=\"$this.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"$this.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>359, 490</value>\r\n  </data>\r\n  <data name=\"$this.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>375, 9999999</value>\r\n  </data>\r\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>375, 39</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Send feedback</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>FeedbackBox</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Благодарим вас за использование BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Если Вы нашли это бесплатное ПО полезным, пожалуйста, подумайте о том, как потратить минуту на то, чтобы помочь  его развитию! Расскажите о нём друзьям, поделитесь им в социальных сетях, отправьте отзыв — любая малость значительна!</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>Отправить отзыв</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>Оценить (внизу страницы)</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>Поделиться в Twitter</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>Нашли ошибку или нужна функция?</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>Если у Вас возникли проблемы с BCU или Вы хотите предложить новую функцию, посетите эти ссылки:</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>Отзыв на GitHub (нужна учетная запись)</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Отправить отзыв</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>Хотите помочь?</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>Вам не обязательно быть программистом, чтобы помочь! Вы можете сделать пожертвование для ускорения выхода обновлений или перевести BCU на ваш родной язык. Любая помощь приветствуется, независимо от её размера!</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>Перевести BCU</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>Проблемы на GitHub</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Никогда не показывать это окно снова</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Закрыть</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Отправить отзыв</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Hvala, ker uporabljate BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Če menite, da je to brezplačno, odprtokodno orodje uporabno za vas, razmislite kakšno minutko o majhni pomoči! Povejte svojim prijateljem o tem, delite svoje mnenje na družbenih omrežjih, pošljite jim vaše povratne informacije - vse, kar je potrebno, malo, šteje!</value>\r\n  </data>\r\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\r\n    <value>Kakršne koli težave ali manjkajoče funkcije?</value>\r\n  </data>\r\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\r\n    <value>Če ste imeli kakršne koli težave z BCU ali pa, če bi radi predlagali novo funkcijo, si oglejte te povezave:</value>\r\n  </data>\r\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\r\n    <value>Ali želite pomagati?</value>\r\n  </data>\r\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\r\n    <value>Saj ni treba biti programer, da boste lahko pomagali! Lahko prispevate darilo, da pospešite posodabljanje ali prevedete BCU v svoj materni jezik. Vsa pomoč je zelo cenjena, ne glede na to, kako majhna bo!</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\r\n    <value>Pošlji povratno informacijo</value>\r\n  </data>\r\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\r\n    <value>Deli na Twitterju</value>\r\n  </data>\r\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\r\n    <value>Pošlji na GitHub (Potreben je račun)</value>\r\n  </data>\r\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Pošlji povratne informacije</value>\r\n  </data>\r\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\r\n    <value>Prevedite BCU</value>\r\n  </data>\r\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\r\n    <value>Zadeve na GitHub</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Tega okna ne prikazuj nikoli več</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Zapri</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Pošlji povratne informacije</value>\r\n  </data>\r\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\r\n    <value>Ocena (na dnu strani)</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>Tack för att du använder BCUninstaller!</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>Om du har haft nytta av den här kostnadsfria öppen källkodsverktyget, överväg att lägga några minuter på att hjälpa till! Berätta för dina vänner om det, dela det i sociala medier, ge feedback - varje litet bidrag räknas!</value>\n  </data>\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\n    <value>Skicka feedback</value>\n  </data>\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\n    <value>Betygsätt (längst ner på sidan)</value>\n  </data>\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\n    <value>Dela på Twitter</value>\n  </data>\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\n    <value>Några problem eller saknade funktioner?</value>\n  </data>\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\n    <value>Om du hade några problem med BCU, eller om du vill föreslå en ny funktion, vänligen se dessa länkar:</value>\n  </data>\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\n    <value>Skicka in på GitHub (konto krävs)</value>\n  </data>\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\n    <value>Skicka feedback</value>\n  </data>\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\n    <value>Vill du hjälpa till?</value>\n  </data>\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\n    <value>Du behöver inte vara en programmerare för att hjälpa till! Du kan donera för att påskynda uppdateringarna, eller översätta BCU till ditt modersmål. All hjälp uppskattas mycket, oavsett hur liten!</value>\n  </data>\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\n    <value>Översätt BCU</value>\n  </data>\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\n    <value>Ärenden på GitHub</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>Visa aldrig det här fönstret igen, någonsin</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>Stäng</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Skicka feedback</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller'ı kullandığınız için teşekkür ederiz!</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>Bu ücretsiz açık kaynak aracını yararlı bulduysanız, lütfen yardım için bir dakikanızı ayırmayı düşünün! Arkadaşlarınıza bunu anlatın, sosyal medyada paylaşın, geri bildirim verin - her şey küçük sayılır!</value>\n  </data>\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\n    <value>Geribildirim yolla</value>\n  </data>\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\n    <value>Oran (sayfanın en altında)</value>\n  </data>\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\n    <value>Twitter'da paylaş</value>\n  </data>\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\n    <value>Herhangi bir sorun veya eksik özellik var mı?</value>\n  </data>\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\n    <value>BCU ile ilgili herhangi bir sorun yaşarsanız veya yeni bir özellik önermek istiyorsanız, lütfen şu bağlantıları kontrol edin:</value>\n  </data>\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\n    <value>GitHub'da Gönder (Bir hesaba ihtiyacınız var)</value>\n  </data>\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\n    <value>Geribildirim yolla</value>\n  </data>\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\n    <value>Yardım ister misiniz?</value>\n  </data>\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\n    <value>Yardımcı olmak için bir programcı olmanıza gerek yok! Güncellemeleri hızlandırmak veya BCU'yu kendi dilinize çevirmek için bağışta bulunabilirsiniz. Ne kadar küçük olursa olsun tüm yardımlar çok takdir edilir!</value>\n  </data>\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\n    <value>BCU'yu Çevir</value>\n  </data>\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\n    <value>GitHub ile ilgili sorunlar</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>Bu pencereyi bir daha asla gösterme</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>Kapat</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Geribildirim yolla</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>Cảm ơn bạn đã sử dụng BCUninstaller!</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>Bạn đã thấy công cụ mã nguồn mở miễn phí này hữu ích chứ? Nếu có, hãy dành một phút để giúp chúng tôi nhé! Hãy giới thiệu nó với bạn bè của bạn, chia sẻ nó lên mạng xã hội, hay cung cấp phản hồi - mọi đóng góp nhỏ đều có giá trị!</value>\n  </data>\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\n    <value>Gửi phản hồi</value>\n  </data>\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\n    <value>Đánh giá (ở cuối trang)</value>\n  </data>\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\n    <value>Chia sẻ lên Twitter</value>\n  </data>\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\n    <value>Có bất kỳ trục trặc gì hay thiếu tính năng nào không?</value>\n  </data>\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\n    <value>Nếu bạn gặp phải bất kỳ sự cố nào với BCU hoặc muốn đề xuất tính năng mới, vui lòng kiểm tra các liên kết này:</value>\n  </data>\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\n    <value>Gửi lên GitHub (Cần có tài khoản)</value>\n  </data>\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\n    <value>Gửi phản hồi</value>\n  </data>\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\n    <value>Bạn có muốn góp sức không?</value>\n  </data>\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\n    <value>Bạn không cần phải là lập trình viên để góp sức! Bạn có thể quyên góp để đẩy nhanh quá trình cập nhật hoặc dịch BCU sang tiếng mẹ đẻ của bạn. Mọi sự giúp đỡ đều được trân trọng, dù là nhỏ nhất!</value>\n  </data>\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\n    <value>Dịch BCU</value>\n  </data>\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\n    <value>Báo cáo lỗi trên GitHub</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>Không bao giờ hiển thị lại cửa sổ này nữa</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>Đóng</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Gửi phản hồi</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>感谢你使用BCUninstaller!</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>如果你觉得这个免费的开源工具有用，请考虑花一分钟帮忙！告诉你的朋友，在社交媒体上分享，给予反馈——一切都很重要！</value>\n  </data>\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\n    <value>发送反馈</value>\n  </data>\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\n    <value>评分(在页面底部)</value>\n  </data>\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\n    <value>在Twitter上分享</value>\n  </data>\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\n    <value>有什么问题或功能缺失吗？</value>\n  </data>\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\n    <value>如果你对BCU有任何问题，或者你想建议新功能，请查看以下链接:</value>\n  </data>\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\n    <value>在GitHub上提交（需要帐户）</value>\n  </data>\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\n    <value>发送反馈</value>\n  </data>\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\n    <value>你想帮忙吗?</value>\n  </data>\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\n    <value>不是程序员也可以帮忙！你可以捐款来加速更新，或者把BCU翻译成你的母语。非常感谢所有的帮助，不管有多小！</value>\n  </data>\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\n    <value>翻译BCU</value>\n  </data>\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\n    <value>Github上的Issue</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>不再显示这个窗口</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>发送反馈</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackBox.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>感謝你使用BCUnintstaller！</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>如果你覺得這個免費的開源工具有用，請考慮花一分鐘幫忙！告訴你的朋友，在社交媒體上分享，給予回饋——一切都很重要！</value>\n  </data>\n  <data name=\"buttonSendFeedback2.Text\" xml:space=\"preserve\">\n    <value>傳送回饋</value>\n  </data>\n  <data name=\"buttonRate.Text\" xml:space=\"preserve\">\n    <value>評分(在頁面底部)</value>\n  </data>\n  <data name=\"buttonTwitter.Text\" xml:space=\"preserve\">\n    <value>在Twitter上分享</value>\n  </data>\n  <data name=\"p1FeedbackHeading.Text\" xml:space=\"preserve\">\n    <value>有甚麼問題或沒有的功能嗎？</value>\n  </data>\n  <data name=\"p1FeedbackDesc.Text\" xml:space=\"preserve\">\n    <value>如果你對BCU有任何問題，或者你想建議新功能，請查看以下連結：</value>\n  </data>\n  <data name=\"p1HelpHeading.Text\" xml:space=\"preserve\">\n    <value>你也想幫忙嗎？</value>\n  </data>\n  <data name=\"p1HelpDesc.Text\" xml:space=\"preserve\">\n    <value>不是程式設計師也可以幫忙！你可以捐款來加速更新，或者把BCU翻譯成你的母語。非常感謝所有的幫助，不管有多小！</value>\n  </data>\n  <data name=\"buttonTranslate.Text\" xml:space=\"preserve\">\n    <value>翻譯BCU</value>\n  </data>\n  <data name=\"buttonIssues.Text\" xml:space=\"preserve\">\n    <value>GitHub上的Issues</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>不再顯示這個視窗</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>傳送回饋</value>\n  </data>\n  <data name=\"buttonSubmitGithub.Text\" xml:space=\"preserve\">\n    <value>在GitHub上提交(需要GitHub帳號)</value>\n  </data>\n  <data name=\"buttonSendFeedback.Text\" xml:space=\"preserve\">\n    <value>傳送回饋</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class FeedbackWindow\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FeedbackWindow));\r\n            webBrowser = new System.Windows.Forms.WebBrowser();\r\n            loadingLabel = new System.Windows.Forms.Label();\r\n            SuspendLayout();\r\n            // \r\n            // webBrowser\r\n            // \r\n            webBrowser.AllowWebBrowserDrop = false;\r\n            resources.ApplyResources(webBrowser, \"webBrowser\");\r\n            webBrowser.IsWebBrowserContextMenuEnabled = false;\r\n            webBrowser.Name = \"webBrowser\";\r\n            // \r\n            // loadingLabel\r\n            // \r\n            resources.ApplyResources(loadingLabel, \"loadingLabel\");\r\n            loadingLabel.Name = \"loadingLabel\";\r\n            loadingLabel.UseWaitCursor = true;\r\n            // \r\n            // FeedbackWindow\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            Controls.Add(loadingLabel);\r\n            Controls.Add(webBrowser);\r\n            FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;\r\n            MaximizeBox = false;\r\n            MinimizeBox = false;\r\n            Name = \"FeedbackWindow\";\r\n            Shown += FeedbackWindow_Shown;\r\n            ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.WebBrowser webBrowser;\r\n        private System.Windows.Forms.Label loadingLabel;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>التحميل ، الرجاء الانتظار...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>ارسال الملاحظات</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    internal partial class FeedbackWindow : Form\r\n    {\r\n        public FeedbackWindow()\r\n        {\r\n            InitializeComponent();\r\n            webBrowser.DocumentCompleted += webBrowser_DocumentCompleted;\r\n            webBrowser.ScrollBarsEnabled = false;\r\n            //webBrowser.Visible = false;\r\n        }\r\n\r\n        public static void ShowFeedbackDialog()\r\n        {\r\n            using (var fw = new FeedbackWindow())\r\n            {\r\n                fw.ShowDialog();\r\n            }\r\n        }\r\n\r\n        private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)\r\n        {\r\n            webBrowser.DocumentCompleted -= webBrowser_DocumentCompleted;\r\n\r\n            try\r\n            {\r\n                var container = webBrowser.Document!.GetElementById(\"container\");\r\n                container!.InnerHtml = webBrowser.Document.GetElementById(\"content\")!.InnerHtml;\r\n                container.Style = \"width:422px; margin:10px auto; padding:10px; align:center;\";\r\n                webBrowser.Document.Body!.Style = \"padding:0px;\";\r\n            }\r\n            catch\r\n            {\r\n                //Error while parsing, probably couldn't connect. Let the browser show the error.\r\n            }\r\n\r\n            loadingLabel.Visible = false;\r\n            webBrowser.Visible = true;\r\n        }\r\n\r\n        private void FeedbackWindow_Shown(object sender, EventArgs e)\r\n        {\r\n            webBrowser.Navigate(new Uri(@\"http://klocmansoftware.weebly.com/feedback--contact.html\"));\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>Načítání prosím počkejte ...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Odeslat zpětnou vazbu</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>fr</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>Wird geladen, bitte warten...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Feedback senden</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>fr</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>Cargando, por favor espere...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentario</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"webBrowser.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"webBrowser.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>23, 23</value>\r\n  </data>\r\n  <data name=\"webBrowser.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>562, 672</value>\r\n  </data>\r\n  <data name=\"loadingLabel.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"loadingLabel.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>562, 672</value>\r\n  </data>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>Chargement, veuillez patienter...</value>\r\n  </data>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>562, 672</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Soumettre un retour</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>Betöltés, kérem várjon...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Visszajelzés</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>Caricamento...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Invia feedback</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\n    <value>読み込み中です。しばらくお待ちください…</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>フィードバックを送信</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>Wordt geladen, even geduld a.u.b...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Feedback sturen</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>Wczytywanie, proszę czekać...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Wyślij opinię</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>Carregando, por favor aguarde...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentário</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>A carregar, por favor espere...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentário</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>fr</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals of this format is to allow a simple XML format\n    that is mostly human readable. The generation and parsing of the\n    various data types are done through the TypeConverter classes\n    associated with the data types.\n\n    Example:\n\n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n\n    There are any number of \"resheader\" rows that contain simple\n    name/value pairs.\n\n    Each data row contains a name, and value. The row also contains a\n    type or mimetype. Type corresponds to a .NET class that support\n    text/value conversion through the TypeConverter architecture.\n    Classes that don't support this are serialized and stored with the\n    mimetype set.\n\n    The mimetype is used for serialized objects, and tells the\n    ResXResourceReader how to depersist the object. This is currently not\n    extensible. For a given mimetype the value must be set accordingly:\n\n    Note - application/x-microsoft.net.object.binary.base64 is the format\n    that the ResXResourceWriter will generate, however the reader can\n    read any of the formats listed below.\n\n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array\n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"webBrowser.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Fill</value>\n  </data>\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\n  <data name=\"webBrowser.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>0, 0</value>\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"webBrowser.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"webBrowser.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>23, 23</value>\n  </data>\n  <data name=\"webBrowser.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>562, 672</value>\n  </data>\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"webBrowser.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"webBrowser.Visible\" type=\"System.Boolean, mscorlib\">\n    <value>False</value>\n  </data>\n  <data name=\"&gt;&gt;webBrowser.Name\" xml:space=\"preserve\">\n    <value>webBrowser</value>\n  </data>\n  <data name=\"&gt;&gt;webBrowser.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.WebBrowser, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;webBrowser.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;webBrowser.ZOrder\" xml:space=\"preserve\">\n    <value>1</value>\n  </data>\n  <data name=\"loadingLabel.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Fill</value>\n  </data>\n  <data name=\"loadingLabel.Font\" type=\"System.Drawing.Font, System.Drawing\">\n    <value>Microsoft Sans Serif, 14pt</value>\n  </data>\n  <data name=\"loadingLabel.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>0, 0</value>\n  </data>\n  <data name=\"loadingLabel.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 0, 4, 0</value>\n  </data>\n  <data name=\"loadingLabel.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>562, 672</value>\n  </data>\n  <data name=\"loadingLabel.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>1</value>\n  </data>\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\n    <value>Loading, please wait...</value>\n  </data>\n  <data name=\"loadingLabel.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\n    <value>MiddleCenter</value>\n  </data>\n  <data name=\"&gt;&gt;loadingLabel.Name\" xml:space=\"preserve\">\n    <value>loadingLabel</value>\n  </data>\n  <data name=\"&gt;&gt;loadingLabel.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;loadingLabel.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;loadingLabel.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\n    <value>7, 15</value>\n  </data>\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>562, 672</value>\n  </data>\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>5, 3, 5, 3</value>\n  </data>\n  <data name=\"$this.StartPosition\" type=\"System.Windows.Forms.FormStartPosition, System.Windows.Forms\">\n    <value>CenterParent</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Submit feedback</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\n    <value>FeedbackWindow</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>Загрузка, ожидайте...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Отправить отзыв</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>fr</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\r\n    <value>Nalagam. Počakajte, prosim...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Pošlji povratne informacije</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>fr</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\n    <value>Laddar, vänligen vänta...</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Skicka feedback</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\n    <value>Yükleniyor lütfen bekleyin...</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Geri bildirim gönder</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\n    <value>Đang nạp, vui lòng đợi...</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Gửi phản hồi</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\n    <value>加载中,请等待...</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>提交反馈</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/FeedbackWindow.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"loadingLabel.Text\" xml:space=\"preserve\">\n    <value>載入中，請稍待...</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>提交回饋</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/ListLegendWindow.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class ListLegendWindow\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            components = new System.ComponentModel.Container();\r\n            opacityResetTimer = new System.Windows.Forms.Timer(components);\r\n            listLegend1 = new BulkCrapUninstaller.Controls.ListLegend();\r\n            SuspendLayout();\r\n            // \r\n            // opacityResetTimer\r\n            // \r\n            opacityResetTimer.Interval = 25;\r\n            opacityResetTimer.Tick += opacityResetTimer_Tick;\r\n            // \r\n            // listLegend1\r\n            // \r\n            listLegend1.AutoSize = true;\r\n            listLegend1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;\r\n            listLegend1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r\n            listLegend1.Cursor = System.Windows.Forms.Cursors.Hand;\r\n            listLegend1.Location = new System.Drawing.Point(0, 0);\r\n            listLegend1.Margin = new System.Windows.Forms.Padding(5, 3, 5, 3);\r\n            listLegend1.MinimumSize = new System.Drawing.Size(184, 2);\r\n            listLegend1.Name = \"listLegend1\";\r\n            listLegend1.Size = new System.Drawing.Size(184, 163);\r\n            listLegend1.TabIndex = 0;\r\n            // \r\n            // ListLegendWindow\r\n            // \r\n            AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            AutoSize = true;\r\n            AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;\r\n            BackColor = System.Drawing.Color.Fuchsia;\r\n            ClientSize = new System.Drawing.Size(350, 346);\r\n            ControlBox = false;\r\n            Controls.Add(listLegend1);\r\n            FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;\r\n            Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);\r\n            MaximizeBox = false;\r\n            MinimizeBox = false;\r\n            Name = \"ListLegendWindow\";\r\n            ShowIcon = false;\r\n            ShowInTaskbar = false;\r\n            SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;\r\n            StartPosition = System.Windows.Forms.FormStartPosition.Manual;\r\n            Text = \"ListLegendWindow\";\r\n            TransparencyKey = System.Drawing.Color.Fuchsia;\r\n            EnabledChanged += ListLegendWindow_EnabledChanged;\r\n            VisibleChanged += ListLegendWindow_VisibleChanged;\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private Controls.ListLegend listLegend1;\r\n        private System.Windows.Forms.Timer opacityResetTimer;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/ListLegendWindow.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.ComponentModel;\r\nusing System.Drawing;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Controls;\r\nusing Klocman.Extensions;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class ListLegendWindow : Form\r\n    {\r\n        private const double OpacityChangeAmount = .12;\r\n\r\n        public ListLegendWindow()\r\n        {\r\n            InitializeComponent();\r\n\r\n            listLegend1.CloseRequested += (sender, args) =>\r\n            {\r\n                Visible = false;\r\n                Owner.Focus();\r\n            };\r\n\r\n            foreach (var control in this.GetAllChildren())\r\n            {\r\n                control.MouseLeave += ControlOnMouseEvent;\r\n                control.MouseEnter += ControlOnMouseEvent;\r\n            }\r\n        }\r\n\r\n        public void UpdatePosition(Control owner)\r\n        {\r\n            if (owner == null) throw new ArgumentNullException(nameof(owner));\r\n            if (!owner.Visible || owner.IsDisposed || owner.Disposing) return;\r\n\r\n            var local = new Point(owner.Width - Width - 30, owner.Height - Height - 30);\r\n            var global = owner.PointToScreen(local);\r\n            Location = global;\r\n        }\r\n\r\n        public ListLegend ListLegend => listLegend1;\r\n\r\n        private void ListLegendWindow_VisibleChanged(object sender, EventArgs e)\r\n        {\r\n            if (Opacity < .9)\r\n                opacityResetTimer.Start();\r\n        }\r\n\r\n        private void ListLegendWindow_EnabledChanged(object sender, EventArgs e)\r\n        {\r\n            if (Opacity < .9)\r\n                opacityResetTimer.Start();\r\n        }\r\n\r\n        private void opacityResetTimer_Tick(object sender, EventArgs e)\r\n        {\r\n            if (CheckMouseHover())\r\n            {\r\n                if (Math.Abs(Opacity - .3) < .03)\r\n                    opacityResetTimer.Stop();\r\n                else\r\n                    try { Opacity = OpacityLerp(.3); } catch (Win32Exception) { }\r\n            }\r\n            else\r\n            {\r\n                if (Math.Abs(Opacity - 1) < .03)\r\n                    opacityResetTimer.Stop();\r\n                else\r\n                    try { Opacity = OpacityLerp(1); } catch (Win32Exception) { }\r\n            }\r\n        }\r\n\r\n        private double OpacityLerp(double target)\r\n        {\r\n            return Opacity > target\r\n                ? Math.Max(target, Opacity - OpacityChangeAmount)\r\n                : Math.Min(target, Opacity + OpacityChangeAmount);\r\n        }\r\n\r\n        private void ControlOnMouseEvent(object sender, EventArgs eventArgs)\r\n        {\r\n            opacityResetTimer.Start();\r\n        }\r\n\r\n        private bool CheckMouseHover()\r\n        {\r\n            var pt = PointToClient(Cursor.Position);\r\n            return ClientRectangle.Contains(pt);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/ListLegendWindow.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <metadata name=\"opacityResetTimer.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class NewsPopup\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NewsPopup));\r\n            labelTitle = new System.Windows.Forms.Label();\r\n            label3 = new System.Windows.Forms.Label();\r\n            linkLabel1 = new System.Windows.Forms.LinkLabel();\r\n            linkLabel2 = new System.Windows.Forms.LinkLabel();\r\n            linkLabel3 = new System.Windows.Forms.LinkLabel();\r\n            linkLabel4 = new System.Windows.Forms.LinkLabel();\r\n            linkLabel5 = new System.Windows.Forms.LinkLabel();\r\n            linkLabel6 = new System.Windows.Forms.LinkLabel();\r\n            linkLabel7 = new System.Windows.Forms.LinkLabel();\r\n            label1 = new System.Windows.Forms.Label();\r\n            checkBoxNeverShow = new System.Windows.Forms.CheckBox();\r\n            tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();\r\n            tableLayoutPanel1.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // labelTitle\r\n            // \r\n            resources.ApplyResources(labelTitle, \"labelTitle\");\r\n            labelTitle.Name = \"labelTitle\";\r\n            labelTitle.Click += Close;\r\n            // \r\n            // label3\r\n            // \r\n            resources.ApplyResources(label3, \"label3\");\r\n            label3.Name = \"label3\";\r\n            label3.Click += Close;\r\n            // \r\n            // linkLabel1\r\n            // \r\n            resources.ApplyResources(linkLabel1, \"linkLabel1\");\r\n            linkLabel1.Name = \"linkLabel1\";\r\n            linkLabel1.TabStop = true;\r\n            linkLabel1.LinkClicked += linkLabel1_LinkClicked;\r\n            // \r\n            // linkLabel2\r\n            // \r\n            resources.ApplyResources(linkLabel2, \"linkLabel2\");\r\n            linkLabel2.Name = \"linkLabel2\";\r\n            linkLabel2.TabStop = true;\r\n            linkLabel2.LinkClicked += linkLabel2_LinkClicked;\r\n            // \r\n            // linkLabel3\r\n            // \r\n            resources.ApplyResources(linkLabel3, \"linkLabel3\");\r\n            linkLabel3.Name = \"linkLabel3\";\r\n            linkLabel3.TabStop = true;\r\n            linkLabel3.LinkClicked += linkLabel3_LinkClicked;\r\n            // \r\n            // linkLabel4\r\n            // \r\n            resources.ApplyResources(linkLabel4, \"linkLabel4\");\r\n            linkLabel4.Name = \"linkLabel4\";\r\n            linkLabel4.TabStop = true;\r\n            linkLabel4.LinkClicked += linkLabel4_LinkClicked;\r\n            // \r\n            // linkLabel5\r\n            // \r\n            resources.ApplyResources(linkLabel5, \"linkLabel5\");\r\n            linkLabel5.Name = \"linkLabel5\";\r\n            linkLabel5.TabStop = true;\r\n            linkLabel5.LinkClicked += linkLabel5_LinkClicked;\r\n            // \r\n            // linkLabel6\r\n            // \r\n            resources.ApplyResources(linkLabel6, \"linkLabel6\");\r\n            linkLabel6.Name = \"linkLabel6\";\r\n            linkLabel6.TabStop = true;\r\n            linkLabel6.LinkClicked += linkLabel6_LinkClicked;\r\n            // \r\n            // linkLabel7\r\n            // \r\n            resources.ApplyResources(linkLabel7, \"linkLabel7\");\r\n            linkLabel7.Name = \"linkLabel7\";\r\n            linkLabel7.TabStop = true;\r\n            linkLabel7.LinkClicked += linkLabel7_LinkClicked;\r\n            // \r\n            // label1\r\n            // \r\n            resources.ApplyResources(label1, \"label1\");\r\n            label1.Name = \"label1\";\r\n            label1.Click += Close;\r\n            // \r\n            // checkBoxNeverShow\r\n            // \r\n            resources.ApplyResources(checkBoxNeverShow, \"checkBoxNeverShow\");\r\n            checkBoxNeverShow.Name = \"checkBoxNeverShow\";\r\n            checkBoxNeverShow.UseVisualStyleBackColor = true;\r\n            // \r\n            // tableLayoutPanel1\r\n            // \r\n            resources.ApplyResources(tableLayoutPanel1, \"tableLayoutPanel1\");\r\n            tableLayoutPanel1.Controls.Add(label1, 0, 0);\r\n            tableLayoutPanel1.Controls.Add(checkBoxNeverShow, 1, 0);\r\n            tableLayoutPanel1.Name = \"tableLayoutPanel1\";\r\n            // \r\n            // NewsPopup\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            BackColor = System.Drawing.Color.White;\r\n            Controls.Add(tableLayoutPanel1);\r\n            Controls.Add(label3);\r\n            Controls.Add(linkLabel7);\r\n            Controls.Add(linkLabel4);\r\n            Controls.Add(linkLabel3);\r\n            Controls.Add(linkLabel2);\r\n            Controls.Add(linkLabel6);\r\n            Controls.Add(linkLabel5);\r\n            Controls.Add(linkLabel1);\r\n            Controls.Add(labelTitle);\r\n            ForeColor = System.Drawing.Color.Black;\r\n            FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;\r\n            MaximizeBox = false;\r\n            MinimizeBox = false;\r\n            Name = \"NewsPopup\";\r\n            ShowIcon = false;\r\n            ShowInTaskbar = false;\r\n            SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;\r\n            Click += Close;\r\n            tableLayoutPanel1.ResumeLayout(false);\r\n            tableLayoutPanel1.PerformLayout();\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.Label labelTitle;\r\n        private System.Windows.Forms.Label label3;\r\n        private System.Windows.Forms.LinkLabel linkLabel1;\r\n        private System.Windows.Forms.LinkLabel linkLabel2;\r\n        private System.Windows.Forms.LinkLabel linkLabel3;\r\n        private System.Windows.Forms.LinkLabel linkLabel4;\r\n        private System.Windows.Forms.LinkLabel linkLabel5;\r\n        private System.Windows.Forms.LinkLabel linkLabel6;\r\n        private System.Windows.Forms.LinkLabel linkLabel7;\r\n        private System.Windows.Forms.Label label1;\r\n        private System.Windows.Forms.CheckBox checkBoxNeverShow;\r\n        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>لا تظهر هذه النافذة في وقت مضى مره اخرى ، من اي وقت مضي</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions;\r\nusing BulkCrapUninstaller.Properties;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class NewsPopup : Form\r\n    {\r\n        private NewsPopup()\r\n        {\r\n            InitializeComponent();\r\n\r\n            if (DesignMode) return;\r\n\r\n            var version = Program.AssemblyVersion;\r\n            labelTitle.Text = string.Format(Program.IsAfterUpgrade ? Localisable.NewsPopup_UpdatedTitle : Localisable.NewsPopup_FirstStartTitle,\r\n                version.Major + \".\" + version.Minor + (version.Build > 0 ? \".\" + version.Build : string.Empty));\r\n\r\n            Settings.Default.SettingBinder.BindControl(checkBoxNeverShow, settings => settings.MiscFeedbackNagNeverShow, this);\r\n            Settings.Default.SettingBinder.SendUpdates(this);\r\n        }\r\n\r\n        public static void ShowPopup(Form owner)\r\n        {\r\n            if (Settings.Default.MiscFeedbackNagNeverShow) return;\r\n\r\n            using (var news = new NewsPopup())\r\n            {\r\n                news.StartPosition = FormStartPosition.CenterParent;\r\n                news.ShowDialog(owner);\r\n            }\r\n        }\r\n\r\n        private void Close(object sender, EventArgs e)\r\n        {\r\n            Close();\r\n        }\r\n\r\n        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            MainWindow.OpenUrls(new[] { new Uri(Resources.GithubReleasesLink) });\r\n        }\r\n\r\n        private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            MessageBoxes.DisplayHelp();\r\n        }\r\n\r\n        private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            FeedbackBox.ShowFeedbackBox(this, false);\r\n        }\r\n\r\n        private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            MainWindow.OpenUrls(new[] { new Uri(Resources.GithubLink) });\r\n        }\r\n\r\n        private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            MessageBoxes.DisplayLicense();\r\n        }\r\n\r\n        private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            MessageBoxes.DisplayPrivacyPolicy();\r\n        }\r\n\r\n        private void linkLabel7_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            MainWindow.OpenUrls(new[] { new Uri(Resources.DonateLink) });\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Nikdy nezobrazovat toto okno znovu</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Um den Dialog zu schließen, klicke in diesem Fenster irgendwo hin</value>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>Spende (PayPal, Bitcoin, Steam Geschenke)</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>Sende Feedback / Kontakt zum Entwickler</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>Hilfe lesen</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>Datenschutzrichtlinie</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>Lizenzbestimmungen</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>Zeige oder ändere den Source Code</value>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>Versionshinweise und Änderungen</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Spenden helfen bei der Weiterentwicklung dieses Projektes wie z.B. Zertifikate, Hosting und andere Keinigkeiten</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>Niemals mehr dieses Fenster zeigen</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>(Clic en cualquier lugar para cerrar este cuadro de diálogo)</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Donar en (PayPal, Bitcoin, Steam gifts)</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentarios/contactar al desarrollador</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>Leer el archivo de ayuda</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Leer la política de privacidad</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Leer la licencia</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>Ver el código fuente o contribuir</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>Ver notas de la versión y registro de cambios</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Las donaciones ayudan a mantenerme interesado en este proyecto, así como a pagar certificados de firma de código, hosting y otras necesidades.</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>No volver a mostrar esta ventana</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>(Cliquez n'importe où pour fermer cette fenêtre)</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Donner (Paypal, Bitcoin, cadeaux Steam)</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>Envoyez un retour / Contacter le développeur</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>Lire le fichier d'aide</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Lire la politique de confidentialité</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Lire la licence</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>Voir le code source ou contribuer</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>Voir les notes de mise à jour et le journal de modifications</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Les dons me permettent de rester intéressé par ce projet et de financer les certificats de signature de code, l'hébergement et autres dépenses nécessaires.</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Ne plus jamais montrer cette fenêtre.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>Ne jelenjen meg ez az oldal többé</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Adományok segítségével tudom fenntartani érdeklődésemet a projekt iránt, valamint fedezni tudom a kódaláírási tanúsítványokat, a tárhelyszolgáltatásokat és egyéb szükséges költségeket.</value>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>Kiadási megjegyzések és változásnapló megtekintése</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>Forráskód megtekintése és közreműködés</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>Licensz elolvasása</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>Adatvédelmi nyilatkozat elolvasása</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>Sugófájl elolvasása</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>Visszajelzés küldése / Kapcsolatfelvétel a fejlesztővel</value>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>Adományozás (PayPal, Bitcoin, Steam Ajándékkártyák)</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>(Kattintson bárhová az ablak bezárásához)</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>(per chiudere questo messaggio fai clic in qualunque punto)</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Dona (via PayPal, Bitcoin, Steam gift)</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>Invia feedback/contatta lo sviluppatore</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>Consulta il file della guida in linea</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Leggi la politica della privacy</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Leggi la licenza</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>visualizza il codice sorgente o contribuisci</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>Leggi le note della versione e i cambiamenti</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Le donazioni aiutano a finanziare il progetto e a pagare i certificati per la firma del codice sorgente, l'hosting e altre necessità.</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Non visualizzare più questa finestra</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>寄付はこのプロジェクトへの関心を保ち、コード署名証明書、ホスティング、その他の必要経費を賄うのに役立ちます。</value>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>リリースノートと変更履歴を見る</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>ソースコードを閲覧または貢献する</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>ライセンスを読む</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>プライバシーポリシーを読む</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>ヘルプファイルを読む</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>フィードバックを送信 / 開発者に連絡</value>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>寄付する（PayPal、Bitcoin、Steamギフト）</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>（このダイアログを閉じるには、画面のどこかをクリックしてください）</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>このウィンドウを二度と表示しない</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Donaties helpen mij om mijn interesse te bewaren in dit project. Evenals betalingen voor code ondertekening van certificaten, hosting en andere benodigdheden.</value>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>Bekijk de release notities en het wijzigingen logboek</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>Bekijk de broncode of draag daaraan bij</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>Lees de licentie</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>Lees de privacyverklaring</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>Lees het helpbestand</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>Stuur feedback / Neem contact op met de ontwikkelaar</value>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>Doneer (PayPal, Bitcoin, Steam giften)</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>(Klik ergens om dit dialoogvenster te sluiten)</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>Toon dit venster nooit meer</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>(Kliknij w dowolnym miejscu aby zamknąć to okno)</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Darowizna (PayPal, Bitcoin, prezenty Steam)</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>Wyślij Feedback / Kontakt z deweloperem</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>Przeczytaj plik pomocy</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Przeczytaj politykę prywatności</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Przeczytaj licencje</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>Sprawdź kod źródłowy</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>Zobacz informacje o wersji i dziennik zmian</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Darowizny pomagają mi zainteresować się tym projektem, a także płacić za certyfikaty podpisywania kodu, hosting i inne potrzebne rzeczy.</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Nigdy nie pokazuj ponownie tego okna</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.pt-br.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>Nunca mais mostrar esta janela.</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Doações me ajudam a manter interesse nesse projeto e também por assinatura de certificados para o código, hospedagem e outras necessidades.</value>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>Ver notas de lançamento e registro de alterações</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>Ver o código-fonte ou contribuir</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>Ler a licença</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>Ler política de privacidade</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>Ler arquivo de ajuda</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>Enviar feedback / Contatar o desenvolvedor</value>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>Doar (Paypal, Bitcoin, Steam gifts)</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>(Clique em qualquer lugar para fechar o diálogo)</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>Nunca mais mostrar esta janela.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelTitle.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelTitle.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"labelTitle.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 18pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"labelTitle.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 7</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelTitle.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelTitle.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>572, 0</value>\r\n  </data>\r\n  <data name=\"labelTitle.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>0, 35</value>\r\n  </data>\r\n  <data name=\"labelTitle.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 23</value>\r\n  </data>\r\n  <data name=\"labelTitle.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>0, 52</value>\r\n  </data>\r\n  <data name=\"labelTitle.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelTitle.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>TopCenter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelTitle.Name\" xml:space=\"preserve\">\r\n    <value>labelTitle</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelTitle.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelTitle.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelTitle.ZOrder\" xml:space=\"preserve\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"label3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label3.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 8.25pt</value>\r\n  </data>\r\n  <data name=\"label3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 282</value>\r\n  </data>\r\n  <data name=\"label3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label3.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>572, 0</value>\r\n  </data>\r\n  <data name=\"label3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 23</value>\r\n  </data>\r\n  <data name=\"label3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>541, 49</value>\r\n  </data>\r\n  <data name=\"label3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Donations help keep me interested in this project, as well as pay for code signing certificates, hosting, and other necessities.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label3.Name\" xml:space=\"preserve\">\r\n    <value>label3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label3.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label3.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"linkLabel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 9.75pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 59</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 12</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>253, 28</value>\r\n  </data>\r\n  <data name=\"linkLabel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>View release notes and changelog</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel1.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"linkLabel2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 9.75pt</value>\r\n  </data>\r\n  <data name=\"linkLabel2.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 154</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 23</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>218, 39</value>\r\n  </data>\r\n  <data name=\"linkLabel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>View the source code or contribute</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel2.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel2.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"linkLabel3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 9.75pt</value>\r\n  </data>\r\n  <data name=\"linkLabel3.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 193</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 12</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>115, 28</value>\r\n  </data>\r\n  <data name=\"linkLabel3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Read the licence</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel3.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel3.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel3.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"linkLabel4.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 9.75pt</value>\r\n  </data>\r\n  <data name=\"linkLabel4.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 221</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 23</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>155, 39</value>\r\n  </data>\r\n  <data name=\"linkLabel4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Read the privacy policy</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel4.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel4.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel4.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"linkLabel5.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 9.75pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"linkLabel5.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 87</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 23</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>136, 39</value>\r\n  </data>\r\n  <data name=\"linkLabel5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>Read the help file</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel5.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel5.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel5.ZOrder\" xml:space=\"preserve\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"linkLabel6.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 9.75pt</value>\r\n  </data>\r\n  <data name=\"linkLabel6.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 126</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 12</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>247, 28</value>\r\n  </data>\r\n  <data name=\"linkLabel6.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>Send feedback / Contact the developer</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel6.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel6.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel6.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel6.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"linkLabel7.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 9.75pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"linkLabel7.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 260</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 6</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>268, 22</value>\r\n  </data>\r\n  <data name=\"linkLabel7.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Donate (PayPal, Bitcoin, Steam gifts)</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel7.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel7.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel7.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel7.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"label1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label1.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 9.75pt</value>\r\n  </data>\r\n  <data name=\"label1.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 0</value>\r\n  </data>\r\n  <data name=\"label1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label1.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>572, 0</value>\r\n  </data>\r\n  <data name=\"label1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 2, 0, 0</value>\r\n  </data>\r\n  <data name=\"label1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>226, 18</value>\r\n  </data>\r\n  <data name=\"label1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>11</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>(Click anywhere to close this dialog)</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Name\" xml:space=\"preserve\">\r\n    <value>label1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>383, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>187, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>12</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Never show this window again</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxNeverShow.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxNeverShow</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxNeverShow.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxNeverShow.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxNeverShow.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 331</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>574, 25</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tableLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tableLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tableLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tableLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.LayoutSettings\" type=\"System.Windows.Forms.TableLayoutSettings, System.Windows.Forms\">\r\n    <value>&lt;?xml version=\"1.0\" encoding=\"utf-16\"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name=\"label1\" Row=\"0\" RowSpan=\"1\" Column=\"0\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"checkBoxNeverShow\" Row=\"0\" RowSpan=\"1\" Column=\"1\" ColumnSpan=\"1\" /&gt;&lt;/Controls&gt;&lt;Columns Styles=\"AutoSize,0,AutoSize,0\" /&gt;&lt;Rows Styles=\"AutoSize,0\" /&gt;&lt;/TableLayoutSettings&gt;</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"$this.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>588, 464</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>604, 102557</value>\r\n  </data>\r\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>604, 39</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 20</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>NewsPopup</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Никогда не показывать это окно снова</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Пожертвования позволяют мне не терять интерес к этому проекту, а также — оплачивать подписные сертификаты кода, хостинг и другую важную деятельность.  </value>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>Посмотреть примечания к релизу и историю изменений</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>Посмотреть исходный код или внести свой вклад</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Лицензию</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Политика конфиденциальности</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>Справка</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>Отправить отзыв / Связаться с разработчиком</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Пожертвовать (PayPal, Bitcoin, Steam gifts)</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>(Кликните в любом месте, чтобы закрыть)</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>(Kliknite kjerkoli, da zaprete to pogovorno okno)</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Darujte (PayPal, Bitcoin, darila Steam)</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>Pošljite povratne informacije/obrnite se na razvijalca</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>Preberite datoteko pomoči</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Preberite pravilnik o zasebnosti</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Preberite licenco</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>Ogled izvorne kodo ali prispevkov</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>Ogled opomb o izdaji in dnevnika sprememb</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Darila mi pomagajo, da ohranim zanimanje za ta projekt, pa tudi kot plačailo potrebnih digitalnih potrdil kode, gostovanja in drugih potreb.</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\r\n    <value>Tega okna ne prikazuj nikoli več</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Donationer hjälper mig att fortsätta intressera mig för detta projekt, samt att betala för kodsigneringscertifikat, webbhotell och andra nödvändigheter.</value>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>Visa versionsnoteringar och ändringslogg</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>Visa källkoden eller bidra</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>Läs licensen</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>Läs integritetspolicyn</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>Läs hjälpfilen</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>Skicka feedback / Kontakta utvecklaren</value>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>Donera (PayPal, Bitcoin, Steam gifts)</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>(Klicka var som helst för att stänga denna dialog)</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>Visa aldrig detta fönstret igen</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>(Bu iletişim kutusunu kapatmak için herhangi bir yere tıklayın)</value>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>Bağış (PayPal, Bitcoin, Steam hediyeleri)</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>Geri bildirim gönder / Geliştiriciye başvurun</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>Yardım dosyasını okuyun</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>Gizlilik politikasını okuyun</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>Lisansı oku</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>Kaynak kodunu görüntüleyin veya katkıda bulunun</value>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>Sürüm notlarını ve changelog'u görüntüle</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Bağışlar, bu projeyle ilgilenmeme yardımcı olurken, kod imzalama sertifikaları, barındırma ve diğer gereksinimler için de ödeme yapmanıza yardımcı olur.</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>Bu pencereyi bir daha asla gösterme</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Các khoản tài trợ giúp tôi duy trì sự hứng thú với dự án này, đồng thời cũng để thanh toán chi phí cho chứng chỉ ký code, lưu trữ và các nhu cầu cần thiết khác.</value>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>Xem các bản ghi chú phát hành và nhật ký thay đổi</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>Xem mã nguồn hoặc đóng góp</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>Đọc giấy phép</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>Đọc chính sách bảo mật</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>Đọc tệp tin trợ giúp</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>Gửi phản hồi / Liên hệ với nhà phát triển</value>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>Quyên góp (PayPal, Bitcoin, Steam gifts)</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>(Nhấp chuột vào bất cứ đâu để đóng hộp thoại này)</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>Không bao giờ hiển thị lại cửa sổ này nữa</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>捐款帮助我保持对这个项目的兴趣，以及支付代码签名证书,托管和其他必需的费用。</value>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>查看发行说明和更新日志</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>查看源代码或贡献</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>查看许可证</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>查看隐私政策</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>查看帮助文件</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>发送反馈/联系开发者</value>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>捐款(PayPal,Bitcoin,Steam礼物)</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>(单击任意位置关闭此对话框)</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>不再显示此窗口</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/NewsPopup.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>捐款幫助我保持對這個項目的興趣，以及支付程式碼簽名證書，主機和其他必需的費用。</value>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>查看發行說明和更新日誌</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>查看程式碼或貢獻</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>查看許可證</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>查看隱私政策</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>查看幫助文件</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>傳送回饋/聯絡開發者</value>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>捐款(PayPal,BitCoin,Steam 禮物)</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>(點擊任何位置關閉此視窗</value>\n  </data>\n  <data name=\"checkBoxNeverShow.Text\" xml:space=\"preserve\">\n    <value>不再顯示此視窗</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.Designer.cs",
    "content": "﻿using System.ComponentModel;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class PropertiesWindow\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            components = new Container();\r\n            ComponentResourceManager resources = new ComponentResourceManager(typeof(PropertiesWindow));\r\n            contextMenuStrip1 = new ContextMenuStrip(components);\r\n            copyToClipboardToolStripMenuItem = new ToolStripMenuItem();\r\n            saveToFileToolStripMenuItem = new ToolStripMenuItem();\r\n            saveFileDialog1 = new SaveFileDialog();\r\n            tabControl1 = new TabControl();\r\n            tabPage1 = new TabPage();\r\n            tabPage2 = new TabPage();\r\n            dataGridView1 = new DataGridView();\r\n            tabControl2 = new TabControl();\r\n            tabPageOverview = new TabPage();\r\n            tabPageFileInfo = new TabPage();\r\n            tabPageRegistry = new TabPage();\r\n            tabPageCertificate = new TabPage();\r\n            contextMenuStrip1.SuspendLayout();\r\n            tabControl1.SuspendLayout();\r\n            ((ISupportInitialize)dataGridView1).BeginInit();\r\n            tabControl2.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // contextMenuStrip1\r\n            // \r\n            contextMenuStrip1.Items.AddRange(new ToolStripItem[] { copyToClipboardToolStripMenuItem, saveToFileToolStripMenuItem });\r\n            contextMenuStrip1.Name = \"contextMenuStrip1\";\r\n            resources.ApplyResources(contextMenuStrip1, \"contextMenuStrip1\");\r\n            contextMenuStrip1.Opening += contextMenuStrip1_Opening;\r\n            // \r\n            // copyToClipboardToolStripMenuItem\r\n            // \r\n            copyToClipboardToolStripMenuItem.Image = Properties.Resources.pagecopy;\r\n            copyToClipboardToolStripMenuItem.Name = \"copyToClipboardToolStripMenuItem\";\r\n            resources.ApplyResources(copyToClipboardToolStripMenuItem, \"copyToClipboardToolStripMenuItem\");\r\n            copyToClipboardToolStripMenuItem.Click += copyToClipboardToolStripMenuItem_Click;\r\n            // \r\n            // saveToFileToolStripMenuItem\r\n            // \r\n            saveToFileToolStripMenuItem.Image = Properties.Resources.save;\r\n            saveToFileToolStripMenuItem.Name = \"saveToFileToolStripMenuItem\";\r\n            resources.ApplyResources(saveToFileToolStripMenuItem, \"saveToFileToolStripMenuItem\");\r\n            saveToFileToolStripMenuItem.Click += saveToFileToolStripMenuItem_Click;\r\n            // \r\n            // saveFileDialog1\r\n            // \r\n            saveFileDialog1.DefaultExt = \"txt\";\r\n            resources.ApplyResources(saveFileDialog1, \"saveFileDialog1\");\r\n            saveFileDialog1.FileOk += saveFileDialog1_FileOk;\r\n            // \r\n            // tabControl1\r\n            // \r\n            tabControl1.Controls.Add(tabPage1);\r\n            tabControl1.Controls.Add(tabPage2);\r\n            resources.ApplyResources(tabControl1, \"tabControl1\");\r\n            tabControl1.Name = \"tabControl1\";\r\n            tabControl1.SelectedIndex = 0;\r\n            tabControl1.SelectedIndexChanged += OnSelectedTabChanged;\r\n            // \r\n            // tabPage1\r\n            // \r\n            resources.ApplyResources(tabPage1, \"tabPage1\");\r\n            tabPage1.Name = \"tabPage1\";\r\n            tabPage1.UseVisualStyleBackColor = true;\r\n            // \r\n            // tabPage2\r\n            // \r\n            resources.ApplyResources(tabPage2, \"tabPage2\");\r\n            tabPage2.Name = \"tabPage2\";\r\n            tabPage2.UseVisualStyleBackColor = true;\r\n            // \r\n            // dataGridView1\r\n            // \r\n            dataGridView1.AllowUserToAddRows = false;\r\n            dataGridView1.AllowUserToDeleteRows = false;\r\n            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;\r\n            dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;\r\n            dataGridView1.BorderStyle = BorderStyle.Fixed3D;\r\n            dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;\r\n            dataGridView1.ContextMenuStrip = contextMenuStrip1;\r\n            resources.ApplyResources(dataGridView1, \"dataGridView1\");\r\n            dataGridView1.Name = \"dataGridView1\";\r\n            dataGridView1.ReadOnly = true;\r\n            dataGridView1.RowHeadersVisible = false;\r\n            dataGridView1.ShowEditingIcon = false;\r\n            dataGridView1.KeyUp += dataGridView1_KeyUp;\r\n            // \r\n            // tabControl2\r\n            // \r\n            tabControl2.Controls.Add(tabPageOverview);\r\n            tabControl2.Controls.Add(tabPageFileInfo);\r\n            tabControl2.Controls.Add(tabPageRegistry);\r\n            tabControl2.Controls.Add(tabPageCertificate);\r\n            resources.ApplyResources(tabControl2, \"tabControl2\");\r\n            tabControl2.Name = \"tabControl2\";\r\n            tabControl2.SelectedIndex = 0;\r\n            tabControl2.SelectedIndexChanged += OnSelectedTabChanged;\r\n            // \r\n            // tabPageOverview\r\n            // \r\n            resources.ApplyResources(tabPageOverview, \"tabPageOverview\");\r\n            tabPageOverview.Name = \"tabPageOverview\";\r\n            tabPageOverview.UseVisualStyleBackColor = true;\r\n            // \r\n            // tabPageFileInfo\r\n            // \r\n            resources.ApplyResources(tabPageFileInfo, \"tabPageFileInfo\");\r\n            tabPageFileInfo.Name = \"tabPageFileInfo\";\r\n            tabPageFileInfo.UseVisualStyleBackColor = true;\r\n            // \r\n            // tabPageRegistry\r\n            // \r\n            resources.ApplyResources(tabPageRegistry, \"tabPageRegistry\");\r\n            tabPageRegistry.Name = \"tabPageRegistry\";\r\n            tabPageRegistry.UseVisualStyleBackColor = true;\r\n            // \r\n            // tabPageCertificate\r\n            // \r\n            resources.ApplyResources(tabPageCertificate, \"tabPageCertificate\");\r\n            tabPageCertificate.Name = \"tabPageCertificate\";\r\n            tabPageCertificate.UseVisualStyleBackColor = true;\r\n            // \r\n            // PropertiesWindow\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = AutoScaleMode.Font;\r\n            Controls.Add(dataGridView1);\r\n            Controls.Add(tabControl2);\r\n            Controls.Add(tabControl1);\r\n            KeyPreview = true;\r\n            Name = \"PropertiesWindow\";\r\n            KeyDown += PropertiesWindow_KeyDown;\r\n            contextMenuStrip1.ResumeLayout(false);\r\n            tabControl1.ResumeLayout(false);\r\n            ((ISupportInitialize)dataGridView1).EndInit();\r\n            tabControl2.ResumeLayout(false);\r\n            ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private ContextMenuStrip contextMenuStrip1;\r\n        private ToolStripMenuItem copyToClipboardToolStripMenuItem;\r\n        private ToolStripMenuItem saveToFileToolStripMenuItem;\r\n        private SaveFileDialog saveFileDialog1;\r\n        private TabControl tabControl1;\r\n        private TabPage tabPage1;\r\n        private TabPage tabPage2;\r\n        private DataGridView dataGridView1;\r\n        private TabControl tabControl2;\r\n        private TabPage tabPageOverview;\r\n        private TabPage tabPageFileInfo;\r\n        private TabPage tabPageRegistry;\r\n        private TabPage tabPageCertificate;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>نسخ الى الحافظة</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>حفظ الى ملف...</value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Text files|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>حفظ البيانات الى ملف</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>نظرة عامة</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>معلومات الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>مكتب التسجيل</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>شهادة</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>الخصائص</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Drawing;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms.Tools;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    sealed partial class PropertiesWindow : Form\r\n    {\r\n        private readonly string _titleBeginning;\r\n\r\n        public PropertiesWindow()\r\n        {\r\n            InitializeComponent();\r\n\r\n            Icon = Resources.Icon_Logo;\r\n\r\n            _titleBeginning = Text;\r\n        }\r\n\r\n        private InfoType CurrentlyVisiblePage\r\n        {\r\n            get\r\n            {\r\n                switch (tabControl2.SelectedIndex)\r\n                {\r\n                    case 0:\r\n                        return InfoType.Overview;\r\n                    case 1:\r\n                        return InfoType.FileInfo;\r\n                    case 2:\r\n                        return InfoType.Registry;\r\n                    case 3:\r\n                        return InfoType.Certificate;\r\n                    default:\r\n                        return InfoType.Invalid;\r\n                }\r\n            }\r\n        }\r\n\r\n        public void ShowPropertiesDialog(IEnumerable<ApplicationUninstallerEntry> targets)\r\n        {\r\n            var applicationUninstallerEntries = targets as IList<ApplicationUninstallerEntry> ?? targets.ToList();\r\n\r\n            if (applicationUninstallerEntries.Count <= 0) return;\r\n\r\n            UseWaitCursor = true;\r\n\r\n            tabControl1.Visible = applicationUninstallerEntries.Count > 1;\r\n            tabControl1.TabPages.Clear();\r\n            applicationUninstallerEntries.OrderBy(x => x.DisplayName)\r\n                .ForEach(x => tabControl1.TabPages.Add(new TabPage(x.DisplayName) {Tag = x}));\r\n\r\n            OnSelectedTabChanged(this, EventArgs.Empty);\r\n\r\n            StartPosition = FormStartPosition.CenterParent;\r\n            ShowDialog();\r\n        }\r\n\r\n        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)\r\n        {\r\n            if (dataGridView1.SelectedCells.Count < 0)\r\n                e.Cancel = true;\r\n        }\r\n\r\n        private void copyToClipboardToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            try\r\n            {\r\n                var content = dataGridView1.GetClipboardContent();\r\n                if (content != null) Clipboard.SetDataObject(content, true);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n            }\r\n        }\r\n\r\n        private void dataGridView1_KeyUp(object sender, KeyEventArgs e)\r\n        {\r\n            if (e.KeyCode == Keys.Apps)\r\n            {\r\n                if (dataGridView1.SelectedCells.Count > 0)\r\n                    contextMenuStrip1.Show(dataGridView1.PointToScreen(Point.Empty));\r\n                e.Handled = true;\r\n            }\r\n        }\r\n\r\n        private void OnSelectedTabChanged(object sender, EventArgs e)\r\n        {\r\n            if (tabControl1.SelectedTab == null)\r\n                return;\r\n\r\n            UseWaitCursor = true;\r\n            Application.DoEvents();\r\n\r\n            dataGridView1.DataSource = AppPropertiesGatherer.GetInfo(tabControl1.SelectedTab.Tag as ApplicationUninstallerEntry, CurrentlyVisiblePage);\r\n\r\n            // Make first column shorter, since it contains much less text. Default FillWeight is around 34\r\n            var firstColumn = dataGridView1.Columns.GetFirstColumn(new DataGridViewElementStates());\r\n            if (firstColumn != null)\r\n            {\r\n                firstColumn.FillWeight = 35f;\r\n                dataGridView1.Sort(firstColumn, ListSortDirection.Ascending);\r\n            }\r\n\r\n            Text = _titleBeginning + tabControl1.SelectedTab.Text;\r\n\r\n            UseWaitCursor = false;\r\n        }\r\n\r\n        private void PropertiesWindow_KeyDown(object sender, KeyEventArgs e)\r\n        {\r\n            if (e.KeyCode == Keys.Escape)\r\n            {\r\n                if (contextMenuStrip1.Visible)\r\n                    contextMenuStrip1.Hide();\r\n                else\r\n                    Hide();\r\n\r\n                e.Handled = true;\r\n            }\r\n        }\r\n\r\n        private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)\r\n        {\r\n            var content = dataGridView1.GetClipboardContent();\r\n            if (content != null)\r\n            {\r\n                try\r\n                {\r\n                    File.WriteAllText(saveFileDialog1.FileName, content.GetText());\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    MessageBoxes.ExportFailed(ex.Message, this);\r\n                }\r\n            }\r\n        }\r\n\r\n        private void saveToFileToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            saveFileDialog1.ShowDialog();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zkopírovat do schránky</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Uložit do souboru ...</value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Textové soubory|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Uložit data do souboru</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>Přehled</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>Informace o odinstalátoru</value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registry</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>Certifikát</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Vlastnosti</value>\r\n  </data>\r\n  <metadata name=\"contextMenuStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"saveFileDialog1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>162, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>In die Zwischenablage kopieren</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Datei speichern...</value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Textdateien|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Daten in Datei speichern</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>Übersicht</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>Uninstaller Information</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>Zertifikat</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Eigenschaften </value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registry</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Copiar al portapapeles</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Guardar al archivo...</value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Archivos de texto|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Guardar información al archivo</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>Información del desinstalador</value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registro</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>Certificados</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Propiedades</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>Visión general</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Copier dans le presse-papiers</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Sauver dans un fichier...</value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Fichiers texte|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Sauver les données dans un fichier</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>Aperçu</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>Information du désinstalleur</value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registre</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>Certificat</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Propriétés </value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Másolás a Vágólapra</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mentés fájlba...</value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Szövegfájlok|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Adatmentés egy fájlba</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>Áttekintés</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítási információ</value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Beállításjegyzék</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>Tanúsítvány</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Tulajdonságok </value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Copia negli Appunti</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Salva nel file...</value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>File testo|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Salva informazioni in un file</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>Panoramica</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>Informazioni sul disinstallatore</value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registro</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>Certificato</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Proprietà</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>クリップボードにコピー</value>\n  </data>\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>ファイルに保存...</value>\n  </data>\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>テキストファイル|*.txt</value>\n    <comment>keep the |*.txt</comment>\n  </data>\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\n    <value>データをファイルに保存</value>\n  </data>\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\n    <value>概要</value>\n  </data>\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\n    <value>アンインストーラー情報</value>\n  </data>\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\n    <value>レジストリ</value>\n  </data>\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\n    <value>証明書</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>プロパティ</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Kopieer naar klembord</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Bestand opslaan...</value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Tekst bestanden|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Gegevens in een bestand opslaan</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>Overzicht</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>De-installer informatie</value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Register</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>Certificaat</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Eigenschappen</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Kopiuj do schowka</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zapisz do pliku...</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>Ogólne</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>Informacje o dezinstalatorze</value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Rejestr</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Właściwości </value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Pliki tekstowe|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Zapisz dane do pliku</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>Certyfikat</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Copiar para a Área de Transferência</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Salvar num Arquivo...</value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Arquivos texto|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Salvar dados no arquivo</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>Visão geral</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>Informação do desinstalador</value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registro</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>Certificado</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Propriedades</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Copiar para a Área de Transferência</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Salvar num ficheiro...</value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Ficheiros de texto|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Salvar os dados num ficheiro</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>Visão geral</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>Informação do desinstalador</value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registo</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>Certificado</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Propriedades</value>\r\n  </data>\r\n  <metadata name=\"contextMenuStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"saveFileDialog1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>162, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals of this format is to allow a simple XML format\n    that is mostly human readable. The generation and parsing of the\n    various data types are done through the TypeConverter classes\n    associated with the data types.\n\n    Example:\n\n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n\n    There are any number of \"resheader\" rows that contain simple\n    name/value pairs.\n\n    Each data row contains a name, and value. The row also contains a\n    type or mimetype. Type corresponds to a .NET class that support\n    text/value conversion through the TypeConverter architecture.\n    Classes that don't support this are serialized and stored with the\n    mimetype set.\n\n    The mimetype is used for serialized objects, and tells the\n    ResXResourceReader how to depersist the object. This is currently not\n    extensible. For a given mimetype the value must be set accordingly:\n\n    Note - application/x-microsoft.net.object.binary.base64 is the format\n    that the ResXResourceWriter will generate, however the reader can\n    read any of the formats listed below.\n\n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array\n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <metadata name=\"contextMenuStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>17, 17</value>\n  </metadata>\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\n  <data name=\"copyToClipboardToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>169, 22</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Copy to clipboard</value>\n  </data>\n  <data name=\"saveToFileToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>169, 22</value>\n  </data>\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Save to file...</value>\n  </data>\n  <data name=\"contextMenuStrip1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>170, 48</value>\n  </data>\n  <data name=\"&gt;&gt;contextMenuStrip1.Name\" xml:space=\"preserve\">\n    <value>contextMenuStrip1</value>\n  </data>\n  <data name=\"&gt;&gt;contextMenuStrip1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <metadata name=\"saveFileDialog1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>162, 17</value>\n  </metadata>\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>Text files|*.txt</value>\n  </data>\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\n    <value>Save data to file</value>\n  </data>\n  <data name=\"tabPage1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>4, 24</value>\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"tabPage1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"tabPage1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"tabPage1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>683, 0</value>\n  </data>\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"tabPage1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"&gt;&gt;tabPage1.Name\" xml:space=\"preserve\">\n    <value>tabPage1</value>\n  </data>\n  <data name=\"&gt;&gt;tabPage1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;tabPage1.Parent\" xml:space=\"preserve\">\n    <value>tabControl1</value>\n  </data>\n  <data name=\"&gt;&gt;tabPage1.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <data name=\"tabPage2.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>4, 24</value>\n  </data>\n  <data name=\"tabPage2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"tabPage2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"tabPage2.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>683, 0</value>\n  </data>\n  <data name=\"tabPage2.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>1</value>\n  </data>\n  <data name=\"&gt;&gt;tabPage2.Name\" xml:space=\"preserve\">\n    <value>tabPage2</value>\n  </data>\n  <data name=\"&gt;&gt;tabPage2.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;tabPage2.Parent\" xml:space=\"preserve\">\n    <value>tabControl1</value>\n  </data>\n  <data name=\"&gt;&gt;tabPage2.ZOrder\" xml:space=\"preserve\">\n    <value>1</value>\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"tabControl1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Top</value>\n  </data>\n  <data name=\"tabControl1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>0, 0</value>\n  </data>\n  <data name=\"tabControl1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"tabControl1.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>1166667, 28</value>\n  </data>\n  <data name=\"tabControl1.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>0, 24</value>\n  </data>\n  <data name=\"tabControl1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>691, 24</value>\n  </data>\n  <data name=\"tabControl1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>1</value>\n  </data>\n  <data name=\"&gt;&gt;tabControl1.Name\" xml:space=\"preserve\">\n    <value>tabControl1</value>\n  </data>\n  <data name=\"&gt;&gt;tabControl1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TabControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;tabControl1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;tabControl1.ZOrder\" xml:space=\"preserve\">\n    <value>3</value>\n  </data>\n  <data name=\"dataGridView1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Fill</value>\n  </data>\n  <data name=\"dataGridView1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>0, 52</value>\n  </data>\n  <data name=\"dataGridView1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"dataGridView1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>691, 377</value>\n  </data>\n  <data name=\"dataGridView1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"&gt;&gt;dataGridView1.Name\" xml:space=\"preserve\">\n    <value>dataGridView1</value>\n  </data>\n  <data name=\"&gt;&gt;dataGridView1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.DataGridView, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;dataGridView1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;dataGridView1.ZOrder\" xml:space=\"preserve\">\n    <value>1</value>\n  </data>\n  <data name=\"tabPageOverview.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>4, 24</value>\n  </data>\n  <data name=\"tabPageOverview.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"tabPageOverview.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>683, 0</value>\n  </data>\n  <data name=\"tabPageOverview.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\n    <value>Overview</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageOverview.Name\" xml:space=\"preserve\">\n    <value>tabPageOverview</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageOverview.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageOverview.Parent\" xml:space=\"preserve\">\n    <value>tabControl2</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageOverview.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <data name=\"tabPageFileInfo.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>4, 24</value>\n  </data>\n  <data name=\"tabPageFileInfo.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"tabPageFileInfo.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>683, 0</value>\n  </data>\n  <data name=\"tabPageFileInfo.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>1</value>\n  </data>\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\n    <value>Uninstaller information</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageFileInfo.Name\" xml:space=\"preserve\">\n    <value>tabPageFileInfo</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageFileInfo.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageFileInfo.Parent\" xml:space=\"preserve\">\n    <value>tabControl2</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageFileInfo.ZOrder\" xml:space=\"preserve\">\n    <value>1</value>\n  </data>\n  <data name=\"tabPageRegistry.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>4, 24</value>\n  </data>\n  <data name=\"tabPageRegistry.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"tabPageRegistry.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>683, 0</value>\n  </data>\n  <data name=\"tabPageRegistry.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>2</value>\n  </data>\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\n    <value>Registry</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageRegistry.Name\" xml:space=\"preserve\">\n    <value>tabPageRegistry</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageRegistry.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageRegistry.Parent\" xml:space=\"preserve\">\n    <value>tabControl2</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageRegistry.ZOrder\" xml:space=\"preserve\">\n    <value>2</value>\n  </data>\n  <data name=\"tabPageCertificate.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>4, 24</value>\n  </data>\n  <data name=\"tabPageCertificate.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"tabPageCertificate.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>683, 0</value>\n  </data>\n  <data name=\"tabPageCertificate.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>3</value>\n  </data>\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\n    <value>Certificate</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageCertificate.Name\" xml:space=\"preserve\">\n    <value>tabPageCertificate</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageCertificate.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageCertificate.Parent\" xml:space=\"preserve\">\n    <value>tabControl2</value>\n  </data>\n  <data name=\"&gt;&gt;tabPageCertificate.ZOrder\" xml:space=\"preserve\">\n    <value>3</value>\n  </data>\n  <data name=\"tabControl2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Top</value>\n  </data>\n  <data name=\"tabControl2.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>0, 24</value>\n  </data>\n  <data name=\"tabControl2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"tabControl2.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>1166667, 28</value>\n  </data>\n  <data name=\"tabControl2.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>0, 28</value>\n  </data>\n  <data name=\"tabControl2.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>691, 28</value>\n  </data>\n  <data name=\"tabControl2.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>2</value>\n  </data>\n  <data name=\"&gt;&gt;tabControl2.Name\" xml:space=\"preserve\">\n    <value>tabControl2</value>\n  </data>\n  <data name=\"&gt;&gt;tabControl2.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TabControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;tabControl2.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;tabControl2.ZOrder\" xml:space=\"preserve\">\n    <value>2</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\n    <value>7, 15</value>\n  </data>\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>691, 429</value>\n  </data>\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Properties </value>\n  </data>\n  <data name=\"&gt;&gt;copyToClipboardToolStripMenuItem.Name\" xml:space=\"preserve\">\n    <value>copyToClipboardToolStripMenuItem</value>\n  </data>\n  <data name=\"&gt;&gt;copyToClipboardToolStripMenuItem.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;saveToFileToolStripMenuItem.Name\" xml:space=\"preserve\">\n    <value>saveToFileToolStripMenuItem</value>\n  </data>\n  <data name=\"&gt;&gt;saveToFileToolStripMenuItem.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;saveFileDialog1.Name\" xml:space=\"preserve\">\n    <value>saveFileDialog1</value>\n  </data>\n  <data name=\"&gt;&gt;saveFileDialog1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\n    <value>PropertiesWindow</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Копировать в буфер</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Сохранить в файл...</value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Текстовый|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Сохранить данные в файл</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>Обзор</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>Информация о деинсталляторе</value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Реестр</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>Сертификат</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Свойства </value>\r\n  </data>\r\n  <metadata name=\"contextMenuStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"saveFileDialog1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>162, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Kopiraj v odložišče</value>\r\n  </data>\r\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Shrani v datoteko...</value>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\r\n    <value>Besedilne datoteke|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\r\n    <value>Shrani podatke v datoteko</value>\r\n  </data>\r\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\r\n    <value>Pregled</value>\r\n  </data>\r\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\r\n    <value>Informacije odstranjevalca</value>\r\n  </data>\r\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Register</value>\r\n  </data>\r\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\r\n    <value>Digitalno potrdilo</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Lastnosti</value>\r\n  </data>\r\n  <metadata name=\"contextMenuStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"saveFileDialog1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>162, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Kopiera till urklipp</value>\n  </data>\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Spara till fil...</value>\n  </data>\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>Text filer|*.txt</value>\n    <comment>keep the |*.txt</comment>\n  </data>\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\n    <value>Spara data till fil</value>\n  </data>\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\n    <value>Översikt</value>\n  </data>\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\n    <value>Avinstallationsinformation</value>\n  </data>\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\n    <value>Register</value>\n  </data>\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\n    <value>Certifikat</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Egenskaper</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Panoya kopyala</value>\n  </data>\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Dosya olarak kaydet...</value>\n  </data>\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>Text dosyası|*.txt</value>\n    <comment>keep the |*.txt</comment>\n  </data>\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\n    <value>Verileri dosyaya kaydet</value>\n  </data>\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\n    <value>Genel bakış</value>\n  </data>\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\n    <value>Kaldırıcı bilgisi</value>\n  </data>\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\n    <value>Kayıt defteri</value>\n  </data>\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\n    <value>Sertifika</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Özellikler</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Sao chép vào bảng nhớ tạm</value>\n  </data>\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Lưu vào tệp tin...</value>\n  </data>\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>Tệp văn bản|*.txt</value>\n    <comment>keep the |*.txt</comment>\n  </data>\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\n    <value>Lưu dữ liệu vào tệp tin...</value>\n  </data>\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\n    <value>Tổng quan</value>\n  </data>\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\n    <value>Thông tin trình gỡ cài đặt</value>\n  </data>\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\n    <value>Registry</value>\n  </data>\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\n    <value>Giấy chứng chỉ</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Thông tin chi tiết </value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>复制到剪贴板</value>\n  </data>\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>保存到文件...</value>\n  </data>\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>文本文件|*.txt</value>\n    <comment>keep the |*.txt</comment>\n  </data>\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\n    <value>保存数据到文件</value>\n  </data>\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\n    <value>概述</value>\n  </data>\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\n    <value>卸载程序信息</value>\n  </data>\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\n    <value>注册表</value>\n  </data>\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\n    <value>证书</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>属性</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/PropertiesWindow.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>複製到剪貼簿</value>\n  </data>\n  <data name=\"saveToFileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>儲存到文件...</value>\n  </data>\n  <data name=\"saveFileDialog1.Filter\" xml:space=\"preserve\">\n    <value>文字文件|*.txt</value>\n    <comment>keep the |*.txt</comment>\n  </data>\n  <data name=\"saveFileDialog1.Title\" xml:space=\"preserve\">\n    <value>儲存資料到文件</value>\n  </data>\n  <data name=\"tabPageOverview.Text\" xml:space=\"preserve\">\n    <value>概述</value>\n  </data>\n  <data name=\"tabPageFileInfo.Text\" xml:space=\"preserve\">\n    <value>移除程式資訊</value>\n  </data>\n  <data name=\"tabPageRegistry.Text\" xml:space=\"preserve\">\n    <value>登錄表</value>\n  </data>\n  <data name=\"tabPageCertificate.Text\" xml:space=\"preserve\">\n    <value>憑證</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>內容</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class RatingPopup\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RatingPopup));\r\n            buttonGood = new System.Windows.Forms.Button();\r\n            buttonBad = new System.Windows.Forms.Button();\r\n            buttonCancel = new System.Windows.Forms.Button();\r\n            groupBox1 = new System.Windows.Forms.GroupBox();\r\n            buttonNormal = new System.Windows.Forms.Button();\r\n            panel1 = new System.Windows.Forms.Panel();\r\n            groupBox1.SuspendLayout();\r\n            panel1.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // buttonGood\r\n            // \r\n            buttonGood.BackColor = System.Drawing.Color.FromArgb(192, 255, 192);\r\n            resources.ApplyResources(buttonGood, \"buttonGood\");\r\n            buttonGood.ForeColor = System.Drawing.Color.Black;\r\n            buttonGood.Name = \"buttonGood\";\r\n            buttonGood.UseVisualStyleBackColor = false;\r\n            buttonGood.Click += buttonGood_Click;\r\n            // \r\n            // buttonBad\r\n            // \r\n            buttonBad.BackColor = System.Drawing.Color.FromArgb(255, 192, 192);\r\n            resources.ApplyResources(buttonBad, \"buttonBad\");\r\n            buttonBad.ForeColor = System.Drawing.Color.Black;\r\n            buttonBad.Name = \"buttonBad\";\r\n            buttonBad.UseVisualStyleBackColor = false;\r\n            buttonBad.Click += buttonBad_Click;\r\n            // \r\n            // buttonCancel\r\n            // \r\n            resources.ApplyResources(buttonCancel, \"buttonCancel\");\r\n            buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;\r\n            buttonCancel.Name = \"buttonCancel\";\r\n            buttonCancel.UseVisualStyleBackColor = true;\r\n            // \r\n            // groupBox1\r\n            // \r\n            groupBox1.Controls.Add(buttonBad);\r\n            groupBox1.Controls.Add(buttonNormal);\r\n            groupBox1.Controls.Add(buttonGood);\r\n            resources.ApplyResources(groupBox1, \"groupBox1\");\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.TabStop = false;\r\n            // \r\n            // buttonNormal\r\n            // \r\n            buttonNormal.BackColor = System.Drawing.Color.FromArgb(255, 255, 192);\r\n            resources.ApplyResources(buttonNormal, \"buttonNormal\");\r\n            buttonNormal.ForeColor = System.Drawing.Color.Black;\r\n            buttonNormal.Name = \"buttonNormal\";\r\n            buttonNormal.UseVisualStyleBackColor = false;\r\n            buttonNormal.Click += buttonNormal_Click;\r\n            // \r\n            // panel1\r\n            // \r\n            panel1.Controls.Add(buttonCancel);\r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // RatingPopup\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            CancelButton = buttonCancel;\r\n            Controls.Add(groupBox1);\r\n            Controls.Add(panel1);\r\n            FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;\r\n            Name = \"RatingPopup\";\r\n            ShowIcon = false;\r\n            ShowInTaskbar = false;\r\n            groupBox1.ResumeLayout(false);\r\n            panel1.ResumeLayout(false);\r\n            ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.Button buttonGood;\r\n        private System.Windows.Forms.Button buttonBad;\r\n        private System.Windows.Forms.Button buttonCancel;\r\n        private System.Windows.Forms.GroupBox groupBox1;\r\n        private System.Windows.Forms.Button buttonNormal;\r\n        private System.Windows.Forms.Panel panel1;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>الغاء الامر</value>\r\n  </data>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>مفيده | نوعيه جيده</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>مشكوك فيها | نوعيه سيئه</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>معدل</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>خردة | يحتمل ان تكون خطره</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>مشاركه تقييمك مع مستخدمين اخرين</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Drawing;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions.Ratings;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class RatingPopup : Form\r\n    {\r\n        private UninstallerRating _result = UninstallerRating.Unknown;\r\n\r\n        private RatingPopup()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        public static UninstallerRating ShowRateDialog(Form owner, string applicationName)\r\n        {\r\n            return ShowRateDialog(owner, applicationName, Point.Empty);\r\n        }\r\n\r\n        public static UninstallerRating ShowRateDialog(Form owner, string applicationName, Point mouseLocation)\r\n        {\r\n            if (owner == null)\r\n                throw new ArgumentNullException(nameof(owner));\r\n\r\n            using (var window = new RatingPopup())\r\n            {\r\n                window.Text += \" \" + applicationName;\r\n                window.Icon = owner.Icon;\r\n\r\n                if (mouseLocation.IsEmpty)\r\n                    window.StartPosition = FormStartPosition.CenterParent;\r\n                else\r\n                    window.Location = new Point(mouseLocation.X - window.Size.Width/2,\r\n                        mouseLocation.Y - window.Size.Height/2);\r\n\r\n                window.ShowDialog(owner);\r\n\r\n                return window._result;\r\n            }\r\n        }\r\n\r\n        private void buttonGood_Click(object sender, EventArgs e)\r\n        {\r\n            _result = UninstallerRating.Good;\r\n            Close();\r\n        }\r\n\r\n        private void buttonNormal_Click(object sender, EventArgs e)\r\n        {\r\n            _result = UninstallerRating.Neutral;\r\n            Close();\r\n        }\r\n\r\n        private void buttonBad_Click(object sender, EventArgs e)\r\n        {\r\n            _result = UninstallerRating.Bad;\r\n            Close();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Užitečné | Dobrá jakost</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Nevyžádané | Potenciálně nebezpečný</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Zrušit</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Sporná | Špatná kvalita</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Podělte se o své hodnocení</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Hodnotit</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Nützliche | Gute Qualität</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Junk | Potentiell gefährliche</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Abbrechen</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Fragwürdige | Schlechte Qualität</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Sagen Sie Ihre Bewertung</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Rezension</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Cancelar</value>\r\n  </data>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Útil | Buena calidad</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Cuestionable | Mala calidad</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Calificar</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Compartir calificaciones con otros usuarios</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Basura | Potencialmente peligroso</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Utile | Bonne qualité</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Déchet | Potentiellement dangereux</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Annuler</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Douteux | Mauvaise qualité</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Partager votre note avec d'autres utilisateurs</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Noter</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Mégse</value>\r\n  </data>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Hasznos | Jó minőségű</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Kétes | Rossz minőségű</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Minősítés</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Felesleges | Potenciálisan veszélyes</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Értékelés megosztása más felhasználókkal</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Annulla</value>\r\n  </data>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Utile | Buona qualità</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Discutibile | Cattiva qualità</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Valutazione</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Residuo | Potenzialmente dannoso</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Condividi la tua valutazione con altri utenti</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n  </data>\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\n    <value>役立つ | 良質</value>\n  </data>\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\n    <value>微妙 | 悪質</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>評価</value>\n  </data>\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\n    <value>ゴミ | 潜在的に危険</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>他のユーザーと評価を共有</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Annuleren</value>\r\n  </data>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Bruikbaar | Goede kwaliteit</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Twijfelachtig | Slechte kwaliteit</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Waardering</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Rommel | Potentieel gevaarlijk</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Deel uw waardering met andere gebruikers</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Przydatny | Dobrej jakości</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Śmieć | Potencjalnie niebezpieczny</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Anuluj</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Wątpliwy | Kiepskiej jakości</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Podziel się swoją oceną</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Oceń</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Cancelar</value>\r\n  </data>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Útil | Boa qualidade</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Duvidoso | Má qualidade</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Classificar</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Lixo | Potencialmente perigoso</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Compartilhe sua classificação com outros usuários</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Cancelar</value>\r\n  </data>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Útil | Boa qualidade</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Duvidoso | Má qualidade</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Classificar</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Lixo | Potentialmente perigosos</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Partilhe a sua classificação com outros utilizadores</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>ru</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"buttonGood.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"buttonGood.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 25</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"buttonGood.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonGood.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>272, 30</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"buttonGood.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Useful | Good quality</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonGood.Name\" xml:space=\"preserve\">\r\n    <value>buttonGood</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonGood.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonGood.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonGood.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"buttonBad.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"buttonBad.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 85</value>\r\n  </data>\r\n  <data name=\"buttonBad.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonBad.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>272, 30</value>\r\n  </data>\r\n  <data name=\"buttonBad.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Junk | Potentially dangerous</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonBad.Name\" xml:space=\"preserve\">\r\n    <value>buttonBad</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonBad.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonBad.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonBad.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Bottom, Right</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>196, 7</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 27</value>\r\n  </data>\r\n  <data name=\"buttonCancel.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Cancel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCancel.Name\" xml:space=\"preserve\">\r\n    <value>buttonCancel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCancel.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCancel.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCancel.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 55</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>272, 30</value>\r\n  </data>\r\n  <data name=\"buttonNormal.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Questionable | Bad quality</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonNormal.Name\" xml:space=\"preserve\">\r\n    <value>buttonNormal</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonNormal.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonNormal.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonNormal.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 9</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>9, 9, 9, 9</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>290, 124</value>\r\n  </data>\r\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Share your rating with other users</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 133</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>290, 33</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>308, 175</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>9, 9, 9, 9</value>\r\n  </data>\r\n  <data name=\"$this.StartPosition\" type=\"System.Windows.Forms.FormStartPosition, System.Windows.Forms\">\r\n    <value>Manual</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Rate</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>RatingPopup</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"buttonGood.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 25</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"buttonGood.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonGood.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>272, 30</value>\r\n  </data>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Полезное | Хорошее качество</value>\r\n  </data>\r\n  <data name=\"buttonBad.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 85</value>\r\n  </data>\r\n  <data name=\"buttonBad.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonBad.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>272, 30</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Мусорное | Потенциально опасное</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>196, 7</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 27</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Отмена</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 9</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>9, 9, 9, 9</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>290, 124</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Поделитесь своей оценкой с другими пользователями</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 55</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>272, 30</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Сомнительное | Плохое качество</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 133</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>290, 33</value>\r\n  </data>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>308, 175</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>9, 9, 9, 9</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Рейтинг</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Prekliči</value>\r\n  </data>\r\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\r\n    <value>Uporabna | Dobra kakovost</value>\r\n  </data>\r\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\r\n    <value>Vprašljiva | Slaba kakovost</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Ocena</value>\r\n  </data>\r\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\r\n    <value>Neuporabna | Potencialno nevarna</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Delite vaše ocene z drugimi uporabniki</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>pl</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Avbryt</value>\n  </data>\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\n    <value>Användbar | God kvalitet</value>\n  </data>\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\n    <value>Tveksam | Dålig kvalitet</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Betygsätt</value>\n  </data>\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\n    <value>Skräp | Potentiellt farligt</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Dela din bedömning med andra användare</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Vazgeç</value>\n  </data>\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\n    <value>Faydalı | İyi kalite</value>\n  </data>\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\n    <value>Şüpheli | Kötü kalite</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Oran</value>\n  </data>\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\n    <value>Önemsiz | Potansiyel olarak tehlikeli</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Değerlendirmenizi diğer kullanıcılarla paylaşın</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Huỷ</value>\n  </data>\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\n    <value>Hữu ích | Chất lượng tốt</value>\n  </data>\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\n    <value>Có vấn đề | Chất lượng kém</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Đánh giá</value>\n  </data>\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\n    <value>Rác | Nguy hiểm tiềm tàng</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Chia sẻ đánh giá của bạn với người dùng khác</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\n    <value>实用 | 好品质</value>\n  </data>\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\n    <value>有问题 | 坏品质</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>评分</value>\n  </data>\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\n    <value>垃圾 | 潜在危险</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>与其他用户分享评分</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/RatingPopup.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"buttonGood.Text\" xml:space=\"preserve\">\n    <value>實用 | 好品質</value>\n  </data>\n  <data name=\"buttonNormal.Text\" xml:space=\"preserve\">\n    <value>有問題 | 壞品質</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>評分</value>\n  </data>\n  <data name=\"buttonBad.Text\" xml:space=\"preserve\">\n    <value>垃圾 | 潛在危險</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>與其他使用者分享評分</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class TargetWindow\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TargetWindow));\r\n            groupBox1 = new System.Windows.Forms.GroupBox();\r\n            windowTargeter1 = new Klocman.Controls.WindowTargeter();\r\n            groupBox2 = new System.Windows.Forms.GroupBox();\r\n            fileTargeter1 = new BulkCrapUninstaller.Controls.FileTargeter();\r\n            flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\r\n            label1 = new System.Windows.Forms.Label();\r\n            flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();\r\n            label2 = new System.Windows.Forms.Label();\r\n            panel1 = new System.Windows.Forms.Panel();\r\n            panel2 = new System.Windows.Forms.Panel();\r\n            groupBox1.SuspendLayout();\r\n            groupBox2.SuspendLayout();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            flowLayoutPanel2.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // groupBox1\r\n            // \r\n            resources.ApplyResources(groupBox1, \"groupBox1\");\r\n            groupBox1.Controls.Add(windowTargeter1);\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.TabStop = false;\r\n            // \r\n            // windowTargeter1\r\n            // \r\n            resources.ApplyResources(windowTargeter1, \"windowTargeter1\");\r\n            windowTargeter1.Name = \"windowTargeter1\";\r\n            // \r\n            // groupBox2\r\n            // \r\n            groupBox2.Controls.Add(fileTargeter1);\r\n            resources.ApplyResources(groupBox2, \"groupBox2\");\r\n            groupBox2.Name = \"groupBox2\";\r\n            groupBox2.TabStop = false;\r\n            // \r\n            // fileTargeter1\r\n            // \r\n            fileTargeter1.AllowDrop = true;\r\n            resources.ApplyResources(fileTargeter1, \"fileTargeter1\");\r\n            fileTargeter1.Name = \"fileTargeter1\";\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Controls.Add(label1);\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // label1\r\n            // \r\n            resources.ApplyResources(label1, \"label1\");\r\n            label1.Name = \"label1\";\r\n            // \r\n            // flowLayoutPanel2\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel2, \"flowLayoutPanel2\");\r\n            flowLayoutPanel2.Controls.Add(label2);\r\n            flowLayoutPanel2.Name = \"flowLayoutPanel2\";\r\n            // \r\n            // label2\r\n            // \r\n            resources.ApplyResources(label2, \"label2\");\r\n            label2.Name = \"label2\";\r\n            // \r\n            // panel1\r\n            // \r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // panel2\r\n            // \r\n            resources.ApplyResources(panel2, \"panel2\");\r\n            panel2.Name = \"panel2\";\r\n            // \r\n            // TargetWindow\r\n            // \r\n            AllowDrop = true;\r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            Controls.Add(panel1);\r\n            Controls.Add(flowLayoutPanel2);\r\n            Controls.Add(groupBox2);\r\n            Controls.Add(panel2);\r\n            Controls.Add(groupBox1);\r\n            Controls.Add(flowLayoutPanel1);\r\n            FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;\r\n            MaximizeBox = false;\r\n            MinimizeBox = false;\r\n            Name = \"TargetWindow\";\r\n            ShowIcon = false;\r\n            ShowInTaskbar = false;\r\n            SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;\r\n            groupBox1.ResumeLayout(false);\r\n            groupBox2.ResumeLayout(false);\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            flowLayoutPanel2.ResumeLayout(false);\r\n            flowLayoutPanel2.PerformLayout();\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.GroupBox groupBox1;\r\n        private Klocman.Controls.WindowTargeter windowTargeter1;\r\n        private System.Windows.Forms.GroupBox groupBox2;\r\n        private Controls.FileTargeter fileTargeter1;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;\r\n        private System.Windows.Forms.Label label1;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;\r\n        private System.Windows.Forms.Label label2;\r\n        private System.Windows.Forms.Panel panel1;\r\n        private System.Windows.Forms.Panel panel2;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>البحث عن تطبيق والغاء تثبيته استنادا الى احد الاطارات الخاصة به او الاختصارات او موقع التثبيت او ملفات .تنفيذية.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Target تطبيق</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>تحديد باستخدام اطار</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>تحديد استخدام مجلد التثبيت او ملفات البرنامج</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ملاحظه: تاكد من ان اي ملفات تقوم بتحديدها موجودة داخل دليل تثبيت التطبيق.\r\n\r\nيمكنك تحديد دليل يحتوي على تطبيقات متعددة لالغاء تثبيتها جميعا.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing BulkCrapUninstaller.Controls;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Tools;\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Drawing;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class TargetWindow : Form\r\n    {\r\n        private Action<bool> _setMainWindowVisible;\r\n\r\n        public event EventHandler<DirectoriesSelectedEventArgs> DirectoriesSelected;\r\n\r\n        public TargetWindow()\r\n        {\r\n            InitializeComponent();\r\n\r\n            fileTargeter1.DirectoriesSelected += DirectoryTargeterDirectoriesSelected;\r\n            windowTargeter1.PickingStarted += WindowTargeter1OnPickingStarted;\r\n            windowTargeter1.WindowSelected += WindowTargeterWindowSelected;\r\n        }\r\n\r\n        private void DirectoryTargeterDirectoriesSelected(object sender, DirectoriesSelectedEventArgs e)\r\n        {\r\n            if (e.SelectedFiles.Count == 0)\r\n            {\r\n                MessageBox.Show(\r\n                    Localisable.TargetWindow_NoFilesSelected_Message,\r\n                    Localisable.TargetWindow_NoFilesSelected_Title, MessageBoxButtons.OK, MessageBoxIcon.Warning);\r\n                return;\r\n            }\r\n\r\n            OnDirectoriesSelected(e);\r\n        }\r\n\r\n        protected virtual void OnDirectoriesSelected(DirectoriesSelectedEventArgs e)\r\n        {\r\n            DialogResult = DialogResult.OK;\r\n            Close();\r\n            DirectoriesSelected?.Invoke(this, e);\r\n        }\r\n\r\n        private void WindowTargeter1OnPickingStarted(object sender, EventArgs e)\r\n        {\r\n            _setMainWindowVisible(false);\r\n        }\r\n\r\n        private void WindowTargeterWindowSelected(object sender, Klocman.Subsystems.WindowHoverEventArgs e)\r\n        {\r\n            _setMainWindowVisible(true);\r\n\r\n            try\r\n            {\r\n                var fileName = e.TargetWindow.GetRunningProcess().MainModule?.FileName;\r\n                if (fileName == null)\r\n                    throw new InvalidOperationException(\"Process has no MainModule\");\r\n\r\n                var parentDirectory = new FileInfo(fileName).Directory;\r\n                if (parentDirectory == null)\r\n                    throw new InvalidOperationException(\"Failed to get MainModule Directory\");\r\n\r\n                // Ignore targeting BCU itself\r\n                if (PathTools.SubPathIsInsideBasePath(Program.AssemblyLocation.FullName, fileName, true, true))\r\n                    return;\r\n\r\n                OnDirectoriesSelected(new DirectoriesSelectedEventArgs(parentDirectory.ToEnumerable().ToList()));\r\n            }\r\n            catch (Exception exception)\r\n            {\r\n                Console.WriteLine(exception);\r\n                PremadeDialogs.GenericError(exception);\r\n            }\r\n        }\r\n\r\n        public static ICollection<DirectoryInfo> ShowDialog(IWin32Window owner, Action<bool> setMainWindowVisible)\r\n        {\r\n            using (var window = new TargetWindow())\r\n            {\r\n                window._setMainWindowVisible = setMainWindowVisible ?? throw new ArgumentNullException(nameof(setMainWindowVisible));\r\n\r\n                window.StartPosition = FormStartPosition.Manual;\r\n                var targeterHalf = window.windowTargeter1.Height / 2;\r\n                var offsetx = targeterHalf + 10;\r\n                var offsety = targeterHalf + 30;\r\n                window.Location = new Point(Cursor.Position.X - offsetx, Cursor.Position.Y - offsety);\r\n\r\n                ICollection<DirectoryInfo> results = null;\r\n                window.DirectoriesSelected += (sender, args) => results = args.SelectedFiles;\r\n\r\n                if (window.ShowDialog() != DialogResult.OK)\r\n                    return null;\r\n\r\n                return results;\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Najít a odstranit aplikace prostřednictvím údaj o jejich umístění, zástupci nebo jejím umístění nebo .exe soubory instalace.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Target aplikace</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Vybrat okno</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Vyberte pomocí instalační složky nebo program files</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Poznámka: Ujistěte se, že vybrané soubory jsou uvnitř instalačního adresáře aplikace.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Wähle ein Fenster aus</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Wähle einen Installationsordner oder Programmdateien aus</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Finde und deinstalliere ein Programm auf Grund seiner Fenster, seiner Shortcuts, seines Installierungsordners oder seiner .exe Datei</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Bemerkung: Stelle sicher, dass sich alle ausgewählten Dateien im Installationsverzeichnis der Anwendung befinden.                                                Du kannst ein Verzeichnis auswählen, das mehrere Anwendungen enthält, um alle zu deinstallieren.</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Beende ein Programm</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Buscar y desinstalar una aplicación basada en una de sus ventanas, accesos directos, o su ubicación de instalación o archivos .exe.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Destruir una aplicación</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Seleccionar usando una ventana</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Seleccionar mediante carpeta de instalación o archivos de programa</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Nota: Asegúrese de que los archivos que seleccione están dentro del directorio de instalación de la aplicación.\r\n\r\nPuede seleccionar un directorio que contenga varias aplicaciones para desinstalarlas todas.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Trouver et désinstaller une application sur la base d'une de ses fenêtres, raccourcis, son emplacement d'installation ou ses fichiers .exe.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Sélectionner en utilisant une fenêtre</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Sélectionner en utilisant le dossier d'installation ou les fichiers de programmes</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Note : assurez-vous que tous les fichiers sélectionnés sont dans le dossier d'installation de l'application.\r\n\r\nVous pouvez sélectionner un dossier qui contient de multiples applications pour les désinstaller toutes.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Cibler une application</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Kiválasztás egy ablak segítségével</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Kiválasztás mappa vagy fájl segítségével</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Alkalmazások keresése és eltávolítása ablakok, parancsikonok, telepítési hely vagy .exe fájlok alapján.</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Megjegyzés: Győződjön meg róla, hogy a kiválasztott fájlok az alkalmazás telepítési mappájában vannak.\n\nTöbb alkalmazást tartalmazó mappát is kiválaszthat az összes mappában lévő alkalmazás eltávolításához.</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Alkalmazás kiválasztása</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Seleziona usando una finestra</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Seleziona usando la cartella di installazione o del programma</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Cerca e disinstalla una applicazione basata su una delle sue finestre, collegamenti o la sua ubicazione di installazione o file .exe</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Nota: assicurati che tutti i file selezionati siano presenti nella cartella di installazione dell'applicazione.\r\n\r\nPuoi selezionare una cartella che contiene varie applicazioni per disinstallarle tutte.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Obiettivo un'applicazione</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>ウィンドウを使って選択</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>インストールフォルダーまたはプログラムファイルを使って選択</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>ウィンドウ、ショートカット、またはインストール場所や.exeファイルのいずれかに基づいてアプリケーションを見つけてアンインストールします。</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>注意: 選択するファイルがアプリケーションのインストールディレクトリ内にあることを確認してください。\n\n複数のアプリケーションをアンインストールするために、複数のアプリケーションを含むディレクトリを選択することができます。</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>アプリケーションを対象にする</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Zoek en de-installeer een programma op basis van een van zijn vensters, snelkoppelingen, of zijn installatie locatie of .exe bestand(en).</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Misleid een programma</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Selecteer door een venster te  gebruiken</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Selecteer door gebruik te maken van de installatie map of programma bestanden\r\n</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Opm.: overtuig u er van dat de door u geselecteerde bestanden zich bevinden in de installatie map.\r\n\r\nU kunt een map selecteren die meerdere programma's bevat om deze te de-installeren.</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Wybierz okno</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Wybierz miejsce zainstalowania lub pliki programu</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Znajdź i odinstaluj aplikacje poprzez wskazanie ich miejsca zainstalowania, skrótów, plików, lub otwartych okien.</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Uwaga: upewnij się że wybrane pliki znajdują się wewnątrz katalogu instalacyjnego aplikacji.\r\n\r\nMożna wybrać katalog który zawiera wiele aplikacji aby je wszystkie odinstalować.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Zniszcz aplikację</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Selecione usando uma janela</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Pasta de instalação ou arquivos</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Encontre e desinstale um aplicativo com base em uma das suas janelas, atalhos, seu local instalação ou arquivos .exe.</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Nota: Certifique-se de que todos os arquivos selecionados estejam dentro do diretório de instalação do aplicativo.\r\n\r\nVocê pode selecionar um diretório que contenha vários aplicativos para desinstalá-los todos de uma vez.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Caçar aplicação</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Encontrar e desinstalar uma aplicação existente na base de uma das janelas, atalhos, o seu local de instalação ou arquivos .exe</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Destruir uma aplicação</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Seleccione usando uma janela</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Selecionar usando a pasta de instalação ou os arquivos de programa</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Nota: Certifique-se de que todos os arquivos seleccionados estão na pasta de instalação do aplicativo.\r\n\r\nPode seleccionar uma pasta que contenha vários aplicativos para os desinstalar a todos.\r\n</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"groupBox1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"windowTargeter1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"windowTargeter1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 19</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"windowTargeter1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"windowTargeter1.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>11666666, 74</value>\r\n  </data>\r\n  <data name=\"windowTargeter1.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>0, 74</value>\r\n  </data>\r\n  <data name=\"windowTargeter1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>354, 74</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"windowTargeter1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;windowTargeter1.Name\" xml:space=\"preserve\">\r\n    <value>windowTargeter1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;windowTargeter1.Type\" xml:space=\"preserve\">\r\n    <value>Klocman.Controls.WindowTargeter, KlocTools, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;windowTargeter1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;windowTargeter1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 40</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>362, 96</value>\r\n  </data>\r\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Select using a window</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"fileTargeter1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"fileTargeter1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 19</value>\r\n  </data>\r\n  <data name=\"fileTargeter1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"fileTargeter1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>2, 2, 2, 2</value>\r\n  </data>\r\n  <data name=\"fileTargeter1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>354, 63</value>\r\n  </data>\r\n  <data name=\"fileTargeter1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fileTargeter1.Name\" xml:space=\"preserve\">\r\n    <value>fileTargeter1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fileTargeter1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Controls.FileTargeter, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fileTargeter1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fileTargeter1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 141</value>\r\n  </data>\r\n  <data name=\"groupBox2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>362, 85</value>\r\n  </data>\r\n  <data name=\"groupBox2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Select using install folder or program files</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Name\" xml:space=\"preserve\">\r\n    <value>groupBox2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 0</value>\r\n  </data>\r\n  <data name=\"label1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>338, 30</value>\r\n  </data>\r\n  <data name=\"label1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Find and uninstall an application based on one of its windows, shortcuts, or its install location or .exe files.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Name\" xml:space=\"preserve\">\r\n    <value>label1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 5</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 5</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>362, 35</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 5</value>\r\n  </data>\r\n  <data name=\"label2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>344, 75</value>\r\n  </data>\r\n  <data name=\"label2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Note: Make sure that any files you select are inside of the application's installation directory.\r\n\r\nYou can select a directory that contains multiple applications to uninstall them all.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Name\" xml:space=\"preserve\">\r\n    <value>label2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 226</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 5, 0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>362, 80</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 306</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>362, 2</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 136</value>\r\n  </data>\r\n  <data name=\"panel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>362, 5</value>\r\n  </data>\r\n  <data name=\"panel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Name\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"$this.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>372, 339</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>347, 39</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 5, 5, 5</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Target an application</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>TargetWindow</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Найти и удалить приложение по одному из его окон, ярлыку, местоположению установки или файлу .exe.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Уничтожить приложение</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Найти по окну</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Найти по папке или файлам программы</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Примечание: Убедитесь, что выбранные файлы находятся внутри каталога установки приложения.\r\n\r\nВы можете выбрать каталог, содержащий несколько приложений, для их удаления.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Poiščite in odstranite aplikacijo na podlagi enega od njunih oken, bližnjic, mesta njune namestitve ali datoteke .exe.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Uniči aplikacijo</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Izberi z oknom</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Izberi s pomočjo namestitvene mape ali programskimi datotekami</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Opomba: Prepričajte se, da so vse izbrane datoteke znotraj mape nameščene aplikacije.\r\n\r\nIzberete lahko mapo, ki vsebuje več aplikacij, da jih vse odstranite.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Välj med hjälp av ett fönster</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Välj med hjälp av installationsmappen eller programfiler</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Hitta och avinstallera en app baserat på ett av dess fönster, genvägar, dess installationsplats eller .exe-filer.</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>OBS: Säkerställ att alla filer du väljer finns inom appens installationsmapp.\n\nDu kan välja en mapp som innehåller flera appar för att avinstallera dem alla.</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Välj en app</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Bir pencere seç</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Yükleme klasörünü veya program dosyalarını kullanarak seçin</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Bir uygulamayı pencere, kısayol, yükleme konumu veya .exe dosyasının biriyle bulun ve kaldırın.</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Not: Seçtiğiniz dosyaların uygulamanın kurulum dizininde olduğundan emin olun. \nHepsini kaldırmak için birden çok uygulama içeren bir dizin seçebilirsiniz.</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Uygulamayı yok et</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Chọn một cửa sổ</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Chọn thư mục cài đặt hoặc tệp tin ứng dụng</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Tìm và gỡ cài đặt một ứng dụng dựa vào một trong các thông tin sau: cửa sổ, lối tắt hoặc vị trí cài đặt hoặc tệp .exe của ứng dụng đó.</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Lưu ý: Hãy đảm bảo bất kỳ tệp bạn chọn phải nằm trong thư mục cài đặt ứng dụng.\n\nBạn có thể chọn một thư mục chứa nhiều ứng dụng để gỡ cài đặt tất cả chúng cùng một lúc.</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Nhắm mục tiêu ứng dụng</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>使用窗口选择</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>使用安装文件夹或程序文件选择</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>根据某个应用程序的窗口、快捷方式、安装位置或.exe文件查找并卸载该应用程序。</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>注意:确保你选择的所有文件都在应用程序的安装目录中。\n\n你可以选择一个包含多个应用程序的目录来卸载它们。</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>强制删除应用程序</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Helpers/TargetWindow.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>選擇使用視窗</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>選擇安裝資料夾或程式文件</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>根據某個應用程式視窗、捷徑、安裝位置或執行檔文件尋找並移除該應用程式</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>注意：確保你 所選的文件都有在應用程式的安裝目錄中。\n\n你可以選擇一個包含多個應用程式的目錄來移除它們。</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>強制刪除應用程式</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/UninstallerListDoubleClickAction.cs",
    "content": "﻿using BulkCrapUninstaller.Properties;\nusing Klocman.Localising;\n\nnamespace BulkCrapUninstaller.Forms;\n\npublic enum UninstallerListDoubleClickAction\n{\n    [LocalisedName(typeof (Localisable), nameof(Localisable.UninstallerListDoubleClickAction_DoNothing))] DoNothing = 0,\n    [LocalisedName(typeof (Localisable),nameof(Localisable.UninstallerListDoubleClickAction_Properties))] OpenProperties,\n    [LocalisedName(typeof (Localisable), nameof(Localisable.UninstallerListDoubleClickAction_Uninstall))] Uninstall\n}\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.Designer.cs",
    "content": "﻿using System.ComponentModel;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions.Tracking;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class AboutBox\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            ComponentResourceManager resources = new ComponentResourceManager(typeof(AboutBox));\r\n            labelName = new Label();\r\n            labelVersion = new Label();\r\n            labelCopyright = new Label();\r\n            labelCompanyName = new Label();\r\n            groupBox1 = new GroupBox();\r\n            panel1 = new Panel();\r\n            labelis64 = new Label();\r\n            labelPortable = new Label();\r\n            panel4 = new Panel();\r\n            labelArchitecture = new Label();\r\n            groupBox2 = new GroupBox();\r\n            panel5 = new Panel();\r\n            flowLayoutPanel1 = new FlowLayoutPanel();\r\n            linkLabel6 = new LinkLabel();\r\n            linkLabel9 = new LinkLabel();\r\n            linkLabel3 = new LinkLabel();\r\n            linkLabel1 = new LinkLabel();\r\n            linkLabel5 = new LinkLabel();\r\n            linkLabel2 = new LinkLabel();\r\n            linkLabel7 = new LinkLabel();\r\n            linkLabel8 = new LinkLabel();\r\n            button1 = new Button();\r\n            linkLabel4 = new LinkLabel();\r\n            groupBox3 = new GroupBox();\r\n            panel3 = new Panel();\r\n            imageBox = new Label();\r\n            panel2 = new Panel();\r\n            groupBox4 = new GroupBox();\r\n            flowLayoutPanel2 = new FlowLayoutPanel();\r\n            usageTracker1 = new UsageTracker();\r\n            groupBox1.SuspendLayout();\r\n            panel1.SuspendLayout();\r\n            panel4.SuspendLayout();\r\n            groupBox2.SuspendLayout();\r\n            panel5.SuspendLayout();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            groupBox3.SuspendLayout();\r\n            panel3.SuspendLayout();\r\n            panel2.SuspendLayout();\r\n            groupBox4.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // labelName\r\n            // \r\n            resources.ApplyResources(labelName, \"labelName\");\r\n            labelName.Name = \"labelName\";\r\n            // \r\n            // labelVersion\r\n            // \r\n            resources.ApplyResources(labelVersion, \"labelVersion\");\r\n            labelVersion.Name = \"labelVersion\";\r\n            // \r\n            // labelCopyright\r\n            // \r\n            resources.ApplyResources(labelCopyright, \"labelCopyright\");\r\n            labelCopyright.Name = \"labelCopyright\";\r\n            // \r\n            // labelCompanyName\r\n            // \r\n            resources.ApplyResources(labelCompanyName, \"labelCompanyName\");\r\n            labelCompanyName.Name = \"labelCompanyName\";\r\n            // \r\n            // groupBox1\r\n            // \r\n            resources.ApplyResources(groupBox1, \"groupBox1\");\r\n            groupBox1.Controls.Add(panel1);\r\n            groupBox1.Controls.Add(panel4);\r\n            groupBox1.Controls.Add(labelName);\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.TabStop = false;\r\n            // \r\n            // panel1\r\n            // \r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Controls.Add(labelis64);\r\n            panel1.Controls.Add(labelPortable);\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // labelis64\r\n            // \r\n            resources.ApplyResources(labelis64, \"labelis64\");\r\n            labelis64.Name = \"labelis64\";\r\n            // \r\n            // labelPortable\r\n            // \r\n            resources.ApplyResources(labelPortable, \"labelPortable\");\r\n            labelPortable.Name = \"labelPortable\";\r\n            // \r\n            // panel4\r\n            // \r\n            resources.ApplyResources(panel4, \"panel4\");\r\n            panel4.Controls.Add(labelVersion);\r\n            panel4.Controls.Add(labelArchitecture);\r\n            panel4.Name = \"panel4\";\r\n            // \r\n            // labelArchitecture\r\n            // \r\n            resources.ApplyResources(labelArchitecture, \"labelArchitecture\");\r\n            labelArchitecture.Name = \"labelArchitecture\";\r\n            // \r\n            // groupBox2\r\n            // \r\n            groupBox2.Controls.Add(panel5);\r\n            resources.ApplyResources(groupBox2, \"groupBox2\");\r\n            groupBox2.Name = \"groupBox2\";\r\n            groupBox2.TabStop = false;\r\n            // \r\n            // panel5\r\n            // \r\n            panel5.Controls.Add(flowLayoutPanel1);\r\n            resources.ApplyResources(panel5, \"panel5\");\r\n            panel5.Name = \"panel5\";\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Controls.Add(linkLabel6);\r\n            flowLayoutPanel1.Controls.Add(linkLabel9);\r\n            flowLayoutPanel1.Controls.Add(linkLabel3);\r\n            flowLayoutPanel1.Controls.Add(linkLabel1);\r\n            flowLayoutPanel1.Controls.Add(linkLabel5);\r\n            flowLayoutPanel1.Controls.Add(linkLabel2);\r\n            flowLayoutPanel1.Controls.Add(linkLabel7);\r\n            flowLayoutPanel1.Controls.Add(linkLabel8);\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // linkLabel6\r\n            // \r\n            resources.ApplyResources(linkLabel6, \"linkLabel6\");\r\n            linkLabel6.Name = \"linkLabel6\";\r\n            linkLabel6.TabStop = true;\r\n            linkLabel6.LinkClicked += linkLabel6_LinkClicked;\r\n            // \r\n            // linkLabel9\r\n            // \r\n            resources.ApplyResources(linkLabel9, \"linkLabel9\");\r\n            linkLabel9.Name = \"linkLabel9\";\r\n            linkLabel9.TabStop = true;\r\n            linkLabel9.LinkClicked += linkLabel9_LinkClicked;\r\n            // \r\n            // linkLabel3\r\n            // \r\n            resources.ApplyResources(linkLabel3, \"linkLabel3\");\r\n            linkLabel3.Name = \"linkLabel3\";\r\n            linkLabel3.TabStop = true;\r\n            linkLabel3.LinkClicked += linkLabel3_LinkClicked;\r\n            // \r\n            // linkLabel1\r\n            // \r\n            resources.ApplyResources(linkLabel1, \"linkLabel1\");\r\n            linkLabel1.Name = \"linkLabel1\";\r\n            linkLabel1.TabStop = true;\r\n            linkLabel1.LinkClicked += linkLabel1_LinkClicked;\r\n            // \r\n            // linkLabel5\r\n            // \r\n            resources.ApplyResources(linkLabel5, \"linkLabel5\");\r\n            linkLabel5.Name = \"linkLabel5\";\r\n            linkLabel5.TabStop = true;\r\n            linkLabel5.LinkClicked += linkLabel5_LinkClicked;\r\n            // \r\n            // linkLabel2\r\n            // \r\n            resources.ApplyResources(linkLabel2, \"linkLabel2\");\r\n            linkLabel2.Name = \"linkLabel2\";\r\n            linkLabel2.TabStop = true;\r\n            linkLabel2.LinkClicked += linkLabel2_LinkClicked;\r\n            // \r\n            // linkLabel7\r\n            // \r\n            resources.ApplyResources(linkLabel7, \"linkLabel7\");\r\n            linkLabel7.Name = \"linkLabel7\";\r\n            linkLabel7.TabStop = true;\r\n            linkLabel7.LinkClicked += linkLabel7_LinkClicked;\r\n            // \r\n            // linkLabel8\r\n            // \r\n            resources.ApplyResources(linkLabel8, \"linkLabel8\");\r\n            linkLabel8.Name = \"linkLabel8\";\r\n            linkLabel8.TabStop = true;\r\n            linkLabel8.LinkClicked += linkLabel8_LinkClicked;\r\n            // \r\n            // button1\r\n            // \r\n            resources.ApplyResources(button1, \"button1\");\r\n            button1.DialogResult = DialogResult.Cancel;\r\n            button1.Name = \"button1\";\r\n            button1.UseVisualStyleBackColor = true;\r\n            button1.Click += button1_Click;\r\n            // \r\n            // linkLabel4\r\n            // \r\n            resources.ApplyResources(linkLabel4, \"linkLabel4\");\r\n            linkLabel4.Name = \"linkLabel4\";\r\n            linkLabel4.TabStop = true;\r\n            linkLabel4.LinkClicked += linkLabel4_LinkClicked;\r\n            // \r\n            // groupBox3\r\n            // \r\n            resources.ApplyResources(groupBox3, \"groupBox3\");\r\n            groupBox3.Controls.Add(linkLabel4);\r\n            groupBox3.Controls.Add(panel3);\r\n            groupBox3.Name = \"groupBox3\";\r\n            groupBox3.TabStop = false;\r\n            // \r\n            // panel3\r\n            // \r\n            resources.ApplyResources(panel3, \"panel3\");\r\n            panel3.Controls.Add(labelCopyright);\r\n            panel3.Controls.Add(labelCompanyName);\r\n            panel3.Name = \"panel3\";\r\n            // \r\n            // imageBox\r\n            // \r\n            imageBox.BorderStyle = BorderStyle.Fixed3D;\r\n            resources.ApplyResources(imageBox, \"imageBox\");\r\n            imageBox.Image = Properties.Resources.bigImage;\r\n            imageBox.Name = \"imageBox\";\r\n            // \r\n            // panel2\r\n            // \r\n            panel2.Controls.Add(groupBox4);\r\n            panel2.Controls.Add(groupBox2);\r\n            panel2.Controls.Add(button1);\r\n            panel2.Controls.Add(groupBox3);\r\n            panel2.Controls.Add(groupBox1);\r\n            resources.ApplyResources(panel2, \"panel2\");\r\n            panel2.Name = \"panel2\";\r\n            // \r\n            // groupBox4\r\n            // \r\n            groupBox4.Controls.Add(flowLayoutPanel2);\r\n            resources.ApplyResources(groupBox4, \"groupBox4\");\r\n            groupBox4.Name = \"groupBox4\";\r\n            groupBox4.TabStop = false;\r\n            // \r\n            // flowLayoutPanel2\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel2, \"flowLayoutPanel2\");\r\n            flowLayoutPanel2.Name = \"flowLayoutPanel2\";\r\n            // \r\n            // usageTracker1\r\n            // \r\n            usageTracker1.ContainerControl = this;\r\n            // \r\n            // AboutBox\r\n            // \r\n            AcceptButton = button1;\r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = AutoScaleMode.Font;\r\n            CancelButton = button1;\r\n            Controls.Add(panel2);\r\n            Controls.Add(imageBox);\r\n            FormBorderStyle = FormBorderStyle.FixedDialog;\r\n            MaximizeBox = false;\r\n            MinimizeBox = false;\r\n            Name = \"AboutBox\";\r\n            ShowIcon = false;\r\n            ShowInTaskbar = false;\r\n            groupBox1.ResumeLayout(false);\r\n            groupBox1.PerformLayout();\r\n            panel1.ResumeLayout(false);\r\n            panel1.PerformLayout();\r\n            panel4.ResumeLayout(false);\r\n            panel4.PerformLayout();\r\n            groupBox2.ResumeLayout(false);\r\n            panel5.ResumeLayout(false);\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            groupBox3.ResumeLayout(false);\r\n            groupBox3.PerformLayout();\r\n            panel3.ResumeLayout(false);\r\n            panel3.PerformLayout();\r\n            panel2.ResumeLayout(false);\r\n            panel2.PerformLayout();\r\n            groupBox4.ResumeLayout(false);\r\n            ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private Label labelName;\r\n        private Label labelVersion;\r\n        private Label labelCopyright;\r\n        private Label labelCompanyName;\r\n        private GroupBox groupBox1;\r\n        private GroupBox groupBox2;\r\n        private LinkLabel linkLabel3;\r\n        private LinkLabel linkLabel2;\r\n        private LinkLabel linkLabel1;\r\n        private LinkLabel linkLabel4;\r\n        private Button button1;\r\n        private Label labelArchitecture;\r\n        private GroupBox groupBox3;\r\n        private Label labelis64;\r\n        private LinkLabel linkLabel6;\r\n        private LinkLabel linkLabel5;\r\n        private Label labelPortable;\r\n        private UsageTracker usageTracker1;\r\n        private Label imageBox;\r\n        private Panel panel1;\r\n        private Panel panel3;\r\n        private Panel panel2;\r\n        private Panel panel4;\r\n        private GroupBox groupBox4;\r\n        private FlowLayoutPanel flowLayoutPanel1;\r\n        private LinkLabel linkLabel7;\r\n        private FlowLayoutPanel flowLayoutPanel2;\r\n        private Panel panel5;\r\n        private LinkLabel linkLabel8;\r\n        private LinkLabel linkLabel9;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>الاصدار:</value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>حقوق النشر</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>خالق</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>هو 64 بت:</value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>مثبت:</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>هيكل:</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>اصدار البرنامج</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>ايقونات واجهه المستخدم الحديثة</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>عرض قائمه الكائنات</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>مزود الاعدادات المحمولة</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>برنامج التضمين المدار لبرنامج جدوله المهام</value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>الاختبار الابيض</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>الاصول المستخدمة</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>اغلاق</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>الصفحة الرسمية</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>معلومات المطور</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>المترجمون</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value> BCUninstaller (Bulk Crap Uninstaller) حول</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Drawing;\r\nusing System.Globalization;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Tools;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    sealed partial class AboutBox : Form\r\n    {\r\n        public AboutBox()\r\n        {\r\n            InitializeComponent();\r\n            labelVersion.Text += AssemblyVersion;\r\n            labelCopyright.Text = AssemblyCopyright;\r\n            labelCompanyName.Text = AssemblyCompany;\r\n            labelis64.Text += ProcessTools.Is64BitProcess.ToYesNo();\r\n            Assembly.GetExecutingAssembly().Modules.First().GetPEKind(out var pekind, out var ifmachine);\r\n            string machine;\r\n            if (Enum.IsDefined<ImageFileMachine>(ifmachine))\r\n            {\r\n                machine = Enum.GetName<ImageFileMachine>(ifmachine);\r\n            } else // Work around .NET 6 not having WoA64 definitions in GetPEKind\r\n\r\n            {\r\n                machine = \"ARM64\";\r\n            }\r\n                labelArchitecture.Text += machine;\r\n            labelPortable.Text += Program.IsInstalled.ToYesNo();\r\n\r\n            var translationCredits = new[]\r\n            {\r\n                // en - English\r\n                new {culture = CultureInfo.GetCultureInfo(\"en\"), translator = \"Marcin Szeniak\"},\r\n\r\n                // ar - Arabic\r\n                new {culture =  CultureInfo.GetCultureInfo(\"ar\"), translator = \"MFM Dawdeh\"},\r\n\r\n                // Czech\r\n                new {culture =  CultureInfo.GetCultureInfo(\"cs-CZ\"), translator = \"Richard Kahl\"},\r\n\r\n                // de - German\r\n                new {culture =  CultureInfo.GetCultureInfo(\"de\"), translator = \"Dieter Hummel, Thomas Werk\"},\r\n\r\n                // es - Spanish\r\n                new {culture =  CultureInfo.GetCultureInfo(\"es\"), translator = \"MS-PC2, Freddynic159, Emilio J. Grao\"},\r\n\r\n                // fr - French\r\n                new {culture =  CultureInfo.GetCultureInfo(\"fr\"), translator = \"Thierry Delaunay, Orphée V.\"},\r\n\r\n                // Hungarian\r\n                new {culture =  CultureInfo.GetCultureInfo(\"hu\"), translator = \"Phoenix (Döbröntei Sándor)\"},\r\n\r\n                // it - Italian\r\n                new {culture =  CultureInfo.GetCultureInfo(\"it\"), translator = \"Luca Carrabba (luca.carrabba@yahoo.com)\"},\r\n                \r\n                // ja - Japanese\r\n                new {culture =  CultureInfo.GetCultureInfo(\"ja\"), translator = \"KKbion\"},\r\n\r\n                // nl - Dutch\r\n                new {culture =  CultureInfo.GetCultureInfo(\"nl\"), translator = \"Jaap Kramer\"},\r\n\r\n                // Polish\r\n                new {culture =  CultureInfo.GetCultureInfo(\"pl\"), translator = \"Marcin Szeniak\"},\r\n\r\n                // pt - Portuguese\r\n                new {culture =  CultureInfo.GetCultureInfo(\"pt-PT\"), translator = \"Artur Álvaro Pereira\"},\r\n                new {culture =  CultureInfo.GetCultureInfo(\"pt-BR\"), translator = \"Silvio Corral\"},\r\n\r\n                // Russian\r\n                new {culture = CultureInfo.GetCultureInfo(\"ru\"), translator = \"wvxwxvw, Kommprog\"},\r\n\r\n                // Slovenian\r\n                new {culture = CultureInfo.GetCultureInfo(\"sl\"), translator = \"Jadran Rudec\"},\r\n\r\n                // Swedish\r\n                new {culture = CultureInfo.GetCultureInfo(\"sv\"), translator = \"@glecas\"},\r\n\r\n                // Turkish\r\n                new {culture = CultureInfo.GetCultureInfo(\"tr\"), translator = \"Harun Güngör, @DogancanYr\"},\r\n\r\n                // Vietnamese\r\n                new {culture = CultureInfo.GetCultureInfo(\"vi\"), translator = \"wanwanvxt / Vũ Xuân Trường\"},\r\n                \r\n                // Simplified Chinese\r\n                new {culture = CultureInfo.GetCultureInfo(\"zh-Hans\"), translator = \"cc713\"},\r\n                \r\n                // Traditional Chinese\r\n                new {culture = CultureInfo.GetCultureInfo(\"zh-Hant\"), translator = \"Henryliu880922\"}\r\n            };\r\n\r\n            foreach (var translationCredit in translationCredits\r\n                .Select(x => new { x.culture.DisplayName, x.translator })\r\n                .OrderBy(x => x.DisplayName))\r\n            {\r\n                var l = new Label\r\n                {\r\n                    Text = translationCredit.DisplayName + \" - \" + translationCredit.translator,\r\n                    Padding = new Padding(0, 0, 0, 3),\r\n                    AutoSize = true,\r\n                    TextAlign = ContentAlignment.MiddleLeft\r\n                };\r\n                flowLayoutPanel2.Controls.Add(l);\r\n            }\r\n        }\r\n\r\n        public static string AssemblyCompany\r\n        {\r\n            get\r\n            {\r\n                var attributes = Assembly.GetExecutingAssembly()\r\n                    .GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);\r\n                if (attributes.Length == 0)\r\n                {\r\n                    return \"\";\r\n                }\r\n                return ((AssemblyCompanyAttribute)attributes[0]).Company;\r\n            }\r\n        }\r\n\r\n        public static string AssemblyCopyright\r\n        {\r\n            get\r\n            {\r\n                var attributes = Assembly.GetExecutingAssembly()\r\n                    .GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);\r\n                if (attributes.Length == 0)\r\n                {\r\n                    return \"\";\r\n                }\r\n                return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;\r\n            }\r\n        }\r\n\r\n        public static Version AssemblyVersion => Assembly.GetExecutingAssembly().GetName().Version;\r\n\r\n        private void button1_Click(object sender, EventArgs e)\r\n        {\r\n            Close();\r\n        }\r\n\r\n        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(@\"http://objectlistview.sourceforge.net\");\r\n        }\r\n\r\n        private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(\r\n                @\"http://www.codeproject.com/Articles/20917/Creating-a-Custom-Settings-Provider\");\r\n        }\r\n\r\n        private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(@\"https://github.com/Templarian/WindowsIcons/\");\r\n        }\r\n\r\n        private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(Resources.HomepageUrl);\r\n        }\r\n\r\n        private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(@\"https://nbug.codeplex.com/\");\r\n        }\r\n\r\n        private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(@\"http://dotnetzip.codeplex.com/\");\r\n        }\r\n\r\n        private void linkLabel7_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(@\"http://taskscheduler.codeplex.com/\");\r\n        }\r\n\r\n        private void linkLabel8_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(@\"https://github.com/TestStack/White\");\r\n        }\r\n\r\n        private void linkLabel9_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(@\"https://www.voidtools.com/\");\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Verze: </value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Autorská práva</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Tvůrce</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>Je 64bit: </value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Je nainstalován:</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Architektura:</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Verze programu</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Windows Ikony</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsPoskytovatel CodeChimp</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Použité položky</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Zavřit</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Oficiální webové stránky</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Vývojář info</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Překlad</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>O Programu BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectListView</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug od Teoman Soygul</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Task Scheduler Managed Wrapper</value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Version: </value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Copyright</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Urheber</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>64bit: </value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Installiert: </value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Architektur: </value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Programmversion</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug von Teoman Soygul</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Moderne UI Icons</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsProvider von CodeChimp</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectListView</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Verwendete Quellen</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Schließen</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Offizielle Website</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Hersteller Info</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Übersetzer</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Über BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Task Scheduler Managed Wrapper</value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n  </data>\r\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\r\n    <value>es.exe (CLI für Everything)</value>\r\n    <comment>Almost all the translations here were in English</comment>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>116, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Versión:</value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Copyright</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Creador</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Versión del programa</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>Es 64 bits:</value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Está instalado:</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Arquitectura:</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Modern UI Icons</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectListView</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsProvider</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Cerrar</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Sitio web oficial</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Info. del desarrollador</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Traductores</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Acerca de BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Task Scheduler Managed Wrapper</value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Activos utilizados</value>\r\n  </data>\r\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\r\n    <value>es.exe (CLI para Everything)</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Version : </value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Créateur</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>Est 64bits : </value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Est installé : </value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Architecture : </value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Version du programme</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug</value>\r\n    <comment>I have translated it directly in Japanese, but it may not convey the meaning very well.</comment>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Icônes Modern UI</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsProvider</value>\r\n    <comment>1</comment>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Eléments actifs utilisés</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Fermer</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Page web officielle</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Infos développeur</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Traducteurs</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>A propos de BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Copyright</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n    <comment>jp translator: what's this?</comment>\r\n  </data>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectListView</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Task Scheduler Managed Wrapper</value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n    <comment>I have translated it directly in Japanese, but it may not convey the meaning very well.</comment>\r\n  </data>\r\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\r\n    <value>es.exe (CLI pour Everything)</value>\r\n    <comment>Almost all the translations here were in English</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Verzió: </value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Copyright</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Készítő</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>64-bites: </value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Telepítve: </value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Architektúra: </value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Programverzió</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n    <comment>jp translator: what's this?</comment>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Modern UI ikonok</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectListView</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug by Teoman Soygul</value>\r\n    <comment>I have translated it directly in Japanese, but it may not convey the meaning very well.</comment>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsProvider by CodeChimp</value>\r\n    <comment>1</comment>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Task Scheduler Managed Wrapper</value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n    <comment>I have translated it directly in Japanese, but it may not convey the meaning very well.</comment>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Használt eszközök</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Bezárás</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Hivatalos weboldal</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Fejlesztői infó</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Fordítók</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>A BCUninstaller (Bulk Crap Uninstaller) névjegye</value>\r\n  </data>\r\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\r\n    <value>es.exe (CLI Everything-hez)</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Versione:</value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Copyright</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Creatore</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>64 bit:</value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Installato:</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Architettura:</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Versione programma</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Icone Modern UI</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectList View</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>Nbug</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsProvider</value>\r\n    <comment>1</comment>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Wrapper gestito dall'utilità di pianificazione</value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Risorse usate</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Chiudi</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Sito web ufficiale</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Info sviluppatore</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Traduttori</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Info su BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\r\n    <value>es.exe (CLI per Everything)</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller（バルク クラップ アンインストーラー）</value>\n  </data>\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\n    <value>バージョン:</value>\n  </data>\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\n    <value>著作権</value>\n  </data>\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\n    <value>作成者</value>\n  </data>\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\n    <value>64ビットかどうか:</value>\n  </data>\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\n    <value>インストール済みかどうか:</value>\n  </data>\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\n    <value>構成:</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>プログラムバージョン</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>DotNetZip</value>\n    <comment>jp translator: what's this?</comment>\n  </data>\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\n    <value>es.exe (Everything用CLI)</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>モダンUIアイコン</value>\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>オブジェクトリストビュー</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>Nバグ</value>\n    <comment>I have translated it directly in Japanese, but it may not convey the meaning very well.</comment>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>ポータブル設定プロバイダー</value>\n    <comment>1</comment>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>タスクスケジュールマネージャー</value>\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\n  </data>\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\n    <value>TestStack.White</value>\n    <comment>I have translated it directly in Japanese, but it may not convey the meaning very well.</comment>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>使用されているアセット</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>閉じる</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>公式ウェブページ</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>開発者情報</value>\n  </data>\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\n    <value>翻訳者</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller（バルク クラップ アンインストーラー）について</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller\r\n(BulkCrap\r\nUninstaller)</value>\r\n  </data>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Versie</value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Copyright</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Gemaakt door</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>64bit:</value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Geïnstalleerd:</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Architectuur</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Programma versie</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n    <comment>jp translator: what's this?</comment>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Modern UI Icons</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectListView</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug von Teoman Soygul</value>\r\n    <comment>I have translated it directly in Japanese, but it may not convey the meaning very well.</comment>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsProvider von CodeChimp</value>\r\n    <comment>1</comment>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Task Scheduler Managed Wrapper</value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n    <comment>I have translated it directly in Japanese, but it may not convey the meaning very well.</comment>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Gebruikte bronnen</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Sluiten</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Officiële website</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Ontwikkelaar info</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Vertalers</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Over BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\r\n    <value>es.exe (CLI voor Everything)</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Wersja: </value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Prawo autorskie</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Twórca</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>Jest 64bit: </value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Jest zainstalowany: </value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Architektura: </value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Wersja programu</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug przez Teoman Soygul</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Modern UI Icons</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsProvider przez CodeChimp</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Użyte elementy</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Zamknij</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Oficjalna strona internetowa</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Informacje o twórcy</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Tłumaczenia</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>O programie BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectListView</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Task Scheduler Managed Wrapper</value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Versão: </value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Direitos Autorais</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Criador</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>64bit:</value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Está instalado: </value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Arquitetura: </value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Versão do programa</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Ícones Modernos (IU)</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectListView</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsProvider</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Armazenamento Gerenciado pelo Agendador de Tarefas</value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Ativos usados</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Fechar</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Página da Web Oficial</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Informação do Desenvolvedor</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Tradutores</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Sobre o BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Versão: </value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Direitos de Autor</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Criador</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Versão do programa</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>É 64bit: </value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Está instalado: </value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Arquitectura: </value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Ícones de Modern UI</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectListView</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsProvider</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Pacote de Gestão do Programador de Tarefas </value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Elementos activos usados</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Fechar</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Página web oficial </value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Informação do Programador</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Translators</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Acerca do BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>116, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelName.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelName.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"labelName.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"labelName.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 19</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelName.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelName.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"labelName.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>199, 18</value>\r\n  </data>\r\n  <data name=\"labelName.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelName.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelName.Name\" xml:space=\"preserve\">\r\n    <value>labelName</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelName.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelName.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelName.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"labelVersion.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelVersion.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelVersion.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"labelVersion.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelVersion.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"labelVersion.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>51, 18</value>\r\n  </data>\r\n  <data name=\"labelVersion.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Version: </value>\r\n  </data>\r\n  <data name=\"labelVersion.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelVersion.Name\" xml:space=\"preserve\">\r\n    <value>labelVersion</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelVersion.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelVersion.Parent\" xml:space=\"preserve\">\r\n    <value>panel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelVersion.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelCopyright.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelCopyright.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"labelCopyright.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelCopyright.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>294, 0</value>\r\n  </data>\r\n  <data name=\"labelCopyright.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelCopyright.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"labelCopyright.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>60, 18</value>\r\n  </data>\r\n  <data name=\"labelCopyright.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Copyright</value>\r\n  </data>\r\n  <data name=\"labelCopyright.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelCopyright.Name\" xml:space=\"preserve\">\r\n    <value>labelCopyright</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelCopyright.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelCopyright.Parent\" xml:space=\"preserve\">\r\n    <value>panel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelCopyright.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>46, 18</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Creator</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelCompanyName.Name\" xml:space=\"preserve\">\r\n    <value>labelCompanyName</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelCompanyName.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelCompanyName.Parent\" xml:space=\"preserve\">\r\n    <value>panel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelCompanyName.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"panel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelis64.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelis64.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelis64.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"labelis64.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelis64.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"labelis64.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>50, 18</value>\r\n  </data>\r\n  <data name=\"labelis64.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>Is 64bit: </value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelis64.Name\" xml:space=\"preserve\">\r\n    <value>labelis64</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelis64.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelis64.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelis64.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelPortable.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelPortable.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"labelPortable.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelPortable.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>282, 0</value>\r\n  </data>\r\n  <data name=\"labelPortable.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelPortable.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 4, 3</value>\r\n  </data>\r\n  <data name=\"labelPortable.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>72, 18</value>\r\n  </data>\r\n  <data name=\"labelPortable.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Is installed: </value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelPortable.Name\" xml:space=\"preserve\">\r\n    <value>labelPortable</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelPortable.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelPortable.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelPortable.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 55</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>354, 18</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel4.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>276, 0</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>78, 18</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Architecture: </value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelArchitecture.Name\" xml:space=\"preserve\">\r\n    <value>labelArchitecture</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelArchitecture.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelArchitecture.Parent\" xml:space=\"preserve\">\r\n    <value>panel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelArchitecture.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 37</value>\r\n  </data>\r\n  <data name=\"panel4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>354, 18</value>\r\n  </data>\r\n  <data name=\"panel4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Name\" xml:space=\"preserve\">\r\n    <value>panel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 3, 4, 5</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>365, 78</value>\r\n  </data>\r\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Program version</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoScroll\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"linkLabel6.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel6.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>62, 18</value>\r\n  </data>\r\n  <data name=\"linkLabel6.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel6.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel6.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel6.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel6.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"linkLabel9.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel9.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel9.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 18</value>\r\n  </data>\r\n  <data name=\"linkLabel9.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel9.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"linkLabel9.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>144, 18</value>\r\n  </data>\r\n  <data name=\"linkLabel9.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\r\n    <value>es.exe (CLI for Everything)</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel9.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel9.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel9.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel9.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"linkLabel3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel3.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 36</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>94, 18</value>\r\n  </data>\r\n  <data name=\"linkLabel3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Modern UI Icons</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel3.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel3.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel3.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"linkLabel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel1.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 54</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>85, 18</value>\r\n  </data>\r\n  <data name=\"linkLabel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectListView</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel1.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel1.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"linkLabel5.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel5.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 72</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>37, 18</value>\r\n  </data>\r\n  <data name=\"linkLabel5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel5.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel5.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel5.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"linkLabel2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel2.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 90</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>137, 18</value>\r\n  </data>\r\n  <data name=\"linkLabel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsProvider</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel2.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel2.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"linkLabel7.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel7.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 108</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>185, 18</value>\r\n  </data>\r\n  <data name=\"linkLabel7.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Task Scheduler Managed Wrapper</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel7.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel7.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel7.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel7.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"linkLabel8.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel8.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel8.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 126</value>\r\n  </data>\r\n  <data name=\"linkLabel8.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel8.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"linkLabel8.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>89, 18</value>\r\n  </data>\r\n  <data name=\"linkLabel8.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel8.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel8</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel8.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel8.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel8.ZOrder\" xml:space=\"preserve\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>354, 74</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.WrapContents\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>panel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel5.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"panel5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 19</value>\r\n  </data>\r\n  <data name=\"panel5.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>354, 74</value>\r\n  </data>\r\n  <data name=\"panel5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.Name\" xml:space=\"preserve\">\r\n    <value>panel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 138</value>\r\n  </data>\r\n  <data name=\"groupBox2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 3, 4, 5</value>\r\n  </data>\r\n  <data name=\"groupBox2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>365, 98</value>\r\n  </data>\r\n  <data name=\"groupBox2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Assets used</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Name\" xml:space=\"preserve\">\r\n    <value>groupBox2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"button1.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Bottom, Right</value>\r\n  </data>\r\n  <data name=\"button1.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"button1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>282, 337</value>\r\n  </data>\r\n  <data name=\"button1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"button1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 27</value>\r\n  </data>\r\n  <data name=\"button1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Close</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button1.Name\" xml:space=\"preserve\">\r\n    <value>button1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button1.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"linkLabel4.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"linkLabel4.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 37</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>96, 18</value>\r\n  </data>\r\n  <data name=\"linkLabel4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Official webpage</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel4.Name\" xml:space=\"preserve\">\r\n    <value>linkLabel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel4.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;linkLabel4.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"panel3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"panel3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 19</value>\r\n  </data>\r\n  <data name=\"panel3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>354, 18</value>\r\n  </data>\r\n  <data name=\"panel3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>26</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Name\" xml:space=\"preserve\">\r\n    <value>panel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 78</value>\r\n  </data>\r\n  <data name=\"groupBox3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 3, 4, 5</value>\r\n  </data>\r\n  <data name=\"groupBox3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>365, 60</value>\r\n  </data>\r\n  <data name=\"groupBox3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Developer info</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox3.Name\" xml:space=\"preserve\">\r\n    <value>groupBox3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox3.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox3.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"imageBox.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"imageBox.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"imageBox.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>10, 10</value>\r\n  </data>\r\n  <data name=\"imageBox.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"imageBox.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>191, 367</value>\r\n  </data>\r\n  <data name=\"imageBox.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;imageBox.Name\" xml:space=\"preserve\">\r\n    <value>imageBox</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;imageBox.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;imageBox.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;imageBox.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.AutoScroll\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 19</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>354, 68</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.WrapContents\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 236</value>\r\n  </data>\r\n  <data name=\"groupBox4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox4.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 3, 4, 5</value>\r\n  </data>\r\n  <data name=\"groupBox4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>365, 92</value>\r\n  </data>\r\n  <data name=\"groupBox4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Translators</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox4.Name\" xml:space=\"preserve\">\r\n    <value>groupBox4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox4.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox4.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"panel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>201, 10</value>\r\n  </data>\r\n  <data name=\"panel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>8, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"panel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>373, 367</value>\r\n  </data>\r\n  <data name=\"panel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Name\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>116, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>584, 387</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>10, 10, 10, 10</value>\r\n  </data>\r\n  <data name=\"$this.StartPosition\" type=\"System.Windows.Forms.FormStartPosition, System.Windows.Forms\">\r\n    <value>CenterParent</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>About BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;usageTracker1.Name\" xml:space=\"preserve\">\r\n    <value>usageTracker1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;usageTracker1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Functions.Tracking.UsageTracker, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>AboutBox</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Версия: </value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Copyright</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Создатель</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Версия программы</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>Есть 64bit: </value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Инсталлирован: </value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Архитектура: </value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Используемые компоненты</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Иконки \"Метро\"</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectListView</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsProvider</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Оболочка .NET для планировщика заданий Windows</value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Закрыть</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Официальный сайт</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Разработчик</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Переводчики</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>О программе BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n  </data>\r\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\r\n    <value>es.exe (Мгновенный поисковик по файлам) </value>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>116, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\r\n    <value>Različica: </value>\r\n  </data>\r\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\r\n    <value>Avtorske pravice</value>\r\n  </data>\r\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\r\n    <value>Izdelovalec</value>\r\n  </data>\r\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\r\n    <value>64 bitni: </value>\r\n  </data>\r\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\r\n    <value>Nameščen: </value>\r\n  </data>\r\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\r\n    <value>Ahitektura: </value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Različica programa</value>\r\n  </data>\r\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\r\n    <value>DotNetZip</value>\r\n  </data>\r\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\r\n    <value>Sodobne ikone uporabniškega vmesnika</value>\r\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\r\n  </data>\r\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\r\n    <value>ObjectListView</value>\r\n  </data>\r\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\r\n    <value>NBug od Teoman Soygul</value>\r\n  </data>\r\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\r\n    <value>PortableSettingsProvider by CodeChimp</value>\r\n  </data>\r\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\r\n    <value>Wrapper upravljan z urnikom opravil </value>\r\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Uporabljena sredstva</value>\r\n  </data>\r\n  <data name=\"button1.Text\" xml:space=\"preserve\">\r\n    <value>Zapri</value>\r\n  </data>\r\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\r\n    <value>Uradna spletna stran</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Podatki o razvijalcu</value>\r\n  </data>\r\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\r\n    <value>Prevajalci</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Vizitka BCUninstallerja (Bulk Crap Uninstaller)</value>\r\n  </data>\r\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\r\n    <value>TestStack.White</value>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>116, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\n  </data>\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\n    <value>Version: </value>\n  </data>\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\n    <value>Copyright</value>\n  </data>\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\n    <value>Skapare</value>\n  </data>\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\n    <value>Är 64-bitars:</value>\n  </data>\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\n    <value>Är installerad:</value>\n  </data>\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\n    <value>Arkitektur:</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Program version</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>DotNetZip</value>\n    <comment>jp translator: what's this?</comment>\n  </data>\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\n    <value>es.exe (CLI for Everything)</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>Moderna UI Ikoner</value>\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>ObjectListView</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>NBug</value>\n    <comment>I have translated it directly in Japanese, but it may not convey the meaning very well.</comment>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>PortableSettingsProvider</value>\n    <comment>1</comment>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>Managed Wrapper för Schemaläggaren</value>\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\n  </data>\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\n    <value>TestStack.White</value>\n    <comment>I have translated it directly in Japanese, but it may not convey the meaning very well.</comment>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Använda tillgångar</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Stäng</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>Officiell webbsida</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>Utvecklarinformation</value>\n  </data>\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\n    <value>Översättare</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Om BCUninstaller (Bulk Crap Uninstaller)</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller (Toplu Düzeltme Kaldırıcı)</value>\n  </data>\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\n    <value>Versiyon:</value>\n  </data>\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\n    <value>Telif Hakkı</value>\n  </data>\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\n    <value>Üreticisi</value>\n  </data>\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\n    <value>64 Bit</value>\n  </data>\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\n    <value>Yüklü:</value>\n  </data>\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\n    <value>Mimari:</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Yazılım Versiyonu</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>DotNetZip</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>Modern UI ikonları</value>\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>ObjectListView</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>NBug</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>Taşınabilir Ayarlar Sağlayıcısı</value>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>Görev Zamanlayıcı Yönetim Kabuğu</value>\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\n  </data>\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\n    <value>TestStack.White</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Varlıklar kullanıldı</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Kapat</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>Resmi web sayfası</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>Geliştirici bilgisi</value>\n  </data>\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\n    <value>Çevirmenler</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller Hakkında (Toplu Düzeltme Kaldırıcı)</value>\n  </data>\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\n    <value>es.exe (Her şey için komut satırı)</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\n  </data>\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\n    <value>Phiên bản: </value>\n  </data>\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\n    <value>Bản quyền</value>\n  </data>\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\n    <value>Tác giả</value>\n  </data>\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\n    <value>Phiên bản 64bit: </value>\n  </data>\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\n    <value>Được cài bằng trình cài đặt: </value>\n  </data>\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\n    <value>Cấu trúc: </value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Phiên bản ứng dụng</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>DotNetZip</value>\n    <comment>jp translator: what's this?</comment>\n  </data>\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\n    <value>es.exe (CLI for Everything)</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>Modern UI Icons</value>\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>ObjectListView</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>NBug</value>\n    <comment>I have translated it directly in Japanese, but it may not convey the meaning very well.</comment>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>PortableSettingsProvider</value>\n    <comment>1</comment>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>Task Scheduler Managed Wrapper</value>\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\n  </data>\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\n    <value>TestStack.White</value>\n    <comment>I have translated it directly in Japanese, but it may not convey the meaning very well.</comment>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Thành phần được sử dụng</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Đóng</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>Trang web chính thức</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>Thông tin nhà phát triển</value>\n  </data>\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\n    <value>Các dịch giả</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Giới thiệu về BCUninstaller (Bulk Crap Uninstaller)</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\n  </data>\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\n    <value>版本:</value>\n  </data>\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\n    <value>版权</value>\n  </data>\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\n    <value>创作者</value>\n  </data>\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\n    <value>64位:</value>\n  </data>\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\n    <value>安装版:</value>\n  </data>\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\n    <value>架构:</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>程序版本</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>DotNetZip</value>\n  </data>\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\n    <value>es.exe (CLI for Everything)</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>Modern UI Icons</value>\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>ObjectListView</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>NBug</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>PortableSettingsProvider</value>\n    <comment>1</comment>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>Task Scheduler Managed Wrapper</value>\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\n  </data>\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\n    <value>TestStack.White</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>使用素材</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>官网</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>开发者信息</value>\n  </data>\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\n    <value>翻译者</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>关于BCUninstaller (Bulk Crap Uninstaller)</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/AboutBox.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelName.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller (Bulk Crap Uninstaller)</value>\n  </data>\n  <data name=\"labelVersion.Text\" xml:space=\"preserve\">\n    <value>版本號碼：</value>\n  </data>\n  <data name=\"labelCopyright.Text\" xml:space=\"preserve\">\n    <value>版權</value>\n  </data>\n  <data name=\"labelCompanyName.Text\" xml:space=\"preserve\">\n    <value>創作者</value>\n  </data>\n  <data name=\"labelis64.Text\" xml:space=\"preserve\">\n    <value>程式是否為64位元：</value>\n  </data>\n  <data name=\"labelPortable.Text\" xml:space=\"preserve\">\n    <value>安裝版或免安裝版：</value>\n  </data>\n  <data name=\"labelArchitecture.Text\" xml:space=\"preserve\">\n    <value>架構：</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>程式版本</value>\n  </data>\n  <data name=\"linkLabel6.Text\" xml:space=\"preserve\">\n    <value>DotNetZip</value>\n  </data>\n  <data name=\"linkLabel9.Text\" xml:space=\"preserve\">\n    <value>es.exe (CLI for Everything)</value>\n  </data>\n  <data name=\"linkLabel3.Text\" xml:space=\"preserve\">\n    <value>Modern UI Icons</value>\n    <comment>Si \"Modern UI Icons\" significa \"Iconos de Interfaz de Usuario Moderno\" la traducción será \"Iconos Modernos de Interface de Usuario\"</comment>\n  </data>\n  <data name=\"linkLabel1.Text\" xml:space=\"preserve\">\n    <value>ObjectListView</value>\n  </data>\n  <data name=\"linkLabel5.Text\" xml:space=\"preserve\">\n    <value>NBug</value>\n  </data>\n  <data name=\"linkLabel2.Text\" xml:space=\"preserve\">\n    <value>PortableSettingsProvider</value>\n    <comment>1</comment>\n  </data>\n  <data name=\"linkLabel7.Text\" xml:space=\"preserve\">\n    <value>Task Scheduler Managed Wrapper</value>\n    <comment>?? If translation wanted: \"Pacote de Gestão de Tarefas Agendadas\"</comment>\n  </data>\n  <data name=\"linkLabel8.Text\" xml:space=\"preserve\">\n    <value>TestStack.White</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>使用元件</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"linkLabel4.Text\" xml:space=\"preserve\">\n    <value>官網</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>開發者資訊</value>\n  </data>\n  <data name=\"groupBox4.Text\" xml:space=\"preserve\">\n    <value>翻譯人員</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>關於BCUninstaller (Bulk Crap Uninstaller)</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.Designer.cs",
    "content": "﻿using System.ComponentModel;\r\nusing System.Windows.Forms;\r\nusing BrightIdeasSoftware;\r\nusing BulkCrapUninstaller.Functions.Tracking;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class JunkRemoveWindow\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            components = new Container();\r\n            ComponentResourceManager resources = new ComponentResourceManager(typeof(JunkRemoveWindow));\r\n            exportDialog = new SaveFileDialog();\r\n            buttonCancel = new Button();\r\n            buttonAccept = new Button();\r\n            buttonExport = new Button();\r\n            comboBoxChecker = new ComboBox();\r\n            checkBoxHideLowConfidence = new CheckBox();\r\n            panel1 = new Panel();\r\n            groupBox1 = new GroupBox();\r\n            objectListViewMain = new ObjectListView();\r\n            olvColumnPath = new OLVColumn();\r\n            olvColumnSafety = new OLVColumn();\r\n            olvColumnUninstallerName = new OLVColumn();\r\n            flowLayoutPanel1 = new FlowLayoutPanel();\r\n            headerIntro = new Label();\r\n            headerConfTitle = new Label();\r\n            headerConfInfo = new Label();\r\n            usageTracker1 = new UsageTracker();\r\n            listViewContextMenuStrip = new ContextMenuStrip(components);\r\n            openToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator1 = new ToolStripSeparator();\r\n            copyToClipboardToolStripMenuItem = new ToolStripMenuItem();\r\n            detailsToolStripMenuItem = new ToolStripMenuItem();\r\n            panel1.SuspendLayout();\r\n            groupBox1.SuspendLayout();\r\n            ((ISupportInitialize)objectListViewMain).BeginInit();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            listViewContextMenuStrip.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // exportDialog\r\n            // \r\n            exportDialog.DefaultExt = \"txt\";\r\n            exportDialog.FileName = \"New BCUninstaller Junk Export\";\r\n            resources.ApplyResources(exportDialog, \"exportDialog\");\r\n            exportDialog.RestoreDirectory = true;\r\n            exportDialog.FileOk += exportDialog_FileOk;\r\n            // \r\n            // buttonCancel\r\n            // \r\n            resources.ApplyResources(buttonCancel, \"buttonCancel\");\r\n            buttonCancel.DialogResult = DialogResult.Cancel;\r\n            buttonCancel.Name = \"buttonCancel\";\r\n            buttonCancel.UseVisualStyleBackColor = true;\r\n            // \r\n            // buttonAccept\r\n            // \r\n            resources.ApplyResources(buttonAccept, \"buttonAccept\");\r\n            buttonAccept.Name = \"buttonAccept\";\r\n            buttonAccept.UseVisualStyleBackColor = true;\r\n            buttonAccept.Click += buttonAccept_Click;\r\n            // \r\n            // buttonExport\r\n            // \r\n            resources.ApplyResources(buttonExport, \"buttonExport\");\r\n            buttonExport.Name = \"buttonExport\";\r\n            buttonExport.UseVisualStyleBackColor = true;\r\n            buttonExport.Click += buttonExport_Click;\r\n            // \r\n            // comboBoxChecker\r\n            // \r\n            comboBoxChecker.DropDownStyle = ComboBoxStyle.DropDownList;\r\n            comboBoxChecker.FormattingEnabled = true;\r\n            resources.ApplyResources(comboBoxChecker, \"comboBoxChecker\");\r\n            comboBoxChecker.Name = \"comboBoxChecker\";\r\n            comboBoxChecker.DropDown += comboBoxChecker_DropDown;\r\n            comboBoxChecker.SelectedIndexChanged += comboBoxChecker_SelectedIndexChanged;\r\n            comboBoxChecker.DropDownClosed += comboBoxChecker_DropDownClosed;\r\n            // \r\n            // checkBoxHideLowConfidence\r\n            // \r\n            resources.ApplyResources(checkBoxHideLowConfidence, \"checkBoxHideLowConfidence\");\r\n            checkBoxHideLowConfidence.Checked = true;\r\n            checkBoxHideLowConfidence.CheckState = CheckState.Checked;\r\n            checkBoxHideLowConfidence.Name = \"checkBoxHideLowConfidence\";\r\n            checkBoxHideLowConfidence.UseVisualStyleBackColor = true;\r\n            checkBoxHideLowConfidence.CheckedChanged += checkBoxHideLowConfidence_CheckedChanged;\r\n            checkBoxHideLowConfidence.Click += checkBoxHideLowConfidence_Click;\r\n            // \r\n            // panel1\r\n            // \r\n            panel1.Controls.Add(buttonAccept);\r\n            panel1.Controls.Add(buttonCancel);\r\n            panel1.Controls.Add(checkBoxHideLowConfidence);\r\n            panel1.Controls.Add(comboBoxChecker);\r\n            panel1.Controls.Add(buttonExport);\r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // groupBox1\r\n            // \r\n            groupBox1.Controls.Add(objectListViewMain);\r\n            groupBox1.Controls.Add(flowLayoutPanel1);\r\n            resources.ApplyResources(groupBox1, \"groupBox1\");\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.TabStop = false;\r\n            // \r\n            // objectListViewMain\r\n            // \r\n            objectListViewMain.AllColumns.Add(olvColumnPath);\r\n            objectListViewMain.AllColumns.Add(olvColumnSafety);\r\n            objectListViewMain.AllColumns.Add(olvColumnUninstallerName);\r\n            objectListViewMain.CellEditActivation = ObjectListView.CellEditActivateMode.DoubleClick;\r\n            objectListViewMain.CellEditUseWholeCell = false;\r\n            objectListViewMain.CheckBoxes = true;\r\n            objectListViewMain.Columns.AddRange(new ColumnHeader[] { olvColumnPath, olvColumnSafety, olvColumnUninstallerName });\r\n            resources.ApplyResources(objectListViewMain, \"objectListViewMain\");\r\n            objectListViewMain.FullRowSelect = true;\r\n            objectListViewMain.GridLines = true;\r\n            objectListViewMain.Name = \"objectListViewMain\";\r\n            objectListViewMain.ShowItemToolTips = true;\r\n            objectListViewMain.UseCompatibleStateImageBehavior = false;\r\n            objectListViewMain.View = View.Details;\r\n            objectListViewMain.CellEditStarting += objectListViewMain_CellEditStarting;\r\n            objectListViewMain.CellRightClick += objectListViewMain_CellRightClick;\r\n            // \r\n            // olvColumnPath\r\n            // \r\n            olvColumnPath.AspectName = \"\";\r\n            resources.ApplyResources(olvColumnPath, \"olvColumnPath\");\r\n            // \r\n            // olvColumnSafety\r\n            // \r\n            olvColumnSafety.AspectName = \"\";\r\n            resources.ApplyResources(olvColumnSafety, \"olvColumnSafety\");\r\n            // \r\n            // olvColumnUninstallerName\r\n            // \r\n            olvColumnUninstallerName.AspectName = \"\";\r\n            resources.ApplyResources(olvColumnUninstallerName, \"olvColumnUninstallerName\");\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Controls.Add(headerIntro);\r\n            flowLayoutPanel1.Controls.Add(headerConfTitle);\r\n            flowLayoutPanel1.Controls.Add(headerConfInfo);\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // headerIntro\r\n            // \r\n            resources.ApplyResources(headerIntro, \"headerIntro\");\r\n            headerIntro.Name = \"headerIntro\";\r\n            // \r\n            // headerConfTitle\r\n            // \r\n            resources.ApplyResources(headerConfTitle, \"headerConfTitle\");\r\n            headerConfTitle.Name = \"headerConfTitle\";\r\n            // \r\n            // headerConfInfo\r\n            // \r\n            resources.ApplyResources(headerConfInfo, \"headerConfInfo\");\r\n            headerConfInfo.Name = \"headerConfInfo\";\r\n            // \r\n            // usageTracker1\r\n            // \r\n            usageTracker1.ContainerControl = this;\r\n            // \r\n            // listViewContextMenuStrip\r\n            // \r\n            listViewContextMenuStrip.Items.AddRange(new ToolStripItem[] { openToolStripMenuItem, toolStripSeparator1, copyToClipboardToolStripMenuItem, detailsToolStripMenuItem });\r\n            listViewContextMenuStrip.Name = \"listViewContextMenuStrip\";\r\n            resources.ApplyResources(listViewContextMenuStrip, \"listViewContextMenuStrip\");\r\n            // \r\n            // openToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(openToolStripMenuItem, \"openToolStripMenuItem\");\r\n            openToolStripMenuItem.Image = Properties.Resources.folderopen;\r\n            openToolStripMenuItem.Name = \"openToolStripMenuItem\";\r\n            openToolStripMenuItem.Click += openToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator1\r\n            // \r\n            toolStripSeparator1.Name = \"toolStripSeparator1\";\r\n            resources.ApplyResources(toolStripSeparator1, \"toolStripSeparator1\");\r\n            // \r\n            // copyToClipboardToolStripMenuItem\r\n            // \r\n            copyToClipboardToolStripMenuItem.Image = Properties.Resources.pagecopy;\r\n            copyToClipboardToolStripMenuItem.Name = \"copyToClipboardToolStripMenuItem\";\r\n            resources.ApplyResources(copyToClipboardToolStripMenuItem, \"copyToClipboardToolStripMenuItem\");\r\n            copyToClipboardToolStripMenuItem.Click += copyToClipboardToolStripMenuItem_Click;\r\n            // \r\n            // detailsToolStripMenuItem\r\n            // \r\n            detailsToolStripMenuItem.Image = Properties.Resources.magnifybrowse;\r\n            detailsToolStripMenuItem.Name = \"detailsToolStripMenuItem\";\r\n            resources.ApplyResources(detailsToolStripMenuItem, \"detailsToolStripMenuItem\");\r\n            detailsToolStripMenuItem.Click += detailsToolStripMenuItem_Click;\r\n            // \r\n            // JunkRemoveWindow\r\n            // \r\n            AcceptButton = buttonAccept;\r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = AutoScaleMode.Font;\r\n            CancelButton = buttonCancel;\r\n            Controls.Add(groupBox1);\r\n            Controls.Add(panel1);\r\n            Name = \"JunkRemoveWindow\";\r\n            panel1.ResumeLayout(false);\r\n            panel1.PerformLayout();\r\n            groupBox1.ResumeLayout(false);\r\n            groupBox1.PerformLayout();\r\n            ((ISupportInitialize)objectListViewMain).EndInit();\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            listViewContextMenuStrip.ResumeLayout(false);\r\n            ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private SaveFileDialog exportDialog;\r\n        private Button buttonCancel;\r\n        private Button buttonAccept;\r\n        private Button buttonExport;\r\n        private ComboBox comboBoxChecker;\r\n        private CheckBox checkBoxHideLowConfidence;\r\n        private Panel panel1;\r\n        private GroupBox groupBox1;\r\n        private ObjectListView objectListViewMain;\r\n        private OLVColumn olvColumnPath;\r\n        private OLVColumn olvColumnSafety;\r\n        private OLVColumn olvColumnUninstallerName;\r\n        private UsageTracker usageTracker1;\r\n        private FlowLayoutPanel flowLayoutPanel1;\r\n        private Label headerConfInfo;\r\n        private Label headerIntro;\r\n        private Label headerConfTitle;\r\n        private ContextMenuStrip listViewContextMenuStrip;\r\n        private ToolStripMenuItem openToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator1;\r\n        private ToolStripMenuItem copyToClipboardToolStripMenuItem;\r\n        private ToolStripMenuItem detailsToolStripMenuItem;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;تفاصيل</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;نسخ الى الحافظة</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;افتح</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>ازاله البقايا</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>قائمه الملفات و/او مفاتيح التسجيل المتبقية بعد الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>الكشف عن هذه البقايا هو عمليه معقده التي يمكن ان تسبب الاخطاء. وبسبب هذا ، يتم منح كافة المواد تقدير الثقة ويترك القرار النهائي للمستخدم. البنود ذات الثقة الجيدة والجيدة وعاده ما تكون امنه للازاله ، ولكن لا يزال عليك التحقق منها مرتين.</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>تقييم الثقة</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>يبدو ان المواد التالية قد تركت وراءها من قبل المثبتات الخاصة بهم. قد يفشل بعض المثبتين في ازاله اجزاء من التطبيق ، مما يؤدي الى تكلفه سعة المحرك . ومع ذلك ، فان معظم هذه المواد من المرجح ان تكون اعدادات التطبيق ، والتي تاخذ مساحة صغيره وغير مؤذيه.</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>اسم الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>ثقة</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>مسار المادة</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>اخفاء المواد بثقة سيئه</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>تصدير...</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>حذف محدد</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>الغاء الامر</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>تصدير القائمه المتبقية</value>\r\n    <comment>leftover=rimanenti</comment>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Text files|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing BrightIdeasSoftware;\r\nusing BulkCrapUninstaller.Functions;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Localising;\r\nusing Klocman.Resources;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class JunkRemoveWindow : Form\r\n    {\r\n        private static readonly string SelectionBoxText = Localisable.JunkRemove_SelectionBoxText;\r\n\r\n        private static readonly string BackupDateFormat =\r\n            new CultureInfo(\"en-US\", false).DateTimeFormat.SortableDateTimePattern.Replace(':', '-').Replace('T', '_');\r\n\r\n        private bool _confirmLowConfidenceMessageShown;\r\n        private TypedObjectListView<IJunkResult> _listViewWrapper;\r\n\r\n        public JunkRemoveWindow(IEnumerable<IJunkResult> junk)\r\n        {\r\n            InitializeComponent();\r\n\r\n            Icon = Resources.Icon_Logo;\r\n\r\n            var junkNodes = junk as IList<IJunkResult> ?? junk.ToList();\r\n\r\n            SetupListView(junkNodes);\r\n\r\n            if (junkNodes.All(x => x.Confidence.GetRawConfidence() < 0))\r\n            {\r\n                _confirmLowConfidenceMessageShown = true;\r\n                checkBoxHideLowConfidence.Checked = true;\r\n                checkBoxHideLowConfidence.Enabled = false;\r\n            }\r\n            else if (junkNodes.All(x => x.Confidence.GetRawConfidence() >= 0))\r\n                checkBoxHideLowConfidence.Enabled = false;\r\n\r\n            new[] { ConfidenceLevel.VeryGood, ConfidenceLevel.Good, ConfidenceLevel.Questionable, ConfidenceLevel.Bad }\r\n                .ForEach(x => comboBoxChecker.Items.Add(new LocalisedEnumWrapper(x)));\r\n            comboBoxChecker_DropDownClosed(this, EventArgs.Empty);\r\n        }\r\n\r\n        public IEnumerable<IJunkResult> SelectedJunk => _listViewWrapper.CheckedObjects;\r\n\r\n        private void buttonAccept_Click(object sender, EventArgs e)\r\n        {\r\n            Enabled = false;\r\n            try\r\n            {\r\n                var filters = SelectedJunk.OfType<FileSystemJunk>().Select(x => x.Path.FullName).Distinct().ToArray();\r\n                if (!AppUninstaller.CheckForRunningProcesses(filters, false, this))\r\n                    return;\r\n\r\n                if (SelectedJunk.Any(x => !(x is FileSystemJunk)))\r\n                {\r\n                    if (Settings.Default.BackupLeftovers == YesNoAsk.Ask)\r\n                    {\r\n                        switch (MessageBoxes.BackupRegistryQuestion(this))\r\n                        {\r\n                            case MessageBoxes.PressedButton.Yes:\r\n                                var path = MessageBoxes.SelectFolder(\r\n                                    Localisable.JunkRemoveWindow_SelectBackupDirectoryTitle);\r\n\r\n                                if (string.IsNullOrEmpty(path))\r\n                                    return;\r\n\r\n                                try\r\n                                {\r\n                                    CreateBackup(path);\r\n                                    Settings.Default.BackupLeftoversDirectory = path;\r\n                                }\r\n                                catch (OperationCanceledException)\r\n                                {\r\n                                    goto case MessageBoxes.PressedButton.Yes;\r\n                                }\r\n\r\n                                break;\r\n\r\n                            case MessageBoxes.PressedButton.No:\r\n                                break;\r\n\r\n                            default:\r\n                                return;\r\n                        }\r\n                    }\r\n                    else if (Settings.Default.BackupLeftovers == YesNoAsk.Yes)\r\n                    {\r\n                        while (true)\r\n                        {\r\n                            if (Directory.Exists(Settings.Default.BackupLeftoversDirectory))\r\n                            {\r\n                                try\r\n                                {\r\n                                    CreateBackup(Settings.Default.BackupLeftoversDirectory);\r\n                                    break;\r\n                                }\r\n                                catch (OperationCanceledException)\r\n                                {\r\n                                }\r\n                            }\r\n\r\n                            Settings.Default.BackupLeftoversDirectory =\r\n                                MessageBoxes.SelectFolder(Localisable.JunkRemoveWindow_SelectBackupDirectoryTitle);\r\n\r\n                            if (string.IsNullOrEmpty(Settings.Default.BackupLeftoversDirectory))\r\n                            {\r\n                                Settings.Default.BackupLeftoversDirectory = string.Empty;\r\n                                Settings.Default.BackupLeftovers = YesNoAsk.Ask;\r\n                                return;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n\r\n                DialogResult = DialogResult.OK;\r\n                Close();\r\n            }\r\n            finally\r\n            {\r\n                Enabled = true;\r\n            }\r\n        }\r\n\r\n        private void CreateBackup(string backupPath)\r\n        {\r\n            var dir = Path.Combine(backupPath, GetUniqueBackupName());\r\n            if (string.IsNullOrEmpty(backupPath) || !Directory.Exists(backupPath))\r\n            {\r\n                PremadeDialogs.GenericError($\"The parent directory does not exist:\\n{backupPath}\\n\\nPlease choose a different backup location.\");\r\n                throw new OperationCanceledException();\r\n            }\r\n            try\r\n            {\r\n                Directory.CreateDirectory(dir);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                // https://github.com/dotnet/runtime/issues/24783\r\n                if (ex is FileNotFoundException)\r\n                    ex = new UnauthorizedAccessException(\"You do not have access to this path, choose a different path. If you use controlled folders, try turning them off or adding BCU to exclusions.\", ex);\r\n\r\n                PremadeDialogs.GenericError(ex);\r\n                throw new OperationCanceledException();\r\n            }\r\n\r\n            try\r\n            {\r\n                FilesystemTools.CompressDirectory(dir, TimeSpan.FromMinutes(2));\r\n            }\r\n            catch\r\n            {\r\n                // Ignore, not important\r\n            }\r\n\r\n            RunBackup(dir);\r\n        }\r\n\r\n        private void buttonExport_Click(object sender, EventArgs e)\r\n        {\r\n            exportDialog.ShowDialog();\r\n        }\r\n\r\n        private void checkBoxHideLowConfidence_CheckedChanged(object sender, EventArgs e)\r\n        {\r\n            objectListViewMain.UpdateColumnFiltering();\r\n        }\r\n\r\n        private void checkBoxHideLowConfidence_Click(object sender, EventArgs e)\r\n        {\r\n            if (!checkBoxHideLowConfidence.Checked)\r\n            {\r\n                if (_confirmLowConfidenceMessageShown || MessageBoxes.ConfirmLowConfidenceQuestion(this))\r\n                    _confirmLowConfidenceMessageShown = true;\r\n                else\r\n                    checkBoxHideLowConfidence.Checked = true;\r\n            }\r\n        }\r\n\r\n        private void comboBoxChecker_DropDown(object sender, EventArgs e)\r\n        {\r\n            comboBoxChecker.Items.Remove(SelectionBoxText);\r\n            //comboBoxChecker.ForeColor = SystemColors.WindowText;\r\n        }\r\n\r\n        private void comboBoxChecker_DropDownClosed(object sender, EventArgs e)\r\n        {\r\n            if (comboBoxChecker.SelectedItem is LocalisedEnumWrapper localisedEnumWrapper)\r\n            {\r\n                var selectedConfidence = (ConfidenceLevel)localisedEnumWrapper.TargetEnum;\r\n\r\n                if ((selectedConfidence != ConfidenceLevel.Bad && selectedConfidence != ConfidenceLevel.Questionable)\r\n                    || MessageBoxes.ConfirmLowConfidenceQuestion(this)) //Ask if selected low confidence\r\n                {\r\n                    SelectUpTo(selectedConfidence);\r\n                }\r\n            }\r\n\r\n            comboBoxChecker.Items.Add(SelectionBoxText);\r\n            comboBoxChecker.SelectedItem = SelectionBoxText;\r\n            //comboBoxChecker.ForeColor = SystemColors.Control;\r\n        }\r\n\r\n        private void comboBoxChecker_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n            objectListViewMain.BuildList(true);\r\n        }\r\n\r\n        private void copyToClipboardToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            try\r\n            {\r\n                var items = objectListViewMain.SelectedObjects.Cast<IJunkResult>().Select(x => x.ToLongString()).ToArray();\r\n\r\n                if (items.Any())\r\n                {\r\n                    Clipboard.SetText(string.Join(Environment.NewLine, items));\r\n                }\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n            }\r\n        }\r\n\r\n        private void detailsToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            if (objectListViewMain.SelectedObject is not IJunkResult item) return;\r\n            DisplayDetails(item);\r\n        }\r\n\r\n        private static void DisplayDetails(IJunkResult item)\r\n        {\r\n            var groups = item.Confidence.ConfidenceParts.GroupBy(part => part.Change > 0).ToList();\r\n\r\n            var positives = Localisable.Empty;\r\n            if (groups.Any(x => x.Key))\r\n            {\r\n                var items = groups.First(x => x.Key)\r\n                    .Where(x => x.Reason.IsNotEmpty())\r\n                    .Select(x => x.Reason)\r\n                    .ToArray();\r\n                if (items.Any())\r\n                    positives = string.Join(\"\\n\", items);\r\n            }\r\n\r\n            var negatives = Localisable.Empty;\r\n            if (groups.Any(x => !x.Key))\r\n            {\r\n                var items = groups.First(x => !x.Key)\r\n                    .Where(x => x.Reason.IsNotEmpty())\r\n                    .Select(x => x.Reason)\r\n                    .ToArray();\r\n                if (items.Any())\r\n                    negatives = string.Join(\"\\n\", items);\r\n            }\r\n\r\n            MessageBox.Show(string.Format(CultureInfo.CurrentCulture, Localisable.JunkRemove_Details_Message,\r\n                item.Confidence.GetRawConfidence(), positives, negatives), Localisable.JunkRemove_Details_Title,\r\n                MessageBoxButtons.OK, MessageBoxIcon.Information);\r\n        }\r\n\r\n        private void exportDialog_FileOk(object sender, CancelEventArgs e)\r\n        {\r\n            try\r\n            {\r\n                File.WriteAllLines(exportDialog.FileName,\r\n                    objectListViewMain.FilteredObjects.Cast<IJunkResult>().Select(x => x.ToLongString()).ToArray());\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                MessageBoxes.ExportFailed(ex.Message, this);\r\n            }\r\n        }\r\n\r\n        private static string GetUniqueBackupName()\r\n        {\r\n            return \"BCU Backup \" + DateTime.Now.ToString(BackupDateFormat, CultureInfo.InvariantCulture);\r\n        }\r\n\r\n        private bool JunkListFilter(object obj)\r\n        {\r\n            if (obj is not IJunkResult item)\r\n                return false;\r\n\r\n            if (checkBoxHideLowConfidence.Checked && item.Confidence.GetRawConfidence() < 0)\r\n                return false;\r\n\r\n            return true;\r\n        }\r\n\r\n        private void objectListViewMain_CellEditStarting(object sender, CellEditEventArgs e)\r\n        {\r\n            e.Cancel = true;\r\n            if (e.RowObject is not IJunkResult item) return;\r\n\r\n            EnsureSingleSelection(e.ListViewItem);\r\n            OpenJunkNodePreview(item);\r\n        }\r\n\r\n        private void objectListViewMain_CellRightClick(object sender, CellRightClickEventArgs e)\r\n        {\r\n            if (e.Model == null)\r\n                return;\r\n\r\n            EnsureSingleSelection(e.Item);\r\n\r\n            e.MenuStrip = listViewContextMenuStrip;\r\n        }\r\n\r\n        private void EnsureSingleSelection(ListViewItem clickedItem)\r\n        {\r\n            if (objectListViewMain.SelectedItems.Count != 1)\r\n            {\r\n                objectListViewMain.DeselectAll();\r\n                clickedItem.Selected = true;\r\n            }\r\n        }\r\n\r\n        private static void OpenJunkNodePreview(IJunkResult item)\r\n        {\r\n            try\r\n            {\r\n                item.Open();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n            }\r\n        }\r\n\r\n        private void openToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            if (objectListViewMain.SelectedObject is not IJunkResult item) return;\r\n            OpenJunkNodePreview(item);\r\n        }\r\n\r\n        private void RunBackup(string targetdir)\r\n        {\r\n            var failed = new List<string>();\r\n            foreach (var junkNode in SelectedJunk)\r\n            {\r\n                try\r\n                {\r\n                    junkNode.Backup(targetdir);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    var displayName = junkNode.GetDisplayName();\r\n                    failed.Add(ex.Message + \" - \" + displayName);\r\n                    Console.WriteLine($\"Backup failed for item {displayName} with exception: {ex}\");\r\n                }\r\n            }\r\n\r\n            if (failed.Any())\r\n            {\r\n                failed.Sort();\r\n\r\n                // Prevent the dialog from getting too large\r\n                if (failed.Count > 6) failed = failed.Take(5).Concat(new[] { \"... (check log for the full list)\" }).ToList();\r\n\r\n                if (MessageBoxes.BackupFailedQuestion(string.Join(\"\\n\", failed.ToArray()), this)\r\n                    != MessageBoxes.PressedButton.Yes)\r\n                {\r\n                    throw new OperationCanceledException();\r\n                }\r\n            }\r\n        }\r\n\r\n        private void SelectUpTo(ConfidenceLevel selectedConfidenceLevel)\r\n        {\r\n            objectListViewMain.BeginControlUpdate();\r\n            objectListViewMain.BeginUpdate();\r\n\r\n            objectListViewMain.DeselectAll();\r\n            objectListViewMain.UncheckAll();\r\n\r\n            objectListViewMain.CheckObjects(objectListViewMain.FilteredObjects.Cast<IJunkResult>()\r\n                .Where(x => x.Confidence.GetConfidence() >= selectedConfidenceLevel).ToList());\r\n\r\n            objectListViewMain.EndUpdate();\r\n            objectListViewMain.EndControlUpdate();\r\n        }\r\n\r\n        private void SetupListView(IEnumerable<IJunkResult> junk)\r\n        {\r\n            _listViewWrapper = new TypedObjectListView<IJunkResult>(objectListViewMain);\r\n\r\n            olvColumnSafety.AspectGetter = x => ((x as IJunkResult)?.Confidence?.GetConfidence() ?? ConfidenceLevel.Unknown).GetLocalisedName();\r\n            olvColumnPath.GroupKeyGetter = x => (x as IJunkResult)?.Source?.CategoryName ?? CommonStrings.Unknown;\r\n            olvColumnPath.AspectGetter = rowObject => (rowObject as IJunkResult)?.GetDisplayName();\r\n            olvColumnUninstallerName.AspectGetter = rowObject =>\r\n            {\r\n                if (rowObject is not IJunkResult junkResult)\r\n                    return null;\r\n\r\n                var displayName = junkResult.Application?.DisplayName;\r\n                if (!string.IsNullOrEmpty(displayName))\r\n                    return displayName;\r\n\r\n                var categoryName = junkResult.Source?.CategoryName;\r\n                if (!string.IsNullOrEmpty(categoryName))\r\n                    return categoryName;\r\n\r\n                return Localisable.NotAvailable;\r\n            };\r\n\r\n            objectListViewMain.BeginUpdate();\r\n\r\n            objectListViewMain.UseFiltering = true;\r\n            objectListViewMain.AdditionalFilter = new ModelFilter(JunkListFilter);\r\n\r\n            objectListViewMain.PrimarySortColumn = olvColumnUninstallerName;\r\n            objectListViewMain.PrimarySortOrder = SortOrder.Ascending;\r\n\r\n            objectListViewMain.SetObjects(junk);\r\n\r\n            SelectUpTo(ConfidenceLevel.Good);\r\n\r\n            objectListViewMain.EndUpdate();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Detaily</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Zkopírovat do schránky</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Otevřít</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Odstranit zbylé soubory</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Seznam souborů, které zůstaly po odinstalování</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>Detekce těchto zbytků je složitý proces, který může udělat chybu. Z tohoto důvodu jsou všechny položky uvedeny mírou spolehlivosti a konečné rozhodnutí je ponecháno na uživateli. Položky s dobrou a velmi dobrou důvěry jsou obvykle bezpečné odstraněny, ale stále by se měli zkontrolovat.</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Hodnocení důvěry</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>Následující položky po sobě zanechal jejich odinstalátor. Některé odinstalátory můžou selhat odstraní části aplikace, což má za následek obsazení kapacity disku. Jak již bylo řečeno, většina z těchto položek které by mohly být nastavením aplikace, zabírají málo místa a jsou neškodné.</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>Název odinstalátoru</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Důveryhodné</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>cesta k položce</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Skrýt neduvěryhodné položky</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Export...</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Smazat vybrané</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Zrušit</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Export seznamu pozůstatků</value>\r\n    <comment>leftover=rimanenti</comment>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Textové soubory|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <metadata name=\"exportDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"saveFileDialogBackupRegistry.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>131, 17</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>330, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"listViewContextMenuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>454, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Details</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>In Zwischenablage &amp;kopieren</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ö&amp;ffnen</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Übrig gebliebene Dateien entfernen</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Liste der Dateien, die nach der Deinstallation übrig blieben</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>Die Erkennung dieser Rückstände  ist ein komplexer Prozess, bei dem Fehler auftreten können. Aus diesem Grund gibt es für jedes Element eine Vertrauensbewertung. Die endgültige Entscheidung hat am Ende der Benutzer. Elemente mit hohem oder sehr hohem Vertrauensgrad können gefahrlos entfernt werden, dennoch sollten Sie alles vor dem Löschen sorgfältig überprüfen. Bewertungsdetails können Sie sich nach Doppelklick auf das Element anzeigen lassen.</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Vertrauensbewertung</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>Folgende Elemente scheinen von ihren Uninstallern zurückgelassen worden zu sein. Mitunter werden nicht alle Programmteile vollständigen entfernt - was auf Kosten der Laufwerkskapazität geht. Jedoch sind die meisten dieser Elemente wahrscheinlich Anwendungseinstellungen, belegen wenig Platz und sind harmlos.</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>Name des Uninstallers</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Vertrauensgrad</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>Elementpfad</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Ausblenden von Elementen mit niedrigem Vertrauensgrad</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exportieren...</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Ausgewählte löschen</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Abbrechen</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Liste mit Rückständen exportieren</value>\r\n    <comment>leftover=rimanenti</comment>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Textdateien|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Detalles</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copiar al portapapeles</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Abrir</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Eliminar restos</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lista de archivos o claves de registro restantes después de la desinstalación</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>La detección de estos restos es un proceso complejo que puede cometer errores. Por eso, a todos los artículos se les otorga un grado de confianza y la decisión final se deja al usuario. Los artículos con confianza buena y muy buena son generalmente seguros de eliminar, pero todavía se deben verificar dos veces.</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Grado de confianza</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>Tras desinstalar, han quedado éstos restos. Algunos desinstaladores no puedan eliminar partes de la aplicación, lo que reduce la  capacidad de la unidad. La mayoría de estos elementos son probablemente ajustes de aplicación, que ocupan poco espacio y son inofensivos.</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>Nombre del desinstalador</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Confianza</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>Ruta del elemento</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Ocultar elementos con mala confianza</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exportar...</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Eliminar seleccionado</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Cancelar</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exportar lista de restos</value>\r\n    <comment>leftover=rimanenti</comment>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Archivos de texto|*.text</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Fichiers texte|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exporter la liste des vestiges</value>\r\n    <comment>leftover=rimanenti</comment>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Annuler</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Supprimer la sélection</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exporter...</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Cacher les éléments avec une confiance peu élevée</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>Chemin de l'élément</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Confiance</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>Nom du désinstalleur</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>Les éléments suivants semblent avoir été laissés en arrière par leurs désinstalleurs. Quelques désinstalleurs peuvent échouer à supprimer des parties de l'application, avec pour résultat un coût en capacité du lecteur. Ceci étant dit, la plupart de ces éléments sont susceptibles d'être des réglages de l'application, qui prennent peu d'espace et sont sans danger.</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Niveau de confiance</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>La détection de ces vestiges est un processus complexe qui peut commettre des erreurs. Pour cette raison, il est donné un taux de confiance à tous les éléments et la décision finale revient à l'utilisateur. Les éléments avec une bonne ou très bonne confiance sont habituellement bons à supprimer, mais vous devriez tout de même les vérifier deux fois.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Liste des fichiers et/ou clés de registre laissés après désinstallation</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Suppression des vestiges</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ouvrir</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copier dans le presse-papiers</value>\r\n  </data>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Détails</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Részletek</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Más&amp;olás a Vágólapra</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Megnyi&amp;tás</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Maradvány eltávolítás</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítás után visszamaradt fájlok és beállításkulcsok listája</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>A maradványoknak a beazonosítása egy összetett folyamat, amely néha hibás lehet. Emiatt az összes elem biztonságosságának besorolásában a végső döntést a felhasználónak kell meghoznia. A jó és a nagyon jó besorolású elemek általában biztonsággal eltávolíthatók, de mindig ellenőrizze azokat.</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Biztonsági besorolás</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>Úgy tűnik, hogy a következő elemeket hátrahagyták az eltávolítóik. Néhány eltávolító nem távolítja el az összes programelemet, és ezek feleslegesen foglalják a területet. A legtöbb itt látható elem általában programbeállításokat tartalmaz, amelyek kis helyen is elférnek és veszélytelenek.</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolító neve</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Biztonságosság</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>Útvonal</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Nem biztonságos elemek elrejtése</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exportálás...</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Kijelölt törlése</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Mégse</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Maradványlista exportálása</value>\r\n    <comment>leftover=rimanenti</comment>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Szövegfájlok|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Dettagli</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copia nella Appunti</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Apri</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Rimozione oggetti residui</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Elenco di file e/o chiavi di registro ignorati durante la disinstallazione</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>Il rilevamento degli elementi residui è un processo elaborato che può produrre errori. Per questo motivo a tutti gli oggetti è assegnato un livello di affidabilità e la decisione finale è lasciata all'utente. Gli elementi con un livello di affidabilità alto e molto alto sono normalmente sicuri da rimuovere, ma sarebbe opportuno controllare ancora.</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Livello affidabilità</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>I seguenti elementi sembrano essere stati ignorati dai loro disinstallatori. Alcuni disinstallatori potrebbero aver fallito nella rimozione di parte dell'applicazione, sprecando spazio su disco. In ogni caso buona parte di questi elementi sono spesso le impostazioni dell'applicazione, che occupano poco spazio e non danno problemi.</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>Nome disinstallatore</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Affidabilità</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>Percorso elemento</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Nascondi elementi con pessima affidabilità</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Esporta...</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Rimuovi selezionati</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Annulla</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Esporta elenco oggetti residui</value>\r\n    <comment>leftover=rimanenti</comment>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>File testo|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;詳細</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;クリップボードにコピー</value>\n  </data>\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;開く</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>残存物の削除</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>アンインストール後に残ったファイルおよび/またはレジストリキーのリスト</value>\n  </data>\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\n    <value>これらの残存物の検出は複雑なプロセスであり、誤りが生じることがあります。そのため、すべての項目に信頼度評価が付けられ、最終的な判断はユーザーに委ねられます。信頼度が良好または非常に良好な項目は通常、安全に削除できますが、再度確認することをお勧めします。</value>\n  </data>\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\n    <value>信頼度評価</value>\n  </data>\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\n    <value>以下の項目は、アンインストーラーによって残された可能性があります。一部のアンインストーラーはアプリケーションの一部を削除できないことがあり、これによりドライブの容量が無駄になる可能性があります。ただし、これらの項目のほとんどはアプリケーションの設定であり、容量をほとんど消費せず、無害です。</value>\n  </data>\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\n    <value>アンインストーラー名</value>\n  </data>\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\n    <value>信頼性</value>\n  </data>\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\n    <value>項目パス</value>\n  </data>\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\n    <value>信頼度が低い項目を非表示にする</value>\n  </data>\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\n    <value>エクスポート...</value>\n  </data>\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\n    <value>選択した項目を削除</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>残存物リストのエクスポート</value>\n    <comment>leftover=rimanenti</comment>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>テキストファイル|*.txt</value>\n    <comment>keep the |*.txt</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Tekst bestanden|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Lijst met restanten exporteren</value>\r\n    <comment>leftover=rimanenti</comment>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Annuleren</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Geselecteerde verwijderen</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exporteren...</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Verbergen van onderdelen die u niet vertrouwd</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>Onderdeel pad</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Vertrouwen</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>De-installer naam</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>De volgende onderdelen zijn waarschijnlijk door uw de-installer achter gebleven. Sommige de-installers kunnen falen in het verwijderen van programma onderdelen ten koste van opslag capaciteit. Echter de meeste van deze onderdelen zijn waarschijnlijk programma instellingen, die ongevaarlijk zijn en slechts weinig schijfruimte innemen.</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Vertrouwens waardering</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>Het detecteren van deze restanten is een complex proces dat tot vergissingen kan leiden. Daarom is er voor elk onderdeel een vertrouwens waardering, waarbij de gebruiker de eindbeslissing heeft. Onderdelen met een (zeer) hoge graad van vertrouwen kunnen zonder gevaar worden verwijderd. Desalniettemin moet u alles alvorens te verwijderen zorgvuldig controleren. Waarderings details kunt u na een dubbelklik op het onderdeel weergeven.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lijst met bestanden en/of registersleutels, die na de-installatie zijn achtergebleven.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Achtergebleven bestanden verwijderen</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Openen</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kopieër naar klembord</value>\r\n  </data>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Details</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Szczegóły</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kopiuj do schowka</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Otwórz</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Usuwanie pozostałości\t</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lista możliwych pozostałości</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>Wykrycie tych resztek jest złożonym procesem, który może popełnić błędy. Wobec tego wszystkie elementy są poddane ocenie zaufania, a ostateczna decyzja należy do użytkownika. Elementy o dobrej i bardzo dobrej ocenie zazwyczaj można bezpiecznie usunąć, jednak mimo to powinny zostać sprawdzone. Możesz kliknąć dwukrotnie na dowolny element, aby zobaczyć szczegóły jego oceny.</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Ocena zaufania</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>Następujące elementy wydają się być pozostawione przez ich dezinstalatory. Niektóre dezinstalatory mogą nie usunąć części aplikacji, w wyniku czego miejsce na dysku jest tracone. Większość z tych elementów to ustawienia aplikacji, które zajmują mało miejsca i nie są szkodliwe.</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>Nazwa aplikacji</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Pewność</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>Ścieżka przedmiotu</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Ukryj pozycje ze słabą pewnością</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Eksportuj...</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Usuń zaznaczone</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Anuluj</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Eksportuj listę pozostałości</value>\r\n    <comment>leftover=rimanenti</comment>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Pliki tekstowe|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Detalhes</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copiar para a Área de Transferência</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Abrir</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Remoção de sobras</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lista de arquivos e/ou de chaves de registro deixados após a desinstalação.</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>A detecção desses restos é um processo complexo que pode cometer erros. Por isso, são dados a todos os itens uma avaliação de confiança e a decisão final é deixada ao usuário. Itens com boa e muito boa confiança geralmente são seguros para remover, mas você ainda deve verificar novamente.</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Nível de confiança</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>Os seguintes itens parecem ter sido deixados para trás por seus desinstaladores. Alguns desinstaladores podem não remover partes do aplicativo, resultando em ocupação de espaço na unidade. Dito isto, a maioria desses itens provavelmente serão configurações de aplicativos, que ocupam pouco espaço e são inofensivas.</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>Nome do desinstalador</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Confiança</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>Caminho do item</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Ocultar itens com má confiança</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exportar...</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Excluir selecionado</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Cancelar</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exportar lista de sobras</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Arquivos texto|*.txt</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Pormenores</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copiar para a Área de Transferência</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Abrir</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Remoção de vestígios residuais</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lista de ficheiros e/ou de chaves de registo deixados após a desinstalação.</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>A detecção destes resíduos é um processo complexo que pode provocar erros. Por esse motivo, são dados a todos os itens um nível de confiança e a decisão final fica a cargo do utilizador. Itens com avaliação de confiança bom ou muito bom são, geralmente, seguros para remover mas, ainda assim, verifique-os por duas vezes antes de se decidir.\r\n</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Nível de confiança</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>Os itens seguintes aparentam ter ficado para trás pelos seus desinstaladores. Alguns desinstaladores falham na remoção de partes da aplicação, resultando numa ocupação da capacidade da unidade. Dito isto, a maioria destes itens são susceptíveis de serem configurações do aplicativo que ocupam pouco espaço e são inofensivos.</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>Nome do desinstalador</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Confiança</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>Percurso do item</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Ocultar itens duvidosos</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exportar...</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Suprimir a selecção</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Cancelar</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exportar a lista de vestígios residuuais</value>\r\n    <comment>leftover=rimanenti</comment>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Ficheiros de texto|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <metadata name=\"exportDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"saveFileDialogBackupRegistry.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>131, 17</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>330, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"listViewContextMenuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>454, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <metadata name=\"exportDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Text files|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Export leftover list</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"buttonCancel.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Top, Right</value>\r\n  </data>\r\n  <data name=\"buttonCancel.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"buttonCancel.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>759, 7</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"buttonCancel.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 27</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"buttonCancel.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Cancel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCancel.Name\" xml:space=\"preserve\">\r\n    <value>buttonCancel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCancel.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCancel.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCancel.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Top, Right</value>\r\n  </data>\r\n  <data name=\"buttonAccept.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>615, 7</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>138, 27</value>\r\n  </data>\r\n  <data name=\"buttonAccept.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Delete selected</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonAccept.Name\" xml:space=\"preserve\">\r\n    <value>buttonAccept</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonAccept.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonAccept.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonAccept.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonExport.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"buttonExport.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 7</value>\r\n  </data>\r\n  <data name=\"buttonExport.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonExport.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 27</value>\r\n  </data>\r\n  <data name=\"buttonExport.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Export...</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExport.Name\" xml:space=\"preserve\">\r\n    <value>buttonExport</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExport.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExport.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExport.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"comboBoxChecker.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>98, 9</value>\r\n  </data>\r\n  <data name=\"comboBoxChecker.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"comboBoxChecker.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>160, 23</value>\r\n  </data>\r\n  <data name=\"comboBoxChecker.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxChecker.Name\" xml:space=\"preserve\">\r\n    <value>comboBoxChecker</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxChecker.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxChecker.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxChecker.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>266, 12</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>194, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Hide items with bad confidence</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxHideLowConfidence.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxHideLowConfidence</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxHideLowConfidence.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxHideLowConfidence.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxHideLowConfidence.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 555</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>850, 39</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>Item path</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>412</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Confidence</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>103</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>Uninstaller Name</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>163</value>\r\n  </data>\r\n  <data name=\"objectListViewMain.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"objectListViewMain.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 109</value>\r\n  </data>\r\n  <data name=\"objectListViewMain.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"objectListViewMain.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>832, 429</value>\r\n  </data>\r\n  <data name=\"objectListViewMain.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListViewMain.Name\" xml:space=\"preserve\">\r\n    <value>objectListViewMain</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListViewMain.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.ObjectListView, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListViewMain.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListViewMain.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"headerIntro.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"headerIntro.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"headerIntro.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 0</value>\r\n  </data>\r\n  <data name=\"headerIntro.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"headerIntro.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 7</value>\r\n  </data>\r\n  <data name=\"headerIntro.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>791, 37</value>\r\n  </data>\r\n  <data name=\"headerIntro.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>Following items seem to have been left behind by their uninstallers. Some uninstallers might fail to remove parts of the application, resulting in drive capacity cost. That being said, most of these items are likely to be application settings, which take up little space and are harmless.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;headerIntro.Name\" xml:space=\"preserve\">\r\n    <value>headerIntro</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;headerIntro.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;headerIntro.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;headerIntro.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial, 8.25pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 37</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>105, 14</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Confidence rating</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;headerConfTitle.Name\" xml:space=\"preserve\">\r\n    <value>headerConfTitle</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;headerConfTitle.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;headerConfTitle.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;headerConfTitle.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 51</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>2, 0, 0, 7</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>813, 37</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>Detection of these leftovers is a complex process that can make mistakes. Because of this, all items are given a confidence rating and the final decision is left to the user. Items with good and very good confidence are usually safe to remove, but you still should double check them.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;headerConfInfo.Name\" xml:space=\"preserve\">\r\n    <value>headerConfInfo</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;headerConfInfo.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;headerConfInfo.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;headerConfInfo.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 21</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>832, 88</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 8</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>9, 5, 9, 9</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>850, 547</value>\r\n  </data>\r\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>List of files and/or registry keys left after uninstallation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>330, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>866, 602</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>581, 340</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>8, 8, 8, 8</value>\r\n  </data>\r\n  <data name=\"$this.StartPosition\" type=\"System.Windows.Forms.FormStartPosition, System.Windows.Forms\">\r\n    <value>CenterParent</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Leftover removal</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exportDialog.Name\" xml:space=\"preserve\">\r\n    <value>exportDialog</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exportDialog.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnPath.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnPath</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnPath.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnSafety.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnSafety</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnSafety.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnUninstallerName.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnUninstallerName</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnUninstallerName.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;usageTracker1.Name\" xml:space=\"preserve\">\r\n    <value>usageTracker1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;usageTracker1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Functions.Tracking.UsageTracker, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>openToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator1.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;copyToClipboardToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>copyToClipboardToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;copyToClipboardToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;detailsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>detailsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;detailsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>JunkRemoveWindow</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <metadata name=\"listViewContextMenuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>454, 17</value>\r\n  </metadata>\r\n  <data name=\"openToolStripMenuItem.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Tahoma, 8.25pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>169, 22</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Open</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>166, 6</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>169, 22</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copy to clipboard</value>\r\n  </data>\r\n  <data name=\"detailsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>169, 22</value>\r\n  </data>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Details</value>\r\n  </data>\r\n  <data name=\"listViewContextMenuStrip.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>170, 76</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listViewContextMenuStrip.Name\" xml:space=\"preserve\">\r\n    <value>listViewContextMenuStrip</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listViewContextMenuStrip.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Детали</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Копировать в &amp;буфер</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Открыть</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Удаление остатков</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Список файлов и/или ключей реестра, оставшихся после удаления</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>Обнаружение остатков — сложный процесс, в котором возможны ошибки. Из-за этого все элементы рейтингуются и окончательное решение остаётся за пользователем. Элементы с хорошим и очень хорошим рейтингом доверия обычно безопасны для удаления, но Вам всё же стоит проверить их.</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Рейтинг доверия</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>Следующие элементы, как представляется, остались после удаления программ(ы). Некоторые деинсталляторы могут не удалять части своего приложения. Чаще всего эти элементы являются параметрами приложений, которые занимают мало места и безвредны.</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>Имя деинсталлятора</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Уверенные</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>Путь элемента</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Скрыть элементы с плохой уверенностью</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Экспорт...</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Удалить отмеченное</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Отмена</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Экспорт списка оставшегося</value>\r\n    <comment>leftover=rimanenti</comment>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Текстовый|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <metadata name=\"exportDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"saveFileDialogBackupRegistry.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>131, 17</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>330, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"listViewContextMenuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>454, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Po&amp;drobnosti</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kopiraj v odložišče</value>\r\n  </data>\r\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odpri</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Odstranjevanje ostankov</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Seznam datotek in/ali, preostalih registrskih ključev, po odstranjevanju</value>\r\n  </data>\r\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\r\n    <value>Odkrivanje teh ostankov je kompleksen proces, ki lahko povzroči napake. Zaradi tega so vsi vnosi podani glede na oceno zaupanja in končna odločitev je prepuščena vam kot uporabniku. Vnose z dobrim in zelo dobrim zaupanjem je ponavadi varno odstraniti, vendar jih še vedno treba dva krat preveriti.</value>\r\n  </data>\r\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\r\n    <value>Ocena zaupanja</value>\r\n  </data>\r\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\r\n    <value>Naslednji vnosi so videti kot, da so ostali z njihovimi odstranjevalci. Nekateri odstranjevalci morda ne odstranijo dele aplikacij in so rezultat cene kapacitete pogona. Kot je rečeno, večina teh vnosov so verjetno nastavitve aplikacij, ki zavzamejo malo prostora in so neškodljive.</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\r\n    <value>Ime odstranjevalca</value>\r\n  </data>\r\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\r\n    <value>Zaupanje</value>\r\n  </data>\r\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\r\n    <value>Pot vnosa</value>\r\n  </data>\r\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\r\n    <value>Skrij vnose slabega zaupanja</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Izvozi...</value>\r\n  </data>\r\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\r\n    <value>Izbriši izbrano</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Prekliči</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Izvoz seznama ostankov</value>\r\n    <comment>leftover=rimanenti</comment>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Besedilne datoteke|*.txt</value>\r\n    <comment>keep the |*.txt</comment>\r\n  </data>\r\n  <metadata name=\"exportDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"saveFileDialogBackupRegistry.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>131, 17</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>330, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"listViewContextMenuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>454, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Detaljer</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kopiera till urklipp</value>\n  </data>\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Öppna</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Borttagning av rester</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Lista över filer och/eller registerposter kvar efter avinstallation</value>\n  </data>\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\n    <value>Att upptäcka rester är en komplex process som kan göra misstag. Därför tilldelas alla objekt en tillförlitlighetsgrad och det slutliga beslutet lämnas till användaren. Objekt med bra och mycket bra tillförlitlighet är vanligtvis säkra att ta bort, men du bör ändå dubbelkolla dem.</value>\n  </data>\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\n    <value>Tillförlitlighetsgrad</value>\n  </data>\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\n    <value>Följande objekt verkar ha lämnats kvar efter avinstallation. Vissa avinstallationer kan lämna överblivna filer, vilket tar plats och minskar ledigt utrymme. Troligtvis är de flesta av dessa objekt appinställningar, som tar upp lite utrymme och är harmlösa.</value>\n  </data>\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\n    <value>Avinstallationsprogramnamn</value>\n  </data>\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\n    <value>Tillförlitlighet</value>\n  </data>\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\n    <value>Sökväg</value>\n  </data>\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\n    <value>Dölj objekt med dålig tillförlitlighet</value>\n  </data>\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\n    <value>Exportera...</value>\n  </data>\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\n    <value>Ta bort valda</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Avbryt</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>Exportera lista av rester</value>\n    <comment>leftover=rimanenti</comment>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>Text filer|*.txt</value>\n    <comment>keep the |*.txt</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Detaylar</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Panoya kopyala</value>\n  </data>\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Aç</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Arta kalan kaldırma</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Kaldırma işleminden sonra kalan dosya ve / veya kayıt defteri listesi</value>\n  </data>\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\n    <value>Bu arta kaların tespiti, hata yapabilen karmaşık bir süreçtir. Bu nedenle, tüm öğelere bir güven derecesi verilir ve nihai karar kullanıcıya bırakılır. İyi ve çok iyi güveni olan öğelerin genellikle kaldırılması güvenlidir, ancak yine de bunları iki kez kontrol etmelisiniz.</value>\n  </data>\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\n    <value>Güven derecesi</value>\n  </data>\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\n    <value>Aşağıdaki öğeler kaldırıcıları tarafından geride bırakılar artıklar gibi görünüyor. Bazı kaldırıcılar, uygulama bölümlerini kaldırarak sürücü kapasitesi maliyetine neden olabilir. Bununla birlikte, bu öğelerin çoğunun uygulama alanı olması muhtemeldir, bu da az yer kaplar ve zararsızdır.</value>\n  </data>\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\n    <value>Kaldırıcı Adı</value>\n  </data>\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\n    <value>Güvenli</value>\n  </data>\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\n    <value>Öğe yolu</value>\n  </data>\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\n    <value>Güvenilmeyen öğeleri gizle</value>\n  </data>\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\n    <value>Dışa aktar</value>\n  </data>\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\n    <value>Seçileni sil</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Vazgeç</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>Arta kalan listesini dışa aktar</value>\n    <comment>leftover=rimanenti</comment>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>Text dosyaları|*.txt</value>\n    <comment>keep the |*.txt</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Chi tiết</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Sao chép vào bảng nhớ tạm</value>\n  </data>\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Mở</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Dọn dẹp những thứ còn sót lại</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Danh sách các tệp tin và/hoặc mã registry còn lại sau khi gỡ cài đặt</value>\n  </data>\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\n    <value>Việc phát hiện những mục dư thừa này là một quá trình phức tạp và có thể mắc sai sót. Do đó, tất cả các mục đều được đánh giá mức độ tin cậy và quyết định cuối cùng thuộc về bạn. Những mục có mức độ tin cậy tốt và rất tốt thường an toàn để xóa, nhưng bạn vẫn nên kiểm tra lại chúng.</value>\n  </data>\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\n    <value>Mức độ tin cậy</value>\n  </data>\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\n    <value>Các mục sau đây dường như bị trình gỡ cài đặt của chúng bỏ lại. Một số trình gỡ cài đặt có thể không xóa được một số mục, và có thể dẫn đến chiếm dung lượng ổ đĩa. Tuy nhiên, hầu hết các mục này có thể là cài đặt của ứng dụng, thường chiếm rất ít dung lượng và vô hại.</value>\n  </data>\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\n    <value>Tên trình gỡ cài đặt</value>\n  </data>\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\n    <value>Độ tin cậy</value>\n  </data>\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\n    <value>Đường dẫn</value>\n  </data>\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\n    <value>Ẩn các mục có độ tin cậy thấp</value>\n  </data>\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\n    <value>Xuất...</value>\n  </data>\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\n    <value>Xóa các mục đã chọn</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Huỷ</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>Xuất danh sách các mục còn sót lại</value>\n    <comment>leftover=rimanenti</comment>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>Tệp văn bản|*.txt</value>\n    <comment>keep the |*.txt</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>详细信息</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>复制到剪贴板</value>\n  </data>\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>打开</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>残余卸载</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>卸载后留下的文件及注册表项列表</value>\n  </data>\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\n    <value>检测这些残余是一个复杂的过程，可能会出错。因此，所有项目都会被给予一个置信度等级，最终决定权留给用户。有好和非常好置信度的项目通常可以安全删除，但你仍应仔细检查。</value>\n  </data>\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\n    <value>置信度等级</value>\n  </data>\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\n    <value>以下项目似乎是由其卸载程序留下的。某些卸载程序可能无法删除应用程序某些部分，从而导致驱动器容量占用增加。也就是说，这些项目大多是应用程序设置，占用空间小，无害。</value>\n  </data>\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\n    <value>卸载程序名称</value>\n  </data>\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\n    <value>置信度</value>\n  </data>\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\n    <value>项目路径</value>\n  </data>\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\n    <value>隐藏低置信度项目</value>\n  </data>\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\n    <value>导出...</value>\n  </data>\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\n    <value>删除选中项</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>导出残余列表</value>\n    <comment>leftover=rimanenti</comment>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>文本文件|*.txt</value>\n    <comment>keep the |*.txt</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/JunkRemoveWindow.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"detailsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>詳細資料</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>複製到剪貼簿</value>\n  </data>\n  <data name=\"openToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>開啟</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>剩餘項目移除</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>解除安裝後剩餘的文件及登錄表</value>\n  </data>\n  <data name=\"headerConfInfo.Text\" xml:space=\"preserve\">\n    <value>檢測這些剩餘項目是一個複雜的過程，可能會有錯誤。因此所有項目都會被給予一個信任等級，最終選擇權留給使用者。有非常好的信任度項通常可以安全移除，但你仍應該仔細檢查。</value>\n  </data>\n  <data name=\"headerConfTitle.Text\" xml:space=\"preserve\">\n    <value>信任度等級</value>\n  </data>\n  <data name=\"headerIntro.Text\" xml:space=\"preserve\">\n    <value>下列項目似乎是由某移除程式留下的。某些移除程式可能無法刪除應用程式某些部分，從而導致硬碟空間。也就是說，這些項目大多都是應用程式設定，占用空減小且無害。</value>\n  </data>\n  <data name=\"olvColumnUninstallerName.Text\" xml:space=\"preserve\">\n    <value>移除程式名稱</value>\n  </data>\n  <data name=\"olvColumnSafety.Text\" xml:space=\"preserve\">\n    <value>信任度</value>\n  </data>\n  <data name=\"olvColumnPath.Text\" xml:space=\"preserve\">\n    <value>項目路徑</value>\n  </data>\n  <data name=\"checkBoxHideLowConfidence.Text\" xml:space=\"preserve\">\n    <value>隱藏低信任度項目</value>\n  </data>\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\n    <value>匯出...</value>\n  </data>\n  <data name=\"buttonAccept.Text\" xml:space=\"preserve\">\n    <value>刪除選中項目</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>匯出剩餘項目</value>\n    <comment>leftover=rimanenti</comment>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>文字文件|*.txt</value>\n    <comment>keep the |*.txt</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.Designer.cs",
    "content": "﻿using System.ComponentModel;\r\nusing System.Windows.Forms;\r\nusing BrightIdeasSoftware;\r\nusing BulkCrapUninstaller.Controls;\r\nusing BulkCrapUninstaller.Functions.Tracking;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class MainWindow\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private IContainer components = null;\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            components = new Container();\r\n            ComponentResourceManager resources = new ComponentResourceManager(typeof(MainWindow));\r\n            splitContainer1 = new SplitContainer();\r\n            advancedFilters1 = new AdvancedFilters();\r\n            splitContainerListAndMap = new SplitContainer();\r\n            listViewPanel = new Panel();\r\n            uninstallerObjectListView = new ObjectListView();\r\n            olvColumnDisplayName = new OLVColumn();\r\n            olvColumnPublisher = new OLVColumn();\r\n            olvColumnRating = new OLVColumn();\r\n            olvColumnDisplayVersion = new OLVColumn();\r\n            olvColumnInstallDate = new OLVColumn();\r\n            olvColumnSize = new OLVColumn();\r\n            olvColumnStartup = new OLVColumn();\r\n            olvColumnIs64 = new OLVColumn();\r\n            olvColumnUninstallString = new OLVColumn();\r\n            olvColumnAbout = new OLVColumn();\r\n            olvColumnInstallSource = new OLVColumn();\r\n            olvColumnInstallLocation = new OLVColumn();\r\n            olvColumnUninstallerKind = new OLVColumn();\r\n            olvColumnSystemComponent = new OLVColumn();\r\n            olvColumnProtected = new OLVColumn();\r\n            olvColumnRegistryKeyName = new OLVColumn();\r\n            olvColumnGuid = new OLVColumn();\r\n            olvColumnQuietUninstallString = new OLVColumn();\r\n            treeMap1 = new SimpleTreeMap.TreeMap();\r\n            toolStrip = new ToolStrip();\r\n            toolStripButton1 = new ToolStripButton();\r\n            toolStripSeparator22 = new ToolStripSeparator();\r\n            toolStripButtonSelAll = new ToolStripButton();\r\n            toolStripButtonSelNone = new ToolStripButton();\r\n            toolStripButtonSelInv = new ToolStripButton();\r\n            toolStripSeparator23 = new ToolStripSeparator();\r\n            toolStripButtonTarget = new ToolStripButton();\r\n            toolStripSeparator21 = new ToolStripSeparator();\r\n            toolStripButtonUninstall = new ToolStripButton();\r\n            toolStripButton2 = new ToolStripButton();\r\n            toolStripButtonModify = new ToolStripButton();\r\n            toolStripSeparator4 = new ToolStripSeparator();\r\n            toolStripButtonProperties = new ToolStripButton();\r\n            toolStripSeparator24 = new ToolStripSeparator();\r\n            toolStripButton7 = new ToolStripButton();\r\n            toolStripButton8 = new ToolStripButton();\r\n            statusStrip1 = new StatusStrip();\r\n            toolStripLabelStatus = new ToolStripStatusLabel();\r\n            toolStripLabelSize = new ToolStripStatusLabel();\r\n            toolStripLabelTotal = new ToolStripStatusLabel();\r\n            settingsSidebarPanel = new Panel();\r\n            propertiesSidebar = new PropertiesSidebar();\r\n            label1 = new Label();\r\n            groupBox1 = new GroupBox();\r\n            buttonAdvFiltering = new Button();\r\n            filterEditor1 = new UninstallTools.Controls.FilterEditor();\r\n            uninstallListContextMenuStrip = new ContextMenuStrip(components);\r\n            uninstallContextMenuStripItem = new ToolStripMenuItem();\r\n            quietUninstallContextMenuStripItem = new ToolStripMenuItem();\r\n            manualUninstallToolStripMenuItem1 = new ToolStripMenuItem();\r\n            uninstallUsingMsiExecContextMenuStripItem = new ToolStripMenuItem();\r\n            msiInstallContextMenuStripItem = new ToolStripMenuItem();\r\n            msiUninstallContextMenuStripItem = new ToolStripMenuItem();\r\n            msiQuietUninstallContextMenuStripItem = new ToolStripMenuItem();\r\n            toolStripSeparator3 = new ToolStripSeparator();\r\n            excludeToolStripMenuItem = new ToolStripMenuItem();\r\n            includeToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparatorFiltering = new ToolStripSeparator();\r\n            runToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator8 = new ToolStripSeparator();\r\n            copyToClipboardContextMenuStripItem = new ToolStripMenuItem();\r\n            toolStripMenuItem9 = new ToolStripMenuItem();\r\n            toolStripSeparator9 = new ToolStripSeparator();\r\n            fullInformationCopyContextMenuStripItem = new ToolStripMenuItem();\r\n            programNameCopyContextMenuStripItem = new ToolStripMenuItem();\r\n            gUIDProductCodeCopyContextMenuStripItem = new ToolStripMenuItem();\r\n            fullRegistryPathCopyContextMenuStripItem = new ToolStripMenuItem();\r\n            uninstallStringCopyContextMenuStripItem = new ToolStripMenuItem();\r\n            deleteRegistryEntryContextMenuStripItem = new ToolStripMenuItem();\r\n            renameContextMenuStripItem = new ToolStripMenuItem();\r\n            toolStripSeparator6 = new ToolStripSeparator();\r\n            openInExplorerContextMenuStripItem = new ToolStripMenuItem();\r\n            installLocationOpenInExplorerContextMenuStripItem = new ToolStripMenuItem();\r\n            uninstallerLocationOpenInExplorerContextMenuStripItem = new ToolStripMenuItem();\r\n            sourceLocationOpenInExplorerContextMenuStripItem = new ToolStripMenuItem();\r\n            openWebPageContextMenuStripItem = new ToolStripMenuItem();\r\n            lookUpOnlineToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripMenuItem15 = new ToolStripMenuItem();\r\n            toolStripMenuItem16 = new ToolStripMenuItem();\r\n            slantcoToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator26 = new ToolStripSeparator();\r\n            fossHubcomToolStripMenuItem = new ToolStripMenuItem();\r\n            sourceForgecomToolStripMenuItem = new ToolStripMenuItem();\r\n            gitHubcomToolStripMenuItem = new ToolStripMenuItem();\r\n            fileHippocomToolStripMenuItem = new ToolStripMenuItem();\r\n            rateToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator7 = new ToolStripSeparator();\r\n            propertiesContextMenuStripItem = new ToolStripMenuItem();\r\n            exportDialog = new SaveFileDialog();\r\n            menuStrip = new MenuStrip();\r\n            fileToolStripMenuItem = new ToolStripMenuItem();\r\n            reloadUninstallersToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator1 = new ToolStripSeparator();\r\n            loadUninstallerListToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator30 = new ToolStripSeparator();\r\n            exportSelectedToolStripMenuItem = new ToolStripMenuItem();\r\n            exportToABatchUninstallScriptToolStripMenuItem = new ToolStripMenuItem();\r\n            exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator10 = new ToolStripSeparator();\r\n            exitToolStripMenuItem = new ToolStripMenuItem();\r\n            viewToolStripMenuItem = new ToolStripMenuItem();\r\n            showColorLegendToolStripMenuItem = new ToolStripMenuItem();\r\n            displayToolbarToolStripMenuItem = new ToolStripMenuItem();\r\n            showTreemapToolStripMenuItem = new ToolStripMenuItem();\r\n            displaySettingsToolStripMenuItem = new ToolStripMenuItem();\r\n            displayStatusbarToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator12 = new ToolStripSeparator();\r\n            useSystemThemeToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator33 = new ToolStripSeparator();\r\n            autosizeAllColumnsToolStripMenuItem = new ToolStripMenuItem();\r\n            filteringToolStripMenuItem = new ToolStripMenuItem();\r\n            advancedApplicationsToolStripMenuItem = new ToolStripMenuItem();\r\n            basicApplicationsToolStripMenuItem = new ToolStripMenuItem();\r\n            systemComponentsToolStripMenuItem = new ToolStripMenuItem();\r\n            everythingToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator20 = new ToolStripSeparator();\r\n            automaticallyStartedToolStripMenuItem = new ToolStripMenuItem();\r\n            onlyWebBrowsersToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator31 = new ToolStripSeparator();\r\n            viewTweaksToolStripMenuItem = new ToolStripMenuItem();\r\n            viewUnregisteredToolStripMenuItem = new ToolStripMenuItem();\r\n            viewUpdatesToolStripMenuItem = new ToolStripMenuItem();\r\n            viewWindowsFeaturesToolStripMenuItem = new ToolStripMenuItem();\r\n            viewWindowsStoreAppsToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator28 = new ToolStripSeparator();\r\n            searchToolStripMenuItem = new ToolStripMenuItem();\r\n            basicOperationsToolStripMenuItem = new ToolStripMenuItem();\r\n            uninstallToolStripMenuItem = new ToolStripMenuItem();\r\n            quietUninstallToolStripMenuItem = new ToolStripMenuItem();\r\n            modifyToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator2 = new ToolStripSeparator();\r\n            toolStripMenuItem8 = new ToolStripMenuItem();\r\n            advancedClipCopyToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator11 = new ToolStripSeparator();\r\n            copyFullInformationToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripMenuItem10 = new ToolStripMenuItem();\r\n            toolStripMenuItem11 = new ToolStripMenuItem();\r\n            toolStripMenuItem12 = new ToolStripMenuItem();\r\n            toolStripMenuItem13 = new ToolStripMenuItem();\r\n            toolStripMenuItem1 = new ToolStripMenuItem();\r\n            toolStripMenuItem5 = new ToolStripMenuItem();\r\n            toolStripMenuItem6 = new ToolStripMenuItem();\r\n            toolStripMenuItem7 = new ToolStripMenuItem();\r\n            toolStripMenuItem14 = new ToolStripMenuItem();\r\n            onlineSearchToolStripMenuItem = new ToolStripMenuItem();\r\n            googleToolStripMenuItem = new ToolStripMenuItem();\r\n            alternativeToToolStripMenuItem = new ToolStripMenuItem();\r\n            slantcoToolStripMenuItem1 = new ToolStripMenuItem();\r\n            toolStripSeparator27 = new ToolStripSeparator();\r\n            toolStripMenuItem17 = new ToolStripMenuItem();\r\n            toolStripMenuItem18 = new ToolStripMenuItem();\r\n            toolStripMenuItem20 = new ToolStripMenuItem();\r\n            toolStripMenuItem19 = new ToolStripMenuItem();\r\n            rateToolStripMenuItem1 = new ToolStripMenuItem();\r\n            toolStripSeparator15 = new ToolStripSeparator();\r\n            propertiesToolStripMenuItem = new ToolStripMenuItem();\r\n            advancedOperationsToolStripMenuItem = new ToolStripMenuItem();\r\n            manualUninstallToolStripMenuItem = new ToolStripMenuItem();\r\n            msiUninstalltoolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripMenuItem2 = new ToolStripMenuItem();\r\n            toolStripMenuItem3 = new ToolStripMenuItem();\r\n            toolStripMenuItem4 = new ToolStripMenuItem();\r\n            toolStripSeparator14 = new ToolStripSeparator();\r\n            renameToolStripMenuItem = new ToolStripMenuItem();\r\n            disableAutostartToolStripMenuItem = new ToolStripMenuItem();\r\n            deleteToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator5 = new ToolStripSeparator();\r\n            createBackupToolStripMenuItem = new ToolStripMenuItem();\r\n            openKeyInRegeditToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator32 = new ToolStripSeparator();\r\n            takeOwnershipToolStripMenuItem = new ToolStripMenuItem();\r\n            toolsToolStripMenuItem = new ToolStripMenuItem();\r\n            openStartupManagerToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator25 = new ToolStripSeparator();\r\n            cleanUpProgramFilesToolStripMenuItem = new ToolStripMenuItem();\r\n            targetMenuItem = new ToolStripMenuItem();\r\n            uninstallFromDirectoryToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator13 = new ToolStripSeparator();\r\n            troubleshootUninstallProblemsToolStripMenuItem = new ToolStripMenuItem();\r\n            startDiskCleanupToolStripMenuItem = new ToolStripMenuItem();\r\n            tryToInstallNETV35ToolStripMenuItem = new ToolStripMenuItem();\r\n            createRestorePointToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator29 = new ToolStripSeparator();\r\n            openProgramsAndFeaturesToolStripMenuItem = new ToolStripMenuItem();\r\n            openSystemRestoreToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator19 = new ToolStripSeparator();\r\n            settingsToolStripMenuItem = new ToolStripMenuItem();\r\n            helpToolStripMenuItem = new ToolStripMenuItem();\r\n            openHelpToolStripMenuItem = new ToolStripMenuItem();\r\n            startSetupWizardToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator16 = new ToolStripSeparator();\r\n            checkForUpdatesToolStripMenuItem = new ToolStripMenuItem();\r\n            submitFeedbackToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator18 = new ToolStripSeparator();\r\n            resetSettingsToolStripMenuItem = new ToolStripMenuItem();\r\n            uninstallBCUninstallToolstripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator17 = new ToolStripSeparator();\r\n            aboutToolStripMenuItem = new ToolStripMenuItem();\r\n            debugToolStripMenuItem = new ToolStripMenuItem();\r\n            createBackupFileDialog = new SaveFileDialog();\r\n            globalHotkeys1 = new Klocman.Subsystems.GlobalHotkeys();\r\n            splashScreen1 = new Klocman.Forms.SplashScreen();\r\n            usageTracker = new UsageTracker();\r\n            ((ISupportInitialize)splitContainer1).BeginInit();\r\n            splitContainer1.Panel1.SuspendLayout();\r\n            splitContainer1.Panel2.SuspendLayout();\r\n            splitContainer1.SuspendLayout();\r\n            ((ISupportInitialize)splitContainerListAndMap).BeginInit();\r\n            splitContainerListAndMap.Panel1.SuspendLayout();\r\n            splitContainerListAndMap.Panel2.SuspendLayout();\r\n            splitContainerListAndMap.SuspendLayout();\r\n            listViewPanel.SuspendLayout();\r\n            ((ISupportInitialize)uninstallerObjectListView).BeginInit();\r\n            toolStrip.SuspendLayout();\r\n            statusStrip1.SuspendLayout();\r\n            settingsSidebarPanel.SuspendLayout();\r\n            groupBox1.SuspendLayout();\r\n            uninstallListContextMenuStrip.SuspendLayout();\r\n            menuStrip.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // splitContainer1\r\n            // \r\n            resources.ApplyResources(splitContainer1, \"splitContainer1\");\r\n            splitContainer1.FixedPanel = FixedPanel.Panel1;\r\n            splitContainer1.Name = \"splitContainer1\";\r\n            // \r\n            // splitContainer1.Panel1\r\n            // \r\n            splitContainer1.Panel1.Controls.Add(advancedFilters1);\r\n            resources.ApplyResources(splitContainer1.Panel1, \"splitContainer1.Panel1\");\r\n            // \r\n            // splitContainer1.Panel2\r\n            // \r\n            splitContainer1.Panel2.Controls.Add(splitContainerListAndMap);\r\n            splitContainer1.Panel2.Controls.Add(toolStrip);\r\n            splitContainer1.Panel2.Controls.Add(statusStrip1);\r\n            // \r\n            // advancedFilters1\r\n            // \r\n            resources.ApplyResources(advancedFilters1, \"advancedFilters1\");\r\n            advancedFilters1.Name = \"advancedFilters1\";\r\n            // \r\n            // splitContainerListAndMap\r\n            // \r\n            resources.ApplyResources(splitContainerListAndMap, \"splitContainerListAndMap\");\r\n            splitContainerListAndMap.FixedPanel = FixedPanel.Panel2;\r\n            splitContainerListAndMap.Name = \"splitContainerListAndMap\";\r\n            // \r\n            // splitContainerListAndMap.Panel1\r\n            // \r\n            splitContainerListAndMap.Panel1.Controls.Add(listViewPanel);\r\n            // \r\n            // splitContainerListAndMap.Panel2\r\n            // \r\n            splitContainerListAndMap.Panel2.Controls.Add(treeMap1);\r\n            // \r\n            // listViewPanel\r\n            // \r\n            listViewPanel.BorderStyle = BorderStyle.FixedSingle;\r\n            listViewPanel.Controls.Add(uninstallerObjectListView);\r\n            resources.ApplyResources(listViewPanel, \"listViewPanel\");\r\n            listViewPanel.Name = \"listViewPanel\";\r\n            // \r\n            // uninstallerObjectListView\r\n            // \r\n            uninstallerObjectListView.AllColumns.Add(olvColumnDisplayName);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnPublisher);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnRating);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnDisplayVersion);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnInstallDate);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnSize);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnStartup);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnIs64);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnUninstallString);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnAbout);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnInstallSource);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnInstallLocation);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnUninstallerKind);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnSystemComponent);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnProtected);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnRegistryKeyName);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnGuid);\r\n            uninstallerObjectListView.AllColumns.Add(olvColumnQuietUninstallString);\r\n            uninstallerObjectListView.AllowColumnReorder = true;\r\n            uninstallerObjectListView.BorderStyle = BorderStyle.None;\r\n            uninstallerObjectListView.CellEditActivation = ObjectListView.CellEditActivateMode.DoubleClick;\r\n            uninstallerObjectListView.CellEditUseWholeCell = false;\r\n            uninstallerObjectListView.CheckBoxes = true;\r\n            uninstallerObjectListView.Columns.AddRange(new ColumnHeader[] { olvColumnDisplayName, olvColumnPublisher, olvColumnRating, olvColumnDisplayVersion, olvColumnInstallDate, olvColumnSize, olvColumnStartup, olvColumnIs64, olvColumnUninstallString, olvColumnAbout, olvColumnInstallSource, olvColumnInstallLocation, olvColumnUninstallerKind, olvColumnSystemComponent, olvColumnProtected, olvColumnRegistryKeyName, olvColumnGuid, olvColumnQuietUninstallString });\r\n            resources.ApplyResources(uninstallerObjectListView, \"uninstallerObjectListView\");\r\n            uninstallerObjectListView.FullRowSelect = true;\r\n            uninstallerObjectListView.GridLines = true;\r\n            uninstallerObjectListView.Name = \"uninstallerObjectListView\";\r\n            uninstallerObjectListView.ShowGroups = false;\r\n            uninstallerObjectListView.ShowImagesOnSubItems = true;\r\n            uninstallerObjectListView.ShowItemToolTips = true;\r\n            uninstallerObjectListView.SortGroupItemsByPrimaryColumn = false;\r\n            uninstallerObjectListView.UseCompatibleStateImageBehavior = false;\r\n            uninstallerObjectListView.UseFilterIndicator = true;\r\n            uninstallerObjectListView.UseHyperlinks = true;\r\n            uninstallerObjectListView.View = View.Details;\r\n            uninstallerObjectListView.VirtualMode = true;\r\n            uninstallerObjectListView.CellEditStarting += uninstallerObjectListView_CellEditStarting;\r\n            uninstallerObjectListView.CellRightClick += uninstallerObjectListView_CellRightClick;\r\n            uninstallerObjectListView.ItemsChanged += RefreshStatusbarTotalLabel;\r\n            uninstallerObjectListView.SelectionChanged += uninstallerObjectListView_SelectedChanged;\r\n            uninstallerObjectListView.ItemChecked += uninstallerObjectListView_SelectedChanged;\r\n            uninstallerObjectListView.Click += uninstallerObjectListView_Click;\r\n            uninstallerObjectListView.KeyDown += uninstallerObjectListView_KeyDown;\r\n            uninstallerObjectListView.KeyUp += HandleListViewMenuKeystroke;\r\n            // \r\n            // olvColumnDisplayName\r\n            // \r\n            olvColumnDisplayName.Hideable = false;\r\n            resources.ApplyResources(olvColumnDisplayName, \"olvColumnDisplayName\");\r\n            // \r\n            // olvColumnPublisher\r\n            // \r\n            resources.ApplyResources(olvColumnPublisher, \"olvColumnPublisher\");\r\n            // \r\n            // olvColumnRating\r\n            // \r\n            olvColumnRating.IsEditable = false;\r\n            olvColumnRating.MaximumWidth = 160;\r\n            olvColumnRating.MinimumWidth = 80;\r\n            olvColumnRating.Searchable = false;\r\n            resources.ApplyResources(olvColumnRating, \"olvColumnRating\");\r\n            olvColumnRating.UseFiltering = false;\r\n            // \r\n            // olvColumnDisplayVersion\r\n            // \r\n            resources.ApplyResources(olvColumnDisplayVersion, \"olvColumnDisplayVersion\");\r\n            // \r\n            // olvColumnInstallDate\r\n            // \r\n            olvColumnInstallDate.IsEditable = false;\r\n            resources.ApplyResources(olvColumnInstallDate, \"olvColumnInstallDate\");\r\n            // \r\n            // olvColumnSize\r\n            // \r\n            olvColumnSize.Searchable = false;\r\n            resources.ApplyResources(olvColumnSize, \"olvColumnSize\");\r\n            // \r\n            // olvColumnStartup\r\n            // \r\n            olvColumnStartup.AspectName = \"\";\r\n            resources.ApplyResources(olvColumnStartup, \"olvColumnStartup\");\r\n            // \r\n            // olvColumnIs64\r\n            // \r\n            olvColumnIs64.AspectName = \"Is64Bit\";\r\n            resources.ApplyResources(olvColumnIs64, \"olvColumnIs64\");\r\n            // \r\n            // olvColumnUninstallString\r\n            // \r\n            resources.ApplyResources(olvColumnUninstallString, \"olvColumnUninstallString\");\r\n            // \r\n            // olvColumnAbout\r\n            // \r\n            olvColumnAbout.Hyperlink = true;\r\n            olvColumnAbout.IsEditable = false;\r\n            resources.ApplyResources(olvColumnAbout, \"olvColumnAbout\");\r\n            // \r\n            // olvColumnInstallSource\r\n            // \r\n            resources.ApplyResources(olvColumnInstallSource, \"olvColumnInstallSource\");\r\n            // \r\n            // olvColumnInstallLocation\r\n            // \r\n            resources.ApplyResources(olvColumnInstallLocation, \"olvColumnInstallLocation\");\r\n            // \r\n            // olvColumnUninstallerKind\r\n            // \r\n            resources.ApplyResources(olvColumnUninstallerKind, \"olvColumnUninstallerKind\");\r\n            // \r\n            // olvColumnSystemComponent\r\n            // \r\n            resources.ApplyResources(olvColumnSystemComponent, \"olvColumnSystemComponent\");\r\n            // \r\n            // olvColumnProtected\r\n            // \r\n            olvColumnProtected.AspectName = \"IsProtected\";\r\n            resources.ApplyResources(olvColumnProtected, \"olvColumnProtected\");\r\n            // \r\n            // olvColumnRegistryKeyName\r\n            // \r\n            resources.ApplyResources(olvColumnRegistryKeyName, \"olvColumnRegistryKeyName\");\r\n            // \r\n            // olvColumnGuid\r\n            // \r\n            resources.ApplyResources(olvColumnGuid, \"olvColumnGuid\");\r\n            // \r\n            // olvColumnQuietUninstallString\r\n            // \r\n            resources.ApplyResources(olvColumnQuietUninstallString, \"olvColumnQuietUninstallString\");\r\n            // \r\n            // treeMap1\r\n            // \r\n            resources.ApplyResources(treeMap1, \"treeMap1\");\r\n            treeMap1.Name = \"treeMap1\";\r\n            treeMap1.ShowToolTip = false;\r\n            treeMap1.UseLogValueScaling = false;\r\n            // \r\n            // toolStrip\r\n            // \r\n            toolStrip.GripStyle = ToolStripGripStyle.Hidden;\r\n            toolStrip.ImageScalingSize = new System.Drawing.Size(22, 22);\r\n            resources.ApplyResources(toolStrip, \"toolStrip\");\r\n            toolStrip.Items.AddRange(new ToolStripItem[] { toolStripButton1, toolStripSeparator22, toolStripButtonSelAll, toolStripButtonSelNone, toolStripButtonSelInv, toolStripSeparator23, toolStripButtonTarget, toolStripSeparator21, toolStripButtonUninstall, toolStripButton2, toolStripButtonModify, toolStripSeparator4, toolStripButtonProperties, toolStripSeparator24, toolStripButton7, toolStripButton8 });\r\n            toolStrip.LayoutStyle = ToolStripLayoutStyle.HorizontalStackWithOverflow;\r\n            toolStrip.Name = \"toolStrip\";\r\n            toolStrip.TabStop = true;\r\n            // \r\n            // toolStripButton1\r\n            // \r\n            resources.ApplyResources(toolStripButton1, \"toolStripButton1\");\r\n            toolStripButton1.Name = \"toolStripButton1\";\r\n            toolStripButton1.Click += ReloadUninstallers;\r\n            // \r\n            // toolStripSeparator22\r\n            // \r\n            toolStripSeparator22.Name = \"toolStripSeparator22\";\r\n            resources.ApplyResources(toolStripSeparator22, \"toolStripSeparator22\");\r\n            // \r\n            // toolStripButtonSelAll\r\n            // \r\n            toolStripButtonSelAll.DisplayStyle = ToolStripItemDisplayStyle.Image;\r\n            resources.ApplyResources(toolStripButtonSelAll, \"toolStripButtonSelAll\");\r\n            toolStripButtonSelAll.Name = \"toolStripButtonSelAll\";\r\n            // \r\n            // toolStripButtonSelNone\r\n            // \r\n            toolStripButtonSelNone.DisplayStyle = ToolStripItemDisplayStyle.Image;\r\n            resources.ApplyResources(toolStripButtonSelNone, \"toolStripButtonSelNone\");\r\n            toolStripButtonSelNone.Name = \"toolStripButtonSelNone\";\r\n            // \r\n            // toolStripButtonSelInv\r\n            // \r\n            toolStripButtonSelInv.DisplayStyle = ToolStripItemDisplayStyle.Image;\r\n            resources.ApplyResources(toolStripButtonSelInv, \"toolStripButtonSelInv\");\r\n            toolStripButtonSelInv.Name = \"toolStripButtonSelInv\";\r\n            // \r\n            // toolStripSeparator23\r\n            // \r\n            toolStripSeparator23.Name = \"toolStripSeparator23\";\r\n            resources.ApplyResources(toolStripSeparator23, \"toolStripSeparator23\");\r\n            // \r\n            // toolStripButtonTarget\r\n            // \r\n            toolStripButtonTarget.DisplayStyle = ToolStripItemDisplayStyle.Image;\r\n            toolStripButtonTarget.Image = Properties.Resources.target;\r\n            resources.ApplyResources(toolStripButtonTarget, \"toolStripButtonTarget\");\r\n            toolStripButtonTarget.Name = \"toolStripButtonTarget\";\r\n            toolStripButtonTarget.Click += OpenTargetWindow;\r\n            // \r\n            // toolStripSeparator21\r\n            // \r\n            toolStripSeparator21.Name = \"toolStripSeparator21\";\r\n            resources.ApplyResources(toolStripSeparator21, \"toolStripSeparator21\");\r\n            // \r\n            // toolStripButtonUninstall\r\n            // \r\n            resources.ApplyResources(toolStripButtonUninstall, \"toolStripButtonUninstall\");\r\n            toolStripButtonUninstall.Name = \"toolStripButtonUninstall\";\r\n            toolStripButtonUninstall.Click += RunLoudUninstall;\r\n            // \r\n            // toolStripButton2\r\n            // \r\n            resources.ApplyResources(toolStripButton2, \"toolStripButton2\");\r\n            toolStripButton2.Name = \"toolStripButton2\";\r\n            toolStripButton2.Click += RunQuietUninstall;\r\n            // \r\n            // toolStripButtonModify\r\n            // \r\n            toolStripButtonModify.DisplayStyle = ToolStripItemDisplayStyle.Image;\r\n            toolStripButtonModify.Image = Properties.Resources.edit_box;\r\n            resources.ApplyResources(toolStripButtonModify, \"toolStripButtonModify\");\r\n            toolStripButtonModify.Name = \"toolStripButtonModify\";\r\n            toolStripButtonModify.Click += modifyToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator4\r\n            // \r\n            toolStripSeparator4.Name = \"toolStripSeparator4\";\r\n            resources.ApplyResources(toolStripSeparator4, \"toolStripSeparator4\");\r\n            // \r\n            // toolStripButtonProperties\r\n            // \r\n            toolStripButtonProperties.Image = Properties.Resources.properties;\r\n            resources.ApplyResources(toolStripButtonProperties, \"toolStripButtonProperties\");\r\n            toolStripButtonProperties.Name = \"toolStripButtonProperties\";\r\n            toolStripButtonProperties.Click += OpenProperties;\r\n            // \r\n            // toolStripSeparator24\r\n            // \r\n            toolStripSeparator24.Name = \"toolStripSeparator24\";\r\n            resources.ApplyResources(toolStripSeparator24, \"toolStripSeparator24\");\r\n            // \r\n            // toolStripButton7\r\n            // \r\n            toolStripButton7.DisplayStyle = ToolStripItemDisplayStyle.Image;\r\n            toolStripButton7.Image = Properties.Resources.settings;\r\n            resources.ApplyResources(toolStripButton7, \"toolStripButton7\");\r\n            toolStripButton7.Name = \"toolStripButton7\";\r\n            toolStripButton7.Click += settingsToolStripMenuItem_Click;\r\n            // \r\n            // toolStripButton8\r\n            // \r\n            toolStripButton8.DisplayStyle = ToolStripItemDisplayStyle.Image;\r\n            toolStripButton8.Image = Properties.Resources.information_circle;\r\n            resources.ApplyResources(toolStripButton8, \"toolStripButton8\");\r\n            toolStripButton8.Name = \"toolStripButton8\";\r\n            toolStripButton8.Click += openHelpToolStripMenuItem_Click;\r\n            // \r\n            // statusStrip1\r\n            // \r\n            statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);\r\n            statusStrip1.Items.AddRange(new ToolStripItem[] { toolStripLabelStatus, toolStripLabelSize, toolStripLabelTotal });\r\n            resources.ApplyResources(statusStrip1, \"statusStrip1\");\r\n            statusStrip1.Name = \"statusStrip1\";\r\n            statusStrip1.RenderMode = ToolStripRenderMode.ManagerRenderMode;\r\n            // \r\n            // toolStripLabelStatus\r\n            // \r\n            toolStripLabelStatus.BorderSides = ToolStripStatusLabelBorderSides.Left | ToolStripStatusLabelBorderSides.Top | ToolStripStatusLabelBorderSides.Right | ToolStripStatusLabelBorderSides.Bottom;\r\n            toolStripLabelStatus.BorderStyle = Border3DStyle.Sunken;\r\n            toolStripLabelStatus.Name = \"toolStripLabelStatus\";\r\n            resources.ApplyResources(toolStripLabelStatus, \"toolStripLabelStatus\");\r\n            toolStripLabelStatus.Spring = true;\r\n            toolStripLabelStatus.TextChanged += toolStripLabelStatus_TextChanged;\r\n            // \r\n            // toolStripLabelSize\r\n            // \r\n            resources.ApplyResources(toolStripLabelSize, \"toolStripLabelSize\");\r\n            toolStripLabelSize.BorderSides = ToolStripStatusLabelBorderSides.Left | ToolStripStatusLabelBorderSides.Top | ToolStripStatusLabelBorderSides.Right | ToolStripStatusLabelBorderSides.Bottom;\r\n            toolStripLabelSize.BorderStyle = Border3DStyle.Sunken;\r\n            toolStripLabelSize.Name = \"toolStripLabelSize\";\r\n            // \r\n            // toolStripLabelTotal\r\n            // \r\n            resources.ApplyResources(toolStripLabelTotal, \"toolStripLabelTotal\");\r\n            toolStripLabelTotal.BorderSides = ToolStripStatusLabelBorderSides.Left | ToolStripStatusLabelBorderSides.Top | ToolStripStatusLabelBorderSides.Right | ToolStripStatusLabelBorderSides.Bottom;\r\n            toolStripLabelTotal.BorderStyle = Border3DStyle.Sunken;\r\n            toolStripLabelTotal.Name = \"toolStripLabelTotal\";\r\n            // \r\n            // settingsSidebarPanel\r\n            // \r\n            resources.ApplyResources(settingsSidebarPanel, \"settingsSidebarPanel\");\r\n            settingsSidebarPanel.Controls.Add(propertiesSidebar);\r\n            settingsSidebarPanel.Controls.Add(label1);\r\n            settingsSidebarPanel.Controls.Add(groupBox1);\r\n            settingsSidebarPanel.Name = \"settingsSidebarPanel\";\r\n            // \r\n            // propertiesSidebar\r\n            // \r\n            resources.ApplyResources(propertiesSidebar, \"propertiesSidebar\");\r\n            propertiesSidebar.Name = \"propertiesSidebar\";\r\n            // \r\n            // label1\r\n            // \r\n            resources.ApplyResources(label1, \"label1\");\r\n            label1.Name = \"label1\";\r\n            // \r\n            // groupBox1\r\n            // \r\n            resources.ApplyResources(groupBox1, \"groupBox1\");\r\n            groupBox1.Controls.Add(buttonAdvFiltering);\r\n            groupBox1.Controls.Add(filterEditor1);\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.TabStop = false;\r\n            // \r\n            // buttonAdvFiltering\r\n            // \r\n            resources.ApplyResources(buttonAdvFiltering, \"buttonAdvFiltering\");\r\n            buttonAdvFiltering.Name = \"buttonAdvFiltering\";\r\n            buttonAdvFiltering.UseVisualStyleBackColor = true;\r\n            buttonAdvFiltering.Click += buttonAdvFiltering_Click;\r\n            // \r\n            // filterEditor1\r\n            // \r\n            resources.ApplyResources(filterEditor1, \"filterEditor1\");\r\n            filterEditor1.Name = \"filterEditor1\";\r\n            filterEditor1.ShowAsSearch = true;\r\n            filterEditor1.FocusSearchTarget += filterEditor1_FocusSearchTarget;\r\n            // \r\n            // uninstallListContextMenuStrip\r\n            // \r\n            uninstallListContextMenuStrip.ImageScalingSize = new System.Drawing.Size(20, 20);\r\n            uninstallListContextMenuStrip.Items.AddRange(new ToolStripItem[] { uninstallContextMenuStripItem, quietUninstallContextMenuStripItem, manualUninstallToolStripMenuItem1, uninstallUsingMsiExecContextMenuStripItem, toolStripSeparator3, excludeToolStripMenuItem, includeToolStripMenuItem, toolStripSeparatorFiltering, runToolStripMenuItem, toolStripSeparator8, copyToClipboardContextMenuStripItem, deleteRegistryEntryContextMenuStripItem, renameContextMenuStripItem, toolStripSeparator6, openInExplorerContextMenuStripItem, openWebPageContextMenuStripItem, lookUpOnlineToolStripMenuItem, rateToolStripMenuItem, toolStripSeparator7, propertiesContextMenuStripItem });\r\n            uninstallListContextMenuStrip.Name = \"uninstallListContextMenuStrip\";\r\n            resources.ApplyResources(uninstallListContextMenuStrip, \"uninstallListContextMenuStrip\");\r\n            uninstallListContextMenuStrip.Opening += UpdateUninstallListContextMenuStrip;\r\n            // \r\n            // uninstallContextMenuStripItem\r\n            // \r\n            resources.ApplyResources(uninstallContextMenuStripItem, \"uninstallContextMenuStripItem\");\r\n            uninstallContextMenuStripItem.Name = \"uninstallContextMenuStripItem\";\r\n            uninstallContextMenuStripItem.Click += RunLoudUninstall;\r\n            // \r\n            // quietUninstallContextMenuStripItem\r\n            // \r\n            resources.ApplyResources(quietUninstallContextMenuStripItem, \"quietUninstallContextMenuStripItem\");\r\n            quietUninstallContextMenuStripItem.Name = \"quietUninstallContextMenuStripItem\";\r\n            quietUninstallContextMenuStripItem.Click += RunQuietUninstall;\r\n            // \r\n            // manualUninstallToolStripMenuItem1\r\n            // \r\n            manualUninstallToolStripMenuItem1.Name = \"manualUninstallToolStripMenuItem1\";\r\n            resources.ApplyResources(manualUninstallToolStripMenuItem1, \"manualUninstallToolStripMenuItem1\");\r\n            manualUninstallToolStripMenuItem1.Click += RunAdvancedUninstall;\r\n            // \r\n            // uninstallUsingMsiExecContextMenuStripItem\r\n            // \r\n            uninstallUsingMsiExecContextMenuStripItem.DropDownItems.AddRange(new ToolStripItem[] { msiInstallContextMenuStripItem, msiUninstallContextMenuStripItem, msiQuietUninstallContextMenuStripItem });\r\n            uninstallUsingMsiExecContextMenuStripItem.Name = \"uninstallUsingMsiExecContextMenuStripItem\";\r\n            resources.ApplyResources(uninstallUsingMsiExecContextMenuStripItem, \"uninstallUsingMsiExecContextMenuStripItem\");\r\n            // \r\n            // msiInstallContextMenuStripItem\r\n            // \r\n            msiInstallContextMenuStripItem.Name = \"msiInstallContextMenuStripItem\";\r\n            resources.ApplyResources(msiInstallContextMenuStripItem, \"msiInstallContextMenuStripItem\");\r\n            msiInstallContextMenuStripItem.Click += msiInstallContextMenuStripItem_Click;\r\n            // \r\n            // msiUninstallContextMenuStripItem\r\n            // \r\n            msiUninstallContextMenuStripItem.Name = \"msiUninstallContextMenuStripItem\";\r\n            resources.ApplyResources(msiUninstallContextMenuStripItem, \"msiUninstallContextMenuStripItem\");\r\n            msiUninstallContextMenuStripItem.Click += msiUninstallContextMenuStripItem_Click;\r\n            // \r\n            // msiQuietUninstallContextMenuStripItem\r\n            // \r\n            msiQuietUninstallContextMenuStripItem.Name = \"msiQuietUninstallContextMenuStripItem\";\r\n            resources.ApplyResources(msiQuietUninstallContextMenuStripItem, \"msiQuietUninstallContextMenuStripItem\");\r\n            msiQuietUninstallContextMenuStripItem.Click += msiQuietUninstallContextMenuStripItem_Click;\r\n            // \r\n            // toolStripSeparator3\r\n            // \r\n            toolStripSeparator3.Name = \"toolStripSeparator3\";\r\n            resources.ApplyResources(toolStripSeparator3, \"toolStripSeparator3\");\r\n            // \r\n            // excludeToolStripMenuItem\r\n            // \r\n            excludeToolStripMenuItem.Name = \"excludeToolStripMenuItem\";\r\n            resources.ApplyResources(excludeToolStripMenuItem, \"excludeToolStripMenuItem\");\r\n            excludeToolStripMenuItem.Click += excludeToolStripMenuItem_Click;\r\n            // \r\n            // includeToolStripMenuItem\r\n            // \r\n            includeToolStripMenuItem.Name = \"includeToolStripMenuItem\";\r\n            resources.ApplyResources(includeToolStripMenuItem, \"includeToolStripMenuItem\");\r\n            includeToolStripMenuItem.Click += includeToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparatorFiltering\r\n            // \r\n            toolStripSeparatorFiltering.Name = \"toolStripSeparatorFiltering\";\r\n            resources.ApplyResources(toolStripSeparatorFiltering, \"toolStripSeparatorFiltering\");\r\n            // \r\n            // runToolStripMenuItem\r\n            // \r\n            runToolStripMenuItem.Name = \"runToolStripMenuItem\";\r\n            resources.ApplyResources(runToolStripMenuItem, \"runToolStripMenuItem\");\r\n            runToolStripMenuItem.DropDownItemClicked += runToolStripMenuItem_DropDownItemClicked;\r\n            // \r\n            // toolStripSeparator8\r\n            // \r\n            toolStripSeparator8.Name = \"toolStripSeparator8\";\r\n            resources.ApplyResources(toolStripSeparator8, \"toolStripSeparator8\");\r\n            // \r\n            // copyToClipboardContextMenuStripItem\r\n            // \r\n            copyToClipboardContextMenuStripItem.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem9, toolStripSeparator9, fullInformationCopyContextMenuStripItem, programNameCopyContextMenuStripItem, gUIDProductCodeCopyContextMenuStripItem, fullRegistryPathCopyContextMenuStripItem, uninstallStringCopyContextMenuStripItem });\r\n            resources.ApplyResources(copyToClipboardContextMenuStripItem, \"copyToClipboardContextMenuStripItem\");\r\n            copyToClipboardContextMenuStripItem.Name = \"copyToClipboardContextMenuStripItem\";\r\n            // \r\n            // toolStripMenuItem9\r\n            // \r\n            toolStripMenuItem9.Name = \"toolStripMenuItem9\";\r\n            resources.ApplyResources(toolStripMenuItem9, \"toolStripMenuItem9\");\r\n            toolStripMenuItem9.Click += OpenAdvancedClipboardCopy;\r\n            // \r\n            // toolStripSeparator9\r\n            // \r\n            toolStripSeparator9.Name = \"toolStripSeparator9\";\r\n            resources.ApplyResources(toolStripSeparator9, \"toolStripSeparator9\");\r\n            // \r\n            // fullInformationCopyContextMenuStripItem\r\n            // \r\n            fullInformationCopyContextMenuStripItem.Name = \"fullInformationCopyContextMenuStripItem\";\r\n            resources.ApplyResources(fullInformationCopyContextMenuStripItem, \"fullInformationCopyContextMenuStripItem\");\r\n            fullInformationCopyContextMenuStripItem.Click += ClipboardCopyFullInformation;\r\n            // \r\n            // programNameCopyContextMenuStripItem\r\n            // \r\n            programNameCopyContextMenuStripItem.Name = \"programNameCopyContextMenuStripItem\";\r\n            resources.ApplyResources(programNameCopyContextMenuStripItem, \"programNameCopyContextMenuStripItem\");\r\n            programNameCopyContextMenuStripItem.Click += ClipboardCopyProgramName;\r\n            // \r\n            // gUIDProductCodeCopyContextMenuStripItem\r\n            // \r\n            gUIDProductCodeCopyContextMenuStripItem.Name = \"gUIDProductCodeCopyContextMenuStripItem\";\r\n            resources.ApplyResources(gUIDProductCodeCopyContextMenuStripItem, \"gUIDProductCodeCopyContextMenuStripItem\");\r\n            gUIDProductCodeCopyContextMenuStripItem.Click += ClipboardCopyGuids;\r\n            // \r\n            // fullRegistryPathCopyContextMenuStripItem\r\n            // \r\n            fullRegistryPathCopyContextMenuStripItem.Name = \"fullRegistryPathCopyContextMenuStripItem\";\r\n            resources.ApplyResources(fullRegistryPathCopyContextMenuStripItem, \"fullRegistryPathCopyContextMenuStripItem\");\r\n            fullRegistryPathCopyContextMenuStripItem.Click += ClipboardCopyRegistryPath;\r\n            // \r\n            // uninstallStringCopyContextMenuStripItem\r\n            // \r\n            uninstallStringCopyContextMenuStripItem.Name = \"uninstallStringCopyContextMenuStripItem\";\r\n            resources.ApplyResources(uninstallStringCopyContextMenuStripItem, \"uninstallStringCopyContextMenuStripItem\");\r\n            uninstallStringCopyContextMenuStripItem.Click += ClipboardCopyUninstallString;\r\n            // \r\n            // deleteRegistryEntryContextMenuStripItem\r\n            // \r\n            deleteRegistryEntryContextMenuStripItem.Name = \"deleteRegistryEntryContextMenuStripItem\";\r\n            resources.ApplyResources(deleteRegistryEntryContextMenuStripItem, \"deleteRegistryEntryContextMenuStripItem\");\r\n            deleteRegistryEntryContextMenuStripItem.Click += DeleteRegistryEntries;\r\n            // \r\n            // renameContextMenuStripItem\r\n            // \r\n            renameContextMenuStripItem.Name = \"renameContextMenuStripItem\";\r\n            resources.ApplyResources(renameContextMenuStripItem, \"renameContextMenuStripItem\");\r\n            renameContextMenuStripItem.Click += RenameEntries;\r\n            // \r\n            // toolStripSeparator6\r\n            // \r\n            toolStripSeparator6.Name = \"toolStripSeparator6\";\r\n            resources.ApplyResources(toolStripSeparator6, \"toolStripSeparator6\");\r\n            // \r\n            // openInExplorerContextMenuStripItem\r\n            // \r\n            openInExplorerContextMenuStripItem.DropDownItems.AddRange(new ToolStripItem[] { installLocationOpenInExplorerContextMenuStripItem, uninstallerLocationOpenInExplorerContextMenuStripItem, sourceLocationOpenInExplorerContextMenuStripItem });\r\n            resources.ApplyResources(openInExplorerContextMenuStripItem, \"openInExplorerContextMenuStripItem\");\r\n            openInExplorerContextMenuStripItem.Name = \"openInExplorerContextMenuStripItem\";\r\n            // \r\n            // installLocationOpenInExplorerContextMenuStripItem\r\n            // \r\n            installLocationOpenInExplorerContextMenuStripItem.Name = \"installLocationOpenInExplorerContextMenuStripItem\";\r\n            resources.ApplyResources(installLocationOpenInExplorerContextMenuStripItem, \"installLocationOpenInExplorerContextMenuStripItem\");\r\n            installLocationOpenInExplorerContextMenuStripItem.Click += OpenInstallLocation;\r\n            // \r\n            // uninstallerLocationOpenInExplorerContextMenuStripItem\r\n            // \r\n            uninstallerLocationOpenInExplorerContextMenuStripItem.Name = \"uninstallerLocationOpenInExplorerContextMenuStripItem\";\r\n            resources.ApplyResources(uninstallerLocationOpenInExplorerContextMenuStripItem, \"uninstallerLocationOpenInExplorerContextMenuStripItem\");\r\n            uninstallerLocationOpenInExplorerContextMenuStripItem.Click += OpenUninstallerLocation;\r\n            // \r\n            // sourceLocationOpenInExplorerContextMenuStripItem\r\n            // \r\n            sourceLocationOpenInExplorerContextMenuStripItem.Name = \"sourceLocationOpenInExplorerContextMenuStripItem\";\r\n            resources.ApplyResources(sourceLocationOpenInExplorerContextMenuStripItem, \"sourceLocationOpenInExplorerContextMenuStripItem\");\r\n            sourceLocationOpenInExplorerContextMenuStripItem.Click += OpenInstallationSource;\r\n            // \r\n            // openWebPageContextMenuStripItem\r\n            // \r\n            openWebPageContextMenuStripItem.Name = \"openWebPageContextMenuStripItem\";\r\n            resources.ApplyResources(openWebPageContextMenuStripItem, \"openWebPageContextMenuStripItem\");\r\n            openWebPageContextMenuStripItem.Click += OpenAssociatedWebPage;\r\n            // \r\n            // lookUpOnlineToolStripMenuItem\r\n            // \r\n            lookUpOnlineToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem15, toolStripMenuItem16, slantcoToolStripMenuItem, toolStripSeparator26, fossHubcomToolStripMenuItem, sourceForgecomToolStripMenuItem, gitHubcomToolStripMenuItem, fileHippocomToolStripMenuItem });\r\n            resources.ApplyResources(lookUpOnlineToolStripMenuItem, \"lookUpOnlineToolStripMenuItem\");\r\n            lookUpOnlineToolStripMenuItem.Name = \"lookUpOnlineToolStripMenuItem\";\r\n            // \r\n            // toolStripMenuItem15\r\n            // \r\n            toolStripMenuItem15.Name = \"toolStripMenuItem15\";\r\n            resources.ApplyResources(toolStripMenuItem15, \"toolStripMenuItem15\");\r\n            toolStripMenuItem15.Click += googleToolStripMenuItem_Click;\r\n            // \r\n            // toolStripMenuItem16\r\n            // \r\n            toolStripMenuItem16.Name = \"toolStripMenuItem16\";\r\n            resources.ApplyResources(toolStripMenuItem16, \"toolStripMenuItem16\");\r\n            toolStripMenuItem16.Click += alternativeToToolStripMenuItem_Click;\r\n            // \r\n            // slantcoToolStripMenuItem\r\n            // \r\n            slantcoToolStripMenuItem.Name = \"slantcoToolStripMenuItem\";\r\n            resources.ApplyResources(slantcoToolStripMenuItem, \"slantcoToolStripMenuItem\");\r\n            slantcoToolStripMenuItem.Click += slantcoToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator26\r\n            // \r\n            toolStripSeparator26.Name = \"toolStripSeparator26\";\r\n            resources.ApplyResources(toolStripSeparator26, \"toolStripSeparator26\");\r\n            // \r\n            // fossHubcomToolStripMenuItem\r\n            // \r\n            fossHubcomToolStripMenuItem.Name = \"fossHubcomToolStripMenuItem\";\r\n            resources.ApplyResources(fossHubcomToolStripMenuItem, \"fossHubcomToolStripMenuItem\");\r\n            fossHubcomToolStripMenuItem.Click += fossHubcomToolStripMenuItem_Click;\r\n            // \r\n            // sourceForgecomToolStripMenuItem\r\n            // \r\n            sourceForgecomToolStripMenuItem.Name = \"sourceForgecomToolStripMenuItem\";\r\n            resources.ApplyResources(sourceForgecomToolStripMenuItem, \"sourceForgecomToolStripMenuItem\");\r\n            sourceForgecomToolStripMenuItem.Click += sourceForgecomToolStripMenuItem_Click;\r\n            // \r\n            // gitHubcomToolStripMenuItem\r\n            // \r\n            gitHubcomToolStripMenuItem.Name = \"gitHubcomToolStripMenuItem\";\r\n            resources.ApplyResources(gitHubcomToolStripMenuItem, \"gitHubcomToolStripMenuItem\");\r\n            gitHubcomToolStripMenuItem.Click += gitHubcomToolStripMenuItem_Click;\r\n            // \r\n            // fileHippocomToolStripMenuItem\r\n            // \r\n            fileHippocomToolStripMenuItem.Name = \"fileHippocomToolStripMenuItem\";\r\n            resources.ApplyResources(fileHippocomToolStripMenuItem, \"fileHippocomToolStripMenuItem\");\r\n            fileHippocomToolStripMenuItem.Click += fileHippocomToolStripMenuItem_Click;\r\n            // \r\n            // rateToolStripMenuItem\r\n            // \r\n            rateToolStripMenuItem.Image = Properties.Resources.star;\r\n            rateToolStripMenuItem.Name = \"rateToolStripMenuItem\";\r\n            resources.ApplyResources(rateToolStripMenuItem, \"rateToolStripMenuItem\");\r\n            rateToolStripMenuItem.Click += rateToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator7\r\n            // \r\n            toolStripSeparator7.Name = \"toolStripSeparator7\";\r\n            resources.ApplyResources(toolStripSeparator7, \"toolStripSeparator7\");\r\n            // \r\n            // propertiesContextMenuStripItem\r\n            // \r\n            resources.ApplyResources(propertiesContextMenuStripItem, \"propertiesContextMenuStripItem\");\r\n            propertiesContextMenuStripItem.Image = Properties.Resources.magnifybrowse;\r\n            propertiesContextMenuStripItem.Name = \"propertiesContextMenuStripItem\";\r\n            propertiesContextMenuStripItem.Click += OpenProperties;\r\n            // \r\n            // exportDialog\r\n            // \r\n            exportDialog.DefaultExt = \"txt\";\r\n            exportDialog.FileName = \"New BCUninstaller Export\";\r\n            resources.ApplyResources(exportDialog, \"exportDialog\");\r\n            exportDialog.RestoreDirectory = true;\r\n            exportDialog.FileOk += exportDialog_FileOk;\r\n            // \r\n            // menuStrip\r\n            // \r\n            menuStrip.ImageScalingSize = new System.Drawing.Size(20, 20);\r\n            menuStrip.Items.AddRange(new ToolStripItem[] { fileToolStripMenuItem, viewToolStripMenuItem, filteringToolStripMenuItem, basicOperationsToolStripMenuItem, advancedOperationsToolStripMenuItem, toolsToolStripMenuItem, helpToolStripMenuItem, debugToolStripMenuItem });\r\n            resources.ApplyResources(menuStrip, \"menuStrip\");\r\n            menuStrip.Name = \"menuStrip\";\r\n            // \r\n            // fileToolStripMenuItem\r\n            // \r\n            fileToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { reloadUninstallersToolStripMenuItem, toolStripSeparator1, loadUninstallerListToolStripMenuItem, toolStripSeparator30, exportSelectedToolStripMenuItem, exportToABatchUninstallScriptToolStripMenuItem, exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem, toolStripSeparator10, exitToolStripMenuItem });\r\n            fileToolStripMenuItem.Name = \"fileToolStripMenuItem\";\r\n            resources.ApplyResources(fileToolStripMenuItem, \"fileToolStripMenuItem\");\r\n            fileToolStripMenuItem.DropDownOpening += fileToolStripMenuItem_DropDownOpening;\r\n            // \r\n            // reloadUninstallersToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(reloadUninstallersToolStripMenuItem, \"reloadUninstallersToolStripMenuItem\");\r\n            reloadUninstallersToolStripMenuItem.Name = \"reloadUninstallersToolStripMenuItem\";\r\n            reloadUninstallersToolStripMenuItem.Click += ReloadUninstallers;\r\n            // \r\n            // toolStripSeparator1\r\n            // \r\n            toolStripSeparator1.Name = \"toolStripSeparator1\";\r\n            resources.ApplyResources(toolStripSeparator1, \"toolStripSeparator1\");\r\n            // \r\n            // loadUninstallerListToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(loadUninstallerListToolStripMenuItem, \"loadUninstallerListToolStripMenuItem\");\r\n            loadUninstallerListToolStripMenuItem.Name = \"loadUninstallerListToolStripMenuItem\";\r\n            loadUninstallerListToolStripMenuItem.Click += OpenUninstallLists;\r\n            // \r\n            // toolStripSeparator30\r\n            // \r\n            toolStripSeparator30.Name = \"toolStripSeparator30\";\r\n            resources.ApplyResources(toolStripSeparator30, \"toolStripSeparator30\");\r\n            // \r\n            // exportSelectedToolStripMenuItem\r\n            // \r\n            exportSelectedToolStripMenuItem.Name = \"exportSelectedToolStripMenuItem\";\r\n            resources.ApplyResources(exportSelectedToolStripMenuItem, \"exportSelectedToolStripMenuItem\");\r\n            exportSelectedToolStripMenuItem.Click += exportSelectedToolStripMenuItem_Click;\r\n            // \r\n            // exportToABatchUninstallScriptToolStripMenuItem\r\n            // \r\n            exportToABatchUninstallScriptToolStripMenuItem.Name = \"exportToABatchUninstallScriptToolStripMenuItem\";\r\n            resources.ApplyResources(exportToABatchUninstallScriptToolStripMenuItem, \"exportToABatchUninstallScriptToolStripMenuItem\");\r\n            exportToABatchUninstallScriptToolStripMenuItem.Click += exportToABatchUninstallScriptToolStripMenuItem_Click;\r\n            // \r\n            // exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem\r\n            // \r\n            exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Name = \"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem\";\r\n            resources.ApplyResources(exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem, \"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem\");\r\n            exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Click += exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator10\r\n            // \r\n            toolStripSeparator10.Name = \"toolStripSeparator10\";\r\n            resources.ApplyResources(toolStripSeparator10, \"toolStripSeparator10\");\r\n            // \r\n            // exitToolStripMenuItem\r\n            // \r\n            exitToolStripMenuItem.Name = \"exitToolStripMenuItem\";\r\n            resources.ApplyResources(exitToolStripMenuItem, \"exitToolStripMenuItem\");\r\n            exitToolStripMenuItem.Click += exitToolStripMenuItem_Click;\r\n            // \r\n            // viewToolStripMenuItem\r\n            // \r\n            viewToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { showColorLegendToolStripMenuItem, displayToolbarToolStripMenuItem, showTreemapToolStripMenuItem, displaySettingsToolStripMenuItem, displayStatusbarToolStripMenuItem, toolStripSeparator12, useSystemThemeToolStripMenuItem, toolStripSeparator33, autosizeAllColumnsToolStripMenuItem });\r\n            viewToolStripMenuItem.Name = \"viewToolStripMenuItem\";\r\n            resources.ApplyResources(viewToolStripMenuItem, \"viewToolStripMenuItem\");\r\n            viewToolStripMenuItem.DropDownOpening += viewToolStripMenuItem_DropDownOpening;\r\n            // \r\n            // showColorLegendToolStripMenuItem\r\n            // \r\n            showColorLegendToolStripMenuItem.Name = \"showColorLegendToolStripMenuItem\";\r\n            resources.ApplyResources(showColorLegendToolStripMenuItem, \"showColorLegendToolStripMenuItem\");\r\n            // \r\n            // displayToolbarToolStripMenuItem\r\n            // \r\n            displayToolbarToolStripMenuItem.Checked = true;\r\n            displayToolbarToolStripMenuItem.CheckState = CheckState.Checked;\r\n            displayToolbarToolStripMenuItem.Name = \"displayToolbarToolStripMenuItem\";\r\n            resources.ApplyResources(displayToolbarToolStripMenuItem, \"displayToolbarToolStripMenuItem\");\r\n            // \r\n            // showTreemapToolStripMenuItem\r\n            // \r\n            showTreemapToolStripMenuItem.Name = \"showTreemapToolStripMenuItem\";\r\n            resources.ApplyResources(showTreemapToolStripMenuItem, \"showTreemapToolStripMenuItem\");\r\n            // \r\n            // displaySettingsToolStripMenuItem\r\n            // \r\n            displaySettingsToolStripMenuItem.Checked = true;\r\n            displaySettingsToolStripMenuItem.CheckState = CheckState.Checked;\r\n            displaySettingsToolStripMenuItem.Name = \"displaySettingsToolStripMenuItem\";\r\n            resources.ApplyResources(displaySettingsToolStripMenuItem, \"displaySettingsToolStripMenuItem\");\r\n            // \r\n            // displayStatusbarToolStripMenuItem\r\n            // \r\n            displayStatusbarToolStripMenuItem.Checked = true;\r\n            displayStatusbarToolStripMenuItem.CheckState = CheckState.Checked;\r\n            displayStatusbarToolStripMenuItem.Name = \"displayStatusbarToolStripMenuItem\";\r\n            resources.ApplyResources(displayStatusbarToolStripMenuItem, \"displayStatusbarToolStripMenuItem\");\r\n            // \r\n            // toolStripSeparator12\r\n            // \r\n            toolStripSeparator12.Name = \"toolStripSeparator12\";\r\n            resources.ApplyResources(toolStripSeparator12, \"toolStripSeparator12\");\r\n            // \r\n            // useSystemThemeToolStripMenuItem\r\n            // \r\n            useSystemThemeToolStripMenuItem.Checked = true;\r\n            useSystemThemeToolStripMenuItem.CheckState = CheckState.Checked;\r\n            useSystemThemeToolStripMenuItem.Name = \"useSystemThemeToolStripMenuItem\";\r\n            resources.ApplyResources(useSystemThemeToolStripMenuItem, \"useSystemThemeToolStripMenuItem\");\r\n            // \r\n            // toolStripSeparator33\r\n            // \r\n            toolStripSeparator33.Name = \"toolStripSeparator33\";\r\n            resources.ApplyResources(toolStripSeparator33, \"toolStripSeparator33\");\r\n            // \r\n            // autosizeAllColumnsToolStripMenuItem\r\n            // \r\n            autosizeAllColumnsToolStripMenuItem.Name = \"autosizeAllColumnsToolStripMenuItem\";\r\n            resources.ApplyResources(autosizeAllColumnsToolStripMenuItem, \"autosizeAllColumnsToolStripMenuItem\");\r\n            autosizeAllColumnsToolStripMenuItem.Click += autosizeAllColumnsToolStripMenuItem_Click;\r\n            // \r\n            // filteringToolStripMenuItem\r\n            // \r\n            filteringToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { advancedApplicationsToolStripMenuItem, basicApplicationsToolStripMenuItem, systemComponentsToolStripMenuItem, everythingToolStripMenuItem, toolStripSeparator20, automaticallyStartedToolStripMenuItem, onlyWebBrowsersToolStripMenuItem, toolStripSeparator31, viewTweaksToolStripMenuItem, viewUnregisteredToolStripMenuItem, viewUpdatesToolStripMenuItem, viewWindowsFeaturesToolStripMenuItem, viewWindowsStoreAppsToolStripMenuItem, toolStripSeparator28, searchToolStripMenuItem });\r\n            filteringToolStripMenuItem.Name = \"filteringToolStripMenuItem\";\r\n            resources.ApplyResources(filteringToolStripMenuItem, \"filteringToolStripMenuItem\");\r\n            filteringToolStripMenuItem.DropDownOpening += filteringToolStripMenuItem_DropDownOpening;\r\n            // \r\n            // advancedApplicationsToolStripMenuItem\r\n            // \r\n            advancedApplicationsToolStripMenuItem.Image = Properties.Resources.filter;\r\n            advancedApplicationsToolStripMenuItem.Name = \"advancedApplicationsToolStripMenuItem\";\r\n            resources.ApplyResources(advancedApplicationsToolStripMenuItem, \"advancedApplicationsToolStripMenuItem\");\r\n            advancedApplicationsToolStripMenuItem.Click += advancedApplicationsToolStripMenuItem_Click;\r\n            // \r\n            // basicApplicationsToolStripMenuItem\r\n            // \r\n            basicApplicationsToolStripMenuItem.Name = \"basicApplicationsToolStripMenuItem\";\r\n            resources.ApplyResources(basicApplicationsToolStripMenuItem, \"basicApplicationsToolStripMenuItem\");\r\n            basicApplicationsToolStripMenuItem.Click += basicApplicationsToolStripMenuItem_Click;\r\n            // \r\n            // systemComponentsToolStripMenuItem\r\n            // \r\n            systemComponentsToolStripMenuItem.Name = \"systemComponentsToolStripMenuItem\";\r\n            resources.ApplyResources(systemComponentsToolStripMenuItem, \"systemComponentsToolStripMenuItem\");\r\n            systemComponentsToolStripMenuItem.Click += systemComponentsToolStripMenuItem_Click;\r\n            // \r\n            // everythingToolStripMenuItem\r\n            // \r\n            everythingToolStripMenuItem.Name = \"everythingToolStripMenuItem\";\r\n            resources.ApplyResources(everythingToolStripMenuItem, \"everythingToolStripMenuItem\");\r\n            everythingToolStripMenuItem.Click += everythingToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator20\r\n            // \r\n            toolStripSeparator20.Name = \"toolStripSeparator20\";\r\n            resources.ApplyResources(toolStripSeparator20, \"toolStripSeparator20\");\r\n            // \r\n            // automaticallyStartedToolStripMenuItem\r\n            // \r\n            automaticallyStartedToolStripMenuItem.Image = Properties.Resources.timer;\r\n            automaticallyStartedToolStripMenuItem.Name = \"automaticallyStartedToolStripMenuItem\";\r\n            resources.ApplyResources(automaticallyStartedToolStripMenuItem, \"automaticallyStartedToolStripMenuItem\");\r\n            automaticallyStartedToolStripMenuItem.Click += automaticallyStartedToolStripMenuItem_Click;\r\n            // \r\n            // onlyWebBrowsersToolStripMenuItem\r\n            // \r\n            onlyWebBrowsersToolStripMenuItem.Name = \"onlyWebBrowsersToolStripMenuItem\";\r\n            resources.ApplyResources(onlyWebBrowsersToolStripMenuItem, \"onlyWebBrowsersToolStripMenuItem\");\r\n            onlyWebBrowsersToolStripMenuItem.Click += onlyWebBrowsersToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator31\r\n            // \r\n            toolStripSeparator31.Name = \"toolStripSeparator31\";\r\n            resources.ApplyResources(toolStripSeparator31, \"toolStripSeparator31\");\r\n            // \r\n            // viewTweaksToolStripMenuItem\r\n            // \r\n            viewTweaksToolStripMenuItem.Name = \"viewTweaksToolStripMenuItem\";\r\n            resources.ApplyResources(viewTweaksToolStripMenuItem, \"viewTweaksToolStripMenuItem\");\r\n            viewTweaksToolStripMenuItem.Click += viewTweaksToolStripMenuItem_Click;\r\n            // \r\n            // viewUnregisteredToolStripMenuItem\r\n            // \r\n            viewUnregisteredToolStripMenuItem.Name = \"viewUnregisteredToolStripMenuItem\";\r\n            resources.ApplyResources(viewUnregisteredToolStripMenuItem, \"viewUnregisteredToolStripMenuItem\");\r\n            viewUnregisteredToolStripMenuItem.Click += viewUnregisteredToolStripMenuItem_Click;\r\n            // \r\n            // viewUpdatesToolStripMenuItem\r\n            // \r\n            viewUpdatesToolStripMenuItem.Name = \"viewUpdatesToolStripMenuItem\";\r\n            resources.ApplyResources(viewUpdatesToolStripMenuItem, \"viewUpdatesToolStripMenuItem\");\r\n            viewUpdatesToolStripMenuItem.Click += viewUpdatesToolStripMenuItem_Click;\r\n            // \r\n            // viewWindowsFeaturesToolStripMenuItem\r\n            // \r\n            viewWindowsFeaturesToolStripMenuItem.Name = \"viewWindowsFeaturesToolStripMenuItem\";\r\n            resources.ApplyResources(viewWindowsFeaturesToolStripMenuItem, \"viewWindowsFeaturesToolStripMenuItem\");\r\n            viewWindowsFeaturesToolStripMenuItem.Click += viewWindowsFeaturesToolStripMenuItem_Click;\r\n            // \r\n            // viewWindowsStoreAppsToolStripMenuItem\r\n            // \r\n            viewWindowsStoreAppsToolStripMenuItem.Name = \"viewWindowsStoreAppsToolStripMenuItem\";\r\n            resources.ApplyResources(viewWindowsStoreAppsToolStripMenuItem, \"viewWindowsStoreAppsToolStripMenuItem\");\r\n            viewWindowsStoreAppsToolStripMenuItem.Click += viewWindowsStoreAppsToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator28\r\n            // \r\n            toolStripSeparator28.Name = \"toolStripSeparator28\";\r\n            resources.ApplyResources(toolStripSeparator28, \"toolStripSeparator28\");\r\n            // \r\n            // searchToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(searchToolStripMenuItem, \"searchToolStripMenuItem\");\r\n            searchToolStripMenuItem.Name = \"searchToolStripMenuItem\";\r\n            searchToolStripMenuItem.Click += searchToolStripMenuItem_Click;\r\n            // \r\n            // basicOperationsToolStripMenuItem\r\n            // \r\n            basicOperationsToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { uninstallToolStripMenuItem, quietUninstallToolStripMenuItem, modifyToolStripMenuItem, toolStripSeparator2, toolStripMenuItem8, toolStripMenuItem1, toolStripMenuItem14, onlineSearchToolStripMenuItem, rateToolStripMenuItem1, toolStripSeparator15, propertiesToolStripMenuItem });\r\n            resources.ApplyResources(basicOperationsToolStripMenuItem, \"basicOperationsToolStripMenuItem\");\r\n            basicOperationsToolStripMenuItem.Name = \"basicOperationsToolStripMenuItem\";\r\n            basicOperationsToolStripMenuItem.DropDownOpening += basicOperationsToolStripMenuItem_DropDownOpening;\r\n            // \r\n            // uninstallToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(uninstallToolStripMenuItem, \"uninstallToolStripMenuItem\");\r\n            uninstallToolStripMenuItem.Name = \"uninstallToolStripMenuItem\";\r\n            uninstallToolStripMenuItem.Click += RunLoudUninstall;\r\n            // \r\n            // quietUninstallToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(quietUninstallToolStripMenuItem, \"quietUninstallToolStripMenuItem\");\r\n            quietUninstallToolStripMenuItem.Name = \"quietUninstallToolStripMenuItem\";\r\n            quietUninstallToolStripMenuItem.Click += RunQuietUninstall;\r\n            // \r\n            // modifyToolStripMenuItem\r\n            // \r\n            modifyToolStripMenuItem.Image = Properties.Resources.edit_box;\r\n            modifyToolStripMenuItem.Name = \"modifyToolStripMenuItem\";\r\n            resources.ApplyResources(modifyToolStripMenuItem, \"modifyToolStripMenuItem\");\r\n            modifyToolStripMenuItem.Click += modifyToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator2\r\n            // \r\n            toolStripSeparator2.Name = \"toolStripSeparator2\";\r\n            resources.ApplyResources(toolStripSeparator2, \"toolStripSeparator2\");\r\n            // \r\n            // toolStripMenuItem8\r\n            // \r\n            toolStripMenuItem8.DropDownItems.AddRange(new ToolStripItem[] { advancedClipCopyToolStripMenuItem, toolStripSeparator11, copyFullInformationToolStripMenuItem, toolStripMenuItem10, toolStripMenuItem11, toolStripMenuItem12, toolStripMenuItem13 });\r\n            resources.ApplyResources(toolStripMenuItem8, \"toolStripMenuItem8\");\r\n            toolStripMenuItem8.Name = \"toolStripMenuItem8\";\r\n            // \r\n            // advancedClipCopyToolStripMenuItem\r\n            // \r\n            advancedClipCopyToolStripMenuItem.Name = \"advancedClipCopyToolStripMenuItem\";\r\n            resources.ApplyResources(advancedClipCopyToolStripMenuItem, \"advancedClipCopyToolStripMenuItem\");\r\n            advancedClipCopyToolStripMenuItem.Click += OpenAdvancedClipboardCopy;\r\n            // \r\n            // toolStripSeparator11\r\n            // \r\n            toolStripSeparator11.Name = \"toolStripSeparator11\";\r\n            resources.ApplyResources(toolStripSeparator11, \"toolStripSeparator11\");\r\n            // \r\n            // copyFullInformationToolStripMenuItem\r\n            // \r\n            copyFullInformationToolStripMenuItem.Name = \"copyFullInformationToolStripMenuItem\";\r\n            resources.ApplyResources(copyFullInformationToolStripMenuItem, \"copyFullInformationToolStripMenuItem\");\r\n            copyFullInformationToolStripMenuItem.Click += ClipboardCopyFullInformation;\r\n            // \r\n            // toolStripMenuItem10\r\n            // \r\n            toolStripMenuItem10.Name = \"toolStripMenuItem10\";\r\n            resources.ApplyResources(toolStripMenuItem10, \"toolStripMenuItem10\");\r\n            toolStripMenuItem10.Click += ClipboardCopyProgramName;\r\n            // \r\n            // toolStripMenuItem11\r\n            // \r\n            toolStripMenuItem11.Name = \"toolStripMenuItem11\";\r\n            resources.ApplyResources(toolStripMenuItem11, \"toolStripMenuItem11\");\r\n            toolStripMenuItem11.Click += ClipboardCopyGuids;\r\n            // \r\n            // toolStripMenuItem12\r\n            // \r\n            toolStripMenuItem12.Name = \"toolStripMenuItem12\";\r\n            resources.ApplyResources(toolStripMenuItem12, \"toolStripMenuItem12\");\r\n            toolStripMenuItem12.Click += ClipboardCopyRegistryPath;\r\n            // \r\n            // toolStripMenuItem13\r\n            // \r\n            toolStripMenuItem13.Name = \"toolStripMenuItem13\";\r\n            resources.ApplyResources(toolStripMenuItem13, \"toolStripMenuItem13\");\r\n            toolStripMenuItem13.Click += ClipboardCopyUninstallString;\r\n            // \r\n            // toolStripMenuItem1\r\n            // \r\n            toolStripMenuItem1.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem5, toolStripMenuItem6, toolStripMenuItem7 });\r\n            resources.ApplyResources(toolStripMenuItem1, \"toolStripMenuItem1\");\r\n            toolStripMenuItem1.Name = \"toolStripMenuItem1\";\r\n            // \r\n            // toolStripMenuItem5\r\n            // \r\n            toolStripMenuItem5.Name = \"toolStripMenuItem5\";\r\n            resources.ApplyResources(toolStripMenuItem5, \"toolStripMenuItem5\");\r\n            toolStripMenuItem5.Click += OpenInstallLocation;\r\n            // \r\n            // toolStripMenuItem6\r\n            // \r\n            toolStripMenuItem6.Name = \"toolStripMenuItem6\";\r\n            resources.ApplyResources(toolStripMenuItem6, \"toolStripMenuItem6\");\r\n            toolStripMenuItem6.Click += OpenUninstallerLocation;\r\n            // \r\n            // toolStripMenuItem7\r\n            // \r\n            toolStripMenuItem7.Name = \"toolStripMenuItem7\";\r\n            resources.ApplyResources(toolStripMenuItem7, \"toolStripMenuItem7\");\r\n            toolStripMenuItem7.Click += OpenInstallationSource;\r\n            // \r\n            // toolStripMenuItem14\r\n            // \r\n            toolStripMenuItem14.Name = \"toolStripMenuItem14\";\r\n            resources.ApplyResources(toolStripMenuItem14, \"toolStripMenuItem14\");\r\n            toolStripMenuItem14.Click += OpenAssociatedWebPage;\r\n            // \r\n            // onlineSearchToolStripMenuItem\r\n            // \r\n            onlineSearchToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { googleToolStripMenuItem, alternativeToToolStripMenuItem, slantcoToolStripMenuItem1, toolStripSeparator27, toolStripMenuItem17, toolStripMenuItem18, toolStripMenuItem20, toolStripMenuItem19 });\r\n            resources.ApplyResources(onlineSearchToolStripMenuItem, \"onlineSearchToolStripMenuItem\");\r\n            onlineSearchToolStripMenuItem.Name = \"onlineSearchToolStripMenuItem\";\r\n            // \r\n            // googleToolStripMenuItem\r\n            // \r\n            googleToolStripMenuItem.Name = \"googleToolStripMenuItem\";\r\n            resources.ApplyResources(googleToolStripMenuItem, \"googleToolStripMenuItem\");\r\n            googleToolStripMenuItem.Click += googleToolStripMenuItem_Click;\r\n            // \r\n            // alternativeToToolStripMenuItem\r\n            // \r\n            alternativeToToolStripMenuItem.Name = \"alternativeToToolStripMenuItem\";\r\n            resources.ApplyResources(alternativeToToolStripMenuItem, \"alternativeToToolStripMenuItem\");\r\n            alternativeToToolStripMenuItem.Click += alternativeToToolStripMenuItem_Click;\r\n            // \r\n            // slantcoToolStripMenuItem1\r\n            // \r\n            slantcoToolStripMenuItem1.Name = \"slantcoToolStripMenuItem1\";\r\n            resources.ApplyResources(slantcoToolStripMenuItem1, \"slantcoToolStripMenuItem1\");\r\n            slantcoToolStripMenuItem1.Click += slantcoToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator27\r\n            // \r\n            toolStripSeparator27.Name = \"toolStripSeparator27\";\r\n            resources.ApplyResources(toolStripSeparator27, \"toolStripSeparator27\");\r\n            // \r\n            // toolStripMenuItem17\r\n            // \r\n            toolStripMenuItem17.Name = \"toolStripMenuItem17\";\r\n            resources.ApplyResources(toolStripMenuItem17, \"toolStripMenuItem17\");\r\n            toolStripMenuItem17.Click += fossHubcomToolStripMenuItem_Click;\r\n            // \r\n            // toolStripMenuItem18\r\n            // \r\n            toolStripMenuItem18.Name = \"toolStripMenuItem18\";\r\n            resources.ApplyResources(toolStripMenuItem18, \"toolStripMenuItem18\");\r\n            toolStripMenuItem18.Click += sourceForgecomToolStripMenuItem_Click;\r\n            // \r\n            // toolStripMenuItem20\r\n            // \r\n            toolStripMenuItem20.Name = \"toolStripMenuItem20\";\r\n            resources.ApplyResources(toolStripMenuItem20, \"toolStripMenuItem20\");\r\n            toolStripMenuItem20.Click += gitHubcomToolStripMenuItem_Click;\r\n            // \r\n            // toolStripMenuItem19\r\n            // \r\n            toolStripMenuItem19.Name = \"toolStripMenuItem19\";\r\n            resources.ApplyResources(toolStripMenuItem19, \"toolStripMenuItem19\");\r\n            toolStripMenuItem19.Click += gitHubcomToolStripMenuItem_Click;\r\n            // \r\n            // rateToolStripMenuItem1\r\n            // \r\n            rateToolStripMenuItem1.Image = Properties.Resources.star;\r\n            rateToolStripMenuItem1.Name = \"rateToolStripMenuItem1\";\r\n            resources.ApplyResources(rateToolStripMenuItem1, \"rateToolStripMenuItem1\");\r\n            rateToolStripMenuItem1.Click += rateToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator15\r\n            // \r\n            toolStripSeparator15.Name = \"toolStripSeparator15\";\r\n            resources.ApplyResources(toolStripSeparator15, \"toolStripSeparator15\");\r\n            // \r\n            // propertiesToolStripMenuItem\r\n            // \r\n            propertiesToolStripMenuItem.Image = Properties.Resources.properties;\r\n            propertiesToolStripMenuItem.Name = \"propertiesToolStripMenuItem\";\r\n            resources.ApplyResources(propertiesToolStripMenuItem, \"propertiesToolStripMenuItem\");\r\n            propertiesToolStripMenuItem.Click += OpenProperties;\r\n            // \r\n            // advancedOperationsToolStripMenuItem\r\n            // \r\n            advancedOperationsToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { manualUninstallToolStripMenuItem, msiUninstalltoolStripMenuItem, toolStripSeparator14, renameToolStripMenuItem, disableAutostartToolStripMenuItem, deleteToolStripMenuItem, toolStripSeparator5, createBackupToolStripMenuItem, openKeyInRegeditToolStripMenuItem, toolStripSeparator32, takeOwnershipToolStripMenuItem });\r\n            resources.ApplyResources(advancedOperationsToolStripMenuItem, \"advancedOperationsToolStripMenuItem\");\r\n            advancedOperationsToolStripMenuItem.Name = \"advancedOperationsToolStripMenuItem\";\r\n            advancedOperationsToolStripMenuItem.DropDownOpening += advancedOperationsToolStripMenuItem_DropDownOpening;\r\n            // \r\n            // manualUninstallToolStripMenuItem\r\n            // \r\n            manualUninstallToolStripMenuItem.Image = Properties.Resources.list;\r\n            manualUninstallToolStripMenuItem.Name = \"manualUninstallToolStripMenuItem\";\r\n            resources.ApplyResources(manualUninstallToolStripMenuItem, \"manualUninstallToolStripMenuItem\");\r\n            manualUninstallToolStripMenuItem.Click += RunAdvancedUninstall;\r\n            // \r\n            // msiUninstalltoolStripMenuItem\r\n            // \r\n            msiUninstalltoolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem2, toolStripMenuItem3, toolStripMenuItem4 });\r\n            msiUninstalltoolStripMenuItem.Name = \"msiUninstalltoolStripMenuItem\";\r\n            resources.ApplyResources(msiUninstalltoolStripMenuItem, \"msiUninstalltoolStripMenuItem\");\r\n            // \r\n            // toolStripMenuItem2\r\n            // \r\n            toolStripMenuItem2.Name = \"toolStripMenuItem2\";\r\n            resources.ApplyResources(toolStripMenuItem2, \"toolStripMenuItem2\");\r\n            toolStripMenuItem2.Click += msiInstallContextMenuStripItem_Click;\r\n            // \r\n            // toolStripMenuItem3\r\n            // \r\n            toolStripMenuItem3.Name = \"toolStripMenuItem3\";\r\n            resources.ApplyResources(toolStripMenuItem3, \"toolStripMenuItem3\");\r\n            toolStripMenuItem3.Click += msiUninstallContextMenuStripItem_Click;\r\n            // \r\n            // toolStripMenuItem4\r\n            // \r\n            toolStripMenuItem4.Name = \"toolStripMenuItem4\";\r\n            resources.ApplyResources(toolStripMenuItem4, \"toolStripMenuItem4\");\r\n            toolStripMenuItem4.Click += msiQuietUninstallContextMenuStripItem_Click;\r\n            // \r\n            // toolStripSeparator14\r\n            // \r\n            toolStripSeparator14.Name = \"toolStripSeparator14\";\r\n            resources.ApplyResources(toolStripSeparator14, \"toolStripSeparator14\");\r\n            // \r\n            // renameToolStripMenuItem\r\n            // \r\n            renameToolStripMenuItem.Name = \"renameToolStripMenuItem\";\r\n            resources.ApplyResources(renameToolStripMenuItem, \"renameToolStripMenuItem\");\r\n            renameToolStripMenuItem.Click += RenameEntries;\r\n            // \r\n            // disableAutostartToolStripMenuItem\r\n            // \r\n            disableAutostartToolStripMenuItem.Name = \"disableAutostartToolStripMenuItem\";\r\n            resources.ApplyResources(disableAutostartToolStripMenuItem, \"disableAutostartToolStripMenuItem\");\r\n            disableAutostartToolStripMenuItem.Click += disableAutostartToolStripMenuItem_Click;\r\n            // \r\n            // deleteToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(deleteToolStripMenuItem, \"deleteToolStripMenuItem\");\r\n            deleteToolStripMenuItem.Name = \"deleteToolStripMenuItem\";\r\n            deleteToolStripMenuItem.Click += DeleteRegistryEntries;\r\n            // \r\n            // toolStripSeparator5\r\n            // \r\n            toolStripSeparator5.Name = \"toolStripSeparator5\";\r\n            resources.ApplyResources(toolStripSeparator5, \"toolStripSeparator5\");\r\n            // \r\n            // createBackupToolStripMenuItem\r\n            // \r\n            createBackupToolStripMenuItem.Name = \"createBackupToolStripMenuItem\";\r\n            resources.ApplyResources(createBackupToolStripMenuItem, \"createBackupToolStripMenuItem\");\r\n            createBackupToolStripMenuItem.Click += CreateRegistryBackup;\r\n            // \r\n            // openKeyInRegeditToolStripMenuItem\r\n            // \r\n            openKeyInRegeditToolStripMenuItem.Name = \"openKeyInRegeditToolStripMenuItem\";\r\n            resources.ApplyResources(openKeyInRegeditToolStripMenuItem, \"openKeyInRegeditToolStripMenuItem\");\r\n            openKeyInRegeditToolStripMenuItem.Click += OpenInRegedit;\r\n            // \r\n            // toolStripSeparator32\r\n            // \r\n            toolStripSeparator32.Name = \"toolStripSeparator32\";\r\n            resources.ApplyResources(toolStripSeparator32, \"toolStripSeparator32\");\r\n            // \r\n            // takeOwnershipToolStripMenuItem\r\n            // \r\n            takeOwnershipToolStripMenuItem.Name = \"takeOwnershipToolStripMenuItem\";\r\n            resources.ApplyResources(takeOwnershipToolStripMenuItem, \"takeOwnershipToolStripMenuItem\");\r\n            // \r\n            // toolsToolStripMenuItem\r\n            // \r\n            toolsToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { openStartupManagerToolStripMenuItem, toolStripSeparator25, cleanUpProgramFilesToolStripMenuItem, targetMenuItem, uninstallFromDirectoryToolStripMenuItem, toolStripSeparator13, troubleshootUninstallProblemsToolStripMenuItem, startDiskCleanupToolStripMenuItem, tryToInstallNETV35ToolStripMenuItem, createRestorePointToolStripMenuItem, toolStripSeparator29, openProgramsAndFeaturesToolStripMenuItem, openSystemRestoreToolStripMenuItem, toolStripSeparator19, settingsToolStripMenuItem });\r\n            toolsToolStripMenuItem.Name = \"toolsToolStripMenuItem\";\r\n            resources.ApplyResources(toolsToolStripMenuItem, \"toolsToolStripMenuItem\");\r\n            toolsToolStripMenuItem.DropDownOpening += toolsToolStripMenuItem_DropDownOpening;\r\n            // \r\n            // openStartupManagerToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(openStartupManagerToolStripMenuItem, \"openStartupManagerToolStripMenuItem\");\r\n            openStartupManagerToolStripMenuItem.Name = \"openStartupManagerToolStripMenuItem\";\r\n            openStartupManagerToolStripMenuItem.Click += openStartupManagerToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator25\r\n            // \r\n            toolStripSeparator25.Name = \"toolStripSeparator25\";\r\n            resources.ApplyResources(toolStripSeparator25, \"toolStripSeparator25\");\r\n            // \r\n            // cleanUpProgramFilesToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(cleanUpProgramFilesToolStripMenuItem, \"cleanUpProgramFilesToolStripMenuItem\");\r\n            cleanUpProgramFilesToolStripMenuItem.Name = \"cleanUpProgramFilesToolStripMenuItem\";\r\n            cleanUpProgramFilesToolStripMenuItem.Click += cleanUpProgramFilesToolStripMenuItem_Click;\r\n            // \r\n            // targetMenuItem\r\n            // \r\n            targetMenuItem.Image = Properties.Resources.target;\r\n            resources.ApplyResources(targetMenuItem, \"targetMenuItem\");\r\n            targetMenuItem.Name = \"targetMenuItem\";\r\n            targetMenuItem.Click += OpenTargetWindow;\r\n            // \r\n            // uninstallFromDirectoryToolStripMenuItem\r\n            // \r\n            uninstallFromDirectoryToolStripMenuItem.Name = \"uninstallFromDirectoryToolStripMenuItem\";\r\n            resources.ApplyResources(uninstallFromDirectoryToolStripMenuItem, \"uninstallFromDirectoryToolStripMenuItem\");\r\n            uninstallFromDirectoryToolStripMenuItem.Click += uninstallFromDirectoryToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator13\r\n            // \r\n            toolStripSeparator13.Name = \"toolStripSeparator13\";\r\n            resources.ApplyResources(toolStripSeparator13, \"toolStripSeparator13\");\r\n            // \r\n            // troubleshootUninstallProblemsToolStripMenuItem\r\n            // \r\n            troubleshootUninstallProblemsToolStripMenuItem.Name = \"troubleshootUninstallProblemsToolStripMenuItem\";\r\n            resources.ApplyResources(troubleshootUninstallProblemsToolStripMenuItem, \"troubleshootUninstallProblemsToolStripMenuItem\");\r\n            troubleshootUninstallProblemsToolStripMenuItem.Click += troubleshootUninstallProblemsToolStripMenuItem_Click;\r\n            // \r\n            // startDiskCleanupToolStripMenuItem\r\n            // \r\n            startDiskCleanupToolStripMenuItem.Name = \"startDiskCleanupToolStripMenuItem\";\r\n            resources.ApplyResources(startDiskCleanupToolStripMenuItem, \"startDiskCleanupToolStripMenuItem\");\r\n            startDiskCleanupToolStripMenuItem.Click += startDiskCleanupToolStripMenuItem_Click;\r\n            // \r\n            // tryToInstallNETV35ToolStripMenuItem\r\n            // \r\n            tryToInstallNETV35ToolStripMenuItem.Name = \"tryToInstallNETV35ToolStripMenuItem\";\r\n            resources.ApplyResources(tryToInstallNETV35ToolStripMenuItem, \"tryToInstallNETV35ToolStripMenuItem\");\r\n            tryToInstallNETV35ToolStripMenuItem.Click += tryToInstallNETV35ToolStripMenuItem_Click;\r\n            // \r\n            // createRestorePointToolStripMenuItem\r\n            // \r\n            createRestorePointToolStripMenuItem.Name = \"createRestorePointToolStripMenuItem\";\r\n            resources.ApplyResources(createRestorePointToolStripMenuItem, \"createRestorePointToolStripMenuItem\");\r\n            createRestorePointToolStripMenuItem.Click += createRestorePointToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator29\r\n            // \r\n            toolStripSeparator29.Name = \"toolStripSeparator29\";\r\n            resources.ApplyResources(toolStripSeparator29, \"toolStripSeparator29\");\r\n            // \r\n            // openProgramsAndFeaturesToolStripMenuItem\r\n            // \r\n            openProgramsAndFeaturesToolStripMenuItem.Name = \"openProgramsAndFeaturesToolStripMenuItem\";\r\n            resources.ApplyResources(openProgramsAndFeaturesToolStripMenuItem, \"openProgramsAndFeaturesToolStripMenuItem\");\r\n            openProgramsAndFeaturesToolStripMenuItem.Click += openProgramsAndFeaturesToolStripMenuItem_Click;\r\n            // \r\n            // openSystemRestoreToolStripMenuItem\r\n            // \r\n            openSystemRestoreToolStripMenuItem.Name = \"openSystemRestoreToolStripMenuItem\";\r\n            resources.ApplyResources(openSystemRestoreToolStripMenuItem, \"openSystemRestoreToolStripMenuItem\");\r\n            openSystemRestoreToolStripMenuItem.Click += openSystemRestoreToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator19\r\n            // \r\n            toolStripSeparator19.Name = \"toolStripSeparator19\";\r\n            resources.ApplyResources(toolStripSeparator19, \"toolStripSeparator19\");\r\n            // \r\n            // settingsToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(settingsToolStripMenuItem, \"settingsToolStripMenuItem\");\r\n            settingsToolStripMenuItem.Name = \"settingsToolStripMenuItem\";\r\n            settingsToolStripMenuItem.Click += settingsToolStripMenuItem_Click;\r\n            // \r\n            // helpToolStripMenuItem\r\n            // \r\n            helpToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { openHelpToolStripMenuItem, startSetupWizardToolStripMenuItem, toolStripSeparator16, checkForUpdatesToolStripMenuItem, submitFeedbackToolStripMenuItem, toolStripSeparator18, resetSettingsToolStripMenuItem, uninstallBCUninstallToolstripMenuItem, toolStripSeparator17, aboutToolStripMenuItem });\r\n            helpToolStripMenuItem.Name = \"helpToolStripMenuItem\";\r\n            resources.ApplyResources(helpToolStripMenuItem, \"helpToolStripMenuItem\");\r\n            helpToolStripMenuItem.DropDownOpening += helpToolStripMenuItem_DropDownOpening;\r\n            // \r\n            // openHelpToolStripMenuItem\r\n            // \r\n            openHelpToolStripMenuItem.Image = Properties.Resources.information_circle;\r\n            openHelpToolStripMenuItem.Name = \"openHelpToolStripMenuItem\";\r\n            resources.ApplyResources(openHelpToolStripMenuItem, \"openHelpToolStripMenuItem\");\r\n            openHelpToolStripMenuItem.Click += openHelpToolStripMenuItem_Click;\r\n            // \r\n            // startSetupWizardToolStripMenuItem\r\n            // \r\n            startSetupWizardToolStripMenuItem.Name = \"startSetupWizardToolStripMenuItem\";\r\n            resources.ApplyResources(startSetupWizardToolStripMenuItem, \"startSetupWizardToolStripMenuItem\");\r\n            startSetupWizardToolStripMenuItem.Click += OnClickStartSetupWizard;\r\n            // \r\n            // toolStripSeparator16\r\n            // \r\n            toolStripSeparator16.Name = \"toolStripSeparator16\";\r\n            resources.ApplyResources(toolStripSeparator16, \"toolStripSeparator16\");\r\n            // \r\n            // checkForUpdatesToolStripMenuItem\r\n            // \r\n            checkForUpdatesToolStripMenuItem.Name = \"checkForUpdatesToolStripMenuItem\";\r\n            resources.ApplyResources(checkForUpdatesToolStripMenuItem, \"checkForUpdatesToolStripMenuItem\");\r\n            checkForUpdatesToolStripMenuItem.Click += checkForUpdatesToolStripMenuItem_Click;\r\n            // \r\n            // submitFeedbackToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(submitFeedbackToolStripMenuItem, \"submitFeedbackToolStripMenuItem\");\r\n            submitFeedbackToolStripMenuItem.Name = \"submitFeedbackToolStripMenuItem\";\r\n            submitFeedbackToolStripMenuItem.Click += OpenSubmitFeedbackWindow;\r\n            // \r\n            // toolStripSeparator18\r\n            // \r\n            toolStripSeparator18.Name = \"toolStripSeparator18\";\r\n            resources.ApplyResources(toolStripSeparator18, \"toolStripSeparator18\");\r\n            // \r\n            // resetSettingsToolStripMenuItem\r\n            // \r\n            resetSettingsToolStripMenuItem.Name = \"resetSettingsToolStripMenuItem\";\r\n            resources.ApplyResources(resetSettingsToolStripMenuItem, \"resetSettingsToolStripMenuItem\");\r\n            resetSettingsToolStripMenuItem.Click += ResetSettingsDialog;\r\n            // \r\n            // uninstallBCUninstallToolstripMenuItem\r\n            // \r\n            uninstallBCUninstallToolstripMenuItem.Name = \"uninstallBCUninstallToolstripMenuItem\";\r\n            resources.ApplyResources(uninstallBCUninstallToolstripMenuItem, \"uninstallBCUninstallToolstripMenuItem\");\r\n            uninstallBCUninstallToolstripMenuItem.Click += uninstallBCUninstallToolstripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator17\r\n            // \r\n            toolStripSeparator17.Name = \"toolStripSeparator17\";\r\n            resources.ApplyResources(toolStripSeparator17, \"toolStripSeparator17\");\r\n            // \r\n            // aboutToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(aboutToolStripMenuItem, \"aboutToolStripMenuItem\");\r\n            aboutToolStripMenuItem.Name = \"aboutToolStripMenuItem\";\r\n            aboutToolStripMenuItem.Click += aboutToolStripMenuItem_Click;\r\n            // \r\n            // debugToolStripMenuItem\r\n            // \r\n            debugToolStripMenuItem.Name = \"debugToolStripMenuItem\";\r\n            resources.ApplyResources(debugToolStripMenuItem, \"debugToolStripMenuItem\");\r\n            debugToolStripMenuItem.Click += OpenDebugWindow;\r\n            // \r\n            // createBackupFileDialog\r\n            // \r\n            createBackupFileDialog.DefaultExt = \"reg\";\r\n            createBackupFileDialog.FileName = \"New Uninstaller Backup\";\r\n            resources.ApplyResources(createBackupFileDialog, \"createBackupFileDialog\");\r\n            createBackupFileDialog.FileOk += createBackupFileDialog_FileOk;\r\n            // \r\n            // globalHotkeys1\r\n            // \r\n            globalHotkeys1.ContainerControl = this;\r\n            globalHotkeys1.StopWhenFormIsDisabled = true;\r\n            globalHotkeys1.SuppressKeyPresses = true;\r\n            // \r\n            // splashScreen1\r\n            // \r\n            splashScreen1.AutomaticallyClose = false;\r\n            splashScreen1.ContainerControl = this;\r\n            splashScreen1.SplashScreenImage = Properties.Resources._bcu_logo;\r\n            // \r\n            // usageTracker\r\n            // \r\n            usageTracker.ContainerControl = this;\r\n            // \r\n            // MainWindow\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = AutoScaleMode.Font;\r\n            Controls.Add(splitContainer1);\r\n            Controls.Add(settingsSidebarPanel);\r\n            Controls.Add(menuStrip);\r\n            KeyPreview = true;\r\n            Name = \"MainWindow\";\r\n            FormClosing += MainWindow_FormClosing;\r\n            FormClosed += MainWindow_FormClosed;\r\n            Shown += MainWindow_Shown;\r\n            splitContainer1.Panel1.ResumeLayout(false);\r\n            splitContainer1.Panel2.ResumeLayout(false);\r\n            splitContainer1.Panel2.PerformLayout();\r\n            ((ISupportInitialize)splitContainer1).EndInit();\r\n            splitContainer1.ResumeLayout(false);\r\n            splitContainerListAndMap.Panel1.ResumeLayout(false);\r\n            splitContainerListAndMap.Panel2.ResumeLayout(false);\r\n            ((ISupportInitialize)splitContainerListAndMap).EndInit();\r\n            splitContainerListAndMap.ResumeLayout(false);\r\n            listViewPanel.ResumeLayout(false);\r\n            ((ISupportInitialize)uninstallerObjectListView).EndInit();\r\n            toolStrip.ResumeLayout(false);\r\n            toolStrip.PerformLayout();\r\n            statusStrip1.ResumeLayout(false);\r\n            statusStrip1.PerformLayout();\r\n            settingsSidebarPanel.ResumeLayout(false);\r\n            settingsSidebarPanel.PerformLayout();\r\n            groupBox1.ResumeLayout(false);\r\n            groupBox1.PerformLayout();\r\n            uninstallListContextMenuStrip.ResumeLayout(false);\r\n            menuStrip.ResumeLayout(false);\r\n            menuStrip.PerformLayout();\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n        }\r\n\r\n        #endregion\r\n\r\n        private SplitContainer splitContainer1;\r\n        internal ObjectListView uninstallerObjectListView;\r\n        internal OLVColumn olvColumnDisplayName;\r\n        internal OLVColumn olvColumnPublisher;\r\n        internal OLVColumn olvColumnDisplayVersion;\r\n        internal OLVColumn olvColumnUninstallString;\r\n        internal OLVColumn olvColumnInstallDate;\r\n        internal OLVColumn olvColumnIs64;\r\n        internal OLVColumn olvColumnGuid;\r\n        internal OLVColumn olvColumnSize;\r\n        internal OLVColumn olvColumnInstallSource;\r\n        internal OLVColumn olvColumnInstallLocation;\r\n        internal OLVColumn olvColumnUninstallerKind;\r\n        internal OLVColumn olvColumnAbout;\r\n        internal OLVColumn olvColumnRegistryKeyName;\r\n        internal OLVColumn olvColumnSystemComponent;\r\n        internal OLVColumn olvColumnQuietUninstallString;\r\n        internal OLVColumn olvColumnProtected;\r\n        private SaveFileDialog exportDialog;\r\n        private ContextMenuStrip uninstallListContextMenuStrip;\r\n        private ToolStripMenuItem uninstallContextMenuStripItem;\r\n        private ToolStripMenuItem propertiesContextMenuStripItem;\r\n        private Panel settingsSidebarPanel;\r\n        private MenuStrip menuStrip;\r\n        private ToolStripMenuItem fileToolStripMenuItem;\r\n        private ToolStripMenuItem reloadUninstallersToolStripMenuItem;\r\n        private ToolStripMenuItem exportSelectedToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator1;\r\n        private ToolStripMenuItem exitToolStripMenuItem;\r\n        private ToolStripMenuItem viewToolStripMenuItem;\r\n        private ToolStripMenuItem displayToolbarToolStripMenuItem;\r\n        private ToolStripMenuItem displaySettingsToolStripMenuItem;\r\n        private ToolStripMenuItem basicOperationsToolStripMenuItem;\r\n        private ToolStripMenuItem quietUninstallToolStripMenuItem;\r\n        private ToolStripMenuItem propertiesToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator2;\r\n        private ToolStripMenuItem helpToolStripMenuItem;\r\n        private ToolStripMenuItem openHelpToolStripMenuItem;\r\n        private ToolStripMenuItem checkForUpdatesToolStripMenuItem;\r\n        private ToolStripMenuItem resetSettingsToolStripMenuItem;\r\n        private ToolStripMenuItem aboutToolStripMenuItem;\r\n        private ToolStrip toolStrip;\r\n        private ToolStripButton toolStripButton1;\r\n        private ToolStripButton toolStripButtonUninstall;\r\n        private ToolStripButton toolStripButtonProperties;\r\n        private Label label1;\r\n        private SaveFileDialog createBackupFileDialog;\r\n        private ToolStripMenuItem quietUninstallContextMenuStripItem;\r\n        private ToolStripSeparator toolStripSeparator8;\r\n        private ToolStripMenuItem copyToClipboardContextMenuStripItem;\r\n        private ToolStripMenuItem fullInformationCopyContextMenuStripItem;\r\n        private ToolStripSeparator toolStripSeparator9;\r\n        private ToolStripMenuItem programNameCopyContextMenuStripItem;\r\n        private ToolStripMenuItem gUIDProductCodeCopyContextMenuStripItem;\r\n        private ToolStripMenuItem fullRegistryPathCopyContextMenuStripItem;\r\n        private ToolStripMenuItem uninstallStringCopyContextMenuStripItem;\r\n        private ToolStripMenuItem deleteRegistryEntryContextMenuStripItem;\r\n        private ToolStripMenuItem renameContextMenuStripItem;\r\n        private ToolStripSeparator toolStripSeparator6;\r\n        private ToolStripMenuItem openInExplorerContextMenuStripItem;\r\n        private ToolStripMenuItem installLocationOpenInExplorerContextMenuStripItem;\r\n        private ToolStripMenuItem uninstallerLocationOpenInExplorerContextMenuStripItem;\r\n        private ToolStripMenuItem sourceLocationOpenInExplorerContextMenuStripItem;\r\n        private ToolStripMenuItem openWebPageContextMenuStripItem;\r\n        private ToolStripSeparator toolStripSeparator7;\r\n        private ToolStripButton toolStripButton2;\r\n        private ToolStripMenuItem uninstallUsingMsiExecContextMenuStripItem;\r\n        private ToolStripMenuItem msiInstallContextMenuStripItem;\r\n        private ToolStripMenuItem msiUninstallContextMenuStripItem;\r\n        private ToolStripMenuItem msiQuietUninstallContextMenuStripItem;\r\n        private ToolStripMenuItem uninstallToolStripMenuItem;\r\n        private ToolStripMenuItem useSystemThemeToolStripMenuItem;\r\n        private ToolStripMenuItem submitFeedbackToolStripMenuItem;\r\n        private ToolStripMenuItem loadUninstallerListToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator10;\r\n        private ToolStripMenuItem toolStripMenuItem8;\r\n        private ToolStripMenuItem copyFullInformationToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator11;\r\n        private ToolStripMenuItem toolStripMenuItem10;\r\n        private ToolStripMenuItem toolStripMenuItem11;\r\n        private ToolStripMenuItem toolStripMenuItem12;\r\n        private ToolStripMenuItem toolStripMenuItem13;\r\n        private ToolStripMenuItem toolStripMenuItem1;\r\n        private ToolStripMenuItem toolStripMenuItem5;\r\n        private ToolStripMenuItem toolStripMenuItem6;\r\n        private ToolStripMenuItem toolStripMenuItem7;\r\n        private ToolStripMenuItem toolStripMenuItem14;\r\n        private ToolStripMenuItem advancedOperationsToolStripMenuItem;\r\n        private ToolStripMenuItem deleteToolStripMenuItem;\r\n        private ToolStripMenuItem renameToolStripMenuItem;\r\n        private ToolStripMenuItem msiUninstalltoolStripMenuItem;\r\n        private ToolStripMenuItem toolStripMenuItem2;\r\n        private ToolStripMenuItem toolStripMenuItem3;\r\n        private ToolStripMenuItem toolStripMenuItem4;\r\n        private ToolStripSeparator toolStripSeparator5;\r\n        private ToolStripMenuItem openKeyInRegeditToolStripMenuItem;\r\n        private ToolStripMenuItem createBackupToolStripMenuItem;\r\n        private ToolStripMenuItem lookUpOnlineToolStripMenuItem;\r\n        private ToolStripMenuItem onlineSearchToolStripMenuItem;\r\n        private PropertiesSidebar propertiesSidebar;\r\n        private ToolStripMenuItem debugToolStripMenuItem;\r\n        private ToolStripMenuItem uninstallBCUninstallToolstripMenuItem;\r\n        private UsageTracker usageTracker;\r\n        private StatusStrip statusStrip1;\r\n        private ToolStripStatusLabel toolStripLabelStatus;\r\n        private ToolStripStatusLabel toolStripLabelSize;\r\n        private ToolStripStatusLabel toolStripLabelTotal;\r\n        private ToolStripMenuItem displayStatusbarToolStripMenuItem;\r\n        private ToolStripMenuItem toolsToolStripMenuItem;\r\n        private ToolStripMenuItem openProgramsAndFeaturesToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator13;\r\n        private ToolStripMenuItem manualUninstallToolStripMenuItem1;\r\n        private ToolStripMenuItem manualUninstallToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator14;\r\n        private ToolStripSeparator toolStripSeparator15;\r\n        private ToolStripSeparator toolStripSeparator12;\r\n        private ToolStripSeparator toolStripSeparator16;\r\n        private ToolStripSeparator toolStripSeparator17;\r\n        private ToolStripSeparator toolStripSeparator4;\r\n        private ToolStripMenuItem startSetupWizardToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator18;\r\n        private ToolStripSeparator toolStripSeparator19;\r\n        private ToolStripMenuItem settingsToolStripMenuItem;\r\n        private ToolStripMenuItem cleanUpProgramFilesToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator20;\r\n        private ToolStripMenuItem searchToolStripMenuItem;\r\n        internal Klocman.Subsystems.GlobalHotkeys globalHotkeys1;\r\n        private ToolStripMenuItem showColorLegendToolStripMenuItem;\r\n        private GroupBox groupBox1;\r\n        private ToolStripSeparator toolStripSeparator21;\r\n        private ToolStripButton toolStripButtonSelAll;\r\n        private ToolStripButton toolStripButtonSelInv;\r\n        private ToolStripButton toolStripButtonSelNone;\r\n        private ToolStripSeparator toolStripSeparator22;\r\n        private ToolStripMenuItem openStartupManagerToolStripMenuItem;\r\n        internal OLVColumn olvColumnStartup;\r\n        private Panel listViewPanel;\r\n        private ToolStripMenuItem disableAutostartToolStripMenuItem;\r\n        internal OLVColumn olvColumnRating;\r\n        private ToolStripMenuItem rateToolStripMenuItem;\r\n        private ToolStripMenuItem rateToolStripMenuItem1;\r\n        private ToolStripButton toolStripButtonTarget;\r\n        private ToolStripSeparator toolStripSeparator23;\r\n        private ToolStripMenuItem viewWindowsStoreAppsToolStripMenuItem;\r\n        internal UninstallTools.Controls.FilterEditor filterEditor1;\r\n        private Button buttonAdvFiltering;\r\n        private ToolStripSeparator toolStripSeparator24;\r\n        private ToolStripButton toolStripButton7;\r\n        private ToolStripButton toolStripButton8;\r\n        private AdvancedFilters advancedFilters1;\r\n        private ToolStripMenuItem advancedClipCopyToolStripMenuItem;\r\n        private ToolStripMenuItem toolStripMenuItem9;\r\n        private ToolStripMenuItem viewWindowsFeaturesToolStripMenuItem;\r\n        private ToolStripMenuItem uninstallFromDirectoryToolStripMenuItem;\r\n        private ToolStripMenuItem googleToolStripMenuItem;\r\n        private ToolStripMenuItem alternativeToToolStripMenuItem;\r\n        private ToolStripMenuItem toolStripMenuItem15;\r\n        private ToolStripMenuItem toolStripMenuItem16;\r\n        private ToolStripMenuItem openSystemRestoreToolStripMenuItem;\r\n        private Klocman.Forms.SplashScreen splashScreen1;\r\n        private ToolStripSeparator toolStripSeparator3;\r\n        private ToolStripMenuItem runToolStripMenuItem;\r\n        private ToolStripMenuItem viewUpdatesToolStripMenuItem;\r\n        private ToolStripMenuItem targetMenuItem;\r\n        private ToolStripSeparator toolStripSeparator25;\r\n        private ToolStripSeparator toolStripSeparator26;\r\n        private ToolStripMenuItem fossHubcomToolStripMenuItem;\r\n        private ToolStripMenuItem sourceForgecomToolStripMenuItem;\r\n        private ToolStripMenuItem fileHippocomToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator27;\r\n        private ToolStripMenuItem toolStripMenuItem17;\r\n        private ToolStripMenuItem toolStripMenuItem18;\r\n        private ToolStripMenuItem toolStripMenuItem19;\r\n        private ToolStripMenuItem gitHubcomToolStripMenuItem;\r\n        private ToolStripMenuItem toolStripMenuItem20;\r\n        private ToolStripButton toolStripButtonModify;\r\n        private ToolStripMenuItem modifyToolStripMenuItem;\r\n        private ToolStripMenuItem excludeToolStripMenuItem;\r\n        private ToolStripMenuItem includeToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparatorFiltering;\r\n        private SplitContainer splitContainerListAndMap;\r\n        private SimpleTreeMap.TreeMap treeMap1;\r\n        private ToolStripMenuItem showTreemapToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator28;\r\n        private ToolStripMenuItem viewUnregisteredToolStripMenuItem;\r\n        private ToolStripMenuItem tryToInstallNETV35ToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator29;\r\n        private ToolStripMenuItem startDiskCleanupToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator30;\r\n        private ToolStripMenuItem exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem;\r\n        private ToolStripMenuItem exportToABatchUninstallScriptToolStripMenuItem;\r\n        private ToolStripMenuItem troubleshootUninstallProblemsToolStripMenuItem;\r\n        private ToolStripMenuItem filteringToolStripMenuItem;\r\n        private ToolStripMenuItem basicApplicationsToolStripMenuItem;\r\n        private ToolStripMenuItem advancedApplicationsToolStripMenuItem;\r\n        private ToolStripMenuItem systemComponentsToolStripMenuItem;\r\n        private ToolStripMenuItem automaticallyStartedToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator31;\r\n        private ToolStripMenuItem everythingToolStripMenuItem;\r\n        private ToolStripMenuItem onlyWebBrowsersToolStripMenuItem;\r\n        private ToolStripMenuItem viewTweaksToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator32;\r\n        private ToolStripMenuItem takeOwnershipToolStripMenuItem;\r\n        private ToolStripMenuItem slantcoToolStripMenuItem;\r\n        private ToolStripMenuItem slantcoToolStripMenuItem1;\r\n        private ToolStripMenuItem createRestorePointToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator33;\r\n        private ToolStripMenuItem autosizeAllColumnsToolStripMenuItem;\r\n    }\r\n}\r\n\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>الاسم</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>الناشر</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>تصنيف المستخدم</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>الاصدار</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>تاريخ التثبيت</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>الحجم</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>البدء</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64 بت</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>امر الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>حول الرابط</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>مصدر التثبيت</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>موقع التثبيت</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>نوع غير مثبت</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>مكون النظام</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>حماية</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>مفتاح مكتب التسجيل</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>رمز المنتج</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>امر الغاء التثبيت بهدوء</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>اعاده تحميل التثبيت</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>تحديد الكل</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>الغاء تحديد الكل</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>عكس التحديد</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت حسب الاطار او الدليل او الملف...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت بهدوء</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>التعديل</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>الخصائص</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>الاعدادات</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>التعليمات</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>فلترة متقدمة</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>بحث</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت &amp;بهدوء</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت &amp;يدويا</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>(/I) &amp;تثبيت او تكوين  </value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value> (/X) &amp;الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>(/X /qb) &amp;الغاء التثبيت بهدوء</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>MsiExec&amp; الغاء التثبيت باستخدام ...</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>تشغيل...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>المتقدمة...</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;المعلومات الكاملة</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>اسم البرنامج</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>GUID/رمز المنتج</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>مسار مكتب التسجيل الكامل</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>الغاء تثبيت السلسلة</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;نسخ الى الحافظة...</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;حذف ادخال التسجيل</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;اعاده تسميه...</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;موقع التثبيت</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;موقع الغاء التثبيت </value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;موقع المصدر</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>فتح في&amp;المستكشف...</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>فتح &amp;صفحه ويب</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>جوجل</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo.net</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;بحث على الانترنت</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>معدل...</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;الخصائص</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>XML files|*.xml</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>تصدير خصائص الغاء التثبيت المحددة</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;تحديث المثبتات</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;افتح قائمه الغاء التثبيت...</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;اختيار التصدير...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>خ&amp;روج</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;ملف</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>اظهار توضيحات اللون</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>اظهار &amp;شريط الاداوات</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>اظهار شريط &amp;المعلومات</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>اظهار &amp;اعدادات الشريط الجانبي</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;استخدام موضوع النظام</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>عرض التحديثات</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>عرض تطبيقات مخزن وندوز</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>بحث...</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;عرض</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت &amp;بهدوء</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>تعديل</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>المتقدمة...</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;المعلومات الكاملة</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>اسم البرنامج</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>GUID/ رمز المنتج </value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>مسار التسجيل الكامل</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>الغاء تثبيت السلسلة</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>&amp;نسخ الى الحافظة...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>&amp;موقع التثبيت</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>&amp;موقع الغاء التثبيت </value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>&amp;موقع المصدر</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>فتح في &amp;المستكشف...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>فتح &amp;صفحه ويب</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>جوجل</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>حق النقض</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;بحث على الانترنت</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>معدل...</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>اظهار &amp;الخصائص</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;العمليات الاساسيه</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت &amp;يدويا</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>(/I)&amp;تثبيت او تكوين </value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>(/X)&amp;الغاء التثبيت  </value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>(/X /qb) الغاء تثبيت بهدوء</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>MsiExec الغاء التثبيت باستخدام </value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;اعاده تسميه...</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>تعطيل التشغيل التلقائي</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;حذف مفتاح مكتب التسجيل</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>انشاء &amp;نسخ احتياطي...</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;فتح المفتاح في مكتب التسجيل</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;العمليات المتقدمة</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>فتح اداره بدء التشغيل</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;تنظيف \"ملفات البرنامج\" المجلدات...</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت حسب الاطار او الدليل او الملف...</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت من الدليل...</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>\"فتح \"&amp;البرامج والميزات </value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>\"فتح \"استرداد النظام</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;الاعدادات</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;الاداوات</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>فتح &amp;التعليمات</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>بدء تشغيل معالج الاعداد</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>التحقق من وجود تحديثات</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>ارسال الملاحظات...</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>اعاده تعيين الاعدادات</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>الغاء تثبيت المثبت</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;حول</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;التعليمات</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>فتح نافذه &amp;التصحيح</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>ملفات مكتب التسجيل|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>انشاء نسخ احتياطي لمكتب التسجيل</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>حماقة  سائبة الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>استبعاد</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>تشمل</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>اظهار الشجرة &amp;الخريطة</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>عرض الغير مسجل</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>عرض ميزات وندوز</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>انشاء نقطه استعاده جديده</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing BrightIdeasSoftware;\r\nusing BulkCrapUninstaller.Functions;\r\nusing BulkCrapUninstaller.Functions.ApplicationList;\r\nusing BulkCrapUninstaller.Functions.Tools;\r\nusing BulkCrapUninstaller.Functions.Tracking;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Binding.Settings;\r\nusing Klocman.Events;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.IO;\r\nusing Klocman.Native;\r\nusing Klocman.Subsystems;\r\nusing Klocman.Tools;\r\nusing SimpleTreeMap;\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Diagnostics;\r\nusing System.Drawing;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing System.Threading;\r\nusing System.Windows.Forms;\r\nusing UninstallTools;\r\nusing UninstallTools.Dialogs;\r\nusing UninstallTools.Factory;\r\nusing UninstallTools.Lists;\r\nusing UninstallTools.Uninstaller;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    internal sealed partial class MainWindow : Form\r\n    {\r\n        private string MainTitleBarText { get; }\r\n\r\n        public static string CertificateCacheFilename { get; } = Path.Combine(Program.AssemblyLocation.FullName, \"CertCache.xml\");\r\n        public static CertificateCache CertificateCache { get; } = new(CertificateCacheFilename);\r\n\r\n        private readonly UninstallerListViewUpdater _listView;\r\n        private readonly SettingTools _setMan;\r\n        private readonly WindowStyleController _styleController;\r\n        private readonly AppUninstaller _appUninstaller;\r\n        private readonly UninstallerListConfigurator _uninstallerListConfigurator;\r\n\r\n        private readonly ListLegendWindow _listLegendWindow = new();\r\n        private DebugWindow _debugWindow;\r\n\r\n        private bool _previousListLegendState = true;\r\n        private bool _anyStoreApps;\r\n        private bool _anyWinFeatures;\r\n        private bool _anyOrphans;\r\n        private bool _anyProtected;\r\n        private bool _anySysComponents;\r\n        private bool _anyUpdates;\r\n        private bool _anyInvalid;\r\n        private bool _anyTweaks;\r\n\r\n        /// <summary>\r\n        ///     Set to false in the list view clicked event. Prevents firing of extra CellEditStarting events.\r\n        ///     Used to fix buggy ObjectListView.\r\n        /// </summary>\r\n        private bool _ignoreCellEdit;\r\n\r\n        private readonly UninstallerListPostProcesser _uninstallerListPostProcesser;\r\n\r\n        public MainWindow()\r\n        {\r\n            Opacity = 0;\r\n            Application.DoEvents();\r\n\r\n            InitializeComponent();\r\n\r\n            // Setup settings\r\n            _setMan = new SettingTools(Settings.Default.SettingBinder, this);\r\n            _setMan.LoadSettings();\r\n            BindControlsToSettings();\r\n\r\n            // Finish up setting controls and window, suspend after settings have loaded\r\n            SuspendLayout();\r\n            ToolStripManager.Renderer = new ToolStripProfessionalRenderer(new StandardSystemColorTable())\r\n            {\r\n                RoundedEdges = true\r\n            };\r\n\r\n            // Disable until the first list refresh finishes\r\n            LockApplication(true);\r\n\r\n            SetupBasicSettingBindings();\r\n\r\n            // Setup list view\r\n            _listView = new UninstallerListViewUpdater(this);\r\n\r\n            if (_setMan.Selected.Settings.CacheCertificates)\r\n                CertificateCache.LoadCertificateCache();\r\n            _uninstallerListPostProcesser = new UninstallerListPostProcesser(objects =>\r\n            {\r\n                uninstallerObjectListView.RefreshObjects(objects);\r\n            }, CertificateCache);\r\n\r\n            // Start the processing thread when user changes the test certificates option\r\n            _setMan.Selected.Subscribe(OnTestCertificatesChanged, x => x.AdvancedTestCertificates, this);\r\n\r\n            _uninstallerListConfigurator = new UninstallerListConfigurator(this);\r\n            _uninstallerListConfigurator.AfterFiltering += (x, y) => _uninstallerListPostProcesser.StartProcessingThread(_listView.FilteredUninstallers);\r\n            _uninstallerListConfigurator.AfterFiltering += RefreshStatusbarTotalLabel;\r\n\r\n            _appUninstaller = new AppUninstaller(_listView.InitiateListRefresh, LockApplication, SetVisible);\r\n\r\n            toolStripButtonSelAll.Click += _listView.SelectAllItems;\r\n            toolStripButtonSelNone.Click += _listView.DeselectAllItems;\r\n            toolStripButtonSelInv.Click += _listView.InvertSelectedItems;\r\n            _uninstallerListPostProcesser.UninstallerPostprocessingProgressUpdate += UpdateStatusbarOnPostprocessingUpdate;\r\n            _uninstallerListPostProcesser.UninstallerFileLock = _appUninstaller.PublicUninstallLock;\r\n            _listView.ListRefreshIsRunningChanged += listView_ListRefreshIsRunningChanged;\r\n\r\n            // Filter changed events\r\n            advancedFilters1.CurrentListChanged += RefreshSidebarVisibility;\r\n            advancedFilters1.CurrentListChanged += (sender, args) =>\r\n            {\r\n                _uninstallerListConfigurator.FilteringOverride = advancedFilters1.CurrentList;\r\n                _uninstallerListConfigurator.UpdateColumnFiltering(_listView.AllUninstallers.Any());\r\n            };\r\n            advancedFilters1.FiltersChanged += (sender, args) =>\r\n            {\r\n                if (_uninstallerListConfigurator.FilteringOverride != null)\r\n                    _uninstallerListConfigurator.UpdateColumnFiltering(_listView.AllUninstallers.Any());\r\n            };\r\n            advancedFilters1.CurrentListFileNameChanged += RefreshTitleBar;\r\n            advancedFilters1.UnsavedChangesChanged += RefreshTitleBar;\r\n            advancedFilters1.SelectedEntryGetter = () => _listView.SelectedUninstallers;\r\n\r\n            // Setup update manager, skip at first boot to let user change the setting\r\n            UpdateGrabber.Setup();\r\n            if (!_setMan.Selected.Settings.MiscFirstRun)\r\n            {\r\n                BackgroundSearchForUpdates();\r\n            }\r\n\r\n            // Setup the main window\r\n            Icon = Resources.Icon_Logo;\r\n            // This is a duplicate of the about window logic-it doesn't have overhead but should probably be refactored.\r\n            Assembly.GetExecutingAssembly().Modules.First().GetPEKind(out var pekind, out var ifmachine);\r\n            bool isProbablyARM64;\r\n            if (Enum.IsDefined<ImageFileMachine>(ifmachine))\r\n            {\r\n                isProbablyARM64 = false;\r\n            }\r\n            else // Work around .NET 6 not having WoA64 definitions in GetPEKind\r\n\r\n            {\r\n                isProbablyARM64 = true;\r\n            }\r\n            MainTitleBarText = Text.Append(\" v\", Program.AssemblyVersion.ToString(Program.AssemblyVersion.Build != 0 ? 3 : 2))\r\n                .AppendIf(!Program.IsInstalled, \" \", Localisable.StrIsPortable)\r\n                .AppendIf(ProcessTools.Is64BitProcess, \" \", Localisable.Str64Bit)\r\n                .AppendIf(isProbablyARM64, \" \", \"ARM\")\r\n                .AppendIf(Program.EnableDebug, \" \", Localisable.StrDebug);\r\n            Text = MainTitleBarText;\r\n\r\n            Console.WriteLine(MainTitleBarText);\r\n\r\n            _styleController = new WindowStyleController(this);\r\n\r\n            // Initialize the status bar\r\n            toolStripLabelStatus_TextChanged(this, EventArgs.Empty);\r\n\r\n            // Debug stuff\r\n            var isDebug = Program.EnableDebug;\r\n            debugToolStripMenuItem.Enabled = isDebug;\r\n            debugToolStripMenuItem.Visible = isDebug;\r\n            if (isDebug)\r\n                _setMan.Selected.Settings.AdvancedSimulate = true;\r\n\r\n            // Tracking\r\n            UsageManager.DataSender = new DatabaseStatSender(Settings.Default.MiscUserId);\r\n\r\n            // Misc\r\n            filterEditor1.ComparisonMethodChanged += SearchCriteriaChanged;\r\n\r\n            MessageBoxes.DefaultOwner = this;\r\n            LoadingDialog.DefaultOwner = this;\r\n            PremadeDialogs.DefaultOwner = this;\r\n            PremadeDialogs.SendErrorAction = NBug.Exceptions.Report;\r\n\r\n            SetupHotkeys();\r\n\r\n            treeMap1.ObjectNameGetter = o => ((ApplicationUninstallerEntry)o).DisplayName;\r\n            treeMap1.ObjectValueGetter = o => ((ApplicationUninstallerEntry)o).EstimatedSize.GetKbSize();\r\n            treeMap1.ObjectColorGetter = o => ApplicationListConstants.GetApplicationTreemapColor((ApplicationUninstallerEntry)o);\r\n\r\n            _uninstallerListPostProcesser.UninstallerPostprocessingProgressUpdate += UpdateTreemapOnPostprocessingUpdate;\r\n\r\n            _uninstallerListConfigurator.AfterFiltering += UpdateTreeMap;\r\n\r\n            uninstallerObjectListView.SelectionChanged +=\r\n                (sender, args) => treeMap1.SetSelectedObjects(uninstallerObjectListView.SelectedObjects.Cast<object>());\r\n\r\n            treeMap1.SliceClicked += OnTreeMapSliceClicked;\r\n            treeMap1.SliceRightClicked += OnTreeMapSliceRightClicked;\r\n            treeMap1.SliceHovered += OnTreeMapSliceHovered;\r\n\r\n            _setMan.Selected.BindControl(showTreemapToolStripMenuItem, settings => settings.ShowTreeMap, this);\r\n            _setMan.Selected.Subscribe((x, y) => splitContainerListAndMap.Panel2Collapsed = !y.NewValue, settings => settings.ShowTreeMap, this);\r\n\r\n            uninstallerObjectListView.ContextMenuStrip = uninstallListContextMenuStrip;\r\n        }\r\n\r\n        protected override void OnDpiChanged(DpiChangedEventArgs e)\r\n        {\r\n            base.OnDpiChanged(e);\r\n\r\n            try\r\n            {\r\n                var scaleChange = e.DeviceDpiNew / (double)e.DeviceDpiOld;\r\n\r\n                if (toolStripLabelSize != null)\r\n                    toolStripLabelSize.Width = (int)Math.Round(toolStripLabelSize.Width * scaleChange);\r\n                if (toolStripLabelTotal != null)\r\n                    toolStripLabelTotal.Width = (int)Math.Round(toolStripLabelTotal.Width * scaleChange);\r\n            }\r\n            catch (SystemException exception)\r\n            {\r\n                Console.WriteLine(exception);\r\n            }\r\n        }\r\n\r\n        protected override void OnFormClosed(FormClosedEventArgs e)\r\n        {\r\n            try\r\n            {\r\n                new Thread(UsageTrackerSendData).Start();\r\n\r\n                DisposeListPostProcessor(this, e);\r\n                _listLegendWindow?.Dispose();\r\n                _uninstallerListConfigurator?.Dispose();\r\n                _debugWindow?.Dispose();\r\n                _uninstallerListPostProcesser?.Dispose();\r\n            }\r\n            catch (Exception exception)\r\n            {\r\n                // Eat non-critical exceptions to let the app close in peace\r\n                Console.WriteLine(exception);\r\n            }\r\n\r\n            base.OnFormClosed(e);\r\n        }\r\n\r\n        private void OnTreeMapSliceHovered(object sender, TreeMap.SliceEventArgs args)\r\n        {\r\n            toolStripLabelStatus.Text = args.Rectangle.Slice.ToElementNames();\r\n            toolStripLabelSize.Text = FileSize.SumFileSizes(args.Objects.Cast<ApplicationUninstallerEntry>().Select(x => x.EstimatedSize)).ToString();\r\n        }\r\n\r\n        private void OnTreeMapSliceRightClicked(object sender, TreeMap.SliceClickedEventArgs args)\r\n        {\r\n            if (args.AddToSelection || !uninstallerObjectListView.SelectedObjects.Contains(args.Objects.FirstOrDefault()))\r\n                OnTreeMapSliceClicked(sender, args);\r\n            uninstallListContextMenuStrip.Show(MousePosition);\r\n        }\r\n\r\n        private void SetupBasicSettingBindings()\r\n        {\r\n            _setMan.Selected.Subscribe((x, y) =>\r\n            {\r\n                var paths = y.NewValue.SplitNewlines(StringSplitOptions.RemoveEmptyEntries);\r\n                var trimmed = paths.Select(path => path.Trim().Trim('\"').Trim()).ToArray();\r\n                UninstallToolsGlobalConfig.CustomProgramFiles = trimmed;\r\n            }, x => x.FoldersCustomProgramDirs, this);\r\n\r\n            _setMan.Selected.Subscribe((x, y) => _listView.RefreshList(), x => x.AdvancedHighlightSpecial, this);\r\n\r\n            _setMan.Selected.Subscribe(OnApplicationListVisibleItemsChanged, x => x.AdvancedTestCertificates, this);\r\n            _setMan.Selected.Subscribe(OnApplicationListVisibleItemsChanged, x => x.AdvancedTestInvalid, this);\r\n            _setMan.Selected.Subscribe(OnApplicationListVisibleItemsChanged, x => x.AdvancedHighlightSpecial, this);\r\n            _setMan.Selected.Subscribe(OnApplicationListVisibleItemsChanged, x => x.FilterShowStoreApps, this);\r\n            _setMan.Selected.Subscribe(OnApplicationListVisibleItemsChanged, x => x.FilterShowWinFeatures, this);\r\n            _setMan.Selected.Subscribe(OnApplicationListVisibleItemsChanged, x => x.AdvancedDisplayOrphans, this);\r\n\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.ScanSteam = y.NewValue, x => x.ScanSteam, this);\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.ScanStoreApps = y.NewValue, x => x.ScanStoreApps, this);\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.ScanWinFeatures = y.NewValue, x => x.ScanWinFeatures, this);\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.ScanWinUpdates = y.NewValue, x => x.ScanWinUpdates, this);\r\n\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.ScanDrives = y.NewValue, x => x.ScanDrives, this);\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.ScanRegistry = y.NewValue, x => x.ScanRegistry, this);\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.ScanPreDefined = y.NewValue, x => x.ScanPreDefined, this);\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.ScanChocolatey = y.NewValue, x => x.ScanChocolatey, this);\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.ScanOculus = y.NewValue, x => x.ScanOculus, this);\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.ScanScoop = y.NewValue, x => x.ScanScoop, this);\r\n\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.AutoDetectCustomProgramFiles = y.NewValue, x => x.FoldersAutoDetect, this);\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.AutoDetectScanRemovable = y.NewValue, x => x.FoldersScanRemovable, this);\r\n\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.QuietAutomatization = y.NewValue, x => x.QuietAutomatization, this);\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.QuietAutomatizationKillStuck = y.NewValue, x => x.QuietAutomatizationKillStuck, this);\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.UseQuietUninstallDaemon = y.NewValue, x => x.QuietUseDaemon, this);\r\n\r\n            _setMan.Selected.Subscribe((x, y) => UninstallToolsGlobalConfig.EnableAppInfoCache = y.NewValue, x => x.CacheAppInfo, this);\r\n\r\n            _setMan.Selected.Subscribe((o, args) => _listView.RefreshList(), x => x.MiscColorblind, this);\r\n        }\r\n\r\n        private void UpdateTreemapOnPostprocessingUpdate(object x, CountingUpdateEventArgs y)\r\n        {\r\n            var update = y.Value == y.Maximum || (y.Value - 1) % 100 == 0;\r\n\r\n            if (update)\r\n                this.SafeInvoke(() => UpdateTreeMap(x, y));\r\n        }\r\n\r\n        private void UpdateStatusbarOnPostprocessingUpdate(object x, CountingUpdateEventArgs y)\r\n        {\r\n            string result = null;\r\n\r\n            if (y.Value == y.Maximum)\r\n                result = string.Empty;\r\n            else if (y.Maximum % 15 == 0)\r\n            {\r\n                // Can crash on some locales even though format string is correct\r\n                try { result = string.Format(CultureInfo.CurrentCulture, Localisable.MainWindow_Statusbar_ProcessingUninstallers, y.Maximum); }\r\n                catch (FormatException ex) { Console.WriteLine(ex); }\r\n            }\r\n\r\n            if (result != null)\r\n                this.SafeInvoke(() => toolStripLabelStatus.Text = result);\r\n        }\r\n\r\n        private void DisposeListPostProcessor(object x, FormClosedEventArgs y)\r\n        {\r\n            try\r\n            {\r\n                if (_setMan.Selected.Settings.CacheCertificates)\r\n                    CertificateCache.SaveCertificateCache();\r\n                else\r\n                    CertificateCache.ClearChache();\r\n\r\n                if (!_setMan.Selected.Settings.CacheAppInfo)\r\n                    File.Delete(UninstallToolsGlobalConfig.AppInfoCachePath);\r\n            }\r\n            catch (SystemException e)\r\n            {\r\n                Console.WriteLine(@\"Failed to delete cache: \" + e);\r\n            }\r\n\r\n            _uninstallerListPostProcesser.Dispose();\r\n        }\r\n\r\n        private void OnTestCertificatesChanged(object x, SettingChangedEventArgs<bool> y)\r\n        {\r\n            if (!_listView.FirstRefreshCompleted)\r\n                return;\r\n            if (y.NewValue) _uninstallerListPostProcesser.StartProcessingThread(_listView.FilteredUninstallers);\r\n            else\r\n            {\r\n                _uninstallerListPostProcesser.StopProcessingThread();\r\n\r\n                SafeRefreshObjects(_listView.AllUninstallers.Where(u => u.IsCertificateValid(true).HasValue));\r\n            }\r\n        }\r\n\r\n        private void SafeRefreshObjects(IEnumerable<ApplicationUninstallerEntry> itemsToUpdate)\r\n        {\r\n            if (!_listView.CheckIsAppDisposed())\r\n            {\r\n                uninstallerObjectListView.SuspendLayout();\r\n                uninstallerObjectListView.RefreshObjects(itemsToUpdate.ToList());\r\n                uninstallerObjectListView.ResumeLayout();\r\n            }\r\n        }\r\n\r\n        private void OnTreeMapSliceClicked(object sender, TreeMap.SliceClickedEventArgs args)\r\n        {\r\n            var list = args.Objects.ToList();\r\n\r\n            if (args.AddToSelection)\r\n                list.AddRange(uninstallerObjectListView.SelectedObjects.Cast<object>());\r\n\r\n            uninstallerObjectListView.SelectObjects(list);\r\n\r\n            uninstallerObjectListView.EnsureModelVisible(list.FirstOrDefault());\r\n            uninstallerObjectListView.Focus();\r\n        }\r\n\r\n        private void UpdateTreeMap(object sender, EventArgs args)\r\n        {\r\n            treeMap1.Populate(_listView.FilteredUninstallers);\r\n        }\r\n\r\n        private void OnApplicationListVisibleItemsChanged(object sender, EventArgs e)\r\n        {\r\n            UpdateListView();\r\n        }\r\n\r\n        private void UpdateListView()\r\n        {\r\n            var force = advancedFilters1.CurrentList != null;\r\n            _listLegendWindow.ListLegend.CertificatesEnabled = force || _setMan.Selected.Settings.AdvancedTestCertificates;\r\n            _listLegendWindow.ListLegend.InvalidEnabled = force || _setMan.Selected.Settings.AdvancedTestInvalid && _anyInvalid;\r\n            _listLegendWindow.ListLegend.StoreAppEnabled = force || _setMan.Selected.Settings.FilterShowStoreApps && _anyStoreApps && _setMan.Selected.Settings.AdvancedHighlightSpecial;\r\n            _listLegendWindow.ListLegend.OrphanedEnabled = force || _setMan.Selected.Settings.AdvancedDisplayOrphans && _anyOrphans && _setMan.Selected.Settings.AdvancedHighlightSpecial;\r\n            _listLegendWindow.ListLegend.WinFeatureEnabled = force || _setMan.Selected.Settings.FilterShowWinFeatures && _anyWinFeatures && _setMan.Selected.Settings.AdvancedHighlightSpecial;\r\n            _listLegendWindow.UpdatePosition(uninstallerObjectListView);\r\n        }\r\n\r\n        private void RefreshTitleBar(object sender, EventArgs e)\r\n        {\r\n            var result = MainTitleBarText;\r\n            if (!string.IsNullOrEmpty(advancedFilters1.CurrentListFileName) || advancedFilters1.UnsavedChanges)\r\n            {\r\n                var changedDot = advancedFilters1.UnsavedChanges ? \"*\" : string.Empty;\r\n                result = string.Format(CultureInfo.CurrentCulture, \"{0} [{1}{2}]\",\r\n                    result, advancedFilters1.CurrentListFileName ?? string.Empty, changedDot);\r\n            }\r\n            Text = result;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing)\r\n            {\r\n                try\r\n                {\r\n                    components?.Dispose();\r\n                }\r\n                catch (NullReferenceException)\r\n                {\r\n                    // ObjectListView sometimes throws it at exit\r\n                }\r\n\r\n                _listView?.Dispose();\r\n            }\r\n            try { base.Dispose(disposing); }\r\n            catch (InvalidOperationException) { }\r\n        }\r\n\r\n        private void SearchCriteriaChanged(object sender, EventArgs e)\r\n        {\r\n            _uninstallerListConfigurator.UpdateColumnFiltering(_listView.AllUninstallers.Any());\r\n        }\r\n\r\n        public void LockApplication(bool value)\r\n        {\r\n            this.SafeInvoke(() =>\r\n            {\r\n                UseWaitCursor = value;\r\n\r\n                foreach (Control control in Controls)\r\n                    control.Enabled = !value;\r\n\r\n                Refresh();\r\n            });\r\n        }\r\n\r\n        private void SetVisible(bool val)\r\n        {\r\n            this.SafeInvoke(() =>\r\n            {\r\n                Visible = val;\r\n                if (_listLegendWindow != null)\r\n                {\r\n                    if (val)\r\n                    {\r\n                        _setMan.Selected.Settings.UninstallerListShowLegend = _previousListLegendState;\r\n                        //_listLegendWindow.Visible = _previousListLegendState;\r\n                    }\r\n                    else\r\n                    {\r\n                        _previousListLegendState = _setMan.Selected.Settings.UninstallerListShowLegend;\r\n                        _listLegendWindow.Visible = false;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n\r\n        internal static void OpenUrls(IEnumerable<Uri> urls)\r\n        {\r\n            if (WindowsTools.IsNetworkAvailable())\r\n            {\r\n                var urlList = urls as IList<Uri> ?? urls.ToList();\r\n                if (MessageBoxes.OpenUrlsMessageBox(urlList.Count))\r\n                {\r\n                    try\r\n                    {\r\n                        urlList.ForEach(x => Process.Start(new ProcessStartInfo(x.AbsoluteUri) { UseShellExecute = true }));\r\n                    }\r\n                    catch (Exception e)\r\n                    {\r\n                        MessageBoxes.OpenUrlError(e);\r\n                    }\r\n                }\r\n            }\r\n            else\r\n                MessageBoxes.NoNetworkConnected();\r\n        }\r\n\r\n        private void aboutToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            using (var abox = new AboutBox())\r\n            {\r\n                abox.ShowDialog();\r\n            }\r\n        }\r\n\r\n        private void advancedOperationsToolStripMenuItem_DropDownOpening(object sender, EventArgs e)\r\n        {\r\n            var selectionCount = _listView.SelectedUninstallerCount;\r\n            openKeyInRegeditToolStripMenuItem.Enabled = selectionCount == 1;\r\n            deleteToolStripMenuItem.Enabled = selectionCount > 0;\r\n            createBackupToolStripMenuItem.Enabled = selectionCount > 0;\r\n            msiUninstalltoolStripMenuItem.Enabled = selectionCount == 1;\r\n\r\n            var autostart = _listView.SelectedUninstallers.Any(\r\n                u => u.StartupEntries != null && u.StartupEntries.Any(se => !se.Disabled));\r\n            disableAutostartToolStripMenuItem.Enabled = autostart;\r\n\r\n            // Take ownership list\r\n            var ownershipList = takeOwnershipToolStripMenuItem.DropDownItems.Cast<ToolStripItem>().ToList();\r\n            takeOwnershipToolStripMenuItem.DropDownItems.Clear();\r\n            foreach (var dropDownItem in ownershipList)\r\n                dropDownItem.Dispose();\r\n\r\n            takeOwnershipToolStripMenuItem.DropDownItems.AddRange(\r\n                _listView.SelectedUninstallers\r\n                .SelectMany(x => new[] { x.InstallLocation, x.UninstallerLocation })\r\n                .Where(dir => !string.IsNullOrEmpty(dir))\r\n                .DistinctBy(x => x.ToLowerInvariant())\r\n                .OrderBy(x => x)\r\n                .Select(dir => (ToolStripItem)new ToolStripMenuItem(dir, null, (obj, args) => TakeOwnership(dir)))\r\n                .ToArray());\r\n        }\r\n\r\n        private static void TakeOwnership(string directoryPath)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(\"cmd.exe\", $\"/c takeown /f \\\"{directoryPath}\\\" && icacls \\\"{directoryPath}\\\" /grant administrators:F && pause\");\r\n        }\r\n\r\n        private void BackgroundSearchForUpdates()\r\n        {\r\n            UpdateGrabber.AutoUpdate(() => _listView.FirstRefreshCompleted,\r\n                v => this.SafeInvoke(() => UpdateGrabber.AskAndBeginUpdate(v)));\r\n        }\r\n\r\n        private void basicOperationsToolStripMenuItem_DropDownOpening(object sender, EventArgs e)\r\n        {\r\n            var selectionCount = _listView.SelectedUninstallerCount;\r\n            uninstallToolStripMenuItem.Enabled = selectionCount > 0;\r\n            quietUninstallToolStripMenuItem.Enabled = selectionCount > 0;\r\n            propertiesToolStripMenuItem.Enabled = selectionCount > 0;\r\n            modifyToolStripMenuItem.Enabled = selectionCount == 1 &&\r\n                !string.IsNullOrEmpty(_listView.SelectedUninstallers.FirstOrDefault()?.ModifyPath);\r\n        }\r\n\r\n        private void BindControlsToSettings()\r\n        {\r\n            var settings = _setMan.Selected;\r\n\r\n            // Bind controls to their respective settings\r\n            settings.BindControl(displayToolbarToolStripMenuItem, x => x.ToolbarsShowToolbar, this);\r\n            settings.BindControl(displaySettingsToolStripMenuItem, x => x.ToolbarsShowSettings, this);\r\n            settings.BindControl(useSystemThemeToolStripMenuItem, x => x.WindowUseSystemTheme, this);\r\n            settings.BindControl(displayStatusbarToolStripMenuItem, x => x.ToolbarsShowStatusbar, this);\r\n\r\n            settings.BindControl(showColorLegendToolStripMenuItem, x => x.UninstallerListShowLegend, this);\r\n\r\n            settings.Subscribe(RefreshSidebarVisibility,\r\n                x => x.ToolbarsShowSettings, this);\r\n            settings.Subscribe((x, y) => toolStrip.Visible = y.NewValue,\r\n                x => x.ToolbarsShowToolbar, this);\r\n            settings.Subscribe((x, y) => _styleController.SetStyles(y.NewValue),\r\n                x => x.WindowUseSystemTheme, this);\r\n            settings.Subscribe((x, y) => statusStrip1.Visible = y.NewValue,\r\n                x => x.ToolbarsShowStatusbar, this);\r\n\r\n            settings.Subscribe((x, y) =>\r\n            {\r\n                if (_listView.CheckIsAppDisposed()) return;\r\n\r\n                try\r\n                {\r\n                    uninstallerObjectListView.CheckBoxes = y.NewValue;\r\n                }\r\n                catch (InvalidOperationException)\r\n                {\r\n                    // Setting CheckBoxes value throws this exception (even though it works fine).\r\n                }\r\n                _listView.RefreshList();\r\n                uninstallerObjectListView_SelectedChanged(this, EventArgs.Empty);\r\n            }, x => x.UninstallerListUseCheckboxes, this);\r\n\r\n            settings.Subscribe((x, y) =>\r\n            {\r\n                if (_listView.CheckIsAppDisposed()) return;\r\n\r\n                uninstallerObjectListView.ShowGroups = y.NewValue;\r\n                _listView.RefreshList();\r\n            }, x => x.UninstallerListUseGroups, this);\r\n\r\n            settings.Subscribe(RefreshList, x => x.FilterHideMicrosoft, this);\r\n            settings.Subscribe(RefreshList, x => x.FilterShowUpdates, this);\r\n            settings.Subscribe(RefreshList, x => x.FilterShowSystemComponents, this);\r\n            settings.Subscribe(RefreshList, x => x.FilterShowProtected, this);\r\n            settings.Subscribe(RefreshList, x => x.FilterShowStoreApps, this);\r\n            settings.Subscribe(RefreshList, x => x.FilterShowWinFeatures, this);\r\n            settings.Subscribe(RefreshList, x => x.FilterShowTweaks, this);\r\n\r\n            settings.Subscribe((sender, args) =>\r\n            {\r\n                if (_listView.CheckIsAppDisposed()) return;\r\n\r\n                olvColumnRating.IsVisible = args.NewValue;\r\n                uninstallerObjectListView.RebuildColumns();\r\n            }, x => x.MiscUserRatings, this);\r\n        }\r\n\r\n        private void RefreshSidebarVisibility(object sender, EventArgs e)\r\n        {\r\n            this.BeginControlUpdate();\r\n            SuspendLayout();\r\n            bool ulistOpen = IsAdvancedFilteringEnabled;\r\n            splitContainer1.Panel1Collapsed = !ulistOpen;\r\n            splitContainer1.Panel1.Enabled = ulistOpen;\r\n\r\n            var sidebarOpen = _setMan.Selected.Settings.ToolbarsShowSettings && !ulistOpen;\r\n            settingsSidebarPanel.Visible = sidebarOpen;\r\n            settingsSidebarPanel.Enabled = sidebarOpen;\r\n\r\n            OnApplicationListVisibleItemsChanged(sender, e);\r\n\r\n            ResumeLayout();\r\n            this.EndControlUpdate();\r\n        }\r\n\r\n        private bool IsAdvancedFilteringEnabled => advancedFilters1.CurrentList != null;\r\n\r\n        private void checkForUpdatesToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            if (WindowsTools.IsNetworkAvailable())\r\n            {\r\n                LockApplication(true);\r\n                UpdateGrabber.LookForUpdates();\r\n                LockApplication(false);\r\n            }\r\n            else\r\n                MessageBoxes.NoNetworkConnected();\r\n        }\r\n\r\n        private void cleanUpProgramFilesToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            _appUninstaller.SearchForAndRemoveProgramFilesJunk(_listView.AllUninstallers);\r\n        }\r\n\r\n        private void ClipboardCopyFullInformation(object x, EventArgs y)\r\n        {\r\n            ImportExport.CopyFullInformationToClipboard(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void ClipboardCopyGuids(object x, EventArgs y)\r\n        {\r\n            ImportExport.CopyGuidsToClipboard(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void ClipboardCopyProgramName(object x, EventArgs y)\r\n        {\r\n            ImportExport.CopyNamesToClipboard(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void ClipboardCopyRegistryPath(object x, EventArgs y)\r\n        {\r\n            ImportExport.CopyRegKeysToClipboard(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void ClipboardCopyUninstallString(object x, EventArgs y)\r\n        {\r\n            ImportExport.CopyUninstallStringsToClipboard(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void createBackupFileDialog_FileOk(object sender, CancelEventArgs e)\r\n        {\r\n            if (!_listView.SelectedUninstallers.Any())\r\n            {\r\n                e.Cancel = true;\r\n                return;\r\n            }\r\n\r\n            try\r\n            {\r\n                RegistryTools.ExportRegistry(createBackupFileDialog.FileName,\r\n                    _listView.SelectedUninstallers.Select(x => x.RegistryPath));\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                MessageBoxes.ExportFailed(ex.Message, this);\r\n                e.Cancel = true;\r\n            }\r\n        }\r\n\r\n        private void CreateRegistryBackup(object sender, EventArgs e)\r\n        {\r\n            createBackupFileDialog.ShowDialog();\r\n        }\r\n\r\n        private void DeleteRegistryEntries(object sender, EventArgs eventArgs)\r\n        {\r\n            if (_listView.SelectedUninstallerCount == 0)\r\n                return;\r\n\r\n            var items = _listView.SelectedUninstallers.ToArray();\r\n            var protectedItems = items.Where(x => x.IsProtected).ToArray();\r\n\r\n            if (!_setMan.Selected.Settings.AdvancedDisableProtection && protectedItems.Any())\r\n            {\r\n                var affectedKeyNames = protectedItems.Select(x => x.DisplayName).ToArray();\r\n                if (MessageBoxes.ProtectedItemsWarningQuestion(affectedKeyNames) == MessageBoxes.PressedButton.Cancel)\r\n                    return;\r\n\r\n                items = _listView.SelectedUninstallers.Where(x => !x.IsProtected).ToArray();\r\n            }\r\n\r\n            if (!items.Any() || !MessageBoxes.DeleteRegKeysConfirmation(items.Select(x => x.DisplayName).ToArray()))\r\n                return;\r\n\r\n            foreach (var item in items)\r\n            {\r\n                try\r\n                {\r\n                    if (item.IsRegistered) RegistryTools.RemoveRegistryKey(item.RegistryPath);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    PremadeDialogs.GenericError(ex);\r\n                }\r\n            }\r\n\r\n            _listView.InitiateListRefresh();\r\n        }\r\n\r\n        private void donateButton_Click(object sender, EventArgs e)\r\n        {\r\n            OpenUrls(new[] { new Uri(Resources.DonateLink) });\r\n        }\r\n\r\n        private void exitToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            Close();\r\n        }\r\n\r\n        private void exportDialog_FileOk(object sender, CancelEventArgs e)\r\n        {\r\n            if (!AppUninstaller.ExportUninstallers(_listView.SelectedUninstallers, exportDialog.FileName))\r\n                e.Cancel = true;\r\n        }\r\n\r\n        private void exportSelectedToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            exportDialog.ShowDialog();\r\n        }\r\n\r\n        private void fileToolStripMenuItem_DropDownOpening(object sender, EventArgs e)\r\n        {\r\n            var anySelected = _listView.SelectedUninstallerCount > 0;\r\n            exportSelectedToolStripMenuItem.Enabled = anySelected;\r\n            exportToABatchUninstallScriptToolStripMenuItem.Enabled = anySelected;\r\n\r\n            exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Enabled =\r\n                _listView.SelectedUninstallers.Any(x => x.UninstallerKind == UninstallerType.StoreApp);\r\n        }\r\n\r\n        private void HandleListViewMenuKeystroke(object sender, KeyEventArgs e)\r\n        {\r\n            if (e.KeyCode == Keys.Apps)\r\n            {\r\n                if (_listView.SelectedUninstallerCount > 0)\r\n                {\r\n                    uninstallListContextMenuStrip.Show(uninstallerObjectListView.PointToScreen(Point.Empty));\r\n                }\r\n                e.SuppressKeyPress = true;\r\n            }\r\n        }\r\n\r\n        private void helpToolStripMenuItem_DropDownOpening(object sender, EventArgs e)\r\n        {\r\n            //uninstallBCUninstallToolstripMenuItem.Visible = Program.IsInstalled;\r\n            uninstallBCUninstallToolstripMenuItem.Enabled = Program.IsInstalled;\r\n        }\r\n\r\n        private void MainWindow_FormClosed(object sender, FormClosedEventArgs e)\r\n        {\r\n            _setMan.SaveSettings();\r\n            SystemRestore.CancelSysRestore();\r\n        }\r\n\r\n        private void MainWindow_FormClosing(object sender, FormClosingEventArgs e)\r\n        {\r\n            if (e.CloseReason != CloseReason.UserClosing || _setMan.Selected.Settings.MiscFirstRun ||\r\n                !WindowsTools.IsNetworkAvailable())\r\n                return;\r\n\r\n            if (!_setMan.Selected.Settings.MiscFeedbackNagNeverShow)\r\n            {\r\n                if (!_setMan.Selected.Settings.MiscFeedbackNagShown &&\r\n                    DateTime.Now - Process.GetCurrentProcess().StartTime > TimeSpan.FromMinutes(3))\r\n                {\r\n                    FeedbackBox.ShowFeedbackBox(this, true);\r\n                }\r\n\r\n                // Show the nag every other time\r\n                _setMan.Selected.Settings.MiscFeedbackNagShown = !_setMan.Selected.Settings.MiscFeedbackNagShown;\r\n            }\r\n        }\r\n\r\n        private void MainWindow_Shown(object sender, EventArgs e)\r\n        {\r\n            _setMan.Selected.SendUpdates();\r\n\r\n            // Work around a bug in Object list view\r\n            try\r\n            {\r\n                ResumeLayout();\r\n            }\r\n            catch (ObjectDisposedException)\r\n            {\r\n                Application.DoEvents();\r\n                ResumeLayout();\r\n            }\r\n\r\n            _listView.InitiateListRefresh();\r\n\r\n            settingsSidebarPanel.Width = propertiesSidebar.GetSuggestedWidth() +\r\n                settingsSidebarPanel.Padding.Left +\r\n                settingsSidebarPanel.Padding.Right;\r\n        }\r\n\r\n        private void SetupAndShowLegendWindow()\r\n        {\r\n            if (IsDisposed || Disposing)\r\n                return;\r\n\r\n            _listLegendWindow.Show(this);\r\n            AddOwnedForm(_listLegendWindow);\r\n\r\n            _listLegendWindow.UpdatePosition(uninstallerObjectListView);\r\n            listViewPanel.Resize += (o, args) => _listLegendWindow.UpdatePosition(uninstallerObjectListView);\r\n            Move += (o, args) => _listLegendWindow.UpdatePosition(uninstallerObjectListView);\r\n            Controls[0].EnabledChanged += (o, args) => _listLegendWindow.Enabled = Controls[0].Enabled;\r\n\r\n            var settings = _setMan.Selected;\r\n            settings.Subscribe((x, y) => _listLegendWindow.Visible = y.NewValue, x => x.UninstallerListShowLegend, this);\r\n            _listLegendWindow.VisibleChanged += (x, y) =>\r\n            {\r\n                if (!_listLegendWindow.Visible && settings.Settings.UninstallerListShowLegend)\r\n                    settings.Settings.UninstallerListShowLegend = false;\r\n            };\r\n        }\r\n\r\n        private void msiInstallContextMenuStripItem_Click(object sender, EventArgs e)\r\n        {\r\n            _appUninstaller.UninstallUsingMsi(MsiUninstallModes.InstallModify, _listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void msiQuietUninstallContextMenuStripItem_Click(object sender, EventArgs e)\r\n        {\r\n            _appUninstaller.UninstallUsingMsi(MsiUninstallModes.QuietUninstall, _listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void msiUninstallContextMenuStripItem_Click(object sender, EventArgs e)\r\n        {\r\n            _appUninstaller.UninstallUsingMsi(MsiUninstallModes.Uninstall, _listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void OnFirstApplicationStart()\r\n        {\r\n            StartSetupWizard(false);\r\n\r\n            // On first start the updates are not searched from constructor to give user a chance to disable them.\r\n            BackgroundSearchForUpdates();\r\n        }\r\n\r\n        private void OpenAssociatedWebPage(object sender, EventArgs eventArgs)\r\n        {\r\n            var urls = _listView.SelectedUninstallers.Select(y => y.GetAboutUri()).Where(x => x != null).ToList();\r\n\r\n            OpenUrls(urls);\r\n        }\r\n\r\n        private void OpenDebugWindow(object sender, EventArgs e)\r\n        {\r\n            if (_debugWindow == null || _debugWindow.IsDisposed)\r\n            {\r\n                _debugWindow = new DebugWindow(this, _listView, _appUninstaller);\r\n            }\r\n\r\n            _debugWindow.Show();\r\n        }\r\n\r\n        private void OpenInRegedit(object sender, EventArgs e)\r\n        {\r\n            var targetEntry = _listView.SelectedUninstallers.FirstOrDefault(x => x.RegKeyStillExists());\r\n            if (targetEntry != null)\r\n            {\r\n                try\r\n                {\r\n                    RegistryTools.OpenRegKeyInRegedit(targetEntry.RegistryPath);\r\n                }\r\n                catch (IOException ex)\r\n                {\r\n                    PremadeDialogs.GenericError(ex);\r\n                }\r\n            }\r\n        }\r\n\r\n        private void OpenInstallationSource(object sender, EventArgs eventArgs)\r\n        {\r\n            var sourceDirs =\r\n                _listView.SelectedUninstallers.Where(x => x.InstallSource.IsNotEmpty())\r\n                    .Select(y => y.InstallSource)\r\n                    .ToList();\r\n\r\n            if (MessageBoxes.OpenDirectoriesMessageBox(sourceDirs.Count))\r\n            {\r\n                try\r\n                {\r\n                    sourceDirs.ForEach(x => Process.Start(new ProcessStartInfo(x) { UseShellExecute = true }));\r\n                }\r\n                catch (Exception e)\r\n                {\r\n                    MessageBoxes.OpenDirectoryError(e);\r\n                }\r\n            }\r\n        }\r\n\r\n        private void OpenInstallLocation(object sender, EventArgs eventArgs)\r\n        {\r\n            var sourceDirs =\r\n                _listView.SelectedUninstallers.Where(x => x.InstallLocation.IsNotEmpty())\r\n                    .Select(y => y.InstallLocation)\r\n                    .ToList();\r\n\r\n            if (MessageBoxes.OpenDirectoriesMessageBox(sourceDirs.Count))\r\n            {\r\n                try\r\n                {\r\n                    sourceDirs.ForEach(x => Process.Start(new ProcessStartInfo(x) { UseShellExecute = true }));\r\n                }\r\n                catch (Exception e)\r\n                {\r\n                    MessageBoxes.OpenDirectoryError(e);\r\n                }\r\n            }\r\n        }\r\n\r\n        private void openProgramsAndFeaturesToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            try\r\n            {\r\n                WindowsTools.OpenControlPanelApplet(ControlPanelCanonicalNames.ProgramsAndFeatures);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n            }\r\n        }\r\n\r\n        private void OpenProperties(object sender, EventArgs eventArgs)\r\n        {\r\n            if (_listView.SelectedUninstallerCount == 0) return;\r\n\r\n            using (var propertiesWindow = new PropertiesWindow())\r\n            {\r\n                propertiesWindow.ShowPropertiesDialog(_listView.SelectedUninstallers);\r\n            }\r\n        }\r\n\r\n        private void OpenSubmitFeedbackWindow(object sender, EventArgs e)\r\n        {\r\n            FeedbackBox.ShowFeedbackBox(this, false);\r\n        }\r\n\r\n        private void OpenUninstallerLocation(object sender, EventArgs eventArgs)\r\n        {\r\n            var sourceDirs = _listView.SelectedUninstallers.Where(x => x.UninstallerFullFilename.IsNotEmpty()).ToList();\r\n\r\n            if (MessageBoxes.OpenDirectoriesMessageBox(sourceDirs.Count))\r\n            {\r\n                try\r\n                {\r\n                    sourceDirs.ForEach(x =>\r\n                    {\r\n                        if (File.Exists(x.UninstallerFullFilename))\r\n                            WindowsTools.OpenExplorerFocusedOnObject(x.UninstallerFullFilename);\r\n                        else\r\n                            Process.Start(new ProcessStartInfo(x.UninstallerLocation) { UseShellExecute = true });\r\n                    });\r\n                }\r\n                catch (Exception e)\r\n                {\r\n                    MessageBoxes.OpenDirectoryError(e);\r\n                }\r\n            }\r\n        }\r\n\r\n        private void OpenUninstallLists(object sender, EventArgs e)\r\n        {\r\n            advancedFilters1.LoadUninstallList();\r\n        }\r\n\r\n        private void RefreshList(object sender, EventArgs e)\r\n        {\r\n            _listView.RefreshList();\r\n        }\r\n\r\n        private void RefreshStatusbarTotalLabel(object sender, EventArgs e)\r\n        {\r\n            toolStripLabelTotal.Text = string.Format(CultureInfo.CurrentCulture, Localisable.MainWindow_Statusbar_Total,\r\n                _listView.FilteredUninstallers.Count(), _listView.GetFilteredSize());\r\n        }\r\n\r\n        private void ReloadUninstallers(object sender, EventArgs e)\r\n        {\r\n            _listView.InitiateListRefresh();\r\n        }\r\n\r\n        private void RenameEntries(object sender, EventArgs eventArgs)\r\n        {\r\n            var selectedUninstallers = _listView.SelectedUninstallers.ToList();\r\n            if (selectedUninstallers.Count != 1)\r\n            {\r\n                MessageBoxes.CanSelectOnlyOneItemInfo();\r\n                return;\r\n            }\r\n\r\n            var selected = selectedUninstallers[0];\r\n\r\n            if (!_setMan.Selected.Settings.AdvancedDisableProtection && selected.IsProtected)\r\n            {\r\n                MessageBoxes.ProtectedItemError(selected.DisplayName);\r\n                return;\r\n            }\r\n\r\n            if (!selected.IsRegistered)\r\n            {\r\n                MessageBoxes.CantRenameUninstallerKind(selected.DisplayName, selected.UninstallerKind);\r\n                return;\r\n            }\r\n\r\n            if (StringEditBox.ShowDialog(string.Format(CultureInfo.InvariantCulture, Localisable.MainWindow_Rename_Description, selected.DisplayName),\r\n                                         Localisable.MainWindow_Rename_Title, selected.DisplayName, Buttons.ButtonOk, Buttons.ButtonCancel,\r\n                                         out var output))\r\n            {\r\n                try\r\n                {\r\n                    if (selected.Rename(output))\r\n                        _listView.InitiateListRefresh();\r\n                    else\r\n                        MessageBoxes.InvalidNewEntryName();\r\n                }\r\n                catch (Exception exception)\r\n                {\r\n                    PremadeDialogs.GenericError(exception);\r\n                }\r\n            }\r\n        }\r\n\r\n        private void ResetSettingsDialog(object sender, EventArgs e)\r\n        {\r\n            _setMan.ResetSettingsDialog();\r\n        }\r\n\r\n        private void RunAdvancedUninstall(object sender, EventArgs e)\r\n        {\r\n            var items = _listView.SelectedUninstallers.ToArray();\r\n            var protectedItems = items.Where(x => x.IsProtected).ToArray();\r\n\r\n            if (!_setMan.Selected.Settings.AdvancedDisableProtection && protectedItems.Any())\r\n            {\r\n                var affectedKeyNames = protectedItems.Select(x => x.DisplayName).ToArray();\r\n                if (MessageBoxes.ProtectedItemsWarningQuestion(affectedKeyNames) == MessageBoxes.PressedButton.Cancel)\r\n                    return;\r\n\r\n                items = _listView.SelectedUninstallers.Where(x => !x.IsProtected).ToArray();\r\n            }\r\n\r\n            if (!items.Any())\r\n            {\r\n                MessageBoxes.NoUninstallersSelectedInfo();\r\n                return;\r\n            }\r\n\r\n            _appUninstaller.AdvancedUninstall(items, _listView.AllUninstallers);\r\n        }\r\n\r\n        private void RunLoudUninstall(object x, EventArgs y)\r\n        {\r\n            _appUninstaller.RunUninstall(_listView.SelectedUninstallers, _listView.AllUninstallers, false);\r\n        }\r\n\r\n        private void RunQuietUninstall(object x, EventArgs y)\r\n        {\r\n            _appUninstaller.RunUninstall(_listView.SelectedUninstallers, _listView.AllUninstallers, true);\r\n\r\n            /*var nonQuiet =\r\n                _listView.SelectedUninstallers.Where(o => !o.QuietUninstallPossible)\r\n                    .Select(p => p.DisplayName)\r\n                    .ToArray();\r\n\r\n            if (!nonQuiet.Any())\r\n                _uninstaller.RunUninstall(_listView.SelectedUninstallers, _listView.AllUninstallers, true);\r\n            else\r\n            {\r\n                switch (MessageBoxes.QuietUninstallersNotAvailableQuestion(nonQuiet))\r\n                {\r\n                    case MessageBoxes.PressedButton.Yes:\r\n                        _uninstaller.RunUninstall(_listView.SelectedUninstallers,\r\n                            _listView.AllUninstallers, true);\r\n                        break;\r\n                    case MessageBoxes.PressedButton.No:\r\n                        _uninstaller.RunUninstall(_listView.SelectedUninstallers.Where(p => p.QuietUninstallPossible),\r\n                            _listView.AllUninstallers, true);\r\n                        break;\r\n                    default:\r\n                        return;\r\n                }\r\n            }*/\r\n        }\r\n\r\n        private void searchToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            if (!_setMan.Selected.Settings.ToolbarsShowSettings)\r\n                _setMan.Selected.Settings.ToolbarsShowSettings = true;\r\n            filterEditor1.FocusSearchbox();\r\n        }\r\n\r\n        private void settingsToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            using (var sw = new SettingsWindow())\r\n                sw.ShowDialog();\r\n        }\r\n\r\n        private void SetupHotkeys()\r\n        {\r\n            // File\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.F5, reloadUninstallersToolStripMenuItem));\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.O, false, true, false, loadUninstallerListToolStripMenuItem));\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.F4, true, false, false, exitToolStripMenuItem));\r\n\r\n            // View\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.F, false, true, false, searchToolStripMenuItem_Click, null));\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.F3, searchToolStripMenuItem));\r\n\r\n            // Basic operations\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.Delete, uninstallToolStripMenuItem,\r\n                () => !_listView.CheckIsAppDisposed() && uninstallerObjectListView.ContainsFocus));\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.Delete, false, false, true, quietUninstallToolStripMenuItem,\r\n                () => !_listView.CheckIsAppDisposed() && uninstallerObjectListView.ContainsFocus));\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.C, false, true, false, copyFullInformationToolStripMenuItem,\r\n                () => !_listView.CheckIsAppDisposed() && uninstallerObjectListView.ContainsFocus));\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.Enter, true, false, false, propertiesToolStripMenuItem,\r\n                () => !_listView.CheckIsAppDisposed() && uninstallerObjectListView.ContainsFocus));\r\n\r\n            // Advanced operations\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.Delete, false, true, true, manualUninstallToolStripMenuItem,\r\n                () => !_listView.CheckIsAppDisposed() && uninstallerObjectListView.ContainsFocus));\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.B, false, true, false, createBackupToolStripMenuItem,\r\n                () => !_listView.CheckIsAppDisposed() && uninstallerObjectListView.ContainsFocus));\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.R, false, true, false, openKeyInRegeditToolStripMenuItem,\r\n                () => !_listView.CheckIsAppDisposed() && uninstallerObjectListView.ContainsFocus));\r\n\r\n            // Tools\r\n            globalHotkeys1.Add(new HotkeyEntry(Keys.P, false, true, false, settingsToolStripMenuItem_Click,\r\n                settingsToolStripMenuItem));\r\n        }\r\n\r\n        private void OnClickStartSetupWizard(object sender, EventArgs e)\r\n        {\r\n            StartSetupWizard(true);\r\n        }\r\n\r\n        private void StartSetupWizard(bool canExit)\r\n        {\r\n            using (var wizard = new FirstStartBox(canExit))\r\n            {\r\n                wizard.StartPosition = FormStartPosition.CenterParent;\r\n                wizard.ShowDialog(this);\r\n            }\r\n        }\r\n\r\n        private void toolsToolStripMenuItem_DropDownOpening(object sender, EventArgs e)\r\n        {\r\n            viewWindowsFeaturesToolStripMenuItem.Enabled = DismTools.DismIsAvailable;\r\n            tryToInstallNETV35ToolStripMenuItem.Enabled = DismTools.DismIsAvailable && !WindowsTools.CheckNetFramework35Installed();\r\n            createRestorePointToolStripMenuItem.Enabled = SysRestore.SysRestoreAvailable();\r\n        }\r\n\r\n        private void toolStripLabelStatus_TextChanged(object sender, EventArgs e)\r\n        {\r\n            if (string.IsNullOrEmpty(toolStripLabelStatus.Text))\r\n            {\r\n                toolStripLabelStatus.TextChanged -= toolStripLabelStatus_TextChanged;\r\n                toolStripLabelStatus.Text = Localisable.MainWindow_Statusbar_StatusReady;\r\n                toolStripLabelStatus.TextChanged += toolStripLabelStatus_TextChanged;\r\n            }\r\n        }\r\n\r\n        private void uninstallBCUninstallToolstripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            _appUninstaller.AskToSelfUninstall();\r\n        }\r\n\r\n        private void uninstallerObjectListView_CellEditStarting(object sender, CellEditEventArgs e)\r\n        {\r\n            e.Cancel = true;\r\n\r\n            if (_ignoreCellEdit || e.RowObject == null)\r\n                return;\r\n\r\n            _ignoreCellEdit = true;\r\n\r\n            if (uninstallerObjectListView.CheckBoxes && !uninstallerObjectListView.IsChecked(e.RowObject))\r\n            {\r\n                uninstallerObjectListView.UncheckAll();\r\n                uninstallerObjectListView.CheckObject(e.RowObject);\r\n            }\r\n\r\n            switch (Settings.Default.UninstallerListDoubleClickAction)\r\n            {\r\n                case UninstallerListDoubleClickAction.DoNothing:\r\n                    break;\r\n                case UninstallerListDoubleClickAction.OpenProperties:\r\n                    OpenProperties(sender, e);\r\n                    break;\r\n                case UninstallerListDoubleClickAction.Uninstall:\r\n                    RunLoudUninstall(sender, e);\r\n                    break;\r\n                default:\r\n                    throw new ArgumentOutOfRangeException(nameof(UninstallerListDoubleClickAction), Settings.Default.UninstallerListDoubleClickAction, \"Unhandled value\");\r\n            }\r\n\r\n            //uninstallerObjectListView.CancelCellEdit();\r\n        }\r\n\r\n        private void uninstallerObjectListView_CellRightClick(object sender, CellRightClickEventArgs e)\r\n        {\r\n            if (e.Model == null)\r\n                return;\r\n\r\n            if (uninstallerObjectListView.CheckBoxes && !uninstallerObjectListView.IsChecked(e.Model))\r\n            {\r\n                //uninstallerObjectListView.UncheckAll();\r\n                uninstallerObjectListView.CheckObject(e.Model);\r\n            }\r\n        }\r\n\r\n        private void uninstallerObjectListView_Click(object sender, EventArgs e)\r\n        {\r\n            _ignoreCellEdit = false;\r\n        }\r\n\r\n        private void uninstallerObjectListView_KeyDown(object sender, KeyEventArgs e)\r\n        {\r\n            e.SuppressKeyPress = _listView.SelectItemFromKeystroke(e.KeyCode);\r\n        }\r\n\r\n        private void uninstallerObjectListView_SelectedChanged(object sender, EventArgs e)\r\n        {\r\n            toolStripLabelStatus.Text = _listView.SelectedUninstallerCount > 0\r\n                ? string.Format(CultureInfo.CurrentCulture, Localisable.MainWindow_Statusbar_StatusSelection, _listView.SelectedUninstallerCount)\r\n                : string.Empty;\r\n\r\n            toolStripLabelSize.Text = _listView.GetSelectedSize().ToString();\r\n\r\n            // Disable/enable edit menus\r\n            var anySelected = _listView.SelectedUninstallerCount > 0;\r\n            basicOperationsToolStripMenuItem.Enabled = anySelected;\r\n            advancedOperationsToolStripMenuItem.Enabled = anySelected;\r\n\r\n            toolStripButtonModify.Enabled = _listView.SelectedUninstallerCount == 1 &&\r\n                _listView.SelectedUninstallers.Count(x => !string.IsNullOrEmpty(x.ModifyPath)) == 1;\r\n        }\r\n\r\n        private void UpdateUninstallListContextMenuStrip(object sender, CancelEventArgs e)\r\n        {\r\n            if (_listView.SelectedUninstallerCount == 0)\r\n            {\r\n                e.Cancel = true;\r\n                return;\r\n            }\r\n            var advancedFiltering = advancedFilters1.CurrentList != null;\r\n            toolStripSeparatorFiltering.Visible = advancedFiltering;\r\n            excludeToolStripMenuItem.Visible = advancedFiltering;\r\n            includeToolStripMenuItem.Visible = advancedFiltering;\r\n\r\n            var selectedUninstallers = _listView.SelectedUninstallers.ToList();\r\n\r\n            var singleItem = selectedUninstallers.Count == 1;\r\n            uninstallUsingMsiExecContextMenuStripItem.Enabled =\r\n                singleItem && !selectedUninstallers.First().BundleProviderKey.IsEmpty();\r\n\r\n            foreach (var itemToDisable in new[]\r\n            {\r\n                uninstallContextMenuStripItem,\r\n                quietUninstallContextMenuStripItem,\r\n                gUIDProductCodeCopyContextMenuStripItem,\r\n                uninstallStringCopyContextMenuStripItem,\r\n                installLocationOpenInExplorerContextMenuStripItem,\r\n                uninstallerLocationOpenInExplorerContextMenuStripItem,\r\n                sourceLocationOpenInExplorerContextMenuStripItem,\r\n                openWebPageContextMenuStripItem,\r\n                runToolStripMenuItem,\r\n                manualUninstallToolStripMenuItem1\r\n            })\r\n                itemToDisable.Enabled = false;\r\n\r\n            runToolStripMenuItem.DropDownItems.Clear();\r\n\r\n            foreach (var item in selectedUninstallers)\r\n            {\r\n                if (item.IsValid)\r\n                {\r\n                    if (item.UninstallPossible) uninstallContextMenuStripItem.Enabled = true;\r\n                    if (item.QuietUninstallPossible) quietUninstallContextMenuStripItem.Enabled = true;\r\n                    manualUninstallToolStripMenuItem1.Enabled = true;\r\n                }\r\n\r\n                if (singleItem)\r\n                {\r\n                    foreach (var executable in item.GetSortedExecutables())\r\n                    {\r\n                        if (!runToolStripMenuItem.Enabled) runToolStripMenuItem.Enabled = true;\r\n\r\n                        runToolStripMenuItem.DropDownItems.Add(executable);\r\n                    }\r\n                }\r\n\r\n                if (item.IsRegistered)\r\n                    manualUninstallToolStripMenuItem1.Enabled = true;\r\n\r\n                if (!item.BundleProviderKey.IsEmpty()) gUIDProductCodeCopyContextMenuStripItem.Enabled = true;\r\n                if (item.UninstallPossible)\r\n                {\r\n                    uninstallStringCopyContextMenuStripItem.Enabled = true;\r\n                    manualUninstallToolStripMenuItem1.Enabled = true;\r\n                }\r\n\r\n                if (item.InstallLocation.IsNotEmpty())\r\n                {\r\n                    installLocationOpenInExplorerContextMenuStripItem.Enabled = true;\r\n                    manualUninstallToolStripMenuItem1.Enabled = true;\r\n                }\r\n                if (item.UninstallerLocation.IsNotEmpty())\r\n                {\r\n                    uninstallerLocationOpenInExplorerContextMenuStripItem.Enabled = true;\r\n                    manualUninstallToolStripMenuItem1.Enabled = true;\r\n                }\r\n                if (item.InstallSource.IsNotEmpty()) sourceLocationOpenInExplorerContextMenuStripItem.Enabled = true;\r\n\r\n                if (item.AboutUrl.IsNotEmpty()) openWebPageContextMenuStripItem.Enabled = true;\r\n            }\r\n\r\n            openInExplorerContextMenuStripItem.Enabled = installLocationOpenInExplorerContextMenuStripItem.Enabled ||\r\n                                                         uninstallerLocationOpenInExplorerContextMenuStripItem.Enabled ||\r\n                                                         sourceLocationOpenInExplorerContextMenuStripItem.Enabled;\r\n        }\r\n\r\n        private void UsageTrackerSendData()\r\n        {\r\n            if (_setMan.Selected.Settings.MiscSendStatistics)\r\n            {\r\n                UsageManager.FinishCollectingData();\r\n\r\n                if (Program.EnableDebug || !WindowsTools.IsNetworkAvailable()) return;\r\n\r\n                var count = UsageManager.AppLaunchCount;\r\n\r\n                //Reduce frequency of the uploads\r\n                if (count != 2 && (count <= 0 || count % 5 != 0)) return;\r\n\r\n                try\r\n                {\r\n                    UsageManager.SendUsageData();\r\n                }\r\n                catch\r\n                {\r\n                    // Ignore, will try again next time\r\n                }\r\n            }\r\n            else\r\n            {\r\n                UsageManager.RemoveStoredData();\r\n            }\r\n        }\r\n\r\n        private void listView_ListRefreshIsRunningChanged(object sender,\r\n            UninstallerListViewUpdater.ListRefreshEventArgs e)\r\n        {\r\n            if (e.RefreshIsRunning)\r\n            {\r\n                _uninstallerListPostProcesser.StopProcessingThread();\r\n                return;\r\n            }\r\n\r\n            // If refresh has finished update the interface\r\n            _anyStoreApps = _listView.AllUninstallers.Any(x => x.UninstallerKind == UninstallerType.StoreApp);\r\n            _anyWinFeatures = _listView.AllUninstallers.Any(x => x.UninstallerKind == UninstallerType.WindowsFeature);\r\n\r\n            _anyOrphans = _listView.AllUninstallers.Any(x => x.IsOrphaned);\r\n            _anyProtected = _listView.AllUninstallers.Any(x => x.IsProtected);\r\n            _anySysComponents = _listView.AllUninstallers.Any(x => x.SystemComponent);\r\n            _anyUpdates = _listView.AllUninstallers.Any(x => x.IsUpdate);\r\n            _anyInvalid = _listView.AllUninstallers.Any(x => !x.IsValid);\r\n            _anyTweaks = _listView.AllUninstallers.Any(x => x.RatingId != null && x.RatingId.StartsWith(\"tweak\", StringComparison.OrdinalIgnoreCase));\r\n\r\n            propertiesSidebar.StoreAppsEnabled = _anyStoreApps;\r\n            propertiesSidebar.WinFeaturesEnabled = _anyWinFeatures;\r\n            propertiesSidebar.ShowTweaksEnabled = _anyTweaks;\r\n\r\n            propertiesSidebar.OrphansEnabled = _anyOrphans;\r\n            propertiesSidebar.ProtectedEnabled = _anyProtected;\r\n            propertiesSidebar.SysCompEnabled = _anySysComponents;\r\n            propertiesSidebar.UpdatesEnabled = _anyUpdates;\r\n            propertiesSidebar.InvalidEnabled = _anyInvalid;\r\n\r\n            if (e.FirstRefresh)\r\n            {\r\n                _setMan.LoadSorting();\r\n\r\n                var args = Environment.GetCommandLineArgs();\r\n                var dir = args.Skip(1).FirstOrDefault();\r\n                if (!string.IsNullOrEmpty(dir))\r\n                {\r\n                    try\r\n                    {\r\n                        advancedFilters1.LoadUninstallList(dir);\r\n                    }\r\n                    catch (Exception ex)\r\n                    { PremadeDialogs.GenericError(ex); }\r\n                }\r\n                if (advancedFilters1.CurrentList == null && _setMan.Selected.Settings.MiscAutoLoadDefaultList)\r\n                {\r\n                    try\r\n                    {\r\n                        var defaultUninstallListPath = Path.Combine(Program.AssemblyLocation.FullName, Resources.DefaultUninstallListFilename);\r\n                        if (File.Exists(defaultUninstallListPath))\r\n                            advancedFilters1.LoadUninstallList(defaultUninstallListPath);\r\n                    }\r\n                    catch (Exception ex)\r\n                    { PremadeDialogs.GenericError(ex); }\r\n                }\r\n\r\n                splashScreen1.CloseSplashScreen();\r\n\r\n                // Display the legend first so it is hidden under the splash\r\n                _listLegendWindow.Opacity = 0;\r\n                SetupAndShowLegendWindow();\r\n                // Needed in case main window starts maximized\r\n                _listLegendWindow.UpdatePosition(uninstallerObjectListView);\r\n                _listLegendWindow.Visible = _setMan.Selected.Settings.UninstallerListShowLegend;\r\n\r\n                new Thread(() =>\r\n                {\r\n                    this.SafeInvoke(() =>\r\n                    {\r\n                        var isFirstRun = _setMan.Selected.Settings.MiscFirstRun;\r\n                        if (isFirstRun)\r\n                        {\r\n                            // Run the welcome wizard at first start of the application\r\n                            OnFirstApplicationStart();\r\n                        }\r\n\r\n                        if (Program.IsAfterUpgrade || isFirstRun)\r\n                        {\r\n                            NewsPopup.ShowPopup(this);\r\n                        }\r\n\r\n                        //if (!_setMan.Selected.Settings.MiscNet4NagShown && !Program.Net4IsAvailable)\r\n                        //{\r\n                        //    _setMan.Selected.Settings.MiscNet4NagShown = true;\r\n                        //    MessageBoxes.Net4MissingInfo();\r\n                        //}\r\n                    });\r\n                }).Start();\r\n            }\r\n\r\n            OnApplicationListVisibleItemsChanged(sender, e);\r\n\r\n            filterEditor1.FocusSearchbox();\r\n        }\r\n\r\n        private void openStartupManagerToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            var results = StartupManagerWindow.ShowManagerDialog(this);\r\n            toolStripLabelStatus.Text = Localisable.MainWindow_Statusbar_RefreshingStartup;\r\n\r\n            //Application.DoEvents();\r\n            //if (_listView.CheckIsAppDisposed())\r\n            //    return;\r\n\r\n            Cursor = Cursors.WaitCursor;\r\n            statusStrip1.Refresh();\r\n\r\n            _listView.ReassignStartupEntries(true, results);\r\n            toolStripLabelStatus.Text = string.Empty;\r\n            Cursor = DefaultCursor;\r\n        }\r\n\r\n        private void disableAutostartToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            foreach (var uninstaller in _listView.SelectedUninstallers)\r\n            {\r\n                if (uninstaller.StartupEntries == null)\r\n                    continue;\r\n\r\n                foreach (var entry in uninstaller.StartupEntries)\r\n                {\r\n                    try\r\n                    {\r\n                        entry.Disabled = true;\r\n                    }\r\n                    catch (Exception ex)\r\n                    {\r\n                        PremadeDialogs.GenericError(ex);\r\n                    }\r\n                }\r\n\r\n                uninstallerObjectListView.RefreshObject(uninstaller);\r\n            }\r\n        }\r\n\r\n        private void rateToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            _uninstallerListConfigurator.RatingManagerWrapper.RateEntries(_listView.SelectedUninstallers.ToArray(), Point.Empty);\r\n        }\r\n\r\n        private void OpenTargetWindow(object sender, EventArgs e)\r\n        {\r\n            var results = TargetWindow.ShowDialog(this, SetVisible);\r\n\r\n            if (results == null) return;\r\n\r\n            var apps = AppUninstaller.GetApplicationsFromDirectories(_listView.AllUninstallers, results);\r\n\r\n            if (apps.Count == 0)\r\n            {\r\n                MessageBoxes.UninstallFromDirectoryNothingFound();\r\n                return;\r\n            }\r\n\r\n            _appUninstaller.RunUninstall(apps, _listView.AllUninstallers, true);\r\n        }\r\n\r\n        private void viewWindowsFeaturesToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            _setMan.Selected.Settings.FilterShowWinFeatures = true;\r\n            filterEditor1.Search(nameof(UninstallerType.WindowsFeature), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.UninstallerKind));\r\n        }\r\n\r\n        private void viewWindowsStoreAppsToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            _setMan.Selected.Settings.FilterShowStoreApps = true;\r\n            filterEditor1.Search(nameof(UninstallerType.StoreApp), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.UninstallerKind));\r\n        }\r\n\r\n        private void buttonAdvFiltering_Click(object sender, EventArgs e)\r\n        {\r\n            advancedFilters1.LoadUninstallList(new UninstallList(_uninstallerListConfigurator.GenerateEquivalentFilter()));\r\n        }\r\n\r\n        private void OpenAdvancedClipboardCopy(object sender, EventArgs e)\r\n        {\r\n            AdvancedClipboardCopyWindow.ShowDialog(this, _listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void openHelpToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            MessageBoxes.DisplayHelp();\r\n        }\r\n\r\n        private void uninstallFromDirectoryToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            _appUninstaller.UninstallFromDirectory(_listView.AllUninstallers);\r\n        }\r\n\r\n        private void openSystemRestoreToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            try\r\n            {\r\n                WindowsTools.OpenControlPanelApplet(ControlPanelCanonicalNames.Recovery);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n            }\r\n        }\r\n\r\n        private void runToolStripMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(e.ClickedItem.Text);\r\n        }\r\n\r\n        private void viewUpdatesToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            _setMan.Selected.Settings.FilterShowUpdates = true;\r\n            filterEditor1.Search(true.ToString(), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsUpdate));\r\n        }\r\n\r\n        private void filterEditor1_FocusSearchTarget(object sender, EventArgs e)\r\n        {\r\n            uninstallerObjectListView.Focus();\r\n        }\r\n\r\n        private void googleToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            OnlineSearchTools.SearchGoogle(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void alternativeToToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            OnlineSearchTools.SearchAlternativeTo(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void slantcoToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            OnlineSearchTools.SearchSlantCo(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void fossHubcomToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            OnlineSearchTools.SearchFosshub(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void sourceForgecomToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            OnlineSearchTools.SearchSourceforge(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void fileHippocomToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            OnlineSearchTools.SearchFilehippo(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void gitHubcomToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            OnlineSearchTools.SearchGithub(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void modifyToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            _appUninstaller.Modify(_listView.SelectedUninstallers);\r\n        }\r\n\r\n        private void excludeToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            AddSelectedAsAdvancedFilters(true);\r\n        }\r\n\r\n        private void includeToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            AddSelectedAsAdvancedFilters(false);\r\n        }\r\n\r\n        private void AddSelectedAsAdvancedFilters(bool exclude)\r\n        {\r\n            var selectedUninstallers = _listView.SelectedUninstallers;\r\n            var filters = advancedFilters1.CurrentList.Filters;\r\n\r\n            var existingFilters = filters.Where(x => selectedUninstallers.Any(y => x.Name == y.DisplayName));\r\n            filters.RemoveAll(existingFilters.ToList());\r\n\r\n            filters.AddRange(selectedUninstallers.Select(x => new Filter(x.DisplayName, exclude, new FilterCondition(x.DisplayName, ComparisonMethod.Equals,\r\n                    nameof(ApplicationUninstallerEntry.DisplayName)))));\r\n            advancedFilters1.RepopulateList();\r\n        }\r\n\r\n        private void viewUnregisteredToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            _setMan.Selected.Settings.AdvancedDisplayOrphans = true;\r\n            filterEditor1.Search(true.ToString(), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsOrphaned));\r\n        }\r\n\r\n        private void viewToolStripMenuItem_DropDownOpening(object sender, EventArgs e)\r\n        {\r\n        }\r\n\r\n        private void tryToInstallNETV35ToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(DismTools.DismFullPath, \"/Online /Enable-Feature /FeatureName:NetFx3 /All\");\r\n        }\r\n\r\n        private void startDiskCleanupToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(\"cleanmgr.exe\");\r\n        }\r\n\r\n        private void exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            using (var d = new SaveFileDialog())\r\n            {\r\n                d.OverwritePrompt = true;\r\n                d.CreatePrompt = false;\r\n                d.AddExtension = true;\r\n                d.DefaultExt = \".ps1\";\r\n                d.Filter = \"PowerShell script|*.ps1\";\r\n                d.Title = exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text;\r\n                d.RestoreDirectory = true;\r\n                d.InitialDirectory = WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_DESKTOPDIRECTORY);\r\n\r\n                if (d.ShowDialog() == DialogResult.OK)\r\n                {\r\n                    try { File.WriteAllLines(d.FileName, StoreAppFactory.ToPowerShellRemoveCommands(_listView.SelectedUninstallers).ToArray()); }\r\n                    catch (SystemException ex) { PremadeDialogs.GenericError(ex); }\r\n                }\r\n            }\r\n        }\r\n\r\n        private void exportToABatchUninstallScriptToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            using (var d = new SaveFileDialog())\r\n            {\r\n                d.OverwritePrompt = true;\r\n                d.CreatePrompt = false;\r\n                d.AddExtension = true;\r\n                d.DefaultExt = \".bat\";\r\n                d.Filter = \"Batch file|*.bat\";\r\n                d.Title = exportToABatchUninstallScriptToolStripMenuItem.Text;\r\n                d.RestoreDirectory = true;\r\n                d.InitialDirectory = WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_DESKTOPDIRECTORY);\r\n\r\n                if (d.ShowDialog() == DialogResult.OK)\r\n                {\r\n                    try\r\n                    {\r\n                        File.WriteAllLines(d.FileName,\r\n                            new[] { \"@echo off\", \"echo BCU Generated batch uninstall script\" }.Concat(\r\n                            _listView.SelectedUninstallers\r\n                                .Select(x => x.QuietUninstallPossible ? x.QuietUninstallString : x.UninstallString)\r\n                                .Where(x => !string.IsNullOrEmpty(x))\r\n                            ).Concat(new[] { \"pause\", \"exit\" }).ToArray());\r\n                    }\r\n                    catch (SystemException ex)\r\n                    {\r\n                        PremadeDialogs.GenericError(ex);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        private void troubleshootUninstallProblemsToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            var toolPath = Path.Combine(Program.AssemblyLocation.FullName,\r\n                @\"Resources\\MicrosoftProgram_Install_and_Uninstall.meta.diagcab\");\r\n            PremadeDialogs.StartProcessSafely(toolPath);\r\n        }\r\n\r\n        private void filteringToolStripMenuItem_DropDownOpening(object sender, EventArgs e)\r\n        {\r\n            var isSimpleFiltering = !IsAdvancedFilteringEnabled;\r\n\r\n            viewUnregisteredToolStripMenuItem.Enabled = isSimpleFiltering;\r\n            viewUpdatesToolStripMenuItem.Enabled = isSimpleFiltering;\r\n            viewWindowsStoreAppsToolStripMenuItem.Enabled = isSimpleFiltering;\r\n            viewWindowsFeaturesToolStripMenuItem.Enabled = isSimpleFiltering;\r\n        }\r\n\r\n        private void automaticallyStartedToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            filterEditor1.Search(true.ToString(), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.HasStartups));\r\n            var s = _setMan.Selected.Settings;\r\n            s.AdvancedDisplayOrphans = true;\r\n            s.FilterHideMicrosoft = false;\r\n            s.FilterShowSystemComponents = true;\r\n            s.FilterShowProtected = true;\r\n            s.FilterShowUpdates = true;\r\n            s.FilterShowWinFeatures = true;\r\n            s.FilterShowStoreApps = true;\r\n            s.FilterShowTweaks = true;\r\n        }\r\n\r\n        private void basicApplicationsToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            filterEditor1.Search(null, ComparisonMethod.Any);\r\n            var s = _setMan.Selected.Settings;\r\n            s.AdvancedDisplayOrphans = false;\r\n            s.FilterHideMicrosoft = true;\r\n            s.FilterShowSystemComponents = false;\r\n            s.FilterShowProtected = false;\r\n            s.FilterShowUpdates = false;\r\n            s.FilterShowWinFeatures = false;\r\n            s.FilterShowStoreApps = true;\r\n            s.FilterShowTweaks = false;\r\n        }\r\n\r\n        private void advancedApplicationsToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            filterEditor1.Search(null, ComparisonMethod.Any);\r\n            var s = _setMan.Selected.Settings;\r\n            s.AdvancedDisplayOrphans = true;\r\n            s.FilterHideMicrosoft = true;\r\n            s.FilterShowSystemComponents = false;\r\n            s.FilterShowProtected = false;\r\n            s.FilterShowUpdates = false;\r\n            s.FilterShowWinFeatures = false;\r\n            s.FilterShowStoreApps = true;\r\n            s.FilterShowTweaks = true;\r\n        }\r\n\r\n        private void systemComponentsToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            filterEditor1.Search(true.ToString(), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.SystemComponent));\r\n            var s = _setMan.Selected.Settings;\r\n            s.AdvancedDisplayOrphans = false;\r\n            s.FilterHideMicrosoft = false;\r\n            s.FilterShowSystemComponents = true;\r\n            s.FilterShowProtected = false;\r\n            s.FilterShowUpdates = false;\r\n            s.FilterShowWinFeatures = true;\r\n            s.FilterShowStoreApps = true;\r\n            s.FilterShowTweaks = true;\r\n        }\r\n\r\n        private void everythingToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            filterEditor1.Search(null, ComparisonMethod.Any);\r\n            var s = _setMan.Selected.Settings;\r\n            s.AdvancedDisplayOrphans = true;\r\n            s.FilterHideMicrosoft = false;\r\n            s.FilterShowSystemComponents = true;\r\n            s.FilterShowProtected = true;\r\n            s.FilterShowUpdates = true;\r\n            s.FilterShowWinFeatures = true;\r\n            s.FilterShowStoreApps = true;\r\n            s.FilterShowTweaks = true;\r\n        }\r\n\r\n        private void onlyWebBrowsersToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            filterEditor1.Search(true.ToString(), ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsWebBrowser));\r\n            var s = _setMan.Selected.Settings;\r\n            s.AdvancedDisplayOrphans = true;\r\n            s.FilterHideMicrosoft = false;\r\n            s.FilterShowSystemComponents = true;\r\n            s.FilterShowProtected = true;\r\n            s.FilterShowUpdates = true;\r\n            s.FilterShowWinFeatures = true;\r\n            s.FilterShowStoreApps = true;\r\n            s.FilterShowTweaks = true;\r\n        }\r\n\r\n        private void viewTweaksToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            everythingToolStripMenuItem_Click(sender, e);\r\n            filterEditor1.Search(@\"\\Resources\\Scripts\\Tweak\", ComparisonMethod.Contains, nameof(ApplicationUninstallerEntry.UninstallString));\r\n        }\r\n\r\n        private void createRestorePointToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            LockApplication(true);\r\n            try\r\n            {\r\n                SystemRestore.BeginSysRestore(0, false, this);\r\n            }\r\n            catch (Exception exception)\r\n            {\r\n                PremadeDialogs.GenericError(exception);\r\n            }\r\n            finally\r\n            {\r\n                LockApplication(false);\r\n            }\r\n        }\r\n\r\n        private void autosizeAllColumnsToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            uninstallerObjectListView.AutoResizeColumns();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Vyhledávání</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Jméno</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Vydavatel</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Verze</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Datum instalace</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Velikost</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Spuštění</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Příkaz pro odinstalaci</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>Adresa informací </value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Zdroj instalace</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Umístění instalace</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>Typ odinstalátoru</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>Systémové součástí</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Chráněné</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Klíč registru</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Kód produktu</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Příkaz tiché odinstalace</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>Obnova odinstalace</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Seznam otevřených odinstalaci ...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Vybrat vše</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Zrušit výběr všech</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Obrátit výběr</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalace</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalovat potichu</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Vlastnosti</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odinstalovat</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalovat &amp;potichu</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalovat &amp;ručně</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalovat za použití &amp;MsiExec...</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Instalovat nebo konfigurovat (/I)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odinstalovat (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Tichý odinstalace (/X /qb)</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Zkopírovat do schránky ...</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kompletní informace</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Název programu</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Kód produktu / GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Celá cesta registru</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalovat řetězce</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Smazat položku registru</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Přejmenovat ...</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Otevřít v &amp;průzkumníku ...</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Umístění instalace</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Umístění odinstalátoru</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Umístění zdroje</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Otevřít &amp;Webové stránky</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Vyhledávání na řádku</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Vlastnosti</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Export vybraných vlastností odinstalátoru</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Soubor</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Obnovit odinstalátory</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Otevřít seznam odinstalátorů</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Exportovat výběr ...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ko&amp;nec</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Náhled</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ukázat barvy legendy</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ukázat &amp;Panel nástrojů</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ukázat stavový řá&amp;dek</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit &amp;nastavení postranního panelu</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Po&amp;užití systémového motivu</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Hledání ...</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Základní operace</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odinstalovat</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalovat &amp;potichu</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Zkopírovat do schránky ...</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kompletní informace</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Název programu</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Kód produktu / GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Celá cesta registru</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>Řetězec odinstalace</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Otevřít v &amp;průzkumníku ...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Umístění instalace</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Umístění odinstalátoru</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Umístění zdroje</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>Otevřít &amp;Webovou stránku</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Vyhledávání na řádku</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit &amp;vlastnosti</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Pokročilé operace</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalace &amp;ručně</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalovat za použití &amp;MsiExec...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Instalovat nebo konfigurovat (/I)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odinstalovat (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Tichý odinstalace (/X /qb)</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Přejmenovat...</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zakázat autostart</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odstranění klíče registru</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Vytvořit &amp;zálohu...</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Otevřít klíč v REGEDITU</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Nástroje</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Vyčistit \"Program Files\" složky ...</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Otevřít Manažera po spuštění </value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Otevřít \"&amp;Programy a funkce\"</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Nastavení</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Pomoc</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Otevřít &amp;Pomoc</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Spustit průvodce nastavením</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Kontrola aktualizací</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odeslat zpětnou vazbu ...</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Původní nastavení</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalovat BCUninstaller</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;O Programu</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Otevřít &amp;ladicí okno</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Soubor registrů|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Vytvořit zálohu registru</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64bit</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>Hodnocení uživatele</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Hodnotit...</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Hodnotit...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Pomoc</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Pokročilé filtrování</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Spustit...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Upřesnit...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>AlternativaTo</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit aktualizace</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit Windows Store aplikace</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Upřesnit...</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>AlternativaTo</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odebrat z adresáře ...</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Otevřete \"Obnovení systému\"</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalovat z windows adresáře nebo souboru...</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalovat z windows adresáře nebo souboru...</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>Upravit\r\n</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Vyloučit</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Patřící</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit strom&amp;mapu</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit neregistrovaných</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazení funkce systému Windows</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Upravit</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Vytvořit nový bod obnovení</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Suche</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Herausgeber</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Installationsdatum</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Größe</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Autostart</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall-Befehl</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>Info URL</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Installationsquelle</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Installationspfad</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>Deinstallationsart</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>Systemkomponente</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Geschützt</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Registryschlüssel</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Produktcode</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Befehl für stille Deinstallation</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>Uninstaller neu laden</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Bestehende Listen laden...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Alles auswählen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Alles abwählen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Auswahl umkehren</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Deinstallieren</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>Stille Deinstallation</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Eigenschaften</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Deinstallieren</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>S&amp;tille Deinstallation</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Manuell deinstallieren</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Installieren oder konfigurieren (/I)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Deinstallieren (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Stille Deinstallation (/X /qb)</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Deinstallation mit &amp;MSIExec...</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>K&amp;omplette Information</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Programm-Name</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Produktcode/GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Vollständiger Pfad</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Deinstallationsanweisung</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>In Zwischenablage &amp;kopieren...</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Registryschlüssel löschen</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Umbe&amp;nennen...</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Installationspfad</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Pfad</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Quellpfad</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Im &amp;Explorer öffnen...</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Webseite aufrufen</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Online &amp;Suche</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Eigenschaften</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Export ausgewählter Uninstaller-Eigenschaften</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Uninstaller &amp;neu laden</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Uninstall Liste(n) laden...</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Auswahl &amp;exportieren...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Been&amp;den</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Datei</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Farblegende anzeigen</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Symbolleis&amp;te anzeigen</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Statusleiste an&amp;zeigen</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Einstellungen-&amp;Seitenleiste anzeigen</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Systemdesign ben&amp;utzen</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Suche...</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ansicht</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Deinstallieren</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Stille Deinstallation</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Vollständige Info</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Programm-Name</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Produktcode/GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Vollständiger Registry-Pfad</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>Deinstallationsanweisung</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>In Zwischenablage &amp;kopieren...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Installationspfad</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Programmpfad</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Quellpfad</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Im &amp;Explorer öffnen...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Webseite aufrufen</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Online-&amp;Suche</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ei&amp;genschaften anzeigen</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Hauptfunktionen</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Manuell deinstallieren</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Installieren oder konfigurieren (/I)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Deinstallieren (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Stille Deinstallation (/X /qb)</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Deinstallation mit &amp;MSIExec</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Registryschlüssel löschen</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Umbenennen</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Backup anlegen...</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Schlüssel mit REGEDIT ö&amp;ffnen</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Er&amp;weiterte Funktionen</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Programmverzeichnisse &amp;bereinigen...</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Autostart Manager</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>\"&amp;Programme und Features\" öffnen</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ein&amp;stellungen</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Werkzeuge</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Hilfe öffnen</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Setup-Assistenten starten</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Nach Updates suchen</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Feedback senden...</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Einstellungen zurücksetzen</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller deinstallieren</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ü&amp;ber</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Hilfe</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Debug-Fenster öffnen</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Registry-Dateien|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Registry-Sicherung erstellen</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Name</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64bit</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Version</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Autostart verhindern</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>Benutzer-Bewertung</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Bewerten...</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Bewerten...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>Deinstallieren über Fenster, Ordner oder Datei</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>Ändern</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Hilfe</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Erweiterte Filter</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ausschließen</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Einschließen</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ausführen</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Erweitert</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zeige Windows Store Programme</value>\r\n  </data>\r\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Schnelle Filter</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Änderungen</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Erweitert</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Deinstalliere durch Fenster, Ordner oder Datei</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Deinstalliere aus Ordner</value>\r\n  </data>\r\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Installiere .NET v3.5 (für weitere Funktionen)</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Öffne \"Systemwiederherstellung\"</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zeige Baumstruktur&amp;Verzeichnis</value>\r\n  </data>\r\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Voreingestellte Filter</value>\r\n  </data>\r\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Nur &amp;Grundlegende Anwendungen</value>\r\n  </data>\r\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Nur System Komponenten</value>\r\n  </data>\r\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Alles</value>\r\n  </data>\r\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Nur Automatisch startend</value>\r\n  </data>\r\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Nur Web Browser</value>\r\n  </data>\r\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zeige Verbesserungen</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zeige Unregistrierte</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zeige Updates</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zeige Windows Eigenschaften</value>\r\n  </data>\r\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Exportiere in einem Batch Uninstall script</value>\r\n  </data>\r\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Erzeuge eine PowerShell entfernungs script für Store Programme</value>\r\n  </data>\r\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Beheben von Installationsproblemen</value>\r\n  </data>\r\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Starte Disk Cleanup</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>XML Dateien|*.xml</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Einen neuen Wiederherstellungspunkt setzen</value>\r\n  </data>\r\n  <data name=\"autosizeAllColumnsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Automatische Größenänderung aller Spalten</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Verantwortung übernehmen</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Nombre</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Editor</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>Calificación del usuario</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Versión</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Fecha de instalación</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Tamaño</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Inicio</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64 bits</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Comando de desinstalación</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>Acerca de URL</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Fuente de la instalación</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Ubicación de la instalación</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>Tipo de desinstalador</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>Componente del sistema</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Protegido</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Clave de registro</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Código del producto</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Comando de desinstalación silenciosa</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>Actualizar desinstaladores</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Seleccionar todo</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Deseleccionar todo</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Invertir selección</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalación silenciosa</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Propiedades</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Configuración</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Ayuda</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Filtrado avanzado</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Buscar</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalación &amp;silenciosa</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar &amp;manualmente</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Instalar o configurar (/I)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalación silenciosa (/X /qb)</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar usando &amp;MsiExec...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Avanzado...</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Información completa</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Nombre del programa</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Código del producto / GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Ruta completa del registro</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar cadena</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copiar al portapapeles</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Eliminar entrada del registro</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Renombrar...</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ubicación de instalación</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ubicación del desinstalador</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ubicación de la fuente</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir en el &amp;explorador...</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir &amp;página web</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Buscar en línea</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Calificar...</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Propiedades</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Archivos XML|*.xml</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exportar propiedades de los desinstaladores seleccionados</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Actualizar desinstaladores</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Abrir lista de desinstalación....</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Exportar selección...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>S&amp;alir</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Archivo</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar leyenda de colores</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar barra de &amp;herramientas</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar barra de &amp;estado</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar barra lateral de &amp;configuración</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Usar tema del sistema</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar apps de Windows Store</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Buscar...</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Mostrar</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalación &amp;silenciosa</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Avanzado...</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Información completa</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Nombre del programa</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Código del producto / GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Ruta completa de registro</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>Cadena de desinstalación</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copiar al portapapeles</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ubicación de instalación</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ubicación del desinstalador</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ubicación de origen</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Abrir en el &amp;explorador...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>Abrir &amp;página web</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Buscar en línea</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Calificar...</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar &amp;propiedades</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Operaciones básicas</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar &amp;manualmente</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Instalar o configurar (/I)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalación silenciosa (/X /qb)</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar usando MsiExec</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Renombrar...</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desactivar autoinicio</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Eliminar clave de registro</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Crear &amp;copia de seguridad...</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Abrir clave en RegEdit</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Operaciones avanzadas</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Limpiar carpetas \"Archivos de programas\"...</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir administrador de inicio</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir \"&amp;Programas y características</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Configuración</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Herramientas</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir &amp;ayuda</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Asistente de configuración de inicio</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Comprobar actualizaciones</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentario...</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Restaurar configuración</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar BCUninstaller</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Acerca de</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ayuda</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir &amp;ventana de depuración</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Archivos de registro|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Crear copia del registro</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar actualizaciones</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar desde directorio...</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir \"Restauración de sistema\"</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ejecutar...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar por ventana, directorio o archivo...</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar por ventana, directorio o archivo...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>Modificar</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Modificar</value>\r\n  </data>\r\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Instalar .NET v3.5 (Añadir característica)</value>\r\n  </data>\r\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Iniciar limpieza del disco</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Crear un nuevo punto de restauración</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Excluir</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Incluir</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Exportar a un script de desinstalación grupal...</value>\r\n  </data>\r\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Crear script de eliminación de PowerShell para Aplicaciones de la Tienda</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar árbol&amp;mapa</value>\r\n  </data>\r\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Filtros predeterminados</value>\r\n  </data>\r\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Solo aplicaciones &amp;básicas</value>\r\n  </data>\r\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Solo componentes del sistema</value>\r\n  </data>\r\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Todo</value>\r\n  </data>\r\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Solo las que inician automáticamente</value>\r\n  </data>\r\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Solo navegadores web</value>\r\n  </data>\r\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ver Retoques</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ver No Registradas</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ver Características de Windows</value>\r\n  </data>\r\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Filtros rápidos</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Tomar posesión</value>\r\n  </data>\r\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Solucionar problemas de desinstalación...</value>\r\n  </data>\r\n  <data name=\"autosizeAllColumnsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Redimensionar automáticamente todas las columnas</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Nom</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Éditeur</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Date d'installation</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Taille</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64bits</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Commande de désinstallation</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>URL relative</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Source d'installation</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Emplacement d'installation</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>Genre de désinstalleur</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>Composant système</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Protégé</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Clé de registre</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Code produit</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Commande de désinstallation silencieuse</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>Recharger les désinstalleurs</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller en silence</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Propriétés</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Désinstaller</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller en &amp;silence</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller &amp;manuellement</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Installer ou configurer (/I)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Désinstaller (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller en &amp;silence (/X /qb)</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller en utilisant &amp;MsiExec...</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Information &amp;complète</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Nom de programme</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Code produit / GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Chemin complet de registre</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Chaîne de désinstallation</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copier dans le presse-papiers...</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Supprimer l'entrée du registre</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Renommer...</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Emplacement d'&amp;installation</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Emplacement du &amp;désinstalleur</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Emplacement de la &amp;source</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir dans l'&amp;explorateur...</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir la Page &amp;Web</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Rechercher en ligne</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Propriétés</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exporter les propriétés du désinstalleur sélectionné</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Recharger les désinstalleurs</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ouvrir la Liste de Désinstallation...</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Exporter les données des désinstalleurs sélectionnés...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Quitter</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Fichier</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Afficher la légende des couleurs</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Afficher la barre d'ou&amp;tils</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Afficher la &amp;barre d'état</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Afficher la barre latérale des réglage&amp;s</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Utiliser le thème système</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Chercher...</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Affichage</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Désinstaller</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller en &amp;silence</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>In&amp;formation complète</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Nom de programme</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Code produit / GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Chemin complet de registre</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>Chaîne de désinstallation</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copier dans le presse-papiers...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>Emplacement d'&amp;installation</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>Emplacement du &amp;désinstalleur</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>Emplacement de la &amp;source</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir dans l'&amp;explorateur...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir la Page &amp;Web</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Rechercher en ligne</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Afficher les &amp;propriétés</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Opérations &amp;basiques</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller &amp;manuellement</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Installer ou configurer (/I)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Désinstaller (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller en &amp;silence (/X /qb)</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller en &amp;utilisant MsiExec</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Supprimer la clé de registre</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Renommer</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Créer une sau&amp;vegarde...</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ouvrir la clé dans Regedit</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Opérations a&amp;vancées</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Nettoyer les dossiers \"Program Files\"...</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir \"&amp;Programmes et Fonctionnalités\"</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Réglages</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ou&amp;tils</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir l'&amp;aide</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Démarrer l'assistant d'installation</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Vérifier les mises à jour</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Soumettre un retour...</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Réinitialiser les réglages</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller BCUninstaller</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>À &amp;propos</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ai&amp;de</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir la fenêtre de débo&amp;guage</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Fichiers registre|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Créer une sauvegarde du registre</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Version</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Réglages</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Sélectionner tout</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Désélectionner tout</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Inverser la sélection</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Chercher</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Démarrage</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir le Gestionnaire de Démarrage</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Désactiver démar. auto</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>Note utilisateur</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Noter...</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Noter...</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Aide</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Filtrage avancé</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Avancé...</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Voir les Applis Windows Store</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Avancé...</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Lancer...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo.net</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Voir les Mises à jour</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller depuis le dossier...</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir \"Récupération\"</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller par fenêtre, dossier ou fichier...</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller par fenêtre, dossier ou fichier...</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>Modifier</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Exclure</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Inclure</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Afficher la &amp;carte arborescente</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Voir les Non Enregistrés</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Voir les Fonctionnalités Windows</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Modifier</value>\r\n  </data>\r\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Exporter vers un script de désinstallation batch...</value>\r\n  </data>\r\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Créer un script PowerShell de désinstallation pour les applications du Windows Store...</value>\r\n  </data>\r\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Filtres par &amp;défaut</value>\r\n  </data>\r\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Applications &amp;basiques seules</value>\r\n  </data>\r\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Composants système seuls</value>\r\n  </data>\r\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Tout</value>\r\n  </data>\r\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Démarrages automatiques seuls</value>\r\n  </data>\r\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Navigateurs web seuls</value>\r\n  </data>\r\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Filtres &amp;Rapides</value>\r\n  </data>\r\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Résoudre les problèmes de désinstallation...</value>\r\n  </data>\r\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Lancer le Nettoyage de disque</value>\r\n  </data>\r\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Installer .NET v3.5 (ajout de fonctionalité)</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Fichiers XML|*.xml</value>\r\n  </data>\r\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Voir les Perfectionnements</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Créer un nouveau point de restauration</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Devenir propriétaire</value>\r\n  </data>\r\n  <data name=\"autosizeAllColumnsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Redimensionner auto toutes les colonnes</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Név</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Kiadó</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>Felhasználói minősítés</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Verzió</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Telepítés dátuma</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Méret</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Indítópult</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64-bites</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítási parancs</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>Névjegy URL</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Telepítési forrás</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Telepítési hely</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolító fajtája</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>Rendszerösszetevő</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Védett</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Beállításkulcs</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Termékkód</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Csendes eltávolító parancs</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítók újratöltése</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Mindet kijelöl</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Egyiket sem</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Kijelölés megfordítása</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítás</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>Csendes eltávolítás</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Tulajdonságok</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Beállítások</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Súgó</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Speciális szűrés</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Keresés</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>El&amp;távolítás</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Csendes eltávolítás</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kézi eltávolítás</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Telepítés, vagy beállítás (/I)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Eltá&amp;volítás (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Cse&amp;ndes eltávolítás (/X /qb)</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítás az &amp;MsiExec-el...</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Futtatás...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Speciális...</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Teljes információ</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Programnév</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Termékkód / GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Teljes registry útvonal</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítási karakterlánc</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Másolás a &amp;Vágólapra...</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Registry bejegyzés törlése</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Át&amp;nevezés...</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Tele&amp;pítési hely</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Eltáv&amp;olító helye</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Forrá&amp;s helye</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Megnyitás az &amp;Intézőben...</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Weboldal megnyitása</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Keresés az Interneten</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Minősítés...</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>T&amp;ulajdonságok</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>XML fájlok|*.xml</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Kijelölt eltávolító-tulajdonságok exportálása</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítók ú&amp;jratöltése</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítási &amp;lista megnyitása...</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Kijelöltek e&amp;xportálása...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kilépés</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Fájl</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Színmagyarázat mutatása</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Eszk&amp;ztár mutatása</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Állapot&amp;sor mutatása</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Beállítások oldalsáv mutatása</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ren&amp;dszertéma használata</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Microsoft Store alkalmazások mutatása</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Keresés...</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Nézet</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>El&amp;távolítás</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Csendes eltávolítás</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Speciális...</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Teljes információ</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Programnév</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Termékkód / GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Teljes registry útvonal</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítási karakterlánc</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>Másolás a &amp;Vágólapra...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>Tele&amp;pítési hely</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>Eltáv&amp;olító helye</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>Forrá&amp;s helye</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Megnyitás az &amp;Intézőben...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Weboldal megnyitása</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Keresés az Interneten</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Minősítés...</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Tula&amp;jdonságok mutatása</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Alapműveletek</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kézi eltávolítás</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Telepítés, vagy beállítás (/I)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>Eltá&amp;volítás (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>Cse&amp;ndes eltávolítás (/X /qb)</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítás az &amp;MsiExec-el</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Át&amp;nevezés...</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Automatikus indítás letiltása</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Beállításkulcs törlése</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Men&amp;tés készítése...</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Kulcs megnyitása a &amp;Regedit-ben</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Speciális műveletek</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>\"Program Files\" mappák &amp;kitakarítása...</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Indítópult kezelő megnyitása</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítás a könyvtárból...</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>\"&amp;Programok és szolgáltatások\" megnyitása</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>\"Rendszer-helyreállítás\" megnyitása</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Beállítás&amp;ok</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Esz&amp;közök</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Sú&amp;gó megnyitása</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Telepítővarázsló elindítása</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Frissítések ellenőrzése</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Visszajelzés küldése...</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Beállítások visszaállítása</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>A BCUninstaller eltávolítása</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Névjegy</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Súgó</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Hibakeresés ablak megnyitása</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Registry fájlok|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Beállításjegyzék mentésének létrehozása</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Frissítések mutatása</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítás ablak, mappa vagy fájl segítségével...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>Módosítás</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ne tartalmazza</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Tartalmazza</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mappafa&amp;térkép mutatása</value>\r\n  </data>\r\n  <data name=\"autosizeAllColumnsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Összes oszlop automatikus méretezése</value>\r\n  </data>\r\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Gyorsszűrők</value>\r\n  </data>\r\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Exportálás egy kötegelt eltávolítási szkriptbe...</value>\r\n  </data>\r\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>PowerShell eltávolító szkript létrehozása a Microsoft Store alkalmazásokhoz...</value>\r\n  </data>\r\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Alapértelmezett szűrők</value>\r\n  </data>\r\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Csak sima alkalmazások</value>\r\n  </data>\r\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Csak rendszerösszetevők</value>\r\n  </data>\r\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Minden</value>\r\n  </data>\r\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Csak automatikusan indulók</value>\r\n  </data>\r\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Csak böngészők</value>\r\n  </data>\r\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Javítások mutatása</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Nem regisztráltak mutatása</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Windows-szolgáltatások mutatása</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Módosítás</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Tulajdonba vétel</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítás ablak, mappa vagy fájl segítségével...</value>\r\n  </data>\r\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítási problémák hibaelhárítása...</value>\r\n  </data>\r\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Lemezkarbantartó indítása</value>\r\n  </data>\r\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>.NET v3.5 telepítése (funkcíó hozzádása)</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Új visszaállítási pont létrehozása</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Nome</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Editore</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>Valutazione utente</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Versione</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Data installazione</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Dimensione</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Avvio</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64bit</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Comando disinstallazione</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>URL relativa</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Sorgente installazione</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Percorso installazione</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>Tipo disinstallatore</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>Componente di sistema</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Protetto</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Chiave di registro</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Codice prodotto</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Comando disinstallazione silenziosa</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>Ricarica disinstallatori</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Seleziona tutto</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Deseleziona tutto</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Inverti selezione</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Disinstalla</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>Disinstalla silenziosamente</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Proprietà</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Configurazioni</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Aiuto</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Filtro avanzato</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Cerca</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Disinstalla</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Disinstalla &amp;silenziosamente</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Disinstalla &amp;manualmente</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Installa o imposta (/I)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Disinstalla (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Disinstallazione silenziosa (/X /qb)</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Disinstalla tramite&amp;MsiExec...</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Esegui...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Avanzato...</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Informazione completa</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Nome programma</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Codice prodotto / GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Percorso completo chiave registro</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Stringa disinstallazione</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copia negli Appunti</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Elimina voce registro</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Rinomina</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Percorso installazione</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Percorso disinstallatore</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Percorso sorgente</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Apri in &amp;Explorer...</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Apri &amp;pagina web</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ricerca in internet</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Valutazione...</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Proprietà</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>File XML|*.xml</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Esporta proprietà disinstallatore selezionato</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ricarica disinstallatori</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Apri elenco disinstallazione...</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Esporta selezione...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Esci</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;File</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza legenda colori</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza &amp;barra strumenti</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza &amp;barra di stato</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza barra laterale &amp;impostazioni</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Usa tema di sistema</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza App Store di Windows</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Cerca...</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Visualizza</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Disinstalla</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Disinstalla &amp;silenziosamente</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Avanzate...</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Informazioni &amp;Complete</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Nome programma</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Codice prodotto / GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Percorso completo registro</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>Stringa disinstallazione</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copia negli Appunti</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Percorso installazione</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>Percorso &amp;disinstallatore</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Percorso sorgente</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Apri in &amp;Explorer...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>Apri pagina &amp;web</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Cerca in internet</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Valuta...</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza &amp;proprietà</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Operazioni di &amp;base</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Disinstalla &amp;manualmente</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Installa o imposta (/I)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Disinstalla (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Disinstallazione silenziosa (/X /qb)</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Disinstalla tramite MsiExec</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Rinomina</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Disabilita avvio automatico</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Elimina chiave registro</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Crea &amp;backup</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Apri chiave in Regedit</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Operazioni &amp;avanzate</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Pulizia cartella \"Program files\"...</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Apri gestore avvio automatico</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Disinstalla da cartella...</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Apri \"&amp;Programmi e funzionalità\"</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Apri \"Ripristino di sistema\"</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Impostazioni</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Strumenti</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Apri &amp;Guida in linea</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Avvia assistente configurazione</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Controlla aggiornamenti</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Invia feedback...</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ripristina impostazioni</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Disinstalla BCUninstaller</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Info sul programma</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Aiuto</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Apri finestra di &amp;debug</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>File registro|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Crea backup registro</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>Disinstalla da finestra, cartella o file...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>Modifica</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Escludi</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Includi</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza struttura ad &amp;albero</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza non registrato</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza aggiornamenti</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza funzionalità di Windows</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Modifica</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Disinstalla da finestra, cartella o file...</value>\r\n  </data>\r\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Esporta in uno script per disinstallazione a blocchi...</value>\r\n  </data>\r\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Crea uno script PowerShell di rimozione per applicazioni dello Store...</value>\r\n  </data>\r\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Filtri pre&amp;definiti</value>\r\n  </data>\r\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Solo applicazioni di &amp;base</value>\r\n  </data>\r\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Solo componenti di sistema</value>\r\n  </data>\r\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Tutto</value>\r\n  </data>\r\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Solo avviati automaticamente</value>\r\n  </data>\r\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Solo browser web</value>\r\n  </data>\r\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza ottimizzazioni</value>\r\n  </data>\r\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Filtro &amp;rapido</value>\r\n  </data>\r\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Risoluzione dei problemi di disinstallazione...</value>\r\n  </data>\r\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Avvia pulizia disco</value>\r\n  </data>\r\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Installa .NET v3.5 (aggiungi funzionalità)</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Creare un nuovo punto di ripristino</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Assumi proprietà</value>\r\n  </data>\r\n  <data name=\"autosizeAllColumnsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ridimensionamento automatico di tutte le colonne</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\n    <value>名前</value>\n  </data>\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\n    <value>発行元</value>\n  </data>\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\n    <value>ユーザー評価</value>\n  </data>\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\n    <value>バージョン</value>\n  </data>\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\n    <value>インストール日</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>サイズ</value>\n  </data>\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\n    <value>スタートアップ</value>\n  </data>\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\n    <value>64ビット</value>\n  </data>\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\n    <value>アンインストールコマンド</value>\n  </data>\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\n    <value>詳細URL</value>\n  </data>\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\n    <value>インストール元</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>インストール場所</value>\n  </data>\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\n    <value>アンインストーラーの種類</value>\n  </data>\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\n    <value>システムコンポーネント</value>\n  </data>\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\n    <value>保護されている</value>\n  </data>\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\n    <value>レジストリキー</value>\n  </data>\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\n    <value>製品コード</value>\n  </data>\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\n    <value>静かなアンインストールコマンド</value>\n  </data>\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\n    <value>アンインストーラーを再読み込み</value>\n  </data>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>すべて選択</value>\n  </data>\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\n    <value>すべて選択解除</value>\n  </data>\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\n    <value>選択を反転</value>\n  </data>\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\n    <value>ウィンドウ、ディレクトリ、またはファイルによるアンインストール...</value>\n  </data>\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\n    <value>アンインストール</value>\n  </data>\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\n    <value>静かにアンインストール</value>\n  </data>\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\n    <value>変更</value>\n  </data>\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\n    <value>プロパティ</value>\n  </data>\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\n    <value>ヘルプ</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller</value>\n  </data>\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\n    <value>高度なフィルタリング</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>検索</value>\n  </data>\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;アンインストール</value>\n  </data>\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>静かにアンインストール</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>手動でアンインストールする</value>\n  </data>\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;インストールまたは設定する (/I)</value>\n  </data>\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;アンインストールする (/X)</value>\n  </data>\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;静かなアンインストール (/X /qb)</value>\n  </data>\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>MsiExecを使ってアンインストール...</value>\n  </data>\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>除外</value>\n  </data>\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>含める</value>\n  </data>\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>実行...</value>\n  </data>\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\n    <value>詳細...</value>\n  </data>\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;すべての情報</value>\n  </data>\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>プログラム名</value>\n  </data>\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>製品コード / GUID</value>\n  </data>\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>完全なレジストリパス</value>\n  </data>\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>アンインストール文字列</value>\n  </data>\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;クリップボードにコピー...</value>\n  </data>\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;レジストリエントリを削除</value>\n  </data>\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;名前を変更...</value>\n  </data>\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;インストール場所</value>\n  </data>\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;アンインストーラーの場所</value>\n  </data>\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;ソースの場所</value>\n  </data>\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>エクスプローラーで開く...</value>\n  </data>\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>ウェブページを開く</value>\n  </data>\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\n    <value>Google</value>\n  </data>\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\n    <value>AlternativeTo.net</value>\n  </data>\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Slant.co</value>\n  </data>\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>FossHub.com</value>\n  </data>\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>SourceForge.net</value>\n  </data>\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>GitHub.com</value>\n  </data>\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>FileHippo.com</value>\n  </data>\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;オンラインで検索</value>\n  </data>\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>評価する</value>\n  </data>\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;プロパティ</value>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>XMLファイル|*.xml</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>選択したアンインストーラーのプロパティをエクスポート</value>\n  </data>\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;アンインストーラーを再読み込み</value>\n  </data>\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;アンインストールリストを開く...</value>\n  </data>\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;選択したアンインストーラーのデータをエクスポート...</value>\n  </data>\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>バッチアンインストールスクリプトにエクスポート...</value>\n  </data>\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>ストアアプリ用のPowerShell削除スクリプトを作成...</value>\n  </data>\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;終了</value>\n  </data>\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;ファイル</value>\n  </data>\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>色の説明を表示</value>\n  </data>\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>ツールバーを表示</value>\n  </data>\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>ツリーマップを表示</value>\n  </data>\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>設定サイドバーを表示</value>\n  </data>\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>ステータスバーを表示</value>\n  </data>\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;システムテーマを使用</value>\n  </data>\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;表示</value>\n  </data>\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;デフォルトフィルター</value>\n  </data>\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>基本的なアプリケーションのみ</value>\n  </data>\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>システムコンポーネントのみ</value>\n  </data>\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;すべて</value>\n  </data>\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>自動的に開始されたもののみ</value>\n  </data>\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>自動的に開始されたもののみ</value>\n  </data>\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Tweaksを表示</value>\n  </data>\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>未登録のものを表示</value>\n  </data>\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>更新を表示</value>\n  </data>\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Windows機能を表示</value>\n  </data>\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Windowsストアアプリを表示</value>\n  </data>\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>検索...</value>\n  </data>\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>クイックフィルター</value>\n  </data>\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;アンインストール</value>\n  </data>\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>静かにアンインストール</value>\n  </data>\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>変更</value>\n  </data>\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>詳細...</value>\n  </data>\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;すべての情報</value>\n  </data>\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\n    <value>プログラム名</value>\n  </data>\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\n    <value>製品コード / GUID</value>\n  </data>\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\n    <value>完全なレジストリパス</value>\n  </data>\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\n    <value>アンインストール文字列</value>\n  </data>\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\n    <value>&amp;クリップボードにコピー</value>\n  </data>\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\n    <value>&amp;インストール場所</value>\n  </data>\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\n    <value>&amp;アンインストーラーの場所</value>\n  </data>\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\n    <value>&amp;ソースの場所</value>\n  </data>\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>&amp;エクスプローラーで開く...</value>\n  </data>\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\n    <value>&amp;ウェブページを開く</value>\n  </data>\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Google</value>\n  </data>\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>AlternativeTo</value>\n  </data>\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Slant.co</value>\n  </data>\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\n    <value>FossHub.com</value>\n  </data>\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\n    <value>SourceForge.net</value>\n  </data>\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\n    <value>GitHub.com</value>\n  </data>\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\n    <value>FileHippo.com</value>\n  </data>\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;オンラインで検索</value>\n  </data>\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>評価する</value>\n  </data>\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;プロパティを表示</value>\n  </data>\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;基本操作</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;手動でアンインストール</value>\n  </data>\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\n    <value>&amp;インストールまたは設定 (/I)</value>\n  </data>\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\n    <value>&amp;アンインストール (/X)</value>\n  </data>\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\n    <value>&amp;静かにアンインストール (/X /qb)</value>\n  </data>\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;MsiExecを使ってアンインストール</value>\n  </data>\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;名前を変更...</value>\n  </data>\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>自動起動を無効にする</value>\n  </data>\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;レジストリキーを削除</value>\n  </data>\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;バックアップを作成...</value>\n  </data>\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Regeditでキーを開く</value>\n  </data>\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>所有権を得る</value>\n  </data>\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;高度な操作</value>\n  </data>\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>スタートアップマネージャを開く</value>\n  </data>\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;「プログラムフォルダ」をクリーンアップ...</value>\n  </data>\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\n    <value>ウィンドウ、ディレクトリ、またはファイルからアンインストール...</value>\n  </data>\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>ディレクトリからアンインストール...</value>\n  </data>\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>アンインストールの問題をトラブルシューティング</value>\n  </data>\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>ディスククリーンアップを開始</value>\n  </data>\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>.NET v3.5をインストール（機能を追加）</value>\n  </data>\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;「プログラムと機能」を開く</value>\n  </data>\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>「システム回復」を開く</value>\n  </data>\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;設定</value>\n  </data>\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;ツール</value>\n  </data>\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;ヘルプを開く</value>\n  </data>\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>セットアップウィザードを開始</value>\n  </data>\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>アップデートを確認</value>\n  </data>\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>フィードバックを送信...</value>\n  </data>\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>設定をリセット</value>\n  </data>\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\n    <value>BCUninstallerをアンインストール</value>\n  </data>\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;詳細</value>\n  </data>\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;ヘルプ</value>\n  </data>\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;デバッグウィンドウを開く</value>\n  </data>\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\n    <value>レジストリファイル|*.reg</value>\n  </data>\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\n    <value>レジストリバックアップを作成</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bulk Crap Uninstaller</value>\n  </data>\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>新しい復元ポイントを作成</value>\n  </data>\n</root>\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Naam</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Uitgever</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>Gebruikers waardering</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Versie</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Installatie datum</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Grootte</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Opstarten</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64bit</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>De-installeer opdracht</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>Info URL</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Installatie bron</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Installatie pad</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>De-installatie methode</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>Systeem component</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Beveiligd</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Registersleutel</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Productcode</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>'Stille' de-installatie opdracht</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>De-installers opnieuw laden</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Selecteer alles</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Deselecteer alles</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Omkeren selectie</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>De-installeer</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>De-installeer 'stil'</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Eigenschappen</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Instellingen</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Help</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Geavanceerde filtering</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Zoeken</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;De-installeer</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;De-installeer 'stil'</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>De-installeer &amp;handmatig</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Installeren of configureren (/l)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;De-installeren (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>'Stille' &amp;de-installatie (/X /qb)</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>De-installeren met &amp;MsiExec...</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Uitvoeren...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Geavanceerd...</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Volledige informatie</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Programmanaam</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Productcode / GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Volledig register pad</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>De-installatie string</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kopiëren naar klembord</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Registersleutel &amp;verwijderen</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Hernoemen...</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Installatie pad</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;De-installatie pad</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Bron locatie</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Openen in &amp;verkenner</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Website openen</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>Alternatief voor</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Online &amp;zoeken</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Waardering...</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Eigenschappen</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>XML bestanden|*.xml</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exporteer geselecteerde de-installer eigenschappen</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>De-installers &amp;opnieuw laden</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>De-installatie lijst(en) &amp;openen</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Exporteren selectie...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Afsluiten</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Bestand</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Kleurenlegenda tonen</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Werkbalk tonen</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Statusbalk &amp;tonen</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Instellingen &amp;zijbalk tonen</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Gebruik systeemthema</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Bekijk updates</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Bekijk Windows Store apps</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zoeken...</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Beeld</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;De-installeren</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>De-installeer &amp;onzichtbaar</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Geavanceerd...</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Volledige informatie</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Programma naam</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Product code / GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Volledig register pad</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>De-installatie string</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kopieer naar klembord...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Installatie locatie</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>&amp;De-installatie locatie</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Bron locatie</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Openen in &amp;verkenner...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Website oproepen</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Alternatief voor...</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Online &amp;zoeken</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Waardering...</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Eigenschappen &amp;tonen</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Basis bewerkingen</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Handmatig de-installeren</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Installeren of configureren (/l)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>&amp;De-installeren (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Stille de-installatie (/X /qb)</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;De-installeren met MsiExec</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Hernoemen...</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Autostart uitschakelen</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Verwijder registersleutel</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Backup van register maken</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Open de sleutel met Regedit</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Geavanceerde bewerkingen</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Opruimen \"Programma bestanden\" mappen...</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Opstartmanager openen</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>De-installeer uit de map...</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Instellingen</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Gereedschappen</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Setup assistent starten</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Naar updates zoeken</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Feedback sturen</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Instellingen terugzetten</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>De-installeer BCUninstaller</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Over</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Help</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Open venster &amp;foutopsporing</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Register bestanden|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Backup van register maken</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>\"&amp;Programma's en onderdelen\" openen</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>\"Systeemherstel\" openen</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Help openen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>De-installeer mbv. venster, map of bestand...</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>De-installeer mbv. venster, map of bestand...</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Bekijk ongeregistreerd</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Bekijk Windows onderdelen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>Wijzigen</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Uitsluiten</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Inbegrepen</value>\r\n  </data>\r\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Exporteren naar een batch de-installeer script...</value>\r\n  </data>\r\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Creëer een PowerShell verwijder script voor Store Apps...</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Boomstructuur &amp;map tonen</value>\r\n  </data>\r\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Standaard filters</value>\r\n  </data>\r\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Alleen &amp;basis toepassingen</value>\r\n  </data>\r\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Alleen systeemcomponenten</value>\r\n  </data>\r\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Alles</value>\r\n  </data>\r\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Alleen automatisch gestart</value>\r\n  </data>\r\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Alleen web browsers</value>\r\n  </data>\r\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Snelle filters</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Wijzigen</value>\r\n  </data>\r\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Foutopsporing de-installatie problemen</value>\r\n  </data>\r\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Start schijfopruiming</value>\r\n  </data>\r\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Installeer .NET v3.5 (toevoeg functie)</value>\r\n  </data>\r\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Bekijk tweaks</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Maak een nieuw herstelpunt</value>\r\n  </data>\r\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Neem eigenaarschap op</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Wyszukiwarka</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Nazwa</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Wydawca</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Wersja</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Data instalacji</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Rozmiar</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Autostart</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64bity</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Komenda dezinstalacji</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>Adres informacji</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Źródło instalacji</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Miejsce zainstalowania</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>Rodzaj dezinstalatora</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>Element systemowy</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Zabezpieczony</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Klucz rejestru</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Kod produktu</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Komenda cichej dezinstalacji</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>Odśwież dezinstalatory</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz listy dezinstalatorów...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Zaznacz wszystko</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Odznacz wszystko</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Odwróć zaznaczenie</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj cicho</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Właściwości</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odinstaluj</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj &amp;cicho</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj &amp;ręcznie</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Instaluj lub skonfiguruj (/I)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odinstaluj (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj &amp;cicho (/X /qb)</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj przez &amp;MsiExec</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Pełne informacje</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Nazwa programu</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Kod produktu / GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Ścieżka klucza w rejestrze</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Komenda dezinstalacji</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kopiuj do schowka...</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Usuń klucze rejestru</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Zmień nazwę...</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Miejsce &amp;zainstalowania</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Miejsce &amp;dezinstalatora</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Źródło &amp;instalacji</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz w &amp;explorerze...</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz stronę &amp;Web</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Szukaj online</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Właściwości</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Pliki XML|*.xml</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Eksportuj właściwości wybranych elementów</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odśwież dezinstalatory</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Załaduj zaznaczenie z &amp;list...</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Eksportuj zaznaczone pozycje...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Za&amp;mknij</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Plik</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż legendę kolorów</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż pasek &amp;narzędzi</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż pasek &amp;stanu</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż panel &amp;ustawień</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Użyj motywu systemowego</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Szukaj...</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Widok</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odinstaluj zaznaczone</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Cicho odinstaluj zaznaczone</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Pełne informacje</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Nazwa programu</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Kod produktu / GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Ścieżka klucza w rejestrze</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>Komenda dezinstalacji</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kopiuj do schowka...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>Miejsce &amp;zainstalowania</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>Miejsce &amp;dezinstalatora</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>Źródło &amp;instalacji</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz w &amp;explorerze...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz stronę &amp;Web</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Szukaj online</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Właściwości</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Po&amp;dstawowe operacje</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj &amp;ręcznie</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Instaluj lub skonfiguruj (/I)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odinstaluj (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj &amp;cicho (/X /qb)</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj przez &amp;MsiExec</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Zmień nazwę...</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Wyłącz autostart</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Usuń klucze rejestru</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Utwórz &amp;kopię zapasową...</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Otwórz klucz w Regedit</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Zaawansowane operacje</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Wyczyść foldery \"Program Files\"...</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz Menedżer Autostartu</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz &amp;Programy i funkcje</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Dezinstaluj z folderu...</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ustawienia</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Narzędzia</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz &amp;pomoc</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Uruchom kreator konfiguracji</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Sprawdź uaktualnienia</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Wyślij feedback...</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Resetuj ustawienia</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj BCUninstaller</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;O programie</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Po&amp;moc</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz okno &amp;debugowania</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Pliki rejestru|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Utwórz kopię rejestru</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>Ocena użytkowników</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Oceń...</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Oceń...</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Pomoc</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Zaawansowane filtrowanie</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Zaawansowane...</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż aplikacje Windows Store </value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zaawansowane...</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz \"Przywracanie systemu\"</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Uruchom...</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż aktualizacje</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj wskazujac okno, folder, lub plik...</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj wskazując okno, folder, lub plik...</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż tree&amp;map</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż niezarejestrowane</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż funkcje systemu Windows</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Modyfikuj</value>\r\n  </data>\r\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Uruchom Oczyszczanie dysku</value>\r\n  </data>\r\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zainstaluj .NET v3.5 (dodaj funkcję)</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>Modyfikuj</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Wyklucz</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Załącz</value>\r\n  </data>\r\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Rozwiązywanie problemów z odinstalowaniem...</value>\r\n  </data>\r\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Domyślne filtry</value>\r\n  </data>\r\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Tylko podstawowe aplikacje</value>\r\n  </data>\r\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Tylko komponenty systemowe</value>\r\n  </data>\r\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Wszystko</value>\r\n  </data>\r\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Tylko automatycznie uruchamiane</value>\r\n  </data>\r\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Tylko przeglądarki internetowe</value>\r\n  </data>\r\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Eksportuj do skryptu dezinstalacyjnego (.bat)...</value>\r\n  </data>\r\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Utwórz skrypt PowerShell usuwający Store Apps...</value>\r\n  </data>\r\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Szybkie filtry</value>\r\n  </data>\r\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż usprawnienia</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Utwórz nowy punkt przywracania</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Nome</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Editor</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>Classificação do usuário</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Versão</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Data da instalação</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Tamanho</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Inicialização</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64bit</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Comando de desinstalação</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>Sobre o URL</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Fonte da Instalação</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Local da instalação</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>Tipo de desinstalador</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>Componente do sistema</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Protegido</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Chave do registro</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Código do produto</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Comando da desinstalação silenciosa</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>Recarregar desinstaladores</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Selecionar tudo</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Desmarcar tudo</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Inverter seleção</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar por janela, diretório ou arquivo ...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar silenciosamente</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>Modificar</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Propriedades</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Configurações</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Ajuda</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Filtragem avançada</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Procurar</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar &amp;silenciosamente</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar &amp;manualmente</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Instalar ou configurar (/I)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Desins&amp;talar (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalação &amp;Silenciosa(/X /qb)</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar usando o &amp;MsiExec...</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Excluir</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Incluir</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Executar</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Avançado...</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>In&amp;formações completas</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Nome do programa</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Código do produto / GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Caminho completo do registro</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Sequência de desinstalação</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copiar para a Área de Transferência...</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Excluir a entra&amp;da do registro</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Renomear...</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Local da &amp;instalação</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Localização do &amp;desinstalador</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Localização da &amp;fonte</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir no &amp;explorer...</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir Página da &amp;Web</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pe&amp;squisar on-line</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Avalie...</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Propriedades</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Arquivos XML|*.xml</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exportar as propriedades do desinstalador selecionado</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Recarregar desinstaladores</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir as listas de desinstalaçã&amp;o</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Exportar a seleção...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>S&amp;air</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ar&amp;quivo</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar legenda de cores</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mos&amp;trar barra de ferramentas</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar árvore e &amp;mapa</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar a barra de configuraçõe&amp;s lateral</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar a &amp;barra de status</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Usar o tema do sistema</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Exibir não registrado</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ver atualizações</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Exibir recursos do Windows</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Exibir Apps da Windows Store</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Procurar...</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Visualizar</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar &amp;silenciosamente</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Modificar</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Avançado..</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>In&amp;formações completas</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Nome do programa</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Código do produto / GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Caminho completo do registro</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>Sequência de desinstalação</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copiar para a Área de Transferência...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>Local da &amp;instalação</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>Localização do &amp;desinstalador</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>Localização da &amp;fonte</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Abrir no &amp;explorer...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>Abrir Página da &amp;Web</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pe&amp;squisar on-line</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Avalie...</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Exibir &amp;Propriedades</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Operações &amp;básicas</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar &amp;manualmente</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Instalar ou configurar (/I)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>Desins&amp;talar (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalação &amp;Silenciosa(/X /qb)</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar usando o &amp;MsiExec...</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Renomear...</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desativar auto-inicialização</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Excluir a chave &amp;do registro</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Criar &amp;backup...</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir a chave n&amp;o Regedit</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Operações &amp;avançadas</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir o Gerenciador de Inicialização</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Limpar pastas \"Arquivos de Programas\"...</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar por janela, diretório ou arquivo...</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar do diretório...</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir \"&amp;Programas e Recursos\"</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir \"Recuperação do Sistema\"</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Configurações</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ferramentas</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir &amp;ajuda</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Iniciar o assistente de configuração</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Verificar atualizações</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentário...</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Redefinir configurações</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar o BCUninstaller</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Sobre</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ajuda</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir a janela de &amp;depuração</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Arquivos do registro|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Criar cópia de segurança do registro</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"autosizeAllColumnsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Redimensionar automaticamente todas as colunas</value>\r\n  </data>\r\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Filtros rápidos</value>\r\n  </data>\r\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Exportar para um script de desinstalação em lote...</value>\r\n  </data>\r\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Criar um script Powershell para remover Store Apps..</value>\r\n  </data>\r\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Filtros padrão</value>\r\n  </data>\r\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Apenas aplicações &amp;básicas</value>\r\n  </data>\r\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Apenas componentes do sistema</value>\r\n  </data>\r\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Tudo</value>\r\n  </data>\r\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Apenas inicialização automática</value>\r\n  </data>\r\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Apenas navegadores</value>\r\n  </data>\r\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ver mudanças</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Assumir a propriedade</value>\r\n  </data>\r\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Solução de problemas de desinstalação..</value>\r\n  </data>\r\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Iniciar Limpeza de Disco</value>\r\n  </data>\r\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Instalar .NET v3.5 (add recurso)</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Criar um novo ponto de restauração</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Nome</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Editor</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>Classificação do utilizador</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Versão</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Data da isntalação</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Tamanho</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Inicialização</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Comando de desinstalação</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>Acerca do URL</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Origem da instalação</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Localização da instalação</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>Tipo de desinstalador</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>Componente do sistema</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Protegido</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Chave do registo</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Código do produto</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Comando da desinstalação em segundo plano</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>Recarregar desinstaladores</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Seleccionar tudo</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Desmarcar tudo</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Inverter selecção</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar em segundo plano</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Propriedades</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Configurações</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Ajuda</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Filtragem avançada</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Procurar</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar em &amp;segundo plano</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar &amp;manualmente</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Instalar ou configurar (/I)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalação em segundo plano(/X /qb)</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar usando o &amp;MsiExec...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Avançado...</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Informação completa</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Nome do programa</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Código do produto / GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Percurso completo do registo</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Cadeia de desinstalação</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copiar para a Área de Transferência...</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Suprimir a entrada do registo</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Renomear...</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Localização da&amp;instalação</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Localização do desinstalador</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Localização da origem</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir no&amp;explorador...</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir &amp;P</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>agina Web</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Classificar...</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Propriedades</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Ficheiros XML|*.xml</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exportar as propriedades do desinstalador seleccionado</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Recarregar os desinstaladores</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Abrir as listas de desinstalação</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Exportar a selecção...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>S&amp;air</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ficheiro</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar a legenda das cores</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar a&amp;barra de ferramentas</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar a barra de &amp;estado</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar a &amp;barra lateral de configurações</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Usar o tema do sistema</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ver app no Windows Store</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Procurar...</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Visualizar</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar em &amp;segundo plano</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Avançado..</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Informação completa</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Nome do programa</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Código do produto / GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Percurso completo do registo</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>Cadeia de desinstalação</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copiar para a Área de Transferência</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Localização da instalação</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Localização da desinstalação</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Localização da origem</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Abrir em &amp;explorador...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>Abrir &amp;Página Web</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Procuraron line</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Classificar...</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar &amp;propriedades</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Operações básicas</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar&amp;manualmente</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Instalar e configurar (/I)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar em segundo plano (/X /qb)</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Desinstalar usando o MsiExec</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Renomear...</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desactivar o arranque automático</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Apagar a chave do registo</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Criar &amp;cópia de segurança...</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Abrir a chave no Regedit</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Operações avançadas</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Limpar as pastas dos \"Ficheiros do programa\"...</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir o Gestor da Inicialização</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir \"&amp;Programas e Funcionalidades\"</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Configurações</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ferramentas</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir &amp;ajuda</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Iniciar o assistente de instalação</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Verificar actualizações</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Enviar comentário...</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Redefinir configurações</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar o BCUninstaller</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Acerca do</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ajuda</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir a &amp;janela de depuração</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Ficheiros do registo|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Criar cópia de segurança do registo</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64bit</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar do directório.</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir o \"Sistema de Recuperação\".</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Executar</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar actualizações</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar através de janela, directório ou arquivo...</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar através de janela, directório ou arquivo...</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Criar um novo ponto de restauro</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"splitContainer1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"splitContainer1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>228, 24</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"splitContainer1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"advancedFilters1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"advancedFilters1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"advancedFilters1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"advancedFilters1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>417, 598</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"advancedFilters1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedFilters1.Name\" xml:space=\"preserve\">\r\n    <value>advancedFilters1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedFilters1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Controls.AdvancedFilters, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedFilters1.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedFilters1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"splitContainer1.Panel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel1.Name\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel1.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"splitContainer1.Panel1MinSize\" type=\"System.Int32, mscorlib\">\r\n    <value>320</value>\r\n  </data>\r\n  <data name=\"splitContainerListAndMap.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"splitContainerListAndMap.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 30</value>\r\n  </data>\r\n  <data name=\"splitContainerListAndMap.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"splitContainerListAndMap.Orientation\" type=\"System.Windows.Forms.Orientation, System.Windows.Forms\">\r\n    <value>Horizontal</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Name</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayName.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>249</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Publisher</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>160</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>User rating</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>80</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Version</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Install Date</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>70</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Size</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>65</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Startup</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>52</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64bit</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>40</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall command</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>160</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>About URL</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>160</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Install Source</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>160</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Install Location</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>160</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>Uninstaller Kind</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>System Component</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>40</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Protected</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>40</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Registry key</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>160</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Product code</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>260</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Quiet uninstall command</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>160</value>\r\n  </data>\r\n  <data name=\"uninstallerObjectListView.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"uninstallerObjectListView.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"uninstallerObjectListView.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"uninstallerObjectListView.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>377, 485</value>\r\n  </data>\r\n  <data name=\"uninstallerObjectListView.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallerObjectListView.Name\" xml:space=\"preserve\">\r\n    <value>uninstallerObjectListView</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallerObjectListView.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.ObjectListView, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallerObjectListView.Parent\" xml:space=\"preserve\">\r\n    <value>listViewPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallerObjectListView.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"listViewPanel.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"listViewPanel.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"listViewPanel.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"listViewPanel.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>379, 487</value>\r\n  </data>\r\n  <data name=\"listViewPanel.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listViewPanel.Name\" xml:space=\"preserve\">\r\n    <value>listViewPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listViewPanel.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listViewPanel.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainerListAndMap.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listViewPanel.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainerListAndMap.Panel1.Name\" xml:space=\"preserve\">\r\n    <value>splitContainerListAndMap.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainerListAndMap.Panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainerListAndMap.Panel1.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainerListAndMap</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainerListAndMap.Panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"treeMap1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"treeMap1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"treeMap1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"treeMap1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>379, 56</value>\r\n  </data>\r\n  <data name=\"treeMap1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;treeMap1.Name\" xml:space=\"preserve\">\r\n    <value>treeMap1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;treeMap1.Type\" xml:space=\"preserve\">\r\n    <value>SimpleTreeMap.TreeMap, SimpleTreeMap, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;treeMap1.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainerListAndMap.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;treeMap1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainerListAndMap.Panel2.Name\" xml:space=\"preserve\">\r\n    <value>splitContainerListAndMap.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainerListAndMap.Panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainerListAndMap.Panel2.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainerListAndMap</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainerListAndMap.Panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"splitContainerListAndMap.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>379, 548</value>\r\n  </data>\r\n  <data name=\"splitContainerListAndMap.SplitterDistance\" type=\"System.Int32, mscorlib\">\r\n    <value>487</value>\r\n  </data>\r\n  <data name=\"splitContainerListAndMap.SplitterWidth\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"splitContainerListAndMap.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainerListAndMap.Name\" xml:space=\"preserve\">\r\n    <value>splitContainerListAndMap</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainerListAndMap.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainerListAndMap.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainerListAndMap.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"toolStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <data name=\"toolStrip.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r\n        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALhSURBVGhD7ZlPhFZRGMa/T5EkzSKSpChGEmkRLUpajhYt\r\n        iqLFGIZK2yiSlAzTLlpFi5hNtGiRFEWLDLNNtJo2ERkzUZLkq99T93Kd7517zz3n3Jm53IefM6753nOf\r\n        e8/7nj+316lTp1ZqFDb9/7PdOgNvoPVmZOQPrLqZDbAPTsI4TMBZOAFboUq5kZU3MxgMttNchzn4CfmN\r\n        WLyHaZBZS0UjYkXMKDFn4DcUO/flGRyFolwj4iKkF29gI81dqHr6vjyCfNhZRi5Bcu2Ad+B2Fss8HIDm\r\n        jfAmDtF8BrejVCzClHNNJDWifFgAt5Miv+AVKPHHMH6Y9hichsvwBL6B9dsy0hjhhjbTfACrE/EDlDPb\r\n        oFRZfl2Br2DFskj2Ru6D1YFQOdXYriuZfg1WTJd4I9nwsIKL2Bqv3yqGFbtIkjeiWm8Ffws+JjSMvpSg\r\n        BLfiF4k2sh+swN9hD/hKM7kVx5doI7fBCqzErqsYM9FGlMhuUC1HdkOIQs1EGdEq1gqq5IzRHdADqsM5\r\n        CNYRGDLS7/dv0rZKe0GzsUudJO/UaY1Iw9YazjuhPcoKyVCBybYPwVLJs0phGVpcroNQaQvgGtEuVFNB\r\n        sDQJuUF9eAi1zfDUdYBh7f31gKIUakSEmLkFViytBqIUY0TUMbMLtBAdihObH5KPkSWwluY52n9XSeP/\r\n        JVjxn0O0fIzEbqxk4ilYsfU2tKmLlu/QmoWQZYvmBm3OrJjiASRRnRxRiVRSVh4+oBG4AWU7w4+g/0si\r\n        y8jAuFZE5VPD7SqcyhJVu8wxmITHUHV6ouOig5BMlhGdV31yrqVkMUWVcmUZ0XGm8qGpI1MdAibXckYk\r\n        Vap7UDXUfFAMJfYWaEQa026nuZFcOpiL+azwIlWJLZNV410j/8TNaJ10DZToVZ8aVJF0CrPch55G5Jox\r\n        jThaD6pU+tx2AfSR5jwcB5/y3JiKZnyMrGnlZlpvRJKZ0IO5Tp06rZp6vb/qRp+fJ/k5hwAAAABJRU5E\r\n        rkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>132, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>Reload uninstallers</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator22.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>6, 29</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r\n        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHrSURBVGhD7ZahSgVREIYXDCZBEBHxAcRiMBiMNpvFF7DZ\r\n        RDD4ACJYfACjQTAIRoNBm0Uf4QaDzaIYDKv/r3vkMMzu3fXMmOaDj13O3Ts/s3vvnK2CIAiCIAiCoSzA\r\n        xZ9TGz7/0RNY1XU9hcMjfMb5Ctcs0AI9vIATcBLeNmv0Ba7DYvIwL28gG2Aj581a7iucg0XIotY+wGlI\r\n        jqB2zR4sRits5Qj/gXkcyS7UrjmFJmjFrdmCNZQ5d5A/ORNkcWrJGnyHMmMEZ6AZMoBawX2CU0nW5597\r\n        CZoiQ6iEj593dgjc8J6grM2f2AY0RwbRHDZxBT/gJhfGkW14Wm2TCaWhhSVSE2mdd3MbdsHvXMO8XtJs\r\n        QmlogYlLKD9jMztQo23Do98TCk9rFkcXtNAE7742Nuk+lLRteGlC8WndQxe04JyuZg5hgk9JuyafUGeQ\r\n        ay7IYC2oq5lj2LbhcS1NqAOY1l3Ig7uCupppM00oTrv8uy7kweOChjTzPaHw517G4a1ZS7qQB/QJ6tNM\r\n        /g6lbYouyJA+QV3NyHco7RoX/hqkNaO9Q+WfJ10oCcqb4VF7h5K1qQulQamZtneo0vq9KQ7CZFptTjWK\r\n        6/fFO8i7/i9akLcuaEHeuqAFeeuCFuStC1qQt0EQBEEQDKOqvgAXhV7oKQ97YAAAAABJRU5ErkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Select all</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r\n        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACBSURBVGhD7c2xDcAwAMOw/P90+oBHgx1iAZp51lprrfVo\r\n        96frJURcLyHiegkR10uIuJ5AhEEQYRBEGAQRBkGEQRBhEEQYBBEGQYRBEGEQRBgEEQZBhEEQYRBEGAQR\r\n        BkGEQRBhEEQYBBFGRMT1EiKulxBxvYSI6yVEvNZaa63HOucDln3yHBqFG0wAAAAASUVORK5CYII=\r\n</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Deselect all</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r\n        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKSSURBVGhD7Zk/aBRBGMUPFEREEMRKAnZWNqLWYiFomTpV\r\n        CFYpbAQVEWwVFG0trWwEEYsUKULqkCIgEuwUBIukiIWInL53uS+8GWd2Zu9mLqvsD37sZWfv++axf26W\r\n        DHp6/j/mxtsq/K7oEM5Dcg3+gLdHf1UgNIFS3oLkAtyFtv85PAKLoo1L+gCSs/Az9McfwaJo8aIMh8OT\r\n        2GxC7UG/QQYsijYoyTG4ArU+/YmAV7AtjjYpyUuotc0FWAVtUoqHUOuaT2E1tJEDLoGL2KzC06MdeSxC\r\n        rWmyzlFYDW12wDjEDuT+LZhzc96Ev6DWpNvwFKyKNhzhhTA5maYwl+B3qN+he/A8rI42Nd5A3W9+gaFJ\r\n        nYNfoX88f9lvwJmgjY0TcA3qmMkw/KU2eP98gKFj78GZoY2VpjA748uPvxWxY15BwktuJmhzn8YwkE+i\r\n        0NgGgh6HZ/CZZ3BaluA6/ASfsDZ3+ugEQjSFCcmJ86GgZ2tSWOM19HuwLufloAfEyA2jy49n0PZPAkO8\r\n        hVpf5XwcdLCJnDC6/ND9bUmFMB2iAwGawvjLDx1ry3XIR7fWCOkQHYgQCvMe+ssPHc+FZ8LgUicVxiE6\r\n        0ICGiS0/2ta1mo9Hf+2TCuMQHUjAxu9gbPnRpq5/lnPDOEQHpiS3buhSpTlhHKIDU5JTNxbCTIVx0IFa\r\n        hkiFMGNheG86+F+soU9uCNMP8xH+9UoR+mJplbYhTA2jj+lDYdIQ5n146EwbIvZSN1P6ELAPUYo+BOxD\r\n        lKIPAfsQpeAr7j8fwrgDQ5NM2akQRtswnQxh5IbpXAjeH3f3Px6QCtPJM3EVcnL60kNiYTp7Ob2ANslU\r\n        mE7fE/5/qWJhOh3iMtQQph9mGVYIMRj8AeHfJWi9bK+YAAAAAElFTkSuQmCC\r\n</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Invert selection</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator23.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>6, 29</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall by window, directory, or file...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator21.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>6, 29</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r\n        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFKSURBVGhD7dfBrcIwEEXRdMCSBqiBIqiFLtjBmjVV0AT1\r\n        sESBiUQi84iNx56MbTRXekJC+uDzI4joLMuyrLG+77f0cKXdaLvhuaZyAE9YG6AAAFcniAHA1QHKAODK\r\n        gAQBOB3QggDcMiBFAE4GVBCAywLtaXMvWnJnGr9/uSJTzX9GsOa/tbAFQToATBBUBLB6P05lgHyAr/cQ\r\n        yznsg3ahbWgfMUA+wJp2ot1pslcpcLgUUAwg9m/iYvx3Y0ApAFwaiAEZ5wXNxAGMU7sy40IgfQCWCSoP\r\n        wBJB9QCwBNCv6QIwAZA+4H3oI41z7/DNBxg+TweaPG7mkDH3DvfQ7kIA/EKQuVoRh+KAOABcFojzU/cX\r\n        KBWAU/up6wU5lbunCIHKAbAMUB0ALAEUOx0AJggqA8AyQHUAMAaoTgAWALUBwBxQmwDLsqyF6roXJMB3\r\n        ommlYIwAAAAASUVORK5CYII=\r\n</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>79, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r\n        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIySURBVGhD7ZcxLwRBGIYvUSgUCoVChIRERCMKiUKi9lv8\r\n        BJ1SrRatTkThLyj8AIVKKSiUsrzv2e/y+W5mbnZvdmdP9kmeDG72Zh97u7c76Onp6ekRiqLYx3AHH+Ax\r\n        /zZTqIBv42wEBQKs3QyqEGDtRtAUAdY8QQkDrO0ENRhgbSaoxQBrmqCMAdapgk6g601zegGr81+OyIiZ\r\n        P0csM3/VsjQY1E6AJWFQloDFchwxRZAvYGyNZKid/YKXcBP+oUKQL2AZnsNPmPYoBXauTlBMQOw2caid\r\n        eYauBcSYoDoB1npB5U5cwRV4BCct9gFXYQxVAsRkH7UD+Apdi3CHGKuZL0dN1gAuPtwpHKU9DG9QL6Qj\r\n        OI/zyRo8hTxKWQMIP1ZP8AbKf3gb3kIuZiM4j/O5HdmC/D1bAJEIWUDHEAYc/v44ipC5Osa+j8/kAcS3\r\n        uI0hNkKMjWkkQFiHL9C1sI7xRVAdsgQfoX7dF8Dz6Qwmi+PnOxSzUI6u10MRoQB7QUh2tEIx746/UR3B\r\n        IyYRVQKsSYJCMVYdMaT8Yq0bYK33qKuIiRmL8JD9O2UHFtC1EO+3NqBwDe39V/YAEro6iaOrmboDkBvK\r\n        7AEkJkJ0xbjm+WwkgFSJEOvENBZAQhE8sXl7wtH1emxMowFkUoRcnTjWiWk8QNiFrpPTdYn1xXB7vg9h\r\n        0D1sLUBjnwpdEYKN4XZyez8H+VzSeoBGYkIRgsToiE7Bk3pShMB58ozS09PTGQaDHxF+Z1FP1tq4AAAA\r\n        AElFTkSuQmCC\r\n</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>118, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall quietly</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>Modify</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>6, 29</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>86, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Properties</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator24.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>6, 29</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Settings</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Help</value>\r\n  </data>\r\n  <data name=\"toolStrip.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"toolStrip.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 1</value>\r\n  </data>\r\n  <data name=\"toolStrip.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>379, 30</value>\r\n  </data>\r\n  <data name=\"toolStrip.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip.Name\" xml:space=\"preserve\">\r\n    <value>toolStrip</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <metadata name=\"statusStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>132, 17</value>\r\n  </metadata>\r\n  <data name=\"toolStripLabelStatus.RightToLeft\" type=\"System.Windows.Forms.RightToLeft, System.Windows.Forms\">\r\n    <value>No</value>\r\n  </data>\r\n  <data name=\"toolStripLabelStatus.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>62, 17</value>\r\n  </data>\r\n  <data name=\"toolStripLabelStatus.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"toolStripLabelSize.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"toolStripLabelSize.RightToLeft\" type=\"System.Windows.Forms.RightToLeft, System.Windows.Forms\">\r\n    <value>No</value>\r\n  </data>\r\n  <data name=\"toolStripLabelSize.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>70, 17</value>\r\n  </data>\r\n  <data name=\"toolStripLabelSize.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"toolStripLabelTotal.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"toolStripLabelTotal.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>230, 17</value>\r\n  </data>\r\n  <data name=\"toolStripLabelTotal.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleRight</value>\r\n  </data>\r\n  <data name=\"statusStrip1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 578</value>\r\n  </data>\r\n  <data name=\"statusStrip1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>1, 0, 16, 0</value>\r\n  </data>\r\n  <data name=\"statusStrip1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>379, 22</value>\r\n  </data>\r\n  <data name=\"statusStrip1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;statusStrip1.Name\" xml:space=\"preserve\">\r\n    <value>statusStrip1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;statusStrip1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;statusStrip1.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;statusStrip1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel2.Name\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel2.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"splitContainer1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>803, 600</value>\r\n  </data>\r\n  <data name=\"splitContainer1.SplitterDistance\" type=\"System.Int32, mscorlib\">\r\n    <value>417</value>\r\n  </data>\r\n  <data name=\"splitContainer1.SplitterWidth\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"splitContainer1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Name\" xml:space=\"preserve\">\r\n    <value>splitContainer1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"settingsSidebarPanel.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 193</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>117, 115</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 369</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesSidebar.Name\" xml:space=\"preserve\">\r\n    <value>propertiesSidebar</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesSidebar.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Controls.PropertiesSidebar, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesSidebar.Parent\" xml:space=\"preserve\">\r\n    <value>settingsSidebarPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesSidebar.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"label1.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"label1.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 15.75pt</value>\r\n  </data>\r\n  <data name=\"label1.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 568</value>\r\n  </data>\r\n  <data name=\"label1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>143, 25</value>\r\n  </data>\r\n  <data name=\"label1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Name\" xml:space=\"preserve\">\r\n    <value>label1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Parent\" xml:space=\"preserve\">\r\n    <value>settingsSidebarPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"groupBox1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 155</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>195, 27</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Advanced filtering</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonAdvFiltering.Name\" xml:space=\"preserve\">\r\n    <value>buttonAdvFiltering</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonAdvFiltering.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonAdvFiltering.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonAdvFiltering.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"filterEditor1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"filterEditor1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"filterEditor1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"filterEditor1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 21</value>\r\n  </data>\r\n  <data name=\"filterEditor1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"filterEditor1.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>117, 0</value>\r\n  </data>\r\n  <data name=\"filterEditor1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>195, 134</value>\r\n  </data>\r\n  <data name=\"filterEditor1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;filterEditor1.Name\" xml:space=\"preserve\">\r\n    <value>filterEditor1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;filterEditor1.Type\" xml:space=\"preserve\">\r\n    <value>UninstallTools.Controls.FilterEditor, UninstallTools, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;filterEditor1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;filterEditor1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 2</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>9, 5, 9, 9</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 191</value>\r\n  </data>\r\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Search</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\r\n    <value>settingsSidebarPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"settingsSidebarPanel.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"settingsSidebarPanel.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>2, 24</value>\r\n  </data>\r\n  <data name=\"settingsSidebarPanel.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"settingsSidebarPanel.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 2, 6, 7</value>\r\n  </data>\r\n  <data name=\"settingsSidebarPanel.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>226, 600</value>\r\n  </data>\r\n  <data name=\"settingsSidebarPanel.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;settingsSidebarPanel.Name\" xml:space=\"preserve\">\r\n    <value>settingsSidebarPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;settingsSidebarPanel.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;settingsSidebarPanel.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;settingsSidebarPanel.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <metadata name=\"uninstallListContextMenuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>269, 17</value>\r\n  </metadata>\r\n  <data name=\"uninstallContextMenuStripItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAbZJREFUaEPd1z1OAzEQhuGNlK0puQBn4BCchVvQQU3NKei35jyUSItXykjW6PXP\r\n        jO2AUzzNxwJ+E2VXWbZtuwk4zgjHGeE4IxxnhOOMcOxl3/fHZVk+g6/gia7pBcdWUcCuDAvC0SsToHUP\r\n        wtHKEKB1C8KxVkOA1hyEY0nHAM0dhGPKwADNHISjdsUArToIR/GHAVoxCMfD6XR6Vn/sP3insx5wFDfx\r\n        jsSm/4xo09+1tIFB5gCBY62OQe4AgWPOuq53emsIwgD6HyU4kuiwP8FHuD0/ZK6hQ8cw4Hw+34f9LfhO\r\n        XZOCYyxzOE9QTUDV72g4Hgyvbk2QJ0DLBuF4MISIZJBmDBC+ENEzaESAwJG0BI0MEDjmOIOGBQgcaziC\r\n        SlwBAkeLDkFNAQLHlMuhX43PjhQMuHyeXuhnOThqcMiaZ0d86FguQN8Qqt8tHEXFoSxBlgCtGITjIRzO\r\n        8lW3FOQN0K72VTcZJEY9U3DUegSNChA4pniDgmEBAscSR1Atc4DAsVbHIHeAwNGqIag5QODoZQjqFiBw\r\n        bJUJ6h4gcOwlChoWIHCcEY4zwnFGOM4IxxnhOJ9t+QUUCa3NNFC+OwAAAABJRU5ErkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Uninstall</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAtdJREFUaEPdlz+L1EAYxrP/WFgLC2Et5FBQELE5LASLBWs/ix/BztLaWmztDrGw\r\n        29rCD3CFlaWoxZWH6/MeecO77z6ZmUyS1bnAjyRPZmfmt5NMJtV2u70W0LBEaFgiNCwRGpYIDUuEhkOx\r\n        2+2eVlX1CXwBL1iZoaBhX4zAzjGaEA1zCQh4BheiYVc6CHgGE6JhKj0EPL2FaBhjQAFPthAN2xhRwNNZ\r\n        iIaeIwp4koVoqPxDAU9UiIbCZDJ56Sr7H3jL+irQULkWI2Ip/hnxFD9reUYU6iyg0DCVAYWyBRQahlgs\r\n        Fjd91kOICrA2YtCQYTp7Cd5hen4QKMM6baEC8/n8NvI34KKtTBs0tAQ6lyOUIpD0Gw8NBdOZb4A1oKQI\r\n        5Qh4gkI0FOpOvJ/NZnfQyec4jjX2G5ywujwdBZQ8EQ+2Z+AHYI1ciKwtv1qtlvZcGENAoaFFGtdOYZSe\r\n        oNKfphGhkZByUl6OMZJ3kb/C9ZMxBRQaKnJbobJzcKYy2B6Bj0Aa25PA+Rk4l99JNp1OH8q5lAO+o210\r\n        ElBoKBgJbaCREernZiPHRkLLNjKknjayBBQaBhrfkxGIhJIq00tAoSH+7Xuo/LtpzNLIBCSERgTPyC2c\r\n        f3XXqUD9PL1m10LQUKjv71aZ5XJ5Q/YuV0ISIQE/ISSPFg2ViMwvkgmNRD1iKtFFwBMVoqElIuNpJJT6\r\n        xZor4Mn71FUSZQ4kGJkC/UdEgcxjVPbHVG65hMR9LYvtA9hbf40loNDQE5mdlGY2MyuAqwUlGE1AoaEl\r\n        UUJhMqxcG50FFBoqHSWUHJlsAYWGQkRC3tKbes+up8r0FlBoGJPQ2Un2cu6uKyGZwQQUGmK2OUVD7OE8\r\n        mGIDMrIyPpUy9R/zGQwuoNBQqFe3Vqb1PUFkmuX9er2e4Vi+S0YRUGioGJnoy87IHHwtHgMaWrBtYhJK\r\n        LXP1jXJsaFgiNCwRGpYIDctjW/0F5PnkmYCIcpwAAAAASUVORK5CYII=\r\n</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall &amp;quietly</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall &amp;manually</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>196, 22</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Install or configure (/I)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>196, 22</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Uninstall (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>196, 22</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Quiet uninstall (/X /qb)</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall using &amp;MsiExec...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>208, 6</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Exclude</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Include</value>\r\n  </data>\r\n  <data name=\"toolStripSeparatorFiltering.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>208, 6</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Run...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator8.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>208, 6</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Advanced...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator9.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>180, 6</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 22</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Full information</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 22</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Program name</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 22</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Product code / GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 22</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Full registry path</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 22</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall string</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAc5JREFUaEPdlEGOwzAMA3sL0P3/Q/YH2Ze19UFANBaoxrEMZAvMQVQpmpc89n3/\r\n        F4TiHQlF4/N7TeRv27afKGcGoWjgITMoKxOKBh4xi5IyoWjgATOZXiYUDYS/ov9kPJ/P7eP95a0PU8uE\r\n        ooFgV4S7i1wuFYoGwiqLNC6VCUUDQdVFGsNlQtFAyIoijaEyoWggQBY57jLoDThdJhQNHK8scvmrFooG\r\n        DpcVmfGJDkUDR8uKNO1qmVA0cLC0SONKmVA0cKy8SGO0TCgaOLSkSGOkTCccwZFlRRpny7iB4MDSIg1V\r\n        hv91A4G5rMgI3U0KR5RZ7TLoHaG7SeGIMqtdBr0jdDcpHFFmtcugd4TuJoUjyqx2FWR5biDKrHYVZHlu\r\n        IMqsdhVkeW4gyqx2FWR5biDKrHYVZHluIMqsdhVkeW4gyqx2FWR5biDKrHYVZHluIMqsdhVkeW4gyqx2\r\n        FWR5biDKrHYVZHluIMqsdhVkeW4gyqx2FWR5biA0KyL/TLI8NxCaFZF/JlmeGwjNisg/kyzPDYRmReSf\r\n        SZbnhjNkh2eT5bnhDDy8mu49FL6Fh1fTvYfCt/Dwarr3UPgWHl5N9x4KdyUU70go3pFQvB/74w3YjMUD\r\n        zoYarAAAAABJRU5ErkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copy to Clipboard...</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Delete registry entry</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Rename...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator6.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>208, 6</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>176, 22</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Install location</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>176, 22</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Uninstaller location</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>176, 22</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Source location</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAitJREFUaEPd1TGS2lAQhGEBF3DuAzj3CbZ8PN/HOefY2PFGGzlh1RRDDf1+8SQ9\r\n        EPVM1Re41cxoam3vcDwe/wsY9gjDHmHYIwx7hGGPMNzC4XD4PgzD++i0FM0rgi20HCE0swierfUIoblF\r\n        8EyPOEJodhE8y6OOEJpfBK8091j6bhG8ypKfGH2/CF5h6V87mlEEmQ94kL/7/f5H7Fjzbye/YyiCzAc8\r\n        wNIjfkP28kMWHzH1DjEjK4LMBzRYdcTUO8SzrAgyH7DS6iOm3iE/v/YoDD5AqDfX0iPEnss/75x7FAYb\r\n        cEa9OdYcIdb53O12b9ijMNiQM+rVrD1CUudj9Is6gmFIQ66od8/SI9TPf750Pk6n08+cOwzDZcgN6k1Z\r\n        c8SYveds/Nz8ZzEFwzB+iuXUI2uP0LOczzlCMAyXhTeo51qOkPxsLgxDDM6o58bPn/wdc/cIyc/nwjDk\r\n        4YF67s5P5OYIGT9FzztzYBh8gVCPwDHFEZKeX1GvBsPgC4R6U9IxeITE3Ix6NRgGXyDUu2f8TfyN8uDz\r\n        hXo1GAZfINRr4fOFejUYBl8g1Gvh84V6NRgGXyDUa+HzhXo1GAZfINRr4fOFejUYBl8g1Gvh84V6NRgG\r\n        XyDUa+HzhXo1GAZfINRr4fOFejUYBl8g1Gvh84V6NRgGX7AVepcaDIMv2Aq9Sw2GwRdshd6lBsPgC7ZC\r\n        71KDYfAFW6F3qcGwRxj2CMMeYdgjDHuEYX+OwxdPcURPbbSJlwAAAABJRU5ErkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Open in &amp;explorer...</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Open &amp;Web Page</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>163, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>163, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo.net</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>163, 22</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator26.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>160, 6</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>163, 22</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>163, 22</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>163, 22</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>163, 22</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAu9JREFUaEPdmD+IE0EUxjckIRgRrSIiB7YW11hYi4VFesFCRARbu+vtLA60ukIt\r\n        xMJGsDg7K3OIzRWCiLYWFhGR44orhBDX75MZmUy+zb7d29MdH/zI5ds37813s7N/kk0mk/8CKaaIFFNE\r\n        iikixRSRYopIMUWkmCJSTBEpHpZOp9PLsuwy2AK74Av4Ab6Cj+Apcq4xT42vgxTrMhqNupjkDcCJ5waY\r\n        d4fjVL0qSLEOeZ6fwaTeBJOswttut3tW1bUixarAxAVMZhpNripT1Lmo6luQYhVwnp/jJKJJkQPwGIzB\r\n        2nA4HPR6vdOcLL7fA/sgHvMNrKk+ZUjRymAwOI7Gn4KJeF5w0mqMh8eR9yQaR3brXASkaAWxEUzAs6ly\r\n        i0BwdeIat/1x/rPC/CKkaMGtBk+FcALPVG4ZHBfUIFO/KogdixkpWkBcBWHzg7LTqQh3mnFPhfXGPOb+\r\n        LjUjRQsI3uzCxlsqjyA26t4rXO1SM1K0gHgXNMlxKlxSecTlfEDO9aqr5sZ6Cs0sCVYQC/uj3++fVHkk\r\n        zGsAaWbhSxWi4rnK8cS5DbBkZqFhFaLCf3NFPAtmlppaQSw8GBr2yFHw55611NQK4nlQkKy6aoV5TdHM\r\n        imAFbkaFC+8jiE3w0+U1QXN7hIVQ0HxnR6zzOIjHVKXZqxZBHPpZq4yotjTxO0+JFtyKvIoaeUqffq0E\r\n        NQtNECmW4UzsBE0UfHZ6CMY0xfcR7Cu+u/h3+e8gHrMHzoe9nL7SBJHiKowm6rCn3hARpSaIFIs4QhP8\r\n        ZWW9qKfSY6SoMJp4CXgBsF6Z9nG63Z3NZsdUzypIMcZoYpv7gPn8xPcr4AF4D/y7Bj8/g21waz6fn4h7\r\n        1UWKIVVN/Cuk6EnFBJEiSckEkSJBPAomrGiNCSJFt1n5o7MyQFplgkjR/aqhDJDWmSBSJAi1P1ppgkiR\r\n        uOei184A3yXut9UEkWIIDJ1a9T7eFqSYIlJMESmmiBRTRIopIsUUkWJ6TLJfuKvOc7bir0gAAAAASUVO\r\n        RK5CYII=\r\n</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Search online</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Rate...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator7.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>208, 6</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Tahoma, 8.25pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 26</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Properties</value>\r\n  </data>\r\n  <data name=\"uninstallListContextMenuStrip.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>212, 424</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallListContextMenuStrip.Name\" xml:space=\"preserve\">\r\n    <value>uninstallListContextMenuStrip</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallListContextMenuStrip.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <metadata name=\"exportDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>530, 17</value>\r\n  </metadata>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>XML files|*.xml</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Export selected uninstaller properties</value>\r\n  </data>\r\n  <metadata name=\"menuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>675, 17</value>\r\n  </metadata>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAA5xJREFUaEPdmUFIFUEYx9X3RDKiDmFISEFBSAjRQehQREfp0CFBoUMEQUrXoCBC\r\n        ihD0FngSOgRdgg4dIgqM50GCriF0yksQRFighKRmv892Yhr/vp3dffbYPvixz7/zfTv/92Zmd2dbarXa\r\n        f4EUy4gUy4gUy4gUm01bW9uxjo6O3ep/2yHFZkMMwmwWM1JsNomRjSxmpFiUzs7ODjrR29raeh4u8/kK\r\n        xyGO5zjuVzk+hDMSbUaKedjY2Oimk7c58VtY8TqimIcJ6FW1CN+IkWpGilmwicmJHsOad+IsPIfTfk0i\r\n        NGKM+G1CpBjD6urqLopPQtq3H8sjN+wIZWQ07IOPFNOoVCoHKfwuOFEj+AB9sPNGmAsnKfopOEkjWYTx\r\n        QDMaZySZD1+CE4T8gJlk4g9gvJ/jGf6+CNf5/BSWQOXWozFG1tfX91DsfVDc5ztMVqvVAyrfJ5lfN+Bb\r\n        khtDY4wQU17REFtO+1RePcw0ea+9OvUobiQZHqq4kelWIsRyrUZQU1HcCGFrvSo+F3XV/T2MPtfBJriq\r\n        71PMCBP8uChqLLMMH1E5CsKu5KpOLMWMEPe8Yj6Tqn09iCJmChuxiRwWXWMpPazap0HkNZPfSHIXq4rO\r\n        qvaxEPfBvqAsDKtaDik6iFOwxQi/xphq30yk6KDDR+1qHJJlkv8rpFhGpFhGpNhMbNiq4czc7FHtHVJs\r\n        JnR6LFxcDHt8UO0dUnQQw6CWwnpMdXV1VVS9GIgZCI2s2KVAtXdI0UGMesWy8DCPGb71bnLVs/+8au8j\r\n        RQeR14iR2Qxx18v3mVDtfaToIIoYMaLNMMkP0X45yN8kbX4YUnQQMUa+gro1d4yr2j7JrdArUPVfqJwQ\r\n        KTqIGCOFHqwSE8+Cmn8g+lVeiBQdROzQepPntoXogbmkhmJa5Smk6CCyzBHbqJuI2XzgWrGPtneg3pPh\r\n        grVT+QopOghl5KfQfGz5nKUTN+GCTdTkKXMArsITSNs9WSL3hOrTdkjRQWwxwglsv+pjqDeQxZhVKkSK\r\n        DkL9IoM2HzjuyJapbQKqvqQhRQchjdj/km2cB5A21GKwGtPt7e17wz7EIkUHYWM6POmmEa+NbToXea3w\r\n        MnaJrYcUHdus8X8ZcdAZu0+6BbbZlvaqYQHslYR80ZMHKfoIM9KIDwtC1VYqjkNwjZwRjpfgbMzynAcp\r\n        hgRmUo00AykqPDPlNmKYGYZHro25nUaKZUSKZUSKZUSK5aPW8guPW9SgVPCdQwAAAABJRU5ErkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>331, 22</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Reload uninstallers</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>328, 6</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAf5JREFUaEPd169LBFEQB/C924WFs5jOYLAIVpPBbjFbNQg2q8UoGOSiXfEPMFou\r\n        bRHBYrCJoPmK5ZIcrDOP945x7ovryco4Pvjg3nfvDd/1fqxmVVX9CzD0CIYewdAjGHoEQ49g6BEMPYKh\r\n        RzD0CIYewbAteZ4vZ1n2Quo5XKJZTWDYhn6/n1OpW1XyW9C8JjBsA61dWW4eaF4TGLaB1p0sNw80rwkM\r\n        mR5uCfXTYMj0MEuonwZDpodZQv00GDI9zBLqp8GQ6WHKEO2xBEOmikuTTqezjvZYgiFT5aVw56W1JTJr\r\n        Q3gRTD0xGfOfHfSKFHT8oM5ZCe8QeBFMPTk5ief2RWbtInSS5SX1ZDYqy3KB8bE6Z2VcFMVS6KsvIFEb\r\n        2EHMT0Vm7XjaNx1oasMjfy7o87FCx2N1zsorvzumfWV5SW3ajtmVyKztfeorH0hiQ7j51XW9ITJr9zN9\r\n        dZDEDdObH60f/ZP0SzZn+uogiRvCzY8uZic+/guudVc2EyS0ws2v1+uVdPwch1h7p1/qKuyLQkbrLP48\r\n        ImiohYHumcCQ8Vcb32xo85saZmVEr8Yi6spgmNA6F4NM0UUcoo4JDFm3212jARM90MgTXUiBeiYwZLRu\r\n        xCBr4Yb8FRh6BEOPYOgRDD2CoUcw9AiGHsHQIxh6BEOPYOgRDD2CoT9V9gFIcLIAMRBa5AAAAABJRU5E\r\n        rkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>331, 22</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Open Uninstall List...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator30.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>328, 6</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>331, 22</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Export data of selected uninstallers...</value>\r\n  </data>\r\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>331, 22</value>\r\n  </data>\r\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Export to a batch uninstall script...</value>\r\n  </data>\r\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>331, 22</value>\r\n  </data>\r\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Create PowerShell remove script for Store Apps...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator10.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>328, 6</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>331, 22</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>E&amp;xit</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>37, 20</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;File</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Show color legend</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Show &amp;toolbar</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Show tree&amp;map</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Show &amp;settings sidebar</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Show status &amp;bar</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator12.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>195, 6</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Use system theme</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator33.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>195, 6</value>\r\n  </data>\r\n  <data name=\"autosizeAllColumnsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"autosizeAllColumnsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Auto-resize all columns</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>44, 20</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;View</value>\r\n  </data>\r\n  <data name=\"advancedApplicationsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 22</value>\r\n  </data>\r\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Default filters</value>\r\n  </data>\r\n  <data name=\"basicApplicationsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 22</value>\r\n  </data>\r\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Only &amp;basic applications</value>\r\n  </data>\r\n  <data name=\"systemComponentsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 22</value>\r\n  </data>\r\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Only system components</value>\r\n  </data>\r\n  <data name=\"everythingToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 22</value>\r\n  </data>\r\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Everything</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator20.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>210, 6</value>\r\n  </data>\r\n  <data name=\"automaticallyStartedToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 22</value>\r\n  </data>\r\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Only started automatically</value>\r\n  </data>\r\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 22</value>\r\n  </data>\r\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Only web browsers</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator31.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>210, 6</value>\r\n  </data>\r\n  <data name=\"viewTweaksToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 22</value>\r\n  </data>\r\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>View Tweaks</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 22</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>View Unregistered</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 22</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>View Updates</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 22</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>View Windows Features</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 22</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>View Windows Store Apps</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator28.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>210, 6</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAplJREFUaEPd2D1rFFEYBeBZdpeFtTCFrIik8h9YCKayEItgIQF7S/0B/gIJKQJa\r\n        BIuYQiwsLSxsrFYsBAshBLsthAQMIiFFCisn58jd8Ho549472Y95vfAQ9uR+vTs7M7tTDIfD/4IMPZKh\r\n        RzL0SIYeydAjGXokQ49k6JEMp2kwGLSLorgJm/AZ9uFX+MvXL1ut1t1+v99T41PJcBpCAfdhBGWCQxT0\r\n        EDpqvklkeF5lWV7Bxj5GG0211263r6l5/0WG54EirmMz36PN5TrCPDfU/FVkWBfeyavYxEG0KTqBHViF\r\n        ZZ4P/AsrsAE/IR7zA5bVOooM6+BnGwvz5I039KbT6VxWY8Ywdgn9XkTjaDf1nJFhHVjwgdjIpupbBW3d\r\n        jP2D86q+MRnmCkcjvjq9Vn0nQXtl5qBRyqVZhrlQyO1o8ZNJH6cqHMfxdj7Or/paMsyF9twuzNeqXyq0\r\n        LTNX0nwyzIX2xSzKd/CW6peK4+188En1s2SYC42XyrOFu93uRdUvFRovzbaQkepnyTBXtGip+uTgGxHN\r\n        eaz6WTLMFS06iyOyr/pZMsyF9tUs6vocmfVVa1v1s2SYC23NLEo+7yPhS+BfVy6Y1p3929zu7IT22Cw+\r\n        5uu7Vjgib+NNBD6+/U4oYoyf+W1YZVHcXDgX+HvkCSz290hiEXUcodisS7gMU8ywiPn9Zk8s4gM8AvWx\r\n        Ueb7FCW1iF6vd8H0vwPPYBd4vvyGQ+C3Zj7XujfuX5cMq+QWMU8yVJpcBMkw1vQiSIYxtKdmw8pCiyAZ\r\n        WuFo8KGzKoAWXgTJ0Ap3YFUANaIIkmEM7b3ZfOOKIBnGwtP1d8DrP4vYaVIRJMMq/C2Om9cl9b9Fk6FH\r\n        MvRIhh7J0CMZeiRDj2Toz7A4BUDIb3C2NXkmAAAAAElFTkSuQmCC\r\n</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 22</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Search...</value>\r\n  </data>\r\n  <data name=\"filteringToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>82, 20</value>\r\n  </data>\r\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Quick filters</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAbZJREFUaEPd1z1OAzEQhuGNlK0puQBn4BCchVvQQU3NKei35jyUSItXykjW6PXP\r\n        jO2AUzzNxwJ+E2VXWbZtuwk4zgjHGeE4IxxnhOOMcOxl3/fHZVk+g6/gia7pBcdWUcCuDAvC0SsToHUP\r\n        wtHKEKB1C8KxVkOA1hyEY0nHAM0dhGPKwADNHISjdsUArToIR/GHAVoxCMfD6XR6Vn/sP3insx5wFDfx\r\n        jsSm/4xo09+1tIFB5gCBY62OQe4AgWPOuq53emsIwgD6HyU4kuiwP8FHuD0/ZK6hQ8cw4Hw+34f9LfhO\r\n        XZOCYyxzOE9QTUDV72g4Hgyvbk2QJ0DLBuF4MISIZJBmDBC+ENEzaESAwJG0BI0MEDjmOIOGBQgcaziC\r\n        SlwBAkeLDkFNAQLHlMuhX43PjhQMuHyeXuhnOThqcMiaZ0d86FguQN8Qqt8tHEXFoSxBlgCtGITjIRzO\r\n        8lW3FOQN0K72VTcZJEY9U3DUegSNChA4pniDgmEBAscSR1Atc4DAsVbHIHeAwNGqIag5QODoZQjqFiBw\r\n        bJUJ6h4gcOwlChoWIHCcEY4zwnFGOM4IxxnhOJ9t+QUUCa3NNFC+OwAAAABJRU5ErkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>180, 22</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Uninstall</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAtdJREFUaEPdlz+L1EAYxrP/WFgLC2Et5FBQELE5LASLBWs/ix/BztLaWmztDrGw\r\n        29rCD3CFlaWoxZWH6/MeecO77z6ZmUyS1bnAjyRPZmfmt5NMJtV2u70W0LBEaFgiNCwRGpYIDUuEhkOx\r\n        2+2eVlX1CXwBL1iZoaBhX4zAzjGaEA1zCQh4BheiYVc6CHgGE6JhKj0EPL2FaBhjQAFPthAN2xhRwNNZ\r\n        iIaeIwp4koVoqPxDAU9UiIbCZDJ56Sr7H3jL+irQULkWI2Ip/hnxFD9reUYU6iyg0DCVAYWyBRQahlgs\r\n        Fjd91kOICrA2YtCQYTp7Cd5hen4QKMM6baEC8/n8NvI34KKtTBs0tAQ6lyOUIpD0Gw8NBdOZb4A1oKQI\r\n        5Qh4gkI0FOpOvJ/NZnfQyec4jjX2G5ywujwdBZQ8EQ+2Z+AHYI1ciKwtv1qtlvZcGENAoaFFGtdOYZSe\r\n        oNKfphGhkZByUl6OMZJ3kb/C9ZMxBRQaKnJbobJzcKYy2B6Bj0Aa25PA+Rk4l99JNp1OH8q5lAO+o210\r\n        ElBoKBgJbaCREernZiPHRkLLNjKknjayBBQaBhrfkxGIhJIq00tAoSH+7Xuo/LtpzNLIBCSERgTPyC2c\r\n        f3XXqUD9PL1m10LQUKjv71aZ5XJ5Q/YuV0ISIQE/ISSPFg2ViMwvkgmNRD1iKtFFwBMVoqElIuNpJJT6\r\n        xZor4Mn71FUSZQ4kGJkC/UdEgcxjVPbHVG65hMR9LYvtA9hbf40loNDQE5mdlGY2MyuAqwUlGE1AoaEl\r\n        UUJhMqxcG50FFBoqHSWUHJlsAYWGQkRC3tKbes+up8r0FlBoGJPQ2Un2cu6uKyGZwQQUGmK2OUVD7OE8\r\n        mGIDMrIyPpUy9R/zGQwuoNBQqFe3Vqb1PUFkmuX9er2e4Vi+S0YRUGioGJnoy87IHHwtHgMaWrBtYhJK\r\n        LXP1jXJsaFgiNCwRGpYIDctjW/0F5PnkmYCIcpwAAAAASUVORK5CYII=\r\n</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>180, 22</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall &amp;quietly</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>180, 22</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Modify</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>177, 6</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 22</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Advanced...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator11.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>180, 6</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 22</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Full information</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Program name</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Product code / GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Full registry path</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>183, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall string</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAc5JREFUaEPdlEGOwzAMA3sL0P3/Q/YH2Ze19UFANBaoxrEMZAvMQVQpmpc89n3/\r\n        F4TiHQlF4/N7TeRv27afKGcGoWjgITMoKxOKBh4xi5IyoWjgATOZXiYUDYS/ov9kPJ/P7eP95a0PU8uE\r\n        ooFgV4S7i1wuFYoGwiqLNC6VCUUDQdVFGsNlQtFAyIoijaEyoWggQBY57jLoDThdJhQNHK8scvmrFooG\r\n        DpcVmfGJDkUDR8uKNO1qmVA0cLC0SONKmVA0cKy8SGO0TCgaOLSkSGOkTCccwZFlRRpny7iB4MDSIg1V\r\n        hv91A4G5rMgI3U0KR5RZ7TLoHaG7SeGIMqtdBr0jdDcpHFFmtcugd4TuJoUjyqx2FWR5biDKrHYVZHlu\r\n        IMqsdhVkeW4gyqx2FWR5biDKrHYVZHluIMqsdhVkeW4gyqx2FWR5biDKrHYVZHluIMqsdhVkeW4gyqx2\r\n        FWR5biDKrHYVZHluIMqsdhVkeW4gyqx2FWR5biA0KyL/TLI8NxCaFZF/JlmeGwjNisg/kyzPDYRmReSf\r\n        SZbnhjNkh2eT5bnhDDy8mu49FL6Fh1fTvYfCt/Dwarr3UPgWHl5N9x4KdyUU70go3pFQvB/74w3YjMUD\r\n        zoYarAAAAABJRU5ErkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>180, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copy to Clipboard...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>176, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Install location</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>176, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Uninstaller location</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>176, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Source location</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAitJREFUaEPd1TGS2lAQhGEBF3DuAzj3CbZ8PN/HOefY2PFGGzlh1RRDDf1+8SQ9\r\n        EPVM1Re41cxoam3vcDwe/wsY9gjDHmHYIwx7hGGPMNzC4XD4PgzD++i0FM0rgi20HCE0swierfUIoblF\r\n        8EyPOEJodhE8y6OOEJpfBK8091j6bhG8ypKfGH2/CF5h6V87mlEEmQ94kL/7/f5H7Fjzbye/YyiCzAc8\r\n        wNIjfkP28kMWHzH1DjEjK4LMBzRYdcTUO8SzrAgyH7DS6iOm3iE/v/YoDD5AqDfX0iPEnss/75x7FAYb\r\n        cEa9OdYcIdb53O12b9ijMNiQM+rVrD1CUudj9Is6gmFIQ66od8/SI9TPf750Pk6n08+cOwzDZcgN6k1Z\r\n        c8SYveds/Nz8ZzEFwzB+iuXUI2uP0LOczzlCMAyXhTeo51qOkPxsLgxDDM6o58bPn/wdc/cIyc/nwjDk\r\n        4YF67s5P5OYIGT9FzztzYBh8gVCPwDHFEZKeX1GvBsPgC4R6U9IxeITE3Ix6NRgGXyDUu2f8TfyN8uDz\r\n        hXo1GAZfINRr4fOFejUYBl8g1Gvh84V6NRgGXyDUa+HzhXo1GAZfINRr4fOFejUYBl8g1Gvh84V6NRgG\r\n        XyDUa+HzhXo1GAZfINRr4fOFejUYBl8g1Gvh84V6NRgGX7AVepcaDIMv2Aq9Sw2GwRdshd6lBsPgC7ZC\r\n        71KDYfAFW6F3qcGwRxj2CMMeYdgjDHuEYX+OwxdPcURPbbSJlwAAAABJRU5ErkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>180, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Open in &amp;explorer...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>180, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>Open &amp;Web Page</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>160, 22</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>160, 22</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>160, 22</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator27.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>157, 6</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>160, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>160, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>160, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>160, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAu9JREFUaEPdmD+IE0EUxjckIRgRrSIiB7YW11hYi4VFesFCRARbu+vtLA60ukIt\r\n        xMJGsDg7K3OIzRWCiLYWFhGR44orhBDX75MZmUy+zb7d29MdH/zI5ds37813s7N/kk0mk/8CKaaIFFNE\r\n        iikixRSRYopIMUWkmCJSTBEpHpZOp9PLsuwy2AK74Av4Ab6Cj+Apcq4xT42vgxTrMhqNupjkDcCJ5waY\r\n        d4fjVL0qSLEOeZ6fwaTeBJOswttut3tW1bUixarAxAVMZhpNripT1Lmo6luQYhVwnp/jJKJJkQPwGIzB\r\n        2nA4HPR6vdOcLL7fA/sgHvMNrKk+ZUjRymAwOI7Gn4KJeF5w0mqMh8eR9yQaR3brXASkaAWxEUzAs6ly\r\n        i0BwdeIat/1x/rPC/CKkaMGtBk+FcALPVG4ZHBfUIFO/KogdixkpWkBcBWHzg7LTqQh3mnFPhfXGPOb+\r\n        LjUjRQsI3uzCxlsqjyA26t4rXO1SM1K0gHgXNMlxKlxSecTlfEDO9aqr5sZ6Cs0sCVYQC/uj3++fVHkk\r\n        zGsAaWbhSxWi4rnK8cS5DbBkZqFhFaLCf3NFPAtmlppaQSw8GBr2yFHw55611NQK4nlQkKy6aoV5TdHM\r\n        imAFbkaFC+8jiE3w0+U1QXN7hIVQ0HxnR6zzOIjHVKXZqxZBHPpZq4yotjTxO0+JFtyKvIoaeUqffq0E\r\n        NQtNECmW4UzsBE0UfHZ6CMY0xfcR7Cu+u/h3+e8gHrMHzoe9nL7SBJHiKowm6rCn3hARpSaIFIs4QhP8\r\n        ZWW9qKfSY6SoMJp4CXgBsF6Z9nG63Z3NZsdUzypIMcZoYpv7gPn8xPcr4AF4D/y7Bj8/g21waz6fn4h7\r\n        1UWKIVVN/Cuk6EnFBJEiSckEkSJBPAomrGiNCSJFt1n5o7MyQFplgkjR/aqhDJDWmSBSJAi1P1ppgkiR\r\n        uOei184A3yXut9UEkWIIDJ1a9T7eFqSYIlJMESmmiBRTRIopIsUUkWJ6TLJfuKvOc7bir0gAAAAASUVO\r\n        RK5CYII=\r\n</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>180, 22</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Search online</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>180, 22</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Rate...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator15.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>177, 6</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>180, 22</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Show &amp;properties</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>105, 20</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Basic operations</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall &amp;manually</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>196, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Install or configure (/I)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>196, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Uninstall (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>196, 22</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Quiet uninstall (/X /qb)</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Uninstall using MsiExec</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator14.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>195, 6</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Rename...</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Disable autostart</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAR5JREFUaEPdjrGJRUEMxF7/VW1n98GhrUCR8VygRKBhvvfevwBlIigTQZkIykRQ\r\n        JoIyEZSJoEwEZSIsv+/vMvgZJcSXwM8oIb4EfkYJ8SXwM0qIL4GfUUJ8CfyMEuJL4GeUEF8CP6MU4Sbm\r\n        zxAlRbiJ+TNESRFuYv4MUVKEm5g/Q5QU4SbmzxAlRbiJ+TNESRFuYv4MUVKEnd5YaKtjmiFKirDTGwtt\r\n        dUwzREkRdnpjoa2OaYYoKcJObyy01THNECVFuIn5M0RJEW5i/gxRUoSbmD9DlBThJubPECVFuIn5M0RJ\r\n        EW5i/gxRUoSbmD9DlGzhNfAzSogvgZ9RQnwJ/IwS4kvgZ5KJoEwEZSIoE0GZCMpEUCaCMhGUiaDM430/\r\n        Y9GlZ2dLox0AAAAASUVORK5CYII=\r\n</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Delete registry key</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>195, 6</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Create &amp;backup...</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Open key in Regedit</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator32.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>195, 6</value>\r\n  </data>\r\n  <data name=\"takeOwnershipToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 22</value>\r\n  </data>\r\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Take ownership</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>131, 20</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Advanced operations</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAABJ5JREFUaEPdmU1oHVUYhvNzQyAiCtZIF4JgpQupSFFBoSKigYqLIi0olCLSgroS\r\n        oaAuRJBQquAiIkIL3bgQugsi4sYGRAoFhS5EF0ULCoEg7aJFSzC9Pm+Yc/ny8c7cOzfZjB883Lnv+X7O\r\n        uXPmzJm5EysrK/8LrNhFrNhFrNhFrNhFrNhFrNhFrNjE1NTUwxMTEy/BEXh8bm5u1vm1hbx7lXNycvI4\r\n        PNM2rxUdVcevQj/xB4UPuZhRUKfJ8UvKKa7T9vr8/Py0i8tYMYN9Ggo4/un3+/tdbBN0dA+xN1KuzBcu\r\n        NmPFCMWOmuSFW/AZ3J/j9EuqowzwCYHPvpmZmbuyX6/Xu4+2j+EmuBp98hzPcRkrRrDVmDRwGR6KvhR8\r\n        FG0RLoEG6eJ+hzP4PhenDYPdjf598IusxjoOKxaqC9sl/jxejJgu/h+rtjZcgTfKgPTJ91OhfYD6Uuo5\r\n        rFjQKTVJT5b26enpB/n+XWofh59gX8mLnaz0AfTlaGl3WLGAvRmTwWAQJNZq81dqj/wNv4GmmdBx7XUA\r\n        N8k5WP2wPJgjpc1hxULV2ZLobNJdp27DMu2HNzY27oy5qrge7c/COXDX0HoajBaSzTbVjLkyVixUhTWP\r\n        r3J8tzTsKXCD+AoG02MY5NPS+2WIL6zD8/LRj8GxzuQV9SXniFgxgj0NCzom2S6O/4RY+Db6O+7GNTs7\r\n        ewfL6z1ZjxCr61CdjznXtCxX7Tr7m/WbsGId2JmqUEFT6RXnSwd0/ykdvNy05cD3UJUr5j7nfOuwooNi\r\n        mgr/pmKLzldgF4Kf5vge51fA3ov+YlhMxIoO7GwsAo3zFtsykGH3AeXCT9djrDFYYIZhxYymBUmvxSIU\r\n        ftX5FrBWAxHKGWPg2qi7YCtmKBCXYbHadDYE1nogAtuyJVJt55exYoZkH8TksOT8Iti4A1mKcart/DJW\r\n        zGDLMTkMXw7HH4iee2KtndnGC0x7oVadwrYMBHTz0506c7rcM6q4BYhxF2LeOqyYwX4Oidlx9+91fhEs\r\n        D6SJwVTFngy6uBjz1mHFDLZlIMzboes7pl87dqiJ8yVOF3dq29Ez8m1IPNJKwlnbj2/eztTxfonD8jWy\r\n        HPPWYcUM9klILD50fhkG3IPH4DAx6qBjIe7T8M0r5KmYsw4rZjAVjMl/dX47gXKHOqLxOaRgxYxeGpAw\r\n        Pz+84Hy3A3Yw5Be3hu2eC1Z0YOdDAXHJ+W0H5Qz5xWARGIYVHdUrnVhEnHC+44C9FvJuoprO12HFOrCv\r\n        YyFYb1OsDnI8Qi4948fc3zjfOqxYByvKAxS4ngpqV3zQ+Y8CphtgXqZvsHvY6/zrsGITmFaw/DSn76cZ\r\n        6OZz/SjoMZiYdyE/5opjLqYJKw4D03zOgxE6W4tNezGm0W4G/BZ+ayEuMnjl1AYrjgJWN5iCXqlqo/hR\r\n        hY4vQlPMWIMQVhwV7AC4vxrassZZetHVGBUrtkFzvdpW5EVgFPR+bIn4XS53G6w4DtXFewz0ELbl+T6h\r\n        i/sHeDs+h2wXK24XfuGelk8+9b7qhOD4ZT4PuFepO4EVu4gVu4gVu4gVu4gVu4gVu4gVu8fKxH8/CDAt\r\n        CHsE6AAAAABJRU5ErkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>280, 22</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Open Startup Manager</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator25.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>277, 6</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAsRJREFUaEPt2D+IE0EYBfBNsiEYES0EueKw8MBCtFLBTiwsRMTGwlawMKVwYC1Y\r\n        WYiClaCFncU1cgg2RsTC6w4RwUILC8FGwSvEXIzvLbsyDm+Tmf2XjNzAj0vezs7Od7Ob3SQaDof/BRmG\r\n        SIYhkmGIZNikyWRyMoqidf5V213JsEksAiap9VarFat+s8iwKelqZEXQI9XPhQybgmauxjZWY0X1cyHD\r\n        JlS5GiTDJqA9M4ootRokw7qhnTOKKL0aJMO6oW0YRZReDZJhndAqXw2SYZ3QKl8NkmFd0GpZDZJhVdrt\r\n        9hFM9jY8Ba7EF6h8NUiGZfX7/R4m+hh+GxO3bbKf2r8IGZaFxiLU5G2Fn61sMiwD7awxURerahxfMiyr\r\n        0+kcwgRvgnlN5PmkxvAlwyJwipzGpD7DXTxHHUuzGO8vwBpsgypk0u1299rj+ZKhr7SILWuCm3Ad2/az\r\n        D4pbwusbyN4bfTLL9pi+ZOgjpwjTL1hDv/OQXNjpPg+B+23ZYxYhQ1cORdi+Au8rR7k/Tym8PmOPW4QM\r\n        XRQowsZTb4BxklOvLBnOUkERphfqGL5kOA3aCaiqCJpPIbhHHMTBwy+E0C4ZEylrfoUQ2hWY9lDoar6F\r\n        UPpLyEdrYr7mXwiNRqNdmMwt+GlMzke9hcRxfMBF1h9tGe7BN1ATzpMUwn+IGl8Zj8d7suP+Pb4dZKyD\r\n        TfMKkjs19Xq93XjP6+c58PFE7WNKCkEbGNks97PjZf55Y7J2nIUX/RNeM+YYuHHug4vYdgdeww+w912o\r\n        QkxvYRXf1w+rcVHYCrbzR4ircBlOMUfLK+QB8OOe+DWBWSOFmD4AJ3INBRznaaeORWh5hQyMPu/SrPFC\r\n        FD4B84HxDbwEXmMs+Duo/gtbiK+dQhLpDouAn3Q8HSn73h9kIcpOIYvGvZDQyDBEMgyRDEMkwxDJMDzD\r\n        6A+ao+bo+vxNcgAAAABJRU5ErkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>280, 22</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Clean up \"Program Files\" folders...</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>280, 22</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall by window, directory, or file...</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>280, 22</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall from directory...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator13.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>277, 6</value>\r\n  </data>\r\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>280, 22</value>\r\n  </data>\r\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Troubleshoot uninstallation problems...</value>\r\n  </data>\r\n  <data name=\"startDiskCleanupToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>280, 22</value>\r\n  </data>\r\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Start Disk Cleanup</value>\r\n  </data>\r\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>280, 22</value>\r\n  </data>\r\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Install .NET v3.5 (add feature)</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>280, 22</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Create a new restore point</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator29.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>277, 6</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>280, 22</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Open \"&amp;Programs and Features\"</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>280, 22</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Open \"System Recovery\"</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator19.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>277, 6</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAA8NJREFUaEPdmU9IVFEYxdWZYciIhMqIiISCFm0iol3QSshFhCAUtIhoFREhCQkR\r\n        kQsXrVpIRAtpEYFgECEtHYgWBhUR0kZw0UKQkCAXgY7TOfKu3K7nzXz3zRi8+eDHG87ce+5337z7701H\r\n        pVJpC6SYR6SYR6SYR6SYR6SYlVKptFfpIbVa7XRnZ+cp9V1WpBgL4hx4DX4Xi8V9qowPYhbUwBy43t3d\r\n        XVblYpCiBdzRIpK4Aj4lSTlGVHlHV1fXyaA8WQGPy+XyblXHghQtIJ4kSYQs17vDiAmvrM+iKm9FihZS\r\n        7uwm+LWuqTq84/ied1/VG1V1rEjRCmLGS8RnAZ05ww7h8wjB56u4jiXfh6xjAjik2rAiRSuIfi+ZZphS\r\n        /jFIMQbEvJdQVgaUdwxStJI88x+CpLIw1cyMRaTooDmnWfUdn2kk8DlIqBnm0Vafaos0Wmuk6ECMgyUw\r\n        5jdSrVb3QPsCVEJ/wDQHN2a2E7j2rK2t7SoUCkehXwBPwS+g6n71fxkurqh/F/p3MO50hRQJDLjgsROu\r\n        kQ3wDgyCl4kW8hYJH1N+PkjwIMpOBnUdb9D2eVzZBm+K05eYk/IjUiSIIc+kERto5F5vb29BeaWBOjdQ\r\n        dz3wqseQ8iFSJAi3H7IwrDwsoDO3hF8as8qDSLHeqi14pTxioIfnVxfmJj2UmHSEqzbHhTRMWMWYOKw8\r\n        YkjGzGrgrZjDbHlWeWwTfPCz96EyZ66fnpnPpKqXBXp5vj7s4HPkUvf8IsUQzuEwehg0QFIHXyz08nwd\r\n        42i3R5UPkaIChtz0hQ0dUWWzkDIuL6qyCikqEKNeA5u04mTnwLN/IPQHN1VZhRQViG0dUeWywvN+6A/M\r\n        07oUFXi0uHj90xDvoiqbBfgfD/2BeQxKMeQ/DXZufUL/1gx2mOR7+m2bBbFttigEkf9NI0G0xzaeMxUq\r\n        LnsmloPV9A4erOq/+FOiAyGPuslLh4/AT8CxddRlp3gsZgKcFKA3Oup+Q72t6bYlR11iePnQijcoDnZi\r\n        Z14+NCJ5/F4ECWVhDp3Yr9qwIsUYEK142zivvGOQYgyIKS+hZuhX/lakaCUZJ2nT5yM8LpdxHQYP8PkO\r\n        rgNgAajyM6oNK1K0gti2tU9YSXsFig7xDb2qk7pqW5CiFcSin4jHhCpPxPrk80zVsSBFC0wId/c+Gv8R\r\n        JNPwziL4n4lfh4/bba45qrwFKcaAzhTBJSTidsup+yEHFzqU4273PRiM3doopJgVdKjP+pxzolB6VqSY\r\n        R6SYR6SYR6SYR6SYPyodfwH48uDGAyghMQAAAABJRU5ErkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>280, 22</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Settings</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>46, 20</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Tools</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>194, 22</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Open &amp;help</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>194, 22</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Start setup wizard</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator16.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>191, 6</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>194, 22</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Check for updates</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAcBJREFUaEPd1T9KA1EcxPH8g0AsLUQ8gIWNrRfwDJa2NnaWXsR7iG1sbS08go2l\r\n        lYj6G2Gb4avGxAfzXPiAzO4O84qso+Vy+S9g2CMMe4RhjzDsEYY9wrBHGPYIwx5hKHW9J6KtgqF4QQra\r\n        KhiKF6SgrYKheEEK2ioYihekoK2CoXhBCtoqGIoXpKCtgqF4QQraKhiKF6SgrYKheEEK2ioYihekoK2C\r\n        oXhBCtoqGIoXpKCtgqF4QQraKhiKF6SgrYKheEEK2ioYihekoK2CoXhBCtoqGIoXpKCtgqF4QQraKhiK\r\n        F6SgrYKheEEK2ioYihekoK2CoXhBCtoqGIoXpKCtgqF4QQraKhiKF6SgrYKheEEK2ioYihekoK2C4Vfq\r\n        OitvQymZTCYH9G5rGH6nruPyPAwHl/Reaxj+ZDweH9bgRzvA4I7eaQ3DVUyn070afW+H+FTXLr3TEoar\r\n        ms/nWzX8xg9Szun5ljD8jcViMa/hV3aQW3q2JQzXUddFGb5or7PZbIeeawXDddVH4KQO8aLD1N+n9Ewr\r\n        GG6irqPyVK7pfisYbqr+Ke7XQR70MaD7LWD4F+o3sq0D0b0WMOzPcvQBNno1XPGrmk4AAAAASUVORK5C\r\n        YII=\r\n</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>194, 22</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Submit feedback...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator18.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>191, 6</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>194, 22</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Reset settings</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>194, 22</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall BCUninstaller</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator17.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>191, 6</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAWdJREFUaEPt2D1KA1EUhuFMCAxi6RYEC2sLOyvBxs5NuBV3YGdrI+ICHAsbWxEb\r\n        S6s0Nlam0O+CgWF4I8n9rugJ98DTvGSGeyBMfkZd160FjBFhjAhjRBgjwhgRxlI0e3Ij7zKVi8lkskWv\r\n        dWEsQXMkH/I58Ni27SZd48BYguapd/ihU7rGgdHVNM02HL7vkq5zYHQtscg1XefAWILmoXfwoRhvrUSz\r\n        L+lpNVzifjabbdA1DoyljMfjHR38XF7lWc5+44mVYIwIY0QYI8KYQ3Ms6WvIMq7oHg6MOTQnMnxCLXJL\r\n        93BgzKGpi5SAMYfmUNIXxeRFaIG5/7tInz4Id+HwfXWRRTC66iIGjK66iAGjqy5iwOiqixgwuuoiBoyu\r\n        uogBo6suYsDoCr1I0zQHOuDdt5/+903eZP7aIn9oY8yhWeU3e9+U7rcqjDk0dRG636ow5tCsxyJ/DWNE\r\n        GCPCGBHGiDDG042+AGxBHCp0R/J2AAAAAElFTkSuQmCC\r\n</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>194, 22</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;About</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>44, 20</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Help</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>130, 20</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Open &amp;debug window</value>\r\n  </data>\r\n  <data name=\"menuStrip.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>2, 0</value>\r\n  </data>\r\n  <data name=\"menuStrip.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 2, 0, 2</value>\r\n  </data>\r\n  <data name=\"menuStrip.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>1029, 24</value>\r\n  </data>\r\n  <data name=\"menuStrip.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;menuStrip.Name\" xml:space=\"preserve\">\r\n    <value>menuStrip</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;menuStrip.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;menuStrip.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;menuStrip.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <metadata name=\"createBackupFileDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>802, 17</value>\r\n  </metadata>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Registry files|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Create registry backup</value>\r\n  </data>\r\n  <metadata name=\"globalHotkeys1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>1017, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>1031, 624</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>522, 338</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>2, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnDisplayName.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnDisplayName</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnDisplayName.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnPublisher.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnPublisher</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnPublisher.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnRating.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnRating</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnRating.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnDisplayVersion.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnDisplayVersion</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnDisplayVersion.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnInstallDate.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnInstallDate</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnInstallDate.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnSize.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnSize</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnSize.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnStartup.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnStartup</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnStartup.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnIs64.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnIs64</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnIs64.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnUninstallString.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnUninstallString</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnUninstallString.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnAbout.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnAbout</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnAbout.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnInstallSource.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnInstallSource</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnInstallSource.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnInstallLocation.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnInstallLocation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnInstallLocation.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnUninstallerKind.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnUninstallerKind</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnUninstallerKind.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnSystemComponent.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnSystemComponent</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnSystemComponent.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnProtected.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnProtected</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnProtected.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnRegistryKeyName.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnRegistryKeyName</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnRegistryKeyName.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnGuid.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnGuid</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnGuid.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnQuietUninstallString.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnQuietUninstallString</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnQuietUninstallString.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButton1.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButton1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButton1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator22.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator22</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator22.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSelAll.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonSelAll</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSelAll.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSelNone.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonSelNone</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSelNone.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSelInv.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonSelInv</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSelInv.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator23.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator23</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator23.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonTarget.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonTarget</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonTarget.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator21.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator21</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator21.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonUninstall.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonUninstall</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonUninstall.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButton2.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButton2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButton2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonModify.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonModify</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonModify.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator4.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonProperties.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonProperties</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonProperties.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator24.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator24</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator24.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButton7.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButton7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButton7.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButton8.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButton8</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButton8.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripLabelStatus.Name\" xml:space=\"preserve\">\r\n    <value>toolStripLabelStatus</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripLabelStatus.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripLabelSize.Name\" xml:space=\"preserve\">\r\n    <value>toolStripLabelSize</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripLabelSize.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripLabelTotal.Name\" xml:space=\"preserve\">\r\n    <value>toolStripLabelTotal</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripLabelTotal.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>uninstallContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;quietUninstallContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>quietUninstallContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;quietUninstallContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;manualUninstallToolStripMenuItem1.Name\" xml:space=\"preserve\">\r\n    <value>manualUninstallToolStripMenuItem1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;manualUninstallToolStripMenuItem1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallUsingMsiExecContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>uninstallUsingMsiExecContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallUsingMsiExecContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;msiInstallContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>msiInstallContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;msiInstallContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;msiUninstallContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>msiUninstallContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;msiUninstallContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;msiQuietUninstallContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>msiQuietUninstallContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;msiQuietUninstallContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator3.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;excludeToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>excludeToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;excludeToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;includeToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>includeToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;includeToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparatorFiltering.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparatorFiltering</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparatorFiltering.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;runToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>runToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;runToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator8.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator8</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator8.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;copyToClipboardContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>copyToClipboardContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;copyToClipboardContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem9.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem9.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator9.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator9.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fullInformationCopyContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>fullInformationCopyContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fullInformationCopyContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;programNameCopyContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>programNameCopyContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;programNameCopyContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;gUIDProductCodeCopyContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>gUIDProductCodeCopyContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;gUIDProductCodeCopyContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fullRegistryPathCopyContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>fullRegistryPathCopyContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fullRegistryPathCopyContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallStringCopyContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>uninstallStringCopyContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallStringCopyContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;deleteRegistryEntryContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>deleteRegistryEntryContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;deleteRegistryEntryContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;renameContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>renameContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;renameContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator6.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator6.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openInExplorerContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>openInExplorerContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openInExplorerContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;installLocationOpenInExplorerContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>installLocationOpenInExplorerContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;installLocationOpenInExplorerContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallerLocationOpenInExplorerContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>uninstallerLocationOpenInExplorerContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallerLocationOpenInExplorerContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;sourceLocationOpenInExplorerContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>sourceLocationOpenInExplorerContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;sourceLocationOpenInExplorerContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openWebPageContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>openWebPageContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openWebPageContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;lookUpOnlineToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>lookUpOnlineToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;lookUpOnlineToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem15.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem15</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem15.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem16.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem16</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem16.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;slantcoToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>slantcoToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;slantcoToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator26.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator26</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator26.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fossHubcomToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>fossHubcomToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fossHubcomToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;sourceForgecomToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>sourceForgecomToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;sourceForgecomToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;gitHubcomToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>gitHubcomToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;gitHubcomToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fileHippocomToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>fileHippocomToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fileHippocomToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;rateToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>rateToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;rateToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator7.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator7.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesContextMenuStripItem.Name\" xml:space=\"preserve\">\r\n    <value>propertiesContextMenuStripItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesContextMenuStripItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exportDialog.Name\" xml:space=\"preserve\">\r\n    <value>exportDialog</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exportDialog.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fileToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>fileToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;fileToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;reloadUninstallersToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>reloadUninstallersToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;reloadUninstallersToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator1.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;loadUninstallerListToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>loadUninstallerListToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;loadUninstallerListToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator30.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator30</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator30.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exportSelectedToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>exportSelectedToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exportSelectedToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exportToABatchUninstallScriptToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>exportToABatchUninstallScriptToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exportToABatchUninstallScriptToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator10.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator10</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator10.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exitToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>exitToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exitToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;viewToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>viewToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;viewToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;showColorLegendToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>showColorLegendToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;showColorLegendToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;displayToolbarToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>displayToolbarToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;displayToolbarToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;showTreemapToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>showTreemapToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;showTreemapToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;displaySettingsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>displaySettingsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;displaySettingsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;displayStatusbarToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>displayStatusbarToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;displayStatusbarToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator12.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator12</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator12.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;useSystemThemeToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>useSystemThemeToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;useSystemThemeToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator33.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator33</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator33.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;autosizeAllColumnsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>autosizeAllColumnsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;autosizeAllColumnsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;filteringToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>filteringToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;filteringToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedApplicationsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>advancedApplicationsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedApplicationsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;basicApplicationsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>basicApplicationsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;basicApplicationsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;systemComponentsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>systemComponentsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;systemComponentsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;everythingToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>everythingToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;everythingToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator20.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator20</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator20.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;automaticallyStartedToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>automaticallyStartedToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;automaticallyStartedToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;onlyWebBrowsersToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>onlyWebBrowsersToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;onlyWebBrowsersToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator31.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator31</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator31.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;viewTweaksToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>viewTweaksToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;viewTweaksToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;viewUnregisteredToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>viewUnregisteredToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;viewUnregisteredToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;viewUpdatesToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>viewUpdatesToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;viewUpdatesToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;viewWindowsFeaturesToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>viewWindowsFeaturesToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;viewWindowsFeaturesToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;viewWindowsStoreAppsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>viewWindowsStoreAppsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;viewWindowsStoreAppsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator28.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator28</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator28.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;searchToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>searchToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;searchToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;basicOperationsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>basicOperationsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;basicOperationsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>uninstallToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;quietUninstallToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>quietUninstallToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;quietUninstallToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;modifyToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>modifyToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;modifyToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator2.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem8.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem8</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem8.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedClipCopyToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>advancedClipCopyToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedClipCopyToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator11.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator11</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator11.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;copyFullInformationToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>copyFullInformationToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;copyFullInformationToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem10.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem10</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem10.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem11.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem11</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem11.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem12.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem12</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem12.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem13.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem13</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem13.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem1.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem5.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem6.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem6.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem7.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem7.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem14.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem14</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem14.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;onlineSearchToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>onlineSearchToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;onlineSearchToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;googleToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>googleToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;googleToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;alternativeToToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>alternativeToToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;alternativeToToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;slantcoToolStripMenuItem1.Name\" xml:space=\"preserve\">\r\n    <value>slantcoToolStripMenuItem1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;slantcoToolStripMenuItem1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator27.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator27</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator27.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem17.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem17</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem17.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem18.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem18</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem18.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem20.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem20</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem20.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem19.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem19</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem19.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;rateToolStripMenuItem1.Name\" xml:space=\"preserve\">\r\n    <value>rateToolStripMenuItem1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;rateToolStripMenuItem1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator15.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator15</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator15.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>propertiesToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedOperationsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>advancedOperationsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;advancedOperationsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;manualUninstallToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>manualUninstallToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;manualUninstallToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;msiUninstalltoolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>msiUninstalltoolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;msiUninstalltoolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem2.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem3.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem4.Name\" xml:space=\"preserve\">\r\n    <value>toolStripMenuItem4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripMenuItem4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator14.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator14</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator14.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;renameToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>renameToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;renameToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;disableAutostartToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>disableAutostartToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;disableAutostartToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;deleteToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>deleteToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;deleteToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator5.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;createBackupToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>createBackupToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;createBackupToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openKeyInRegeditToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>openKeyInRegeditToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openKeyInRegeditToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator32.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator32</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator32.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;takeOwnershipToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>takeOwnershipToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;takeOwnershipToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>toolsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openStartupManagerToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>openStartupManagerToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openStartupManagerToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator25.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator25</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator25.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;cleanUpProgramFilesToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>cleanUpProgramFilesToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;cleanUpProgramFilesToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;targetMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>targetMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;targetMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallFromDirectoryToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>uninstallFromDirectoryToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallFromDirectoryToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator13.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator13</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator13.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;troubleshootUninstallProblemsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>troubleshootUninstallProblemsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;troubleshootUninstallProblemsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;startDiskCleanupToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>startDiskCleanupToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;startDiskCleanupToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tryToInstallNETV35ToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>tryToInstallNETV35ToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tryToInstallNETV35ToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;createRestorePointToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>createRestorePointToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;createRestorePointToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator29.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator29</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator29.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openProgramsAndFeaturesToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>openProgramsAndFeaturesToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openProgramsAndFeaturesToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openSystemRestoreToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>openSystemRestoreToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openSystemRestoreToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator19.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator19</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator19.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;settingsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>settingsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;settingsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;helpToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>helpToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;helpToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openHelpToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>openHelpToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openHelpToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;startSetupWizardToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>startSetupWizardToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;startSetupWizardToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator16.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator16</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator16.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkForUpdatesToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>checkForUpdatesToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkForUpdatesToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;submitFeedbackToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>submitFeedbackToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;submitFeedbackToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator18.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator18</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator18.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;resetSettingsToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>resetSettingsToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;resetSettingsToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallBCUninstallToolstripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>uninstallBCUninstallToolstripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallBCUninstallToolstripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator17.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator17</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator17.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;aboutToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>aboutToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;aboutToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;debugToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>debugToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;debugToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;createBackupFileDialog.Name\" xml:space=\"preserve\">\r\n    <value>createBackupFileDialog</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;createBackupFileDialog.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;globalHotkeys1.Name\" xml:space=\"preserve\">\r\n    <value>globalHotkeys1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;globalHotkeys1.Type\" xml:space=\"preserve\">\r\n    <value>Klocman.Subsystems.GlobalHotkeys, KlocTools, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splashScreen1.Name\" xml:space=\"preserve\">\r\n    <value>splashScreen1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splashScreen1.Type\" xml:space=\"preserve\">\r\n    <value>Klocman.Forms.SplashScreen, KlocTools, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;usageTracker.Name\" xml:space=\"preserve\">\r\n    <value>usageTracker</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;usageTracker.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Functions.Tracking.UsageTracker, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>MainWindow</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <metadata name=\"splashScreen1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>1175, 17</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 60</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Имя</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Издатель</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>Рейтинг пользователей</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Версия</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Дата установки</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Размер</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Автозагрузка</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>x64</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Команда удаления</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>Сайт программы</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Откуда установлен</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Куда установлен</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>Тип деинсталлятора</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>Компонент системы</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Защищён</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Реестр</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Код продукта</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Команда тихого удаления</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>Обновить список</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Выбрать всё</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Отменить выбор</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Обратить выбор</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Удаление</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>Удалить тихо</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Свойства</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Параметры</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Справка</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Расширенный фильтр</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Поиск</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Удалить</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Удалить &amp;тихо</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ручное удаление</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Установка и &amp;настройка (/I)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Удалить (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Удалить &amp;тихо (/X /qb)</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Испол&amp;ьзовать MsiExec...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Больше настроек...</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Всю информацию</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Название программы</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Код продукта / GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Полный путь реестра</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Команду удаления</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Копировать в буфер...</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Удалить запись &amp;реестра</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Переименовать...</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Место установки</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Папку &amp;деинстраллятора</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Локацию установщика</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Открыть в &amp;проводнике...</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Сайт программы</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Поиск &amp;онлайн</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Рейтинг...</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Свойства</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>XML файл|*.xml</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Экспорт свойств выбранных элементов</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Обновить &amp;список</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Открыть список деинсталляции...</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Экспорт выбранного...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Вы&amp;ход</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Файл</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Показать легенду подсветки</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Показывать &amp;тулбар</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Показывать &amp;статусбар</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Показывать &amp;панель настроек</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Использовать тему Windows</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Просмотр приложений магазина Windows</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Поиск...</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Вид</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Удалить</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Удалить &amp;тихо</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Больше опций...</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Вся информация</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Название программы</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Код продукта / GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Полный путь реестра</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>Команду удаления</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Копировать в буфер...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Место установки</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>Папку &amp;деинстраллятора</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Локацию установщика</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Открыть в &amp;проводнике...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Сайт программы</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Поиск &amp;онлайн</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Рейтинг...</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Свойства</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Базовые операции</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ручное удаление</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>Установка и &amp;настройка (/I)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Удалить (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>Удалить &amp;тихо (/X /qb)</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Использовать MsiExec...</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Переименовать...</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Отключить автозагрузку</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Удалить запись &amp;реестра</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Создать &amp;бекап...</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Открыть ключ в Regedit</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Расширенные операции</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Очистка папки \"Program Files\"...</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Открыть автозагрузку</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Открыть \"&amp;Программы и компоненты\"</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Настройки</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Сервис</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Открыть &amp;справку</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Мастер настройки</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Проверить обновления</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Обратная связь...</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Сбросить настройки по умолчанию</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Самоудаление BCUninstaller</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;О программе</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Справка</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Открыть окно &amp;отладки</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Reg файл|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Создать бэкап реестра</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>AlternativeTo.net</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Альтернативный</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Просмотр обновлений</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Удалить из каталога...</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Открыть \"Восстановление системы\"</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Запустить...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>Удаление по окну, каталогу или файлу...</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Удаление по окну, каталогу или файлу...</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Исключая</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Включая</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Показывать карту &amp;дерева</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Просмотр незарегистрированных</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Просмотр функций Windows</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Изменённые</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>Изменить</value>\r\n  </data>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Создание новой точки восстановления</value>\r\n  </data>\r\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Экспортировать в скрипт пакетного удаления</value>\r\n  </data>\r\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Создать скрипт-деинсталлятор PowerShell для приложений магазина...  </value>\r\n  </data>\r\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Стандартная фильтрация</value>\r\n  </data>\r\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Только &amp;базовые приложения</value>\r\n  </data>\r\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Только системные приложения</value>\r\n  </data>\r\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Всё подряд</value>\r\n  </data>\r\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Только автозапускающиеся</value>\r\n  </data>\r\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Только веб-браузеры</value>\r\n  </data>\r\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Показать твики</value>\r\n  </data>\r\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Быстрая фильтрация</value>\r\n  </data>\r\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Взять ответственность на себя</value>\r\n  </data>\r\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Решить проблемы удаления...</value>\r\n  </data>\r\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Запустить очистку диска</value>\r\n  </data>\r\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Установить .NET v3.5 (доп. фича)</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Slant.co</value>\r\n  </data>\r\n  <metadata name=\"toolStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>462, 17</value>\r\n  </metadata>\r\n  <metadata name=\"statusStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>958, 17</value>\r\n  </metadata>\r\n  <metadata name=\"uninstallListContextMenuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>139, 17</value>\r\n  </metadata>\r\n  <metadata name=\"exportDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"menuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>354, 17</value>\r\n  </metadata>\r\n  <metadata name=\"createBackupFileDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>560, 17</value>\r\n  </metadata>\r\n  <metadata name=\"toolTip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>738, 17</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>835, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"globalHotkeys1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>1074, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Poišči</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\r\n    <value>Ime</value>\r\n  </data>\r\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\r\n    <value>Založnik</value>\r\n  </data>\r\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\r\n    <value>Različica</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\r\n    <value>Datum namestitve</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Velikost</value>\r\n  </data>\r\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\r\n    <value>Zagon</value>\r\n  </data>\r\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\r\n    <value>64-bitni</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Ukaz za odstranjevanje</value>\r\n  </data>\r\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\r\n    <value>O URL naslovu</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\r\n    <value>Vir namestitve</value>\r\n  </data>\r\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\r\n    <value>Mesto namestitve</value>\r\n  </data>\r\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\r\n    <value>Vrsta odstranjevalca</value>\r\n  </data>\r\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\r\n    <value>Sistemska sestavina</value>\r\n  </data>\r\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\r\n    <value>Zaščiten</value>\r\n  </data>\r\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\r\n    <value>Registrski ključ</value>\r\n  </data>\r\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\r\n    <value>Koda izdelka</value>\r\n  </data>\r\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\r\n    <value>Ukaz tihega odstranjevanja</value>\r\n  </data>\r\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\r\n    <value>Znova naloži odstranjevalce</value>\r\n  </data>\r\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\r\n    <value>Odpri sezname odstranjevanja...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Izberi vse</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\r\n    <value>Odstrani vse</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\r\n    <value>Obrni izbor</value>\r\n  </data>\r\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Odstrani</value>\r\n  </data>\r\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\r\n    <value>Odstrani tiho</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Lastnosti</value>\r\n  </data>\r\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odstrani</value>\r\n  </data>\r\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Odstrani &amp;tiho</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Odstrani &amp;ročno</value>\r\n  </data>\r\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Namesti ali nastavi (/I)</value>\r\n  </data>\r\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odstrani (/X)</value>\r\n  </data>\r\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Tiho odstrani (/X /qb)</value>\r\n  </data>\r\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Odstrani z &amp;MsiExec...</value>\r\n  </data>\r\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Pol&amp;ne informacije</value>\r\n  </data>\r\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Ime programa</value>\r\n  </data>\r\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Koda programa / GUID</value>\r\n  </data>\r\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Polna pot registra</value>\r\n  </data>\r\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Odstranjevalni niz</value>\r\n  </data>\r\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kopiraj v odložišče</value>\r\n  </data>\r\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Izbriši registrski vnos</value>\r\n  </data>\r\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>P&amp;reimenuj...</value>\r\n  </data>\r\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Mesto namestitve</value>\r\n  </data>\r\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Mesto o&amp;dstranjevalca</value>\r\n  </data>\r\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Mesto &amp;vira</value>\r\n  </data>\r\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Odpri v Ra&amp;ziskovalcu...</value>\r\n  </data>\r\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>Odpri &amp;spletno stran</value>\r\n  </data>\r\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Po&amp;išči na spletu</value>\r\n  </data>\r\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Lastnosti</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Izvozi izbrane lastnosti odstranjevalca</value>\r\n  </data>\r\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Znova naloži odstranjevalce</value>\r\n  </data>\r\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odpri seznam odstranjevanja...</value>\r\n  </data>\r\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>I&amp;zvozi izbor...</value>\r\n  </data>\r\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Izhod</value>\r\n  </data>\r\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Datoteka</value>\r\n  </data>\r\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži barvno legendo</value>\r\n  </data>\r\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži  o&amp;rodno vrstico</value>\r\n  </data>\r\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži statusno &amp;vrstico</value>\r\n  </data>\r\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži &amp;stransko vrstico z nastavitvami</value>\r\n  </data>\r\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Uporabi sistemsko temo</value>\r\n  </data>\r\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Poišči...</value>\r\n  </data>\r\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>O&amp;gled</value>\r\n  </data>\r\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ods&amp;trani</value>\r\n  </data>\r\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odstrani ti&amp;ho</value>\r\n  </data>\r\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Polna informacija</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\r\n    <value>Ime programa</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\r\n    <value>Koda izdelka/GUID</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\r\n    <value>Polna registrska pot</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\r\n    <value>Niz za odstranjevanje</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kopiraj v odložišče...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Mesto namestitve</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\r\n    <value>Mesto od&amp;stranjevalca</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\r\n    <value>Mesto &amp;vira</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Odpri v &amp;Raziskovalcu...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\r\n    <value>Odpri sple&amp;tno stran</value>\r\n  </data>\r\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Poišči na s&amp;pletu</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži &amp;lastnosti</value>\r\n  </data>\r\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Osnov&amp;ne operacije</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ročno odstrani</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\r\n    <value>Namest&amp;i ali konfiguriraj (/I)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odstrani (/X)</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Tiho odstrani (/X /qb)</value>\r\n  </data>\r\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ods&amp;trani z uporabo MsiExec</value>\r\n  </data>\r\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>P&amp;reimenuj...</value>\r\n  </data>\r\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Onemogoči samodejni zagon</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Iz&amp;briši registrski ključ</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ustvari &amp;varnostno kopijo...</value>\r\n  </data>\r\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odpri ključ z Regeditom</value>\r\n  </data>\r\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Napredne operacije</value>\r\n  </data>\r\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Čiščenje map \"Programske datoteke\"...</value>\r\n  </data>\r\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odpri upravitelja zagona</value>\r\n  </data>\r\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odpri \"&amp;Programi in funkcije\"</value>\r\n  </data>\r\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Na&amp;stavitve</value>\r\n  </data>\r\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>O&amp;rodja</value>\r\n  </data>\r\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odpri po&amp;moč</value>\r\n  </data>\r\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zažni čarovnika za namestitev</value>\r\n  </data>\r\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Preveri obstoj posodobitev</value>\r\n  </data>\r\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pošlji povratne informacije...</value>\r\n  </data>\r\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ponastavi nastavitve</value>\r\n  </data>\r\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odstrani BCUninstaller</value>\r\n  </data>\r\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Vizitka</value>\r\n  </data>\r\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Po&amp;moč</value>\r\n  </data>\r\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odpri o&amp;kno za razhroščanje</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Registrske datoteke|*.reg</value>\r\n  </data>\r\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Ustvari varnostno kopijo registra</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\r\n    <value>Uporabnikova ocena</value>\r\n  </data>\r\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\r\n    <value>Pomoč</value>\r\n  </data>\r\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\r\n    <value>Napredno filtriranje</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\r\n    <value>Napredno...</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ocena...</value>\r\n  </data>\r\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Prikaz Windows Store aplikacije</value>\r\n  </data>\r\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Napredno...</value>\r\n  </data>\r\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\r\n    <value>Oceni...</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\r\n    <value>Neobvezno</value>\r\n  </data>\r\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Google</value>\r\n  </data>\r\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Neobvezno za</value>\r\n  </data>\r\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odstrani iz imenika...</value>\r\n  </data>\r\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odpri \"Obnovitev sistema\"</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\r\n    <value>Odstranitev po oknu, imeniku ali datoteki...</value>\r\n  </data>\r\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zaženi...</value>\r\n  </data>\r\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Prikaz posodobitev</value>\r\n  </data>\r\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odstranitev  z oknom, imenikom ali datoteko...</value>\r\n  </data>\r\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\r\n    <value>FossHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\r\n    <value>SourceForge.net</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\r\n    <value>GitHub.com</value>\r\n  </data>\r\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\r\n    <value>FileHippo.com</value>\r\n  </data>\r\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\r\n    <value>Spremeni</value>\r\n  </data>\r\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Izključi</value>\r\n  </data>\r\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Vključi</value>\r\n  </data>\r\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Spremeni\r\n</value>\r\n  </data>\r\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Prikaz neregistriranih</value>\r\n  </data>\r\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Prikaz Windows funkcij</value>\r\n  </data>\r\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži drevo &amp;map</value>\r\n  </data>\r\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Začni čiščenje diska</value>\r\n  </data>\r\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Namesti .NET v3.5 (dodaj funkcijo)</value>\r\n  </data>\r\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Izvozi v serijsko skripto za odstranitev...</value>\r\n  </data>\r\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ustvarite PowerShell skripto za shranjevanje aplikacij...</value>\r\n  </data>\r\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Privzeti &amp;filtri</value>\r\n  </data>\r\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Samo &amp;osnovne aplikacije</value>\r\n  </data>\r\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Samo sistemske komponente</value>\r\n  </data>\r\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Vse</value>\r\n  </data>\r\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Samo zagnane aplikacije</value>\r\n  </data>\r\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Samo spletne brskalnike</value>\r\n  </data>\r\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Prikaz izboljšav</value>\r\n  </data>\r\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Hitri filtri</value>\r\n  </data>\r\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odpravljanje težav pri odstranjevanju...</value>\r\n  </data>\r\n  <metadata name=\"toolStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>628, 17</value>\r\n  </metadata>\r\n  <metadata name=\"statusStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>140, 56</value>\r\n  </metadata>\r\n  <metadata name=\"uninstallListContextMenuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>305, 17</value>\r\n  </metadata>\r\n  <metadata name=\"exportDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>183, 17</value>\r\n  </metadata>\r\n  <metadata name=\"menuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>520, 17</value>\r\n  </metadata>\r\n  <metadata name=\"createBackupFileDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>726, 17</value>\r\n  </metadata>\r\n  <metadata name=\"toolTip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>904, 17</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 56</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"globalHotkeys1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>256, 56</value>\r\n  </metadata>\r\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ustvari novo obnovitveno točko</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\n    <value>Namn</value>\n  </data>\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\n    <value>Utgivare</value>\n  </data>\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\n    <value>Användarbedömning</value>\n  </data>\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\n    <value>Installationsdatum</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>Storlek</value>\n  </data>\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\n    <value>Uppstart</value>\n  </data>\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\n    <value>64bit</value>\n  </data>\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\n    <value>Avinstallationskommando</value>\n  </data>\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\n    <value>Om URL</value>\n  </data>\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\n    <value>Installationskälla</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>Installationsmål</value>\n  </data>\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\n    <value>Avinstallation typ</value>\n  </data>\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\n    <value>Systemkomponent</value>\n  </data>\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\n    <value>Skyddad</value>\n  </data>\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\n    <value>Registernyckel</value>\n  </data>\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\n    <value>Produktkod</value>\n  </data>\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\n    <value>Tyst avinstallationskommando</value>\n  </data>\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\n    <value>Ladda om avinstallationsprogram</value>\n  </data>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>Välj alla</value>\n  </data>\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\n    <value>Avvälj alla</value>\n  </data>\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\n    <value>Omvänd val</value>\n  </data>\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\n    <value>Avinstallera via fönster, mapp eller fil...</value>\n  </data>\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\n    <value>Avinstallera</value>\n  </data>\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\n    <value>Avinstallera tyst</value>\n  </data>\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\n    <value>Ändra</value>\n  </data>\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\n    <value>Egenskaper</value>\n  </data>\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\n    <value>Inställningar</value>\n  </data>\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\n    <value>Hjälp</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller</value>\n  </data>\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\n    <value>Avancerad filtrering</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Sök</value>\n  </data>\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Avinstallera</value>\n  </data>\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Avinstallera &amp;tyst</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Avinstallera &amp;manuellt</value>\n  </data>\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Avinstllera eller konfigurera (/I)</value>\n  </data>\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Avinstallera (/X)</value>\n  </data>\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Tyst avinstallation (/X /qb)</value>\n  </data>\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Avinstallera med &amp;MsiExec...</value>\n  </data>\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Exkludera</value>\n  </data>\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Inkludera</value>\n  </data>\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Kör...</value>\n  </data>\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\n    <value>Avancerad...</value>\n  </data>\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Full information</value>\n  </data>\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Programnamn</value>\n  </data>\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Produkt kod / GUID</value>\n  </data>\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Register sökväg</value>\n  </data>\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Avinstallationssträng</value>\n  </data>\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kopiera till Urklipp...</value>\n  </data>\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Radera registerpost</value>\n  </data>\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Döp om...</value>\n  </data>\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Installationsplats</value>\n  </data>\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Avinstallationsplats</value>\n  </data>\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Källplats</value>\n  </data>\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Öppna i &amp;utforskaren...</value>\n  </data>\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Öppna &amp;Webbsida</value>\n  </data>\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\n    <value>Google</value>\n  </data>\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\n    <value>AlternativeTo.net</value>\n  </data>\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Slant.co</value>\n  </data>\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>FossHub.com</value>\n  </data>\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>SourceForge.net</value>\n  </data>\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>GitHub.com</value>\n  </data>\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>FileHippo.com</value>\n  </data>\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Sök online</value>\n  </data>\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Betygsätt...</value>\n  </data>\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Egenskaper</value>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>XML filer|*.xml</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>Exportera valda avinstallationsprogram egenskaper</value>\n  </data>\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Ladda om avinstallationsprogram</value>\n  </data>\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Öppna avinstalltionslista</value>\n  </data>\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Exportera data för valda avinstallationer...</value>\n  </data>\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Exportera till ett batch avinstallations-script</value>\n  </data>\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Skapa PowerShell borttagningsscript för Store Appar...</value>\n  </data>\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Avsluta</value>\n  </data>\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Arkiv</value>\n  </data>\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Visa färgförklaring</value>\n  </data>\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Visa &amp;verktygsfält</value>\n  </data>\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Visa träd&amp;map</value>\n  </data>\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Visa &amp;inställningar i sidofältet</value>\n  </data>\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Visa status &amp;fält</value>\n  </data>\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Använd system tema</value>\n  </data>\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Vy</value>\n  </data>\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Standard filter</value>\n  </data>\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Endast &amp;grundläggande appar</value>\n  </data>\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Bara systemkomponenter</value>\n  </data>\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Allting</value>\n  </data>\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Bara automatiskt startade</value>\n  </data>\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Bara webbläsare</value>\n  </data>\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Visa Justeringar</value>\n  </data>\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Visa Oregistrerade</value>\n  </data>\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Visa uppdateringar</value>\n  </data>\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Visa Windows-funktioner</value>\n  </data>\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Visa Windows Store Appar</value>\n  </data>\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Sök...</value>\n  </data>\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Snabbfilter</value>\n  </data>\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Avinstallera</value>\n  </data>\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Avinstallera &amp;tyst</value>\n  </data>\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Modifiera</value>\n  </data>\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Avancerat...</value>\n  </data>\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Fullständig information</value>\n  </data>\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\n    <value>Programnamn</value>\n  </data>\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\n    <value>Produkt kod / GUID</value>\n  </data>\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\n    <value>Fullständig registersökväg</value>\n  </data>\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\n    <value>Avinstallationssträng</value>\n  </data>\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\n    <value>&amp;Kopiera till Urklipp...</value>\n  </data>\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\n    <value>&amp;Installationsplats</value>\n  </data>\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\n    <value>&amp;Avinstallationsplats</value>\n  </data>\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\n    <value>&amp;Källplats</value>\n  </data>\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Öppna med &amp;utforskaren...</value>\n  </data>\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\n    <value>Öppna &amp;Webbsida</value>\n  </data>\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Google</value>\n  </data>\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>AlternativeTo</value>\n  </data>\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Slant.co</value>\n  </data>\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\n    <value>FossHub.com</value>\n  </data>\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\n    <value>SourceForge.net</value>\n  </data>\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\n    <value>GitHub.com</value>\n  </data>\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\n    <value>FileHippo.com</value>\n  </data>\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Sök online</value>\n  </data>\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Betygsätt...</value>\n  </data>\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Visa &amp;egenskaper</value>\n  </data>\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Grundläggande åtgärder</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Avinstallera &amp;manuellt</value>\n  </data>\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\n    <value>&amp;Installera eller konfigurera (/I)</value>\n  </data>\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\n    <value>&amp;Avinstallera (/X)</value>\n  </data>\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\n    <value>&amp;Tyst avinstallation (/X /qb)</value>\n  </data>\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Avinstallera med MsiExec</value>\n  </data>\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Döp om...</value>\n  </data>\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Inaktivera autostart</value>\n  </data>\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Radera registernyckel</value>\n  </data>\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Skapa &amp;backup...</value>\n  </data>\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Öppna nyckel i Regedit</value>\n  </data>\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Ta ägarskap</value>\n  </data>\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Avancerade åtgärder</value>\n  </data>\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Öppna Uppstartshanteraren</value>\n  </data>\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Rensa \"Program Files\" mappar...</value>\n  </data>\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\n    <value>Avinstallera via fönster, katalog eller fil...</value>\n  </data>\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Avinstallera från mapp...</value>\n  </data>\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Felsök avinstallations problem...</value>\n  </data>\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Starta Diskrensning</value>\n  </data>\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Installera .NET v3.5 (lägg till funktion)</value>\n  </data>\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Skapa ny återställningspunkt</value>\n  </data>\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Öppna \"&amp;Program och funktioner</value>\n  </data>\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Öppna \"Systemåterställning\"</value>\n  </data>\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Inställningar</value>\n  </data>\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Verktyg</value>\n  </data>\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Öppna &amp;hjälp</value>\n  </data>\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Starta installationsguiden</value>\n  </data>\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Sök efter uppdateringar</value>\n  </data>\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Skicka feedback...</value>\n  </data>\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Återställ inställningar</value>\n  </data>\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Avinstallera BCUninstaller</value>\n  </data>\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Om</value>\n  </data>\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Hjälp</value>\n  </data>\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Öppna &amp;debug fönster</value>\n  </data>\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\n    <value>Register filer|*.reg</value>\n  </data>\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\n    <value>Skapa backup av registret</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bulk Crap Uninstaller</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\n    <value>Adı</value>\n  </data>\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\n    <value>Yayıncı</value>\n  </data>\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\n    <value>Kullanıcı oyu</value>\n  </data>\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\n    <value>Versiyon</value>\n  </data>\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\n    <value>Kurulum Tarihi</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>Boyut</value>\n  </data>\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\n    <value>Başlangıç</value>\n  </data>\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\n    <value>64 Bit</value>\n  </data>\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\n    <value>Kaldırma komutu</value>\n  </data>\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\n    <value>URL Hakkında</value>\n  </data>\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\n    <value>Kurulum kaynağı</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>Kurulum Yeri</value>\n  </data>\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\n    <value>Kaldırıcı Türü</value>\n  </data>\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\n    <value>Sistem Bileşeni</value>\n  </data>\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\n    <value>Korumalı</value>\n  </data>\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\n    <value>Kayıt defteri anahtarı</value>\n  </data>\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\n    <value>Ürün kodu</value>\n  </data>\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\n    <value>Sessiz kaldırma komutu</value>\n  </data>\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\n    <value>Kaldırıcıları yeniden yükle</value>\n  </data>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>Tümünü seç</value>\n  </data>\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\n    <value>Tüm seçilenleri temizle</value>\n  </data>\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\n    <value>Seçimi ters çevir</value>\n  </data>\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\n    <value>Pencere, dizin veya dosyaya göre kaldır ...</value>\n  </data>\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\n    <value>Kaldır</value>\n  </data>\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\n    <value>Sessizce kaldır</value>\n  </data>\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\n    <value>Değiştir</value>\n  </data>\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\n    <value>Özellikler</value>\n  </data>\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\n    <value>Ayarlar</value>\n  </data>\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\n    <value>Yardım</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller</value>\n  </data>\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\n    <value>Gelişmiş filtreleme</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Ara</value>\n  </data>\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kaldır</value>\n  </data>\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Sessizce kaldır</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>&amp;Manuel kaldır</value>\n  </data>\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Yükle veya yapılandır</value>\n  </data>\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kaldır (/X)</value>\n  </data>\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Sessiz kaldırma (/X /qb)</value>\n  </data>\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;MsiExec kullanarak kaldır...</value>\n  </data>\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Hariç tut</value>\n  </data>\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Dahil et</value>\n  </data>\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Çalıştır...</value>\n  </data>\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\n    <value>Gelişmiş...</value>\n  </data>\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Tam bilgi</value>\n  </data>\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Program adı</value>\n  </data>\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Ürün kodu / GUID</value>\n  </data>\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Tam kayıt defteri yolu</value>\n  </data>\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Dizgeyi kaldır</value>\n  </data>\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Panoya kopyala</value>\n  </data>\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kayıt girdilerini sil</value>\n  </data>\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Adını değiştir</value>\n  </data>\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kurulum yeri</value>\n  </data>\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kaldırma yeri</value>\n  </data>\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kaynak yeri</value>\n  </data>\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Dosya yöneticisinde aç</value>\n  </data>\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Web sayfasını aç</value>\n  </data>\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\n    <value>Google</value>\n  </data>\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\n    <value>AlternativeTo.net</value>\n  </data>\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>FossHub.com</value>\n  </data>\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>SourceForge.net</value>\n  </data>\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>GitHub.com</value>\n  </data>\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>FileHippo.com</value>\n  </data>\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Çevrimiçi ara</value>\n  </data>\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Oyla...</value>\n  </data>\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Özellikler</value>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>XML dosyalar|*.xml</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>Seçilen kaldırıcı özelliklerini dışa aktar</value>\n  </data>\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kaldırıcıları yenile</value>\n  </data>\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kaldırılacak listesi aç</value>\n  </data>\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Seçilen kaldırıcıların verilerini dışa aktar...</value>\n  </data>\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Toplu kaldırma komut dosyasına aktar ...</value>\n  </data>\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Mağaza Uygulamaları için PowerShell kaldır komut dosyası oluştur ...</value>\n  </data>\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Ç&amp;ıkış</value>\n  </data>\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Dosya</value>\n  </data>\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Renk göstergesini göster</value>\n  </data>\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Araç &amp;çubuğunu göster</value>\n  </data>\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Ağaç yapısını ve haritayı göster</value>\n  </data>\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Ayarları k&amp;enar çubuğunda göster</value>\n  </data>\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>D&amp;urum çubuğunu göster</value>\n  </data>\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Sistem temasını kullan</value>\n  </data>\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Görünüm</value>\n  </data>\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Varsayılan filtreler</value>\n  </data>\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Sade&amp;ce basit uygulamalar</value>\n  </data>\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Sadece sistem bileşenleri</value>\n  </data>\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Herşey</value>\n  </data>\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Sadece otomatik olarak başlat</value>\n  </data>\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Sadece web tarayıcıları</value>\n  </data>\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Düzenlemeleri görüntüle</value>\n  </data>\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Kayıtsız olanları görüntüle</value>\n  </data>\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Güncellemeleri görüntüle</value>\n  </data>\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Windows Özelliklerini Görüntüle</value>\n  </data>\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Windows Mağazası Uygulamalarını Görüntüle</value>\n  </data>\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Ara...</value>\n  </data>\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Hızlı filtreler</value>\n  </data>\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kaldır</value>\n  </data>\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Sessizce kaldır</value>\n  </data>\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Düzenle</value>\n  </data>\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Gelişmiş...</value>\n  </data>\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Tam bilgi</value>\n  </data>\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\n    <value>Program adı</value>\n  </data>\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\n    <value>Ürün kodu / GUID</value>\n  </data>\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\n    <value>Tam kayıt defteri yolu</value>\n  </data>\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\n    <value>Dizgeyi kaldır</value>\n  </data>\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\n    <value>&amp;Panoya kopyala</value>\n  </data>\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\n    <value>&amp;Kurulum yeri</value>\n  </data>\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\n    <value>&amp;Kaldırma yeri</value>\n  </data>\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\n    <value>&amp;Kaynak yeri</value>\n  </data>\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>&amp;Dosya yöneticisinde aç</value>\n  </data>\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\n    <value>&amp;İnternet sayfasını aç</value>\n  </data>\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Google</value>\n  </data>\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>AlternativeTo</value>\n  </data>\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\n    <value>FossHub.com</value>\n  </data>\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\n    <value>SourceForge.net</value>\n  </data>\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\n    <value>GitHub.com</value>\n  </data>\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\n    <value>FileHippo.com</value>\n  </data>\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Çevrimiçi ara</value>\n  </data>\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Oyla...</value>\n  </data>\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Özellikleri göster</value>\n  </data>\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Basit operasyonlar</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Manuel Kaldır</value>\n  </data>\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\n    <value>&amp;Yükle veya yapılandır</value>\n  </data>\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\n    <value>&amp;Kaldır (/X)</value>\n  </data>\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\n    <value>&amp;Sessiz kaldırma (/ X / qb)</value>\n  </data>\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;MsiExec kullanarak kaldır</value>\n  </data>\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Adını değiştir</value>\n  </data>\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Otomatik başlangıcı devre dışı bırak</value>\n  </data>\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kayıt defteri anahtarını silin</value>\n  </data>\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Yedekleme &amp;oluştur</value>\n  </data>\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Anahtarı kayı&amp;t defterinde aç</value>\n  </data>\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Gelişmiş operasyonlar</value>\n  </data>\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Başlangıç yöneticisini aç</value>\n  </data>\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>\"Program Dosyaları\" klasörlerini temiz&amp;le ...</value>\n  </data>\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\n    <value>Pencere, dizin veya dosyaya göre kaldır ...</value>\n  </data>\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Dizinden kaldır ...</value>\n  </data>\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Kaldırma sorunlarını giderme ...</value>\n  </data>\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Disk Temizleme'yi Başlat</value>\n  </data>\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>.NET v3.5'i yükleyin (özellik ekleyin)</value>\n  </data>\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>\"Programlar ve Özellikler\" i açın</value>\n  </data>\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>\"Sistem Kurtarma\" yı açın</value>\n  </data>\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Ayarlar</value>\n  </data>\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>A&amp;raçlar</value>\n  </data>\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Ya&amp;rdım'ı aç</value>\n  </data>\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Kurulum sihirbazını başlat</value>\n  </data>\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Güncellemeleri kontrol et</value>\n  </data>\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Geri bildirim gönder ...</value>\n  </data>\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Ayarları Sıfırla</value>\n  </data>\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller öğesini kaldır</value>\n  </data>\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Hakkında</value>\n  </data>\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Yardım</value>\n  </data>\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Ha&amp;ta ayıklama penceresini aç</value>\n  </data>\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\n    <value>Kayıt dosyaları|*.reg</value>\n  </data>\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\n    <value>Kayıt defteri yedeği oluştur</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bulk Crap Uninstaller</value>\n  </data>\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Yeni bir geri yükleme noktası oluştur</value>\n  </data>\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Slant.co</value>\n  </data>\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Slant.co</value>\n  </data>\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Sahipliği alın</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\n    <value>Tên</value>\n  </data>\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\n    <value>Nhà phát hành</value>\n  </data>\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\n    <value>Đánh giá của người dùng</value>\n  </data>\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\n    <value>Phiên bản</value>\n  </data>\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\n    <value>Ngày cài đặt</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>Kích thước</value>\n  </data>\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\n    <value>Khởi động cùng hệ thống</value>\n  </data>\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\n    <value>64bit</value>\n  </data>\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\n    <value>Câu lệnh gỡ cài đặt</value>\n  </data>\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\n    <value>URL giới thiệu</value>\n  </data>\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\n    <value>Nguồn cài đặt</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>Vị trí cài đặt</value>\n  </data>\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\n    <value>Loại trình gỡ cài đặt</value>\n  </data>\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\n    <value>Thành phần hệ thống</value>\n  </data>\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\n    <value>Được bảo vệ</value>\n  </data>\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\n    <value>Khoá registry</value>\n  </data>\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\n    <value>Mã sản phẩm</value>\n  </data>\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\n    <value>Câu lệnh gỡ cài đặt âm thầm</value>\n  </data>\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\n    <value>Làm mới danh sách trình gỡ cài đặt</value>\n  </data>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>Chọn tất cả</value>\n  </data>\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\n    <value>Bỏ chọn tất cả</value>\n  </data>\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\n    <value>Đảo ngược lựa chọn</value>\n  </data>\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt dựa vào cửa sổ, thư mục hoặc tệp...</value>\n  </data>\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt</value>\n  </data>\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt âm thầm</value>\n  </data>\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\n    <value>Sửa đổi</value>\n  </data>\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\n    <value>Thuộc tính</value>\n  </data>\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\n    <value>Cài đặt</value>\n  </data>\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\n    <value>Trợ giúp</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller</value>\n  </data>\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\n    <value>Bộ lọc nâng cao</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Tìm kiếm</value>\n  </data>\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Gỡ cài đặt</value>\n  </data>\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt âm &amp;thầm</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt thủ &amp;công</value>\n  </data>\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Cài đặt hoặc cấu hình (/I)</value>\n  </data>\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Gỡ cài đặt (/X)</value>\n  </data>\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt âm &amp;thầm (/X /qb)</value>\n  </data>\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt bằng &amp;MsiExec...</value>\n  </data>\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Ngoại trừ</value>\n  </data>\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Bao gồm</value>\n  </data>\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Khởi chạy...</value>\n  </data>\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\n    <value>Nâng cao...</value>\n  </data>\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Thông tin đầy đủ</value>\n  </data>\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Tên ứng dụng</value>\n  </data>\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Mã sản phẩm / GUID</value>\n  </data>\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Đường dẫn đầy đủ đến registry</value>\n  </data>\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Câu lệnh gỡ cài đặt</value>\n  </data>\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Sao chép vào bảng nhớ tạm...</value>\n  </data>\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Xoá mục registry</value>\n  </data>\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Đổi &amp;tên...</value>\n  </data>\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Vị trí &amp;cài đặt</value>\n  </data>\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Vị trí &amp;trình gỡ cài đặt</value>\n  </data>\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Vị trí &amp;nguồn</value>\n  </data>\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Mở trong &amp;Explorer...</value>\n  </data>\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>Mở Trang &amp;web</value>\n  </data>\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\n    <value>Google</value>\n  </data>\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\n    <value>AlternativeTo.net</value>\n  </data>\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Slant.co</value>\n  </data>\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>FossHub.com</value>\n  </data>\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>SourceForge.net</value>\n  </data>\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>GitHub.com</value>\n  </data>\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>FileHippo.com</value>\n  </data>\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Tìm &amp;kiếm trực tuyến</value>\n  </data>\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Đánh giá...</value>\n  </data>\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Thuộc tính</value>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>Tệp XML|*.xml</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>Xuất các thuộc tính của trình gỡ cài đặt đã chọn</value>\n  </data>\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Làm mới danh sách trình gỡ cài đặt</value>\n  </data>\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Mở danh sách bộ lọc gỡ cài đặt...</value>\n  </data>\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Xuất dữ liệu của các trình gỡ cài đặt đã chọn...</value>\n  </data>\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Xuất sang tập lệnh gỡ cài đặt hàng loạt...</value>\n  </data>\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Tạo tập lệnh PowerShell để xoá Store App...</value>\n  </data>\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Thoát</value>\n  </data>\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Tệp</value>\n  </data>\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Hiển thị chú thích màu</value>\n  </data>\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Hiển thị &amp;thanh công cụ</value>\n  </data>\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Hiển thị &amp;bản đồ cây</value>\n  </data>\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Hiển thị &amp;cài đặt ở cạnh bên</value>\n  </data>\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Hiển thị th&amp;anh trạng thái</value>\n  </data>\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Sử dụng chủ đề hệ thống</value>\n  </data>\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Xem</value>\n  </data>\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Bộ lọc mặc định</value>\n  </data>\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Chỉ mình ứng &amp;dụng cơ bản</value>\n  </data>\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Chỉ mình thành phần hệ thống</value>\n  </data>\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Tất cả mọi thứ</value>\n  </data>\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Chỉ mình úng dụng tự động khởi chạy</value>\n  </data>\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Chỉ mình trình duyệt</value>\n  </data>\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Xem các tinh chỉnh</value>\n  </data>\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Xem các mục chưa đăng ký</value>\n  </data>\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Xem các ứng dụng cập nhật</value>\n  </data>\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Xem Windows Features</value>\n  </data>\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Xem Windows Store App</value>\n  </data>\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Tìm kiếm...</value>\n  </data>\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Bộ lọc</value>\n  </data>\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt</value>\n  </data>\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt âm &amp;thầm</value>\n  </data>\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Sửa đổi</value>\n  </data>\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Nâng cao...</value>\n  </data>\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Thông tin đầy đủ</value>\n  </data>\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\n    <value>Tên chương trình</value>\n  </data>\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\n    <value>Mã sản phẩm / GUID</value>\n  </data>\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\n    <value>Đường dẫn đầy đủ đến registry</value>\n  </data>\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\n    <value>Câu lệnh gỡ cài đặt</value>\n  </data>\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\n    <value>&amp;Sao chép vào bảng nhớ tạm...</value>\n  </data>\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\n    <value>Vị trí &amp;cài đặt</value>\n  </data>\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\n    <value>Vị trí &amp;trình gỡ cài đặt</value>\n  </data>\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\n    <value>Vị trí &amp;nguồn</value>\n  </data>\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Mở trong &amp;Explorer...</value>\n  </data>\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\n    <value>Mở trang &amp;web</value>\n  </data>\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Google</value>\n  </data>\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>AlternativeTo</value>\n  </data>\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Slant.co</value>\n  </data>\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\n    <value>FossHub.com</value>\n  </data>\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\n    <value>SourceForge.net</value>\n  </data>\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\n    <value>GitHub.com</value>\n  </data>\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\n    <value>FileHippo.com</value>\n  </data>\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Tìm &amp;kiếm trực tuyến</value>\n  </data>\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Đánh giá...</value>\n  </data>\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Hiển thị &amp;thuộc tính</value>\n  </data>\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Tính năng &amp;cơ bản</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt thủ &amp;công</value>\n  </data>\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\n    <value>&amp;Cài đặt hoặc cấu hình (/I)</value>\n  </data>\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\n    <value>&amp;Gỡ cài đặt (/X)</value>\n  </data>\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\n    <value>&amp;Gỡ cài đặt âm thầm (/X /qb)</value>\n  </data>\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt bằng &amp;MsiExec</value>\n  </data>\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Đổi &amp;tên...</value>\n  </data>\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Tắt tính năng tự khởi động</value>\n  </data>\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Xóa khóa registry</value>\n  </data>\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Tạo &amp;bản sao lưu...</value>\n  </data>\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Mở khoá trong Regedit</value>\n  </data>\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Lấy quyền sở hữu</value>\n  </data>\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Tính năng &amp;nâng cao</value>\n  </data>\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Mở Trình quản lý Khởi động cùng hệ thống</value>\n  </data>\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Dọn dẹp thư mục \"Program Files\"...</value>\n  </data>\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt dựa vào cửa sổ, thư mục hoặc tệp...</value>\n  </data>\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt từ thư mục...</value>\n  </data>\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Giải quyết vấn đề gỡ cài đặt...</value>\n  </data>\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Khởi chạy dọn dẹp đĩa</value>\n  </data>\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Cài đặt .NET v3.5 (và các tính năng đi kèm)</value>\n  </data>\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Tạo một điểm khôi phục mới</value>\n  </data>\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Mở \"&amp;Programs and Features\"</value>\n  </data>\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Mở \"System Recovery\"</value>\n  </data>\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Cài đặt</value>\n  </data>\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Công cụ</value>\n  </data>\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Mở &amp;trợ giúp</value>\n  </data>\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Khởi chạy trợ lý thiết lập</value>\n  </data>\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Kiểm tra các bản cập nhật</value>\n  </data>\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Gửi phản hồi...</value>\n  </data>\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Đặt lại cài đặt</value>\n  </data>\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt BCUninstaller</value>\n  </data>\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Giới thiệu</value>\n  </data>\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Trợ &amp;giúp</value>\n  </data>\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Mở cửa sổ gỡ lỗi</value>\n  </data>\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\n    <value>Tệp registry|*.reg</value>\n  </data>\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\n    <value>Tạo bản sao thanh ghi</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bulk Crap Uninstaller</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\n    <value>程序名</value>\n  </data>\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>默认筛选器</value>\n  </data>\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>高级选项...</value>\n  </data>\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>高级操作</value>\n  </data>\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>关于</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bulk Crap Uninstaller</value>\n  </data>\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\n    <value>发布者</value>\n  </data>\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\n    <value>用户评分</value>\n  </data>\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\n    <value>版本</value>\n  </data>\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\n    <value>安装日期</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>大小</value>\n  </data>\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\n    <value>开机启动项</value>\n  </data>\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\n    <value>64位</value>\n  </data>\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\n    <value>卸载命令</value>\n  </data>\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\n    <value>关于URL</value>\n  </data>\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\n    <value>安装源</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>安装位置</value>\n  </data>\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\n    <value>卸载程序类型</value>\n  </data>\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\n    <value>系统组件</value>\n  </data>\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\n    <value>受保护</value>\n  </data>\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\n    <value>注册表项</value>\n  </data>\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\n    <value>产品代码</value>\n  </data>\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\n    <value>静默卸载命令</value>\n  </data>\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\n    <value>重新加载卸载程序</value>\n  </data>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>全选</value>\n  </data>\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\n    <value>取消全选</value>\n  </data>\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\n    <value>反向选择</value>\n  </data>\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\n    <value>通过窗口,目录,或文件卸载...</value>\n  </data>\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\n    <value>卸载</value>\n  </data>\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\n    <value>静默卸载</value>\n  </data>\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\n    <value>修改</value>\n  </data>\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\n    <value>属性</value>\n  </data>\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\n    <value>设置</value>\n  </data>\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\n    <value>帮助</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller</value>\n  </data>\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\n    <value>高级筛选器</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>搜索</value>\n  </data>\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>卸载</value>\n  </data>\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>静默卸载</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>手动卸载</value>\n  </data>\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>安装或配置(/i)</value>\n  </data>\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>卸载(/X)</value>\n  </data>\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>静默卸载(/X /qb)</value>\n  </data>\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>使用&amp;MsiExec卸载...</value>\n  </data>\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>排除</value>\n  </data>\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>包括</value>\n  </data>\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>运行...</value>\n  </data>\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\n    <value>高级...</value>\n  </data>\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>完整信息</value>\n  </data>\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>程序名称</value>\n  </data>\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>产品代码/GUID</value>\n  </data>\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>完整注册表路径</value>\n  </data>\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>卸载字符串</value>\n  </data>\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>复制到剪贴板</value>\n  </data>\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>删除注册表项</value>\n  </data>\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>重命名</value>\n  </data>\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>安装位置</value>\n  </data>\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>卸载程序位置</value>\n  </data>\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>源位置</value>\n  </data>\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>在&amp;资源管理器中打开...</value>\n  </data>\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>打开&amp;网页</value>\n  </data>\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\n    <value>Google</value>\n  </data>\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\n    <value>AlternativeTo.net</value>\n  </data>\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Slant.co</value>\n  </data>\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>FossHub.com</value>\n  </data>\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>SourceForge.net</value>\n  </data>\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>GitHub.com</value>\n  </data>\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>FileHippo.com</value>\n  </data>\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>联机搜索</value>\n  </data>\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>评分...</value>\n  </data>\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>属性</value>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>XML文件|*.xml</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>导出选中的卸载程序属性</value>\n  </data>\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>重新加载卸载程序</value>\n  </data>\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>打开卸载程序列表...</value>\n  </data>\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>导出选中卸载程序数据...</value>\n  </data>\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>导出到批量卸载脚本...</value>\n  </data>\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>为商店应用创建PowerShell删除脚本...</value>\n  </data>\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>退出</value>\n  </data>\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>文件</value>\n  </data>\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>显示颜色图例</value>\n  </data>\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>显示工具栏</value>\n  </data>\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>显示树状矩形图</value>\n  </data>\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>显示设置侧边栏</value>\n  </data>\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>显示状态栏</value>\n  </data>\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>使用系统主题</value>\n  </data>\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>视图</value>\n  </data>\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>仅基本应用</value>\n  </data>\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>仅系统组件</value>\n  </data>\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>所有</value>\n  </data>\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>仅自动启动</value>\n  </data>\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>仅网页浏览器</value>\n  </data>\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>查看调整</value>\n  </data>\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>查看未注册应用</value>\n  </data>\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>查看更新</value>\n  </data>\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>查看Windows功能</value>\n  </data>\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>查看Windows商店应用</value>\n  </data>\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>搜索...</value>\n  </data>\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>快速筛选</value>\n  </data>\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>卸载</value>\n  </data>\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>静默卸载</value>\n  </data>\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>修改</value>\n  </data>\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>完整信息</value>\n  </data>\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\n    <value>程序名</value>\n  </data>\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\n    <value>产品代码/GUID</value>\n  </data>\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\n    <value>完整注册表路径</value>\n  </data>\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\n    <value>卸载字符串</value>\n  </data>\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\n    <value>复制到剪贴板</value>\n  </data>\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\n    <value>安装位置</value>\n  </data>\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\n    <value>卸载位置</value>\n  </data>\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\n    <value>源位置</value>\n  </data>\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>在资源管理器中打开</value>\n  </data>\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\n    <value>打开网页</value>\n  </data>\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Google</value>\n  </data>\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>AlternativeTo</value>\n  </data>\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Slant.co</value>\n  </data>\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\n    <value>FossHub.com</value>\n  </data>\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\n    <value>SourceForge.net</value>\n  </data>\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\n    <value>GitHub.com</value>\n  </data>\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\n    <value>FileHippo.com</value>\n  </data>\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>联机搜索</value>\n  </data>\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>评分...</value>\n  </data>\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>显示属性</value>\n  </data>\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>基本操作</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>手动卸载</value>\n  </data>\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\n    <value>安装或配置(/I)</value>\n  </data>\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\n    <value>卸载(/X)</value>\n  </data>\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\n    <value>静默卸载(/X /qb)</value>\n  </data>\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>使用MsiExec卸载</value>\n  </data>\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>重命名...</value>\n  </data>\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>禁用自动启动</value>\n  </data>\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>删除注册表键</value>\n  </data>\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>创建备份...</value>\n  </data>\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>在Regedit中打开键</value>\n  </data>\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>取得所有权</value>\n  </data>\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>打开开机启动项管理器</value>\n  </data>\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>清理\"Program Files\"文件夹</value>\n  </data>\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\n    <value>通过窗口,目录,或文件卸载...</value>\n  </data>\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>从目录卸载...</value>\n  </data>\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>卸载问题疑难解答...</value>\n  </data>\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>启动硬盘清理</value>\n  </data>\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>安装.Net v3.5(添加功能)</value>\n  </data>\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>创建新还原点</value>\n  </data>\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>打开\"应用和功能\"</value>\n  </data>\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>打开\"系统还原\"</value>\n  </data>\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>设置</value>\n  </data>\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>工具</value>\n  </data>\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>打开帮助</value>\n  </data>\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>启动设置向导</value>\n  </data>\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>检查更新</value>\n  </data>\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>提交反馈...</value>\n  </data>\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>重置设置</value>\n  </data>\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\n    <value>卸载BCUninstaller</value>\n  </data>\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>帮助</value>\n  </data>\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>打开调试窗口</value>\n  </data>\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\n    <value>注册表文件|*.reg</value>\n  </data>\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\n    <value>创建注册表备份</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/MainWindow.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"olvColumnDisplayName.Text\" xml:space=\"preserve\">\n    <value>程式名</value>\n  </data>\n  <data name=\"olvColumnPublisher.Text\" xml:space=\"preserve\">\n    <value>發布人員</value>\n  </data>\n  <data name=\"olvColumnRating.Text\" xml:space=\"preserve\">\n    <value>使用者評分</value>\n  </data>\n  <data name=\"olvColumnDisplayVersion.Text\" xml:space=\"preserve\">\n    <value>版本</value>\n  </data>\n  <data name=\"olvColumnInstallDate.Text\" xml:space=\"preserve\">\n    <value>安裝日期</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>大小</value>\n  </data>\n  <data name=\"olvColumnStartup.Text\" xml:space=\"preserve\">\n    <value>開機啟動項</value>\n  </data>\n  <data name=\"olvColumnIs64.Text\" xml:space=\"preserve\">\n    <value>64位元</value>\n  </data>\n  <data name=\"olvColumnUninstallString.Text\" xml:space=\"preserve\">\n    <value>移除指令</value>\n  </data>\n  <data name=\"olvColumnAbout.Text\" xml:space=\"preserve\">\n    <value>關於網站</value>\n  </data>\n  <data name=\"olvColumnInstallSource.Text\" xml:space=\"preserve\">\n    <value>安裝來源</value>\n  </data>\n  <data name=\"olvColumnInstallLocation.Text\" xml:space=\"preserve\">\n    <value>安裝位置</value>\n  </data>\n  <data name=\"olvColumnUninstallerKind.Text\" xml:space=\"preserve\">\n    <value>移除程式類型</value>\n  </data>\n  <data name=\"olvColumnSystemComponent.Text\" xml:space=\"preserve\">\n    <value>系統元件</value>\n  </data>\n  <data name=\"olvColumnProtected.Text\" xml:space=\"preserve\">\n    <value>受保護</value>\n  </data>\n  <data name=\"olvColumnRegistryKeyName.Text\" xml:space=\"preserve\">\n    <value>註冊表</value>\n  </data>\n  <data name=\"olvColumnGuid.Text\" xml:space=\"preserve\">\n    <value>產品代碼</value>\n  </data>\n  <data name=\"olvColumnQuietUninstallString.Text\" xml:space=\"preserve\">\n    <value>最小化安裝命令</value>\n  </data>\n  <data name=\"toolStripButton1.Text\" xml:space=\"preserve\">\n    <value>重新載入移除程式</value>\n  </data>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>全選</value>\n  </data>\n  <data name=\"toolStripButtonSelNone.Text\" xml:space=\"preserve\">\n    <value>取消全選</value>\n  </data>\n  <data name=\"toolStripButtonSelInv.Text\" xml:space=\"preserve\">\n    <value>反向選擇</value>\n  </data>\n  <data name=\"toolStripButtonTarget.Text\" xml:space=\"preserve\">\n    <value>透過視窗,目錄,或文件移除...</value>\n  </data>\n  <data name=\"toolStripButtonUninstall.Text\" xml:space=\"preserve\">\n    <value>移除</value>\n  </data>\n  <data name=\"toolStripButton2.Text\" xml:space=\"preserve\">\n    <value>最小化移除</value>\n  </data>\n  <data name=\"toolStripButtonModify.Text\" xml:space=\"preserve\">\n    <value>修改</value>\n  </data>\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\n    <value>屬性</value>\n  </data>\n  <data name=\"toolStripButton7.Text\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"toolStripButton8.Text\" xml:space=\"preserve\">\n    <value>幫助</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller</value>\n  </data>\n  <data name=\"buttonAdvFiltering.Text\" xml:space=\"preserve\">\n    <value>進階選項</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>搜尋</value>\n  </data>\n  <data name=\"uninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>解除安裝</value>\n  </data>\n  <data name=\"quietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>最小化解除安裝</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>手動解除安裝</value>\n  </data>\n  <data name=\"msiInstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>安裝或設置(/I)</value>\n  </data>\n  <data name=\"msiUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>解除安裝(/X)</value>\n  </data>\n  <data name=\"msiQuietUninstallContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>最小化解除安裝(/X /qb)</value>\n  </data>\n  <data name=\"uninstallUsingMsiExecContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>使用&amp;MsiExec解除安裝...</value>\n  </data>\n  <data name=\"excludeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>排除</value>\n  </data>\n  <data name=\"includeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>包含</value>\n  </data>\n  <data name=\"runToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>執行...</value>\n  </data>\n  <data name=\"toolStripMenuItem9.Text\" xml:space=\"preserve\">\n    <value>進階...</value>\n  </data>\n  <data name=\"fullInformationCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>完整資訊</value>\n  </data>\n  <data name=\"programNameCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>程式名稱</value>\n  </data>\n  <data name=\"gUIDProductCodeCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>產品代碼/GUID</value>\n  </data>\n  <data name=\"fullRegistryPathCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>完整註冊表路徑</value>\n  </data>\n  <data name=\"uninstallStringCopyContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>解除安裝字串</value>\n  </data>\n  <data name=\"copyToClipboardContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>複製到剪貼簿</value>\n  </data>\n  <data name=\"deleteRegistryEntryContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>刪除註冊表項目</value>\n  </data>\n  <data name=\"renameContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>重新命名</value>\n  </data>\n  <data name=\"installLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>安裝位置</value>\n  </data>\n  <data name=\"uninstallerLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>移除程序位置</value>\n  </data>\n  <data name=\"sourceLocationOpenInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>安裝來源位置</value>\n  </data>\n  <data name=\"openInExplorerContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>在&amp;檔案總管中打開</value>\n  </data>\n  <data name=\"openWebPageContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>打開&amp;網頁</value>\n  </data>\n  <data name=\"toolStripMenuItem15.Text\" xml:space=\"preserve\">\n    <value>Google</value>\n  </data>\n  <data name=\"toolStripMenuItem16.Text\" xml:space=\"preserve\">\n    <value>AlternativeTo.net</value>\n  </data>\n  <data name=\"slantcoToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Slant.co</value>\n  </data>\n  <data name=\"fossHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>FossHub.com</value>\n  </data>\n  <data name=\"sourceForgecomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>SourceForge.net</value>\n  </data>\n  <data name=\"gitHubcomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>GitHub.com</value>\n  </data>\n  <data name=\"fileHippocomToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>FileHippo.com</value>\n  </data>\n  <data name=\"lookUpOnlineToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>在網路上尋找</value>\n  </data>\n  <data name=\"rateToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>評分</value>\n  </data>\n  <data name=\"propertiesContextMenuStripItem.Text\" xml:space=\"preserve\">\n    <value>屬性</value>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>XML文件|*.xml</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>匯出選中的移除程式屬性</value>\n  </data>\n  <data name=\"reloadUninstallersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>重新載入移除程式</value>\n  </data>\n  <data name=\"loadUninstallerListToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>開啟解除安裝程式清單</value>\n  </data>\n  <data name=\"exportSelectedToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>匯出移除程式資料</value>\n  </data>\n  <data name=\"exportToABatchUninstallScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>匯出到批量解除安裝腳本</value>\n  </data>\n  <data name=\"exportStoreAppsToPowerShellRemoveScriptToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>為商店應用程式創建PowerShell移除腳本</value>\n  </data>\n  <data name=\"exitToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>退出</value>\n  </data>\n  <data name=\"fileToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>檔案</value>\n  </data>\n  <data name=\"showColorLegendToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>顯示顏色圖例</value>\n  </data>\n  <data name=\"displayToolbarToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>顯示工作列</value>\n  </data>\n  <data name=\"showTreemapToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>顯示樹狀圖</value>\n  </data>\n  <data name=\"displaySettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>顯示設定側邊攔</value>\n  </data>\n  <data name=\"displayStatusbarToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>顯示狀態列</value>\n  </data>\n  <data name=\"useSystemThemeToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>使用系統主題</value>\n  </data>\n  <data name=\"viewToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>顯示</value>\n  </data>\n  <data name=\"advancedApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>默認選項</value>\n  </data>\n  <data name=\"basicApplicationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>僅基本應用</value>\n  </data>\n  <data name=\"systemComponentsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>僅系統元件</value>\n  </data>\n  <data name=\"everythingToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>所有</value>\n  </data>\n  <data name=\"automaticallyStartedToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>僅自動啟動</value>\n  </data>\n  <data name=\"onlyWebBrowsersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>僅網頁瀏覽器</value>\n  </data>\n  <data name=\"viewTweaksToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>查看調整工具</value>\n  </data>\n  <data name=\"viewUnregisteredToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>查看未註冊應用</value>\n  </data>\n  <data name=\"viewUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>查看更新</value>\n  </data>\n  <data name=\"viewWindowsFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>查看Windows功能</value>\n  </data>\n  <data name=\"viewWindowsStoreAppsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>查看Windows商店應用</value>\n  </data>\n  <data name=\"searchToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>搜尋...</value>\n  </data>\n  <data name=\"filteringToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>快速選項</value>\n  </data>\n  <data name=\"uninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>解除安裝</value>\n  </data>\n  <data name=\"quietUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>最小化解除安裝</value>\n  </data>\n  <data name=\"modifyToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>修改</value>\n  </data>\n  <data name=\"advancedClipCopyToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>進階選項...</value>\n  </data>\n  <data name=\"copyFullInformationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>完整資訊</value>\n  </data>\n  <data name=\"toolStripMenuItem10.Text\" xml:space=\"preserve\">\n    <value>程序名稱</value>\n  </data>\n  <data name=\"toolStripMenuItem11.Text\" xml:space=\"preserve\">\n    <value>產品代碼/GUID</value>\n  </data>\n  <data name=\"toolStripMenuItem12.Text\" xml:space=\"preserve\">\n    <value>完整註冊表路徑</value>\n  </data>\n  <data name=\"toolStripMenuItem13.Text\" xml:space=\"preserve\">\n    <value>解除安裝字串</value>\n  </data>\n  <data name=\"toolStripMenuItem8.Text\" xml:space=\"preserve\">\n    <value>複製到剪貼簿</value>\n  </data>\n  <data name=\"toolStripMenuItem5.Text\" xml:space=\"preserve\">\n    <value>安裝位置</value>\n  </data>\n  <data name=\"toolStripMenuItem6.Text\" xml:space=\"preserve\">\n    <value>解除安裝位置</value>\n  </data>\n  <data name=\"toolStripMenuItem7.Text\" xml:space=\"preserve\">\n    <value>來源位置</value>\n  </data>\n  <data name=\"toolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>在檔案總管中打開</value>\n  </data>\n  <data name=\"toolStripMenuItem14.Text\" xml:space=\"preserve\">\n    <value>開啟網頁</value>\n  </data>\n  <data name=\"googleToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Google</value>\n  </data>\n  <data name=\"alternativeToToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>AlternativeTo</value>\n  </data>\n  <data name=\"slantcoToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>Slant.co</value>\n  </data>\n  <data name=\"toolStripMenuItem17.Text\" xml:space=\"preserve\">\n    <value>FossHub.com</value>\n  </data>\n  <data name=\"toolStripMenuItem18.Text\" xml:space=\"preserve\">\n    <value>SourceForge.net</value>\n  </data>\n  <data name=\"toolStripMenuItem20.Text\" xml:space=\"preserve\">\n    <value>GitHub.com</value>\n  </data>\n  <data name=\"toolStripMenuItem19.Text\" xml:space=\"preserve\">\n    <value>FileHippo.com</value>\n  </data>\n  <data name=\"onlineSearchToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>在網路上尋找</value>\n  </data>\n  <data name=\"rateToolStripMenuItem1.Text\" xml:space=\"preserve\">\n    <value>評分...</value>\n  </data>\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>顯示屬性</value>\n  </data>\n  <data name=\"basicOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>基本操作</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>手動解除安裝</value>\n  </data>\n  <data name=\"toolStripMenuItem2.Text\" xml:space=\"preserve\">\n    <value>安裝或設置(/I)</value>\n  </data>\n  <data name=\"toolStripMenuItem3.Text\" xml:space=\"preserve\">\n    <value>解除安裝(/X)</value>\n  </data>\n  <data name=\"toolStripMenuItem4.Text\" xml:space=\"preserve\">\n    <value>最小化解除安裝(/X /qb)</value>\n  </data>\n  <data name=\"msiUninstalltoolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>使用MsiExec解除安裝</value>\n  </data>\n  <data name=\"renameToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>重新命名...</value>\n  </data>\n  <data name=\"disableAutostartToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>禁止自動啟動</value>\n  </data>\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>刪除註冊表鍵</value>\n  </data>\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>建立備份</value>\n  </data>\n  <data name=\"openKeyInRegeditToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>在登錄編輯器中打開鍵</value>\n  </data>\n  <data name=\"takeOwnershipToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>取得所有權限</value>\n  </data>\n  <data name=\"advancedOperationsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>進階操作</value>\n  </data>\n  <data name=\"openStartupManagerToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>開啟開機啟動項管理</value>\n  </data>\n  <data name=\"cleanUpProgramFilesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>清理\"Program Files\"文件夾</value>\n  </data>\n  <data name=\"targetMenuItem.Text\" xml:space=\"preserve\">\n    <value>通過視窗,目錄,或文件解除安裝</value>\n  </data>\n  <data name=\"uninstallFromDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>從目錄解除安裝</value>\n  </data>\n  <data name=\"troubleshootUninstallProblemsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>移除問題解答</value>\n  </data>\n  <data name=\"startDiskCleanupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>啟動硬碟清理</value>\n  </data>\n  <data name=\"tryToInstallNETV35ToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>安裝.Net v3.5(添加功能)</value>\n  </data>\n  <data name=\"createRestorePointToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>建立新還原點</value>\n  </data>\n  <data name=\"openProgramsAndFeaturesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>打開\"應用和功能\"</value>\n  </data>\n  <data name=\"openSystemRestoreToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>打開\"系統還原\"</value>\n  </data>\n  <data name=\"settingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"toolsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>工具</value>\n  </data>\n  <data name=\"openHelpToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>開啟幫助</value>\n  </data>\n  <data name=\"startSetupWizardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>啟動設置精靈</value>\n  </data>\n  <data name=\"checkForUpdatesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>檢查更新</value>\n  </data>\n  <data name=\"submitFeedbackToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>提交回饋</value>\n  </data>\n  <data name=\"resetSettingsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>重置設定</value>\n  </data>\n  <data name=\"uninstallBCUninstallToolstripMenuItem.Text\" xml:space=\"preserve\">\n    <value>解除安裝BCUninstaller</value>\n  </data>\n  <data name=\"aboutToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>關於</value>\n  </data>\n  <data name=\"helpToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>幫助</value>\n  </data>\n  <data name=\"debugToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>開啟測試視窗</value>\n  </data>\n  <data name=\"createBackupFileDialog.Filter\" xml:space=\"preserve\">\n    <value>註冊表文件|*.reg</value>\n  </data>\n  <data name=\"createBackupFileDialog.Title\" xml:space=\"preserve\">\n    <value>新增註冊表備份</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bulk Crap Uninstaller</value>\n  </data>\n  <data name=\"autosizeAllColumnsToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>重設所有欄位</value>\n  </data>\n</root>\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.Designer.cs",
    "content": "﻿using System.ComponentModel;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions.Tracking;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class SettingsWindow\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            ComponentResourceManager resources = new ComponentResourceManager(typeof(SettingsWindow));\r\n            splitContainer1 = new SplitContainer();\r\n            textBoxPreUninstall = new TextBox();\r\n            label5 = new Label();\r\n            textBoxPostUninstall = new TextBox();\r\n            label6 = new Label();\r\n            groupBoxMisc = new GroupBox();\r\n            flowLayoutPanel3 = new FlowLayoutPanel();\r\n            checkBoxColorblind = new CheckBox();\r\n            checkBoxDpiaware = new CheckBox();\r\n            panel5 = new Panel();\r\n            comboBoxDoubleClick = new ComboBox();\r\n            label3 = new Label();\r\n            checkBoxAutoLoad = new CheckBox();\r\n            checkBoxRatings = new CheckBox();\r\n            checkBoxUpdateSearch = new CheckBox();\r\n            checkBoxSendStats = new CheckBox();\r\n            panel3 = new Panel();\r\n            comboBoxLanguage = new ComboBox();\r\n            label9 = new Label();\r\n            label10 = new Label();\r\n            groupBoxMessages = new GroupBox();\r\n            groupBoxBackup = new GroupBox();\r\n            directorySelectBoxBackup = new Klocman.Controls.DirectorySelectBox();\r\n            flowLayoutPanel9 = new FlowLayoutPanel();\r\n            radioButtonBackupAsk = new RadioButton();\r\n            radioButtonBackupNever = new RadioButton();\r\n            radioButtonBackupAuto = new RadioButton();\r\n            flowLayoutPanel1 = new FlowLayoutPanel();\r\n            checkBoxShowAllBadJunk = new CheckBox();\r\n            checkBoxLoud = new CheckBox();\r\n            checkBoxNeverFeedback = new CheckBox();\r\n            panel1 = new Panel();\r\n            comboBoxJunk = new ComboBox();\r\n            label1 = new Label();\r\n            panel2 = new Panel();\r\n            comboBoxRestore = new ComboBox();\r\n            label2 = new Label();\r\n            groupBoxExternal = new GroupBox();\r\n            checkBoxEnableExternal = new CheckBox();\r\n            flowLayoutPanel2 = new FlowLayoutPanel();\r\n            label7 = new Label();\r\n            button2 = new Button();\r\n            tabControl = new TabControl();\r\n            tabPageGeneral = new TabPage();\r\n            propertiesSidebar1 = new BulkCrapUninstaller.Controls.PropertiesSidebar();\r\n            tabPageInterface = new TabPage();\r\n            groupBoxLanguage = new GroupBox();\r\n            tabPageUninstallation = new TabPage();\r\n            uninstallationSettings1 = new BulkCrapUninstaller.Controls.UninstallationSettings();\r\n            tabPageDetection = new TabPage();\r\n            groupBoxAppStores = new GroupBox();\r\n            labelWinUpdateInfo = new Label();\r\n            checkBoxScanWinUpdates = new CheckBox();\r\n            labelWinFeatureInfo = new Label();\r\n            checkBoxScanWinFeatures = new CheckBox();\r\n            checkBoxScanStoreApps = new CheckBox();\r\n            checkBoxScanSteam = new CheckBox();\r\n            checkBoxScoop = new CheckBox();\r\n            checkBoxOculus = new CheckBox();\r\n            checkBoxChoco = new CheckBox();\r\n            groupBox1 = new GroupBox();\r\n            flowLayoutPanel7 = new FlowLayoutPanel();\r\n            checkBoxScanRegistry = new CheckBox();\r\n            checkBoxScanDrives = new CheckBox();\r\n            checkBoxPreDefined = new CheckBox();\r\n            tabPageExternal = new TabPage();\r\n            tabPageFolders = new TabPage();\r\n            groupBoxProgramFolders = new GroupBox();\r\n            textBoxProgramFolders = new TextBox();\r\n            checkBoxRemovable = new CheckBox();\r\n            checkBoxAutoInstallFolderDetect = new CheckBox();\r\n            labelProgramFolders = new Label();\r\n            tabPageMisc = new TabPage();\r\n            cacheSettings1 = new BulkCrapUninstaller.Controls.Settings.CacheSettings();\r\n            groupBox2 = new GroupBox();\r\n            flowLayoutPanel4 = new FlowLayoutPanel();\r\n            groupBox3 = new GroupBox();\r\n            flowLayoutPanel10 = new FlowLayoutPanel();\r\n            panel4 = new Panel();\r\n            usageTracker1 = new UsageTracker();\r\n            ((ISupportInitialize)splitContainer1).BeginInit();\r\n            splitContainer1.Panel1.SuspendLayout();\r\n            splitContainer1.Panel2.SuspendLayout();\r\n            splitContainer1.SuspendLayout();\r\n            groupBoxMisc.SuspendLayout();\r\n            flowLayoutPanel3.SuspendLayout();\r\n            panel5.SuspendLayout();\r\n            panel3.SuspendLayout();\r\n            groupBoxMessages.SuspendLayout();\r\n            groupBoxBackup.SuspendLayout();\r\n            flowLayoutPanel9.SuspendLayout();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            panel1.SuspendLayout();\r\n            panel2.SuspendLayout();\r\n            groupBoxExternal.SuspendLayout();\r\n            flowLayoutPanel2.SuspendLayout();\r\n            tabControl.SuspendLayout();\r\n            tabPageGeneral.SuspendLayout();\r\n            tabPageInterface.SuspendLayout();\r\n            groupBoxLanguage.SuspendLayout();\r\n            tabPageUninstallation.SuspendLayout();\r\n            tabPageDetection.SuspendLayout();\r\n            groupBoxAppStores.SuspendLayout();\r\n            groupBox1.SuspendLayout();\r\n            flowLayoutPanel7.SuspendLayout();\r\n            tabPageExternal.SuspendLayout();\r\n            tabPageFolders.SuspendLayout();\r\n            groupBoxProgramFolders.SuspendLayout();\r\n            tabPageMisc.SuspendLayout();\r\n            groupBox2.SuspendLayout();\r\n            flowLayoutPanel4.SuspendLayout();\r\n            groupBox3.SuspendLayout();\r\n            flowLayoutPanel10.SuspendLayout();\r\n            panel4.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // splitContainer1\r\n            // \r\n            splitContainer1.BorderStyle = BorderStyle.Fixed3D;\r\n            resources.ApplyResources(splitContainer1, \"splitContainer1\");\r\n            splitContainer1.Name = \"splitContainer1\";\r\n            // \r\n            // splitContainer1.Panel1\r\n            // \r\n            splitContainer1.Panel1.Controls.Add(textBoxPreUninstall);\r\n            splitContainer1.Panel1.Controls.Add(label5);\r\n            // \r\n            // splitContainer1.Panel2\r\n            // \r\n            splitContainer1.Panel2.Controls.Add(textBoxPostUninstall);\r\n            splitContainer1.Panel2.Controls.Add(label6);\r\n            // \r\n            // textBoxPreUninstall\r\n            // \r\n            resources.ApplyResources(textBoxPreUninstall, \"textBoxPreUninstall\");\r\n            textBoxPreUninstall.Name = \"textBoxPreUninstall\";\r\n            // \r\n            // label5\r\n            // \r\n            resources.ApplyResources(label5, \"label5\");\r\n            label5.Name = \"label5\";\r\n            // \r\n            // textBoxPostUninstall\r\n            // \r\n            resources.ApplyResources(textBoxPostUninstall, \"textBoxPostUninstall\");\r\n            textBoxPostUninstall.Name = \"textBoxPostUninstall\";\r\n            // \r\n            // label6\r\n            // \r\n            resources.ApplyResources(label6, \"label6\");\r\n            label6.Name = \"label6\";\r\n            // \r\n            // groupBoxMisc\r\n            // \r\n            resources.ApplyResources(groupBoxMisc, \"groupBoxMisc\");\r\n            groupBoxMisc.Controls.Add(flowLayoutPanel3);\r\n            groupBoxMisc.Controls.Add(panel5);\r\n            groupBoxMisc.Name = \"groupBoxMisc\";\r\n            groupBoxMisc.TabStop = false;\r\n            // \r\n            // flowLayoutPanel3\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel3, \"flowLayoutPanel3\");\r\n            flowLayoutPanel3.Controls.Add(checkBoxColorblind);\r\n            flowLayoutPanel3.Controls.Add(checkBoxDpiaware);\r\n            flowLayoutPanel3.Name = \"flowLayoutPanel3\";\r\n            // \r\n            // checkBoxColorblind\r\n            // \r\n            resources.ApplyResources(checkBoxColorblind, \"checkBoxColorblind\");\r\n            checkBoxColorblind.Name = \"checkBoxColorblind\";\r\n            checkBoxColorblind.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxDpiaware\r\n            // \r\n            resources.ApplyResources(checkBoxDpiaware, \"checkBoxDpiaware\");\r\n            checkBoxDpiaware.Name = \"checkBoxDpiaware\";\r\n            checkBoxDpiaware.UseVisualStyleBackColor = true;\r\n            // \r\n            // panel5\r\n            // \r\n            resources.ApplyResources(panel5, \"panel5\");\r\n            panel5.Controls.Add(comboBoxDoubleClick);\r\n            panel5.Controls.Add(label3);\r\n            panel5.Name = \"panel5\";\r\n            // \r\n            // comboBoxDoubleClick\r\n            // \r\n            resources.ApplyResources(comboBoxDoubleClick, \"comboBoxDoubleClick\");\r\n            comboBoxDoubleClick.DropDownStyle = ComboBoxStyle.DropDownList;\r\n            comboBoxDoubleClick.FormattingEnabled = true;\r\n            comboBoxDoubleClick.Name = \"comboBoxDoubleClick\";\r\n            comboBoxDoubleClick.SelectedIndexChanged += comboBoxDoubleClick_SelectedIndexChanged;\r\n            // \r\n            // label3\r\n            // \r\n            resources.ApplyResources(label3, \"label3\");\r\n            label3.Name = \"label3\";\r\n            // \r\n            // checkBoxAutoLoad\r\n            // \r\n            resources.ApplyResources(checkBoxAutoLoad, \"checkBoxAutoLoad\");\r\n            checkBoxAutoLoad.Name = \"checkBoxAutoLoad\";\r\n            checkBoxAutoLoad.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxRatings\r\n            // \r\n            resources.ApplyResources(checkBoxRatings, \"checkBoxRatings\");\r\n            checkBoxRatings.Name = \"checkBoxRatings\";\r\n            checkBoxRatings.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxUpdateSearch\r\n            // \r\n            resources.ApplyResources(checkBoxUpdateSearch, \"checkBoxUpdateSearch\");\r\n            checkBoxUpdateSearch.Name = \"checkBoxUpdateSearch\";\r\n            checkBoxUpdateSearch.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxSendStats\r\n            // \r\n            resources.ApplyResources(checkBoxSendStats, \"checkBoxSendStats\");\r\n            checkBoxSendStats.Name = \"checkBoxSendStats\";\r\n            checkBoxSendStats.UseVisualStyleBackColor = true;\r\n            // \r\n            // panel3\r\n            // \r\n            resources.ApplyResources(panel3, \"panel3\");\r\n            panel3.Controls.Add(comboBoxLanguage);\r\n            panel3.Controls.Add(label9);\r\n            panel3.Name = \"panel3\";\r\n            // \r\n            // comboBoxLanguage\r\n            // \r\n            resources.ApplyResources(comboBoxLanguage, \"comboBoxLanguage\");\r\n            comboBoxLanguage.DropDownStyle = ComboBoxStyle.DropDownList;\r\n            comboBoxLanguage.FormattingEnabled = true;\r\n            comboBoxLanguage.Name = \"comboBoxLanguage\";\r\n            comboBoxLanguage.SelectedIndexChanged += comboBoxLanguage_SelectedIndexChanged;\r\n            // \r\n            // label9\r\n            // \r\n            resources.ApplyResources(label9, \"label9\");\r\n            label9.Name = \"label9\";\r\n            // \r\n            // label10\r\n            // \r\n            resources.ApplyResources(label10, \"label10\");\r\n            label10.Name = \"label10\";\r\n            // \r\n            // groupBoxMessages\r\n            // \r\n            resources.ApplyResources(groupBoxMessages, \"groupBoxMessages\");\r\n            groupBoxMessages.Controls.Add(groupBoxBackup);\r\n            groupBoxMessages.Controls.Add(flowLayoutPanel1);\r\n            groupBoxMessages.Controls.Add(panel1);\r\n            groupBoxMessages.Controls.Add(panel2);\r\n            groupBoxMessages.Name = \"groupBoxMessages\";\r\n            groupBoxMessages.TabStop = false;\r\n            // \r\n            // groupBoxBackup\r\n            // \r\n            resources.ApplyResources(groupBoxBackup, \"groupBoxBackup\");\r\n            groupBoxBackup.Controls.Add(directorySelectBoxBackup);\r\n            groupBoxBackup.Controls.Add(flowLayoutPanel9);\r\n            groupBoxBackup.Name = \"groupBoxBackup\";\r\n            groupBoxBackup.TabStop = false;\r\n            // \r\n            // directorySelectBoxBackup\r\n            // \r\n            directorySelectBoxBackup.DirectoryPath = \"\";\r\n            resources.ApplyResources(directorySelectBoxBackup, \"directorySelectBoxBackup\");\r\n            directorySelectBoxBackup.Name = \"directorySelectBoxBackup\";\r\n            // \r\n            // flowLayoutPanel9\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel9, \"flowLayoutPanel9\");\r\n            flowLayoutPanel9.Controls.Add(radioButtonBackupAsk);\r\n            flowLayoutPanel9.Controls.Add(radioButtonBackupNever);\r\n            flowLayoutPanel9.Controls.Add(radioButtonBackupAuto);\r\n            flowLayoutPanel9.Name = \"flowLayoutPanel9\";\r\n            // \r\n            // radioButtonBackupAsk\r\n            // \r\n            resources.ApplyResources(radioButtonBackupAsk, \"radioButtonBackupAsk\");\r\n            flowLayoutPanel9.SetFlowBreak(radioButtonBackupAsk, true);\r\n            radioButtonBackupAsk.Name = \"radioButtonBackupAsk\";\r\n            radioButtonBackupAsk.TabStop = true;\r\n            radioButtonBackupAsk.UseVisualStyleBackColor = true;\r\n            radioButtonBackupAsk.CheckedChanged += radioButtonBackup_CheckedChanged;\r\n            // \r\n            // radioButtonBackupNever\r\n            // \r\n            resources.ApplyResources(radioButtonBackupNever, \"radioButtonBackupNever\");\r\n            flowLayoutPanel9.SetFlowBreak(radioButtonBackupNever, true);\r\n            radioButtonBackupNever.Name = \"radioButtonBackupNever\";\r\n            radioButtonBackupNever.TabStop = true;\r\n            radioButtonBackupNever.UseVisualStyleBackColor = true;\r\n            radioButtonBackupNever.CheckedChanged += radioButtonBackup_CheckedChanged;\r\n            // \r\n            // radioButtonBackupAuto\r\n            // \r\n            resources.ApplyResources(radioButtonBackupAuto, \"radioButtonBackupAuto\");\r\n            flowLayoutPanel9.SetFlowBreak(radioButtonBackupAuto, true);\r\n            radioButtonBackupAuto.Name = \"radioButtonBackupAuto\";\r\n            radioButtonBackupAuto.TabStop = true;\r\n            radioButtonBackupAuto.UseVisualStyleBackColor = true;\r\n            radioButtonBackupAuto.CheckedChanged += radioButtonBackup_CheckedChanged;\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Controls.Add(checkBoxShowAllBadJunk);\r\n            flowLayoutPanel1.Controls.Add(checkBoxLoud);\r\n            flowLayoutPanel1.Controls.Add(checkBoxNeverFeedback);\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // checkBoxShowAllBadJunk\r\n            // \r\n            resources.ApplyResources(checkBoxShowAllBadJunk, \"checkBoxShowAllBadJunk\");\r\n            checkBoxShowAllBadJunk.Name = \"checkBoxShowAllBadJunk\";\r\n            checkBoxShowAllBadJunk.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxLoud\r\n            // \r\n            resources.ApplyResources(checkBoxLoud, \"checkBoxLoud\");\r\n            checkBoxLoud.Name = \"checkBoxLoud\";\r\n            checkBoxLoud.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxNeverFeedback\r\n            // \r\n            resources.ApplyResources(checkBoxNeverFeedback, \"checkBoxNeverFeedback\");\r\n            checkBoxNeverFeedback.Name = \"checkBoxNeverFeedback\";\r\n            checkBoxNeverFeedback.UseVisualStyleBackColor = true;\r\n            // \r\n            // panel1\r\n            // \r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Controls.Add(comboBoxJunk);\r\n            panel1.Controls.Add(label1);\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // comboBoxJunk\r\n            // \r\n            resources.ApplyResources(comboBoxJunk, \"comboBoxJunk\");\r\n            comboBoxJunk.DropDownStyle = ComboBoxStyle.DropDownList;\r\n            comboBoxJunk.FormattingEnabled = true;\r\n            comboBoxJunk.Name = \"comboBoxJunk\";\r\n            comboBoxJunk.SelectedIndexChanged += comboBoxJunk_SelectedIndexChanged;\r\n            // \r\n            // label1\r\n            // \r\n            resources.ApplyResources(label1, \"label1\");\r\n            label1.Name = \"label1\";\r\n            // \r\n            // panel2\r\n            // \r\n            resources.ApplyResources(panel2, \"panel2\");\r\n            panel2.Controls.Add(comboBoxRestore);\r\n            panel2.Controls.Add(label2);\r\n            panel2.Name = \"panel2\";\r\n            // \r\n            // comboBoxRestore\r\n            // \r\n            resources.ApplyResources(comboBoxRestore, \"comboBoxRestore\");\r\n            comboBoxRestore.DropDownStyle = ComboBoxStyle.DropDownList;\r\n            comboBoxRestore.FormattingEnabled = true;\r\n            comboBoxRestore.Name = \"comboBoxRestore\";\r\n            comboBoxRestore.SelectedIndexChanged += comboBoxRestore_SelectedIndexChanged;\r\n            // \r\n            // label2\r\n            // \r\n            resources.ApplyResources(label2, \"label2\");\r\n            label2.Name = \"label2\";\r\n            // \r\n            // groupBoxExternal\r\n            // \r\n            resources.ApplyResources(groupBoxExternal, \"groupBoxExternal\");\r\n            groupBoxExternal.Controls.Add(splitContainer1);\r\n            groupBoxExternal.Controls.Add(checkBoxEnableExternal);\r\n            groupBoxExternal.Controls.Add(flowLayoutPanel2);\r\n            groupBoxExternal.Name = \"groupBoxExternal\";\r\n            groupBoxExternal.TabStop = false;\r\n            // \r\n            // checkBoxEnableExternal\r\n            // \r\n            resources.ApplyResources(checkBoxEnableExternal, \"checkBoxEnableExternal\");\r\n            checkBoxEnableExternal.Checked = true;\r\n            checkBoxEnableExternal.CheckState = CheckState.Checked;\r\n            checkBoxEnableExternal.Name = \"checkBoxEnableExternal\";\r\n            checkBoxEnableExternal.UseVisualStyleBackColor = true;\r\n            checkBoxEnableExternal.CheckedChanged += checkBoxEnableExternal_CheckedChanged;\r\n            // \r\n            // flowLayoutPanel2\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel2, \"flowLayoutPanel2\");\r\n            flowLayoutPanel2.Controls.Add(label7);\r\n            flowLayoutPanel2.Name = \"flowLayoutPanel2\";\r\n            // \r\n            // label7\r\n            // \r\n            resources.ApplyResources(label7, \"label7\");\r\n            label7.Name = \"label7\";\r\n            // \r\n            // button2\r\n            // \r\n            resources.ApplyResources(button2, \"button2\");\r\n            button2.DialogResult = DialogResult.Cancel;\r\n            button2.Name = \"button2\";\r\n            button2.UseVisualStyleBackColor = true;\r\n            button2.Click += button2_Click;\r\n            // \r\n            // tabControl\r\n            // \r\n            tabControl.Controls.Add(tabPageGeneral);\r\n            tabControl.Controls.Add(tabPageInterface);\r\n            tabControl.Controls.Add(tabPageUninstallation);\r\n            tabControl.Controls.Add(tabPageDetection);\r\n            tabControl.Controls.Add(tabPageExternal);\r\n            tabControl.Controls.Add(tabPageFolders);\r\n            tabControl.Controls.Add(tabPageMisc);\r\n            resources.ApplyResources(tabControl, \"tabControl\");\r\n            tabControl.Multiline = true;\r\n            tabControl.Name = \"tabControl\";\r\n            tabControl.SelectedIndex = 0;\r\n            tabControl.SizeMode = TabSizeMode.FillToRight;\r\n            tabControl.SelectedIndexChanged += tabControl_SelectedIndexChanged;\r\n            // \r\n            // tabPageGeneral\r\n            // \r\n            tabPageGeneral.Controls.Add(propertiesSidebar1);\r\n            resources.ApplyResources(tabPageGeneral, \"tabPageGeneral\");\r\n            tabPageGeneral.Name = \"tabPageGeneral\";\r\n            tabPageGeneral.UseVisualStyleBackColor = true;\r\n            // \r\n            // propertiesSidebar1\r\n            // \r\n            resources.ApplyResources(propertiesSidebar1, \"propertiesSidebar1\");\r\n            propertiesSidebar1.Name = \"propertiesSidebar1\";\r\n            // \r\n            // tabPageInterface\r\n            // \r\n            resources.ApplyResources(tabPageInterface, \"tabPageInterface\");\r\n            tabPageInterface.Controls.Add(groupBoxMisc);\r\n            tabPageInterface.Controls.Add(groupBoxMessages);\r\n            tabPageInterface.Controls.Add(groupBoxLanguage);\r\n            tabPageInterface.Name = \"tabPageInterface\";\r\n            tabPageInterface.UseVisualStyleBackColor = true;\r\n            // \r\n            // groupBoxLanguage\r\n            // \r\n            resources.ApplyResources(groupBoxLanguage, \"groupBoxLanguage\");\r\n            groupBoxLanguage.Controls.Add(panel3);\r\n            groupBoxLanguage.Controls.Add(label10);\r\n            groupBoxLanguage.Name = \"groupBoxLanguage\";\r\n            groupBoxLanguage.TabStop = false;\r\n            // \r\n            // tabPageUninstallation\r\n            // \r\n            resources.ApplyResources(tabPageUninstallation, \"tabPageUninstallation\");\r\n            tabPageUninstallation.Controls.Add(uninstallationSettings1);\r\n            tabPageUninstallation.Name = \"tabPageUninstallation\";\r\n            tabPageUninstallation.UseVisualStyleBackColor = true;\r\n            // \r\n            // uninstallationSettings1\r\n            // \r\n            resources.ApplyResources(uninstallationSettings1, \"uninstallationSettings1\");\r\n            uninstallationSettings1.Name = \"uninstallationSettings1\";\r\n            // \r\n            // tabPageDetection\r\n            // \r\n            resources.ApplyResources(tabPageDetection, \"tabPageDetection\");\r\n            tabPageDetection.Controls.Add(groupBoxAppStores);\r\n            tabPageDetection.Controls.Add(groupBox1);\r\n            tabPageDetection.Name = \"tabPageDetection\";\r\n            tabPageDetection.UseVisualStyleBackColor = true;\r\n            // \r\n            // groupBoxAppStores\r\n            // \r\n            resources.ApplyResources(groupBoxAppStores, \"groupBoxAppStores\");\r\n            groupBoxAppStores.Controls.Add(labelWinUpdateInfo);\r\n            groupBoxAppStores.Controls.Add(checkBoxScanWinUpdates);\r\n            groupBoxAppStores.Controls.Add(labelWinFeatureInfo);\r\n            groupBoxAppStores.Controls.Add(checkBoxScanWinFeatures);\r\n            groupBoxAppStores.Controls.Add(checkBoxScanStoreApps);\r\n            groupBoxAppStores.Controls.Add(checkBoxScanSteam);\r\n            groupBoxAppStores.Controls.Add(checkBoxScoop);\r\n            groupBoxAppStores.Controls.Add(checkBoxOculus);\r\n            groupBoxAppStores.Controls.Add(checkBoxChoco);\r\n            groupBoxAppStores.Name = \"groupBoxAppStores\";\r\n            groupBoxAppStores.TabStop = false;\r\n            // \r\n            // labelWinUpdateInfo\r\n            // \r\n            resources.ApplyResources(labelWinUpdateInfo, \"labelWinUpdateInfo\");\r\n            labelWinUpdateInfo.Name = \"labelWinUpdateInfo\";\r\n            // \r\n            // checkBoxScanWinUpdates\r\n            // \r\n            resources.ApplyResources(checkBoxScanWinUpdates, \"checkBoxScanWinUpdates\");\r\n            checkBoxScanWinUpdates.Name = \"checkBoxScanWinUpdates\";\r\n            checkBoxScanWinUpdates.UseVisualStyleBackColor = true;\r\n            // \r\n            // labelWinFeatureInfo\r\n            // \r\n            resources.ApplyResources(labelWinFeatureInfo, \"labelWinFeatureInfo\");\r\n            labelWinFeatureInfo.Name = \"labelWinFeatureInfo\";\r\n            // \r\n            // checkBoxScanWinFeatures\r\n            // \r\n            resources.ApplyResources(checkBoxScanWinFeatures, \"checkBoxScanWinFeatures\");\r\n            checkBoxScanWinFeatures.Name = \"checkBoxScanWinFeatures\";\r\n            checkBoxScanWinFeatures.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxScanStoreApps\r\n            // \r\n            resources.ApplyResources(checkBoxScanStoreApps, \"checkBoxScanStoreApps\");\r\n            checkBoxScanStoreApps.Name = \"checkBoxScanStoreApps\";\r\n            checkBoxScanStoreApps.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxScanSteam\r\n            // \r\n            resources.ApplyResources(checkBoxScanSteam, \"checkBoxScanSteam\");\r\n            checkBoxScanSteam.Name = \"checkBoxScanSteam\";\r\n            checkBoxScanSteam.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxScoop\r\n            // \r\n            resources.ApplyResources(checkBoxScoop, \"checkBoxScoop\");\r\n            checkBoxScoop.Name = \"checkBoxScoop\";\r\n            checkBoxScoop.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxOculus\r\n            // \r\n            resources.ApplyResources(checkBoxOculus, \"checkBoxOculus\");\r\n            checkBoxOculus.Name = \"checkBoxOculus\";\r\n            checkBoxOculus.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxChoco\r\n            // \r\n            resources.ApplyResources(checkBoxChoco, \"checkBoxChoco\");\r\n            checkBoxChoco.Name = \"checkBoxChoco\";\r\n            checkBoxChoco.UseVisualStyleBackColor = true;\r\n            // \r\n            // groupBox1\r\n            // \r\n            resources.ApplyResources(groupBox1, \"groupBox1\");\r\n            groupBox1.Controls.Add(flowLayoutPanel7);\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.TabStop = false;\r\n            // \r\n            // flowLayoutPanel7\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel7, \"flowLayoutPanel7\");\r\n            flowLayoutPanel7.Controls.Add(checkBoxScanRegistry);\r\n            flowLayoutPanel7.Controls.Add(checkBoxScanDrives);\r\n            flowLayoutPanel7.Controls.Add(checkBoxPreDefined);\r\n            flowLayoutPanel7.Name = \"flowLayoutPanel7\";\r\n            // \r\n            // checkBoxScanRegistry\r\n            // \r\n            resources.ApplyResources(checkBoxScanRegistry, \"checkBoxScanRegistry\");\r\n            flowLayoutPanel7.SetFlowBreak(checkBoxScanRegistry, true);\r\n            checkBoxScanRegistry.Name = \"checkBoxScanRegistry\";\r\n            checkBoxScanRegistry.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxScanDrives\r\n            // \r\n            resources.ApplyResources(checkBoxScanDrives, \"checkBoxScanDrives\");\r\n            flowLayoutPanel7.SetFlowBreak(checkBoxScanDrives, true);\r\n            checkBoxScanDrives.Name = \"checkBoxScanDrives\";\r\n            checkBoxScanDrives.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxPreDefined\r\n            // \r\n            resources.ApplyResources(checkBoxPreDefined, \"checkBoxPreDefined\");\r\n            flowLayoutPanel7.SetFlowBreak(checkBoxPreDefined, true);\r\n            checkBoxPreDefined.Name = \"checkBoxPreDefined\";\r\n            checkBoxPreDefined.UseVisualStyleBackColor = true;\r\n            // \r\n            // tabPageExternal\r\n            // \r\n            tabPageExternal.Controls.Add(groupBoxExternal);\r\n            resources.ApplyResources(tabPageExternal, \"tabPageExternal\");\r\n            tabPageExternal.Name = \"tabPageExternal\";\r\n            tabPageExternal.UseVisualStyleBackColor = true;\r\n            // \r\n            // tabPageFolders\r\n            // \r\n            tabPageFolders.Controls.Add(groupBoxProgramFolders);\r\n            resources.ApplyResources(tabPageFolders, \"tabPageFolders\");\r\n            tabPageFolders.Name = \"tabPageFolders\";\r\n            tabPageFolders.UseVisualStyleBackColor = true;\r\n            // \r\n            // groupBoxProgramFolders\r\n            // \r\n            resources.ApplyResources(groupBoxProgramFolders, \"groupBoxProgramFolders\");\r\n            groupBoxProgramFolders.Controls.Add(textBoxProgramFolders);\r\n            groupBoxProgramFolders.Controls.Add(checkBoxRemovable);\r\n            groupBoxProgramFolders.Controls.Add(checkBoxAutoInstallFolderDetect);\r\n            groupBoxProgramFolders.Controls.Add(labelProgramFolders);\r\n            groupBoxProgramFolders.Name = \"groupBoxProgramFolders\";\r\n            groupBoxProgramFolders.TabStop = false;\r\n            // \r\n            // textBoxProgramFolders\r\n            // \r\n            resources.ApplyResources(textBoxProgramFolders, \"textBoxProgramFolders\");\r\n            textBoxProgramFolders.Name = \"textBoxProgramFolders\";\r\n            // \r\n            // checkBoxRemovable\r\n            // \r\n            resources.ApplyResources(checkBoxRemovable, \"checkBoxRemovable\");\r\n            checkBoxRemovable.Name = \"checkBoxRemovable\";\r\n            checkBoxRemovable.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxAutoInstallFolderDetect\r\n            // \r\n            resources.ApplyResources(checkBoxAutoInstallFolderDetect, \"checkBoxAutoInstallFolderDetect\");\r\n            checkBoxAutoInstallFolderDetect.Name = \"checkBoxAutoInstallFolderDetect\";\r\n            checkBoxAutoInstallFolderDetect.UseVisualStyleBackColor = true;\r\n            // \r\n            // labelProgramFolders\r\n            // \r\n            resources.ApplyResources(labelProgramFolders, \"labelProgramFolders\");\r\n            labelProgramFolders.Name = \"labelProgramFolders\";\r\n            // \r\n            // tabPageMisc\r\n            // \r\n            tabPageMisc.Controls.Add(cacheSettings1);\r\n            tabPageMisc.Controls.Add(groupBox2);\r\n            tabPageMisc.Controls.Add(groupBox3);\r\n            resources.ApplyResources(tabPageMisc, \"tabPageMisc\");\r\n            tabPageMisc.Name = \"tabPageMisc\";\r\n            tabPageMisc.UseVisualStyleBackColor = true;\r\n            // \r\n            // cacheSettings1\r\n            // \r\n            resources.ApplyResources(cacheSettings1, \"cacheSettings1\");\r\n            cacheSettings1.Name = \"cacheSettings1\";\r\n            // \r\n            // groupBox2\r\n            // \r\n            resources.ApplyResources(groupBox2, \"groupBox2\");\r\n            groupBox2.Controls.Add(flowLayoutPanel4);\r\n            groupBox2.Name = \"groupBox2\";\r\n            groupBox2.TabStop = false;\r\n            // \r\n            // flowLayoutPanel4\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel4, \"flowLayoutPanel4\");\r\n            flowLayoutPanel4.Controls.Add(checkBoxAutoLoad);\r\n            flowLayoutPanel4.Name = \"flowLayoutPanel4\";\r\n            // \r\n            // groupBox3\r\n            // \r\n            resources.ApplyResources(groupBox3, \"groupBox3\");\r\n            groupBox3.Controls.Add(flowLayoutPanel10);\r\n            groupBox3.Name = \"groupBox3\";\r\n            groupBox3.TabStop = false;\r\n            // \r\n            // flowLayoutPanel10\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel10, \"flowLayoutPanel10\");\r\n            flowLayoutPanel10.Controls.Add(checkBoxUpdateSearch);\r\n            flowLayoutPanel10.Controls.Add(checkBoxSendStats);\r\n            flowLayoutPanel10.Controls.Add(checkBoxRatings);\r\n            flowLayoutPanel10.Name = \"flowLayoutPanel10\";\r\n            // \r\n            // panel4\r\n            // \r\n            panel4.Controls.Add(button2);\r\n            resources.ApplyResources(panel4, \"panel4\");\r\n            panel4.Name = \"panel4\";\r\n            // \r\n            // usageTracker1\r\n            // \r\n            usageTracker1.ContainerControl = this;\r\n            // \r\n            // SettingsWindow\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = AutoScaleMode.Font;\r\n            CancelButton = button2;\r\n            Controls.Add(tabControl);\r\n            Controls.Add(panel4);\r\n            FormBorderStyle = FormBorderStyle.FixedSingle;\r\n            MaximizeBox = false;\r\n            MinimizeBox = false;\r\n            Name = \"SettingsWindow\";\r\n            FormClosing += SettingsWindow_FormClosing;\r\n            splitContainer1.Panel1.ResumeLayout(false);\r\n            splitContainer1.Panel1.PerformLayout();\r\n            splitContainer1.Panel2.ResumeLayout(false);\r\n            splitContainer1.Panel2.PerformLayout();\r\n            ((ISupportInitialize)splitContainer1).EndInit();\r\n            splitContainer1.ResumeLayout(false);\r\n            groupBoxMisc.ResumeLayout(false);\r\n            groupBoxMisc.PerformLayout();\r\n            flowLayoutPanel3.ResumeLayout(false);\r\n            flowLayoutPanel3.PerformLayout();\r\n            panel5.ResumeLayout(false);\r\n            panel5.PerformLayout();\r\n            panel3.ResumeLayout(false);\r\n            panel3.PerformLayout();\r\n            groupBoxMessages.ResumeLayout(false);\r\n            groupBoxMessages.PerformLayout();\r\n            groupBoxBackup.ResumeLayout(false);\r\n            groupBoxBackup.PerformLayout();\r\n            flowLayoutPanel9.ResumeLayout(false);\r\n            flowLayoutPanel9.PerformLayout();\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            panel1.ResumeLayout(false);\r\n            panel1.PerformLayout();\r\n            panel2.ResumeLayout(false);\r\n            panel2.PerformLayout();\r\n            groupBoxExternal.ResumeLayout(false);\r\n            groupBoxExternal.PerformLayout();\r\n            flowLayoutPanel2.ResumeLayout(false);\r\n            flowLayoutPanel2.PerformLayout();\r\n            tabControl.ResumeLayout(false);\r\n            tabPageGeneral.ResumeLayout(false);\r\n            tabPageGeneral.PerformLayout();\r\n            tabPageInterface.ResumeLayout(false);\r\n            tabPageInterface.PerformLayout();\r\n            groupBoxLanguage.ResumeLayout(false);\r\n            groupBoxLanguage.PerformLayout();\r\n            tabPageUninstallation.ResumeLayout(false);\r\n            tabPageUninstallation.PerformLayout();\r\n            tabPageDetection.ResumeLayout(false);\r\n            tabPageDetection.PerformLayout();\r\n            groupBoxAppStores.ResumeLayout(false);\r\n            groupBoxAppStores.PerformLayout();\r\n            groupBox1.ResumeLayout(false);\r\n            groupBox1.PerformLayout();\r\n            flowLayoutPanel7.ResumeLayout(false);\r\n            flowLayoutPanel7.PerformLayout();\r\n            tabPageExternal.ResumeLayout(false);\r\n            tabPageExternal.PerformLayout();\r\n            tabPageFolders.ResumeLayout(false);\r\n            tabPageFolders.PerformLayout();\r\n            groupBoxProgramFolders.ResumeLayout(false);\r\n            groupBoxProgramFolders.PerformLayout();\r\n            tabPageMisc.ResumeLayout(false);\r\n            tabPageMisc.PerformLayout();\r\n            groupBox2.ResumeLayout(false);\r\n            groupBox2.PerformLayout();\r\n            flowLayoutPanel4.ResumeLayout(false);\r\n            flowLayoutPanel4.PerformLayout();\r\n            groupBox3.ResumeLayout(false);\r\n            groupBox3.PerformLayout();\r\n            flowLayoutPanel10.ResumeLayout(false);\r\n            flowLayoutPanel10.PerformLayout();\r\n            panel4.ResumeLayout(false);\r\n            ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private GroupBox groupBoxMessages;\r\n        private CheckBox checkBoxLoud;\r\n        private ComboBox comboBoxRestore;\r\n        private ComboBox comboBoxJunk;\r\n        private Label label2;\r\n        private Label label1;\r\n        private Button button2;\r\n        private GroupBox groupBoxMisc;\r\n        private CheckBox checkBoxUpdateSearch;\r\n        private UsageTracker usageTracker1;\r\n        private GroupBox groupBoxExternal;\r\n        private FlowLayoutPanel flowLayoutPanel1;\r\n        private Panel panel1;\r\n        private Panel panel2;\r\n        private FlowLayoutPanel flowLayoutPanel3;\r\n        private CheckBox checkBoxSendStats;\r\n        private FlowLayoutPanel flowLayoutPanel2;\r\n        private Label label5;\r\n        private TextBox textBoxPreUninstall;\r\n        private Label label6;\r\n        private TextBox textBoxPostUninstall;\r\n        private Label label7;\r\n        private CheckBox checkBoxEnableExternal;\r\n        private Panel panel3;\r\n        private ComboBox comboBoxLanguage;\r\n        private Label label9;\r\n        private Label label10;\r\n        private SplitContainer splitContainer1;\r\n        private TabControl tabControl;\r\n        private TabPage tabPageMisc;\r\n        private TabPage tabPageExternal;\r\n        private Panel panel4;\r\n        private TabPage tabPageGeneral;\r\n        private Controls.PropertiesSidebar propertiesSidebar1;\r\n        private TabPage tabPageFolders;\r\n        private GroupBox groupBoxProgramFolders;\r\n        private Label labelProgramFolders;\r\n        private TextBox textBoxProgramFolders;\r\n        private CheckBox checkBoxAutoLoad;\r\n        private CheckBox checkBoxRatings;\r\n        private TabPage tabPageUninstallation;\r\n        private Controls.UninstallationSettings uninstallationSettings1;\r\n        private CheckBox checkBoxShowAllBadJunk;\r\n        private CheckBox checkBoxNeverFeedback;\r\n        private TabPage tabPageDetection;\r\n        private GroupBox groupBoxAppStores;\r\n        private CheckBox checkBoxScanSteam;\r\n        private CheckBox checkBoxScanStoreApps;\r\n        private CheckBox checkBoxScanWinFeatures;\r\n        private CheckBox checkBoxScanWinUpdates;\r\n        private Label labelWinFeatureInfo;\r\n        private Label labelWinUpdateInfo;\r\n        private CheckBox checkBoxAutoInstallFolderDetect;\r\n        private GroupBox groupBox1;\r\n        private FlowLayoutPanel flowLayoutPanel7;\r\n        private CheckBox checkBoxScanRegistry;\r\n        private CheckBox checkBoxScanDrives;\r\n        private CheckBox checkBoxPreDefined;\r\n        private TabPage tabPageInterface;\r\n        private GroupBox groupBoxLanguage;\r\n        private GroupBox groupBoxBackup;\r\n        private FlowLayoutPanel flowLayoutPanel9;\r\n        private RadioButton radioButtonBackupAsk;\r\n        private RadioButton radioButtonBackupNever;\r\n        private RadioButton radioButtonBackupAuto;\r\n        private Klocman.Controls.DirectorySelectBox directorySelectBoxBackup;\r\n        private Controls.Settings.CacheSettings cacheSettings1;\r\n        private GroupBox groupBox3;\r\n        private FlowLayoutPanel flowLayoutPanel10;\r\n        private CheckBox checkBoxChoco;\r\n        private CheckBox checkBoxOculus;\r\n        private CheckBox checkBoxRemovable;\r\n        private CheckBox checkBoxColorblind;\r\n        private CheckBox checkBoxScoop;\r\n        private CheckBox checkBoxDpiaware;\r\n        private GroupBox groupBox2;\r\n        private FlowLayoutPanel flowLayoutPanel4;\r\n        private Panel panel5;\r\n        private ComboBox comboBoxDoubleClick;\r\n        private Label label3;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>سطر الاوامر قبل بدء تشغيل الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>سطر الاوامر بعد انتهاء التثبيت</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>misc.5</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>في البداية \"Default.bcul\"تحميل تلقائيا قائمه الغاء التثبيت المسمى  </value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>البحث عن التحديثات عند بدء التشغيل</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>ارسال احصائيات الاستخدام المجهول</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>تمكين تصنيفات المستخدم للتطبيقات</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>لغة التطبيق:</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>سيتعين اعاده تشغيل التطبيق لتصبح تغييرات اللغة نافذه المفعول.</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>مربعات الرسائل</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>تظهر دائما الغير مرغوب فيه مع انخفاض الثقة</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>اطلب ازاله المثبتات بصوت عال من المهمة بهدوء</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>لا تطلب ابدا للحصول على ملاحظات او مساعده</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>البحث عن الخردة بعد الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>انشاء نقطه استعاده قبل الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>التطبيقات الخارجية</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>تمكين تنفيذ التطبيقات الخارجية</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>يمكنك تحديد الاوامر التي سيتم تشغيلها قبل الغاء التثبيت وبعده. سطر واحد يساوي امر واحد سيتم تنفيذها كما لو كنت تستخدم \"تشغيل...\" مربع الحوار.\r\n\r\n سينتظر حتى اكتمال الامر قيد التشغيل الحالي قبل تنفيذ التالية BCU </value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;اغلاق</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>عام</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>(مكتب التسجيل (مستحسن تركة ممكن</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>(المحركات  (يكتشف تطبيقات غير مسجله</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>استنادا الى قواعد محدده مسبقا</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>بحث عن التطبيقات في...</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>مخازن التطبيقات للمسح</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>كشف</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>ادوات خارجيه</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>مجلد</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>متنوع</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>يتبخر</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>تطبيقات ويندوز مخزن</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>ميزات ويندوز</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>ويمكن ان يكون بطيئا او حتى يفشل على بعض الانظمه (عاده ما تشير الى تلف النظام). WMI، يستخدم الكشف عن ميزات وندوز </value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>تحديث ويندوز</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>وهو بطيء. ويمكن ان يستغرق بضع دقائق لاكمال. WUA,يستخدم الكشف عن تحديثات وندوز </value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>مجلدات تثبيت البرنامج</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>العمل بشكل افضل. BCU  للبحث عن البقايا، والتطبيقات الغير مسجلة وعدد قليل من الاشياء الاخرى. في حين انه ليس من الضروري ، فان قائمه من هذه المجلدات السماح BCU  وسوف تستخدم هذه المجلدات من قبل  (e.g. D:\\Applications).يمكنك تحديد المجلدات المخصصة التي تقوم بتثبيت تطبيقاتك فيها\r\n\r\nيتم دائما فحص مجلدات وندوز الافتراضية ، ولا تحتاج الى تضمينها في هذه القائمة.\r\n\r\nاستخدام مسارات الدليل الكامل ، مسار واحد لكل سطر. سيتم تجاهل المسارات غير الصالحة والدلائل غير الموجودة.</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>محاولة الكشف عن مجلدات التثبيت المخصصة تلقائيا</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>محاولة الكشف عن مجلدات التثبيت المخصصة تلقائيا</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>اطلب الانشاء دائما</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>لا تطلب ابدا انشاء</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>انشاء تلقائيا في الدليل:</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>نسخ احتياطي قبل ازالة البقايا</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>اللغة</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>الواجهه</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>الشبكة</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.ComponentModel;\r\nusing System.Globalization;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman;\r\nusing Klocman.Binding.Settings;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Localising;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class SettingsWindow : Form\r\n    {\r\n        private readonly SettingBinder<Settings> _settings = Settings.Default.SettingBinder;\r\n        private bool _restartNeeded;\r\n\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public int OpenedTab { get { return tabControl.SelectedIndex; } set { tabControl.SelectedIndex = value; } }\r\n\r\n        public SettingsWindow()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        protected override void OnLoad(EventArgs e)\r\n        {\r\n            base.OnLoad(e);\r\n\r\n            if (DesignMode) return;\r\n\r\n            Icon = Resources.Icon_Logo;\r\n\r\n            _settings.BindControl(checkBoxLoud, x => x.MessagesAskRemoveLoudItems, this);\r\n            _settings.BindControl(checkBoxShowAllBadJunk, x => x.MessagesShowAllBadJunk, this);\r\n            _settings.BindControl(checkBoxNeverFeedback, x => x.MiscFeedbackNagNeverShow, this);\r\n            _settings.BindControl(checkBoxUpdateSearch, x => x.MiscCheckForUpdates, this);\r\n            _settings.BindControl(checkBoxSendStats, x => x.MiscSendStatistics, this);\r\n            _settings.BindControl(checkBoxAutoLoad, x => x.MiscAutoLoadDefaultList, this);\r\n            _settings.BindControl(checkBoxRatings, x => x.MiscUserRatings, this);\r\n            _settings.BindControl(checkBoxColorblind, x => x.MiscColorblind, this);\r\n            _settings.BindControl(checkBoxDpiaware, x => x.WindowDpiAware, this);\r\n\r\n            _settings.BindControl(checkBoxEnableExternal, x => x.ExternalEnable, this);\r\n            _settings.BindControl(textBoxPreUninstall, x => x.ExternalPreCommands, this);\r\n            _settings.BindControl(textBoxPostUninstall, x => x.ExternalPostCommands, this);\r\n\r\n            _settings.BindControl(textBoxProgramFolders, x => x.FoldersCustomProgramDirs, this);\r\n            _settings.BindControl(checkBoxAutoInstallFolderDetect, x => x.FoldersAutoDetect, this);\r\n            _settings.BindControl(checkBoxRemovable, x => x.FoldersScanRemovable, this);\r\n            _settings.Subscribe((x, y) => checkBoxRemovable.Enabled = y.NewValue, x => x.FoldersAutoDetect, this);\r\n\r\n            _settings.BindControl(checkBoxChoco, x => x.ScanChocolatey, this);\r\n            _settings.BindControl(checkBoxScoop, x => x.ScanScoop, this);\r\n            _settings.BindControl(checkBoxScanSteam, x => x.ScanSteam, this);\r\n            _settings.BindControl(checkBoxScanStoreApps, x => x.ScanStoreApps, this);\r\n            _settings.BindControl(checkBoxOculus, x => x.ScanOculus, this);\r\n            _settings.BindControl(checkBoxScanWinFeatures, x => x.ScanWinFeatures, this);\r\n            _settings.BindControl(checkBoxScanWinUpdates, x => x.ScanWinUpdates, this);\r\n\r\n            _settings.BindControl(checkBoxScanDrives, x => x.ScanDrives, this);\r\n            _settings.BindControl(checkBoxScanRegistry, x => x.ScanRegistry, this);\r\n            _settings.BindControl(checkBoxPreDefined, x => x.ScanPreDefined, this);\r\n\r\n            foreach (YesNoAsk value in Enum.GetValues(typeof(YesNoAsk)))\r\n            {\r\n                var wrapper = new LocalisedEnumWrapper(value);\r\n                comboBoxJunk.Items.Add(wrapper);\r\n                comboBoxRestore.Items.Add(wrapper);\r\n            }\r\n            _settings.Subscribe(JunkSettingChanged, x => x.MessagesRemoveJunk, this);\r\n            _settings.Subscribe(RestoreSettingChanged, x => x.MessagesRestorePoints, this);\r\n\r\n            foreach (UninstallerListDoubleClickAction value in Enum.GetValues(typeof(UninstallerListDoubleClickAction)))\r\n            {\r\n                var wrapper = new LocalisedEnumWrapper(value);\r\n                comboBoxDoubleClick.Items.Add(wrapper);\r\n            }\r\n            _settings.Subscribe(DoubleClickSettingChanged, x => x.UninstallerListDoubleClickAction, this);\r\n\r\n            comboBoxLanguage.Items.Add(Localisable.DefaultLanguage);\r\n            foreach (var languageCode in CultureConfigurator.SupportedLanguages.OrderBy(x => x.DisplayName))\r\n            {\r\n                comboBoxLanguage.Items.Add(new ComboBoxWrapper<CultureInfo>(languageCode, x => x.DisplayName));\r\n            }\r\n            _settings.Subscribe(LanguageSettingChanged, x => x.Language, this);\r\n\r\n            _settings.Subscribe(BackupSettingChanged, x => x.BackupLeftovers, this);\r\n            _settings.BindProperty(directorySelectBoxBackup,\r\n                box => box.DirectoryPath, nameof(directorySelectBoxBackup.DirectoryPathChanged),\r\n                settings => settings.BackupLeftoversDirectory, this);\r\n\r\n            _settings.SendUpdates(this);\r\n\r\n            _restartNeeded = false;\r\n        }\r\n\r\n        private void button2_Click(object sender, EventArgs e)\r\n        {\r\n            Close();\r\n\r\n            if (_restartNeeded && MessageBoxes.RestartNeededForSettingChangeQuestion())\r\n            {\r\n                EntryPoint.Restart();\r\n            }\r\n        }\r\n\r\n        private void checkBoxEnableExternal_CheckedChanged(object sender, EventArgs e)\r\n        {\r\n            splitContainer1.Enabled = checkBoxEnableExternal.Checked;\r\n            //textBoxPreUninstall.Enabled = checkBoxEnableExternal.Checked;\r\n            //textBoxPostUninstall.Enabled = checkBoxEnableExternal.Checked;\r\n        }\r\n\r\n        private void comboBoxJunk_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n            if (comboBoxJunk.SelectedItem is LocalisedEnumWrapper wrapper)\r\n            {\r\n                _settings.Settings.MessagesRemoveJunk = (YesNoAsk)wrapper.TargetEnum;\r\n            }\r\n        }\r\n\r\n        private void comboBoxLanguage_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n            if (comboBoxLanguage.SelectedItem is ComboBoxWrapper<CultureInfo> wrapper)\r\n            {\r\n                _settings.Settings.Language = wrapper.WrappedObject.Name;\r\n                _restartNeeded = true;\r\n            }\r\n            else if (comboBoxLanguage.SelectedItem is string)\r\n            {\r\n                _settings.Settings.Language = string.Empty;\r\n                _restartNeeded = true;\r\n            }\r\n        }\r\n\r\n        private void comboBoxRestore_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n            if (comboBoxRestore.SelectedItem is LocalisedEnumWrapper wrapper)\r\n            {\r\n                _settings.Settings.MessagesRestorePoints = (YesNoAsk)wrapper.TargetEnum;\r\n            }\r\n        }\r\n\r\n        private void JunkSettingChanged(object sender, SettingChangedEventArgs<YesNoAsk> args)\r\n        {\r\n            var newSelection =\r\n                comboBoxJunk.Items.Cast<LocalisedEnumWrapper>().FirstOrDefault(x => x.TargetEnum.Equals(args.NewValue));\r\n            if (newSelection == null || newSelection.Equals(comboBoxJunk.SelectedItem))\r\n                return;\r\n\r\n            comboBoxJunk.SelectedItem = newSelection;\r\n        }\r\n\r\n        private void LanguageSettingChanged(object sender, SettingChangedEventArgs<string> args)\r\n        {\r\n            if (!string.IsNullOrEmpty(args.NewValue))\r\n            {\r\n                var selectedItem = comboBoxLanguage.Items.OfType<ComboBoxWrapper<CultureInfo>>()\r\n                    .FirstOrDefault(x => x.WrappedObject.Name.Equals(args.NewValue));\r\n                if (selectedItem != null)\r\n                {\r\n                    comboBoxLanguage.SelectedItem = selectedItem;\r\n                    return;\r\n                }\r\n            }\r\n            comboBoxLanguage.SelectedIndex = 0;\r\n        }\r\n\r\n        private void RestoreSettingChanged(object sender, SettingChangedEventArgs<YesNoAsk> args)\r\n        {\r\n            var newSelection =\r\n                comboBoxRestore.Items.Cast<LocalisedEnumWrapper>()\r\n                    .FirstOrDefault(x => x.TargetEnum.Equals(args.NewValue));\r\n            if (newSelection == null || newSelection.Equals(comboBoxRestore.SelectedItem))\r\n                return;\r\n\r\n            comboBoxRestore.SelectedItem = newSelection;\r\n        }\r\n\r\n        private void SettingsWindow_FormClosing(object sender, FormClosingEventArgs e)\r\n        {\r\n            _settings.RemoveHandlers(this);\r\n        }\r\n\r\n        private void tabControl_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n        }\r\n\r\n        private void radioButtonBackup_CheckedChanged(object sender, EventArgs e)\r\n        {\r\n            directorySelectBoxBackup.Enabled = false;\r\n\r\n            if (radioButtonBackupAsk.Checked)\r\n                _settings.Settings.BackupLeftovers = YesNoAsk.Ask;\r\n            else if (radioButtonBackupAuto.Checked)\r\n            {\r\n                _settings.Settings.BackupLeftovers = YesNoAsk.Yes;\r\n                directorySelectBoxBackup.Enabled = true;\r\n            }\r\n            else if (radioButtonBackupNever.Checked)\r\n                _settings.Settings.BackupLeftovers = YesNoAsk.No;\r\n            else\r\n                throw new InvalidOperationException();\r\n        }\r\n\r\n        private void BackupSettingChanged(object sender, SettingChangedEventArgs<YesNoAsk> args)\r\n        {\r\n            switch (args.NewValue)\r\n            {\r\n                case YesNoAsk.Ask:\r\n                    radioButtonBackupAsk.Checked = true;\r\n                    break;\r\n                case YesNoAsk.Yes:\r\n                    radioButtonBackupAuto.Checked = true;\r\n                    break;\r\n                case YesNoAsk.No:\r\n                    radioButtonBackupNever.Checked = true;\r\n                    break;\r\n                default:\r\n                    throw new ArgumentOutOfRangeException(nameof(args), args.NewValue, \"Unknown value\");\r\n            }\r\n        }\r\n\r\n        private void comboBoxDoubleClick_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n            if (comboBoxDoubleClick.SelectedItem is LocalisedEnumWrapper wrapper)\r\n            {\r\n                _settings.Settings.UninstallerListDoubleClickAction = (UninstallerListDoubleClickAction)wrapper.TargetEnum;\r\n            }\r\n        }\r\n\r\n        private void DoubleClickSettingChanged(object sender, SettingChangedEventArgs<UninstallerListDoubleClickAction> args)\r\n        {\r\n            var newSelection = comboBoxDoubleClick.Items.Cast<LocalisedEnumWrapper>().FirstOrDefault(x => x.TargetEnum.Equals(args.NewValue));\r\n            if (newSelection == null || newSelection.Equals(comboBoxDoubleClick.SelectedItem))\r\n                return;\r\n\r\n            comboBoxDoubleClick.SelectedItem = newSelection;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Příkazový řádek před spuštěním odinstalace</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Příkazový řádek po odinstalaci ukončit</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Vyhledat aktualizace po spuštění</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Poslat anonymní statistiky používání</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Jazyk aplikace:</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>Aplikace bude muset být restartována. Aby se změna jazyka projevíla.</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Různé</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Zeptat se, zda chcete odebrat hlasité odinstalace z tichého zadání</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Hledání pozůstatky odinstalování</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Vytvoření bodu obnovení</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Okno zpráv</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Povolit spuštení externích aplikací</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Můžete zadat příkazy, které mají být provedeny před a po odinstalaci. Jeden řádek obsahuje jeden příkaz, který bude proveden jako okno \"Spustit ...\".\r\n\r\nBCU bude čekat na dokončení příkazu před zahájením dalšího.</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>Externí aplikace</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Zavřít</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>Obecné</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>Externí nástroje</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Můžete určit vlastní instalaci aplikace do složky (např D: \\ Applications). Tento seznam bude používán BCU k hledání zbytků po odinstalaci, neregistrované aplikací a pár dalších věcí. I když to není nutné, seznam složek pro zlepšení operací BCU.\r\n\r\nVýchozí složky systému Windows jsou vždy zahrnuty do vyhledávání, nemusíte je přidávat.\r\n\r\nPoužít celou cestu ke složce, jedna cesta na řádek. Neplatné cesty a neexistující složky budou ignorovány.</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Složky instalačních programů </value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Složky</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Různé</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller Nastavení</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Automaticky otevřený seznam \"Default.bcul\" na startu</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Aktivovat uživatelských ratingy aplikací</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Vždy zobrazovat nepotřebné s nízkou důvěrou</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Nepožadovat zpětnou vazbu, nebo pomoc</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registry (doporučeno ponechat povolené)</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Jednotky (detekuje neregistrované aplikace)</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Na základě předem definovaných pravidel</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Hledání aplikací v ...</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Úložiště aplikací pro skenování</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Detekce</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Aplikace Windows Store</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Funkce systému Windows</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>Detekce funkcí systému Windows používá službu WMI a v některých systémech může být pomalá nebo dokonce selhávat (obvykle indikuje poškození systému).</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Windows aktualizace</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>Zjišťování aktualizací systému Windows agentem WUA, což je pomalé. A může trvat několik minut do dokončení.</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>Pokusit se automaticky rozpoznat vlastní instalační složky</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>Vždy požádat o vytvoření</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>Nikdy se neptat</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>Vytvořit automaticky v adresáři:</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>Zálohování před odebráním zbytku</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>Jazyk</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>Rozhraní</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalace</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Anweisung VOR Ausführung der Deinstallation</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Anweisung NACH Beendigung der Deinstallation</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Suche nach Updates beim Start</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Anonyme Nutzungsstatistiken senden</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Sprache:</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>Die Anwendung muss neu gestartet werden, damit die Änderung der Sprache wirksam wird.</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Div.</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Fragen, ob normale Uninstaller von der Liste der stillen \r\nentfernt werden sollen</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Nach Deinstallation nach Programmresten suchen</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Vor Deinstallation einen Wiederherstellungspunkt erstellen</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Message-Boxen</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Ausführung von externen Anwendungen erlauben</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Sie können Befehle angeben, die vor und nach der Deinstallation ausgeführt werden. Eine Zeile entspricht einem Befehl und wird ausgeführt, als hätten Sie das Dialogfeld \"Ausführen...\" verwendet. \r\n\r\nBCU wartet mit der nächsten Ausführung, bis der aktuell ausgeführte Befehl abgeschlossen ist. </value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>Externe Anwendungen</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>S&amp;chließen</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>Allgemein</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>Externe Werkzeuge</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Verschiedenes</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller Einstellungen</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Ordner</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Sie können benutzerdefinierte Ordner angeben, in  denen Sie Ihre Anwendungen installiert haben (z.B. D:\\Anwendungen).\r\nDiese Ordner werden von BCU durchsucht, um Deinstallations-Reste und nicht registrierte Anwendungen zu finden.\r\nZwar ist es nicht notwendig, aber mit einer Liste dieser Ordner wird BCU besser funktionieren.\r\nDie Standard-Ordner werden immer gescannt. Sie müssen diese nicht in die Liste aufnehmen.\r\nVerwenden Sie vollständige Verzeichnispfade, ein Pfad pro Zeile. Ungültige Pfade und nicht vorhandene Verzeichnisse werden ignoriert.</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Programm Installationsordner</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Automatisch offene Liste \"Default.bcul\" beim Start</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Aktivieren nutzerbewertungen von Applikationen</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>Immer Fragen beim Erstellen</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>Niemals Fragen beim Erstellen</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>Erzeuge automatisch im Verzeichnis:</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>Backup vor der Resteentfernung</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Anzeige von Junk immer mit geringem Vertrauen</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Niemals nach Rückmeldungen und Hilfe fragen</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>Sprache</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>Schnittstelle</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>Deinstallation</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>Erkennung, dass Windows Update WUA benutzt welches langsam ist. Es kann einige Minuten dauern um fertig zu stellen.</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>Erkennung das Windowseigenschaften nutzen WMI, welches sehr langsam und manchmal auf bestimmten Systemen versagt. (weist in der Regel auf Systembeschädigung hin)</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Windows Eigenschaft</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Windows Store Programme</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Anwendungsspeicher Scannen</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registrierung (empfohlen, aktiviert zu lassen)</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Laufwerke (Erkennung nicht registrieter Programme)</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Basierend auf vordefinierten Regeln</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Suche nach Programmen in...</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Erkennung</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\r\n    <value>Überprüfe Wechseldatenträger</value>\r\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>Automatischer Versuch benutzerdefinierte Installallierte Ordner zu finden</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Netzwerk</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\r\n    <value>Farbblinden Einstellung</value>\r\n    <comment>Switches colors to be better for color-blind people</comment>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\r\n    <value>Aktivieren der DPI-kompatiblen Skalierung der Oberfläche</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Doppelklick in der Anwendungsliste</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\r\n    <value>Scoop</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Buscar actualizaciones al iniciar</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Idioma de la aplicación:</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Línea de comandos antes de que se inicie la desinstalación</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Línea de comando después de que la desinstalación finalice</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Cargar automáticamente la lista de desinstalación llamada \"Default.bcul\" al iniciar</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Activar calificaciones de las aplicaciones</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Carpetas</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Configuración de Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>Aplicaciones externas</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Cerrar</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>General</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>Herramientas externas</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Carpetas de instalación de programas</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Crear un punto de restauración antes de desinstalar</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Cajas de mensaje</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Enviar estadísticas de uso anónimas</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Buscar restos tras desinstalar</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>Reinicie la aplicación para cambiar el idioma.</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Variedad</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Preguntar para eliminar desinstaladores fuertes de una tarea silenciosa</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Permitir la ejecución de aplicaciones externas</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Puede especificar los comandos que se ejecutarán antes y después de la desinstalación. Una línea es igual a un comando y se ejecutará como si utilizara el diálogo \"Ejecutar...\".\r\n\r\nBCU esperará hasta que el comando activado se complete antes de ejecutar el siguiente.</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Puede indicar carpetas en las que instale sus aplicaciones (p,ej, D:\\Aplicaciones). Estas carpetas serán utilizadas por BCU para buscar restos, aplicaciones no registradas y otras cosas. Si bien no es necesario, una lista de estas carpetas permitirá BCU trabajar mejor.\r\n\r\nLas carpetas de Windows predeterminadas siempre se analizan, no es necesario incluirlas en esta lista.\r\n\r\nUtilice rutas de directorio completas, una ruta por línea. Las rutas no válidas y los directorios no existentes se ignorarán.</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Variados</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar siempre restos de baja confianza</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Nunca solicitar comentarios o ayuda</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registro (se recomienda dejar habilitado)</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Unidades (detecta aplicaciones no registradas)</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Basado en reglas predefinidas</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Buscar aplicaciones en...</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Almacenes de aplicaciones para escanear</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Detección</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Apps de Windows Store</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Características de Windows</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>Detección de características de Windows utiliza WMI, y puede ser lento o incluso fallar en algunos sistemas (por lo general indica corrupción del sistema).</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Actualización de Windows</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>La detección de actualizaciones de Windows utiliza WUA, que es lento. Puede tardar un par de minutos en completarse.</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>Buscar siempre las carpetas de instalación personalizadas</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\r\n    <value>Modo para daltónicos</value>\r\n    <comment>Switches colors to be better for color-blind people</comment>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\r\n    <value>Habilitar el escalado de la interfaz en función del DPI</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>Siempre pedir crear</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>Nunca pedir crear</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>Crear automáticamente en el directorio:</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>Respaldar antes de limpiar restos</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>Idioma</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>Interfaz</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalación</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\r\n    <value>Scoop</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\r\n    <value>Escanear unidades extraíbles</value>\r\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Red</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Doble clic en la lista de aplicaciones</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Ligne de commande avant le début de désinstallation</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Ligne de commande après la fin de désinstallation</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Chercher des mises à jour au démarrage</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Envoyer des statistiques anonymes d'utilisation</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Langage de l'application :</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>L'application devra être relancée pour prendre en compte le changement de langage.</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Divers</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Demander pour supprimer les désinstalleurs causants\r\nd'une tâche silencieuse</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Rechercher des résidus après désinstallation</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Créer un point de restauration avant de désinstaller</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Boîtes de message</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Activer l'exécution d'applications externes</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Vous pouvez spécifier des commandes qui se lanceront avant et après la désinstallation. Une ligne égale une commande et sera exécutée comme en utilisant le dialogue \"Exécuter...\".\r\n\r\nBCU attendra la fin de la commande courante avant d'exécuter la suivante.</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>Applications externes</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Fermer</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>Général</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>Outils externes</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Divers</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Réglages de Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Dossiers</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Vous pouvez spécifier des dossiers personnalisés dans lesquels vous installez vos applications (par ex. D:\\Applications). Ces dossiers seront utilisés par BCU pour chercher des vestiges de désinstallation, des applications non enregistrées et quelques autres choses. Bien que ce ne soit pas nécessaire, une liste de ces dossiers fera mieux fonctionner BCU.\r\n\r\nLes dossiers Windows par défaut sont toujours scannés, vous n'avez pas besoin de les inclure dans la liste.\r\n\r\nUtilisez des chemins complets de dossiers, un chemin par ligne. Les chemins invalides et les dossiers non-existants seront ignorés.</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Dossiers d'installation des programmes</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Charger automatiquement la liste de désinstalleurs \"Default.bcul\" au démarrage</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Activer les notes utilisateurs des applications</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Toujours montrer les résidus avec faible confiance</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Ne jamais demander les retours ou de l'aide</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registre (il est recommandé de laisser activé) </value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Lecteurs (détecte les applis non enregistrées)</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Basé sur des règles pré-définies</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Chercher des applications dans...</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Magasins d'application à scanner</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Détection</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Applis du Windows Store</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Fonctionnalités Windows</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>La détection des Fonctionnalités Windows utilise WMI et peut être lente et même échouer sur certains systèmes (indiquant d'habitude une corruption du système).</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>La détection de Windows Update utilise WUA, qui est lent. Cela peut prendre quelques minutes.</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>Toujours demander pour créer</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>Ne jamais demander pour créer</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>Créer automatiquement dans le dossier :</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>Sauvegarder avant la suppression des résidus</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>Langage</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>Interface</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>Désinstallation</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>Tenter de détecter automatiquement les dossiers d'installation personnalisés</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Réseau</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\r\n    <value>Scanner les lecteurs amovibles</value>\r\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\r\n    <value>Mode daltonien</value>\r\n    <comment>Switches colors to be better for color-blind people</comment>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\r\n    <value>Activer la mise à l'échelle de l'interface compatible DPI</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Double-cliquer dans la liste d'applications</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\r\n    <value>Scoop</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Démarrage</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Az eltávolítás elindítása előtt végrehajtandó parancsok</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Az eltávolítás befejeződése után végrehajtandó parancsok</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Indításkor automatikusan töltse be a \"Default.bcul\" eltávolítási listát</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Frissítések keresése a program elindításakor</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Névtelen használati statisztika küldése</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Programok felhasználói értékelésének engedélyezése</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>A program nyelve:</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>A programot újra kell indítani, a nyelvi módosítások érvényesítéséhez.</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Vegyes</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Mindig mutatja, ha egy program kevésbé megbízható</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Kérdezzen rá a normál eltávolítók eltávolítására egy csendes feladatból</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Ne kérjen visszajelzést vagy segítséget</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Maradványok keresése az eltávolítást követően</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Visszaállítási pont készítése az eltávolítás előtt</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Üzenetablakok</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Külső alkalmazások futtatásának engedélyezése</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Megadhat olyan parancsokat, amelyek az eltávolítás előtt, vagy után fognak végrehajtódni. Egy sorba egy parancs kerüljön, és az úgy kerül végrehajtásra, mintha a \"Futtatás...\" ablakot használná. \r\n\r\nA BCU, a következő elindítása előtt megvárja amíg az adott parancs befejeződik.</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>Külső alkalmazások</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Bezárás</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>Általános</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>Külső eszközök</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Az alkalmazások telepítéséhez megadhat egyéni mappákat is (pl. D:\\Applications). A BCU ezeket a mappákat is használni fogja az eltávolítás utáni maradványok, nem regisztrált alkalmazások, és egyéb nyomok felkutatásához. Bár nem szükségesek, de ezeknek a mappáknak a megadásával a BCU hatékonyabban használható.\r\n\r\nAz alapértelmezett Windows mappák mindig ellenőrzésre kerülnek, így azokat nem kell megadnia ebben a listában.\r\n\r\nSoronként egy teljes elérési útvonalat adjon meg. Az érvénytelen útvonalak, vagy nem létező mappák kihagyásra kerülnek.</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Programtelepítési mappák</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Mappák</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Vegyes</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>A Bulk Crap Uninstaller beállításai</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\r\n    <value>Színvak mód</value>\r\n    <comment>Switches colors to be better for color-blind people</comment>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\r\n    <value>Felhasználó felület DPI-méretezésének engedélyezése</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Dupla kattintás az alkalmazáslistán</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>Mindig kérdezze</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>Soha ne kérdezze</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>Automatikusan ebbe a mappába:</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>Biztonsági mentés a maradványok eltávolítása előtt</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>Nyelv</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>Felület</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítás</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>A Windows-frissítések keresése a WUA-t használja, ami lassú. Több percig is eltarthat, mire befejeződik.</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>A Windows-szolgáltatások keresése a WMI-t használja, ami lassú. Egyes rendszereken ez a folyamat akár meg is hiúsulhat (ami általában a rendszer sérülését jelzi).</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Windows-szolgáltatások</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Microsoft Store alkalmazások</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\r\n    <value>Scoop</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Alkalmazásforrások az ellenőrzéshez</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Beállításjegyzékben (ajánlott)</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Meghajtókban (nem regisztrált alkalmazásokat észlel)</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Előre meghatározott szabályok alapján</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Alkalmazások keresése...</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Ellenőrzés</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\r\n    <value>Cserélhető meghajtók ellenőrzése</value>\r\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>Egyéni telepítési mappák automatikus felismerése</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Inditás</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Hálózat</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Riga di comando prima che la disinstallazione sia avviata</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Riga di comando quando la disinstallazione termina</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Carica automaticamente all'avvio elenco disinstallazione \"Default.bcul\"</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Cerca aggiornamenti all'avvio</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Invia statistiche d'uso anonime</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Abilita valutazioni utente delle applicazioni</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Lingua applicazione:</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>Per applicare le modifiche alla lingua l'applicazione deve essere riavviata</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Varie</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza sempre i residui con basso livello di affidabilità</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Chiedi di rimuovere i disinstallatori guidati da una procedura silenziosa</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Non chiedere mai per aiuto o feedback</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Dopo la disinstallazione cerca i residui</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Prima della disinstallazione crea un punto di ripristino</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Riquadro messaggi</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Abilita esecuzione di applicazioni esterne</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Puoi specificare comandi che saranno eseguiti prima e dopo la disinstallazione. Una linea corrisponde ad un comando e sarà eseguita come se usassi la finestra \"Esegui...\".\r\n\r\nBCU attenderà il completamento del comando in esecuzione prima dell'esecuzione del successivo.</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>Applicazioni esterne</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Chiudi</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>Generale</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>Strumenti esterni</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Puoi specificare cartelle personalizzate in cui installare le applicazioni (ad es. D:\\Applicazioni). Le cartelle saranno usate da BCU durante la ricerca degli oggetti residui della disinstallazione, applicazioni non registrate e altro. Anche se non necessario, un elenco di queste cartelle permetterà a BCU di lavorare meglio.\r\n\r\nLe cartelle predefinite di WIndows sono sempre controllate, non hai bisogno di includerle nell'elenco.\r\n\r\nUsa il percorso completo delle cartelle, un percorso per linea. \r\nI percorsi non validi e non esistenti saranno ignorati.</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Cartelle installazione programma</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Cartelle</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Varie</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Impostazioni Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>Chiedi sempre per creare</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>Non chiedere mai per creare</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>Crea automaticamente nella cartella:</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>Backup prima della rimozione dei residui</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>Lingua</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>Interfaccia</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>Disinstallazione</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registro (si raccomanda di lasciarlo abilitato)</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Dischi (rilevamento applicazioni non registrate)</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Basato su regole predefinite</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Cerca applicazioni in...</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>App di Windows Store</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Funzionalità di Windows</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>Il rilevamento di funzionalità di Windows usa WMI, può quindi essere lento o persino fallire in alcuni sistemi (generalmente indica una corruzione del sistema).</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>Il rilevamento di Windows Update usa WUA, che è lento. Potrebbe essere completato in alcuni minuti.</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Archivi applicazioni da scansionare</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Rilevamento</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>Prova a rilevare automaticamente la cartella di installazione personalizzata</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Rete</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\r\n    <value>Modalità per daltonici</value>\r\n    <comment>Switches colors to be better for color-blind people</comment>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\r\n    <value>Scansiona dischi rimovibili</value>\r\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\r\n    <value>Abilita ridimensionamento interfaccia sensibile ai DPI</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\r\n    <value>Scoop</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Avvio</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Doppio clic nell'elenco delle applicazioni</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>アンインストール開始前のコマンドライン</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>アンインストール終了後のコマンドライン</value>\n  </data>\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\n    <value>バリアフリーカラーモード\n(色盲の方に配慮した色に切り替えます)</value>\n    <comment>Switches colors to be better for color-blind people</comment>\n  </data>\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\n    <value>DPI対応インターフェーススケーリングを有効にする</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>アプリケーションリストでのダブルクリック</value>\n  </data>\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\n    <value>その他</value>\n  </data>\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\n    <value>起動時に「Default.bcul」という名前のアンインストールリストを自動的に読み込む</value>\n  </data>\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\n    <value>アプリケーションのユーザー評価を有効にする</value>\n  </data>\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\n    <value>起動時にアップデートを確認</value>\n  </data>\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\n    <value>匿名の使用統計を送信</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>アプリケーション言語:</value>\n  </data>\n  <data name=\"label10.Text\" xml:space=\"preserve\">\n    <value>言語変更を反映させるには、アプリケーションを再起動する必要があります。</value>\n  </data>\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\n    <value>作成時、常に確認</value>\n  </data>\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\n    <value>作成時、確認しない</value>\n  </data>\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\n    <value>自動的にディレクトリに作成:</value>\n  </data>\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\n    <value>残留物を削除する前にバックアップ</value>\n  </data>\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\n    <value>信頼度の低いジャンクを常に表示</value>\n  </data>\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\n    <value>静かなタスクから騒音アンインストーラーを削除するか確認</value>\n  </data>\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\n    <value>フィードバックやヘルプを求めない</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>アンインストール後にジャンクを検索</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>アンインストール前に復元ポイントを作成</value>\n  </data>\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\n    <value>メッセージボックス</value>\n  </data>\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\n    <value>外部アプリケーションの実行を有効にする</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>アンインストールの前後に実行するコマンドを指定できます。1行が1コマンドに相当し、「実行...」ダイアログを使用したかのように実行されます。\n\n現在実行中のコマンドが完了するまでBCUは次のコマンドの実行を待ちます。</value>\n  </data>\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\n    <value>外部アプリケーション</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>&amp;閉じる</value>\n  </data>\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\n    <value>一般</value>\n  </data>\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\n    <value>言語</value>\n  </data>\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\n    <value>インターフェース</value>\n  </data>\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\n    <value>アンインストール</value>\n  </data>\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\n    <value>Windowsアップデートの検出にはWUAを使用しており、これが遅い場合があります。完了するまでに数分かかることがあります。</value>\n  </data>\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\n    <value>Windowsアップデート</value>\n  </data>\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\n    <value>Windows機能の検出にはWMIを使用しており、一部のシステムでは遅くなったり、失敗したりすることがあります（通常はシステムの破損を示しています）。</value>\n  </data>\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\n    <value>Windowsの機能</value>\n  </data>\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\n    <value>Windowsストアアプリ</value>\n  </data>\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\n    <value>Steam</value>\n  </data>\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\n    <value>Scoop</value>\n  </data>\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\n    <value>Oculusストア</value>\n  </data>\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\n    <value>Chocolatey</value>\n  </data>\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\n    <value>スキャンするアプリケーションストア</value>\n  </data>\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\n    <value>レジストリ（有効のままにすることを推奨）</value>\n  </data>\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\n    <value>ドライブ（登録されていないアプリを検出）</value>\n  </data>\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\n    <value>定義済みのルールに基づく</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>...でアプリケーションを検索</value>\n  </data>\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\n    <value>検出</value>\n  </data>\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\n    <value>外部ツール</value>\n  </data>\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\n    <value>リムーバブルドライブをスキャン</value>\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\n  </data>\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\n    <value>カスタムインストールフォルダーを自動的に検出しようとします。</value>\n  </data>\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\n    <value>アプリケーションをインストールするカスタムフォルダー（例：D:\\Applications）を指定できます。これらのフォルダーは、BCUがアンインストールの残骸や未登録アプリケーション、その他のいくつかの項目を検索する際に使用されます。必須ではありませんが、これらのフォルダーのリストを提供することで、BCUの機能が向上します。\n\nデフォルトのWindowsフォルダーは常にスキャンされるため、このリストに含める必要はありません。\n\n完全なディレクトリパスを使用し、1行につき1つのパスを指定してください。無効なパスや存在しないディレクトリは無視されます。</value>\n  </data>\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\n    <value>プログラムインストールフォルダー</value>\n  </data>\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\n    <value>フォルダー</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>スタートアップ</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>ネットワーク</value>\n  </data>\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\n    <value>その他</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bulk Crap Uninstaller 設定</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Div.</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Automatisch openen lijst \"Default.bcul\" tijdens het starten</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Zoeken naar updates tijdens het starten</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Anonieme gebruikers statistieken sturen</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Inschakelen gebruikers waarderingen van programma's</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Taal:</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>Het programma moet opnieuw worden gestart, om de taal wijziging te gebruiken. </value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Bericht vensters</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Rommel dat u niet vertrouwt altijd weergeven</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Vragen of normale de-installers uit de lijst\r\n met stille de-installers moet worden verwijderd</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Vraag nooit om feedback of hulp</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Na de-installatie zoeken naar programma restanten</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Voor de-installatie een herstelpunt maken</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>Externe programma's</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Uitvoeren van externe programma's toestaan</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>Sluiten</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>Algemeen</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Windows Store apps</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Windows onderdelen</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>De detectie van Windows onderdelen gebruikt WMI en kan traag zijn of zelfs mislukken op sommige systemen (meestal een gevolg van systeem corruptie).</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Windows update</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>Detectie van Windows updates gebruikt WUA, wat traag verloopt. Dit kan enkele minuten duren tot het is afgerond.</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Programma opslaan om te scannen</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Detectie</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>Externe gereedschappen</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Mappen</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Diversen</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Programma installatie map</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller instellingen</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Dubbelklikken in applicatielijst</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Opdrachtregel voordat de de-installatie start</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Opdrachtregel nadat de de-installatie is voltooid</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>U kunt opdrachten opgeven die voor en/of na de de-installatie worden uitgevoerd. Op elke regel één opdracht en deze wordt dan uitgevoerd alsof u de dialoog \"Uitvoeren...\" zou gebruiken.\r\n\r\nBCU wacht tot de momenteel uitgevoerde opdracht is voltooid, voordat de volgende wordt uitgevoerd.</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>U kunt aangepaste mappen opgeven, waarin u uw programma's heeft geïnstalleerd (bijv. D:\\Programmas). Deze mappen worden door BCU gebruikt om te zoeken naar de-installatie van restanten, ongeregistreerde programma's en andere zaken.\r\nOfschoon niet noodzakelijk, laat een lijst met dergelijke mappen BCU beter functioneren.\r\n\r\nDe standaard Windows mappen worden altijd gescand, deze hoeven niet opgenomen te worden in genoemde lijst.\r\n\r\nGebruik volledige map paden, één pad per regel. Ongeldige paden en niet bestaande mappen zullen worden genegeerd.</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Register (aanbevolen om ingeschakeld te laten)</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Schijven (detecteert niet geregistreerde apps)</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Gebasseerd op vooraf gedefinieerde regels</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Zoeken naar programma's in...</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>Proberen aangepaste installatiemappen te detecteren</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>Altijd vragen om te maken</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>Nooit vragen om te maken</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>Maak automatisch in de map:</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>Back-up alvorens restanten te verwijderen</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>Taal</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>Interface</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>De-installatie</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Netwerk</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\r\n    <value>Kleurenblind modus</value>\r\n    <comment>Switches colors to be better for color-blind people</comment>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\r\n    <value>Scan verwijderbare schijven</value>\r\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\r\n    <value>DPI-bewuste interface-schaling inschakelen</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Opstart</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\r\n    <value>Scoop</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Komendy do wykonania przed dezinstalacją</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Komendy do wykonania po dezinstalacji</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Szukaj uaktualnień po starcie aplikacji</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Wysyłaj anonimowe statystyki</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Język aplikacji</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>Aby dokończyć zmianę języka będzie wymagane ponownie uruchomienie aplikacji.</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Pozostałe</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Zapytaj czy usunąć głośne dezinstalatory z cichego zadania</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>Nigdy nie proś o tworzenie</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Szukaj pozostałości po dezinstalacji</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Utwórz punkt przywracania</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Okna komunikatów</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Włącz uruchamianie zewnętrznych aplikacji</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Możesz określić komendy które zostaną wykonane przed i po dezinstalacji. Jedna linia zawiera jedną komendę, która zostanie wykonana tak jak przez okno \"Uruchom...\".\r\n\r\nBCU będzie czekać aż uruchomiona komenda zakończy pracę przed uruchomieniem następnej.</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>Zewnętrzne aplikacje</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Zamknij</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>Ogólne</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>Narzedzia zewnetrzne</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Różne</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Ustawienia BCUninstaller</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Możesz określić niestandardowe foldery instalacji aplikacji (np D: \\ Aplikacje). Lista ta będzie wykorzystywana przez BCU do wyszukiwania resztek po dezinstalacji, niezarejestrowanych aplikacji, i kilku innych rzeczy. O ile nie jest ona konieczna, lista tych folderach usprawni działanie BCU.\r\n\r\nDomyślne foldery systemu Windows są zawsze zawarte przeszukiwane, nie musisz ich dodawać.\r\n\r\nUżyj pełnych ścieżek folderów, jedna ścieżka na linię. Nieprawidłowe ścieżki i nieistniejące foldery będą ignorowane.</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Foldery instalacji programów</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Foldery</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Automatycznie otwórz listę \"Default.bcul\" na starcie</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Włącz oceny użytkowników dla aplikacji</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>Zawsze proś o utworzenie</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Zawsze pokazuj śmieci z niskim wynikiem</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Nigdy nie pytaj o opinię lub pomoc</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Aplikacje Windows Store</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Funkcje systemu Windows</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>Wykrywanie funkcji systemu Windows wykorzystuje WMI i może działać wolno, lub nawet wcale na niektórych systemach (zwykle oznacza to uszkodzenie systemu).</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Aktualizacje systemu Windows</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>Wykrywanie aktualizacji systemu Windows używa technologii WUA, która działa wolno. Skanowanie może potrwać kilka minut.</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Typy aplikacji do skanowania</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Wykrywanie</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Rejestr (zalecane włączenie)</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Dyski (wykrywa niezarejestrowane programy)</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Ręcznie sprecyzowane sygnatury</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Szukwaj aplikacji w...</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>Spróbuj wykryć niestandardowe foldery z programami automatycznie</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>Utwórz automatycznie w katalogu:</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>Twórz kopię zapasową przed usunięciem</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>Język</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>Interfejs</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>Dezinstalacja</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Sieć</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\r\n    <value>Tryb dla daltonistów</value>\r\n    <comment>Switches colors to be better for color-blind people</comment>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\r\n    <value>Skanuj napędy przenośne</value>\r\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Linha de comando antes do início da desinstalação</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Linha de comando após o fim da desinstalação</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Carregue automaticamente a Lista de desinstalação chamada \"Default.bcul\" no início</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Habilitar classificações de usuários de aplicativos</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Procure por atualizações na inicialização</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Enviar estatísticas anônimas de uso</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Diversos</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Idioma do aplicativo:</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>O aplicativo terá que ser reiniciado para que a alteração de idioma entre em vigor.</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>Sempre pergunte para criar</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>Nunca pergunte para criar</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>Crie automaticamente no diretório:</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>Backup antes da remoção de sobras</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Sempre exibir sobras com baixo nível de confiança</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Perguntar para remover desinstaladores fortes de uma tarefa silenciosa</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Nunca pedir comentários ou ajuda</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Procurar sobras após a desinstalação</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Criar ponto de restauração antes de desinstalar</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Caixas de mensagens</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Habilitar a execução de aplicativos externos</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Você pode especificar comandos que serão executados antes e depois da desinstalação. Uma linha é igual a um comando e será executada como se você usasse a caixa de diálogo \"Executar...\".\r\n\r\nO BCU aguardará até que o comando em execução seja finalizado antes de executar o próximo.</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>Aplicações externas</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Fechar</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>Geral</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>Idioma</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>Interface</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalação</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registro (recomendado deixar ativado)</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Drives (detecta aplicativos não registrados)</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Com base em regras pré-definidas</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Procurar aplicativos em...</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Apps da Window Store</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Recursos do Windows</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>A detecção de recursos do Windows usa WMI e pode ser lenta ou mesmo falhar em alguns sistemas (geralmente indicando corrupção do sistema).</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>A detecção de atualizações do Windows usa a WUA, que é lenta. Pode demorar alguns minutos para ser concluído.</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Armazenamento de aplicativos para examinar</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Detecção</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>Ferramentas externas</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Você pode especificar pastas personalizadas nas quais você instalou seus aplicativos (por exemplo, D: \\ Applications). Essas pastas serão usadas pelo BCU para procurar sobras de desinstalação, aplicativos não registrados e algumas outras coisas. Embora não seja necessário, uma lista dessas pastas permitirá que o BCU funcione melhor.\r\n\r\nAs pastas padrão do Windows são sempre examinadas, você não precisa incluí-las nesta lista.\r\n\r\nUse caminhos de diretório completo, um caminho por linha. Caminhos inválidos e diretórios não existentes serão ignorados.</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>Tente detectar automaticamente as pastas de instalação personalizadas</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Pastas de instalação dos programas</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Pastas</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Diversos</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Configurações do Bulk Crap Uninstaller </value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\r\n    <value>Modo para daltônicos</value>\r\n    <comment>Switches colors to be better for color-blind people</comment>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\r\n    <value>Habilitar escalonamento de interface com DPI</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Clique duplo na lista de aplicação</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\r\n    <value>Scoop</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\r\n    <value>Escanear armazenamentos externos</value>\r\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Inicializar</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Rede</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Linha de comando antes do início da desinstalação</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Linha de comando após o fim da desinstalação</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Carregamento automático no início da lista de desinstalação \"Default.bcul\".</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Verificar actualizações no arranque.</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Enviar estatísticas anónimas de utilização</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Permitir avaliações do utilizador das aplicações </value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Idioma da aplicação:</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>A aplicação terá de ser reiniciada para que a alteração do idioma tenha efeito.</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Diversos</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Pedir para remover desinstaladores activos de uma tarefa em segundo plano.</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Procurar lixo após a desinstalação</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Criar um ponto de restauro antes da desinstalação</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Caixas de mensagens</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Permitir a execução de aplicações externas.</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Pode especificar comandos que serão executados antes e após a desinstalação. Uma linha é igual a um comando e este será executado como se você usasse a caixa de diálogo \"Executar ...\".\r\n\r\nO BCU vai esperar até que o comando actualmente em execução esteja concluído antes de executar o próximo.</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>Aplicações externas</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Fechar</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>Geral</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>Ferramentas externas</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Pode especificar pastas personalizadas onde instalará as suas aplicações (por exemplo, D: \\ Applicações). Essas pastas serão utilizadas pela BCU para procurar restos da desinstalação, aplicações não registada e algumas coisas mais. Embora não seja necessário, uma lista dessas pastas vai permitir que o BCU tenha um melhor desempenho.\r\n\r\nAs pastas padrão Windows são sempre verificadas, não precisa de as incluir na lista.\r\n\r\nUtilize caminhos de diretório completos, um caminho por linha. Caminhos inválidos e diretórios inexistentes serão ignorados.\r\n</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Pastas de instalação dos programas</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Pastas</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Diversos</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Configurações do Bulk Crap Uninstaller </value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Mostra sempre que um determinado programa não é de confiança.</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Nunca pedir comentários ou ajuda.</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Apps da Window Store</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Componentes do Windows</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>A detecção de recursos do Windows é feita pelo WMI e pode ser lenta ou mesmo falhar em alguns sistemas (geralmente indicando corrupção do sistema).</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Actualização do Windows</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>A detecção das actualizações do Windows é feita pelo WUA, que é lento. Pode levar alguns minutos até estar concluído.</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Armazenamento de aplicativos para digitalizar</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Detecção</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registo (é recomendável deixá-lo activo)</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Drives (detecta aplicativos não registados)</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Com base em regras pré-definidas</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Procurar aplicativos em...</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"splitContainer1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"splitContainer1.IsSplitterFixed\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"splitContainer1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 145</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"splitContainer1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"splitContainer1.Orientation\" type=\"System.Windows.Forms.Orientation, System.Windows.Forms\">\r\n    <value>Horizontal</value>\r\n  </data>\r\n  <data name=\"textBoxPreUninstall.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"textBoxPreUninstall.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 21</value>\r\n  </data>\r\n  <data name=\"textBoxPreUninstall.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"textBoxPreUninstall.Multiline\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"textBoxPreUninstall.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>412, 109</value>\r\n  </data>\r\n  <data name=\"textBoxPreUninstall.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxPreUninstall.Name\" xml:space=\"preserve\">\r\n    <value>textBoxPreUninstall</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxPreUninstall.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxPreUninstall.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxPreUninstall.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label5.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label5.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label5.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"label5.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label5.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>1, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"label5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>234, 21</value>\r\n  </data>\r\n  <data name=\"label5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Command line before uninstallation starts</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label5.Name\" xml:space=\"preserve\">\r\n    <value>label5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label5.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label5.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel1.Name\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel1.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"textBoxPostUninstall.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"textBoxPostUninstall.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 21</value>\r\n  </data>\r\n  <data name=\"textBoxPostUninstall.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"textBoxPostUninstall.Multiline\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"textBoxPostUninstall.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>412, 111</value>\r\n  </data>\r\n  <data name=\"textBoxPostUninstall.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxPostUninstall.Name\" xml:space=\"preserve\">\r\n    <value>textBoxPostUninstall</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxPostUninstall.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxPostUninstall.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxPostUninstall.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label6.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label6.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label6.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label6.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"label6.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label6.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>1, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"label6.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>221, 21</value>\r\n  </data>\r\n  <data name=\"label6.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Command line after uninstallation ends</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label6.Name\" xml:space=\"preserve\">\r\n    <value>label6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label6.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label6.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label6.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel2.Name\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel2.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"splitContainer1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>416, 275</value>\r\n  </data>\r\n  <data name=\"splitContainer1.SplitterDistance\" type=\"System.Int32, mscorlib\">\r\n    <value>134</value>\r\n  </data>\r\n  <data name=\"splitContainer1.SplitterWidth\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"splitContainer1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Name\" xml:space=\"preserve\">\r\n    <value>splitContainer1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxExternal</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>121, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\r\n    <value>Color-blind mode</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxColorblind.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxColorblind</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxColorblind.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxColorblind.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxColorblind.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 28</value>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>207, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\r\n    <value>Enable DPI-aware interface scaling</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxDpiaware.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxDpiaware</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxDpiaware.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxDpiaware.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxDpiaware.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 46</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>2, 0, 2, 2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>405, 52</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxMisc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel5.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"comboBoxDoubleClick.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"comboBoxDoubleClick.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>260, 0</value>\r\n  </data>\r\n  <data name=\"comboBoxDoubleClick.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"comboBoxDoubleClick.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>139, 23</value>\r\n  </data>\r\n  <data name=\"comboBoxDoubleClick.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxDoubleClick.Name\" xml:space=\"preserve\">\r\n    <value>comboBoxDoubleClick</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxDoubleClick.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxDoubleClick.Parent\" xml:space=\"preserve\">\r\n    <value>panel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxDoubleClick.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"label3.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 0</value>\r\n  </data>\r\n  <data name=\"label3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 3, 0, 0</value>\r\n  </data>\r\n  <data name=\"label3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>182, 18</value>\r\n  </data>\r\n  <data name=\"label3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Double clicking in application list</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label3.Name\" xml:space=\"preserve\">\r\n    <value>label3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label3.Parent\" xml:space=\"preserve\">\r\n    <value>panel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label3.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel5.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 19</value>\r\n  </data>\r\n  <data name=\"panel5.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel5.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>117, 27</value>\r\n  </data>\r\n  <data name=\"panel5.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>6, 0, 6, 0</value>\r\n  </data>\r\n  <data name=\"panel5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>405, 27</value>\r\n  </data>\r\n  <data name=\"panel5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.Name\" xml:space=\"preserve\">\r\n    <value>panel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxMisc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 374</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>413, 101</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Misc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxMisc.Name\" xml:space=\"preserve\">\r\n    <value>groupBoxMisc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxMisc.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxMisc.Parent\" xml:space=\"preserve\">\r\n    <value>tabPageInterface</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxMisc.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>356, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Automatically load Uninstall List named \"Default.bcul\" on start</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoLoad.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxAutoLoad</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoLoad.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoLoad.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoLoad.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 53</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>206, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Enable user ratings of applications</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRatings.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxRatings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRatings.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRatings.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel10</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRatings.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>181, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Search for updates on startup</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxUpdateSearch.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxUpdateSearch</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxUpdateSearch.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxUpdateSearch.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel10</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxUpdateSearch.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 28</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>200, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Send anonymous usage statistics</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxSendStats.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxSendStats</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxSendStats.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxSendStats.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel10</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxSendStats.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"comboBoxLanguage.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"comboBoxLanguage.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>136, 0</value>\r\n  </data>\r\n  <data name=\"comboBoxLanguage.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"comboBoxLanguage.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>263, 23</value>\r\n  </data>\r\n  <data name=\"comboBoxLanguage.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxLanguage.Name\" xml:space=\"preserve\">\r\n    <value>comboBoxLanguage</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxLanguage.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxLanguage.Parent\" xml:space=\"preserve\">\r\n    <value>panel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxLanguage.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label9.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label9.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"label9.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label9.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 0</value>\r\n  </data>\r\n  <data name=\"label9.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label9.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 3, 7, 0</value>\r\n  </data>\r\n  <data name=\"label9.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>130, 18</value>\r\n  </data>\r\n  <data name=\"label9.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Application language:</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label9.Name\" xml:space=\"preserve\">\r\n    <value>label9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label9.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label9.Parent\" xml:space=\"preserve\">\r\n    <value>panel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label9.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 56</value>\r\n  </data>\r\n  <data name=\"panel3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel3.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>117, 27</value>\r\n  </data>\r\n  <data name=\"panel3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>6, 0, 6, 0</value>\r\n  </data>\r\n  <data name=\"panel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>405, 27</value>\r\n  </data>\r\n  <data name=\"panel3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Name\" xml:space=\"preserve\">\r\n    <value>panel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxLanguage</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label10.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label10.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label10.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label10.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 19</value>\r\n  </data>\r\n  <data name=\"label10.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label10.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>420, 0</value>\r\n  </data>\r\n  <data name=\"label10.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 2, 0, 5</value>\r\n  </data>\r\n  <data name=\"label10.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>393, 37</value>\r\n  </data>\r\n  <data name=\"label10.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>The application will have to be restarted  for the language change to take effect.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label10.Name\" xml:space=\"preserve\">\r\n    <value>label10</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label10.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label10.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxLanguage</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label10.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"directorySelectBoxBackup.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"directorySelectBoxBackup.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 94</value>\r\n  </data>\r\n  <data name=\"directorySelectBoxBackup.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"directorySelectBoxBackup.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>116667, 25</value>\r\n  </data>\r\n  <data name=\"directorySelectBoxBackup.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>12, 25</value>\r\n  </data>\r\n  <data name=\"directorySelectBoxBackup.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>23, 0, 6, 0</value>\r\n  </data>\r\n  <data name=\"directorySelectBoxBackup.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>397, 25</value>\r\n  </data>\r\n  <data name=\"directorySelectBoxBackup.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;directorySelectBoxBackup.Name\" xml:space=\"preserve\">\r\n    <value>directorySelectBoxBackup</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;directorySelectBoxBackup.Type\" xml:space=\"preserve\">\r\n    <value>Klocman.Controls.DirectorySelectBox, KlocTools, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;directorySelectBoxBackup.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxBackup</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;directorySelectBoxBackup.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel9.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel9.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>131, 19</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>Always ask to create</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;radioButtonBackupAsk.Name\" xml:space=\"preserve\">\r\n    <value>radioButtonBackupAsk</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;radioButtonBackupAsk.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;radioButtonBackupAsk.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;radioButtonBackupAsk.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 28</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>125, 19</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>Never ask to create</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;radioButtonBackupNever.Name\" xml:space=\"preserve\">\r\n    <value>radioButtonBackupNever</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;radioButtonBackupNever.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;radioButtonBackupNever.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;radioButtonBackupNever.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 53</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>200, 19</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>Create automatically in directory:</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;radioButtonBackupAuto.Name\" xml:space=\"preserve\">\r\n    <value>radioButtonBackupAuto</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;radioButtonBackupAuto.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;radioButtonBackupAuto.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;radioButtonBackupAuto.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel9.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel9.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 19</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel9.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel9.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>397, 75</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel9.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel9.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel9.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel9.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxBackup</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel9.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 150</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 8</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>405, 127</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>Backup before leftover removal</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxBackup.Name\" xml:space=\"preserve\">\r\n    <value>groupBoxBackup</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxBackup.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxBackup.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxMessages</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxBackup.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>230, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Always show junk with low confidence</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShowAllBadJunk.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxShowAllBadJunk</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShowAllBadJunk.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShowAllBadJunk.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxShowAllBadJunk.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 28</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>284, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Ask to remove loud uninstallers from a quiet task</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxLoud.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxLoud</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxLoud.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxLoud.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxLoud.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 53</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>186, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Never ask for feedback or help</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxNeverFeedback.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxNeverFeedback</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxNeverFeedback.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxNeverFeedback.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxNeverFeedback.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 73</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>2, 0, 2, 2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>405, 77</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.WrapContents\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxMessages</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"comboBoxJunk.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"comboBoxJunk.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>318, 0</value>\r\n  </data>\r\n  <data name=\"comboBoxJunk.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"comboBoxJunk.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>81, 23</value>\r\n  </data>\r\n  <data name=\"comboBoxJunk.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxJunk.Name\" xml:space=\"preserve\">\r\n    <value>comboBoxJunk</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxJunk.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxJunk.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxJunk.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"label1.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 0</value>\r\n  </data>\r\n  <data name=\"label1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 3, 0, 0</value>\r\n  </data>\r\n  <data name=\"label1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>178, 18</value>\r\n  </data>\r\n  <data name=\"label1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Search for junk after uninstalling</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Name\" xml:space=\"preserve\">\r\n    <value>label1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 46</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>117, 27</value>\r\n  </data>\r\n  <data name=\"panel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>6, 0, 6, 0</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>405, 27</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxMessages</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"panel2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"comboBoxRestore.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"comboBoxRestore.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>318, 0</value>\r\n  </data>\r\n  <data name=\"comboBoxRestore.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"comboBoxRestore.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>81, 23</value>\r\n  </data>\r\n  <data name=\"comboBoxRestore.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxRestore.Name\" xml:space=\"preserve\">\r\n    <value>comboBoxRestore</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxRestore.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxRestore.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxRestore.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"label2.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>6, 0</value>\r\n  </data>\r\n  <data name=\"label2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 3, 0, 0</value>\r\n  </data>\r\n  <data name=\"label2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 18</value>\r\n  </data>\r\n  <data name=\"label2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Create restore point before uninstalling</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Name\" xml:space=\"preserve\">\r\n    <value>label2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 19</value>\r\n  </data>\r\n  <data name=\"panel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel2.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>117, 27</value>\r\n  </data>\r\n  <data name=\"panel2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>6, 0, 6, 0</value>\r\n  </data>\r\n  <data name=\"panel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>405, 27</value>\r\n  </data>\r\n  <data name=\"panel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Name\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxMessages</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 94</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>413, 280</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Message boxes</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxMessages.Name\" xml:space=\"preserve\">\r\n    <value>groupBoxMessages</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxMessages.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxMessages.Parent\" xml:space=\"preserve\">\r\n    <value>tabPageInterface</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxMessages.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 121</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>2, 0, 0, 5</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>416, 24</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Enable execution of external applications</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxEnableExternal.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxEnableExternal</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxEnableExternal.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxEnableExternal.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxExternal</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxEnableExternal.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label7.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label7.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label7.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label7.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"label7.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"label7.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 9</value>\r\n  </data>\r\n  <data name=\"label7.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>411, 99</value>\r\n  </data>\r\n  <data name=\"label7.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>You can specify commands that will run before and after uninstallation. One line equals to one command and will be executed as if you used the \"Run...\" dialog. \r\n\r\nBCU will wait until the currently running command completes before executing the next one.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label7.Name\" xml:space=\"preserve\">\r\n    <value>label7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label7.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label7.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label7.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 22</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>416, 99</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxExternal</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 6, 7, 7</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>430, 427</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>External applications</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxExternal.Name\" xml:space=\"preserve\">\r\n    <value>groupBoxExternal</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxExternal.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxExternal.Parent\" xml:space=\"preserve\">\r\n    <value>tabPageExternal</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxExternal.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"button2.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Bottom, Right</value>\r\n  </data>\r\n  <data name=\"button2.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"button2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>349, 12</value>\r\n  </data>\r\n  <data name=\"button2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"button2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 27</value>\r\n  </data>\r\n  <data name=\"button2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Close</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button2.Name\" xml:space=\"preserve\">\r\n    <value>button2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button2.Parent\" xml:space=\"preserve\">\r\n    <value>panel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button2.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar1.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>198, 196</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>430, 407</value>\r\n  </data>\r\n  <data name=\"propertiesSidebar1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesSidebar1.Name\" xml:space=\"preserve\">\r\n    <value>propertiesSidebar1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesSidebar1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Controls.PropertiesSidebar, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesSidebar1.Parent\" xml:space=\"preserve\">\r\n    <value>tabPageGeneral</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesSidebar1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 44</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>438, 413</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>General</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageGeneral.Name\" xml:space=\"preserve\">\r\n    <value>tabPageGeneral</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageGeneral.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageGeneral.Parent\" xml:space=\"preserve\">\r\n    <value>tabControl</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageGeneral.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.AutoScroll\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 8</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>413, 91</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>Language</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxLanguage.Name\" xml:space=\"preserve\">\r\n    <value>groupBoxLanguage</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxLanguage.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxLanguage.Parent\" xml:space=\"preserve\">\r\n    <value>tabPageInterface</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxLanguage.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 24</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>438, 433</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>Interface</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageInterface.Name\" xml:space=\"preserve\">\r\n    <value>tabPageInterface</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageInterface.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageInterface.Parent\" xml:space=\"preserve\">\r\n    <value>tabControl</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageInterface.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.AutoScroll\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>430, 427</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallationSettings1.Name\" xml:space=\"preserve\">\r\n    <value>uninstallationSettings1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallationSettings1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Controls.UninstallationSettings, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallationSettings1.Parent\" xml:space=\"preserve\">\r\n    <value>tabPageUninstallation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallationSettings1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 24</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>438, 433</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>Uninstallation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageUninstallation.Name\" xml:space=\"preserve\">\r\n    <value>tabPageUninstallation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageUninstallation.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageUninstallation.Parent\" xml:space=\"preserve\">\r\n    <value>tabControl</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageUninstallation.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.AutoScroll\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 8.25pt, style=Italic</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 206</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>420, 0</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>18, 0, 0, 7</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>411, 33</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>Detection of Windows Updates uses WUA, which is slow. It can take a couple of minutes to complete.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWinUpdateInfo.Name\" xml:space=\"preserve\">\r\n    <value>labelWinUpdateInfo</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWinUpdateInfo.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWinUpdateInfo.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxAppStores</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWinUpdateInfo.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 184</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>422, 22</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanWinUpdates.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxScanWinUpdates</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanWinUpdates.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanWinUpdates.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxAppStores</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanWinUpdates.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 8.25pt, style=Italic</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 151</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>420, 0</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>18, 0, 0, 7</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>410, 33</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>Detection of Windows Features uses WMI, and can be slow or even fail on some systems (usually indicating system corruption).</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWinFeatureInfo.Name\" xml:space=\"preserve\">\r\n    <value>labelWinFeatureInfo</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWinFeatureInfo.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWinFeatureInfo.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxAppStores</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWinFeatureInfo.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 129</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>422, 22</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Windows Features</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanWinFeatures.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxScanWinFeatures</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanWinFeatures.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanWinFeatures.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxAppStores</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanWinFeatures.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 107</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>422, 22</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Windows Store Apps</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanStoreApps.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxScanStoreApps</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanStoreApps.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanStoreApps.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxAppStores</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanStoreApps.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 85</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>422, 22</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanSteam.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxScanSteam</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanSteam.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanSteam.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxAppStores</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanSteam.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 63</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>422, 22</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\r\n    <value>Scoop</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScoop.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxScoop</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScoop.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScoop.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxAppStores</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScoop.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 41</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>422, 22</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxOculus.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxOculus</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxOculus.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxOculus.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxAppStores</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxOculus.ZOrder\" xml:space=\"preserve\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>422, 22</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxChoco.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxChoco</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxChoco.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxChoco.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxAppStores</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxChoco.ZOrder\" xml:space=\"preserve\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 100</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>430, 242</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Application stores to scan</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxAppStores.Name\" xml:space=\"preserve\">\r\n    <value>groupBoxAppStores</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxAppStores.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxAppStores.Parent\" xml:space=\"preserve\">\r\n    <value>tabPageDetection</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxAppStores.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"groupBox1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel7.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel7.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>246, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Registry (recommended to leave enabled)</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanRegistry.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxScanRegistry</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanRegistry.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanRegistry.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanRegistry.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 28</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>204, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Drives (detects unregistered apps)</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanDrives.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxScanDrives</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanDrives.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanDrives.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxScanDrives.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 53</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>167, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Based on pre-defined rules</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxPreDefined.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxPreDefined</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxPreDefined.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxPreDefined.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxPreDefined.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel7.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel7.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 19</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel7.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel7.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>422, 75</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel7.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel7.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel7.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel7.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel7.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>430, 97</value>\r\n  </data>\r\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Search for applications in...</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\r\n    <value>tabPageDetection</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 24</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>438, 433</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Detection</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageDetection.Name\" xml:space=\"preserve\">\r\n    <value>tabPageDetection</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageDetection.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageDetection.Parent\" xml:space=\"preserve\">\r\n    <value>tabControl</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageDetection.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 24</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>438, 433</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>External tools</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageExternal.Name\" xml:space=\"preserve\">\r\n    <value>tabPageExternal</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageExternal.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageExternal.Parent\" xml:space=\"preserve\">\r\n    <value>tabControl</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageExternal.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"textBoxProgramFolders.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"textBoxProgramFolders.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 227</value>\r\n  </data>\r\n  <data name=\"textBoxProgramFolders.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"textBoxProgramFolders.Multiline\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"textBoxProgramFolders.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>416, 193</value>\r\n  </data>\r\n  <data name=\"textBoxProgramFolders.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxProgramFolders.Name\" xml:space=\"preserve\">\r\n    <value>textBoxProgramFolders</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxProgramFolders.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxProgramFolders.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxProgramFolders</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxProgramFolders.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 202</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>18, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>416, 25</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\r\n    <value>Scan removable drives</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRemovable.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxRemovable</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRemovable.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRemovable.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxProgramFolders</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRemovable.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 177</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>416, 25</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>Try to detect custom installation folders automatically</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoInstallFolderDetect.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxAutoInstallFolderDetect</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoInstallFolderDetect.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoInstallFolderDetect.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxProgramFolders</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxAutoInstallFolderDetect.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 22</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>420, 0</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 5</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>420, 155</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>You can specify custom folders you install your applications into (e.g. D:\\Applications). Those folders will be used by BCU to search for uninstallation leftovers, unregistered applications and a few other things. While it is not necessary, a list of these folders will let BCU work better.\r\n\r\nThe default Windows folders are always scanned, you do not need to include them in this list.\r\n\r\nUse full directory paths, one path per line. Invalid paths and non-existing directories will be ignored.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelProgramFolders.Name\" xml:space=\"preserve\">\r\n    <value>labelProgramFolders</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelProgramFolders.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelProgramFolders.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxProgramFolders</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelProgramFolders.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 6, 7, 7</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>430, 427</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Program installation folders</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxProgramFolders.Name\" xml:space=\"preserve\">\r\n    <value>groupBoxProgramFolders</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxProgramFolders.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxProgramFolders.Parent\" xml:space=\"preserve\">\r\n    <value>tabPageFolders</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxProgramFolders.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 24</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>438, 433</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Folders</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageFolders.Name\" xml:space=\"preserve\">\r\n    <value>tabPageFolders</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageFolders.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageFolders.Parent\" xml:space=\"preserve\">\r\n    <value>tabControl</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageFolders.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"cacheSettings1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"cacheSettings1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"cacheSettings1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"cacheSettings1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 145</value>\r\n  </data>\r\n  <data name=\"cacheSettings1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"cacheSettings1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>430, 211</value>\r\n  </data>\r\n  <data name=\"cacheSettings1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;cacheSettings1.Name\" xml:space=\"preserve\">\r\n    <value>cacheSettings1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;cacheSettings1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Controls.Settings.CacheSettings, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;cacheSettings1.Parent\" xml:space=\"preserve\">\r\n    <value>tabPageMisc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;cacheSettings1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"groupBox2.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>3, 18</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>3, 2, 3, 2</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>424, 25</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 100</value>\r\n  </data>\r\n  <data name=\"groupBox2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>3, 2, 3, 2</value>\r\n  </data>\r\n  <data name=\"groupBox2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>3, 2, 3, 2</value>\r\n  </data>\r\n  <data name=\"groupBox2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>430, 45</value>\r\n  </data>\r\n  <data name=\"groupBox2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\r\n    <value>Startup</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Name\" xml:space=\"preserve\">\r\n    <value>groupBox2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.Parent\" xml:space=\"preserve\">\r\n    <value>tabPageMisc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"groupBox3.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel10.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel10.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel10.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel10.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel10.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 19</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel10.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel10.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>422, 75</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel10.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel10.WrapContents\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel10.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel10</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel10.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel10.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel10.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"groupBox3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>430, 97</value>\r\n  </data>\r\n  <data name=\"groupBox3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Network</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox3.Name\" xml:space=\"preserve\">\r\n    <value>groupBox3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox3.Parent\" xml:space=\"preserve\">\r\n    <value>tabPageMisc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox3.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 44</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>438, 413</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Miscellaneous</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageMisc.Name\" xml:space=\"preserve\">\r\n    <value>tabPageMisc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageMisc.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageMisc.Parent\" xml:space=\"preserve\">\r\n    <value>tabControl</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPageMisc.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"tabControl.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"tabControl.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 7</value>\r\n  </data>\r\n  <data name=\"tabControl.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabControl.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>446, 461</value>\r\n  </data>\r\n  <data name=\"tabControl.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabControl.Name\" xml:space=\"preserve\">\r\n    <value>tabControl</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabControl.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabControl.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabControl.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"panel4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 468</value>\r\n  </data>\r\n  <data name=\"panel4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>446, 46</value>\r\n  </data>\r\n  <data name=\"panel4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Name\" xml:space=\"preserve\">\r\n    <value>panel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>460, 521</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 7</value>\r\n  </data>\r\n  <data name=\"$this.StartPosition\" type=\"System.Windows.Forms.FormStartPosition, System.Windows.Forms\">\r\n    <value>CenterParent</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bulk Crap Uninstaller Settings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;usageTracker1.Name\" xml:space=\"preserve\">\r\n    <value>usageTracker1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;usageTracker1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Functions.Tracking.UsageTracker, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>SettingsWindow</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Командная строка до деинсталляции</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Командная строка после деинсталляции</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Автозагрузка списка деинсталляции \"Default.bcul\" при запуске</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Поиск обновлений при запуске</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Отправлять анонимную статистику</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Включить пользовательский рейтинг приложений</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Язык приложения:</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>Приложение надо перезапустить, чтобы изменения языка вступили в силу.</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Разное</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Запрос отключения громких деинсталляторов из тихих задач</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Искать мусор после деинсталляции</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Создать точку восстановления перед удалением</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Окна сообщений</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Включить выполнение внешних приложений</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Можно указать команды, которые будут выполняться до и после удаления. Одна линия равна одной команде и будет выполняться, как через диалог «Выполнить...». \r\n\r\nBCU будет ждать завершения одной команды для начала выполнения следующей.</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>Внешние приложения</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Закрыть</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>Общие</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>Внешние инструменты</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Можно задать пользовательские папки установки приложений (например, D:\\Applications). Эти папки будут использоваться BCU для поиска и удаления остатков незарегистрированных приложений и некоторых других вещей. Хотя это необязательно, со списком таких папок BCU будет работать лучше.\r\n\r\nПо умолчанию папки Windows всегда проверяются, Вам не нужно включать их в этот список.\r\n\r\nИспользуйте полный путь каталога, один путь на строку. Недопустимые пути и несуществующие каталоги будут игнорироваться.</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Папки установки программ</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Папки</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Прочее</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Настройки Bulk Crap Uninstaller</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Всегда показывать мусорные с низким рейтингом</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Никогда не просить отзыв или помощь</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Реестр (рекомендуется оставить включенным)</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Диски (обнаружение незарегистрированных приложений)</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Основываясь на предопределённых правилах</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Поиск приложений в...</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Места с приложениями для сканирования</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Обнаружение</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Приложения Windows Store</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Функции Windows</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>Обнаружение функций Windows использует WMI и может быть медленным или даже неработоспособным в некоторых системах (обычно это указывает на повреждение системы).</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Обновления Windows</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>Обнаружение обновлений Windows использует WUA, что происходит медленно. Это может занять пару минут.</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>Попытатся автоопределить папки с приложениями</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>Всегда спрашивать о создании</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>Никогда не спрашивать о создании</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>Создавать автоматически в каталоге:</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>Резервное копирование перед удалением остатков</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>Язык</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>Интерфейс</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>Деинсталляция</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Сеть</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\r\n    <value>Сканировать извлекаемые носители</value>\r\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\r\n  </data>\r\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\r\n    <value>Scoop (консольный установщик)</value>\r\n  </data>\r\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\r\n    <value>Режим цветовой слепоты (для дальтоников)</value>\r\n    <comment>Switches colors to be better for color-blind people</comment>\r\n  </data>\r\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\r\n    <value>масштабирование интерфейса с учётом DPI</value>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Ukazna vrstica pred začetkom odstranjevanja</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Ukazna vrstica po koncu odstranjevanja</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\r\n    <value>Ob zagonu, samodejno naloži seznam odstranjevanja \"Default.bcul\"</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Ob zagonu, pošči posodobitve</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Pošlji anonimno statistiko uporabe</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Jezik aplikacije:</value>\r\n  </data>\r\n  <data name=\"label10.Text\" xml:space=\"preserve\">\r\n    <value>Za spremembo jezika morate ponovno zagnati aplikacijo.</value>\r\n  </data>\r\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\r\n    <value>Razno</value>\r\n  </data>\r\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\r\n    <value>Vprašaj za odstranjevanje glasnih odstranjevalcev iz tihega opravila</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Po odstranjevanju poišči neuporabne datoteke</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Pred odstranjevanjem ustvari obnovitveno točko</value>\r\n  </data>\r\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\r\n    <value>Sporočilna okna</value>\r\n  </data>\r\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\r\n    <value>Omogoči izvajanje zunanjih aplikacij</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Lahko določite ukaze, ki bodo zagnani pred, ali po odstranjevanju. Ena vrstica je enaka enemu ukazu in bo izvedena kot, če bi uporabili pogovorno okno \"Zaženi...\". \r\n\r\nBCU bo počakal, da se trenutno delujoč ukaz konča preden izvede naslednjega.</value>\r\n  </data>\r\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\r\n    <value>Zunanje aplikacije</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Zapri</value>\r\n  </data>\r\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\r\n    <value>Splošno</value>\r\n  </data>\r\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\r\n    <value>Zunanja orodja</value>\r\n  </data>\r\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Lahko določite mape po meri, kamor boste namestili vaše aplikacije (npr. D:\\Aplikacije). Te mape bo BCU uporabil za iskanje ostankov odstranjevanja, neregistriranih aplikacij in še nekaj drugih stvari. Čeprav to ni potrebno, bo seznam teh datotek omogočil boljše delo BCU.\r\n\r\nPrivzete se Windows mape  vedno pregledujejo. Ni jih potrebno vključiti na seznam.\r\n\r\nUporabite polne poti imenikov, eno pot na vrstico. Neveljavne poti in neobstoječi imeniki bodo prezrti.</value>\r\n  </data>\r\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\r\n    <value>Mape namestitve programa</value>\r\n  </data>\r\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\r\n    <value>Mape</value>\r\n  </data>\r\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\r\n    <value>Razno</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Nastavitve BCUninstallerja</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Omogoči uporabnikove ocene aplikacij</value>\r\n  </data>\r\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\r\n    <value>Vedno pokaži smeti z nizko oceno</value>\r\n  </data>\r\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\r\n    <value>Nikoli ne prosi za pomoč</value>\r\n  </data>\r\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\r\n    <value>Register (priporočeno, da pustite omogočeno)</value>\r\n  </data>\r\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\r\n    <value>Pogoni (zaznava neregistrirane aplikacije)</value>\r\n  </data>\r\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\r\n    <value>Temelji na pred določnih pravilih</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Poišči aplikacije v...</value>\r\n  </data>\r\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\r\n    <value>Shranjena aplikacija za pregled</value>\r\n  </data>\r\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\r\n    <value>Odkrivanje</value>\r\n  </data>\r\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\r\n    <value>Windows Store aplikacije</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\r\n    <value>Lastnosti sistema Windows</value>\r\n  </data>\r\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\r\n    <value>Odkrivanje funkcij Windows uporablja WMI in je lahko v nekaterih sistemih počasno ali celo neuspešno (ponavadi kaže na okvaro sistema).</value>\r\n  </data>\r\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\r\n    <value>Posodobitev Windows</value>\r\n  </data>\r\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\r\n    <value>Odkrivanje posodobitev Windows uporablja WUA, kar je počasno. Za dokončanje lahko vzame nekaj minut časa,</value>\r\n  </data>\r\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\r\n    <value>Poskusi samodejno odkriti namestitvene mape po meri</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\r\n    <value>Vedno vprašaj za ustvarjanje</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\r\n    <value>Nikoli ne vprašaj za ustvarjanje</value>\r\n  </data>\r\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\r\n    <value>Samodejno ustvari v imeniku:</value>\r\n  </data>\r\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\r\n    <value>Varnostno kopiraj pred odstranjevanjem ostankov</value>\r\n  </data>\r\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\r\n    <value>Jezik</value>\r\n  </data>\r\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\r\n    <value>Vmesnik</value>\r\n  </data>\r\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\r\n    <value>Odstranjevanje</value>\r\n  </data>\r\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\r\n    <value>Omrežje</value>\r\n  </data>\r\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\r\n    <value>Oculus Store</value>\r\n  </data>\r\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\r\n    <value>Preišči odstranljive diske</value>\r\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>Kommando innan avinstallationen startar</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>Kommando efter avinstallationen avslutas</value>\n  </data>\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\n    <value>Färgblind läge</value>\n    <comment>Switches colors to be better for color-blind people</comment>\n  </data>\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\n    <value>Aktivera DPI-anpassning för gränssnittsskalning</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Dubbelklicka i applistan</value>\n  </data>\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\n    <value>Övrigt</value>\n  </data>\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\n    <value>Automatisk laddning av avinstallationslista med namnet \"Default.bcul\" vid start</value>\n  </data>\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\n    <value>Aktivera användarbedömningar av appar</value>\n  </data>\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\n    <value>Sök efter uppdateringar vid start</value>\n  </data>\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\n    <value>Skicka anonym användningsstatistik</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>Appspråk:</value>\n  </data>\n  <data name=\"label10.Text\" xml:space=\"preserve\">\n    <value>Appen måste startas om för att språkändringen ska träda i kraft</value>\n  </data>\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\n    <value>Fråga alltid om att skapa</value>\n  </data>\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\n    <value>Fråga aldrig om att skapa</value>\n  </data>\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\n    <value>Skapa automatiskt i mapp:</value>\n  </data>\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\n    <value>Säkerhetskopiera innan borttagning av rester</value>\n  </data>\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\n    <value>Visa alltid skräp med låg tillförlitlighet</value>\n  </data>\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\n    <value>Fråga om att ta bort synliga avinstallationsprogram från en tyst uppgift</value>\n  </data>\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\n    <value>Fråga aldrig efter feedback eller hjälp</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Sök upp skräp efter avinstallation</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Skapa återställningspunkt innan avinstallation</value>\n  </data>\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\n    <value>Dialogrutor</value>\n  </data>\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\n    <value>Aktivera körning av externa appar</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>Du kan ange kommandon som ska köras före och efter avinstallationen. En rad motsvarar ett kommando och kommer att köras som om du använde dialogrutan \"Kör...\".\n\nBCU kommer att vänta tills det aktuella kommandot är klart innan det kör nästa.</value>\n  </data>\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\n    <value>Externa appar</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>&amp;Stäng</value>\n  </data>\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\n    <value>Allmänt</value>\n  </data>\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\n    <value>Språk</value>\n  </data>\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\n    <value>Gränssnitt</value>\n  </data>\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\n    <value>Avinstallation</value>\n  </data>\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\n    <value>Upptäckt av Windows-uppdateringar använder WUA, vilket är långsamt. Det kan ta några minuter att slutföra.</value>\n  </data>\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\n    <value>Windows Update</value>\n  </data>\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\n    <value>Upptäckt av Windows-funktioner använder WMI och kan vara långsam eller till och med misslyckas på vissa system (vilket vanligtvis indikerar systemkorruption).</value>\n  </data>\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\n    <value>Windows Funktioner</value>\n  </data>\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\n    <value>Windows Store Appar</value>\n  </data>\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\n    <value>Steam</value>\n  </data>\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\n    <value>Scoop</value>\n  </data>\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\n    <value>Oculus Store</value>\n  </data>\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\n    <value>Chocolatey</value>\n  </data>\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\n    <value>Applikationsbutiker att skanna</value>\n  </data>\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\n    <value>Register (rekommenderas att lämna aktiverat)</value>\n  </data>\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\n    <value>Enheter (upptäcker oregistrerade appar)</value>\n  </data>\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\n    <value>Baserat på fördefinierade regler</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Sök efter appar i...</value>\n  </data>\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\n    <value>Upptäckt</value>\n  </data>\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\n    <value>Externa verktyg</value>\n  </data>\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\n    <value>Skanna flyttbara enheter</value>\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\n  </data>\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\n    <value>Försök att automatiskt upptäcka anpassade installationsmappar</value>\n  </data>\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\n    <value>Du kan ange anpassade mappar där du installerar dina appar (t.ex. D:\\Program). Dessa mappar kommer att användas av BCU för att söka upp rester efter avinstallation, oregistrerade appar och några andra saker. Även om det inte är nödvändigt, kommer en lista över dessa mappar, göra att BCU fungerar bättre.\n\nStandard-Windows-mapparna skannas alltid, du behöver inte inkludera dem i denna lista.\n\nAnvänd fullständiga sökvägar, en sökväg per rad. Ogiltiga sökvägar och icke-existerande mappar kommer att ignoreras.</value>\n  </data>\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\n    <value>Programinstallationsmappar</value>\n  </data>\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\n    <value>Mappar</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Uppstart</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>Nätverk</value>\n  </data>\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\n    <value>Övrigt</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bulk Crap Uninstaller Inställningar</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>Kaldırma işleminden önce komut satırı</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>Kaldırma sona erdikten sonra komut satırı</value>\n  </data>\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\n    <value>Başlangıçta \"Default.bcul\" adlı Kaldırma Listesini otomatik olarak yükle</value>\n  </data>\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\n    <value>Renk körü modu</value>\n    <comment>Switches colors to be better for color-blind people</comment>\n  </data>\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\n    <value>Çeşitli</value>\n  </data>\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\n    <value>Uygulamaların kullanıcı derecelendirmelerini etkinleştir</value>\n  </data>\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\n    <value>Başlangıçta güncellemeleri denetle</value>\n  </data>\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\n    <value>Anonim kullanım istatistikleri gönder</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>Uygulama dili:</value>\n  </data>\n  <data name=\"label10.Text\" xml:space=\"preserve\">\n    <value>Dil değişikliğinin etkili olması için uygulamanın yeniden başlatılması gerekir.</value>\n  </data>\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\n    <value>Mesaj kutusu</value>\n  </data>\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\n    <value>Arta kalan kaldırma işleminden önce yedekleme</value>\n  </data>\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\n    <value>Oluşturmak için her zaman sor</value>\n  </data>\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\n    <value>Oluşturmak için asla sorma</value>\n  </data>\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\n    <value>Dizinde otomatik olarak oluştur:</value>\n  </data>\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\n    <value>Önemsiz olanları her zaman düşük güvenli olarak göster</value>\n  </data>\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\n    <value>Kaldırmak için sessiz modu veya normal modu seçin</value>\n  </data>\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\n    <value>Geribildirim veya yardım için asla sorma</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Kaldırdıktan sonra kalıntıları tara</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Kaldırmadan önce geri yükleme noktası oluştur</value>\n  </data>\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\n    <value>Harici uygulamalar</value>\n  </data>\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\n    <value>Harici uygulamaların yürütülmesini etkinleştir</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>Kaldırma işleminden önce ve sonra çalışacak komutları belirtebilirsiniz. Bir satır bir komuta eşittir ve \"Çalıştır ...\" iletişim kutusunu kullanmış gibi yürütülür.\n\nBCU, o sırada çalışan komutun bir sonraki çalıştırılmadan önce tamamlanmasını bekleyecektir.</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>&amp;Kapat</value>\n  </data>\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\n    <value>Genel</value>\n  </data>\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\n    <value>Arabirim</value>\n  </data>\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\n    <value>Kaldırma</value>\n  </data>\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\n    <value>Tespit</value>\n  </data>\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\n    <value>Harici araçlar</value>\n  </data>\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\n    <value>Klasörler</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>Ağ</value>\n  </data>\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\n    <value>Çeşitli</value>\n  </data>\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\n    <value>Dil</value>\n  </data>\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\n    <value>Tarama için uygulama depoları</value>\n  </data>\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\n    <value>Windows Güncellemelerinin Saptanması, yavaş olan WUA kullanır. Tamamlanması birkaç dakika sürebilir.</value>\n  </data>\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\n    <value>Windows güncelleme</value>\n  </data>\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\n    <value>Windows Özelliklerinin Algılanması WMI'yi kullanır ve bazı sistemlerde yavaş ve hatta başarısız olabilir (genellikle sistem bozulmasını gösterir).</value>\n  </data>\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\n    <value>Pencere özellikleri</value>\n  </data>\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\n    <value>Windows Mağazası Uygulamaları</value>\n  </data>\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\n    <value>Akış</value>\n  </data>\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\n    <value>Oculus Mağazası</value>\n  </data>\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\n    <value>Chocolatey</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Uygulamalarda ara ...</value>\n  </data>\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\n    <value>Kayıt defteri (izinli kalması önerilir)</value>\n  </data>\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\n    <value>Sürücüler (kayıtsız uygulamaları algılar)</value>\n  </data>\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\n    <value>Önceden belirlenmiş kurallara göre</value>\n  </data>\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\n    <value>Program yükleme klasörleri</value>\n  </data>\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\n    <value>Çıkarılabilir sürücüleri tara</value>\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\n  </data>\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\n    <value>Özel yükleme klasörlerini otomatik olarak algılamaya çalışın</value>\n  </data>\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\n    <value>Uygulamalarınızı yüklediğiniz özel klasörleri belirtebilirsiniz (ör. D: \\ Uygulamalar). Bu klasörler BCU tarafından kaldırım artıkları, kayıt dışı uygulamalar ve birkaç başka şey aramak için kullanılacaktır. Gerekli olmasa da, bu klasörlerin bir listesi BCU'nun daha iyi çalışmasına izin verecektir.</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Toplu Düzeltme Kaldırıcı Ayarları</value>\n  </data>\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\n    <value>DPI farkındalı arayüz ölçeklendirmeyi etkinleştirin</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Uygulama listesinde çift tıklama</value>\n  </data>\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\n    <value>Kazıma</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Başlangıç</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>Câu lệnh trước khi bắt đầu gỡ cài đặt</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>Câu lệnh sau khi gỡ cài đặt kết thúc</value>\n  </data>\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\n    <value>Chế độ mù màu</value>\n    <comment>Switches colors to be better for color-blind people</comment>\n  </data>\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\n    <value>Bật tính năng tỷ lệ giao diện hỗ trợ DPI</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Nhấp đúp vào danh sách ứng dụng</value>\n  </data>\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\n    <value>Lặt vặt</value>\n  </data>\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\n    <value>Tự động nạp danh sách bộ lọc gỡ cài đặt có tên \"Default.bcul\" khi khởi động</value>\n  </data>\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\n    <value>Hiển thị xếp hạng người dùng cho ứng dụng</value>\n  </data>\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\n    <value>Kiểm tra các bản cập nhật khi khởi động</value>\n  </data>\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\n    <value>Gửi số liệu thống kê sử dụng ẩn danh</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>Ngôn ngữ ứng dụng:</value>\n  </data>\n  <data name=\"label10.Text\" xml:space=\"preserve\">\n    <value>Ứng dụng phải được khởi động lại để thay đổi ngôn ngữ có hiệu lực.</value>\n  </data>\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\n    <value>Luôn yêu cầu tạo</value>\n  </data>\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\n    <value>Không bao giờ yêu cầu tạo</value>\n  </data>\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\n    <value>Tự động tạo trong thư mục:</value>\n  </data>\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\n    <value>Sao lưu trước khi xóa phần còn sót lại</value>\n  </data>\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\n    <value>Luôn hiển thị nội dung rác với độ tin cậy thấp</value>\n  </data>\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\n    <value>Yêu cầu xóa trình gỡ cài đặt gốc khỏi tác vụ âm thầm</value>\n  </data>\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\n    <value>Không bao giờ yêu cầu phản hồi hoặc trợ giúp</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Tìm kiếm rác sau khi gỡ cài đặt</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Tạo điểm khôi phục trước khi gỡ cài đặt</value>\n  </data>\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\n    <value>Hộp tin nhắn</value>\n  </data>\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\n    <value>Cho phép thực thi các ứng dụng bên ngoài</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>Bạn có thể chỉ định các câu lệnh sẽ thực thi trước và sau khi gỡ cài đặt. Mỗi dòng tương ứng với một lệnh và được thực thi như thể sử dụng hộp thoại \"Khởi chạy...\".\n\nBCU sẽ đợi cho đến khi lệnh hiện đang thực thi hoàn tất trước khi thực thi lệnh tiếp theo.</value>\n  </data>\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\n    <value>Ứng dụng bên ngoài</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>Đó&amp;ng</value>\n  </data>\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\n    <value>Chung</value>\n  </data>\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\n    <value>Ngôn ngữ</value>\n  </data>\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\n    <value>Giao diện</value>\n  </data>\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt</value>\n  </data>\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\n    <value>Phát hiện Windows Updates sử dụng WUA, vốn khá chậm. Quá trình này có thể mất vài phút để hoàn tất.</value>\n  </data>\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\n    <value>Windows Update</value>\n  </data>\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\n    <value>Phát hiện Windows Features sử dụng WMI và trên một số hệ thống quá trình này có thể chậm hoặc thậm chí thất bại (thường là dấu hiệu cho thấy hệ thống bị lỗi).</value>\n  </data>\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\n    <value>Windows Features</value>\n  </data>\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\n    <value>Windows Store App</value>\n  </data>\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\n    <value>Steam</value>\n  </data>\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\n    <value>Scoop</value>\n  </data>\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\n    <value>Oculus Store</value>\n  </data>\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\n    <value>Chocolatey</value>\n  </data>\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\n    <value>Kho ứng dụng để quét</value>\n  </data>\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\n    <value>Registry (khuyến khích bật)</value>\n  </data>\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\n    <value>Ổ đĩa (phát hiện các ứng dụng chưa đăng ký)</value>\n  </data>\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\n    <value>Dựa trên các quy tắc được xác định trước</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Tìm kiếm ứng dụng trong...</value>\n  </data>\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\n    <value>Phát hiện</value>\n  </data>\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\n    <value>Công cụ bên ngoài</value>\n  </data>\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\n    <value>Quét các ổ đĩa di động</value>\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\n  </data>\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\n    <value>Cố gắng tự động phát hiện các thư mục cài đặt tùy chỉnh</value>\n  </data>\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\n    <value>Bạn có thể thiết lập các thư mục cài đặt ứng dụng tùy chỉnh (ví dụ: D:\\Applications). Những thư mục đó sẽ được BCU sẽ sử dụng các thư mục này để tìm kiếm các tệp sót lại sau khi gỡ cài đặt, các ứng dụng chưa đăng ký và một vài thứ khác. Mặc dù không bắt buộc, nhưng việc cung cấp danh sách các thư mục này sẽ giúp BCU hoạt động hiệu quả hơn.\n\nCác thư mục mặc định của Windows luôn được quét, bạn không cần đưa chúng vào danh sách này.\n\nHãy sử dụng đường dẫn thư mục đầy đủ, một dòng một đường dân. Đường dẫn không hợp lệ và thư mục không tồn tại sẽ bị bỏ qua.</value>\n  </data>\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\n    <value>Thư mục cài đặt ứng dụng</value>\n  </data>\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\n    <value>Thư mục</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>Khởi động cùng hệ thống</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>Mạng</value>\n  </data>\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\n    <value>Lặt vặt</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Cài đặt Bulk Crap Uninstaller</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>卸载程序启动前命令行</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>卸载程序结束后命令行</value>\n  </data>\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\n    <value>启动时自动加载名为\"Default.bcul\"的卸载程序列表</value>\n  </data>\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\n    <value>色盲模式</value>\n    <comment>Switches colors to be better for color-blind people</comment>\n  </data>\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\n    <value>启用DPI感知界面缩放</value>\n  </data>\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\n    <value>杂项</value>\n  </data>\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\n    <value>启用应用程序用户评分</value>\n  </data>\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\n    <value>启动时搜索更新</value>\n  </data>\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\n    <value>发送匿名使用情况统计信息</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>应用程序语言:</value>\n  </data>\n  <data name=\"label10.Text\" xml:space=\"preserve\">\n    <value>必须重新启动应用程序才能使语言更改生效。</value>\n  </data>\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\n    <value>创建时总是询问</value>\n  </data>\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\n    <value>创建时从不询问</value>\n  </data>\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\n    <value>自动在目录中创建:</value>\n  </data>\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\n    <value>删除前备份</value>\n  </data>\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\n    <value>总是显示低置信度垃圾</value>\n  </data>\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\n    <value>从静默任务中删除交互卸载程序时询问</value>\n  </data>\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\n    <value>从不询问反馈或帮助</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>卸载后搜索垃圾</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>卸载前创建还原点</value>\n  </data>\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\n    <value>消息框</value>\n  </data>\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\n    <value>启用外部应用程序的执行</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>你可以指定将在卸载前后运行的命令。一行一个命令，执行时就像使用\"运行...\"对话框一样。\n\nBCU将等待当前运行的命令完成后再执行下一个命令。</value>\n  </data>\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\n    <value>外部应用程序</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\n    <value>常规</value>\n  </data>\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\n    <value>语言</value>\n  </data>\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\n    <value>界面</value>\n  </data>\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\n    <value>卸载</value>\n  </data>\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\n    <value>使用WUA检测Windows更新，速度很慢。可能需要几分钟才能完成。</value>\n  </data>\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\n    <value>Windows更新</value>\n  </data>\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\n    <value>使用WMI检测Windows功能，在某些系统上可能会缓慢甚至失败（通常表示系统损坏）。</value>\n  </data>\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\n    <value>Windows功能</value>\n  </data>\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\n    <value>Windows商店应用</value>\n  </data>\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\n    <value>Steam</value>\n  </data>\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\n    <value>Scoop</value>\n  </data>\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\n    <value>Oculus Store</value>\n  </data>\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\n    <value>Chocolatey</value>\n  </data>\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\n    <value>要扫描的应用程序商店</value>\n  </data>\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\n    <value>注册表(推荐启用)</value>\n  </data>\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\n    <value>驱动器（检测未注册的应用程序）</value>\n  </data>\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\n    <value>基于预定义规则</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>在...中搜索应用程序</value>\n  </data>\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\n    <value>检测</value>\n  </data>\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\n    <value>外部工具</value>\n  </data>\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\n    <value>扫描可删除驱动</value>\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\n  </data>\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\n    <value>尝试自动检测自定义安装文件夹</value>\n  </data>\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\n    <value>你可以指定安装应用程序的自定义文件夹（例如D:\\applications）。BCU将使用这些文件夹来搜索卸载遗留问题、未注册的应用程序和其他一些内容。虽然没有必要，但列出这些文件夹可以让BCU更好地工作。\n\n默认的Windows文件夹总是被扫描的，不需要将它们包含在此列表中。\n\n使用完整的目录路径，每行一个路径。无效路径和不存在的目录将被忽略。</value>\n  </data>\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\n    <value>程序安装文件夹</value>\n  </data>\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\n    <value>文件夹</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>网络</value>\n  </data>\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\n    <value>其他</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bulk Crap Uninstaller设置</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>在应用程序列表双击</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>启动</value>\n  </data>\n</root>\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/SettingsWindow.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>移除安裝啟動前命令列</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>移除安裝啟動後命令列</value>\n  </data>\n  <data name=\"checkBoxColorblind.Text\" xml:space=\"preserve\">\n    <value>身障者模式</value>\n    <comment>Switches colors to be better for color-blind people</comment>\n  </data>\n  <data name=\"checkBoxDpiaware.Text\" xml:space=\"preserve\">\n    <value>啟用DPI感知介面縮放</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>在應用程式清單雙擊</value>\n  </data>\n  <data name=\"groupBoxMisc.Text\" xml:space=\"preserve\">\n    <value>其他項目</value>\n  </data>\n  <data name=\"checkBoxAutoLoad.Text\" xml:space=\"preserve\">\n    <value>啟動時自動載入名為\"Default.bcul\"的移除程式清單</value>\n  </data>\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\n    <value>啟用應用程式使用者評分</value>\n  </data>\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\n    <value>啟動時搜尋更新</value>\n  </data>\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\n    <value>發送匿名使用情況統計資訊</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>應用程式語言：</value>\n  </data>\n  <data name=\"label10.Text\" xml:space=\"preserve\">\n    <value>必須重新啟動應用程式才能使變更語言生效</value>\n  </data>\n  <data name=\"radioButtonBackupAsk.Text\" xml:space=\"preserve\">\n    <value>總是於建立時詢問</value>\n  </data>\n  <data name=\"radioButtonBackupNever.Text\" xml:space=\"preserve\">\n    <value>總不於建立時詢問</value>\n  </data>\n  <data name=\"radioButtonBackupAuto.Text\" xml:space=\"preserve\">\n    <value>自動在目錄中建立：</value>\n  </data>\n  <data name=\"groupBoxBackup.Text\" xml:space=\"preserve\">\n    <value>刪除前備份</value>\n  </data>\n  <data name=\"checkBoxShowAllBadJunk.Text\" xml:space=\"preserve\">\n    <value>總是顯示低信任度</value>\n  </data>\n  <data name=\"checkBoxLoud.Text\" xml:space=\"preserve\">\n    <value>從最小化任務中刪除交互移除程式時詢問</value>\n  </data>\n  <data name=\"checkBoxNeverFeedback.Text\" xml:space=\"preserve\">\n    <value>從不詢問回饋或幫助</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>解除安裝後搜尋垃圾</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>解除安裝前建立還原點</value>\n  </data>\n  <data name=\"groupBoxMessages.Text\" xml:space=\"preserve\">\n    <value>訊息中心</value>\n  </data>\n  <data name=\"checkBoxEnableExternal.Text\" xml:space=\"preserve\">\n    <value>啟用外部應用程式的執行</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>你可以在移除前後執行的指令。一行一個指令，執行時就像使用\"執行...\"視窗一樣。\n\nBCU將等待目前執行的指令完成後再執行下一個指令</value>\n  </data>\n  <data name=\"groupBoxExternal.Text\" xml:space=\"preserve\">\n    <value>外部應用程式</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"tabPageGeneral.Text\" xml:space=\"preserve\">\n    <value>設置</value>\n  </data>\n  <data name=\"groupBoxLanguage.Text\" xml:space=\"preserve\">\n    <value>語言</value>\n  </data>\n  <data name=\"tabPageInterface.Text\" xml:space=\"preserve\">\n    <value>介面</value>\n  </data>\n  <data name=\"tabPageUninstallation.Text\" xml:space=\"preserve\">\n    <value>移除</value>\n  </data>\n  <data name=\"labelWinUpdateInfo.Text\" xml:space=\"preserve\">\n    <value>使用WUA檢測Windows更新，速度較慢。可能需要幾分鐘才能完成。</value>\n  </data>\n  <data name=\"checkBoxScanWinUpdates.Text\" xml:space=\"preserve\">\n    <value>Windows更新</value>\n  </data>\n  <data name=\"labelWinFeatureInfo.Text\" xml:space=\"preserve\">\n    <value>使用WMI檢測Windows功能，在某些系統上可能會緩慢甚至失敗(通常表示系統損壞)。</value>\n  </data>\n  <data name=\"checkBoxScanWinFeatures.Text\" xml:space=\"preserve\">\n    <value>Windows功能</value>\n  </data>\n  <data name=\"checkBoxScanStoreApps.Text\" xml:space=\"preserve\">\n    <value>Windows商店應用程式</value>\n  </data>\n  <data name=\"checkBoxScanSteam.Text\" xml:space=\"preserve\">\n    <value>Steam</value>\n  </data>\n  <data name=\"checkBoxScoop.Text\" xml:space=\"preserve\">\n    <value>Scoop</value>\n  </data>\n  <data name=\"checkBoxOculus.Text\" xml:space=\"preserve\">\n    <value>Oculus Store</value>\n  </data>\n  <data name=\"checkBoxChoco.Text\" xml:space=\"preserve\">\n    <value>Chocolatey</value>\n  </data>\n  <data name=\"groupBoxAppStores.Text\" xml:space=\"preserve\">\n    <value>要掃描的應用程式商店</value>\n  </data>\n  <data name=\"checkBoxScanRegistry.Text\" xml:space=\"preserve\">\n    <value>註冊表(建議啟用)</value>\n  </data>\n  <data name=\"checkBoxScanDrives.Text\" xml:space=\"preserve\">\n    <value>驅動程式(檢測未註冊的應用程式)</value>\n  </data>\n  <data name=\"checkBoxPreDefined.Text\" xml:space=\"preserve\">\n    <value>預先定義規則</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>在...中搜尋應用程式</value>\n  </data>\n  <data name=\"tabPageDetection.Text\" xml:space=\"preserve\">\n    <value>檢測</value>\n  </data>\n  <data name=\"tabPageExternal.Text\" xml:space=\"preserve\">\n    <value>外部工具</value>\n  </data>\n  <data name=\"checkBoxRemovable.Text\" xml:space=\"preserve\">\n    <value>掃描卸除式裝置</value>\n    <comment>Scan pendrives, USB hard drives, SD Cards, etc.</comment>\n  </data>\n  <data name=\"checkBoxAutoInstallFolderDetect.Text\" xml:space=\"preserve\">\n    <value>嘗試自動檢測自訂安裝資料夾</value>\n  </data>\n  <data name=\"labelProgramFolders.Text\" xml:space=\"preserve\">\n    <value>你可以指定安裝應用程式的自訂資料夾(例如\nD:\\applications)。BCU將使用這些資料夾來搜尋移除殘留問題、未註冊的應用程式和其他一些內容。雖然沒有必要，但列出這些資料夾可以讓BCU運作流暢。\n\n默認的Windows資料夾總是被掃瞄的，不需要將它們包含在此列表中。\n\n使用完整的目錄路徑，每行一個路徑。無效路徑和不存在的目錄將被忽略。</value>\n  </data>\n  <data name=\"groupBoxProgramFolders.Text\" xml:space=\"preserve\">\n    <value>程式安裝資料夾</value>\n  </data>\n  <data name=\"tabPageFolders.Text\" xml:space=\"preserve\">\n    <value>資料夾</value>\n  </data>\n  <data name=\"groupBox2.Text\" xml:space=\"preserve\">\n    <value>啟動</value>\n  </data>\n  <data name=\"groupBox3.Text\" xml:space=\"preserve\">\n    <value>網路</value>\n  </data>\n  <data name=\"tabPageMisc.Text\" xml:space=\"preserve\">\n    <value>其他</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bulk Crap Uninstaller設定</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.Designer.cs",
    "content": "﻿using System.ComponentModel;\r\nusing System.Windows.Forms;\r\nusing BrightIdeasSoftware;\r\nusing BulkCrapUninstaller.Functions.Tracking;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class UninstallProgressWindow\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            components = new Container();\r\n            ComponentResourceManager resources = new ComponentResourceManager(typeof(UninstallProgressWindow));\r\n            progressBar1 = new ProgressBar();\r\n            label1 = new Label();\r\n            buttonClose = new Button();\r\n            olvColumnStatus = new OLVColumn();\r\n            olvColumnIsSilent = new OLVColumn();\r\n            olvColumnName = new OLVColumn();\r\n            objectListView1 = new ObjectListView();\r\n            olvColumnId = new OLVColumn();\r\n            contextMenuStrip1 = new ContextMenuStrip(components);\r\n            skipToolStripMenuItem = new ToolStripMenuItem();\r\n            terminateToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator3 = new ToolStripSeparator();\r\n            runNowToolStripMenuItem = new ToolStripMenuItem();\r\n            manualUninstallToolStripMenuItem = new ToolStripMenuItem();\r\n            toolStripSeparator4 = new ToolStripSeparator();\r\n            openInstallDirectoryToolStripMenuItem = new ToolStripMenuItem();\r\n            propertiesToolStripMenuItem = new ToolStripMenuItem();\r\n            label3 = new Label();\r\n            groupBox1 = new GroupBox();\r\n            toolStrip1 = new ToolStrip();\r\n            toolStripButtonRun = new ToolStripButton();\r\n            toolStripButtonSkip = new ToolStripButton();\r\n            toolStripButtonTerminate = new ToolStripButton();\r\n            toolStripButtonManualUninstall = new ToolStripButton();\r\n            toolStripSeparator2 = new ToolStripSeparator();\r\n            toolStripButtonFolderOpen = new ToolStripButton();\r\n            toolStripButtonProperties = new ToolStripButton();\r\n            toolStripSeparator1 = new ToolStripSeparator();\r\n            toolStripButtonSettings = new ToolStripButton();\r\n            toolStripButtonHelp = new ToolStripButton();\r\n            label2 = new Label();\r\n            usageTracker1 = new UsageTracker();\r\n            panel3 = new Panel();\r\n            panel1 = new Panel();\r\n            pictureBox1 = new PictureBox();\r\n            flowLayoutPanel1 = new FlowLayoutPanel();\r\n            forceUpdateTimer = new Timer(components);\r\n            flowLayoutPanel2 = new FlowLayoutPanel();\r\n            checkBoxFinishSleep = new CheckBox();\r\n            sleepTimer = new Timer(components);\r\n            ((ISupportInitialize)objectListView1).BeginInit();\r\n            contextMenuStrip1.SuspendLayout();\r\n            groupBox1.SuspendLayout();\r\n            toolStrip1.SuspendLayout();\r\n            panel3.SuspendLayout();\r\n            panel1.SuspendLayout();\r\n            ((ISupportInitialize)pictureBox1).BeginInit();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            flowLayoutPanel2.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // progressBar1\r\n            // \r\n            resources.ApplyResources(progressBar1, \"progressBar1\");\r\n            progressBar1.Name = \"progressBar1\";\r\n            // \r\n            // label1\r\n            // \r\n            label1.AutoEllipsis = true;\r\n            resources.ApplyResources(label1, \"label1\");\r\n            label1.Name = \"label1\";\r\n            // \r\n            // buttonClose\r\n            // \r\n            resources.ApplyResources(buttonClose, \"buttonClose\");\r\n            buttonClose.DialogResult = DialogResult.Cancel;\r\n            buttonClose.Name = \"buttonClose\";\r\n            buttonClose.UseVisualStyleBackColor = true;\r\n            buttonClose.Click += buttonClose_Click;\r\n            // \r\n            // olvColumnStatus\r\n            // \r\n            resources.ApplyResources(olvColumnStatus, \"olvColumnStatus\");\r\n            // \r\n            // olvColumnIsSilent\r\n            // \r\n            resources.ApplyResources(olvColumnIsSilent, \"olvColumnIsSilent\");\r\n            // \r\n            // olvColumnName\r\n            // \r\n            olvColumnName.FillsFreeSpace = true;\r\n            resources.ApplyResources(olvColumnName, \"olvColumnName\");\r\n            // \r\n            // objectListView1\r\n            // \r\n            objectListView1.AllColumns.Add(olvColumnId);\r\n            objectListView1.AllColumns.Add(olvColumnStatus);\r\n            objectListView1.AllColumns.Add(olvColumnIsSilent);\r\n            objectListView1.AllColumns.Add(olvColumnName);\r\n            objectListView1.CellEditUseWholeCell = false;\r\n            objectListView1.Columns.AddRange(new ColumnHeader[] { olvColumnId, olvColumnStatus, olvColumnIsSilent, olvColumnName });\r\n            objectListView1.ContextMenuStrip = contextMenuStrip1;\r\n            resources.ApplyResources(objectListView1, \"objectListView1\");\r\n            objectListView1.FullRowSelect = true;\r\n            objectListView1.MultiSelect = false;\r\n            objectListView1.Name = \"objectListView1\";\r\n            objectListView1.ShowItemToolTips = true;\r\n            objectListView1.UseCompatibleStateImageBehavior = false;\r\n            objectListView1.View = View.Details;\r\n            objectListView1.SelectedIndexChanged += objectListView1_SelectedIndexChanged;\r\n            // \r\n            // olvColumnId\r\n            // \r\n            resources.ApplyResources(olvColumnId, \"olvColumnId\");\r\n            // \r\n            // contextMenuStrip1\r\n            // \r\n            contextMenuStrip1.Items.AddRange(new ToolStripItem[] { skipToolStripMenuItem, terminateToolStripMenuItem, toolStripSeparator3, runNowToolStripMenuItem, manualUninstallToolStripMenuItem, toolStripSeparator4, openInstallDirectoryToolStripMenuItem, propertiesToolStripMenuItem });\r\n            contextMenuStrip1.Name = \"contextMenuStrip1\";\r\n            resources.ApplyResources(contextMenuStrip1, \"contextMenuStrip1\");\r\n            contextMenuStrip1.Opening += contextMenuStrip1_Opening;\r\n            // \r\n            // skipToolStripMenuItem\r\n            // \r\n            skipToolStripMenuItem.Name = \"skipToolStripMenuItem\";\r\n            resources.ApplyResources(skipToolStripMenuItem, \"skipToolStripMenuItem\");\r\n            skipToolStripMenuItem.Click += toolStripButtonSkip_Click;\r\n            // \r\n            // terminateToolStripMenuItem\r\n            // \r\n            terminateToolStripMenuItem.Name = \"terminateToolStripMenuItem\";\r\n            resources.ApplyResources(terminateToolStripMenuItem, \"terminateToolStripMenuItem\");\r\n            terminateToolStripMenuItem.Click += toolStripButtonTerminate_Click;\r\n            // \r\n            // toolStripSeparator3\r\n            // \r\n            toolStripSeparator3.Name = \"toolStripSeparator3\";\r\n            resources.ApplyResources(toolStripSeparator3, \"toolStripSeparator3\");\r\n            // \r\n            // runNowToolStripMenuItem\r\n            // \r\n            runNowToolStripMenuItem.Name = \"runNowToolStripMenuItem\";\r\n            resources.ApplyResources(runNowToolStripMenuItem, \"runNowToolStripMenuItem\");\r\n            runNowToolStripMenuItem.Click += toolStripButtonRun_Click;\r\n            // \r\n            // manualUninstallToolStripMenuItem\r\n            // \r\n            manualUninstallToolStripMenuItem.Name = \"manualUninstallToolStripMenuItem\";\r\n            resources.ApplyResources(manualUninstallToolStripMenuItem, \"manualUninstallToolStripMenuItem\");\r\n            manualUninstallToolStripMenuItem.Click += toolStripButtonManualUninstall_Click;\r\n            // \r\n            // toolStripSeparator4\r\n            // \r\n            toolStripSeparator4.Name = \"toolStripSeparator4\";\r\n            resources.ApplyResources(toolStripSeparator4, \"toolStripSeparator4\");\r\n            // \r\n            // openInstallDirectoryToolStripMenuItem\r\n            // \r\n            openInstallDirectoryToolStripMenuItem.Name = \"openInstallDirectoryToolStripMenuItem\";\r\n            resources.ApplyResources(openInstallDirectoryToolStripMenuItem, \"openInstallDirectoryToolStripMenuItem\");\r\n            openInstallDirectoryToolStripMenuItem.Click += toolStripButtonFolderOpen_Click;\r\n            // \r\n            // propertiesToolStripMenuItem\r\n            // \r\n            propertiesToolStripMenuItem.Name = \"propertiesToolStripMenuItem\";\r\n            resources.ApplyResources(propertiesToolStripMenuItem, \"propertiesToolStripMenuItem\");\r\n            propertiesToolStripMenuItem.Click += toolStripButtonProperties_Click;\r\n            // \r\n            // label3\r\n            // \r\n            resources.ApplyResources(label3, \"label3\");\r\n            label3.Name = \"label3\";\r\n            // \r\n            // groupBox1\r\n            // \r\n            groupBox1.Controls.Add(objectListView1);\r\n            groupBox1.Controls.Add(toolStrip1);\r\n            groupBox1.Controls.Add(label2);\r\n            resources.ApplyResources(groupBox1, \"groupBox1\");\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.TabStop = false;\r\n            // \r\n            // toolStrip1\r\n            // \r\n            toolStrip1.GripStyle = ToolStripGripStyle.Hidden;\r\n            toolStrip1.Items.AddRange(new ToolStripItem[] { toolStripButtonRun, toolStripButtonSkip, toolStripButtonTerminate, toolStripButtonManualUninstall, toolStripSeparator2, toolStripButtonFolderOpen, toolStripButtonProperties, toolStripSeparator1, toolStripButtonSettings, toolStripButtonHelp });\r\n            resources.ApplyResources(toolStrip1, \"toolStrip1\");\r\n            toolStrip1.Name = \"toolStrip1\";\r\n            // \r\n            // toolStripButtonRun\r\n            // \r\n            resources.ApplyResources(toolStripButtonRun, \"toolStripButtonRun\");\r\n            toolStripButtonRun.Image = Properties.Resources.layerdown;\r\n            toolStripButtonRun.Name = \"toolStripButtonRun\";\r\n            toolStripButtonRun.Click += toolStripButtonRun_Click;\r\n            // \r\n            // toolStripButtonSkip\r\n            // \r\n            resources.ApplyResources(toolStripButtonSkip, \"toolStripButtonSkip\");\r\n            toolStripButtonSkip.Image = Properties.Resources.control_fastforward_variant;\r\n            toolStripButtonSkip.Name = \"toolStripButtonSkip\";\r\n            toolStripButtonSkip.Click += toolStripButtonSkip_Click;\r\n            // \r\n            // toolStripButtonTerminate\r\n            // \r\n            resources.ApplyResources(toolStripButtonTerminate, \"toolStripButtonTerminate\");\r\n            toolStripButtonTerminate.Image = Properties.Resources.stop;\r\n            toolStripButtonTerminate.Name = \"toolStripButtonTerminate\";\r\n            toolStripButtonTerminate.Click += toolStripButtonTerminate_Click;\r\n            // \r\n            // toolStripButtonManualUninstall\r\n            // \r\n            toolStripButtonManualUninstall.DisplayStyle = ToolStripItemDisplayStyle.Image;\r\n            toolStripButtonManualUninstall.Image = Properties.Resources.list;\r\n            resources.ApplyResources(toolStripButtonManualUninstall, \"toolStripButtonManualUninstall\");\r\n            toolStripButtonManualUninstall.Name = \"toolStripButtonManualUninstall\";\r\n            toolStripButtonManualUninstall.Click += toolStripButtonManualUninstall_Click;\r\n            // \r\n            // toolStripSeparator2\r\n            // \r\n            toolStripSeparator2.Name = \"toolStripSeparator2\";\r\n            resources.ApplyResources(toolStripSeparator2, \"toolStripSeparator2\");\r\n            // \r\n            // toolStripButtonFolderOpen\r\n            // \r\n            toolStripButtonFolderOpen.DisplayStyle = ToolStripItemDisplayStyle.Image;\r\n            resources.ApplyResources(toolStripButtonFolderOpen, \"toolStripButtonFolderOpen\");\r\n            toolStripButtonFolderOpen.Image = Properties.Resources.fullscreen;\r\n            toolStripButtonFolderOpen.Name = \"toolStripButtonFolderOpen\";\r\n            toolStripButtonFolderOpen.Click += toolStripButtonFolderOpen_Click;\r\n            // \r\n            // toolStripButtonProperties\r\n            // \r\n            toolStripButtonProperties.DisplayStyle = ToolStripItemDisplayStyle.Image;\r\n            resources.ApplyResources(toolStripButtonProperties, \"toolStripButtonProperties\");\r\n            toolStripButtonProperties.Image = Properties.Resources.properties;\r\n            toolStripButtonProperties.Name = \"toolStripButtonProperties\";\r\n            toolStripButtonProperties.Click += toolStripButtonProperties_Click;\r\n            // \r\n            // toolStripSeparator1\r\n            // \r\n            toolStripSeparator1.Name = \"toolStripSeparator1\";\r\n            resources.ApplyResources(toolStripSeparator1, \"toolStripSeparator1\");\r\n            // \r\n            // toolStripButtonSettings\r\n            // \r\n            toolStripButtonSettings.DisplayStyle = ToolStripItemDisplayStyle.Image;\r\n            toolStripButtonSettings.Image = Properties.Resources.settings;\r\n            resources.ApplyResources(toolStripButtonSettings, \"toolStripButtonSettings\");\r\n            toolStripButtonSettings.Name = \"toolStripButtonSettings\";\r\n            toolStripButtonSettings.Click += toolStripButtonSettings_Click;\r\n            // \r\n            // toolStripButtonHelp\r\n            // \r\n            toolStripButtonHelp.DisplayStyle = ToolStripItemDisplayStyle.Image;\r\n            toolStripButtonHelp.Image = Properties.Resources.information_circle;\r\n            resources.ApplyResources(toolStripButtonHelp, \"toolStripButtonHelp\");\r\n            toolStripButtonHelp.Name = \"toolStripButtonHelp\";\r\n            toolStripButtonHelp.Click += toolStripButtonHelp_Click;\r\n            // \r\n            // label2\r\n            // \r\n            resources.ApplyResources(label2, \"label2\");\r\n            label2.Name = \"label2\";\r\n            // \r\n            // usageTracker1\r\n            // \r\n            usageTracker1.ContainerControl = this;\r\n            // \r\n            // panel3\r\n            // \r\n            panel3.Controls.Add(label1);\r\n            panel3.Controls.Add(panel1);\r\n            resources.ApplyResources(panel3, \"panel3\");\r\n            panel3.Name = \"panel3\";\r\n            // \r\n            // panel1\r\n            // \r\n            panel1.Controls.Add(progressBar1);\r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // pictureBox1\r\n            // \r\n            resources.ApplyResources(pictureBox1, \"pictureBox1\");\r\n            pictureBox1.Image = Properties.Resources.layerdelete;\r\n            pictureBox1.Name = \"pictureBox1\";\r\n            pictureBox1.TabStop = false;\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Controls.Add(label3);\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // forceUpdateTimer\r\n            // \r\n            forceUpdateTimer.Interval = 3500;\r\n            // \r\n            // flowLayoutPanel2\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel2, \"flowLayoutPanel2\");\r\n            flowLayoutPanel2.Controls.Add(buttonClose);\r\n            flowLayoutPanel2.Controls.Add(checkBoxFinishSleep);\r\n            flowLayoutPanel2.Name = \"flowLayoutPanel2\";\r\n            // \r\n            // checkBoxFinishSleep\r\n            // \r\n            resources.ApplyResources(checkBoxFinishSleep, \"checkBoxFinishSleep\");\r\n            checkBoxFinishSleep.Name = \"checkBoxFinishSleep\";\r\n            checkBoxFinishSleep.UseVisualStyleBackColor = true;\r\n            // \r\n            // UninstallProgressWindow\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = AutoScaleMode.Font;\r\n            CancelButton = buttonClose;\r\n            Controls.Add(groupBox1);\r\n            Controls.Add(flowLayoutPanel2);\r\n            Controls.Add(pictureBox1);\r\n            Controls.Add(panel3);\r\n            Controls.Add(flowLayoutPanel1);\r\n            Name = \"UninstallProgressWindow\";\r\n            FormClosing += UninstallProgressWindow_FormClosing;\r\n            ((ISupportInitialize)objectListView1).EndInit();\r\n            contextMenuStrip1.ResumeLayout(false);\r\n            groupBox1.ResumeLayout(false);\r\n            groupBox1.PerformLayout();\r\n            toolStrip1.ResumeLayout(false);\r\n            toolStrip1.PerformLayout();\r\n            panel3.ResumeLayout(false);\r\n            panel1.ResumeLayout(false);\r\n            ((ISupportInitialize)pictureBox1).EndInit();\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            flowLayoutPanel2.ResumeLayout(false);\r\n            flowLayoutPanel2.PerformLayout();\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private ProgressBar progressBar1;\r\n        private Label label1;\r\n        private Button buttonClose;\r\n        private OLVColumn olvColumnStatus;\r\n        private OLVColumn olvColumnIsSilent;\r\n        private OLVColumn olvColumnName;\r\n        private ObjectListView objectListView1;\r\n        private GroupBox groupBox1;\r\n        private Label label2;\r\n        private Label label3;\r\n        private UsageTracker usageTracker1;\r\n        private Panel panel3;\r\n        private PictureBox pictureBox1;\r\n        private FlowLayoutPanel flowLayoutPanel1;\r\n        private ToolStrip toolStrip1;\r\n        private ToolStripButton toolStripButtonRun;\r\n        private ToolStripButton toolStripButtonFolderOpen;\r\n        private ToolStripSeparator toolStripSeparator1;\r\n        private ToolStripButton toolStripButtonSettings;\r\n        private ToolStripButton toolStripButtonSkip;\r\n        private ToolStripSeparator toolStripSeparator2;\r\n        private ToolStripButton toolStripButtonProperties;\r\n        private OLVColumn olvColumnId;\r\n        private ToolStripButton toolStripButtonTerminate;\r\n        private ToolStripButton toolStripButtonHelp;\r\n        private Timer forceUpdateTimer;\r\n        private ToolStripButton toolStripButtonManualUninstall;\r\n        private Panel panel1;\r\n        private ContextMenuStrip contextMenuStrip1;\r\n        private ToolStripMenuItem skipToolStripMenuItem;\r\n        private ToolStripMenuItem terminateToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator3;\r\n        private ToolStripMenuItem runNowToolStripMenuItem;\r\n        private ToolStripMenuItem manualUninstallToolStripMenuItem;\r\n        private ToolStripSeparator toolStripSeparator4;\r\n        private ToolStripMenuItem openInstallDirectoryToolStripMenuItem;\r\n        private ToolStripMenuItem propertiesToolStripMenuItem;\r\n        private FlowLayoutPanel flowLayoutPanel2;\r\n        private CheckBox checkBoxFinishSleep;\r\n        private Timer sleepTimer;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>الحالة...</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>الغاء الامر</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>الحالة</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>بهدوء</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>الاسم</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>هوية</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>سيتم الان تنفيذ الغاء تثبيت محدد واحد في كل مره.\r\nاذا كانت العملية تبدو عالقه يمكنك النقر على زر \"تخطي\" لتجنب الانتظار لاكماله. هذا يمكن ان يحدث اذا تم تعطل الغاء التثبيت او يبدا عمليه جديده ولا يغلق عليه.</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>تشغيل الغاء المثبت</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>تخطي</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>انهاء</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>فتح موقع التثبيت</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>خصائص</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>الاعدادات</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>التعليمات</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>سيتم الغاء تثبيت محتويات هذه القائمة من الاعلى الى الاسفل.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>قائمة الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>تقدم الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت يدويا</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Drawing;\r\nusing System.Globalization;\r\nusing System.Linq;\r\nusing System.Media;\r\nusing System.Threading;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Binding.Settings;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Tools;\r\nusing UninstallTools;\r\nusing UninstallTools.Uninstaller;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    internal sealed partial class UninstallProgressWindow : Form\r\n    {\r\n        private readonly SettingBinder<Settings> _settings = Settings.Default.SettingBinder;\r\n\r\n        private BulkUninstallTask _currentTargetStatus;\r\n        [System.Diagnostics.CodeAnalysis.SuppressMessage(\"Usage\", \"CA2213:Disposable fields should be disposed\", Justification = \"False positive\")]\r\n        private CustomMessageBox _walkAwayBox;\r\n        private BulkUninstallTask _status;\r\n        private static Func<IEnumerable<ApplicationUninstallerEntry>, bool> _uninstallManuallyAction;\r\n\r\n        private int _sleepTimePassed;\r\n\r\n        public static void ShowUninstallDialog(BulkUninstallTask status, Func<IEnumerable<ApplicationUninstallerEntry>, bool> uninstallManuallyAction)\r\n        {\r\n            _uninstallManuallyAction = uninstallManuallyAction;\r\n            using (var uninstallWindow = new UninstallProgressWindow())\r\n            {\r\n                uninstallWindow._status = status;\r\n\r\n                uninstallWindow.ShowDialog(MessageBoxes.DefaultOwner);\r\n            }\r\n        }\r\n\r\n        protected override void OnShown(EventArgs e)\r\n        {\r\n            base.OnShown(e);\r\n\r\n            SetTargetStatus(_status);\r\n\r\n            var workingArea = Screen.FromControl(this).WorkingArea;\r\n            Location = new Point(workingArea.Right - Size.Width - 5, workingArea.Top + 10);\r\n\r\n            Refresh();\r\n            Opacity = 1;\r\n        }\r\n\r\n        private UninstallProgressWindow()\r\n        {\r\n            InitializeComponent();\r\n\r\n            Text += \" - Bulk Crap Uninstaller\";\r\n\r\n            Opacity = 0;\r\n\r\n            Icon = Resources.Icon_Logo;\r\n\r\n            toolStrip1.Renderer = new ToolStripProfessionalRenderer(new StandardSystemColorTable());\r\n\r\n            var windowHandle = Handle;\r\n            // Shutdown blocking not available below Windows Vista\r\n            if (Environment.OSVersion.Version >= new Version(6, 0))\r\n            {\r\n                _settings.Subscribe((sender, args) =>\r\n                {\r\n                    if (args.NewValue)\r\n                        SleepControls.PreventSleepOrShutdown(windowHandle, \"Bulk uninstallation is in progress.\");\r\n                    else SleepControls.AllowSleepOrShutdown(windowHandle);\r\n                }, settings => settings.UninstallPreventShutdown, this);\r\n            }\r\n\r\n            _settings.SendUpdates(this);\r\n\r\n            FormClosing += (sender, args) =>\r\n            {\r\n                if (args.CloseReason == CloseReason.WindowsShutDown && _settings.Settings.UninstallPreventShutdown)\r\n                    args.Cancel = true;\r\n            };\r\n\r\n            FormClosed += (o, eventArgs) =>\r\n            {\r\n                _settings.RemoveHandlers(this);\r\n\r\n                SleepControls.AllowSleepOrShutdown(windowHandle);\r\n\r\n                _walkAwayBox?.Dispose();\r\n            };\r\n\r\n            olvColumnName.AspectGetter = BulkUninstallTask.DisplayNameAspectGetter;\r\n            olvColumnStatus.AspectGetter = BulkUninstallTask.StatusAspectGetter;\r\n            olvColumnIsSilent.AspectGetter = BulkUninstallTask.IsSilentAspectGetter;\r\n            olvColumnId.AspectName = nameof(BulkUninstallEntry.Id);\r\n\r\n            olvColumnStatus.GroupKeyGetter = rowObject => (rowObject as BulkUninstallEntry)?.CurrentStatus;\r\n            olvColumnName.GroupKeyGetter = rowObject => (rowObject as BulkUninstallEntry)?.UninstallerEntry.DisplayName.SafeNormalize().FirstOrDefault();\r\n            olvColumnId.GroupKeyGetter = rowObject => (rowObject as BulkUninstallEntry)?.Id / 10;\r\n\r\n            objectListView1.PrimarySortColumn = olvColumnStatus;\r\n            objectListView1.SecondarySortColumn = olvColumnId;\r\n\r\n            forceUpdateTimer.Tick += (o, args) =>\r\n            {\r\n                if (_currentTargetStatus != null && !_currentTargetStatus.Finished)\r\n                    currentTargetStatus_OnCurrentTaskChanged(o, args);\r\n                else\r\n                    forceUpdateTimer.Stop();\r\n            };\r\n\r\n            // Handle sleeping after task finishes\r\n            sleepTimer.Interval = 1000;\r\n            sleepTimer.Tick += (sender, args) =>\r\n            {\r\n                if (_currentTargetStatus.Finished && checkBoxFinishSleep.Checked)\r\n                {\r\n                    _sleepTimePassed++;\r\n\r\n                    const int sleepDelay = 30;\r\n                    label1.Text = Localisable.UninstallProgressWindow_TaskDone + \"\\n\" +\r\n                                  string.Format(Localisable.UninstallProgressWindow_StatusPuttingToSleepInSeconds, sleepDelay - _sleepTimePassed);\r\n\r\n                    if (_sleepTimePassed > sleepDelay)\r\n                    {\r\n                        checkBoxFinishSleep.Checked = false;\r\n                        checkBoxFinishSleep.Enabled = false;\r\n\r\n                        SleepControls.AllowSleepOrShutdown(windowHandle);\r\n                        SleepControls.PutToSleep();\r\n                    }\r\n                }\r\n                else\r\n                {\r\n                    _sleepTimePassed = 0;\r\n                    if (_currentTargetStatus.Finished)\r\n                        label1.Text = Localisable.UninstallProgressWindow_TaskDone;\r\n                }\r\n            };\r\n        }\r\n\r\n        private IEnumerable<BulkUninstallEntry> SelectedTaskEntries\r\n            => objectListView1.SelectedObjects.Cast<BulkUninstallEntry>();\r\n\r\n        private IEnumerable<ApplicationUninstallerEntry> SelectedUninstallerEntries\r\n            => SelectedTaskEntries.Select(x => x.UninstallerEntry);\r\n\r\n        private void SetTargetStatus(BulkUninstallTask targetStatus)\r\n        {\r\n            _currentTargetStatus = targetStatus ?? throw new ArgumentNullException(nameof(targetStatus));\r\n\r\n            progressBar1.Maximum = _currentTargetStatus.AllUninstallersList.Count;\r\n\r\n            objectListView1.SetObjects(_currentTargetStatus.AllUninstallersList);\r\n            _currentTargetStatus.OnStatusChanged += currentTargetStatus_OnCurrentTaskChanged;\r\n            currentTargetStatus_OnCurrentTaskChanged(this, EventArgs.Empty);\r\n        }\r\n\r\n        private void buttonClose_Click(object sender, EventArgs e)\r\n        {\r\n            Close();\r\n        }\r\n\r\n        private void currentTargetStatus_OnCurrentTaskChanged(object sender, EventArgs e)\r\n        {\r\n            sleepTimer.Enabled = true;\r\n            forceUpdateTimer.Stop();\r\n\r\n            // Needed to call from another thread to avoid blocking the calling thread and deadlocking\r\n            new Thread(() => objectListView1.SafeInvoke(() =>\r\n            {\r\n                objectListView1.SetObjects(_currentTargetStatus.AllUninstallersList, true);\r\n\r\n                if (_currentTargetStatus.Finished)\r\n                    OnTaskFinished();\r\n                else\r\n                    OnTaskUpdated();\r\n            }))\r\n            { IsBackground = false }.Start();\r\n\r\n            // Reset the timer\r\n            forceUpdateTimer.Start();\r\n        }\r\n\r\n        private void OnTaskFinished()\r\n        {\r\n            if (_walkAwayBox != null && _walkAwayBox.Visible)\r\n                _walkAwayBox.Close();\r\n\r\n            if (!_currentTargetStatus.Aborted && _currentTargetStatus.Configuration.PreferQuiet)\r\n            {\r\n                var failedSilent = _currentTargetStatus.AllUninstallersList\r\n                    .Where(x => x.CurrentStatus == UninstallStatus.Failed && x.IsSilentPossible).ToList();\r\n                if (failedSilent.Count > 0 && MessageBoxes.AskToRetryFailedQuietAsLoud(this, failedSilent.Select(x => x.UninstallerEntry.DisplayName)))\r\n                {\r\n                    foreach (var uninstallEntry in failedSilent)\r\n                    {\r\n                        uninstallEntry.Reset();\r\n                        uninstallEntry.IsSilentPossible = false;\r\n                    }\r\n                    objectListView1.UpdateObjects(failedSilent);\r\n                    objectListView1.BuildGroups();\r\n                    _currentTargetStatus.Start();\r\n                    return;\r\n                }\r\n            }\r\n\r\n            label1.Text = Localisable.UninstallProgressWindow_TaskDone;\r\n            progressBar1.Value = progressBar1.Maximum;\r\n            buttonClose.Text = Buttons.ButtonClose;\r\n            pictureBox1.Image = Resources.check;\r\n            buttonClose.Enabled = true;\r\n\r\n            WindowsTools.FlashWindowEx(this);\r\n            SystemSounds.Exclamation.Play();\r\n        }\r\n\r\n        private void OnTaskUpdated()\r\n        {\r\n            SuspendLayout();\r\n\r\n            try\r\n            {\r\n                var uninstList = _currentTargetStatus.AllUninstallersList;\r\n                // Show the walk away box if there are no running/waiting loud uninstallers and at least one quiet unistaller running/waiting\r\n                if (_walkAwayBox == null &&\r\n                    // There is at least one loud uninstaller\r\n                    uninstList.Any(x => !x.IsSilentPossible) &&\r\n                    // There are no loud uninstallers running or waiting\r\n                    !uninstList.Any(x => !x.IsSilentPossible &&\r\n                        (x.CurrentStatus == UninstallStatus.Waiting || x.CurrentStatus == UninstallStatus.Uninstalling)) &&\r\n                    // There is at least one silent uninstaller running or waiting\r\n                    uninstList.Any(x => x.IsSilentPossible &&\r\n                        (x.CurrentStatus == UninstallStatus.Waiting || x.CurrentStatus == UninstallStatus.Uninstalling)))\r\n                {\r\n                    _walkAwayBox = MessageBoxes.CanWalkAwayInfo(this);\r\n\r\n                    Enabled = false;\r\n                    _walkAwayBox.FormClosed += (x1, y1) => Enabled = true;\r\n                }\r\n\r\n                buttonClose.Enabled = true;\r\n\r\n                var progress = uninstList.Count(x => x.CurrentStatus != UninstallStatus.Waiting);\r\n                var statusString = string.Join(\"; \",\r\n                    uninstList.Where(x1 => x1.CurrentStatus == UninstallStatus.Uninstalling)\r\n                        .Select(x2 => x2.UninstallerEntry.DisplayName)\r\n                        .ToArray());\r\n\r\n                label1.Text = string.Format(CultureInfo.CurrentCulture, \"{0} {1}/{2}: {3}\",\r\n                    Localisable.UninstallProgressWindow_Uninstalling, progress, uninstList.Count, statusString);\r\n\r\n                buttonClose.Text = Buttons.ButtonCancel;\r\n                progressBar1.Value = Math.Max(0, progress - 1);\r\n                progressBar1.Style = ProgressBarStyle.Continuous;\r\n            }\r\n            catch\r\n            {\r\n                progressBar1.Style = ProgressBarStyle.Marquee;\r\n            }\r\n\r\n            ResumeLayout();\r\n            Refresh();\r\n        }\r\n\r\n        private void UninstallProgressWindow_FormClosing(object sender, FormClosingEventArgs e)\r\n        {\r\n            if (_currentTargetStatus == null) return;\r\n\r\n            if (_currentTargetStatus.Finished || _currentTargetStatus.Aborted ||\r\n                e.CloseReason != CloseReason.UserClosing)\r\n            {\r\n                _currentTargetStatus.Dispose();\r\n                return;\r\n            }\r\n\r\n            if (MessageBoxes.TaskStopConfirmation(this) == MessageBoxes.PressedButton.Yes)\r\n            {\r\n                _currentTargetStatus.Aborted = true;\r\n                buttonClose.Enabled = false;\r\n            }\r\n\r\n            e.Cancel = true;\r\n        }\r\n\r\n        private void toolStripButtonSettings_Click(object sender, EventArgs e)\r\n        {\r\n            using (var sw = new SettingsWindow())\r\n            {\r\n                sw.OpenedTab = 1;\r\n                sw.ShowDialog();\r\n            }\r\n\r\n            _currentTargetStatus.OneLoudLimit = _settings.Settings.UninstallConcurrentOneLoud;\r\n            _currentTargetStatus.ConcurrentUninstallerCount = _settings.Settings.UninstallConcurrency\r\n                ? _settings.Settings.UninstallConcurrentMaxCount\r\n                : 1;\r\n        }\r\n\r\n        private void toolStripButtonProperties_Click(object sender, EventArgs e)\r\n        {\r\n            using (var propertiesWindow = new PropertiesWindow())\r\n            {\r\n                propertiesWindow.ShowPropertiesDialog(SelectedUninstallerEntries);\r\n            }\r\n        }\r\n\r\n        private void toolStripButtonFolderOpen_Click(object sender, EventArgs e)\r\n        {\r\n            var sourceDirs = SelectedUninstallerEntries.Where(x => x.InstallLocation.IsNotEmpty())\r\n                .Select(y => y.InstallLocation).ToList();\r\n\r\n            if (MessageBoxes.OpenDirectoriesMessageBox(sourceDirs.Count))\r\n            {\r\n                try\r\n                {\r\n                    sourceDirs.ForEach(x => Process.Start(new ProcessStartInfo(x) { UseShellExecute = true }));\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    MessageBoxes.OpenDirectoryError(ex);\r\n                }\r\n            }\r\n        }\r\n\r\n        private void toolStripButtonRun_Click(object sender, EventArgs e)\r\n        {\r\n            var targetGroups = SelectedTaskEntries.GroupBy(x => x.IsRunning).ToList();\r\n            var running = targetGroups.SingleOrDefault(x => x.Key);\r\n            var notRunning = targetGroups.SingleOrDefault(x => !x.Key);\r\n\r\n            if (running != null && running.Any())\r\n                MessageBoxes.ForceRunUninstallFailedError(this,\r\n                    running.Select(x => x.UninstallerEntry.DisplayName).OrderBy(x => x));\r\n\r\n            if (notRunning == null || !notRunning.Any()) return;\r\n\r\n            foreach (var target in notRunning)\r\n            {\r\n                target.Reset();\r\n                target.IsSilentPossible = false;\r\n            }\r\n\r\n            OnTaskUpdated();\r\n\r\n            if (_currentTargetStatus.Finished)\r\n                _currentTargetStatus.Start();\r\n        }\r\n\r\n        private void objectListView1_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n            var ste = SelectedTaskEntries.ToList();\r\n\r\n            toolStripButtonFolderOpen.Enabled = ste.Any(x => x.UninstallerEntry.InstallLocation.IsNotEmpty());\r\n            toolStripButtonProperties.Enabled = ste.Any();\r\n\r\n            toolStripButtonRun.Enabled = ste.Any(x =>\r\n                x.CurrentStatus == UninstallStatus.Waiting || x.CurrentStatus == UninstallStatus.Failed ||\r\n                x.CurrentStatus == UninstallStatus.Skipped);\r\n\r\n            toolStripButtonSkip.Enabled = ste.Any(x =>\r\n                x.CurrentStatus != UninstallStatus.Skipped && x.CurrentStatus != UninstallStatus.Completed &&\r\n                x.CurrentStatus != UninstallStatus.Invalid && x.CurrentStatus != UninstallStatus.Protected &&\r\n                !(x.CurrentStatus == UninstallStatus.Uninstalling &&\r\n                  x.UninstallerEntry.UninstallerKind == UninstallerType.Msiexec));\r\n\r\n            toolStripButtonTerminate.Enabled = ste.Any(x => x.CurrentStatus == UninstallStatus.Uninstalling);\r\n        }\r\n\r\n        private void toolStripButtonTerminate_Click(object sender, EventArgs e)\r\n        {\r\n            SelectedTaskEntries.ForEach(x => x.SkipWaiting(true));\r\n        }\r\n\r\n        private void toolStripButtonSkip_Click(object sender, EventArgs e)\r\n        {\r\n            SelectedTaskEntries.ForEach(x => x.SkipWaiting(false));\r\n        }\r\n\r\n        private void toolStripButtonHelp_Click(object sender, EventArgs e)\r\n        {\r\n            MessageBoxes.DisplayHelp();\r\n        }\r\n\r\n        private void toolStripButtonManualUninstall_Click(object sender, EventArgs e)\r\n        {\r\n            var targetGroups = SelectedTaskEntries.GroupBy(x => x.IsRunning).ToList();\r\n            var running = targetGroups.SingleOrDefault(x => x.Key);\r\n            var notRunning = targetGroups.SingleOrDefault(x => !x.Key);\r\n\r\n            if (running != null && running.Any())\r\n                MessageBoxes.ForceRunUninstallFailedError(this,\r\n                    running.Select(x => x.UninstallerEntry.DisplayName).OrderBy(x => x));\r\n\r\n            if (notRunning == null || !notRunning.Any()) return;\r\n\r\n            foreach (var bulkUninstallEntry in notRunning)\r\n                bulkUninstallEntry.Pause();\r\n\r\n            var result = _uninstallManuallyAction(notRunning.Select(x => x.UninstallerEntry));\r\n\r\n            foreach (var bulkUninstallEntry in notRunning)\r\n            {\r\n                if (result)\r\n                    bulkUninstallEntry.ForceFinished();\r\n                else\r\n                    bulkUninstallEntry.Resume();\r\n            }\r\n\r\n            OnTaskUpdated();\r\n        }\r\n\r\n        private void contextMenuStrip1_Opening(object sender, System.ComponentModel.CancelEventArgs e)\r\n        {\r\n            if (objectListView1.SelectedObjects.Count == 0)\r\n                e.Cancel = true;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>Quiet</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Seznam odinstalátorů\r\n</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Vybrané odinstalace budou nyní provedeny jedna po druhé.\r\nPokud se zdá, že se proces zasekl, můžete kliknout na tlačítko \"Přeskočit\", aby se zabránilo čekání na dokončení. Tato situace může nastat, pokud odinstalace havaruje nebo zahájí nový proces, a není zavřen.</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Zrušit</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Postup odinstalace</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Obsah tohoto seznamu bude odinstalován postupně od shora dolů.</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Název</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Status</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Status...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Přeskočit</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>Id</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>Spustit odinstalaci</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Ukončit</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Otevřít umístění instalace</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Vlastnosti</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Nastavení</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Pomoc</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Ručně odinstalovat</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>Still</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Uninstaller Liste</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Ausgewählte Uninstaller werden nacheinander ausgeführt.\r\nWenn der Prozess stecken zu bleiben scheint, klicken Sie auf \"Weiter\", um zu vermeiden, dass Sie bis zum Abschluss der Ausführung warten müssen.\r\nDies kann passieren, wenn der Uninstaller abstürzt oder einen neuen Prozess startet und diesen nicht abschließt.</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Abbrechen</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Deinstallations-Fortschritt</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Inhalt dieser Liste wird von oben nach unten deinstalliert.</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Name</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Status</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Status...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Überspringen</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>Id</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>Starte Uninstaller</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Abbruch</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Manuelles Deinstallieren</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Öffne Install Ordner</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Eigenschaften</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Einstellungen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Hilfe</value>\r\n  </data>\r\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Überspringen</value>\r\n  </data>\r\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Beenden Sie</value>\r\n  </data>\r\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Deinstallationsprogramm jetzt ausführen</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Manuelle Deinstallation</value>\r\n  </data>\r\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Installationsverzeichnis öffnen</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Eigenschaften</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\r\n    <value>PC in den Ruhezustand versetzen, wenn er fertig ist</value>\r\n  </data>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>fr</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Estado...</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Cancelar</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Estado</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>Silencioso</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nombre</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>ID</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lista de desinstalación</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>Ejecutar desinstalador ahora</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Saltar</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Terminar</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Abrir ubicación de instalación</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Propiedades</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Configuración</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Ayuda</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Progreso de desinstalación</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Los desinstaladores seleccionados se ejecutan uno a la vez.\r\nSi el proceso parece atascarse pulse \"Saltar\" para evitar tener que esperar a que se complete. Puede ocurrir si el desinstalador se bloquea o se inicia un nuevo proceso y no se cierra.</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>El contenido de esta lista se puede desinstalar desde arriba hacia abajo.</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar manualmente</value>\r\n  </data>\r\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Omitir</value>\r\n  </data>\r\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Terminar</value>\r\n  </data>\r\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ejecutar desinstalador ahora</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalación manual</value>\r\n  </data>\r\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir directorio de instalación</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Propiedades</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\r\n    <value>Poner la PC en reposo cuando haya terminado</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Statut... </value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Annuler</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Statut</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>Silencieux</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nom</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Les désinstalleurs sélectionnés vont  maintenant être exécutés un à la fois.\r\nSi le processus semble bloqué, vous pouvez cliquer sur le bouton \"Passer\" pour éviter d'attendre qu'il se termine. Cela peut arriver si le désinstalleur plante ou démarre un nouveau processus et ne le ferme pas.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Liste de désinstalleurs</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Le contenu de cette liste sera désinstallé en allant du début à la fin.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Progression de la désinstallation</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Passer</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>Id</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>Lancer le désinstalleur</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Interrompre</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir l'emplacement d'installation</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Propriétés</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Réglages</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Aide</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller manuellement</value>\r\n  </data>\r\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Passer</value>\r\n  </data>\r\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mettre fin</value>\r\n  </data>\r\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Lancer le désinstalleur maintenant </value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Désinstaller manuellement</value>\r\n  </data>\r\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir le dossier d'installation</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Propriétés</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\r\n    <value>Mettre le PC en veille lorsque c'est fait</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Állapot...</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Mégse</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Állapot</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>Csendes</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Név</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>ID</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>A kijelölt eltávolítók, egyesével kerülnek végrehajtásra.\r\nHa úgy tűnik, hogy egy folyamat beragadt kattintson a \"Kihagyás\" gombra, hogy elkerülje a felesleges várakozást. Ez akkor fordulhat elő, ha egy eltávolító összeomlik, vagy úgy indul el egy új folyamat, hogy az előző nem záródott be.</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolító futtatása most</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Kihagyás</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Leállítás</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Telepítési hely megnyitása</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Tulajdonságok</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Beállítások</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Súgó</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Ez a lista az eltávolítandókat tartalmazza felülről lefelé haladva.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítási lista</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolítási folyamat</value>\r\n  </data>\r\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Kihagyás</value>\r\n  </data>\r\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Leállítás</value>\r\n  </data>\r\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolító futtatása most</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Kézi eltávolítás</value>\r\n  </data>\r\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Telepítési hely megnyitása</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Tulajdonságok</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Kézi eltávolítás</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\r\n    <value>Számítógép alvó üzemmódba helyezése ha készen van</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Stato...</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Annulla</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Stato</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>Silenzioso</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nome</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>ID</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>I disinstallatori selezionati saranno eseguiti uno per volta. Se il processo sembra bloccato puoi selezionare \"Salta\" per evitare di attendere il suo completamento. Questo accade se il disinstallatore si blocca o avvia un nuovo processo e non si chiude.</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>Esegui disinstallatore</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Salta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Interrompi</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Apri cartella di installazione</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Proprietà</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Configurazioni</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Aiuto</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>I contenuti di questo elenco saranno disinstallati in ordine dall'alto verso il basso</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Elenco disinstallazione</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Avanzamento disinstallazione</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Disinstallare manualmente</value>\r\n  </data>\r\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Salta</value>\r\n  </data>\r\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Interrompi</value>\r\n  </data>\r\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Esegui dinsistallazione ora</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Disinstallazione manuale</value>\r\n  </data>\r\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Apri cartella installazione</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Proprietà</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\r\n    <value>Ad operazioni completate manda il PC in sleep</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>ステータス</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n  </data>\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\n    <value>ステータス</value>\n  </data>\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\n    <value>サイレント</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>名前</value>\n  </data>\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\n    <value>ID</value>\n  </data>\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>スキップ</value>\n  </data>\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>終了</value>\n  </data>\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>今すぐアンインストーラーを実行</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>手動アンインストール</value>\n  </data>\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>インストールディレクトリを開く</value>\n  </data>\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>プロパティ</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>選択したアンインストーラーは、1つずつ実行されます。\nプロセスがハングしているように見える場合は、「スキップ」ボタンをクリックして完了を待たずに進むことができます。これは、アンインストーラーがクラッシュしたり、新しいプロセスを開始して閉じない場合に発生することがあります。</value>\n  </data>\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\n    <value>アンインストーラーを実行</value>\n  </data>\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\n    <value>スキップ</value>\n  </data>\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\n    <value>終了</value>\n  </data>\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\n    <value>手動でアンインストール</value>\n  </data>\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\n    <value>インストール場所を開く</value>\n  </data>\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\n    <value>プロパティ</value>\n  </data>\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\n    <value>ヘルプ</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>このリストの内容は、上から下へ順にアンインストールされます。</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>アンインストーラーリスト</value>\n  </data>\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\n    <value>完了後にPCをスリープ状態にする</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>アンインストール進行状況</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Status...</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Annuleren</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Status</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>Stil</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Naam</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>Id</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Geselecteerde de-installers worden achtereen volgens uitgevoerd. \r\nAls het proces onverhoopt vastloopt, klikt u op de knop \"Overslaan\", om te voorkomen dat u bij het afsluiten van de uitvoering moet wachten.\r\nDit kan gebeuren als de de-installer 'crasht' of een nieuw proces start en deze niet afsluit.</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Overslaan</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Afbreken</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Openen installatie locatie</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Eigenschappen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Instellingen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Help</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>De inhoud van deze lijst wordt van boven naar beneden gede-installeerd.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>De-installer lijst</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>De-installatie voortgang</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>De-installer uitvoeren</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>De-installeer handmatig</value>\r\n  </data>\r\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Overslaan</value>\r\n  </data>\r\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Beëindigen</value>\r\n  </data>\r\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>De-installatie nu uitvoeren</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Manuale de-installatie</value>\r\n  </data>\r\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Open installatie map</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Eigenschappen</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\r\n    <value>Plaats computer in slaapstand bij voltooiing</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Anuluj</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>Cichy</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nazwa</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Wybrane aplikacje zostaną odinstalowane jedna po drugiej. Jeśli proces wydaje się być zawieszony można kliknąć na przycisk \"Pomiń\" aby uniknąć oczekiwania na jego zakończenie. Może się to zdarzyć jeśli dezinstalator rozpocznie nowy proces ale nie zamknie go.</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Elementy z listy będą odinstalowane od góry w dół</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lista dezinstalatorów</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Stan dezinstalacji</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Status</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Status...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>Uruchom dezinstalator teraz</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Pomiń</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Zakończ</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz lokalizację instalacji</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Właściwości</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Ustawienia</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>Id</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Pomoc</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Odinstaluj recznie</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Status...</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Cancelar</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Status</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>Silencioso</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nome</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>Id</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Os desinstaladores selecionados serão executados um de cada vez.\r\nSe o processo parecer travado, você pode clicar no botão \"Ignorar\" para evitar aguardar a conclusão. Isso pode acontecer se o desinstalador falhar ou iniciar um novo processo que não fecha.</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>Executar desinstalador</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Ignorar</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Finalizar</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar manualmente</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Abrir local de instalação</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Propriedades</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Configurações</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Ajuda</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>O conteúdo desta lista será desinstalado indo de cima para baixo.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lista dos desinstaladores</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Progresso da desinstalação</value>\r\n  </data>\r\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ignorar</value>\r\n  </data>\r\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Finalizar</value>\r\n  </data>\r\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Executar desinstalador agora</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalação manual</value>\r\n  </data>\r\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir diretório de instalação</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Propriedades</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\r\n    <value>Hibernar computador ao finalizar</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Estado...</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Cancelar</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Estado</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>segundo plano</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nome</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>Id</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Os desinstaladores selecionadas serão executados um de cada vez.\r\nSe o processo lhe parecer ter bloqueado, pode clicar no botão \"Ignorar\" para evitar de esperar pela sua conclusão. Isto pode acontecer se o desinstalador falhar ou iniciar um novo processo e não o fechar. </value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>O conteúdo desta lista será desinstalado desde o topo à base.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lista dos desinstaladores</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>Executar agora o desinstalador</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Passar à frente</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Concluir</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Abrir a localização da instalação</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Propriedades</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Configurações</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Ajuda</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Progresso da desinstalação</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Desinstalar manualmente</value>\r\n  </data>\r\n  <metadata name=\"toolStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>252, 17</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"progressBar1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"progressBar1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 5</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"progressBar1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"progressBar1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>478, 26</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"progressBar1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;progressBar1.Name\" xml:space=\"preserve\">\r\n    <value>progressBar1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;progressBar1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ProgressBar, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;progressBar1.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;progressBar1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"label1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 36</value>\r\n  </data>\r\n  <data name=\"label1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>488, 33</value>\r\n  </data>\r\n  <data name=\"label1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Status...</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Name\" xml:space=\"preserve\">\r\n    <value>label1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Parent\" xml:space=\"preserve\">\r\n    <value>panel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonClose.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonClose.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>396, 3</value>\r\n  </data>\r\n  <data name=\"buttonClose.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonClose.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 27</value>\r\n  </data>\r\n  <data name=\"buttonClose.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Cancel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonClose.Name\" xml:space=\"preserve\">\r\n    <value>buttonClose</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonClose.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonClose.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonClose.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Status</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>105</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>Quiet</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>47</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Name</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>206</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>Id</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>25</value>\r\n  </data>\r\n  <metadata name=\"contextMenuStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <data name=\"skipToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>187, 22</value>\r\n  </data>\r\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Skip</value>\r\n  </data>\r\n  <data name=\"terminateToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>187, 22</value>\r\n  </data>\r\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Terminate</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>184, 6</value>\r\n  </data>\r\n  <data name=\"runNowToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>187, 22</value>\r\n  </data>\r\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Run uninstaller now</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>187, 22</value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Manual uninstall</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>184, 6</value>\r\n  </data>\r\n  <data name=\"openInstallDirectoryToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>187, 22</value>\r\n  </data>\r\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Open install directory</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>187, 22</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Properties</value>\r\n  </data>\r\n  <data name=\"contextMenuStrip1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>188, 148</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;contextMenuStrip1.Name\" xml:space=\"preserve\">\r\n    <value>contextMenuStrip1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;contextMenuStrip1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"objectListView1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"objectListView1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 72</value>\r\n  </data>\r\n  <data name=\"objectListView1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"objectListView1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>470, 187</value>\r\n  </data>\r\n  <data name=\"objectListView1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListView1.Name\" xml:space=\"preserve\">\r\n    <value>objectListView1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListView1.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.ObjectListView, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListView1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;objectListView1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>59, 0</value>\r\n  </data>\r\n  <data name=\"label3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label3.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>12, 54</value>\r\n  </data>\r\n  <data name=\"label3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>420, 60</value>\r\n  </data>\r\n  <data name=\"label3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Selected uninstallers will now be executed one at a time.\r\nIf the process appears to be stuck you can click on the \"Skip\" button to avoid waiting for it to complete. This can happen if the uninstaller crashes or starts a new process and doesn't close it.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label3.Name\" xml:space=\"preserve\">\r\n    <value>label3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label3.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label3.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"toolStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>172, 17</value>\r\n  </metadata>\r\n  <data name=\"toolStripButtonRun.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>106, 22</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>Run uninstaller</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>49, 22</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Skip</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>79, 22</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Terminate</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>23, 22</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall manually</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>6, 25</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>23, 22</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Open install location</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>23, 22</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Properties</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>6, 25</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>23, 22</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Settings</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>23, 22</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Help</value>\r\n  </data>\r\n  <data name=\"toolStrip1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 47</value>\r\n  </data>\r\n  <data name=\"toolStrip1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>470, 25</value>\r\n  </data>\r\n  <data name=\"toolStrip1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip1.Name\" xml:space=\"preserve\">\r\n    <value>toolStrip1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"label2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 25</value>\r\n  </data>\r\n  <data name=\"label2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 7</value>\r\n  </data>\r\n  <data name=\"label2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>351, 22</value>\r\n  </data>\r\n  <data name=\"label2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Contents of this list will be uninstalled going from top to bottom.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Name\" xml:space=\"preserve\">\r\n    <value>label2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 143</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>9, 9, 9, 9</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>488, 268</value>\r\n  </data>\r\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Uninstaller list</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>277, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>504, 452</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>221, 3</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 4, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>168, 23</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\r\n    <value>Put PC to sleep when done</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxFinishSleep.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxFinishSleep</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxFinishSleep.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxFinishSleep.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxFinishSleep.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>RightToLeft</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 411</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>488, 33</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"pictureBox1.BackgroundImageLayout\" type=\"System.Windows.Forms.ImageLayout, System.Windows.Forms\">\r\n    <value>Center</value>\r\n  </data>\r\n  <data name=\"pictureBox1.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 8</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>58, 58</value>\r\n  </data>\r\n  <data name=\"pictureBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Name\" xml:space=\"preserve\">\r\n    <value>pictureBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 5, 5, 5</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>488, 36</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>panel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 74</value>\r\n  </data>\r\n  <data name=\"panel3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>488, 69</value>\r\n  </data>\r\n  <data name=\"panel3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Name\" xml:space=\"preserve\">\r\n    <value>panel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 8</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>55, 0, 0, 6</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>488, 66</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>464, 398</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>8, 8, 8, 8</value>\r\n  </data>\r\n  <data name=\"$this.StartPosition\" type=\"System.Windows.Forms.FormStartPosition, System.Windows.Forms\">\r\n    <value>CenterParent</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Uninstall progress</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnStatus.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnStatus</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnStatus.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnIsSilent.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnIsSilent</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnIsSilent.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnName.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnName</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnName.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnId.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnId</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnId.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;skipToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>skipToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;skipToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;terminateToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>terminateToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;terminateToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator3.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;runNowToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>runNowToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;runNowToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;manualUninstallToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>manualUninstallToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;manualUninstallToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator4.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openInstallDirectoryToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>openInstallDirectoryToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openInstallDirectoryToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>propertiesToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;propertiesToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonRun.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonRun</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonRun.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSkip.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonSkip</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSkip.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonTerminate.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonTerminate</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonTerminate.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonManualUninstall.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonManualUninstall</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonManualUninstall.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator2.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonFolderOpen.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonFolderOpen</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonFolderOpen.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonProperties.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonProperties</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonProperties.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator1.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSettings.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonSettings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSettings.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonHelp.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonHelp</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonHelp.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;usageTracker1.Name\" xml:space=\"preserve\">\r\n    <value>usageTracker1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;usageTracker1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Functions.Tracking.UsageTracker, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;forceUpdateTimer.Name\" xml:space=\"preserve\">\r\n    <value>forceUpdateTimer</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;forceUpdateTimer.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Timer, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;sleepTimer.Name\" xml:space=\"preserve\">\r\n    <value>sleepTimer</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;sleepTimer.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Timer, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>UninstallProgressWindow</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <metadata name=\"forceUpdateTimer.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>405, 17</value>\r\n  </metadata>\r\n  <metadata name=\"sleepTimer.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>554, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Статус...</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Отмена</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Статус</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>Тихо</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Название</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>Id</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Выбранные деинсталляторы будут выполняться по очереди.\r\nЕсли покажется, что процесс завис, Вы можете нажать на \"Пропустить\", чтобы не ждать его завершения. Такое происходит, если деинсталлятор дал сбой или запустил новый процесс и не закрыл его.</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>Запустить деинсталлятор</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Пропустить</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Завершить</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Открыть папку установки</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Свойства</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Установки</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Содержание этого списка деинсталляции идёт сверху вниз.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Список деинсталляции</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Прогресс деинсталляции</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Справка</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Удалить вручную</value>\r\n  </data>\r\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Пропустить</value>\r\n  </data>\r\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Завершить</value>\r\n  </data>\r\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Запустить деинсталлятор </value>\r\n  </data>\r\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ручное удаление</value>\r\n  </data>\r\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Открыть место установки</value>\r\n  </data>\r\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Свойства</value>\r\n  </data>\r\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\r\n    <value>Перевести компьютер в спящий режим после завершения операции</value>\r\n  </data>\r\n  <metadata name=\"toolStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>252, 17</value>\r\n  </metadata>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Stanje...</value>\r\n  </data>\r\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\r\n    <value>Prekliči</value>\r\n  </data>\r\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\r\n    <value>Stanje</value>\r\n  </data>\r\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\r\n    <value>Tiho</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Ime</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Izbrani odstranjevalci bodo zdaj naenkrat izvedeni.\r\nČe se vam zdi, da se je postopek zataknil, lahko kliknite na gumb \"Preskoči\", da se boste izognili čakanju na njegovo dokončanje. To se lahko zgodi, če se odstranjevalec sesuje ali se začenja nov proces, in se ga ne da zapreti.</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Vsebina tega seznama bo odstranjena od zgoraj navzdol.</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Seznam odstranjevalcev</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Napredek odstranjevanja</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\r\n    <value>Preskoči</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\r\n    <value>Zaženi odstranjevalca</value>\r\n  </data>\r\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\r\n    <value>Prekini</value>\r\n  </data>\r\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\r\n    <value>Odpri mesto namestitve</value>\r\n  </data>\r\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\r\n    <value>Lastnosti</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\r\n    <value>Nastavitve</value>\r\n  </data>\r\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\r\n    <value>Id</value>\r\n  </data>\r\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Pomoč</value>\r\n  </data>\r\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\r\n    <value>Ročno odstrani</value>\r\n  </data>\r\n  <metadata name=\"usageTracker1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Status...</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>Avbryt</value>\n  </data>\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\n    <value>Tyst</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Namn</value>\n  </data>\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\n    <value>Id</value>\n  </data>\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Hoppa över</value>\n  </data>\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Avsluta</value>\n  </data>\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Kör avinstallerare nu</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Manuell avinstallation</value>\n  </data>\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Öppna installationsmapp</value>\n  </data>\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Egenskaper</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Valda avinstallationsprogram kommer nu att köras en åt gången.\nOm processen verkar fastna kan du klicka på knappen \"Hoppa över\" för att undvika att vänta på att den ska slutföras. Detta kan hända om avinstallationsprogrammet kraschar eller startar en ny process och inte stänger den.</value>\n  </data>\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\n    <value>Kör avinstallation</value>\n  </data>\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\n    <value>Hoppa över</value>\n  </data>\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\n    <value>Avsluta</value>\n  </data>\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\n    <value>Avinstallera manuellt</value>\n  </data>\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\n    <value>Öppna installationsmapp</value>\n  </data>\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\n    <value>Egenskaper</value>\n  </data>\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\n    <value>Inställningar</value>\n  </data>\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\n    <value>Hjälp</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Innehållet i denna lista kommer att avinstalleras från topp till botten.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Avinstallationslista</value>\n  </data>\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\n    <value>Sätt datorn i viloläge när den är klar</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Avinstallationsframsteg</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Durum...</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>Vazgeç</value>\n  </data>\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\n    <value>Durum</value>\n  </data>\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\n    <value>Sessiz</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Adı</value>\n  </data>\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\n    <value>Id</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Seçilen kaldırıcılar artık tek seferde gerçekleştirilecek.\nİşlem sıkışmış gibi görünüyorsa, tamamlanmasını beklememek için \"Atla\" düğmesine tıklayabilirsiniz. Bu, kaldırıcı, yeni bir işlem başlatırsa veya yeni bir işlem başlatırsa ve kapatmazsa gerçekleşebilir.</value>\n  </data>\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\n    <value>Kaldırıcıyı çalıştır</value>\n  </data>\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\n    <value>Atla</value>\n  </data>\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\n    <value>Sonlandır</value>\n  </data>\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\n    <value>Manuel kaldır</value>\n  </data>\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\n    <value>Kurulum konumunu aç</value>\n  </data>\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\n    <value>Özellikler</value>\n  </data>\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\n    <value>Ayarlar</value>\n  </data>\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\n    <value>Yardım</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Bu listenin içeriği yukarıdan aşağıya doğru kaldırılacaktır.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Kaldırılacaklar listesi</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Kaldırma ilerlemesi</value>\n  </data>\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Atla</value>\n  </data>\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Sonlandır</value>\n  </data>\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Kaldırıcıyı şimdi çalıştırın</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Manuel kaldırma</value>\n  </data>\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Yükleme dizinini açın</value>\n  </data>\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Özellikler</value>\n  </data>\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\n    <value>Bittiğinde bilgisayar uyku moduna geçsin</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Trạng thái...</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>Huỷ</value>\n  </data>\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\n    <value>Trạng thái</value>\n  </data>\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\n    <value>Gỡ âm thầm</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Tên</value>\n  </data>\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\n    <value>ID</value>\n  </data>\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Bỏ qua</value>\n  </data>\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Chấm dứt</value>\n  </data>\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Khởi chạy ngay bây giờ</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt thủ công</value>\n  </data>\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Mở thư mục cài đặt</value>\n  </data>\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Thuộc tính</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Các trình gỡ cài đặt đã chọn sẽ được chạy lần lượt.\nNếu quá trình dường như bị kẹt, bạn có thể nhấp vào nút \"Bỏ qua\" để tránh phải đợi nó hoàn thành. Điều này có thể xảy ra nếu trình gỡ cài đặt bị lỗi hoặc khởi chạy một tiến trình mới và không đóng nó lại.</value>\n  </data>\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\n    <value>Khởi chạy trình gỡ cài đặt</value>\n  </data>\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\n    <value>Bỏ qua</value>\n  </data>\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\n    <value>Chấm dứt</value>\n  </data>\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt thủ công</value>\n  </data>\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\n    <value>Mở thư mục cài đặt</value>\n  </data>\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\n    <value>Thuộc tính</value>\n  </data>\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\n    <value>Cài đặt</value>\n  </data>\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\n    <value>Trợ giúp</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Chúng sẽ được gỡ cài đặt theo thứ tự từ trên xuống.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Danh sách trình gỡ cài đặt</value>\n  </data>\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\n    <value>Thiết lập PC của bạn vào chế độ ngủ khi hoàn tất</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Tiến trình gỡ cài đặt</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>状态...</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\n    <value>状态</value>\n  </data>\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\n    <value>静默</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>名称</value>\n  </data>\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\n    <value>Id</value>\n  </data>\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>跳过</value>\n  </data>\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>终止</value>\n  </data>\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>立即运行卸载程序</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>手动卸载</value>\n  </data>\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>打开安装目录</value>\n  </data>\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>属性</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>选中的卸载程序现在将一次执行一个。\n如果进程似乎被卡住了，你可以点击“跳过”按钮，以避免等待它完成。如果卸载程序崩溃或启动新进程但未关闭它，则可能发生这种情况。</value>\n  </data>\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\n    <value>运行卸载程序</value>\n  </data>\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\n    <value>跳过</value>\n  </data>\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\n    <value>终止</value>\n  </data>\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\n    <value>手动卸载</value>\n  </data>\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\n    <value>打开安装位置</value>\n  </data>\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\n    <value>属性</value>\n  </data>\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\n    <value>设置</value>\n  </data>\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\n    <value>帮助</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>此列表的内容将自上而下卸载。</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>卸载程序列表</value>\n  </data>\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\n    <value>完成后将电脑置于睡眠状态</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>卸载进度</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Windows/UninstallProgressWindow.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>狀態...</value>\n  </data>\n  <data name=\"buttonClose.Text\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"olvColumnStatus.Text\" xml:space=\"preserve\">\n    <value>狀態</value>\n  </data>\n  <data name=\"olvColumnIsSilent.Text\" xml:space=\"preserve\">\n    <value>安靜模式</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>名稱</value>\n  </data>\n  <data name=\"olvColumnId.Text\" xml:space=\"preserve\">\n    <value>ID</value>\n  </data>\n  <data name=\"skipToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>略過</value>\n  </data>\n  <data name=\"terminateToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>中止</value>\n  </data>\n  <data name=\"runNowToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>立即執行移除程式</value>\n  </data>\n  <data name=\"manualUninstallToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>手動解除安裝</value>\n  </data>\n  <data name=\"openInstallDirectoryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>開啟安裝目錄</value>\n  </data>\n  <data name=\"propertiesToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>屬性</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>選中的移除程式現在將一次執行一個。\n如果過程似乎被卡住了，你可以點擊\"略過\"按鈕，以避免等待它完成。如果移除程式當機或啟動新程序但未關閉它，則可能發生這種情況。</value>\n  </data>\n  <data name=\"toolStripButtonRun.Text\" xml:space=\"preserve\">\n    <value>執行移除程式</value>\n  </data>\n  <data name=\"toolStripButtonSkip.Text\" xml:space=\"preserve\">\n    <value>略過</value>\n  </data>\n  <data name=\"toolStripButtonTerminate.Text\" xml:space=\"preserve\">\n    <value>中止</value>\n  </data>\n  <data name=\"toolStripButtonManualUninstall.Text\" xml:space=\"preserve\">\n    <value>手動移除</value>\n  </data>\n  <data name=\"toolStripButtonFolderOpen.Text\" xml:space=\"preserve\">\n    <value>開啟安裝位置</value>\n  </data>\n  <data name=\"toolStripButtonProperties.Text\" xml:space=\"preserve\">\n    <value>屬性</value>\n  </data>\n  <data name=\"toolStripButtonSettings.Text\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"toolStripButtonHelp.Text\" xml:space=\"preserve\">\n    <value>幫助</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>此清單的內容將上而下移除。</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>移除程式清單</value>\n  </data>\n  <data name=\"checkBoxFinishSleep.Text\" xml:space=\"preserve\">\n    <value>完成後將電腦睡眠</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>移除進度</value>\n  </data>\n</root>\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.Designer.cs",
    "content": "﻿using BulkCrapUninstaller.Controls;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class BeginUninstallTaskWizard\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BeginUninstallTaskWizard));\r\n            panelNavigation = new System.Windows.Forms.Panel();\r\n            labelProgress = new System.Windows.Forms.Label();\r\n            buttonExit = new System.Windows.Forms.Button();\r\n            buttonPrev = new System.Windows.Forms.Button();\r\n            panel4 = new System.Windows.Forms.Panel();\r\n            buttonNext = new System.Windows.Forms.Button();\r\n            panel1 = new System.Windows.Forms.Panel();\r\n            tabControl1 = new TabControlWithoutHeader();\r\n            tabPage1 = new System.Windows.Forms.TabPage();\r\n            relatedUninstallerAdder1 = new RelatedUninstallerAdder();\r\n            flowLayoutPanel5 = new System.Windows.Forms.FlowLayoutPanel();\r\n            p1Heading = new System.Windows.Forms.Label();\r\n            tabPage2 = new System.Windows.Forms.TabPage();\r\n            uninstallConfirmation1 = new UninstallConfirmation();\r\n            flowLayoutPanel4 = new System.Windows.Forms.FlowLayoutPanel();\r\n            label1 = new System.Windows.Forms.Label();\r\n            tabPage3 = new System.Windows.Forms.TabPage();\r\n            processWaiterControl1 = new Klocman.Forms.ProcessWaiterControl();\r\n            flowLayoutPanel3 = new System.Windows.Forms.FlowLayoutPanel();\r\n            label2 = new System.Windows.Forms.Label();\r\n            tabPage4 = new System.Windows.Forms.TabPage();\r\n            uninstallationSettings1 = new UninstallationSettings();\r\n            flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\r\n            label5 = new System.Windows.Forms.Label();\r\n            tabPage5 = new System.Windows.Forms.TabPage();\r\n            tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();\r\n            labelOther = new System.Windows.Forms.Label();\r\n            label19 = new System.Windows.Forms.Label();\r\n            labelConcurrentEnabled = new System.Windows.Forms.Label();\r\n            label17 = new System.Windows.Forms.Label();\r\n            labelWillBeSilent = new System.Windows.Forms.Label();\r\n            label15 = new System.Windows.Forms.Label();\r\n            labelRestorePointCreated = new System.Windows.Forms.Label();\r\n            label13 = new System.Windows.Forms.Label();\r\n            labelFilesStillUsed = new System.Windows.Forms.Label();\r\n            label11 = new System.Windows.Forms.Label();\r\n            labelTotalSize = new System.Windows.Forms.Label();\r\n            label9 = new System.Windows.Forms.Label();\r\n            labelApps = new System.Windows.Forms.Label();\r\n            label7 = new System.Windows.Forms.Label();\r\n            button2 = new System.Windows.Forms.Button();\r\n            flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();\r\n            label6 = new System.Windows.Forms.Label();\r\n            panelNavigation.SuspendLayout();\r\n            panel1.SuspendLayout();\r\n            tabControl1.SuspendLayout();\r\n            tabPage1.SuspendLayout();\r\n            flowLayoutPanel5.SuspendLayout();\r\n            tabPage2.SuspendLayout();\r\n            flowLayoutPanel4.SuspendLayout();\r\n            tabPage3.SuspendLayout();\r\n            flowLayoutPanel3.SuspendLayout();\r\n            tabPage4.SuspendLayout();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            tabPage5.SuspendLayout();\r\n            tableLayoutPanel1.SuspendLayout();\r\n            flowLayoutPanel2.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // panelNavigation\r\n            // \r\n            panelNavigation.BackColor = System.Drawing.SystemColors.Control;\r\n            panelNavigation.Controls.Add(labelProgress);\r\n            panelNavigation.Controls.Add(buttonExit);\r\n            panelNavigation.Controls.Add(buttonPrev);\r\n            panelNavigation.Controls.Add(panel4);\r\n            panelNavigation.Controls.Add(buttonNext);\r\n            resources.ApplyResources(panelNavigation, \"panelNavigation\");\r\n            panelNavigation.Name = \"panelNavigation\";\r\n            // \r\n            // labelProgress\r\n            // \r\n            resources.ApplyResources(labelProgress, \"labelProgress\");\r\n            labelProgress.ForeColor = System.Drawing.SystemColors.GrayText;\r\n            labelProgress.Name = \"labelProgress\";\r\n            // \r\n            // buttonExit\r\n            // \r\n            resources.ApplyResources(buttonExit, \"buttonExit\");\r\n            buttonExit.DialogResult = System.Windows.Forms.DialogResult.Cancel;\r\n            buttonExit.Name = \"buttonExit\";\r\n            buttonExit.UseVisualStyleBackColor = true;\r\n            // \r\n            // buttonPrev\r\n            // \r\n            resources.ApplyResources(buttonPrev, \"buttonPrev\");\r\n            buttonPrev.Name = \"buttonPrev\";\r\n            buttonPrev.UseVisualStyleBackColor = true;\r\n            buttonPrev.Click += buttonPrev_Click;\r\n            // \r\n            // panel4\r\n            // \r\n            resources.ApplyResources(panel4, \"panel4\");\r\n            panel4.Name = \"panel4\";\r\n            // \r\n            // buttonNext\r\n            // \r\n            resources.ApplyResources(buttonNext, \"buttonNext\");\r\n            buttonNext.Name = \"buttonNext\";\r\n            buttonNext.UseVisualStyleBackColor = true;\r\n            buttonNext.Click += buttonNext_Click;\r\n            // \r\n            // panel1\r\n            // \r\n            panel1.Controls.Add(tabControl1);\r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // tabControl1\r\n            // \r\n            tabControl1.Controls.Add(tabPage1);\r\n            tabControl1.Controls.Add(tabPage2);\r\n            tabControl1.Controls.Add(tabPage3);\r\n            tabControl1.Controls.Add(tabPage4);\r\n            tabControl1.Controls.Add(tabPage5);\r\n            resources.ApplyResources(tabControl1, \"tabControl1\");\r\n            tabControl1.Multiline = true;\r\n            tabControl1.Name = \"tabControl1\";\r\n            tabControl1.SelectedIndex = 0;\r\n            tabControl1.TabStop = false;\r\n            // \r\n            // tabPage1\r\n            // \r\n            tabPage1.Controls.Add(relatedUninstallerAdder1);\r\n            tabPage1.Controls.Add(flowLayoutPanel5);\r\n            resources.ApplyResources(tabPage1, \"tabPage1\");\r\n            tabPage1.Name = \"tabPage1\";\r\n            tabPage1.UseVisualStyleBackColor = true;\r\n            // \r\n            // relatedUninstallerAdder1\r\n            // \r\n            resources.ApplyResources(relatedUninstallerAdder1, \"relatedUninstallerAdder1\");\r\n            relatedUninstallerAdder1.Name = \"relatedUninstallerAdder1\";\r\n            // \r\n            // flowLayoutPanel5\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel5, \"flowLayoutPanel5\");\r\n            flowLayoutPanel5.Controls.Add(p1Heading);\r\n            flowLayoutPanel5.Name = \"flowLayoutPanel5\";\r\n            // \r\n            // p1Heading\r\n            // \r\n            resources.ApplyResources(p1Heading, \"p1Heading\");\r\n            p1Heading.Name = \"p1Heading\";\r\n            // \r\n            // tabPage2\r\n            // \r\n            tabPage2.Controls.Add(uninstallConfirmation1);\r\n            tabPage2.Controls.Add(flowLayoutPanel4);\r\n            resources.ApplyResources(tabPage2, \"tabPage2\");\r\n            tabPage2.Name = \"tabPage2\";\r\n            tabPage2.UseVisualStyleBackColor = true;\r\n            // \r\n            // uninstallConfirmation1\r\n            // \r\n            resources.ApplyResources(uninstallConfirmation1, \"uninstallConfirmation1\");\r\n            uninstallConfirmation1.Name = \"uninstallConfirmation1\";\r\n            // \r\n            // flowLayoutPanel4\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel4, \"flowLayoutPanel4\");\r\n            flowLayoutPanel4.Controls.Add(label1);\r\n            flowLayoutPanel4.Name = \"flowLayoutPanel4\";\r\n            // \r\n            // label1\r\n            // \r\n            resources.ApplyResources(label1, \"label1\");\r\n            label1.Name = \"label1\";\r\n            // \r\n            // tabPage3\r\n            // \r\n            tabPage3.Controls.Add(processWaiterControl1);\r\n            tabPage3.Controls.Add(flowLayoutPanel3);\r\n            resources.ApplyResources(tabPage3, \"tabPage3\");\r\n            tabPage3.Name = \"tabPage3\";\r\n            tabPage3.UseVisualStyleBackColor = true;\r\n            // \r\n            // processWaiterControl1\r\n            // \r\n            resources.ApplyResources(processWaiterControl1, \"processWaiterControl1\");\r\n            processWaiterControl1.Name = \"processWaiterControl1\";\r\n            processWaiterControl1.ShowIgnoreAndCancel = false;\r\n            processWaiterControl1.AllProcessesClosed += processWaiterControl1_AllProcessesClosed;\r\n            // \r\n            // flowLayoutPanel3\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel3, \"flowLayoutPanel3\");\r\n            flowLayoutPanel3.Controls.Add(label2);\r\n            flowLayoutPanel3.Name = \"flowLayoutPanel3\";\r\n            // \r\n            // label2\r\n            // \r\n            resources.ApplyResources(label2, \"label2\");\r\n            label2.Name = \"label2\";\r\n            // \r\n            // tabPage4\r\n            // \r\n            resources.ApplyResources(tabPage4, \"tabPage4\");\r\n            tabPage4.Controls.Add(uninstallationSettings1);\r\n            tabPage4.Controls.Add(flowLayoutPanel1);\r\n            tabPage4.Name = \"tabPage4\";\r\n            tabPage4.UseVisualStyleBackColor = true;\r\n            // \r\n            // uninstallationSettings1\r\n            // \r\n            resources.ApplyResources(uninstallationSettings1, \"uninstallationSettings1\");\r\n            uninstallationSettings1.Name = \"uninstallationSettings1\";\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Controls.Add(label5);\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // label5\r\n            // \r\n            resources.ApplyResources(label5, \"label5\");\r\n            flowLayoutPanel1.SetFlowBreak(label5, true);\r\n            label5.Name = \"label5\";\r\n            // \r\n            // tabPage5\r\n            // \r\n            resources.ApplyResources(tabPage5, \"tabPage5\");\r\n            tabPage5.Controls.Add(tableLayoutPanel1);\r\n            tabPage5.Controls.Add(button2);\r\n            tabPage5.Controls.Add(flowLayoutPanel2);\r\n            tabPage5.Name = \"tabPage5\";\r\n            tabPage5.UseVisualStyleBackColor = true;\r\n            // \r\n            // tableLayoutPanel1\r\n            // \r\n            resources.ApplyResources(tableLayoutPanel1, \"tableLayoutPanel1\");\r\n            tableLayoutPanel1.Controls.Add(labelOther, 1, 6);\r\n            tableLayoutPanel1.Controls.Add(label19, 0, 6);\r\n            tableLayoutPanel1.Controls.Add(labelConcurrentEnabled, 1, 5);\r\n            tableLayoutPanel1.Controls.Add(label17, 0, 5);\r\n            tableLayoutPanel1.Controls.Add(labelWillBeSilent, 1, 4);\r\n            tableLayoutPanel1.Controls.Add(label15, 0, 4);\r\n            tableLayoutPanel1.Controls.Add(labelRestorePointCreated, 1, 3);\r\n            tableLayoutPanel1.Controls.Add(label13, 0, 3);\r\n            tableLayoutPanel1.Controls.Add(labelFilesStillUsed, 1, 2);\r\n            tableLayoutPanel1.Controls.Add(label11, 0, 2);\r\n            tableLayoutPanel1.Controls.Add(labelTotalSize, 1, 1);\r\n            tableLayoutPanel1.Controls.Add(label9, 0, 1);\r\n            tableLayoutPanel1.Controls.Add(labelApps, 1, 0);\r\n            tableLayoutPanel1.Controls.Add(label7, 0, 0);\r\n            tableLayoutPanel1.Name = \"tableLayoutPanel1\";\r\n            // \r\n            // labelOther\r\n            // \r\n            resources.ApplyResources(labelOther, \"labelOther\");\r\n            labelOther.Name = \"labelOther\";\r\n            // \r\n            // label19\r\n            // \r\n            resources.ApplyResources(label19, \"label19\");\r\n            label19.Name = \"label19\";\r\n            // \r\n            // labelConcurrentEnabled\r\n            // \r\n            resources.ApplyResources(labelConcurrentEnabled, \"labelConcurrentEnabled\");\r\n            labelConcurrentEnabled.Name = \"labelConcurrentEnabled\";\r\n            // \r\n            // label17\r\n            // \r\n            resources.ApplyResources(label17, \"label17\");\r\n            label17.Name = \"label17\";\r\n            // \r\n            // labelWillBeSilent\r\n            // \r\n            resources.ApplyResources(labelWillBeSilent, \"labelWillBeSilent\");\r\n            labelWillBeSilent.Name = \"labelWillBeSilent\";\r\n            // \r\n            // label15\r\n            // \r\n            resources.ApplyResources(label15, \"label15\");\r\n            label15.Name = \"label15\";\r\n            // \r\n            // labelRestorePointCreated\r\n            // \r\n            resources.ApplyResources(labelRestorePointCreated, \"labelRestorePointCreated\");\r\n            labelRestorePointCreated.Name = \"labelRestorePointCreated\";\r\n            // \r\n            // label13\r\n            // \r\n            resources.ApplyResources(label13, \"label13\");\r\n            label13.Name = \"label13\";\r\n            // \r\n            // labelFilesStillUsed\r\n            // \r\n            resources.ApplyResources(labelFilesStillUsed, \"labelFilesStillUsed\");\r\n            labelFilesStillUsed.Name = \"labelFilesStillUsed\";\r\n            // \r\n            // label11\r\n            // \r\n            resources.ApplyResources(label11, \"label11\");\r\n            label11.Name = \"label11\";\r\n            // \r\n            // labelTotalSize\r\n            // \r\n            resources.ApplyResources(labelTotalSize, \"labelTotalSize\");\r\n            labelTotalSize.Name = \"labelTotalSize\";\r\n            // \r\n            // label9\r\n            // \r\n            resources.ApplyResources(label9, \"label9\");\r\n            label9.Name = \"label9\";\r\n            // \r\n            // labelApps\r\n            // \r\n            labelApps.AutoEllipsis = true;\r\n            resources.ApplyResources(labelApps, \"labelApps\");\r\n            labelApps.Name = \"labelApps\";\r\n            // \r\n            // label7\r\n            // \r\n            resources.ApplyResources(label7, \"label7\");\r\n            label7.Name = \"label7\";\r\n            // \r\n            // button2\r\n            // \r\n            resources.ApplyResources(button2, \"button2\");\r\n            button2.Name = \"button2\";\r\n            button2.UseVisualStyleBackColor = true;\r\n            button2.Click += button2_Click;\r\n            // \r\n            // flowLayoutPanel2\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel2, \"flowLayoutPanel2\");\r\n            flowLayoutPanel2.Controls.Add(label6);\r\n            flowLayoutPanel2.Name = \"flowLayoutPanel2\";\r\n            // \r\n            // label6\r\n            // \r\n            resources.ApplyResources(label6, \"label6\");\r\n            flowLayoutPanel2.SetFlowBreak(label6, true);\r\n            label6.Name = \"label6\";\r\n            // \r\n            // BeginUninstallTaskWizard\r\n            // \r\n            AcceptButton = button2;\r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            BackColor = System.Drawing.SystemColors.ControlLightLight;\r\n            CancelButton = buttonExit;\r\n            Controls.Add(panel1);\r\n            Controls.Add(panelNavigation);\r\n            Name = \"BeginUninstallTaskWizard\";\r\n            FormClosed += BeginUninstallTaskWizard_FormClosed;\r\n            panelNavigation.ResumeLayout(false);\r\n            panelNavigation.PerformLayout();\r\n            panel1.ResumeLayout(false);\r\n            tabControl1.ResumeLayout(false);\r\n            tabPage1.ResumeLayout(false);\r\n            tabPage1.PerformLayout();\r\n            flowLayoutPanel5.ResumeLayout(false);\r\n            flowLayoutPanel5.PerformLayout();\r\n            tabPage2.ResumeLayout(false);\r\n            tabPage2.PerformLayout();\r\n            flowLayoutPanel4.ResumeLayout(false);\r\n            flowLayoutPanel4.PerformLayout();\r\n            tabPage3.ResumeLayout(false);\r\n            tabPage3.PerformLayout();\r\n            flowLayoutPanel3.ResumeLayout(false);\r\n            flowLayoutPanel3.PerformLayout();\r\n            tabPage4.ResumeLayout(false);\r\n            tabPage4.PerformLayout();\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            tabPage5.ResumeLayout(false);\r\n            tabPage5.PerformLayout();\r\n            tableLayoutPanel1.ResumeLayout(false);\r\n            tableLayoutPanel1.PerformLayout();\r\n            flowLayoutPanel2.ResumeLayout(false);\r\n            flowLayoutPanel2.PerformLayout();\r\n            ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n        private System.Windows.Forms.Panel panelNavigation;\r\n        private System.Windows.Forms.Label labelProgress;\r\n        private System.Windows.Forms.Button buttonExit;\r\n        private System.Windows.Forms.Button buttonPrev;\r\n        private System.Windows.Forms.Panel panel4;\r\n        private System.Windows.Forms.Button buttonNext;\r\n        private System.Windows.Forms.TabPage tabPage2;\r\n        private System.Windows.Forms.Panel panel1;\r\n        private TabControlWithoutHeader tabControl1;\r\n        private System.Windows.Forms.TabPage tabPage1;\r\n        private RelatedUninstallerAdder relatedUninstallerAdder1;\r\n        private UninstallConfirmation uninstallConfirmation1;\r\n        private System.Windows.Forms.TabPage tabPage3;\r\n        private Klocman.Forms.ProcessWaiterControl processWaiterControl1;\r\n        private System.Windows.Forms.TabPage tabPage4;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;\r\n        private UninstallationSettings uninstallationSettings1;\r\n        private System.Windows.Forms.Label label5;\r\n        private System.Windows.Forms.TabPage tabPage5;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;\r\n        private System.Windows.Forms.Label label6;\r\n        private System.Windows.Forms.Button button2;\r\n        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;\r\n        private System.Windows.Forms.Label labelOther;\r\n        private System.Windows.Forms.Label label19;\r\n        private System.Windows.Forms.Label labelConcurrentEnabled;\r\n        private System.Windows.Forms.Label label17;\r\n        private System.Windows.Forms.Label labelWillBeSilent;\r\n        private System.Windows.Forms.Label label15;\r\n        private System.Windows.Forms.Label labelRestorePointCreated;\r\n        private System.Windows.Forms.Label label13;\r\n        private System.Windows.Forms.Label labelFilesStillUsed;\r\n        private System.Windows.Forms.Label label11;\r\n        private System.Windows.Forms.Label labelTotalSize;\r\n        private System.Windows.Forms.Label label9;\r\n        private System.Windows.Forms.Label labelApps;\r\n        private System.Windows.Forms.Label label7;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3;\r\n        private System.Windows.Forms.Label label2;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel5;\r\n        private System.Windows.Forms.Label p1Heading;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel4;\r\n        private System.Windows.Forms.Label label1;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>الغاء الامر</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>للخلف</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>استمرار</value>\r\n  </data>\r\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\r\n    <value>التطبيقات ذات الصلة التي ترغب في الغاء تثبيتها</value>\r\n  </data>\r\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\r\n    <value>ذات صلة</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>تاكد من ان كل شيء ادناه امن لالغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\r\n    <value>التاكيد</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>قد تحتاج بعض التطبيقات لتكون مغلقة قبل الغاء تثبيتها</value>\r\n  </data>\r\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\r\n    <value>تشغيل</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>انشاء نقطه استعاده قبل الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"label4.Text\" xml:space=\"preserve\">\r\n    <value>يمكنك انشاء نقطه استعاده النظام الى تسجيل النسخ الاحتياطي ، وبعض الاعدادات والملفات. من المستحسن انشاء نقطه استعاده قبل ازاله برامج التشغيل وتطبيقات النظام الهامه.</value>\r\n  </data>\r\n  <data name=\"label8.Text\" xml:space=\"preserve\">\r\n    <value>تحذير: يجب تمكين استعاده النظام لكي يعمل هذا!</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>تغيير اعدادات الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\r\n    <value>الاعدادات</value>\r\n  </data>\r\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label19.Text\" xml:space=\"preserve\">\r\n    <value>غيرها/متفرقات</value>\r\n  </data>\r\n  <data name=\"label17.Text\" xml:space=\"preserve\">\r\n    <value>تم تمكين الغاء التثبيت المتزامن</value>\r\n  </data>\r\n  <data name=\"label15.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت سيكون صامتا</value>\r\n  </data>\r\n  <data name=\"label13.Text\" xml:space=\"preserve\">\r\n    <value>انشاء نقطه استعاده جديده</value>\r\n  </data>\r\n  <data name=\"label11.Text\" xml:space=\"preserve\">\r\n    <value>لا تزال تستخدم الملفات من قبل تشغيل العمليات</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>الحجم الإجمالي المقدر</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>تطبيقات لالغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>بدء الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>الرجاء التاكد من صحة المعلومات التالية قبل بدء عمليه الغاء التثبيت. هذه هي الفرصة الاخيره!</value>\r\n  </data>\r\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\r\n    <value>نهائي</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>بدء مهمة الغاء تثبيت جديده</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions;\r\nusing BulkCrapUninstaller.Functions.Tools;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman;\r\nusing Klocman.Extensions;\r\nusing Klocman.IO;\r\nusing Klocman.Localising;\r\nusing UninstallTools;\r\nusing UninstallTools.Factory;\r\nusing UninstallTools.Uninstaller;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class BeginUninstallTaskWizard : Form\r\n    {\r\n        private bool _anyRelatedUninstallers;\r\n        private List<ApplicationUninstallerEntry> _otherUninstallers;\r\n        private int _previousPageNumber;\r\n        private bool _quiet;\r\n        private ICollection<ApplicationUninstallerEntry> _selectedUninstallers;\r\n\r\n        public BeginUninstallTaskWizard()\r\n        {\r\n            InitializeComponent();\r\n\r\n            Icon = MessageBoxes.DefaultOwner.Icon;\r\n            DialogResult = DialogResult.Cancel;\r\n\r\n            tabControl1.TabIndex = 0;\r\n        }\r\n\r\n        private int PageNumber\r\n        {\r\n            get { return tabControl1.SelectedIndex; }\r\n            set\r\n            {\r\n                tabControl1.SelectedIndex = value;\r\n                UpdateState();\r\n            }\r\n        }\r\n\r\n        public IReadOnlyList<BulkUninstallEntry> Results { get; private set; }\r\n\r\n        private void button2_Click(object sender, EventArgs e)\r\n        {\r\n            Results = uninstallConfirmation1.GetResults().ToArray();\r\n\r\n            DialogResult = DialogResult.OK;\r\n            Close();\r\n        }\r\n\r\n        private void buttonNext_Click(object sender, EventArgs e)\r\n        {\r\n            PageNumber = Math.Min(tabControl1.TabCount - 1, PageNumber + 1);\r\n        }\r\n\r\n        private void buttonPrev_Click(object sender, EventArgs e)\r\n        {\r\n            PageNumber = Math.Max(0, PageNumber - 1);\r\n        }\r\n\r\n        private List<BulkUninstallEntry> ConvertToTaskEntries(IEnumerable<ApplicationUninstallerEntry> targets)\r\n        {\r\n            var targetList = new List<BulkUninstallEntry>();\r\n\r\n            foreach (var target in targets)\r\n            {\r\n                var tempStatus = UninstallStatus.Waiting;\r\n                if (!target.IsValid)\r\n                    tempStatus = UninstallStatus.Invalid;\r\n                else if (!Settings.Default.AdvancedDisableProtection && target.IsProtected)\r\n                    tempStatus = UninstallStatus.Protected;\r\n\r\n                var silentPossible = _quiet && target.QuietUninstallPossible;\r\n\r\n                targetList.Add(new BulkUninstallEntry(target, silentPossible, tempStatus));\r\n            }\r\n\r\n            return targetList;\r\n        }\r\n\r\n        private static IEnumerable<ApplicationUninstallerEntry> GetRelatedUninstallers(\r\n            ApplicationUninstallerEntry thisUninstaller, IEnumerable<ApplicationUninstallerEntry> other)\r\n        {\r\n            return other.Where(y => ApplicationEntryTools.AreEntriesRelated(thisUninstaller, y, -3));\r\n        }\r\n\r\n        public void Initialize(ICollection<ApplicationUninstallerEntry> selectedUninstallers,\r\n            ICollection<ApplicationUninstallerEntry> allUninstallers, bool quiet)\r\n        {\r\n            _quiet = quiet;\r\n            _selectedUninstallers = selectedUninstallers;\r\n\r\n            _otherUninstallers = allUninstallers\r\n                .Except(_selectedUninstallers)\r\n                .Where(x => !x.SystemComponent && !x.IsProtected)\r\n                .ToList();\r\n\r\n            var relatedUninstallers = _otherUninstallers.Select(\r\n                x => new { Entry = x, Related = GetRelatedUninstallers(x, _selectedUninstallers).ToList() })\r\n                .Where(x => x.Related.Any()).ToList();\r\n\r\n            relatedUninstallerAdder1.SetRelatedApps(relatedUninstallers\r\n                .Select(x => new RelatedUninstallerAdder.RelatedApplicationEntry(x.Entry, x.Related)));\r\n\r\n            _anyRelatedUninstallers = relatedUninstallers.Any();\r\n            if (!_anyRelatedUninstallers)\r\n                PageNumber = 1;\r\n        }\r\n\r\n        private void processWaiterControl1_AllProcessesClosed(object sender, EventArgs e)\r\n        {\r\n            //if (PageNumber == 2)\r\n            //    PageNumber = 3;\r\n            //todo show greeen text all closed? or skip when clicking next? slow\r\n        }\r\n\r\n        private static List<BulkUninstallEntry> SortTaskEntryList(List<BulkUninstallEntry> taskEntries)\r\n        {\r\n            return Settings.Default.AdvancedIntelligentUninstallerSorting\r\n                ? AppUninstaller.SortIntelligently(taskEntries).ToList()\r\n                : taskEntries.OrderBy(x => x.UninstallerEntry.DisplayName).ToList();\r\n        }\r\n\r\n        private void UpdateState()\r\n        {\r\n            UseWaitCursor = true;\r\n            Application.DoEvents();\r\n\r\n            switch (PageNumber)\r\n            {\r\n                case 0:\r\n                    break;\r\n\r\n                case 1:\r\n                    {\r\n                        processWaiterControl1.StopUpdating();\r\n\r\n                        var additionals = relatedUninstallerAdder1.GetResults();\r\n                        var taskEntries = ConvertToTaskEntries(_selectedUninstallers.Concat(additionals));\r\n                        taskEntries = SortTaskEntryList(taskEntries);\r\n                        uninstallConfirmation1.SetRelatedApps(taskEntries);\r\n                    }\r\n                    break;\r\n\r\n                case 2:\r\n                    {\r\n                        /*if (taskEntries == null || taskEntries.Count == 0) return;*/\r\n\r\n                        var selectedTaskEntries = uninstallConfirmation1.GetResults().ToList();\r\n\r\n                        if (!selectedTaskEntries.Any())\r\n                        {\r\n                            MessageBoxes.NoUninstallersSelectedInfo();\r\n\r\n                            PageNumber = 1;\r\n                            return;\r\n                        }\r\n\r\n                        var relatedPids = AppUninstaller.GetRelatedProcessIds(\r\n                            selectedTaskEntries.Select(x => x.UninstallerEntry), !_quiet);\r\n\r\n                        if (relatedPids.Length == 0)\r\n                        {\r\n                            PageNumber = _previousPageNumber < 2 ? 3 : 1;\r\n                            return;\r\n                        }\r\n\r\n                        processWaiterControl1.Initialize(relatedPids, !_quiet);\r\n                        processWaiterControl1.StartUpdating();\r\n                    }\r\n                    break;\r\n\r\n                case 3: // Settings\r\n                    processWaiterControl1.StopUpdating();\r\n                    break;\r\n\r\n                case 4: // Final\r\n                    {\r\n                        var taskEntries = uninstallConfirmation1.GetResults().ToList();\r\n\r\n                        labelApps.Text = string.Join(\", \",\r\n                            taskEntries.Select(x => x.UninstallerEntry.DisplayName).OrderBy(x => x).ToArray());\r\n                        labelTotalSize.Text = FileSize.SumFileSizes(taskEntries.Select(x => x.UninstallerEntry.EstimatedSize)).ToString();\r\n\r\n                        labelConcurrentEnabled.Text = Settings.Default.UninstallConcurrency.ToYesNo();\r\n                        labelFilesStillUsed.Text = processWaiterControl1.ProcessesStillRunning.ToYesNo();\r\n                        labelRestorePointCreated.Text = (SysRestore.SysRestoreAvailable() ? Settings.Default.MessagesRestorePoints : YesNoAsk.No).GetLocalisedName();\r\n                        labelWillBeSilent.Text = _quiet.ToYesNo();\r\n\r\n                        labelOther.Text = Settings.Default.AdvancedSimulate ? \"Simulating\" : \"-\";\r\n                    }\r\n                    break;\r\n            }\r\n\r\n            labelProgress.Text = PageNumber + 1 + \" / \" + tabControl1.TabCount;\r\n            buttonPrev.Enabled = PageNumber > 0 && (PageNumber != 1 || _anyRelatedUninstallers);\r\n            buttonNext.Enabled = PageNumber + 1 < tabControl1.TabCount;\r\n\r\n            UseWaitCursor = false;\r\n\r\n            _previousPageNumber = PageNumber;\r\n        }\r\n\r\n        private void BeginUninstallTaskWizard_FormClosed(object sender, FormClosedEventArgs e)\r\n        {\r\n            if (DialogResult != DialogResult.OK)\r\n                SystemRestore.CancelSysRestore();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Zrušit</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Zpět</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Pokračovat</value>\r\n  </data>\r\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\r\n    <value>Související aplikace, které budete chtít odinstalovat</value>\r\n  </data>\r\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\r\n    <value>Související</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Potvrďte že všechno níže chcete bezpečně odinstalovat</value>\r\n  </data>\r\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\r\n    <value>Potvrdit</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Před odinstalací může být nutné některé aplikace zavřít</value>\r\n  </data>\r\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\r\n    <value>Spustit</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Před odinstalováním vytvořte bod obnovení</value>\r\n  </data>\r\n  <data name=\"label4.Text\" xml:space=\"preserve\">\r\n    <value>Můžete vytvořit bod obnovení systému, zálohu registru, některá nastavení a soubory. Doporučujeme vytvořit bod obnovení před odebráním ovladačů a důležitých systémových aplikací.</value>\r\n  </data>\r\n  <data name=\"label8.Text\" xml:space=\"preserve\">\r\n    <value>Upozornění: obnovení systému musí být povoleno, aby to fungovalo!</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Změnit nastavení odinstalace</value>\r\n  </data>\r\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\r\n    <value>Nastavení</value>\r\n  </data>\r\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label19.Text\" xml:space=\"preserve\">\r\n    <value>Ostatní / Různé</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label17.Text\" xml:space=\"preserve\">\r\n    <value>Souběžná odinstalace je povolena.</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label15.Text\" xml:space=\"preserve\">\r\n    <value>Tichá odinstalace</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label13.Text\" xml:space=\"preserve\">\r\n    <value>Vytvořit nový bod obnovení</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label11.Text\" xml:space=\"preserve\">\r\n    <value>Soubory jsou stále používány spuštěnými procesy.</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Celková odhadovaná velikost</value>\r\n  </data>\r\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Aplikace k odinstalování</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>ZAHÁJENÍ ODINSTALACE</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Před zahájením odinstalace se přesvědčte, zda jsou správné následující informace. Tohle je poslední šance!</value>\r\n  </data>\r\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\r\n    <value>Závěr</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Zahájit novou odinstalační úlohu</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1/6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>Abbruch</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>Zurück</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>Weiter</value>\n  </data>\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\n    <value>Verwandte Anwendungen, die Sie möglicherweise deinstallieren möchten</value>\n  </data>\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\n    <value>Verwandt</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Bestätigen Sie, dass alles, was unten aufgeführt ist, sicher deinstalliert werden kann</value>\n  </data>\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\n    <value>Bestätigung</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Einige Anwendungen müssen geschlossen werden, bevor sie deinstalliert werden können</value>\n  </data>\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\n    <value>Laufende Programme</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Wiederherstellungspunkt vor dem Deinstallieren erzeugen</value>\n  </data>\n  <data name=\"label4.Text\" xml:space=\"preserve\">\n    <value>Sie können einen Systemwiederherstellungspunkt für die Backup-Registrierung, einigen Einstellungen und Dateien erstellen. Es wird empfohlen, vor dem Entfernen von Treibern und wichtigen Systemanwendungen einen Wiederherstellungspunkt zu erstellen.</value>\n  </data>\n  <data name=\"label8.Text\" xml:space=\"preserve\">\n    <value>Achtung: Die Systemwiederherstellung muss aktiviert sein, damit dies funktioniert</value>\n  </data>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>Ändere Uninstall Einstellungen</value>\n  </data>\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\n    <value>Einstellungen</value>\n  </data>\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label19.Text\" xml:space=\"preserve\">\n    <value>Anderes / Verschiedenes</value>\n  </data>\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label17.Text\" xml:space=\"preserve\">\n    <value>Die gleichzeitige Deinstallation ist aktiviert</value>\n  </data>\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label15.Text\" xml:space=\"preserve\">\n    <value>Die Installation wird \"still\" sein</value>\n  </data>\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label13.Text\" xml:space=\"preserve\">\n    <value>Einen neuen Wiederherstellungspunkt setzen</value>\n  </data>\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label11.Text\" xml:space=\"preserve\">\n    <value>Dateien werden weiterhin von laufenden Prozessen verwendet</value>\n  </data>\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>Geschätzte Gesamtgröße</value>\n  </data>\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>Anwendungen zum deinstallieren</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>STARTE DEINSTALLATION</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>Bitte stellen Sie sicher, dass die folgenden Informationen korrekt sind, bevor Sie mit der Deinstallation beginnen. Das ist die letzte Chance</value>\n  </data>\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\n    <value>Ende</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Starte einen neuen Deinstallationstask</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Cancelar</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Atrás</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Continuar</value>\r\n  </data>\r\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\r\n    <value>Aplicaciones relacionadas que quizás quieras desinstalar</value>\r\n  </data>\r\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\r\n    <value>Relacionado</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Confirme que todo lo que se muestra a continuación sea seguro para desinstalar</value>\r\n  </data>\r\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\r\n    <value>Confirmación</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Algunas aplicaciones pueden necesitar cerrarse antes de desinstalar</value>\r\n  </data>\r\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\r\n    <value>Ejecutando</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Crear un punto de restauración antes de desinstalar</value>\r\n  </data>\r\n  <data name=\"label4.Text\" xml:space=\"preserve\">\r\n    <value>Puede crear un punto de restauración del sistema para hacer una copia de seguridad del registro, algunas configuraciones y archivos. Se recomienda crear un punto de restauración antes de eliminar los controladores y las aplicaciones importantes del sistema.</value>\r\n  </data>\r\n  <data name=\"label8.Text\" xml:space=\"preserve\">\r\n    <value>Advertencia: ¡La restauración del sistema debe estar habilitado para que esto funcione!</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Cambiar la configuración de desinstalación</value>\r\n  </data>\r\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\r\n    <value>Configuración</value>\r\n  </data>\r\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label19.Text\" xml:space=\"preserve\">\r\n    <value>Otros / Varios</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label17.Text\" xml:space=\"preserve\">\r\n    <value>La desinstalación simultánea está habilitada</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label15.Text\" xml:space=\"preserve\">\r\n    <value>La desinstalación será silenciosa</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label13.Text\" xml:space=\"preserve\">\r\n    <value>Crear un nuevo punto de restauración</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label11.Text\" xml:space=\"preserve\">\r\n    <value>Los archivos siguen siendo usados por los procesos en ejecución</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Tamaño total estimado</value>\r\n  </data>\r\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Aplicaciones a desinstalar</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>INICIAR LA DESINSTALACIÓN</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Asegúrese de que la siguiente información sea correcta antes de comenzar la desinstalación. ¡Esta es la última oportunidad!</value>\r\n  </data>\r\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\r\n    <value>Finalización</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Iniciar nueva tarea de desinstalación</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Annuler</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Précédent</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Continuer</value>\r\n  </data>\r\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\r\n    <value>Applications connexes que vous pouvez désinstaller</value>\r\n  </data>\r\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\r\n    <value>Connexes</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Confirmez que tout ci-dessous est à désinstaller avec certitude</value>\r\n  </data>\r\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\r\n    <value>Confirmation</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Certaines applications doivent peut-être être fermées avant désinstallation</value>\r\n  </data>\r\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\r\n    <value>Applis en cours</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Changer les réglages de désinstallation</value>\r\n  </data>\r\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\r\n    <value>Réglages</value>\r\n  </data>\r\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"label19.Text\" xml:space=\"preserve\">\r\n    <value>Autre / Divers</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"label17.Text\" xml:space=\"preserve\">\r\n    <value>La désinstallation concurrence est activée</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"label15.Text\" xml:space=\"preserve\">\r\n    <value>La désinstallation sera silencieuse</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"label13.Text\" xml:space=\"preserve\">\r\n    <value>Créer un nouveau point de restauration</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"label11.Text\" xml:space=\"preserve\">\r\n    <value>Des fichiers sont encore utilisés par des processus en cours</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Taille totale estimée</value>\r\n  </data>\r\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Applications à désinstaller</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>COMMENCER LA DESINSTALLATION</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Assurez-vous que les informations suivantes sont correctes avant de commencer la désinstallation. C'est la dernière chance !</value>\r\n  </data>\r\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\r\n    <value>Final</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Commencer une nouvelle tâche de désinstallation</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1 / 6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>Mégse</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>Vissza</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>Tovább</value>\n  </data>\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\n    <value>Kapcsolódó</value>\n  </data>\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\n    <value>Megerősítés</value>\n  </data>\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\n    <value>Futó alkalmazások</value>\n  </data>\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\n    <value>Beállítások</value>\n  </data>\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label19.Text\" xml:space=\"preserve\">\n    <value>Egyéb</value>\n  </data>\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label17.Text\" xml:space=\"preserve\">\n    <value>Egyidejű eltávolítás engedélyezve van</value>\n  </data>\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label15.Text\" xml:space=\"preserve\">\n    <value>Csendes eltávolítás</value>\n  </data>\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label13.Text\" xml:space=\"preserve\">\n    <value>Visszaállítási pont létrehozása</value>\n  </data>\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label11.Text\" xml:space=\"preserve\">\n    <value>Futó programok használják a fájlokat</value>\n  </data>\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>Becsült teljes méret</value>\n  </data>\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>Eltávolítandó alkalmazások</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>ELTÁVOLÍTÁS INDÍTÁSA</value>\n  </data>\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\n    <value>Vége</value>\n  </data>\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\n    <value>Hasonló alkalmazások, amelyeket esetleg érdemes eltávolítani</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Erősítse meg, hogy az alábbiak közül mindent biztonságosan el lehet távolítani</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Egyes alkalmazásokat az eltávolítás előtt lehet, hogy be kell zárni.</value>\n  </data>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>Eltávolítási beállítások módosítása</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>Az eltávolítás megkezdése előtt győződjön meg arról, hogy az alábbi adatok helyesek. Ez az utolsó lehetőség!</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Új eltávolítási feladat indítása</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Annulla</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Indietro</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Continua</value>\r\n  </data>\r\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\r\n    <value>Applicazioni associate che potresti voler disinstallare</value>\r\n  </data>\r\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\r\n    <value>Associato</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Conferma che ogni elemento in basso si può disinstallare in sicurezza</value>\r\n  </data>\r\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\r\n    <value>Conferma</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Prima della disinstallazione potrebbe essere necessario chiudere le applicazioni</value>\r\n  </data>\r\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\r\n    <value>In esecuzione</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Prima della disinstallazione crea un punto di ripristino</value>\r\n  </data>\r\n  <data name=\"label4.Text\" xml:space=\"preserve\">\r\n    <value>Puoi creare un punto di ripristino del sistema per salvare il registro, alcune configurazioni e file. Ti raccomandiamo di creare un punto di ripristino prima di rimuovere le applicazioni.</value>\r\n  </data>\r\n  <data name=\"label8.Text\" xml:space=\"preserve\">\r\n    <value>Attenzione: per funzionare il 'Ripristino di sistema' deve essere abilitato!</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Modifica impostazioni disinstallazione</value>\r\n  </data>\r\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\r\n    <value>Impostazioni</value>\r\n  </data>\r\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label19.Text\" xml:space=\"preserve\">\r\n    <value>Altro / varie</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label17.Text\" xml:space=\"preserve\">\r\n    <value>La disinstallazione simultanea è abilitata</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label15.Text\" xml:space=\"preserve\">\r\n    <value>La disinstallazione sarà silenziosa</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label13.Text\" xml:space=\"preserve\">\r\n    <value>Crea un nuovo punto di ripristino</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label11.Text\" xml:space=\"preserve\">\r\n    <value>I file sono ancora in uso da processi in esecuzione</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Dimensione totale stimata</value>\r\n  </data>\r\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Applicazioni da disinstallare</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>AVVIO DISINSTALLAZIONE</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Prima di avviare la disinstallazione assicurati che le seguenti informazioni siano corrette. Questa è l'ultima possibilità!</value>\r\n  </data>\r\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\r\n    <value>Finale</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Avviamento nuova procedura di disinstallazione</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1 / 6</value>\n  </data>\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>戻る</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>続ける</value>\n  </data>\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\n    <value>関連</value>\n  </data>\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\n    <value>確認</value>\n  </data>\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\n    <value>実行中のアプリ</value>\n  </data>\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"label19.Text\" xml:space=\"preserve\">\n    <value>その他</value>\n  </data>\n  <data name=\"label17.Text\" xml:space=\"preserve\">\n    <value>同時アンインストールが有効になっています</value>\n  </data>\n  <data name=\"label15.Text\" xml:space=\"preserve\">\n    <value>アンインストールはサイレントで行われます</value>\n  </data>\n  <data name=\"label13.Text\" xml:space=\"preserve\">\n    <value>新しい復元ポイントを作成</value>\n  </data>\n  <data name=\"label11.Text\" xml:space=\"preserve\">\n    <value>ファイルが実行中のプロセスによってまだ使用されています</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>推定合計サイズ</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>アンインストールするアプリケーション</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>アンインストールを開始</value>\n  </data>\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\n    <value>最終確認</value>\n  </data>\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\n    <value>アンインストールしたい関連アプリケーション</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>以下のすべてが安全にアンインストールできることを確認してください</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>一部のアプリケーションはアンインストール前に閉じる必要があります</value>\n  </data>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>アンインストール設定を変更</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>アンインストールを開始する前に、以下の情報が正しいことを確認してください。これが最後のチャンスです！</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>新しいアンインストールタスクを開始</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Annuleren</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Vorige</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Volgende</value>\r\n  </data>\r\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\r\n    <value>Gerelateerde programma's die u wilt de-installeren</value>\r\n  </data>\r\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\r\n    <value>Gerelateerd</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Bevestig dat alles hieronder veilig is om te de-installeren</value>\r\n  </data>\r\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\r\n    <value>Bevestiging</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Sommige programma's moeten mogelijk worden afgesloten voor de-installatie</value>\r\n  </data>\r\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\r\n    <value>Loopt nog</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Maak een herstelpunt alvorens te de-installeren</value>\r\n  </data>\r\n  <data name=\"label4.Text\" xml:space=\"preserve\">\r\n    <value>U kunt een systeem herstelpunt maken voor een back-up van het register, sommige instellingen en bestanden. Het wordt aanbevolen om een herstelpunt te maken voor het verwijderen van stuurprogramma's en belangrijke systeem programma's.</value>\r\n  </data>\r\n  <data name=\"label8.Text\" xml:space=\"preserve\">\r\n    <value>Waarschuwing: Systeemherstel moet ingeschakeld zijn om dit te laten werken!</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Wijzig de-installatie instellingen</value>\r\n  </data>\r\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\r\n    <value>Instellingen</value>\r\n  </data>\r\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label19.Text\" xml:space=\"preserve\">\r\n    <value>Anders / Divers</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label17.Text\" xml:space=\"preserve\">\r\n    <value>Gelijktijdig de-installeren is ingeschakeld</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label15.Text\" xml:space=\"preserve\">\r\n    <value>De-installatie zal 'stil' verlopen</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label13.Text\" xml:space=\"preserve\">\r\n    <value>Maak een nieuw herstelpunt</value>\r\n  </data>\r\n  <data name=\"label11.Text\" xml:space=\"preserve\">\r\n    <value>Bestanden worden nog gebruikt door lopende processen</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Totaal geschatte grootte</value>\r\n  </data>\r\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Programma's om te de-installeren</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>START DE-INSTALLATIE</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Wees er van overtuigd dat de volgende informatie juist is, alvorens de de-installatie te starten. Dit is uw laatste kans!</value>\r\n  </data>\r\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\r\n    <value>Finale</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Start nieuwe de-installatie taak</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Anuluj</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Wstecz</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Dalej</value>\r\n  </data>\r\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\r\n    <value>Powiązane aplikacje które możesz odinstalować</value>\r\n  </data>\r\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\r\n    <value>Powiazane</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Potwierdź programy do odinstalowania</value>\r\n  </data>\r\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\r\n    <value>Potwierdzenie</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Niektóre aplikacje moga wymagac zamkniecia przed odinstalowaniem</value>\r\n  </data>\r\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\r\n    <value>Uruchomione</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Utwórz punkt przywracania przed odinstalowaniem</value>\r\n  </data>\r\n  <data name=\"label4.Text\" xml:space=\"preserve\">\r\n    <value>Możesz utworzyć systemowy punkt przywracania systemu (zachowuje rejestr, niektóre ustawienia i pliki). Zaleca się utworzenie punktu przywracania przed usunięciem sterowników i ważnych aplikacji systemowych.</value>\r\n  </data>\r\n  <data name=\"label8.Text\" xml:space=\"preserve\">\r\n    <value>Ostrzezenie: Przywracanie systemu musi byc wlaczone aby to dzialalo!</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Zmien ustawienia deinstalacji</value>\r\n  </data>\r\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\r\n    <value>Ustawienia</value>\r\n  </data>\r\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label19.Text\" xml:space=\"preserve\">\r\n    <value>Inne</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label17.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalowuj kilka równocześnie</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label15.Text\" xml:space=\"preserve\">\r\n    <value>Deinstalacja będzie cicha</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label13.Text\" xml:space=\"preserve\">\r\n    <value>Utwórz nowy punkt przywracania</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label11.Text\" xml:space=\"preserve\">\r\n    <value>Pliki są nadal używane przez procesy</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Całkowity szacowany rozmiar</value>\r\n  </data>\r\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Aplikacje do odinstalowania</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>ROZPOCZNIJ DEZINSTALACJĘ</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Przed rozpoczęciem deinstalacji upewnij się, że poniższe informacje są poprawne. To jest ostatnia szansa!</value>\r\n  </data>\r\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\r\n    <value>Final</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Rozpocznij nowe zadanie dezinstalacji</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1 / 6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>Voltar</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>Continuar</value>\n  </data>\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\n    <value>Relacionado</value>\n  </data>\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\n    <value>Confirmação</value>\n  </data>\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\n    <value>Aplicativos em execução</value>\n  </data>\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\n    <value>Configuração</value>\n  </data>\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\n    <value>|</value>\n  </data>\n  <data name=\"label19.Text\" xml:space=\"preserve\">\n    <value>Outros / Misc</value>\n  </data>\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\n    <value>|</value>\n  </data>\n  <data name=\"label17.Text\" xml:space=\"preserve\">\n    <value>Desinstalação simultâmea ativada</value>\n  </data>\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\n    <value>|</value>\n  </data>\n  <data name=\"label15.Text\" xml:space=\"preserve\">\n    <value>Desinstalação será silenciosa</value>\n  </data>\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\n    <value>|</value>\n  </data>\n  <data name=\"label13.Text\" xml:space=\"preserve\">\n    <value>Criar novo ponto de restauração</value>\n  </data>\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\n    <value>|</value>\n  </data>\n  <data name=\"label11.Text\" xml:space=\"preserve\">\n    <value>Arquivos em uso por processos em execução</value>\n  </data>\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\n    <value>|</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>Tamanho total estimado</value>\n  </data>\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\n    <value>|</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>Aplicações para desinstalar</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>COMEÇAR DESINSTALAÇÃO</value>\n  </data>\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\n    <value>Final</value>\n  </data>\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\n    <value>Aplicações relacionadas que talvez queira desinstalar</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Confirme que tudo abaixo é seguro para desinstalar</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Pode ser necessário fechar algumas aplicações antes de desinstalar</value>\n  </data>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>Mudar configuração de desinstalação</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>Por favor tenha certeza que as informações estão corretas antes de começar a desinstalação. Essa é a última chance!</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Iniciar uma nova tarefa de desinstalação</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1 / 6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>Recuar</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>Continuar</value>\n  </data>\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\n    <value>Aplicações relacionadas que possa querer desinstalar</value>\n  </data>\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\n    <value>Relacionado</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Confirme que é seguro desinstalar tudo o que é descrito abaixo</value>\n  </data>\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\n    <value>Confirmação</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Algumas aplicacões poderão ter de ser fechadas antes de serem desinstaladas.</value>\n  </data>\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\n    <value>A correr</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Criar um ponto de restauro antes de desinstalar</value>\n  </data>\n  <data name=\"label4.Text\" xml:space=\"preserve\">\n    <value>Pode criar um ponto de restauro do sistema para o registo de backup, de algumas configurações e de arquivos. Recomenda-se criar um ponto de restauro antes de remover drivers e aplicativos importantes do sistema.</value>\n  </data>\n  <data name=\"label8.Text\" xml:space=\"preserve\">\n    <value>Aviso: o restauro do sistema deve estar activo para que isto funcione!</value>\n  </data>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>Alterar as configurações de desinstalação</value>\n  </data>\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\n    <value>Configurações</value>\n  </data>\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label19.Text\" xml:space=\"preserve\">\n    <value>Outros / Miscelânea</value>\n  </data>\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label17.Text\" xml:space=\"preserve\">\n    <value>A desinstalação simultânea está activada</value>\n  </data>\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label15.Text\" xml:space=\"preserve\">\n    <value>A desinstalação far-se-á em segundo plano</value>\n  </data>\n  <data name=\"label13.Text\" xml:space=\"preserve\">\n    <value>Criar um novo ponto de restauro</value>\n  </data>\n  <data name=\"label11.Text\" xml:space=\"preserve\">\n    <value>Os arquivos ainda são a ser usados pelos processos em curso</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>Tamanho total estimado</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>Aplicações para desinstalar</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>COMEÇAR A DESINSTALAÇÃO</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>Certifique-se de que a seguinte informação está correcta antes de iniciar a desinstalação. Esta é a última oportunidade!</value>\n  </data>\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\n    <value>Final</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Inicie uma nova tarefa de desinstalação</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelProgress.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"labelProgress.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 9.75pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"labelProgress.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelProgress.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>123, 13</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelProgress.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelProgress.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>210, 28</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelProgress.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"labelProgress.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleCenter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelProgress.Name\" xml:space=\"preserve\">\r\n    <value>labelProgress</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelProgress.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelProgress.Parent\" xml:space=\"preserve\">\r\n    <value>panelNavigation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelProgress.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonExit.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonExit.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"buttonExit.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"buttonExit.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>13, 13</value>\r\n  </data>\r\n  <data name=\"buttonExit.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonExit.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>110, 28</value>\r\n  </data>\r\n  <data name=\"buttonExit.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Cancel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExit.Name\" xml:space=\"preserve\">\r\n    <value>buttonExit</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExit.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExit.Parent\" xml:space=\"preserve\">\r\n    <value>panelNavigation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExit.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonPrev.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"buttonPrev.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>333, 13</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 28</value>\r\n  </data>\r\n  <data name=\"buttonPrev.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Back</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonPrev.Name\" xml:space=\"preserve\">\r\n    <value>buttonPrev</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonPrev.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonPrev.Parent\" xml:space=\"preserve\">\r\n    <value>panelNavigation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonPrev.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"panel4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"panel4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>421, 13</value>\r\n  </data>\r\n  <data name=\"panel4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>12, 28</value>\r\n  </data>\r\n  <data name=\"panel4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Name\" xml:space=\"preserve\">\r\n    <value>panel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Parent\" xml:space=\"preserve\">\r\n    <value>panelNavigation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"buttonNext.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonNext.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"buttonNext.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"buttonNext.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>433, 13</value>\r\n  </data>\r\n  <data name=\"buttonNext.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonNext.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 28</value>\r\n  </data>\r\n  <data name=\"buttonNext.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Continue</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonNext.Name\" xml:space=\"preserve\">\r\n    <value>buttonNext</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonNext.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonNext.Parent\" xml:space=\"preserve\">\r\n    <value>panelNavigation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonNext.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"panelNavigation.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"panelNavigation.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 487</value>\r\n  </data>\r\n  <data name=\"panelNavigation.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panelNavigation.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>13, 13, 13, 13</value>\r\n  </data>\r\n  <data name=\"panelNavigation.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>534, 54</value>\r\n  </data>\r\n  <data name=\"panelNavigation.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panelNavigation.Name\" xml:space=\"preserve\">\r\n    <value>panelNavigation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panelNavigation.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panelNavigation.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panelNavigation.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"relatedUninstallerAdder1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"relatedUninstallerAdder1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 29</value>\r\n  </data>\r\n  <data name=\"relatedUninstallerAdder1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"relatedUninstallerAdder1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 7</value>\r\n  </data>\r\n  <data name=\"relatedUninstallerAdder1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>518, 427</value>\r\n  </data>\r\n  <data name=\"relatedUninstallerAdder1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;relatedUninstallerAdder1.Name\" xml:space=\"preserve\">\r\n    <value>relatedUninstallerAdder1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;relatedUninstallerAdder1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Forms.RelatedUninstallerAdder, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;relatedUninstallerAdder1.Parent\" xml:space=\"preserve\">\r\n    <value>tabPage1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;relatedUninstallerAdder1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1Heading.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1Heading.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"p1Heading.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p1Heading.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"p1Heading.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 0</value>\r\n  </data>\r\n  <data name=\"p1Heading.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p1Heading.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"p1Heading.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>437, 26</value>\r\n  </data>\r\n  <data name=\"p1Heading.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\r\n    <value>Related applications you might want to uninstall</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1Heading.Name\" xml:space=\"preserve\">\r\n    <value>p1Heading</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1Heading.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1Heading.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1Heading.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>518, 26</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel5.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel5.Parent\" xml:space=\"preserve\">\r\n    <value>tabPage1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel5.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"tabPage1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 24</value>\r\n  </data>\r\n  <data name=\"tabPage1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPage1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPage1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>526, 459</value>\r\n  </data>\r\n  <data name=\"tabPage1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\r\n    <value>Related</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage1.Name\" xml:space=\"preserve\">\r\n    <value>tabPage1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage1.Parent\" xml:space=\"preserve\">\r\n    <value>tabControl1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"uninstallConfirmation1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"uninstallConfirmation1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 75</value>\r\n  </data>\r\n  <data name=\"uninstallConfirmation1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"uninstallConfirmation1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 7</value>\r\n  </data>\r\n  <data name=\"uninstallConfirmation1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>184, 0</value>\r\n  </data>\r\n  <data name=\"uninstallConfirmation1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallConfirmation1.Name\" xml:space=\"preserve\">\r\n    <value>uninstallConfirmation1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallConfirmation1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Forms.UninstallConfirmation, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallConfirmation1.Parent\" xml:space=\"preserve\">\r\n    <value>tabPage2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallConfirmation1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label1.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"label1.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 0</value>\r\n  </data>\r\n  <data name=\"label1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"label1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>172, 72</value>\r\n  </data>\r\n  <data name=\"label1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>12</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Confirm that everything below is safe to uninstall</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Name\" xml:space=\"preserve\">\r\n    <value>label1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>184, 72</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>12</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.Parent\" xml:space=\"preserve\">\r\n    <value>tabPage2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"tabPage2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 44</value>\r\n  </data>\r\n  <data name=\"tabPage2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPage2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPage2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>192, 52</value>\r\n  </data>\r\n  <data name=\"tabPage2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\r\n    <value>Confirmation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage2.Name\" xml:space=\"preserve\">\r\n    <value>tabPage2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage2.Parent\" xml:space=\"preserve\">\r\n    <value>tabControl1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"processWaiterControl1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"processWaiterControl1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 98</value>\r\n  </data>\r\n  <data name=\"processWaiterControl1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"processWaiterControl1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 7</value>\r\n  </data>\r\n  <data name=\"processWaiterControl1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>184, 0</value>\r\n  </data>\r\n  <data name=\"processWaiterControl1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>13</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;processWaiterControl1.Name\" xml:space=\"preserve\">\r\n    <value>processWaiterControl1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;processWaiterControl1.Type\" xml:space=\"preserve\">\r\n    <value>Klocman.Forms.ProcessWaiterControl, KlocTools, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;processWaiterControl1.Parent\" xml:space=\"preserve\">\r\n    <value>tabPage3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;processWaiterControl1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label2.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"label2.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 0</value>\r\n  </data>\r\n  <data name=\"label2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"label2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>174, 95</value>\r\n  </data>\r\n  <data name=\"label2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>13</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Some applications might need to be closed before uninstalling</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Name\" xml:space=\"preserve\">\r\n    <value>label2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>184, 95</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>14</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.Parent\" xml:space=\"preserve\">\r\n    <value>tabPage3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"tabPage3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 44</value>\r\n  </data>\r\n  <data name=\"tabPage3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPage3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPage3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>192, 52</value>\r\n  </data>\r\n  <data name=\"tabPage3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\r\n    <value>Running apps</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage3.Name\" xml:space=\"preserve\">\r\n    <value>tabPage3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage3.Parent\" xml:space=\"preserve\">\r\n    <value>tabControl1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage3.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"tabPage4.AutoScroll\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>51, 167</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 3, 5, 3</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 7</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>73, 433</value>\r\n  </data>\r\n  <data name=\"uninstallationSettings1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallationSettings1.Name\" xml:space=\"preserve\">\r\n    <value>uninstallationSettings1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallationSettings1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Controls.UninstallationSettings, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallationSettings1.Parent\" xml:space=\"preserve\">\r\n    <value>tabPage4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;uninstallationSettings1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"label5.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label5.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label5.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"label5.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 0</value>\r\n  </data>\r\n  <data name=\"label5.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label5.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"label5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>65, 164</value>\r\n  </data>\r\n  <data name=\"label5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Change uninstallation settings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label5.Name\" xml:space=\"preserve\">\r\n    <value>label5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label5.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label5.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>51, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>73, 164</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.WrapContents\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>tabPage4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"tabPage4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 44</value>\r\n  </data>\r\n  <data name=\"tabPage4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPage4.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>51, 3, 51, 3</value>\r\n  </data>\r\n  <data name=\"tabPage4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>192, 52</value>\r\n  </data>\r\n  <data name=\"tabPage4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\r\n    <value>Settings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage4.Name\" xml:space=\"preserve\">\r\n    <value>tabPage4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage4.Parent\" xml:space=\"preserve\">\r\n    <value>tabControl1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage4.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"tabPage5.AutoScroll\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"tabPage5.AutoScrollMinSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>300, 400</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.CellBorderStyle\" type=\"System.Windows.Forms.TableLayoutPanelCellBorderStyle, System.Windows.Forms\">\r\n    <value>Single</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.ColumnCount\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"labelOther.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelOther.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"labelOther.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelOther.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>154, 250</value>\r\n  </data>\r\n  <data name=\"labelOther.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelOther.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>10, 23</value>\r\n  </data>\r\n  <data name=\"labelOther.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>13</value>\r\n  </data>\r\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelOther.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelOther.Name\" xml:space=\"preserve\">\r\n    <value>labelOther</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelOther.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelOther.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelOther.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label19.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label19.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"label19.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label19.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>72, 250</value>\r\n  </data>\r\n  <data name=\"label19.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label19.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>73, 23</value>\r\n  </data>\r\n  <data name=\"label19.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>12</value>\r\n  </data>\r\n  <data name=\"label19.Text\" xml:space=\"preserve\">\r\n    <value>Other / Misc</value>\r\n  </data>\r\n  <data name=\"label19.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleRight</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label19.Name\" xml:space=\"preserve\">\r\n    <value>label19</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label19.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label19.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label19.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>154, 226</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>10, 23</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>11</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelConcurrentEnabled.Name\" xml:space=\"preserve\">\r\n    <value>labelConcurrentEnabled</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelConcurrentEnabled.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelConcurrentEnabled.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelConcurrentEnabled.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"label17.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label17.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"label17.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label17.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>10, 226</value>\r\n  </data>\r\n  <data name=\"label17.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label17.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>135, 23</value>\r\n  </data>\r\n  <data name=\"label17.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"label17.Text\" xml:space=\"preserve\">\r\n    <value>Concurrent uninstallation is enabled</value>\r\n  </data>\r\n  <data name=\"label17.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleRight</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label17.Name\" xml:space=\"preserve\">\r\n    <value>label17</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label17.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label17.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label17.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>154, 202</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>10, 23</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWillBeSilent.Name\" xml:space=\"preserve\">\r\n    <value>labelWillBeSilent</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWillBeSilent.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWillBeSilent.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelWillBeSilent.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"label15.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label15.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"label15.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label15.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>28, 202</value>\r\n  </data>\r\n  <data name=\"label15.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label15.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>117, 23</value>\r\n  </data>\r\n  <data name=\"label15.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"label15.Text\" xml:space=\"preserve\">\r\n    <value>Uninstallation will be silent</value>\r\n  </data>\r\n  <data name=\"label15.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleRight</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label15.Name\" xml:space=\"preserve\">\r\n    <value>label15</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label15.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label15.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label15.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>154, 178</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>10, 23</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelRestorePointCreated.Name\" xml:space=\"preserve\">\r\n    <value>labelRestorePointCreated</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelRestorePointCreated.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelRestorePointCreated.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelRestorePointCreated.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"label13.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label13.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"label13.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label13.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>31, 178</value>\r\n  </data>\r\n  <data name=\"label13.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label13.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>114, 23</value>\r\n  </data>\r\n  <data name=\"label13.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"label13.Text\" xml:space=\"preserve\">\r\n    <value>Create a new restore point</value>\r\n  </data>\r\n  <data name=\"label13.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleRight</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label13.Name\" xml:space=\"preserve\">\r\n    <value>label13</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label13.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label13.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label13.ZOrder\" xml:space=\"preserve\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>154, 154</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>10, 23</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelFilesStillUsed.Name\" xml:space=\"preserve\">\r\n    <value>labelFilesStillUsed</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelFilesStillUsed.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelFilesStillUsed.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelFilesStillUsed.ZOrder\" xml:space=\"preserve\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"label11.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label11.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"label11.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label11.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>31, 154</value>\r\n  </data>\r\n  <data name=\"label11.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label11.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>114, 23</value>\r\n  </data>\r\n  <data name=\"label11.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"label11.Text\" xml:space=\"preserve\">\r\n    <value>Files are still used by running processes</value>\r\n  </data>\r\n  <data name=\"label11.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleRight</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label11.Name\" xml:space=\"preserve\">\r\n    <value>label11</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label11.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label11.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label11.ZOrder\" xml:space=\"preserve\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>154, 130</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>10, 23</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelTotalSize.Name\" xml:space=\"preserve\">\r\n    <value>labelTotalSize</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelTotalSize.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelTotalSize.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelTotalSize.ZOrder\" xml:space=\"preserve\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"label9.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label9.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"label9.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label9.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>36, 130</value>\r\n  </data>\r\n  <data name=\"label9.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label9.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>109, 23</value>\r\n  </data>\r\n  <data name=\"label9.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Total estimated size</value>\r\n  </data>\r\n  <data name=\"label9.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleRight</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label9.Name\" xml:space=\"preserve\">\r\n    <value>label9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label9.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label9.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label9.ZOrder\" xml:space=\"preserve\">\r\n    <value>11</value>\r\n  </data>\r\n  <data name=\"labelApps.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelApps.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"labelApps.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelApps.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>154, 14</value>\r\n  </data>\r\n  <data name=\"labelApps.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelApps.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>10, 115</value>\r\n  </data>\r\n  <data name=\"labelApps.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"labelApps.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelApps.Name\" xml:space=\"preserve\">\r\n    <value>labelApps</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelApps.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelApps.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelApps.ZOrder\" xml:space=\"preserve\">\r\n    <value>12</value>\r\n  </data>\r\n  <data name=\"label7.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label7.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"label7.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label7.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>10, 14</value>\r\n  </data>\r\n  <data name=\"label7.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label7.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>135, 115</value>\r\n  </data>\r\n  <data name=\"label7.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Applications to uninstall</value>\r\n  </data>\r\n  <data name=\"label7.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleRight</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label7.Name\" xml:space=\"preserve\">\r\n    <value>label7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label7.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label7.Parent\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label7.ZOrder\" xml:space=\"preserve\">\r\n    <value>13</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>45, 115</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 13, 0, 13</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.RowCount\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>300, 267</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tableLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>tableLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tableLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tableLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>tabPage5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tableLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"tableLayoutPanel1.LayoutSettings\" type=\"System.Windows.Forms.TableLayoutSettings, System.Windows.Forms\">\r\n    <value>&lt;?xml version=\"1.0\" encoding=\"utf-16\"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name=\"labelOther\" Row=\"6\" RowSpan=\"1\" Column=\"1\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"label19\" Row=\"6\" RowSpan=\"1\" Column=\"0\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"labelConcurrentEnabled\" Row=\"5\" RowSpan=\"1\" Column=\"1\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"label17\" Row=\"5\" RowSpan=\"1\" Column=\"0\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"labelWillBeSilent\" Row=\"4\" RowSpan=\"1\" Column=\"1\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"label15\" Row=\"4\" RowSpan=\"1\" Column=\"0\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"labelRestorePointCreated\" Row=\"3\" RowSpan=\"1\" Column=\"1\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"label13\" Row=\"3\" RowSpan=\"1\" Column=\"0\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"labelFilesStillUsed\" Row=\"2\" RowSpan=\"1\" Column=\"1\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"label11\" Row=\"2\" RowSpan=\"1\" Column=\"0\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"labelTotalSize\" Row=\"1\" RowSpan=\"1\" Column=\"1\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"label9\" Row=\"1\" RowSpan=\"1\" Column=\"0\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"labelApps\" Row=\"0\" RowSpan=\"1\" Column=\"1\" ColumnSpan=\"1\" /&gt;&lt;Control Name=\"label7\" Row=\"0\" RowSpan=\"1\" Column=\"0\" ColumnSpan=\"1\" /&gt;&lt;/Controls&gt;&lt;Columns Styles=\"Percent,49.83923,Percent,50.16077\" /&gt;&lt;Rows Styles=\"Absolute,115,Absolute,23,Absolute,23,Absolute,23,Absolute,23,Absolute,23,Absolute,23\" /&gt;&lt;/TableLayoutSettings&gt;</value>\r\n  </data>\r\n  <data name=\"button2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"button2.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"button2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>45, 382</value>\r\n  </data>\r\n  <data name=\"button2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"button2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>300, 38</value>\r\n  </data>\r\n  <data name=\"button2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>BEGIN UNINSTALLATION</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button2.Name\" xml:space=\"preserve\">\r\n    <value>button2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button2.Parent\" xml:space=\"preserve\">\r\n    <value>tabPage5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;button2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"label6.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label6.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label6.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"label6.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label6.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 0</value>\r\n  </data>\r\n  <data name=\"label6.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label6.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"label6.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>288, 95</value>\r\n  </data>\r\n  <data name=\"label6.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Please make sure the following information is correct before starting the uninstallation. This is the last chance!</value>\r\n  </data>\r\n  <data name=\"label6.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>TopCenter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label6.Name\" xml:space=\"preserve\">\r\n    <value>label6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label6.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label6.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label6.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>45, 20</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>300, 95</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Parent\" xml:space=\"preserve\">\r\n    <value>tabPage5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"tabPage5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 44</value>\r\n  </data>\r\n  <data name=\"tabPage5.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"tabPage5.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>45, 20, 45, 20</value>\r\n  </data>\r\n  <data name=\"tabPage5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>192, 52</value>\r\n  </data>\r\n  <data name=\"tabPage5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\r\n    <value>Final</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage5.Name\" xml:space=\"preserve\">\r\n    <value>tabPage5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage5.Parent\" xml:space=\"preserve\">\r\n    <value>tabControl1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabPage5.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"tabControl1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"tabControl1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"tabControl1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"tabControl1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>534, 487</value>\r\n  </data>\r\n  <data name=\"tabControl1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabControl1.Name\" xml:space=\"preserve\">\r\n    <value>tabControl1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabControl1.Type\" xml:space=\"preserve\">\r\n    <value>BulkCrapUninstaller.Controls.TabControlWithoutHeader, BCUninstaller, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabControl1.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;tabControl1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>534, 487</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>534, 541</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>500, 400</value>\r\n  </data>\r\n  <data name=\"$this.StartPosition\" type=\"System.Windows.Forms.FormStartPosition, System.Windows.Forms\">\r\n    <value>CenterParent</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Begin new uninstallation task</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>BeginUninstallTaskWizard</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Отмена</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Назад</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Продолжить</value>\r\n  </data>\r\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\r\n    <value>Связанные приложения, которые Вы, возможно, захотите удалить</value>\r\n  </data>\r\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\r\n    <value>Связанные</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Убедитесь, что всё, что ниже, безопасно для удаления</value>\r\n  </data>\r\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\r\n    <value>Подтверждение</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Некоторые приложения, возможно, потребуется закрыть перед удалением</value>\r\n  </data>\r\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\r\n    <value>Запущенно</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Создание точки восстановления перед удалением</value>\r\n  </data>\r\n  <data name=\"label4.Text\" xml:space=\"preserve\">\r\n    <value>Можно создать точку восстановления системы. Рекомендуется создать точку восстановления перед удалением драйверов и важных системных приложений.</value>\r\n  </data>\r\n  <data name=\"label8.Text\" xml:space=\"preserve\">\r\n    <value>Предупреждение: для этого должно быть включено восстановление системы!</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Изменение параметров удаления</value>\r\n  </data>\r\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\r\n    <value>Параметры</value>\r\n  </data>\r\n  <data name=\"label19.Text\" xml:space=\"preserve\">\r\n    <value>Другое / Разное</value>\r\n  </data>\r\n  <data name=\"label17.Text\" xml:space=\"preserve\">\r\n    <value>Одновременное удаление включено</value>\r\n  </data>\r\n  <data name=\"label15.Text\" xml:space=\"preserve\">\r\n    <value>Удаление будет тихим</value>\r\n  </data>\r\n  <data name=\"label13.Text\" xml:space=\"preserve\">\r\n    <value>Создание новой точки восстановления</value>\r\n  </data>\r\n  <data name=\"label11.Text\" xml:space=\"preserve\">\r\n    <value>Файлы используются запущенными процессами</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Общий оценочный размер</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Приложения для удаления</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>НАЧАТЬ УДАЛЕНИЕ</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Перед началом удаления убедитесь, что следующая информация верна. Это последний шанс!</value>\r\n  </data>\r\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\r\n    <value>Завершение</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Начать новую задачу удаления</value>\r\n  </data>\r\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\r\n    <value>|</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Prekliči</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Nazaj</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Nadaljuj</value>\r\n  </data>\r\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\r\n    <value>Povezane aplikacije, ki jih morda želite odstraniti</value>\r\n  </data>\r\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\r\n    <value>Povezana</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Potrdite, da je vse spodaj varno odstraniti</value>\r\n  </data>\r\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\r\n    <value>Potrditev</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Nekatere aplikacije je morda treba zapreti, preden jih odstranite</value>\r\n  </data>\r\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\r\n    <value>Delovanje</value>\r\n  </data>\r\n  <data name=\"label3.Text\" xml:space=\"preserve\">\r\n    <value>Preden odstranite program, ustvarite obnovitveno točko</value>\r\n  </data>\r\n  <data name=\"label4.Text\" xml:space=\"preserve\">\r\n    <value>Ustvarite lahko obnovitveno točko sistema za varnostni kopirni register, nekatere nastavitve in datoteke. Pred odstranjevanjem gonilnikov in pomembnih sistemskih aplikacij priporočamo, da ustvarite obnovitveno točko.</value>\r\n  </data>\r\n  <data name=\"label8.Text\" xml:space=\"preserve\">\r\n    <value>Opozorilo: Obnovitev sistema mora biti omogočena, da bo to delovalo!</value>\r\n  </data>\r\n  <data name=\"label5.Text\" xml:space=\"preserve\">\r\n    <value>Spremeni nastavitve odstranitve</value>\r\n  </data>\r\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\r\n    <value>Nastavitve</value>\r\n  </data>\r\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label19.Text\" xml:space=\"preserve\">\r\n    <value>Drugo/Razno</value>\r\n  </data>\r\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label17.Text\" xml:space=\"preserve\">\r\n    <value>Sočasna odstranitev je omogočena</value>\r\n  </data>\r\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label15.Text\" xml:space=\"preserve\">\r\n    <value>Odstranitev bo tiha</value>\r\n  </data>\r\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label13.Text\" xml:space=\"preserve\">\r\n    <value>Ustvari novo obnovitveno točko</value>\r\n  </data>\r\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label11.Text\" xml:space=\"preserve\">\r\n    <value>Datoteke še vedno uporabljajo delujoči procesi</value>\r\n  </data>\r\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label9.Text\" xml:space=\"preserve\">\r\n    <value>Skupna ocenjena velikost</value>\r\n  </data>\r\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\r\n    <value>l</value>\r\n  </data>\r\n  <data name=\"label7.Text\" xml:space=\"preserve\">\r\n    <value>Aplikacije za odstranitev</value>\r\n  </data>\r\n  <data name=\"button2.Text\" xml:space=\"preserve\">\r\n    <value>ZAČETEK ODSTRANITVE</value>\r\n  </data>\r\n  <data name=\"label6.Text\" xml:space=\"preserve\">\r\n    <value>Prepričajte se, da so naslednji podatki pravilni, preden začnete z odstranitvijo. To je zadnja priložnost!</value>\r\n  </data>\r\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\r\n    <value>Končno</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Začni novo odstranjevanje</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1 / 6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>Avbryta</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>Tillbaka</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>Fortsätt</value>\n  </data>\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\n    <value>Relaterat</value>\n  </data>\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\n    <value>Bekräftelse</value>\n  </data>\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\n    <value>Appar som körs</value>\n  </data>\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\n    <value>Inställningar</value>\n  </data>\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label19.Text\" xml:space=\"preserve\">\n    <value>Annat / Övrigt</value>\n  </data>\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label17.Text\" xml:space=\"preserve\">\n    <value>Samtidig avinstallation är aktiverad</value>\n  </data>\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label15.Text\" xml:space=\"preserve\">\n    <value>Avinstallationen kommer att vara tyst</value>\n  </data>\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label13.Text\" xml:space=\"preserve\">\n    <value>Skapa ny återställningspunkt</value>\n  </data>\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label11.Text\" xml:space=\"preserve\">\n    <value>Filer används fortfarande av körande processer</value>\n  </data>\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>Totalt beräknad storlek</value>\n  </data>\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>Appar att avinstallera</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>PÅBÖRJA AVINSTALLATION</value>\n  </data>\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\n    <value>Avslutningsvis</value>\n  </data>\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\n    <value>Relaterade appar som du kanske vill avinstallera</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Bekräfta att allt nedan är säkert att avinstallera</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Vissa appar kanske behöver stängas innan avinstallation</value>\n  </data>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>Ändra avinstallations-inställningar</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>Kontrollera att följande information är korrekt innan du påbörjar avinstallationen. Detta är sista chansen!</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Börja ny avinstallationsuppgift</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Skapa en återställningspunkt innan avinstallationen</value>\n  </data>\n  <data name=\"label4.Text\" xml:space=\"preserve\">\n    <value>Du kan skapa en systemåterställningspunkt för att säkerhetskopiera registret, vissa inställningar och filer. Det rekommenderas att skapa en återställningspunkt innan du tar bort drivrutiner och viktiga systemprogram.</value>\n  </data>\n  <data name=\"label8.Text\" xml:space=\"preserve\">\n    <value>Notera: Systemåterställning måste vara aktiverat för att detta ska fungera</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1 / 6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>Vazgeç</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>Geri</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>Devam</value>\n  </data>\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\n    <value>Kaldırmak isteyebileceğiniz ilgili uygulamalar</value>\n  </data>\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\n    <value>İlgili</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Aşağıdaki her şeyin kaldırılmasının güvenli olduğunu doğrulayın</value>\n  </data>\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\n    <value>Onayla</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Bazı uygulamaların kaldırılmadan önce kapatılması gerekebilir</value>\n  </data>\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\n    <value>Çalışan uygulamalar</value>\n  </data>\n  <data name=\"label3.Text\" xml:space=\"preserve\">\n    <value>Kaldırmadan önce bir geri yükleme noktası oluşturun</value>\n  </data>\n  <data name=\"label4.Text\" xml:space=\"preserve\">\n    <value>Kayıt defterini, bazı ayarları ve dosyaları yedeklemek için bir sistem geri yükleme noktası oluşturabilirsiniz. Sürücüleri ve önemli sistem uygulamalarını kaldırmadan önce bir geri yükleme noktası oluşturmanız önerilir.</value>\n  </data>\n  <data name=\"label8.Text\" xml:space=\"preserve\">\n    <value>Uyarı: Bunun çalışması için sistem geri yüklemesi etkinleştirilmelidir!</value>\n  </data>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>Kaldırma ayarlarının değiştirilmesi</value>\n  </data>\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\n    <value>Ayarlar</value>\n  </data>\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label19.Text\" xml:space=\"preserve\">\n    <value>Diğer / Çeşitli</value>\n  </data>\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label17.Text\" xml:space=\"preserve\">\n    <value>Eşzamanlı kaldırma etkinleştirildi</value>\n  </data>\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label15.Text\" xml:space=\"preserve\">\n    <value>Kaldırma işlemi sessiz olacak</value>\n  </data>\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label13.Text\" xml:space=\"preserve\">\n    <value>Yeni bir geri yükleme noktası oluştur</value>\n  </data>\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label11.Text\" xml:space=\"preserve\">\n    <value>Dosyalar hala çalışan işlemler tarafından kullanılıyor</value>\n  </data>\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>Toplam tahmini boyut</value>\n  </data>\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>Kaldırılacak uygulamalar</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>KALDIRMA İŞLEMİNE BAŞLA</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>Kaldırma işlemine başlamadan önce aşağıdaki bilgilerin doğru olduğundan emin olun. Bu son şans!</value>\n  </data>\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\n    <value>Tamamlandı</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Yeni kaldırma görevine başla</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1 / 6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>Huỷ</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>Trờ về</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>Tiếp tục</value>\n  </data>\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\n    <value>Có liên quan đến</value>\n  </data>\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\n    <value>Xác nhận</value>\n  </data>\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\n    <value>Các ứng dụng đang khởi chạy</value>\n  </data>\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\n    <value>Cài đặt</value>\n  </data>\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label19.Text\" xml:space=\"preserve\">\n    <value>Khác / Lặt vặt</value>\n  </data>\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label17.Text\" xml:space=\"preserve\">\n    <value>Cho phép gỡ cài đặt đồng thời</value>\n  </data>\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label15.Text\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt âm thầm</value>\n  </data>\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label13.Text\" xml:space=\"preserve\">\n    <value>Tạo một điểm khôi phục mới</value>\n  </data>\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label11.Text\" xml:space=\"preserve\">\n    <value>Đang được sử dụng bởi tiến trình khác</value>\n  </data>\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>Ước tính kích thước tổng</value>\n  </data>\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>Các ứng dụng cần gỡ cài đặt</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>BẮT ĐẦU QUÁ TRÌNH GỠ CÀI ĐẶT</value>\n  </data>\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\n    <value>Phần cuối</value>\n  </data>\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\n    <value>Các ứng dụng có liên quan mà bạn có thể muốn gỡ cài đặt</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Xác nhận rằng những mục dưới đây không có vấn đề gì khi gỡ cài đặt</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Một số ứng dụng có thể cần được đóng lại trước khi gỡ cài đặt</value>\n  </data>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>Thay đổi cài đặt mặc định của bạn</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>Vui lòng xác nhận rằng tất cả thông tin dưới đây là chính xác trước khi bắt đầu gỡ cài đặt. Đây là lần cơ hội cuối cùng của bạn!</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bắt đầu quá trình gỡ cài đặt mới</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1 / 6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>返回</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>继续</value>\n  </data>\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\n    <value>相关</value>\n  </data>\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\n    <value>确认</value>\n  </data>\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\n    <value>运行应用</value>\n  </data>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>更改卸载设置</value>\n  </data>\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\n    <value>设置</value>\n  </data>\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\n    <value>结束</value>\n  </data>\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\n    <value>你可能想卸载的相关应用程序</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>确认以下所有内容都可以安全卸载</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>某些应用程序可能需要在卸载前关闭</value>\n  </data>\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label19.Text\" xml:space=\"preserve\">\n    <value>其他/杂项</value>\n  </data>\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label17.Text\" xml:space=\"preserve\">\n    <value>同时卸载已启用</value>\n  </data>\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label15.Text\" xml:space=\"preserve\">\n    <value>卸载将静默</value>\n  </data>\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label13.Text\" xml:space=\"preserve\">\n    <value>创建新的还原点</value>\n  </data>\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label11.Text\" xml:space=\"preserve\">\n    <value>文件仍被正在运行的进程使用</value>\n  </data>\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>估计总大小</value>\n  </data>\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>要卸载的应用程序</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>开始卸载</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>开始卸载前，请确保以下信息正确无误。这是最后的机会了！</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>开始新的卸载任务</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/BeginUninstallTaskWizard.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1/6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>返回</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>繼續</value>\n  </data>\n  <data name=\"tabPage1.Text\" xml:space=\"preserve\">\n    <value>相關</value>\n  </data>\n  <data name=\"tabPage2.Text\" xml:space=\"preserve\">\n    <value>確認</value>\n  </data>\n  <data name=\"tabPage3.Text\" xml:space=\"preserve\">\n    <value>執行應用</value>\n  </data>\n  <data name=\"tabPage4.Text\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"labelOther.Text\" xml:space=\"preserve\">\n    <value>I</value>\n  </data>\n  <data name=\"label19.Text\" xml:space=\"preserve\">\n    <value>其他/雜項</value>\n  </data>\n  <data name=\"labelConcurrentEnabled.Text\" xml:space=\"preserve\">\n    <value>I</value>\n  </data>\n  <data name=\"label17.Text\" xml:space=\"preserve\">\n    <value>同時移除已啟用</value>\n  </data>\n  <data name=\"labelWillBeSilent.Text\" xml:space=\"preserve\">\n    <value>I</value>\n  </data>\n  <data name=\"label15.Text\" xml:space=\"preserve\">\n    <value>移除過程將最小化</value>\n  </data>\n  <data name=\"labelRestorePointCreated.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label13.Text\" xml:space=\"preserve\">\n    <value>建立新的還原點</value>\n  </data>\n  <data name=\"labelFilesStillUsed.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label11.Text\" xml:space=\"preserve\">\n    <value>檔案被在執行的程序使用</value>\n  </data>\n  <data name=\"labelTotalSize.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label9.Text\" xml:space=\"preserve\">\n    <value>預估總大小</value>\n  </data>\n  <data name=\"labelApps.Text\" xml:space=\"preserve\">\n    <value>l</value>\n  </data>\n  <data name=\"label7.Text\" xml:space=\"preserve\">\n    <value>要移除的應用程式</value>\n  </data>\n  <data name=\"button2.Text\" xml:space=\"preserve\">\n    <value>開始解除安裝</value>\n  </data>\n  <data name=\"tabPage5.Text\" xml:space=\"preserve\">\n    <value>結束</value>\n  </data>\n  <data name=\"p1Heading.Text\" xml:space=\"preserve\">\n    <value>你可能想移除的相關應用程式</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>確認以下所有內容都可以安全解除安裝</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>某些應用程式可能需要在移除前關閉</value>\n  </data>\n  <data name=\"label5.Text\" xml:space=\"preserve\">\n    <value>更改移除設定</value>\n  </data>\n  <data name=\"label6.Text\" xml:space=\"preserve\">\n    <value>開始移除前，請確保以下資訊正確無誤。這是最後的機會了！</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>開始新的移除任務</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.Designer.cs",
    "content": "﻿namespace BulkCrapUninstaller.Forms\r\n{\r\n    partial class FirstStartBox\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            components = new System.ComponentModel.Container();\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FirstStartBox));\r\n            panelNavigation = new System.Windows.Forms.Panel();\r\n            labelProgress = new System.Windows.Forms.Label();\r\n            buttonExit = new System.Windows.Forms.Button();\r\n            buttonPrev = new System.Windows.Forms.Button();\r\n            panel4 = new System.Windows.Forms.Panel();\r\n            buttonNext = new System.Windows.Forms.Button();\r\n            scrollPanel = new System.Windows.Forms.Panel();\r\n            panel3 = new System.Windows.Forms.Panel();\r\n            panel2 = new System.Windows.Forms.Panel();\r\n            page5 = new System.Windows.Forms.Panel();\r\n            panel12 = new System.Windows.Forms.Panel();\r\n            buttonMore = new System.Windows.Forms.Button();\r\n            buttonHelp = new System.Windows.Forms.Button();\r\n            buttonFinish = new System.Windows.Forms.Button();\r\n            flowLayoutPanel6 = new System.Windows.Forms.FlowLayoutPanel();\r\n            p5finishContact = new System.Windows.Forms.Label();\r\n            p5LinkContact = new System.Windows.Forms.LinkLabel();\r\n            p5finishHomepage = new System.Windows.Forms.Label();\r\n            p5LinkHomepage = new System.Windows.Forms.LinkLabel();\r\n            p5finishTitle = new System.Windows.Forms.Label();\r\n            spacer4 = new System.Windows.Forms.Panel();\r\n            pageNetwork = new System.Windows.Forms.Panel();\r\n            flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();\r\n            p4netTitle = new System.Windows.Forms.Label();\r\n            p4netDesc = new System.Windows.Forms.Label();\r\n            p4netDesc1 = new System.Windows.Forms.Label();\r\n            p4netDesc2 = new System.Windows.Forms.Label();\r\n            p4netDesc3 = new System.Windows.Forms.Label();\r\n            p4netDesc4 = new System.Windows.Forms.Label();\r\n            p4netErrors = new System.Windows.Forms.Label();\r\n            checkBoxUpdateSearch = new System.Windows.Forms.CheckBox();\r\n            p4netUpdateAdd = new System.Windows.Forms.Label();\r\n            checkBoxSendStats = new System.Windows.Forms.CheckBox();\r\n            p4netUsageAdd = new System.Windows.Forms.Label();\r\n            checkBoxRatings = new System.Windows.Forms.CheckBox();\r\n            panel5 = new System.Windows.Forms.Panel();\r\n            pageCorrupted = new System.Windows.Forms.Panel();\r\n            flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\r\n            pCorTitle = new System.Windows.Forms.Label();\r\n            pCorDesc = new System.Windows.Forms.Label();\r\n            pCorViewInvalidTitle = new System.Windows.Forms.Label();\r\n            pCorViewInvalid = new System.Windows.Forms.Label();\r\n            checkBoxInvalidTest = new System.Windows.Forms.CheckBox();\r\n            pCorViewinvalidComment = new System.Windows.Forms.Label();\r\n            pCorOrphansTitle = new System.Windows.Forms.Label();\r\n            pCorOrphansMessage = new System.Windows.Forms.Label();\r\n            checkBoxOrphans = new System.Windows.Forms.CheckBox();\r\n            pCorOrphansComment = new System.Windows.Forms.Label();\r\n            spacer3 = new System.Windows.Forms.Panel();\r\n            page3 = new System.Windows.Forms.Panel();\r\n            flowLayoutPanel4 = new System.Windows.Forms.FlowLayoutPanel();\r\n            p3advTitle = new System.Windows.Forms.Label();\r\n            p3advDesc = new System.Windows.Forms.Label();\r\n            p3advSyscompTitle = new System.Windows.Forms.Label();\r\n            p3advSyscomp = new System.Windows.Forms.Label();\r\n            checkBoxListSysComp = new System.Windows.Forms.CheckBox();\r\n            p3advProtectTitle = new System.Windows.Forms.Label();\r\n            p3advProtect = new System.Windows.Forms.Label();\r\n            checkBoxListProtected = new System.Windows.Forms.CheckBox();\r\n            checkBoxDiisableProtection = new System.Windows.Forms.CheckBox();\r\n            p3advProtectAdd = new System.Windows.Forms.Label();\r\n            spacer2 = new System.Windows.Forms.Panel();\r\n            page2 = new System.Windows.Forms.Panel();\r\n            flowLayoutPanel3 = new System.Windows.Forms.FlowLayoutPanel();\r\n            p2viewTitle = new System.Windows.Forms.Label();\r\n            p2viewDetail = new System.Windows.Forms.Label();\r\n            p2viewDetail1 = new System.Windows.Forms.Label();\r\n            p2viewDetail2 = new System.Windows.Forms.Label();\r\n            p2viewDetail3 = new System.Windows.Forms.Label();\r\n            checkBoxGroups = new System.Windows.Forms.CheckBox();\r\n            checkBoxCheckboxes = new System.Windows.Forms.CheckBox();\r\n            p2viewCertsTitle = new System.Windows.Forms.Label();\r\n            p2viewCerts = new System.Windows.Forms.Label();\r\n            checkBoxCertTest = new System.Windows.Forms.CheckBox();\r\n            p2viewAdd = new System.Windows.Forms.Label();\r\n            spacer1 = new System.Windows.Forms.Panel();\r\n            page1 = new System.Windows.Forms.Panel();\r\n            flowLayoutPanel5 = new System.Windows.Forms.FlowLayoutPanel();\r\n            p1welcomeHeading = new System.Windows.Forms.Label();\r\n            p1welcomeSubheading = new System.Windows.Forms.Label();\r\n            p1languageHeading = new System.Windows.Forms.Label();\r\n            p1languageDesc = new System.Windows.Forms.Label();\r\n            panel9 = new System.Windows.Forms.Panel();\r\n            comboBoxLanguage = new System.Windows.Forms.ComboBox();\r\n            buttonLanguageApply = new System.Windows.Forms.Button();\r\n            p1languageExtradetails = new System.Windows.Forms.Label();\r\n            p1linkLabelContact = new System.Windows.Forms.LinkLabel();\r\n            panel1 = new System.Windows.Forms.Panel();\r\n            pictureBox1 = new System.Windows.Forms.PictureBox();\r\n            label2 = new System.Windows.Forms.Label();\r\n            timer1 = new System.Windows.Forms.Timer(components);\r\n            panelNavigation.SuspendLayout();\r\n            scrollPanel.SuspendLayout();\r\n            page5.SuspendLayout();\r\n            panel12.SuspendLayout();\r\n            flowLayoutPanel6.SuspendLayout();\r\n            pageNetwork.SuspendLayout();\r\n            flowLayoutPanel2.SuspendLayout();\r\n            pageCorrupted.SuspendLayout();\r\n            flowLayoutPanel1.SuspendLayout();\r\n            page3.SuspendLayout();\r\n            flowLayoutPanel4.SuspendLayout();\r\n            page2.SuspendLayout();\r\n            flowLayoutPanel3.SuspendLayout();\r\n            page1.SuspendLayout();\r\n            flowLayoutPanel5.SuspendLayout();\r\n            panel9.SuspendLayout();\r\n            panel1.SuspendLayout();\r\n            ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();\r\n            SuspendLayout();\r\n            // \r\n            // panelNavigation\r\n            // \r\n            panelNavigation.BackColor = System.Drawing.SystemColors.Control;\r\n            panelNavigation.Controls.Add(labelProgress);\r\n            panelNavigation.Controls.Add(buttonExit);\r\n            panelNavigation.Controls.Add(buttonPrev);\r\n            panelNavigation.Controls.Add(panel4);\r\n            panelNavigation.Controls.Add(buttonNext);\r\n            resources.ApplyResources(panelNavigation, \"panelNavigation\");\r\n            panelNavigation.Name = \"panelNavigation\";\r\n            // \r\n            // labelProgress\r\n            // \r\n            resources.ApplyResources(labelProgress, \"labelProgress\");\r\n            labelProgress.ForeColor = System.Drawing.SystemColors.GrayText;\r\n            labelProgress.Name = \"labelProgress\";\r\n            // \r\n            // buttonExit\r\n            // \r\n            resources.ApplyResources(buttonExit, \"buttonExit\");\r\n            buttonExit.DialogResult = System.Windows.Forms.DialogResult.Cancel;\r\n            buttonExit.Name = \"buttonExit\";\r\n            buttonExit.UseVisualStyleBackColor = true;\r\n            buttonExit.Click += CloseWizard;\r\n            // \r\n            // buttonPrev\r\n            // \r\n            resources.ApplyResources(buttonPrev, \"buttonPrev\");\r\n            buttonPrev.Name = \"buttonPrev\";\r\n            buttonPrev.UseVisualStyleBackColor = true;\r\n            buttonPrev.Click += buttonPrev_Click;\r\n            // \r\n            // panel4\r\n            // \r\n            resources.ApplyResources(panel4, \"panel4\");\r\n            panel4.Name = \"panel4\";\r\n            // \r\n            // buttonNext\r\n            // \r\n            resources.ApplyResources(buttonNext, \"buttonNext\");\r\n            buttonNext.Name = \"buttonNext\";\r\n            buttonNext.UseVisualStyleBackColor = true;\r\n            buttonNext.Click += buttonNext_Click;\r\n            // \r\n            // scrollPanel\r\n            // \r\n            resources.ApplyResources(scrollPanel, \"scrollPanel\");\r\n            scrollPanel.Controls.Add(panel3);\r\n            scrollPanel.Controls.Add(panel2);\r\n            scrollPanel.Controls.Add(page5);\r\n            scrollPanel.Controls.Add(spacer4);\r\n            scrollPanel.Controls.Add(pageNetwork);\r\n            scrollPanel.Controls.Add(panel5);\r\n            scrollPanel.Controls.Add(pageCorrupted);\r\n            scrollPanel.Controls.Add(spacer3);\r\n            scrollPanel.Controls.Add(page3);\r\n            scrollPanel.Controls.Add(spacer2);\r\n            scrollPanel.Controls.Add(page2);\r\n            scrollPanel.Controls.Add(spacer1);\r\n            scrollPanel.Controls.Add(page1);\r\n            scrollPanel.Name = \"scrollPanel\";\r\n            // \r\n            // panel3\r\n            // \r\n            resources.ApplyResources(panel3, \"panel3\");\r\n            panel3.Name = \"panel3\";\r\n            // \r\n            // panel2\r\n            // \r\n            resources.ApplyResources(panel2, \"panel2\");\r\n            panel2.Name = \"panel2\";\r\n            // \r\n            // page5\r\n            // \r\n            page5.Controls.Add(panel12);\r\n            page5.Controls.Add(flowLayoutPanel6);\r\n            page5.Controls.Add(p5finishTitle);\r\n            resources.ApplyResources(page5, \"page5\");\r\n            page5.Name = \"page5\";\r\n            // \r\n            // panel12\r\n            // \r\n            panel12.Controls.Add(buttonMore);\r\n            panel12.Controls.Add(buttonHelp);\r\n            panel12.Controls.Add(buttonFinish);\r\n            resources.ApplyResources(panel12, \"panel12\");\r\n            panel12.Name = \"panel12\";\r\n            // \r\n            // buttonMore\r\n            // \r\n            resources.ApplyResources(buttonMore, \"buttonMore\");\r\n            buttonMore.DialogResult = System.Windows.Forms.DialogResult.Cancel;\r\n            buttonMore.Name = \"buttonMore\";\r\n            buttonMore.UseVisualStyleBackColor = true;\r\n            buttonMore.Click += buttonMore_Click;\r\n            // \r\n            // buttonHelp\r\n            // \r\n            resources.ApplyResources(buttonHelp, \"buttonHelp\");\r\n            buttonHelp.DialogResult = System.Windows.Forms.DialogResult.Cancel;\r\n            buttonHelp.Name = \"buttonHelp\";\r\n            buttonHelp.UseVisualStyleBackColor = true;\r\n            buttonHelp.Click += buttonHelp_Click;\r\n            // \r\n            // buttonFinish\r\n            // \r\n            resources.ApplyResources(buttonFinish, \"buttonFinish\");\r\n            buttonFinish.DialogResult = System.Windows.Forms.DialogResult.Cancel;\r\n            buttonFinish.Name = \"buttonFinish\";\r\n            buttonFinish.UseVisualStyleBackColor = true;\r\n            buttonFinish.Click += CloseWizard;\r\n            // \r\n            // flowLayoutPanel6\r\n            // \r\n            resources.ApplyResources(flowLayoutPanel6, \"flowLayoutPanel6\");\r\n            flowLayoutPanel6.Controls.Add(p5finishContact);\r\n            flowLayoutPanel6.Controls.Add(p5LinkContact);\r\n            flowLayoutPanel6.Controls.Add(p5finishHomepage);\r\n            flowLayoutPanel6.Controls.Add(p5LinkHomepage);\r\n            flowLayoutPanel6.Name = \"flowLayoutPanel6\";\r\n            // \r\n            // p5finishContact\r\n            // \r\n            resources.ApplyResources(p5finishContact, \"p5finishContact\");\r\n            p5finishContact.Name = \"p5finishContact\";\r\n            // \r\n            // p5LinkContact\r\n            // \r\n            resources.ApplyResources(p5LinkContact, \"p5LinkContact\");\r\n            p5LinkContact.Name = \"p5LinkContact\";\r\n            p5LinkContact.TabStop = true;\r\n            p5LinkContact.LinkClicked += OpenContactForm;\r\n            // \r\n            // p5finishHomepage\r\n            // \r\n            resources.ApplyResources(p5finishHomepage, \"p5finishHomepage\");\r\n            p5finishHomepage.Name = \"p5finishHomepage\";\r\n            // \r\n            // p5LinkHomepage\r\n            // \r\n            resources.ApplyResources(p5LinkHomepage, \"p5LinkHomepage\");\r\n            p5LinkHomepage.Name = \"p5LinkHomepage\";\r\n            p5LinkHomepage.TabStop = true;\r\n            p5LinkHomepage.LinkClicked += OpenHomepage;\r\n            // \r\n            // p5finishTitle\r\n            // \r\n            resources.ApplyResources(p5finishTitle, \"p5finishTitle\");\r\n            p5finishTitle.Name = \"p5finishTitle\";\r\n            // \r\n            // spacer4\r\n            // \r\n            resources.ApplyResources(spacer4, \"spacer4\");\r\n            spacer4.Name = \"spacer4\";\r\n            // \r\n            // pageNetwork\r\n            // \r\n            pageNetwork.Controls.Add(flowLayoutPanel2);\r\n            resources.ApplyResources(pageNetwork, \"pageNetwork\");\r\n            pageNetwork.Name = \"pageNetwork\";\r\n            // \r\n            // flowLayoutPanel2\r\n            // \r\n            flowLayoutPanel2.Controls.Add(p4netTitle);\r\n            flowLayoutPanel2.Controls.Add(p4netDesc);\r\n            flowLayoutPanel2.Controls.Add(p4netDesc1);\r\n            flowLayoutPanel2.Controls.Add(p4netDesc2);\r\n            flowLayoutPanel2.Controls.Add(p4netDesc3);\r\n            flowLayoutPanel2.Controls.Add(p4netDesc4);\r\n            flowLayoutPanel2.Controls.Add(p4netErrors);\r\n            flowLayoutPanel2.Controls.Add(checkBoxUpdateSearch);\r\n            flowLayoutPanel2.Controls.Add(p4netUpdateAdd);\r\n            flowLayoutPanel2.Controls.Add(checkBoxSendStats);\r\n            flowLayoutPanel2.Controls.Add(p4netUsageAdd);\r\n            flowLayoutPanel2.Controls.Add(checkBoxRatings);\r\n            resources.ApplyResources(flowLayoutPanel2, \"flowLayoutPanel2\");\r\n            flowLayoutPanel2.Name = \"flowLayoutPanel2\";\r\n            // \r\n            // p4netTitle\r\n            // \r\n            resources.ApplyResources(p4netTitle, \"p4netTitle\");\r\n            p4netTitle.Name = \"p4netTitle\";\r\n            // \r\n            // p4netDesc\r\n            // \r\n            resources.ApplyResources(p4netDesc, \"p4netDesc\");\r\n            p4netDesc.Name = \"p4netDesc\";\r\n            // \r\n            // p4netDesc1\r\n            // \r\n            resources.ApplyResources(p4netDesc1, \"p4netDesc1\");\r\n            p4netDesc1.Name = \"p4netDesc1\";\r\n            // \r\n            // p4netDesc2\r\n            // \r\n            resources.ApplyResources(p4netDesc2, \"p4netDesc2\");\r\n            p4netDesc2.Name = \"p4netDesc2\";\r\n            // \r\n            // p4netDesc3\r\n            // \r\n            resources.ApplyResources(p4netDesc3, \"p4netDesc3\");\r\n            p4netDesc3.Name = \"p4netDesc3\";\r\n            // \r\n            // p4netDesc4\r\n            // \r\n            resources.ApplyResources(p4netDesc4, \"p4netDesc4\");\r\n            p4netDesc4.Name = \"p4netDesc4\";\r\n            // \r\n            // p4netErrors\r\n            // \r\n            resources.ApplyResources(p4netErrors, \"p4netErrors\");\r\n            p4netErrors.Name = \"p4netErrors\";\r\n            // \r\n            // checkBoxUpdateSearch\r\n            // \r\n            resources.ApplyResources(checkBoxUpdateSearch, \"checkBoxUpdateSearch\");\r\n            checkBoxUpdateSearch.Name = \"checkBoxUpdateSearch\";\r\n            checkBoxUpdateSearch.UseVisualStyleBackColor = true;\r\n            // \r\n            // p4netUpdateAdd\r\n            // \r\n            resources.ApplyResources(p4netUpdateAdd, \"p4netUpdateAdd\");\r\n            p4netUpdateAdd.Name = \"p4netUpdateAdd\";\r\n            // \r\n            // checkBoxSendStats\r\n            // \r\n            resources.ApplyResources(checkBoxSendStats, \"checkBoxSendStats\");\r\n            checkBoxSendStats.Name = \"checkBoxSendStats\";\r\n            checkBoxSendStats.UseVisualStyleBackColor = true;\r\n            // \r\n            // p4netUsageAdd\r\n            // \r\n            resources.ApplyResources(p4netUsageAdd, \"p4netUsageAdd\");\r\n            p4netUsageAdd.Name = \"p4netUsageAdd\";\r\n            // \r\n            // checkBoxRatings\r\n            // \r\n            resources.ApplyResources(checkBoxRatings, \"checkBoxRatings\");\r\n            checkBoxRatings.Name = \"checkBoxRatings\";\r\n            checkBoxRatings.UseVisualStyleBackColor = true;\r\n            // \r\n            // panel5\r\n            // \r\n            resources.ApplyResources(panel5, \"panel5\");\r\n            panel5.Name = \"panel5\";\r\n            // \r\n            // pageCorrupted\r\n            // \r\n            pageCorrupted.Controls.Add(flowLayoutPanel1);\r\n            resources.ApplyResources(pageCorrupted, \"pageCorrupted\");\r\n            pageCorrupted.Name = \"pageCorrupted\";\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            flowLayoutPanel1.Controls.Add(pCorTitle);\r\n            flowLayoutPanel1.Controls.Add(pCorDesc);\r\n            flowLayoutPanel1.Controls.Add(pCorViewInvalidTitle);\r\n            flowLayoutPanel1.Controls.Add(pCorViewInvalid);\r\n            flowLayoutPanel1.Controls.Add(checkBoxInvalidTest);\r\n            flowLayoutPanel1.Controls.Add(pCorViewinvalidComment);\r\n            flowLayoutPanel1.Controls.Add(pCorOrphansTitle);\r\n            flowLayoutPanel1.Controls.Add(pCorOrphansMessage);\r\n            flowLayoutPanel1.Controls.Add(checkBoxOrphans);\r\n            flowLayoutPanel1.Controls.Add(pCorOrphansComment);\r\n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\r\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            // \r\n            // pCorTitle\r\n            // \r\n            resources.ApplyResources(pCorTitle, \"pCorTitle\");\r\n            pCorTitle.Name = \"pCorTitle\";\r\n            // \r\n            // pCorDesc\r\n            // \r\n            resources.ApplyResources(pCorDesc, \"pCorDesc\");\r\n            pCorDesc.Name = \"pCorDesc\";\r\n            // \r\n            // pCorViewInvalidTitle\r\n            // \r\n            resources.ApplyResources(pCorViewInvalidTitle, \"pCorViewInvalidTitle\");\r\n            pCorViewInvalidTitle.Name = \"pCorViewInvalidTitle\";\r\n            // \r\n            // pCorViewInvalid\r\n            // \r\n            resources.ApplyResources(pCorViewInvalid, \"pCorViewInvalid\");\r\n            pCorViewInvalid.Name = \"pCorViewInvalid\";\r\n            // \r\n            // checkBoxInvalidTest\r\n            // \r\n            resources.ApplyResources(checkBoxInvalidTest, \"checkBoxInvalidTest\");\r\n            checkBoxInvalidTest.Name = \"checkBoxInvalidTest\";\r\n            checkBoxInvalidTest.UseVisualStyleBackColor = true;\r\n            // \r\n            // pCorViewinvalidComment\r\n            // \r\n            resources.ApplyResources(pCorViewinvalidComment, \"pCorViewinvalidComment\");\r\n            pCorViewinvalidComment.Name = \"pCorViewinvalidComment\";\r\n            // \r\n            // pCorOrphansTitle\r\n            // \r\n            resources.ApplyResources(pCorOrphansTitle, \"pCorOrphansTitle\");\r\n            pCorOrphansTitle.Name = \"pCorOrphansTitle\";\r\n            // \r\n            // pCorOrphansMessage\r\n            // \r\n            resources.ApplyResources(pCorOrphansMessage, \"pCorOrphansMessage\");\r\n            pCorOrphansMessage.Name = \"pCorOrphansMessage\";\r\n            // \r\n            // checkBoxOrphans\r\n            // \r\n            resources.ApplyResources(checkBoxOrphans, \"checkBoxOrphans\");\r\n            checkBoxOrphans.Name = \"checkBoxOrphans\";\r\n            checkBoxOrphans.UseVisualStyleBackColor = true;\r\n            // \r\n            // pCorOrphansComment\r\n            // \r\n            resources.ApplyResources(pCorOrphansComment, \"pCorOrphansComment\");\r\n            pCorOrphansComment.Name = \"pCorOrphansComment\";\r\n            // \r\n            // spacer3\r\n            // \r\n            resources.ApplyResources(spacer3, \"spacer3\");\r\n            spacer3.Name = \"spacer3\";\r\n            // \r\n            // page3\r\n            // \r\n            page3.Controls.Add(flowLayoutPanel4);\r\n            resources.ApplyResources(page3, \"page3\");\r\n            page3.Name = \"page3\";\r\n            // \r\n            // flowLayoutPanel4\r\n            // \r\n            flowLayoutPanel4.Controls.Add(p3advTitle);\r\n            flowLayoutPanel4.Controls.Add(p3advDesc);\r\n            flowLayoutPanel4.Controls.Add(p3advSyscompTitle);\r\n            flowLayoutPanel4.Controls.Add(p3advSyscomp);\r\n            flowLayoutPanel4.Controls.Add(checkBoxListSysComp);\r\n            flowLayoutPanel4.Controls.Add(p3advProtectTitle);\r\n            flowLayoutPanel4.Controls.Add(p3advProtect);\r\n            flowLayoutPanel4.Controls.Add(checkBoxListProtected);\r\n            flowLayoutPanel4.Controls.Add(checkBoxDiisableProtection);\r\n            flowLayoutPanel4.Controls.Add(p3advProtectAdd);\r\n            resources.ApplyResources(flowLayoutPanel4, \"flowLayoutPanel4\");\r\n            flowLayoutPanel4.Name = \"flowLayoutPanel4\";\r\n            // \r\n            // p3advTitle\r\n            // \r\n            resources.ApplyResources(p3advTitle, \"p3advTitle\");\r\n            p3advTitle.Name = \"p3advTitle\";\r\n            // \r\n            // p3advDesc\r\n            // \r\n            resources.ApplyResources(p3advDesc, \"p3advDesc\");\r\n            p3advDesc.Name = \"p3advDesc\";\r\n            // \r\n            // p3advSyscompTitle\r\n            // \r\n            resources.ApplyResources(p3advSyscompTitle, \"p3advSyscompTitle\");\r\n            p3advSyscompTitle.Name = \"p3advSyscompTitle\";\r\n            // \r\n            // p3advSyscomp\r\n            // \r\n            resources.ApplyResources(p3advSyscomp, \"p3advSyscomp\");\r\n            p3advSyscomp.Name = \"p3advSyscomp\";\r\n            // \r\n            // checkBoxListSysComp\r\n            // \r\n            resources.ApplyResources(checkBoxListSysComp, \"checkBoxListSysComp\");\r\n            checkBoxListSysComp.Name = \"checkBoxListSysComp\";\r\n            checkBoxListSysComp.UseVisualStyleBackColor = true;\r\n            // \r\n            // p3advProtectTitle\r\n            // \r\n            resources.ApplyResources(p3advProtectTitle, \"p3advProtectTitle\");\r\n            p3advProtectTitle.Name = \"p3advProtectTitle\";\r\n            // \r\n            // p3advProtect\r\n            // \r\n            resources.ApplyResources(p3advProtect, \"p3advProtect\");\r\n            p3advProtect.Name = \"p3advProtect\";\r\n            // \r\n            // checkBoxListProtected\r\n            // \r\n            resources.ApplyResources(checkBoxListProtected, \"checkBoxListProtected\");\r\n            checkBoxListProtected.Name = \"checkBoxListProtected\";\r\n            checkBoxListProtected.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxDiisableProtection\r\n            // \r\n            resources.ApplyResources(checkBoxDiisableProtection, \"checkBoxDiisableProtection\");\r\n            checkBoxDiisableProtection.Name = \"checkBoxDiisableProtection\";\r\n            checkBoxDiisableProtection.UseVisualStyleBackColor = true;\r\n            // \r\n            // p3advProtectAdd\r\n            // \r\n            resources.ApplyResources(p3advProtectAdd, \"p3advProtectAdd\");\r\n            p3advProtectAdd.Name = \"p3advProtectAdd\";\r\n            // \r\n            // spacer2\r\n            // \r\n            resources.ApplyResources(spacer2, \"spacer2\");\r\n            spacer2.Name = \"spacer2\";\r\n            // \r\n            // page2\r\n            // \r\n            page2.Controls.Add(flowLayoutPanel3);\r\n            resources.ApplyResources(page2, \"page2\");\r\n            page2.Name = \"page2\";\r\n            // \r\n            // flowLayoutPanel3\r\n            // \r\n            flowLayoutPanel3.Controls.Add(p2viewTitle);\r\n            flowLayoutPanel3.Controls.Add(p2viewDetail);\r\n            flowLayoutPanel3.Controls.Add(p2viewDetail1);\r\n            flowLayoutPanel3.Controls.Add(p2viewDetail2);\r\n            flowLayoutPanel3.Controls.Add(p2viewDetail3);\r\n            flowLayoutPanel3.Controls.Add(checkBoxGroups);\r\n            flowLayoutPanel3.Controls.Add(checkBoxCheckboxes);\r\n            flowLayoutPanel3.Controls.Add(p2viewCertsTitle);\r\n            flowLayoutPanel3.Controls.Add(p2viewCerts);\r\n            flowLayoutPanel3.Controls.Add(checkBoxCertTest);\r\n            flowLayoutPanel3.Controls.Add(p2viewAdd);\r\n            resources.ApplyResources(flowLayoutPanel3, \"flowLayoutPanel3\");\r\n            flowLayoutPanel3.Name = \"flowLayoutPanel3\";\r\n            // \r\n            // p2viewTitle\r\n            // \r\n            resources.ApplyResources(p2viewTitle, \"p2viewTitle\");\r\n            p2viewTitle.Name = \"p2viewTitle\";\r\n            // \r\n            // p2viewDetail\r\n            // \r\n            resources.ApplyResources(p2viewDetail, \"p2viewDetail\");\r\n            p2viewDetail.Name = \"p2viewDetail\";\r\n            // \r\n            // p2viewDetail1\r\n            // \r\n            resources.ApplyResources(p2viewDetail1, \"p2viewDetail1\");\r\n            p2viewDetail1.Name = \"p2viewDetail1\";\r\n            // \r\n            // p2viewDetail2\r\n            // \r\n            resources.ApplyResources(p2viewDetail2, \"p2viewDetail2\");\r\n            p2viewDetail2.Name = \"p2viewDetail2\";\r\n            // \r\n            // p2viewDetail3\r\n            // \r\n            resources.ApplyResources(p2viewDetail3, \"p2viewDetail3\");\r\n            p2viewDetail3.Name = \"p2viewDetail3\";\r\n            // \r\n            // checkBoxGroups\r\n            // \r\n            resources.ApplyResources(checkBoxGroups, \"checkBoxGroups\");\r\n            checkBoxGroups.Name = \"checkBoxGroups\";\r\n            checkBoxGroups.UseVisualStyleBackColor = true;\r\n            // \r\n            // checkBoxCheckboxes\r\n            // \r\n            resources.ApplyResources(checkBoxCheckboxes, \"checkBoxCheckboxes\");\r\n            checkBoxCheckboxes.Name = \"checkBoxCheckboxes\";\r\n            checkBoxCheckboxes.UseVisualStyleBackColor = true;\r\n            // \r\n            // p2viewCertsTitle\r\n            // \r\n            resources.ApplyResources(p2viewCertsTitle, \"p2viewCertsTitle\");\r\n            p2viewCertsTitle.Name = \"p2viewCertsTitle\";\r\n            // \r\n            // p2viewCerts\r\n            // \r\n            resources.ApplyResources(p2viewCerts, \"p2viewCerts\");\r\n            p2viewCerts.Name = \"p2viewCerts\";\r\n            // \r\n            // checkBoxCertTest\r\n            // \r\n            resources.ApplyResources(checkBoxCertTest, \"checkBoxCertTest\");\r\n            checkBoxCertTest.Name = \"checkBoxCertTest\";\r\n            checkBoxCertTest.UseVisualStyleBackColor = true;\r\n            // \r\n            // p2viewAdd\r\n            // \r\n            resources.ApplyResources(p2viewAdd, \"p2viewAdd\");\r\n            p2viewAdd.Name = \"p2viewAdd\";\r\n            // \r\n            // spacer1\r\n            // \r\n            resources.ApplyResources(spacer1, \"spacer1\");\r\n            spacer1.Name = \"spacer1\";\r\n            // \r\n            // page1\r\n            // \r\n            page1.Controls.Add(flowLayoutPanel5);\r\n            page1.Controls.Add(panel1);\r\n            resources.ApplyResources(page1, \"page1\");\r\n            page1.Name = \"page1\";\r\n            // \r\n            // flowLayoutPanel5\r\n            // \r\n            flowLayoutPanel5.Controls.Add(p1welcomeHeading);\r\n            flowLayoutPanel5.Controls.Add(p1welcomeSubheading);\r\n            flowLayoutPanel5.Controls.Add(p1languageHeading);\r\n            flowLayoutPanel5.Controls.Add(p1languageDesc);\r\n            flowLayoutPanel5.Controls.Add(panel9);\r\n            flowLayoutPanel5.Controls.Add(p1languageExtradetails);\r\n            flowLayoutPanel5.Controls.Add(p1linkLabelContact);\r\n            resources.ApplyResources(flowLayoutPanel5, \"flowLayoutPanel5\");\r\n            flowLayoutPanel5.Name = \"flowLayoutPanel5\";\r\n            // \r\n            // p1welcomeHeading\r\n            // \r\n            resources.ApplyResources(p1welcomeHeading, \"p1welcomeHeading\");\r\n            p1welcomeHeading.Name = \"p1welcomeHeading\";\r\n            // \r\n            // p1welcomeSubheading\r\n            // \r\n            resources.ApplyResources(p1welcomeSubheading, \"p1welcomeSubheading\");\r\n            p1welcomeSubheading.Name = \"p1welcomeSubheading\";\r\n            // \r\n            // p1languageHeading\r\n            // \r\n            resources.ApplyResources(p1languageHeading, \"p1languageHeading\");\r\n            p1languageHeading.Name = \"p1languageHeading\";\r\n            // \r\n            // p1languageDesc\r\n            // \r\n            resources.ApplyResources(p1languageDesc, \"p1languageDesc\");\r\n            p1languageDesc.Name = \"p1languageDesc\";\r\n            // \r\n            // panel9\r\n            // \r\n            panel9.Controls.Add(comboBoxLanguage);\r\n            panel9.Controls.Add(buttonLanguageApply);\r\n            resources.ApplyResources(panel9, \"panel9\");\r\n            panel9.Name = \"panel9\";\r\n            // \r\n            // comboBoxLanguage\r\n            // \r\n            comboBoxLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;\r\n            comboBoxLanguage.FormattingEnabled = true;\r\n            resources.ApplyResources(comboBoxLanguage, \"comboBoxLanguage\");\r\n            comboBoxLanguage.Name = \"comboBoxLanguage\";\r\n            // \r\n            // buttonLanguageApply\r\n            // \r\n            resources.ApplyResources(buttonLanguageApply, \"buttonLanguageApply\");\r\n            buttonLanguageApply.Name = \"buttonLanguageApply\";\r\n            buttonLanguageApply.UseVisualStyleBackColor = true;\r\n            buttonLanguageApply.Click += buttonLanguageApply_Click;\r\n            // \r\n            // p1languageExtradetails\r\n            // \r\n            resources.ApplyResources(p1languageExtradetails, \"p1languageExtradetails\");\r\n            p1languageExtradetails.Name = \"p1languageExtradetails\";\r\n            // \r\n            // p1linkLabelContact\r\n            // \r\n            resources.ApplyResources(p1linkLabelContact, \"p1linkLabelContact\");\r\n            p1linkLabelContact.Name = \"p1linkLabelContact\";\r\n            p1linkLabelContact.TabStop = true;\r\n            p1linkLabelContact.LinkClicked += OpenContactForm;\r\n            // \r\n            // panel1\r\n            // \r\n            panel1.Controls.Add(pictureBox1);\r\n            panel1.Controls.Add(label2);\r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // pictureBox1\r\n            // \r\n            resources.ApplyResources(pictureBox1, \"pictureBox1\");\r\n            pictureBox1.Image = Properties.Resources._bcu_logo;\r\n            pictureBox1.Name = \"pictureBox1\";\r\n            pictureBox1.TabStop = false;\r\n            // \r\n            // label2\r\n            // \r\n            resources.ApplyResources(label2, \"label2\");\r\n            label2.ForeColor = System.Drawing.Color.FromArgb(64, 64, 64);\r\n            label2.Name = \"label2\";\r\n            // \r\n            // timer1\r\n            // \r\n            timer1.Interval = 15;\r\n            timer1.Tick += timer1_Tick;\r\n            // \r\n            // FirstStartBox\r\n            // \r\n            AcceptButton = buttonNext;\r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            BackColor = System.Drawing.SystemColors.ControlLightLight;\r\n            CancelButton = buttonExit;\r\n            ControlBox = false;\r\n            Controls.Add(panelNavigation);\r\n            Controls.Add(scrollPanel);\r\n            FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;\r\n            MaximizeBox = false;\r\n            MinimizeBox = false;\r\n            Name = \"FirstStartBox\";\r\n            ShowInTaskbar = false;\r\n            SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;\r\n            TopMost = true;\r\n            FormClosed += FirstStartBox_FormClosed;\r\n            Load += FirstStartBox_Load;\r\n            panelNavigation.ResumeLayout(false);\r\n            panelNavigation.PerformLayout();\r\n            scrollPanel.ResumeLayout(false);\r\n            page5.ResumeLayout(false);\r\n            page5.PerformLayout();\r\n            panel12.ResumeLayout(false);\r\n            flowLayoutPanel6.ResumeLayout(false);\r\n            flowLayoutPanel6.PerformLayout();\r\n            pageNetwork.ResumeLayout(false);\r\n            flowLayoutPanel2.ResumeLayout(false);\r\n            flowLayoutPanel2.PerformLayout();\r\n            pageCorrupted.ResumeLayout(false);\r\n            flowLayoutPanel1.ResumeLayout(false);\r\n            flowLayoutPanel1.PerformLayout();\r\n            page3.ResumeLayout(false);\r\n            flowLayoutPanel4.ResumeLayout(false);\r\n            flowLayoutPanel4.PerformLayout();\r\n            page2.ResumeLayout(false);\r\n            flowLayoutPanel3.ResumeLayout(false);\r\n            flowLayoutPanel3.PerformLayout();\r\n            page1.ResumeLayout(false);\r\n            flowLayoutPanel5.ResumeLayout(false);\r\n            flowLayoutPanel5.PerformLayout();\r\n            panel9.ResumeLayout(false);\r\n            panel1.ResumeLayout(false);\r\n            ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();\r\n            ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n        private System.Windows.Forms.Panel panelNavigation;\r\n        private System.Windows.Forms.Button buttonExit;\r\n        private System.Windows.Forms.Button buttonPrev;\r\n        private System.Windows.Forms.Button buttonNext;\r\n        private System.Windows.Forms.Panel scrollPanel;\r\n        private System.Windows.Forms.Panel page3;\r\n        private System.Windows.Forms.Panel spacer3;\r\n        private System.Windows.Forms.Panel page2;\r\n        private System.Windows.Forms.Panel spacer2;\r\n        private System.Windows.Forms.Panel pageNetwork;\r\n        private System.Windows.Forms.Panel spacer1;\r\n        private System.Windows.Forms.Panel page1;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;\r\n        private System.Windows.Forms.Label p4netTitle;\r\n        private System.Windows.Forms.Label p4netDesc;\r\n        private System.Windows.Forms.Label p4netDesc1;\r\n        private System.Windows.Forms.Label p4netDesc2;\r\n        private System.Windows.Forms.Label p4netDesc3;\r\n        private System.Windows.Forms.Label p4netErrors;\r\n        private System.Windows.Forms.CheckBox checkBoxUpdateSearch;\r\n        private System.Windows.Forms.Label p4netUpdateAdd;\r\n        private System.Windows.Forms.CheckBox checkBoxSendStats;\r\n        private System.Windows.Forms.Label p4netUsageAdd;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3;\r\n        private System.Windows.Forms.Label p2viewTitle;\r\n        private System.Windows.Forms.Label p2viewDetail;\r\n        private System.Windows.Forms.Label p2viewAdd;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel5;\r\n        private System.Windows.Forms.Label p1languageHeading;\r\n        private System.Windows.Forms.Label p1languageDesc;\r\n        private System.Windows.Forms.Panel panel9;\r\n        private System.Windows.Forms.ComboBox comboBoxLanguage;\r\n        private System.Windows.Forms.Button buttonLanguageApply;\r\n        private System.Windows.Forms.Label p1languageExtradetails;\r\n        private System.Windows.Forms.LinkLabel p1linkLabelContact;\r\n        private System.Windows.Forms.Label p2viewDetail1;\r\n        private System.Windows.Forms.Label p2viewDetail2;\r\n        private System.Windows.Forms.Label p2viewDetail3;\r\n        private System.Windows.Forms.Label p2viewCerts;\r\n        private System.Windows.Forms.CheckBox checkBoxCertTest;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel4;\r\n        private System.Windows.Forms.Label p3advTitle;\r\n        private System.Windows.Forms.Label p3advDesc;\r\n        private System.Windows.Forms.Label p3advSyscomp;\r\n        private System.Windows.Forms.Label p3advProtect;\r\n        private System.Windows.Forms.CheckBox checkBoxListSysComp;\r\n        private System.Windows.Forms.CheckBox checkBoxListProtected;\r\n        private System.Windows.Forms.CheckBox checkBoxDiisableProtection;\r\n        private System.Windows.Forms.Label p3advProtectAdd;\r\n        private System.Windows.Forms.Panel page5;\r\n        private System.Windows.Forms.Panel panel12;\r\n        private System.Windows.Forms.Button buttonFinish;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel6;\r\n        private System.Windows.Forms.Label p5finishContact;\r\n        private System.Windows.Forms.LinkLabel p5LinkContact;\r\n        private System.Windows.Forms.Label p5finishHomepage;\r\n        private System.Windows.Forms.LinkLabel p5LinkHomepage;\r\n        private System.Windows.Forms.Label p5finishTitle;\r\n        private System.Windows.Forms.Panel spacer4;\r\n        private System.Windows.Forms.Timer timer1;\r\n        private System.Windows.Forms.Panel panel1;\r\n        private System.Windows.Forms.Label p1welcomeHeading;\r\n        private System.Windows.Forms.Label p1welcomeSubheading;\r\n        private System.Windows.Forms.Label label2;\r\n        private System.Windows.Forms.Label p2viewCertsTitle;\r\n        private System.Windows.Forms.Label p3advSyscompTitle;\r\n        private System.Windows.Forms.Label p3advProtectTitle;\r\n        private System.Windows.Forms.PictureBox pictureBox1;\r\n        private System.Windows.Forms.Panel panel5;\r\n        private System.Windows.Forms.Panel pageCorrupted;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;\r\n        private System.Windows.Forms.Label pCorTitle;\r\n        private System.Windows.Forms.Label pCorDesc;\r\n        private System.Windows.Forms.Label pCorViewInvalidTitle;\r\n        private System.Windows.Forms.Label pCorViewInvalid;\r\n        private System.Windows.Forms.CheckBox checkBoxInvalidTest;\r\n        private System.Windows.Forms.Label pCorViewinvalidComment;\r\n        private System.Windows.Forms.Label pCorOrphansTitle;\r\n        private System.Windows.Forms.Label pCorOrphansMessage;\r\n        private System.Windows.Forms.CheckBox checkBoxOrphans;\r\n        private System.Windows.Forms.Label pCorOrphansComment;\r\n        private System.Windows.Forms.Panel panel3;\r\n        private System.Windows.Forms.Panel panel2;\r\n        private System.Windows.Forms.CheckBox checkBoxGroups;\r\n        private System.Windows.Forms.CheckBox checkBoxCheckboxes;\r\n        private System.Windows.Forms.Button buttonMore;\r\n        private System.Windows.Forms.Label p4netDesc4;\r\n        private System.Windows.Forms.CheckBox checkBoxRatings;\r\n        private System.Windows.Forms.Button buttonHelp;\r\n        private System.Windows.Forms.Label labelProgress;\r\n        private System.Windows.Forms.Panel panel4;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>خروج من المعالج</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>للخلف</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>مواصله</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>تم الانتهاء من الاعداد</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>الوصول الى الشبكة</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>يمكن ل \"المثبت\" محاولة الاتصال بالانترنت للاسباب التالية:</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>? للبحث عن تحديثات البرنامج.</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>? لتحميل تقارير الخطا.</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>? لارسال احصاءات الاستخدام المجهول.</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>? لجلب وتحميل تصنيفات التطبيق</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>\"اظهار المثبتات التي تم وضع علامة عليها على انها \"مكونات النظام</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>المثبتات المحمية</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>\"اظهار المثبتات التي تم وضع علامة عليها على انها \"محمية</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>\"تعطيل حماية غير المثبتات التي تم وضع علامة عليها بانها \"محمية </value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>سيسمح لك هذا بالغاء تثبيت العناصر المحمية.</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>عرض قائمه الغاء التثبيت </value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>جميع المثبتات التي وجدت في نظامك هي في قائمة العرض الرئيسية. فيما يلي بعض الطرق لاستعراض هذه البيانات:</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>? (استخدام الفلاتر والبحث عن الكلمات الرئيسية (في جميع الاعمده </value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>? فرز غير التركيب من قبل اي عمود. اعاده ترتيب الاعمده بحريه.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>? مجموعه المثبتات المماثله</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>اظهار الغاء التثبيت في مجموعات</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>تحديد استخدام مربعات الاختيار</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>المثبتات المعتمدة</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>فتح نموذج جهة الاتصال</value>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>اعدادات اضافيه</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>عرض التعليمات</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>انهاء الاعداد</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>يمكنك الان البدء باستخدام المثبت. اذا كان لديك اي اسئله او ترغب في اقتراح ميزه جديده زيارة الرابط ادناه.</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>فتح نموذج جهة الاتصال</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>يمكنك قراءه سجلات التغيير التفصيلي والتحقق من المزيد من برمجياتي علي الصفحة الرئيسية.</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>افتح الصفحة الرئيسية</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>تطبيق</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n    <comment>The missing B is in an image next to the text</comment>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller فتحي الداودية يرحبا بكم في</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>البحث تلقائيا عن التحديثات عند بدء تشغيل التطبيق</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>يمكنك البحث عن التحديثات يدويا من شريط القوائم.</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>ارسال احصائيات الاستخدام المجهول تلقائيا</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>سيساعد ارسال هذه الاحصاءات على تحسين المثبت.</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>تمكين تصنيفات المستخدم للتطبيقات</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت معطوب</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>تمييز التثبيت غير صالح</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>يتم وضع علامة التثبيت غير صالح باللون الرمادي.</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>التطبيقات غير مسجلة</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller فتحي الداودية يرحبا بكم في !</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>سيوفر لك هذا المعالج جولة سريعة ويساعد في تكوين التطبيق.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>اللغة المحددة</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>الخاصة بهم في دليل المثبت. لا يتم مشاركه البيانات المرسلة مع اي اطراف ثالثه.XML في كل مره يحدث فيها خطا سيتم سؤالك عما اذا كنت تريد ارساله. يمكنك التحقق من البيانات التي يتم ارسالها في تقارير الخطا والاستخدام عن طريق فحص ملفات</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>مع مرور الوقت قد تجد ان بعض التطبيقات سوف ترفض الغاء التثبيت ، او سوف تختفي فقط من معظم مديري الغاء التثبيت.</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>المثبتات التالفة او المفقودة</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>\"في بعض الحالات يمكن الحصول علي المثبتات معطوبة ، مما يجعلها من المستحيل الغاء تثبيتها. يمكن ان تزيل هذه المداخل بسهوله باستخدام الخيار \"الغاء التثبيت يدويا.</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>في بعض الاحيان يمكن ان تترك التطبيقات باكملها على محركاتك حتى بعد الغاء تثبيت. ويمكن ان يحدث هذا ايضا اذا تمت ازاله الغاء التثبيت فقط.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>اظهار التطبيقات الغير مسجلة في القائمة</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>يتم وضع علامة على التطبيقات الغير مسجلة باللون اللحمر.\r\nلذا لم يتم العثور على الغاء التثبيت الاصلي سيكون لديك لاستخدام \"للالغاء يدويا\" الخيار للازاله.</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>المستخدمون المتقدمون</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>في حين يمكن استخدام المثبت بمثابه الغاء التثبيت الاساسيه ، ومعظم وظائفها تهدف الى مستخدمي السلطة. المضي قدما بحذر!</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>مكونات النظام</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>التطبيقات التي تحمل علامة \"مكونات النظام\" مخفيه عن معظم مديري الغاء التثبيت الاساسيه. لا تعني هذه العلامة ان التطبيق هو جزء من نظام التشغيل.</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>يتم وضع علامة على العناصر المحمية بعلامة \"عدم الازاله\" ، مما يعني ان الناشر لا يريد منك ازالتها. غالبا ما يتم استخدام هذه العلامة من قبل حزم البرامج الكبيرة لمنعك من الغاء تثبيت الاجزاء الفردية الخاصة بهم.</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>ويمكن التوقيع على المثبتات بالشهادات الصادرة عن السلطات المختصة. اذا اجتازت الشهادة التحقق من صحة حزمه البرامج لم يتم تغييرها والسمعة.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>تمييز المثبتات المعتمدة</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>يتم وضع علامة التثبيت المثبتة باللون الاخضر ، غير المتحقق منها باللون الازرق.\r\nتحذير: يمكن ان يستغرق التحقق وقتا طويلا.</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>يمكنك اجبار المثبت على استخدام تعريب معين اذا كانت اللغة الافتراضية غير صحيحه. سيتم تنفيذ اعاده التشغيل لتطبيق اللغة الجديدة.</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>اذا كنت على استعداد للمساعدة في ترجمه المثبت الى لغتك ، انقر على الرابط ادناه للاتصال بي. كل مساعده هو موضع تقدير كبير!</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Globalization;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Functions;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Binding.Settings;\r\nusing Klocman.Forms.Tools;\r\n\r\nnamespace BulkCrapUninstaller.Forms\r\n{\r\n    public partial class FirstStartBox : Form\r\n    {\r\n        private readonly Panel[] _pages;\r\n        private readonly int _pageWidth;\r\n        private readonly SettingBinder<Settings> _settings = Settings.Default.SettingBinder;\r\n        private int _pageNumber;\r\n        private int _targetXPos;\r\n        \r\n        public FirstStartBox(bool canExit)\r\n        {\r\n            InitializeComponent();\r\n\r\n            if (DesignMode) return;\r\n\r\n            if (!canExit)\r\n            {\r\n                buttonExit.Enabled = false;\r\n                buttonExit.Visible = false;\r\n            }\r\n\r\n            Icon = Resources.Icon_Logo;\r\n\r\n            p1linkLabelContact.TabStop = false;\r\n            p5LinkHomepage.TabStop = false;\r\n            p5LinkContact.TabStop = false;\r\n\r\n            _pages = new[] { page1, page2, page3, pageCorrupted, pageNetwork, page5 };\r\n            _pageWidth = page1.Width + spacer4.Width;\r\n            \r\n            // List view\r\n            _settings.BindControl(checkBoxCheckboxes, x => x.UninstallerListUseCheckboxes, this);\r\n            _settings.BindControl(checkBoxGroups, x => x.UninstallerListUseGroups, this);\r\n            _settings.BindControl(checkBoxCertTest, x => x.AdvancedTestCertificates, this);\r\n\r\n            // Advanced\r\n            _settings.BindControl(checkBoxDiisableProtection, x => x.AdvancedDisableProtection, this);\r\n            _settings.BindControl(checkBoxListProtected, x => x.FilterShowProtected, this);\r\n            _settings.BindControl(checkBoxListSysComp, x => x.FilterShowSystemComponents, this);\r\n\r\n            // Corrupted\r\n            _settings.BindControl(checkBoxInvalidTest, x => x.AdvancedTestInvalid, this);\r\n            _settings.BindControl(checkBoxOrphans, x => x.AdvancedDisplayOrphans, this);\r\n\r\n            // Network\r\n            _settings.BindControl(checkBoxSendStats, x => x.MiscSendStatistics, this);\r\n            _settings.BindControl(checkBoxUpdateSearch, x => x.MiscCheckForUpdates, this);\r\n            _settings.BindControl(checkBoxRatings, x => x.MiscUserRatings, this);\r\n\r\n            comboBoxLanguage.Items.Add(Localisable.DefaultLanguage);\r\n            foreach (var languageCode in CultureConfigurator.SupportedLanguages.OrderBy(x => x.DisplayName))\r\n            {\r\n                comboBoxLanguage.Items.Add(new ComboBoxWrapper<CultureInfo>(languageCode, x => x.DisplayName));\r\n            }\r\n\r\n            var selectedItem = comboBoxLanguage.Items.OfType<ComboBoxWrapper<CultureInfo>>()\r\n                .FirstOrDefault(x => x.WrappedObject.Name.Equals(_settings.Settings.Language));\r\n            if (selectedItem != null)\r\n            {\r\n                comboBoxLanguage.SelectedItem = selectedItem;\r\n            }\r\n            else\r\n            {\r\n                comboBoxLanguage.SelectedIndex = 0;\r\n            }\r\n\r\n            _settings.SendUpdates(this);\r\n\r\n            UpdatePageEnabledState();\r\n        }\r\n\r\n        private void buttonLanguageApply_Click(object sender, EventArgs e)\r\n        {\r\n            _settings.Settings.Language = comboBoxLanguage.SelectedIndex == 0 ? string.Empty :\r\n                ((ComboBoxWrapper<CultureInfo>)comboBoxLanguage.SelectedItem).WrappedObject.Name;\r\n\r\n            _settings.Settings.Save();\r\n\r\n            EntryPoint.Restart();\r\n        }\r\n\r\n        private void buttonNext_Click(object sender, EventArgs e)\r\n        {\r\n            TopMost = false;\r\n\r\n            _pageNumber++;\r\n            if (_pageNumber >= _pages.Length)\r\n                _pageNumber = _pages.Length - 1;\r\n\r\n            UpdateScrollPosition();\r\n        }\r\n\r\n        private void buttonPrev_Click(object sender, EventArgs e)\r\n        {\r\n            _pageNumber--;\r\n            if (_pageNumber < 0)\r\n                _pageNumber = 0;\r\n\r\n            UpdateScrollPosition();\r\n        }\r\n\r\n        private void CloseWizard(object sender, EventArgs e)\r\n        {\r\n            try\r\n            {\r\n                _settings.Settings.MiscFirstRun = false;\r\n                _settings.Settings.Save();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n            }\r\n\r\n            Close();\r\n        }\r\n\r\n        private void FirstStartBox_FormClosed(object sender, FormClosedEventArgs e)\r\n        {\r\n            _settings.RemoveHandlers(this);\r\n        }\r\n\r\n        private void OpenContactForm(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(Resources.ContactUrl);\r\n        }\r\n\r\n        private void OpenHomepage(object sender, LinkLabelLinkClickedEventArgs e)\r\n        {\r\n            PremadeDialogs.StartProcessSafely(Resources.HomepageUrl);\r\n        }\r\n\r\n        private void timer1_Tick(object sender, EventArgs e)\r\n        {\r\n            int resultXPos;\r\n            var currentXPos = scrollPanel.HorizontalScroll.Value;\r\n\r\n            var difference = Math.Abs(_targetXPos - currentXPos);\r\n            var change = Math.Max(1, (int)Math.Round(Math.Pow(difference / 5f, 1.03f), MidpointRounding.ToEven));\r\n\r\n            if (currentXPos > _targetXPos)\r\n            {\r\n                resultXPos = currentXPos - change;\r\n                resultXPos = Math.Max(resultXPos, _targetXPos);\r\n            }\r\n            else if (currentXPos < _targetXPos)\r\n            {\r\n                resultXPos = currentXPos + change;\r\n                resultXPos = Math.Min(resultXPos, _targetXPos);\r\n            }\r\n            else\r\n            {\r\n                resultXPos = _targetXPos;\r\n            }\r\n\r\n            //Console.WriteLine(string.Format(\"{0,5}{1,5}{2,5}\", currentXPos, change, resultXPos));\r\n\r\n            resultXPos = Math.Clamp(resultXPos, scrollPanel.HorizontalScroll.Minimum, scrollPanel.HorizontalScroll.Maximum);\r\n\r\n            // Double assign is needed because of a bug in the control\r\n            scrollPanel.HorizontalScroll.Value = resultXPos;\r\n            scrollPanel.HorizontalScroll.Value = resultXPos;\r\n\r\n            if (resultXPos == _targetXPos)\r\n            {\r\n                timer1.Enabled = false;\r\n\r\n                if (_pageNumber == _pages.Length)\r\n                    buttonFinish.Focus();\r\n            }\r\n        }\r\n\r\n        private void UpdateScrollPosition()\r\n        {\r\n            labelProgress.Text = $\"{_pageNumber + 1} / {_pages.Length + 1}\";\r\n\r\n            _targetXPos = _pageNumber * _pageWidth;\r\n\r\n            timer1.Enabled = false; // Not actually needed\r\n            var currentValue = scrollPanel.HorizontalScroll.Value;\r\n\r\n            // Bug in the control: Scroll bar resets when the Enabled property is set to false\r\n            buttonNext.Enabled = _pageNumber < _pages.Length - 1;\r\n            buttonPrev.Enabled = _pageNumber > 0;\r\n\r\n            // Double assign is needed because of a bug in the control\r\n            scrollPanel.HorizontalScroll.Value = currentValue;\r\n            scrollPanel.HorizontalScroll.Value = currentValue;\r\n\r\n            UpdatePageEnabledState();\r\n\r\n            timer1.Enabled = true;\r\n        }\r\n\r\n        private void UpdatePageEnabledState()\r\n        {\r\n            for (var index = 0; index < _pages.Length; index++)\r\n            {\r\n                var page = _pages[index];\r\n                var current = index == _pageNumber;\r\n                page.Enabled = current;\r\n                if (current) page.Focus();\r\n            }\r\n        }\r\n\r\n        private void buttonMore_Click(object sender, EventArgs e)\r\n        {\r\n            using (var sw = new SettingsWindow())\r\n                sw.ShowDialog(this);\r\n\r\n            DialogResult = DialogResult.None;\r\n        }\r\n\r\n        private void buttonHelp_Click(object sender, EventArgs e)\r\n        {\r\n            MessageBoxes.DisplayHelp();\r\n        }\r\n\r\n        private void FirstStartBox_Load(object sender, EventArgs e)\r\n        {\r\n\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Ukončit průvodce</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Zpět</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Pokračovat</value>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>Další nastavení</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Ukončete průvodce</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>Nyní můžete začít používat BCUninstaller. Máte-li jakékoli dotazy nebo chcete-li navrhnout novou funkci navštivte odkaz níže.</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Otevřete kontaktní formulář</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Můžete si přečíst podrobné protokoly změn a podívejte se na více mého softwaru na domovské stránce.</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Otevřete domovskou stránku</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>Instalační program byl dokončen</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Přístup k síti</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller se může připojit k internetu z následujících důvodů:</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● Chcete-li hledat aktualizací programu.</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● Chcete-li nahrát chybové hlášení.</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● Chcete-li poslat anonymní statistiku používání.</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Pokaždé, když dojde k chybě, budete dotázáni, zda ji chcete odeslat. Můžete zkontrolovat, jaké údaje jsou odesílány ve zprávách o chybách a používání programu, kontrolou XML soubory v adresáři BCUninstaller .Odeslaná data nejsou poskytována třetími stranám.</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Automaticky hledat aktualizace při startu aplikace</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>Můžete vyhledávat aktualizace ručně  na liště nabídky.</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Automaticky posílat anonymní statistiku používání programu</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>Odesláním této statistiky pomůže zlepšit BCUninstaller.</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Poškozený odinstalátor</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Časem možná zjistíte, že některé aplikace se odmítnou odinstalovat, nebo si jen tak zmizí  z většiny manažerů pro odinstalování.</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Poškozený nebo chybějící odinstalátor</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>V některých případech odinstalátor může být poškozen, a není nemožná odinstalace. BCUninstaller umožňuje odebrat tyto položky snadno pomocí volby \"Odinstalovat ručně\".</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Zvýraznit neplatné odinstalátory</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>Neplatné odinstalátory jsou označeny šedě.</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Neregistrované aplikace</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>Někdy celé aplikace mohou být ponechána na disku, i poté, co byl odinstalovány. To se také může stát, když se pouze program na odinstalaci odstraní.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit neregistrované aplikace v seznamu</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>Neregistrované aplikace jsou označeny červeně.\r\nPokud původní odinstalátor není nalezen, budete muset použít volbu \"Odinstalovat ručně\", k jejich odstranění.</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Zkušení uživatelé</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>Zatímco BCUninstaller může být použit jako základní odinstalátor, většina z jeho funkcí jsou zaměřeny pro zkušené uživatele. Postupujte opatrně!</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>Systémové součásti</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>Aplikace označené jako \"součásti systému\", jsou skryty pro většinu základních manažerů pro odinstalování. Tato značka Neznamená, že aplikace je součástí operačního systému.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit odinstalátory označené jako \"součástí systému\"</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Chráněné odinstalátory</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Chráněné položky jsou označeny \"NoRemove\" značka, což znamená, že vydavatel nechce jejich odstranění. Tato značka je často používána u velkých softwarových balíčků, aby vám zabránila odinstalování jejich jednotlivých částí.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit odinstalátory označené jako \"chráněné\"</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Zakázat ochranu odinstalátorů označených jako \"chráněné\"</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>To vám umožní odinstalovat chráněné položky.</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalátor zobrazení seznamu</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>Všechny odinstalátory nalezené ve vašem systému jsou v hlavním zobrazení seznamu. Zde jsou některé způsoby, jak procházet tyto údaje:</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Pomocí filtrů a hledání klíčových slov (ve všech sloupcích)</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Řadit odinstalátory podle libovolného sloupce. Volně uspořádání sloupců.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>● Seskupení podobných odinstalátorů</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit odinstalátory ve skupinách</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Vyberte pomocí zaškrtávacích políček</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Certifikované odinstalátory</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>Odinstalátory mohou být podepsána certifikáty vydanými příslušnými orgány. Pokud certifikát projde validace, softwarový balík nebyl změněn a je seriózní.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Zvýraznit certifikované odinstalátory</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>Ověřené odinstalátory jsou označeny zeleně, neověřené jsou v modré barvě.\r\nUpozornění: Ověření může trvat delší dobu.</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Vítejte v BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Tento průvodce umožní rychlou prohlídku a pomůže s konfiguraci aplikace.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Výběr jazyka</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>Můžete vynutit BCUninstaller použít konkrétní lokalizaci, pokud výchozí jazyk je nesprávný. Po restartu bude aplikován nový jazyk.</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Použít</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>Pokud jste ochotni pomoci s překladem BCUninstaller do Vašeho jazyka, klikněte na odkaz níže, aby jste mě kontaktovali. Veškerou pomoc velmi ocenim!</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Otevřete kontaktní formulář</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Vítejte v BCUninstaller</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● Chcete-li načíst a nahrajte aplikační ratingy</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Aktivovat uživatelských ratingy aplikací</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n    <comment>The missing B is in an image next to the text</comment>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Zobrazit nápovědu</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Verlassen</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Zurück</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Weiter</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Assistenten verlassen</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>Sie können nun den BCUninstaller starten. Wenn Sie Fragen haben oder ein neues Feature vorschlagen möchten, verwenden Sie bitte den unten stehenden Link.</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Kontaktformular öffnen</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Detaillierte Änderungsprotokolle finden Sie auf der Homepage ebenso wie weitere Software von mir.</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Homepage öffnen</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>Setup wurde abgeschlossen</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Netzwerkzugriff</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller kann versuchen, aus folgenden Gründen eine Verbindung mit dem Internet herzustellen:</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● zur Suche nach Updates</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● zur Fehlerberichterstattung.</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● zum Senden anonymer Nutzerstatistiken</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Wenn ein Fehler auftritt, werden Sie gefragt, ob Sie einen Fehlerbericht senden möchten. \r\nSie können jederzeit überprüfen, welche Daten in Fehler- und Nutzungsreports gesendet werden. Überprüfen Sie dazu die jeweiligen XML-Dateien im BCUninstaller Verzeichnis. \r\nGesendeten Daten werden nicht an Dritte weitergegeben.</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Beim Start automatisch nach Updates suchen</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>Aus der Menüleiste können Sie manuell nach Aktualisierungen suchen.</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Automatisch anonyme Nutzungsstatistiken senden</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>Diese Statistiken helfen mir, BCUninstaller zu verbessern.</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Beschädigte Uninstaller</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Zeitweise kann es vorkommen, dass eine Anwendung sich weigert, deinstalliert zu werden, oder einfach aus den meisten Uninstall-Programmen verschwindet.</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Beschädigte oder fehlende Uninstaller</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>In einigen Fällen können Uninstaller beschädigt sein, so dass man nicht deinstallieren kann. BCUninstaller kann diese Einträge mit der Option \"Manuell deinstallieren\" entfernen.</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Beschädigte Uninstaller hervorheben</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>Beschädigte Uninstaller werden grau angezeigt</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Nicht registrierte Anwendung</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>Manchmal können nach einer Deinstallation vollständige Anwendungen auf dem Laufwerk zurück bleiben.\r\nDas kann auch passieren, wenn der Uninstaller selbst entfernt wurde.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Nicht registrierte Anwendungen in der Liste anzeigen</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>Nicht registrierte Anwendungen werden rot dargestellt.\r\nFehlt der originäre Uninstaller, können Sie die Option \"Manuell deinstallieren\" verwenden, um die Anwendung zu entfernen.</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Erfahrene Anwender</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>Obwohl BCUninstaller als Standard-Uninstaller verwendet werden kann, richten sich die meisten Funktionen an erfahrene Anwender. Lassen Sie Vorsicht walten!</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>Systemkomponenten</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>Anwendungen, die als \"Systemkomponenten\" gekennzeichnet sind, werden von den meisten einfachen Uninstallern ausgeblendet. Diese Kennzeichnung  bedeutet NICHT, dass die Anwendung zum Betriebssystem gehört.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Als \"Systemkomponente\" markierte Uninstaller anzeigen</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Geschützte Uninstaller</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Geschützte Elemente werden als \"NoRemove\" gekennzeichnet, was bedeutet, dass der Herausgeber nicht will, dass Sie sie entfernen. \r\nDas Kennzeichen wird häufig von umfangreicher Software verwendet, um zu verhindern, dass Sie ihre Einzelteile deinstallieren.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>\"Geschützte\" Uninstaller anzeigen</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Den Schutz \"geschützter\" Uninstaller entfernen</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>Damit können Sie geschützte Elemente deinstallieren</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>Uninstaller Liste</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>Alle in Ihrem System gefundenen Uninstaller befinden sich in der Hauptliste. Einige Möglichkeiten, um diese Daten zu durchsuchen:</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Filter verwenden und nach Schlüsselwörtern (in allen Spalten) suchen</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Sortieren Sie Uninstaller nach beliebigen Spalten. Sie können alle Spalten neu anordnen.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>● Gruppieren von ähnlichen Uninstallern</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Elemente gruppieren</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Auswahl mit Checkboxen</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Zertifizierte Uninstaller</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>Uninstaller können mit von zuständigen Behörden ausgestellten Zertifikaten signiert sein. Wurde das Zertifikat erfolgreich validiert, ist das Softwarepaket unverändert und als seriös eingestuft.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Zertifizierte Uninstaller hervorheben</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>Verifizierte Uninstaller sind grün, nicht verifizierte blau markiert.\r\nAchtung: die Überprüfung kann lange dauern.</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Willkommen beim BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Dieser Assistent gibt Ihnen einen kurzen Überblick und soll Ihnen helfen, die Anwendung zu konfigurieren.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Sprache</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>Wählen Sie für BCUninstaller Ihre Landessprache. Nach einem Neustart wird die neue Sprache übernommen.</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Anwenden</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>Kontaktieren Sie mich gerne, wenn Sie helfen möchten, BCUninstaller in Ihre Sprache zu übersetzen. Klicken Sie dafür auf den Link unten. \r\nJede Hilfe ist willkommen!</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Kontaktformular öffnen</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n    <comment>The missing B is in an image next to the text</comment>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Willkommen beim BCUninstaller</value>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>Weitere Einstellungen</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● Um abzurufen und laden Sie Anwendungs Wertungen</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Aktivieren nutzerbewertungen von Applikationen</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Zeige Hilfe</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>¡Bienvenido a BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Ver ayuda</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>Si usted está dispuesto a ayudar a traducir BCUninstaller a su idioma, haga clic en el enlace de abajo para ponerse en contacto conmigo. ¡Toda ayuda es muy apreciada!</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● Para capturar y cargar puntuaciones de aplicaciones</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Continuar</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores corruptos</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Los elementos protegidos están marcados con la etiqueta \"No Eliminar\", lo que significa que el editor no quiere que los elimine. Esta etiqueta es utilizada a menudo en los grandes paquetes de software para evitar la desinstalación de sus partes individuales.</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Acceso a Internet</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● Para enviar estadísticas de uso anónimas.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>Todos los desinstaladores que se encuentran en el sistema están en la lista principal. Estas son algunas formas de navegar por estos datos:</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>Los desinstaladores inválidos están marcados en gris.</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Abrir la página de inicio</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● Para buscar actualizaciones del programa.</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller puede forzar el uso de una localización específica si el idioma por defecto es incorrecto. Se realizará un reinicio para aplicar el nuevo idioma.</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Resaltar desinstaladores inválidos</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>Puede buscar actualizaciones de forma manual desde la barra de menú.</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>Las aplicaciones no registradas están marcadas en rojo.\r\nSi no está el desinstalador original tendrá que utilizar la opción \"Desinstalar manualmente\" para eliminarlas.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bienvenido a BCUninstaller</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Finalizar configuración</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar desinstaladores marcados como \"protegidos\"</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Habilitar puntuación de las aplicaciones</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Aplicar</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Aplicación no registrada</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>Componentes del sistema</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Volver</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller puede intentar conectarse a Internet por las siguientes razones:</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Cada vez que se produzca un error se le preguntará si desea enviarlo. Puede comprobar los datos que se están enviando en los informes de errores y uso mediante la inspección de sus respectivos archivos XML en el directorio de BCUninstaller. Los datos enviados no se comparten con terceros.</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>El envío de estas estadísticas ayudará a mejorar BCUninstaller.</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>Ahora puede comenzar a utilizar BCUninstaller. Si tiene alguna pregunta o desea sugerir una nueva característica visite el siguiente enlace.</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar desinstaladores en grupos</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores certificados</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>Esto le permitirá desinstalar elementos protegidos.</value>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>Más ajustes</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Este asistente le dará un recorrido rápido y ayudará a configurar la aplicación.</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>Las aplicaciones marcadas como \"componentes del sistema\" se ocultan de la mayor parte de los gestores básicos de desinstalación. Esta etiqueta NO significa que la aplicación es una parte del sistema operativo.</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Desactivar la protección de los desinstaladores marcados \r\ncomo \"protegidos\"</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Usuarios avanzados</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores corrompidos o que faltan</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Resaltar desinstaladores certificados</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores protegidos</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>Vista de la lista del desinstalador</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Con el tiempo encontrará que algunas aplicaciones se niegan a desinstalarse, o simplemente desaparecerán de la mayoría de los gestores de desinstalación.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar aplicaciones no registradas en la lista</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>En algunos casos los desinstaladores pueden corromperse, haciendo imposible su desinstalación. BCUninstaller puede quitar estas entradas fácilmente utilizando la opción \"Desinstalar manualmente\".</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>A veces las aplicaciones enteras pueden dejar restos en su unidad, incluso después de haber sido desinstaladas. Esto también puede ocurrir si solamente se quita el desinstalador.</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>Los desinstaladores pueden ser firmados con certificados emitidos por las autoridades pertinentes. Si el certificado pasa la validación, y el paquete de software no ha sido alterado y tiene buena reputación.</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller puede ser utilizado como un desinstalador básico, la mayoría de sus funciones se dirigen a los usuarios más avanzados. ¡Proceda con precaución!</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Seleccionar usando checkboxes</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Enviar automáticamente estadísticas de uso anónimas</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>La instalación ha terminado\r\n</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Buscar actualizaciones automáticamente al iniciar la aplicación</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Abrir el formulario de contacto</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>Los desinstaladores verificados están marcados en verde, los no verificados están en azul.\r\nAdvertencia: La verificación puede tardar mucho tiempo.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Ordenar desinstaladores por cualquier columna. Reorganizar las columnas libremente.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>● Agrupar desinstaladores similares</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk Crap\r\nUninstaller</value>\r\n    <comment>The missing B is in an image next to the text</comment>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Utilizar filtros y búsqueda de palabras clave (en todas las columnas)</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Abrir el formulario de contacto</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Salir del asistente</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar desinstaladores marcados como \"componentes \r\ndel sistema\"</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● Para cargar los informes de errores.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Idioma seleccionado</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Usted puede leer los registros de cambios detallados y echar un mejor vistazo de mi software en la página de inicio.</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Quitter l'assistant</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Précédent</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Continuer</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Terminer l'installation</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>Vous pouvez maintenant utiliser BCUninstaller. Si vous des questions ou souhaiteriez suggérer une nouvelle fonction, visitez le lien ci-dessous.</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir le formulaire de contact</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Vous pouvez lire le journal détaillé des changements et voir davantage de mes logiciels sur la page d'accueil.</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir la page d'accueil</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>L'installation est terminée</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Accès réseau</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller peut tenter de se connecter à internet pour les raisons suivantes :</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● Pour chercher des mises à jour du programme.</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● Pour télécharger des rapports d'erreurs.</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● Pour envoyer des statistiques anonymes d'utilisation.</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Chaque fois qu'une erreur survient, il vous sera demandé si vous voulez l'envoyer. Vous pouvez vérifier quelle donnée est envoyée dans les rapports d'erreur et d'utilisation en inspectant leurs fichiers XML respectifs dans le dossier de BCUninstaller. Les données envoyées ne sont partagées avec aucune tierce partie. </value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Chercher automatiquement les mises à jour au démarrage \r\nde l'application</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>Vous pouvez chercher manuellement les mises à jour depuis la barre de menus.</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Envoyer automatiquement les statistiques anonymes d'utilisation</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>L'envoi de ces statistiques aidera à améliorer BCUninstaller.</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Désinstalleurs corrompus</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Au fil du temps, vous pouvez découvrir que certaines applications refuseront de se désinstaller, ou disparaitront juste de la plupart des gestionnaires de désinstallation.</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Désinstalleurs corrompus ou manquants</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Dans quelques cas, les désinstalleurs peuvent être corrompus, rendant impossible la désinstallation. BCUninstaller peut supprimer facilement ces entrées en utilisant l'option \"Désinstaller manuellement\".</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Surligner les désinstalleurs invalides</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>Les désinstalleurs invalides sont marqués en gris.</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Applications non enregistrées</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>Parfois, des applications entières peuvent être laissées sur votre lecteur après avoir été désinstallées. Cela peut aussi arriver si seul le désinstalleur est supprimé.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Montrer les applications non enregistrées dans la liste</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>Les applications non enregistrées sont marquées en rouge.\r\nSi le désinstalleur d'origine est introuvable, vous devrez utiliser l'option \"Désinstaller manuellement\" pour les supprimer.</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Utilisateurs avancés</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>Quoique BCUninstaller puisse être utilisé comme un désinstalleur basique, la plupart de ses fonctions sont destinées aux utilisateurs avancés. Procédez avec précaution !</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>Composants système</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>Les applications marquées comme \"composants système\" sont cachées de la plupart des gestionnaires basiques de désinstallation. Cette balise ne signifie PAS que l'application fait partie du système d'exploitation.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Afficher les désinstalleurs marqués comme \r\n\"composants système\"</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Désinstalleurs protégés</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Les éléments protégés sont marqués avec la balise \"NoRemove\", qui signifie que l'éditeur ne veut pas que vous les supprimiez. Cette balise est souvent utilisée par des grands ensembles de logiciels pour vous empêcher de désinstaller leurs parties individuelles.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Afficher les désinstalleurs marqués comme \"protégés\"</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Désactiver la protection des désinstalleurs marqués \r\ncomme \"protégés\"</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>Cela vous laissera désinstaller les éléments protégés.</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>Vue liste du désinstalleur</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>Tous les désinstalleurs trouvés dans votre système sont dans la vue liste principale. Voici quelques façons de parcourir ces données :</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Utiliser des filtres et chercher des mots-clés (dans toutes les colonnes).</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Trier les désinstalleurs par toute colonne. Réarranger librement les colonnes.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>● Grouper les désinstalleurs similaires.</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Afficher les désinstalleurs en groupes</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Sélectionnner par cases à cocher</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Désinstalleurs certifiés</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>Les désinstalleurs peuvent être signés avec des certificats publiés par les autorités compétentes. Si le certificat passe la validation, le progiciel n'a pas été altéré et est réputé.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Surligner les désinstalleurs certifiés</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>Les désinstalleurs vérifiés sont marqués en vert, non vérifiés en bleu.\r\nAttention : la vérification peut mettre longtemps.</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Bienvenue à BCUninstaller !</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Cet assistant vous fera faire un tour rapide et aidera à configurer l'application.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Langue sélectionnée</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>Vous pouvez forcer BCUninstaller à utiliser une localisation spécifique si la langue par défaut est incorrecte. Un redémarrage sera réalisé pour appliquer la nouvelle langue. </value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Appliquer</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>Si vous souhaitez aider à traduire BCUninstaller dans votre langue, cliquez sur le lien ci-dessous pour me contacter. Toute aide est grandement appréciée !</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir le formulaire de contact</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bienvenue dans BCUninstaller </value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n    <comment>The missing B is in an image next to the text</comment>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>Plus de réglages</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● Pour récupérer et envoyer les notes d'application.</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Activer les notes utilisateur des applications</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Voir l'aide</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Kilépés</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Vissza</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Tovább</value>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>További beállítások</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Súgó</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Befejezés</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>Most már használhatja a BCUninstaller-t. Ha kérdése lenne, vagy egy újabb funkciót szeretne javasolni kattintson a lenti hivatkozásra.</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Kapcsolat űrlap megnyitása</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>A módosítások részleteit elolvashatja a honlapunkon, illetve ott további információkat kaphat.</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Honlap megnyitása</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>A telepítés befejeződött</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Hálózati hozzáférés</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>A BCUninstaller a következők miatt, adott esetekben csatlakozhat az Internethez:</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● Programfrissítések keresése.</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● Hibajelentések elküldése.</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● Névtelen használati statisztika elküldése.</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● Alkalmazás minősítések fel- és letöltése.</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Amikor hiba történik a program megkérdi önt, hogy szeretne-e arról jelentést küldeni. Csak jelölje ki az elküldendő jelentéseket, amelyek a BCUninstaller könyvtárában levő XML fájlokban találhatók. Az elküldött adatokat nem osztjuk meg semmilyen harmadik féllel.</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Frissítések automatikus keresése a program indításakor</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>A frissítéseket kézzel is megkeresheti a menüsorban.</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Névtelen használati statisztika elküldése</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>Ezeknek a statisztikáknak az elküldésével segíthet a program jobbá tételében.</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Alkalmazások minősítésének engedélyezése</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Sérült eltávolítók</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Idővel előfordulhat, hogy néhány alkalmazást már nem tud eltávolítani, vagy azok eltűnnek a legtöbb eltávolításkezelő elől.</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Sérült vagy hiányzó eltávolítók</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Néha az eltávolítók megsérülhetnek, így ezekkel nem lehetséges az eltávolítás. A BCUninstaller az ilyen jellegű bejegyzéseket is eltávolítja a \"Kézi eltávolítás\" opcióval.</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Érvénytelen eltávolítók jelölése</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>Az érvénytelen eltávolítók szürkével lesznek megjelölve.</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Nem regisztrált alkalmazás</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>Néha teljes alkalmazások maradhatnak vissza a lemezén egy eltávolítást követően. Ez akkor is előfordulhat, ha csak az eltávolító kerül törlésre.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Nem regisztrált mutatása a listában</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>Az nem regisztrált alkalmazások pirossal vannak jelölve.\r\nHa az eredeti eltávolító nem található meg, ezekhez használhatja a \"Kézi eltávolítás\" lehetőséget.</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Speciális felhasználók</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>A BCUninstaller ugyan egy alap eltávolítóként használható, azonban számos funkciója szakértő felhasználóknak ajánlott. Óvatosan menjen tovább!</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>Rendszerelemek</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>A programok által \"rendszerelemként\" jelöltek nem láthatók az alap eltávolításkezelőkben. Ez a címke NEM jelenti azt, hogy az alkalmazás az operációs rendszer része lenne.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>\"Rendszerelemként\" megjelölt eltávolítók mutatása</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Védett eltávolítók</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Védett elemek, amelyek \"NoRemove\" címkével vannak ellátva. Ebben az esetben a kiadó nem akarja, hogy eltávolítsa ezeket. Ezt általában nagy szoftvercsomagok használják, hogy megakadályozzák az egyes részeik eltávolítását.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>\"Védettként\" megjelölt eltávolítók mutatása</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>\"Védettként\" megjelölt eltávolítók védelmének kikapcsolása</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>Ezzel eltávolíthatja a védett elemeket.</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>Eltávolító lista-nézet</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>A rendszerében levő összes eltávolító megnézhető a fő listanézetben. Néhány módszer az adatok áttekintéséhez:</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Szűrőhasználat és kulcsszavas keresés (az összes oszlopban)</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Rendezés bármely oszlop szerint. Az oszlopok átrendezhetők.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>● Hasonló eltávolítók csoportosítása</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Elemek csoportosítása</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Kijelölés jelölőnégyzetekkel</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Hitelesített eltávolítók</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>Az eltávolítók aláírásra kerülhetnek a fejlesztők által kiadott tanúsítványokkal. Ha a tanúsítvány átment a hitelesítésen, a programcsomag nem lett módosítva és megbízható.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Hitelesítettek megjelölése</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>A hitelesített eltávolítók zölddel, egyébként kékkel lesznek jelölve.\r\nFigyelem: Az ellenőrzés hosszabb ideig is eltarthat.</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Üdvözli Önt a BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>A varázslóban gyors segítséget kap az alkalmazás megfelelő beállításához.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Kiválasztott nyelv</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>Kényszerítheti a BCUninstaller-t, egy adott nyelv használatára, ha az alap nyelv nem felel meg. Az új nyelv alkalmazásához újra kell indítani a programot.</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Alkalmaz</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>Ha lefordítaná a saját nyelvére a BCUninstaller-t, kattintson az alábbi hivatkozásra a kapcsolatfelvételhez. Minden segítséget szívesen fogadunk!</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Kapcsolat űrlap megnyitása</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n    <comment>The missing B is in an image next to the text</comment>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Üdvözli a BCUninstaller</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Esci dalla procedura guidata</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Indietro</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Continua</value>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>Altre opzioni</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza guida in linea</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Fine impostazione</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>Ora puoi iniziare ad usare BCUninstaller. Per qualunque domanda o suggerimenti di nuove funzionalità usa i collegamenti in basso.</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Apri il modulo di contatto</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Nella pagina web puoi leggere il dettaglio delle novità del programma e dare uno sguardo ad altre informazioni.</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Apri la pagina web del programma</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>Configurazione programma completata</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Accesso alla rete</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller cercherà di collegarsi ad internet per i seguenti motivi:</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● Cercare aggiornamenti del programma.</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● Inviare segnalazioni di errori</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● Inviare statistiche di uso anonime.</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● Recuperare e inviare valutazioni sull'applicazione</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Quando si verificherà un errore verrà chiesto se segnalarlo. Puoi controllare quali dati vengono inviati nelle segnalazioni di errori e di uso controllando i relativi file XML nella cartella di BCUninstaller. I dati inviati non saranno condivisi con nessuno.</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>All'avvio controlla automaticamente la disponibilità di aggiornamenti</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>Puoi cercare manualmente gli aggiornamenti dalla barra dei menù.</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Invia automaticamente statistiche d'uso anonime.</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>L'invio delle statistiche contribuirà al miglioramento di BCUninstaller.</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Abilita le valutazioni utente dell'applicazione</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Disinstallatori corrotti</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Nel tempo può capitare che alcune applicazioni si rifiuteranno di essere disinstallate, o scompariranno dalla maggiori parte dei gestori di disinstallazione.</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Disinstallatori corrotti o mancanti</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>In alcuni casi i disinstallatori possono corrompersi, rendendo impossibile la disinstallazione. BCUninstaller può facilmente rimuovere queste voci usando l'opzione \"Disinstalla manualmente\".</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Evidenzia disinstallatori non validi</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>I disinstallatori non validi sono evidenziati in grigio.</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Applicazione non registrata</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>A volte intere applicazioni posso restare nel disco persino dopo la disinstallazione. Può accadere se viene rimosso il solo disinstallatore.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza nell'elenco le applicazioni non registrate</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>Le applicazioni non registrate sono evidenziate in rosso. \r\nSe il disinstallatore originale non viene rilevato per rimuoverle bisogna usare l'opzione \"Disinstalla manualmente\".</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Utenti avanzati</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>Anche se BCUninstaller può essere usato come semplice disinstallatore, la maggior parte delle sue funzioni sono rivolte agli utenti esperti. Procedi con cautela!</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>Componenti di sistema</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>Le applicazioni evidenziate come 'Componenti di sistema' sono invisibili alla maggior parte dei gestori di disinstallazione standard. Questo attributo NON indica che l'applicazione è parte del sistema operativo.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza disinstallatori evidenziati come \"componenti di sistema\"</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Disinstallatori protetti</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Gli elementi protetti sono segnati con l'attributo \"NoRemove\", che indica che il produttore non vuole che vengano rimossi. Questo attributo è spesso usato da svariati pacchetti software per evitare che vengano disinstallate parti di esso.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza disinstallatori evidenziati come \"protetti\"</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Disabilita la protezione dei disinstallatori evidenziati come \"protetti\"</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>Questo permetterà di disinstallare gli elementi protetti.</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>Vista elenco disinstallatore</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>Tutti i disinstallatori trovati nel sistema sono visualizzati nell'elenco principale. Qui ci sono alcune modalità di visualizzazione di queste informazioni:</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Usa i filtri e cerca per parole chiave (in tutte le colonne)</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Ordina i disinstallatori per tutte le colonne. Riordina le colonne liberamente.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>● Raggruppa disinstallatori simili</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Visualizza disinstallatori in gruppi</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Seleziona tramite riquadri di controllo</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Disinstallatori certificati</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>I disinstallatori possono essere firmati con certificati emessi da autorità attendibili. Se il certificato supera la validazione significa che il pacchetto software non è stato alterato ed è affidabile.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Evidenzia disinstallatori certificati</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>I disinstallatori verificati sono evidenziati in verde, quelli non verificati in blu. Attenzione: la verifica può durare a lungo.</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Benvenuto in BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Questa procedura guidata visualizzerà una breve introduzione e aiuterà a configurare l'applicazione.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Lingua selezionata</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>Se la lingua predefinita non è corretta puoi forzare BCUninstaller ad usare un'altra lingua. Per usare la nuova lingua sarà necessario riavviare l'applicazione.</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Applica</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>Se sei disposto ad aiutarci nella traduzione di BCUninstaller nella tua lingua fai clic sul collegamento in basso per contattarmi. Ogni aiuto è fortemente apprezzato!</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Apri il modulo dei contatti</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n    <comment>The missing B is in an image next to the text</comment>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Benvenuto in BCUninstaller</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1月6日</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>ウィザードを終了</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>戻る</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>続ける</value>\n  </data>\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\n    <value>さらなる設定</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>ヘルプを見る</value>\n  </data>\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\n    <value>セットアップを完了</value>\n  </data>\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\n    <value>これでBCUninstallerを使用開始できます。質問がある場合や新機能を提案したい場合は、以下のリンクを参照ください。</value>\n  </data>\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\n    <value>お問い合わせフォームを開く</value>\n  </data>\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\n    <value>詳細な変更履歴を読み、ホームページで他のソフトウェアを確認できます。</value>\n  </data>\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\n    <value>ホームページを開く</value>\n  </data>\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\n    <value>セットアップが完了しました</value>\n  </data>\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\n    <value>ネットワークアクセス</value>\n  </data>\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\n    <value>BCUninstallerは以下の理由でインターネットに接続を試みることがあります:</value>\n  </data>\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\n    <value>● プログラムの更新を検索するため。</value>\n  </data>\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\n    <value>● エラーレポートをアップロードするため。</value>\n  </data>\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\n    <value>● 匿名の使用統計を送信するため。</value>\n  </data>\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\n    <value>● アプリケーションの評価を取得しアップロードするため。</value>\n  </data>\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\n    <value>エラーが発生するたびに送信するかどうか尋ねられます。\nBCUninstallerのディレクトリ内のそれぞれのXMLファイルを調べることで、エラーと使用報告に送信されるデータを確認できます。\n\n送信されたデータは第三者と共有されることはありません。</value>\n  </data>\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\n    <value>アプリケーション起動時に自動的に更新を探す</value>\n  </data>\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\n    <value>メニューバーから手動で更新を検索できます。</value>\n  </data>\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\n    <value>匿名の使用統計を自動的に送信する</value>\n  </data>\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\n    <value>これらの統計を送信することで、BCUninstallerの改善に役立ちます。</value>\n  </data>\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\n    <value>アプリケーションのユーザー評価を有効にする</value>\n  </data>\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\n    <value>壊れたアンインストーラー</value>\n  </data>\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\n    <value>時間が経つにつれ、いくつかのアプリケーションがアンインストールを拒否したり、ほとんどのアンインストールマネージャーから消えてしまうことがあります。</value>\n  </data>\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\n    <value>壊れたまたは存在しないアンインストーラー</value>\n  </data>\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\n    <value>場合によっては、アンインストーラーが壊れ、アンインストールできなくなることがあります。\nBCUninstallerは「手動でアンインストール」オプションを使用してこれらのエントリを簡単に削除できます。</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\n    <value>無効なアンインストーラーを強調表示</value>\n  </data>\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\n    <value>無効なアンインストーラーは灰色で表示されます。</value>\n  </data>\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\n    <value>登録されていないアプリケーション</value>\n  </data>\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\n    <value>時には、アンインストールされた後でも、ドライブにアプリケーション全体が残ることがあります。これは、アンインストーラーだけが削除された場合にも起こります。</value>\n  </data>\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\n    <value>リストに登録されていないアプリケーションを表示</value>\n  </data>\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\n    <value>登録されていないアプリケーションは赤で表示されます。\n元のアンインストーラーが見つからない場合は、「手動でアンインストール」オプションを使用して削除する必要があります。</value>\n  </data>\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\n    <value>上級者</value>\n  </data>\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\n    <value>BCUninstallerは基本的なアンインストーラーとして使用できますが、そのほとんどの機能は上級ユーザー向けです。慎重に進めてください！</value>\n  </data>\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\n    <value>システムコンポーネント</value>\n  </data>\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\n    <value>「システムコンポーネント」としてマークされたアプリケーションは、ほとんどの基本的なアンインストールマネージャーから隠されています。\nこのタグは、アプリケーションがオペレーティングシステムの一部であることを意味するものではありません。</value>\n  </data>\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\n    <value>「システムコンポーネント」としてマークされたアンインストーラーを表示</value>\n  </data>\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\n    <value>保護されたアンインストーラー</value>\n  </data>\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\n    <value>保護されたアイテムは「NoRemove」タグでマークされており、発行者がそれらを削除させたくないことを意味します。\nこのタグは、大規模なソフトウェアパッケージによって、個々の部分をアンインストールさせないように使用されることがよくあります。</value>\n  </data>\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\n    <value>「保護された」とマークされたアンインストーラーを表示</value>\n  </data>\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\n    <value>「保護された」とマークされたアンインストーラーの保護を無効にする</value>\n  </data>\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\n    <value>これにより、保護されたアイテムをアンインストールできるようになります。</value>\n  </data>\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\n    <value>アンインストーラーリストビュー</value>\n  </data>\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\n    <value>システム内で見つかったすべてのアンインストーラーは、メインリストビューにあります。以下はこのデータをブラウズする方法です：</value>\n  </data>\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\n    <value>● フィルターを使用し、キーワードを検索（すべての列で）</value>\n  </data>\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\n    <value>● 任意の列でアンインストーラーをソートします。列を自由に並べ替えます。</value>\n  </data>\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\n    <value>● 類似のアンインストーラーをグループ化</value>\n  </data>\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\n    <value>グループ内にアンインストーラーを表示</value>\n  </data>\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\n    <value>チェックボックスを使用して選択</value>\n  </data>\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\n    <value>認定アンインストーラー</value>\n  </data>\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\n    <value>アンインストーラーは、関連当局から発行された証明書で署名されることがあります。\n証明書が検証に合格した場合、そのソフトウェアパッケージは変更されておらず、信頼性があります。</value>\n  </data>\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\n    <value>認定アンインストーラーを強調表示</value>\n  </data>\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\n    <value>検証済みのアンインストーラーはグリーンで、未検証のものはブルーで表示されます。\n警告：検証には時間がかかることがあります。</value>\n  </data>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>BCUninstallerへようこそ！</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>このウィザードでは、簡単なツアーを行い、アプリケーションの設定を手伝います。</value>\n  </data>\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\n    <value>選択された言語</value>\n  </data>\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\n    <value>デフォルトの言語が正しくない場合、BCUninstallerに特定のローカリゼーションを強制することができます。新しい言語を適用するために再起動が行われます。</value>\n  </data>\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\n    <value>適用</value>\n  </data>\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\n    <value>BCUninstallerをあなたの言語に翻訳するのを手伝っていただける場合は、以下のリンクをクリックして私に連絡してください。\nどんな助けでも歓迎します！</value>\n  </data>\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\n    <value>お問い合わせフォームを開く</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>バルク･クラップ･アンインストーラー</value>\n    <comment>The missing B is in an image next to the text</comment>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>BCUninstallerへようこそ</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Assistent sluiten</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Vorige</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Volgende</value>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>Meer instellingen</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Help tonen</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Setup voltooien</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>U kunt de BCUninstaller nu starten.\r\nAls u vragen hebt of een nieuwe functie wilt voorstellen, gelieve onderstaande link te gebruiken.</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Contactformulier openen</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Gedetailleerde verslagen van programma wijzigingen en mijn andere software vindt u op mijn homepagina.</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Homepagina openen</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>Setup is voltooid.</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Netwerk toegang</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller kan proberen om verbinding te maken met het internet, om de volgende redenen:</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● Voor het zoeken naar programma updates</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● Voor het uploaden van foutrapportages</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● Voor het versturen van anonieme gebruikers statistieken.</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● Voor het ophalen en uploaden van toepassings waarderingen</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Wanneer er een fout optreedt vraag ik u, om mij daarvan een foutbericht te sturen.\r\nU kunt telkens controleren, welke gegevens in fout- en gebruiksrapportages gestuurd moeten worden.\r\nControleer daarvoor de betreffende XML-bestanden in de BCUinstaller map.</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Tijdens het starten automatisch naar updates zoeken.</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>In de menubalk kunt u ook handmatig naar updates zoeken.</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Automatisch anonieme gebruiks statistieken versturen</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>Deze statistieken helpen om BCUninstaller te verbeteren.</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Inschakelen gebruikers beoordelingen voor programma's.</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Beschadigde de-installer</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Van tijd tot tijd kan het voorkomen, dat een programma weigert te de-installeren of eenvoudigweg uit de meeste de-installer programma's verdwijnt.</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Beschadigde of ontbrekende de-installer(s)</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>In sommige gevallen kunnen de-installers beschadigd zijn, zodat men niet kan de-installeren.\r\nBCUninstaller kan deze registraties met de optie \"Handmatig de-installeren\" verwijderen.</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Beschadigde de-installers accentueren</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>Beschadigde de-installers worden grijs weergegeven</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Niet geregistreerde toepassing</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>Soms kunnen volledige programma's na de-installatie op de harde schijf achterblijven. Dit kan ook gebeuren als de de-installer zelf werd verwijderd.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Niet geregistreerde toepassingen in de lijst tonen</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>Niet geregistreerde toepassingen worden in het rood weergegeven.\r\nOntbreekt de originele de-installer, dan kunt u de optie \"Handmatig de-instaleren\" gebruiken, om het programma te verwijderen.</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Ervaren gebruikers</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>Hoewel BCUninstaller als standaard de-installer kan worden gebruikt, zijn de meeste functies bedoeld voor ervaren gebruikers. Handel met voorzichtigheid!</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>Systeem componenten</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>Programma's die als 'systeem component(en)' zijn aangeduid, worden door de meeste de-installers verborgen. Deze aanduiding betekent NIET, dat het programma tot het besturingssysteem behoort. </value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Als 'systeem componenten' aangeduide de-installers tonen</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Beveiligde de-installers</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Beveiligde onderdelen worden met het \"Niet Verwijderen\" label aangeduid hetgeen betekent, dat de uitgever niet wil dat u deze verwijderd. Deze aanduiding wordt vaak bij softwarepakketten gebruikt, om te voorkomen dat u daarvan onderdelen de-installeert.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>\"Beveiligde\" de-installers tonen</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>De beveiliging van \"beveiligde\" de-installers uitschakelen</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>Hierdoor kunt u beveiligde onderdelen de-installeren</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>De-installer lijst</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>Alle op uw systeem gevonden de-installers bevinden zich in de hoofdlijst. Enkele mogelijkheden om deze gegevens te doorzoeken:</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Filters gebruiken en naar sleutelwoorden zoeken (in alle kolommen)</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Sorteer de-installers volgens willekeurige kolommen.\r\nU kunt alle kolommen opnieuw ordenen.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>Groeperen van soortgelijke uninstallers</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Onderdelen groeperen</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Keuze met checkboxen</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Gecertificeerde de-installers</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>De-installers kunnen ondertekend zijn met certificaten van erkende autoriteiten. Werd het certificaat succesvol gevalideerd, dan is het softwarepakket onveranderd en deugdelijk.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Geverifieërde de-installers accentueren</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>Geverifieerde de-installers worden groen, niet geverifieerde worden blauw aangeduid.\r\nLet op: de verificatie kan lang duren.</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Welkom bij BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Deze assistent geeft u een kort overzicht en helpt u bij het configureren van dit programma.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Gekozen taal</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>Kies voor BCUninstaller uw taal.\r\nNa een herstart wordt de gekozen taal overgenomen.</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Toepassen</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>Als u wilt helpen met de vertaling van BCUninstaller in uw taal, klik dan op de link hieronder om contact met mij op te nemen. Alle hulp is welkom!</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Contactformulier openen</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n    <comment>The missing B is in an image next to the text</comment>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Welkom bij BCUninstaller</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Wyjdź z kreatora</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Cofnij</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Kontynuuj</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Zakończ konfigurację</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>Teraz możesz zacząć używać BCUninstaller. Jeśli masz jakieś pytania lub sugestie dotyczące nowych funkcji programu kliknij poniższy link.</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz formularz kontaktowy</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Możesz przeczytać szczegółowy dziennik zmian i sprawdzić inne moje programy na stronie głównej.</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz stronę główną</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>Konfiguracja została zakończona</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Dostęp do sieci</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller może próbować połączyć się z Internetem z następujących powodów:</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● Aby wyszukać aktualizacje.</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● Aby przesłać raporty o błędach.</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● Aby wysłać anonimowe dane statystyczne.</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Za każdym razem po wystąpieniu błędu wystąpi zapytanie o przesłanie raportu. Możesz sprawdzić jakie dane przesyłane są w raportach o błędach i w danych statystycznych sprawdzając pliki XML w katalogu BCUninstaller. Przesyłane dane nie są udostępnianie osobom trzecim.</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Automatycznie sprawdź aktualizacje przy starcie aplikacji</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>Możesz ręcznie sprawdzać aktualizacje na Pasku Menu</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Automatycznie przesyłaj dane statystyczne</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>Wysyłanie tych statystyk pomoże usprawnić działanie BCUninstaller.</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Uszkodzone dezinstalatory</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Z czasem niektóre aplikacje mogą odmówić dezinstalacji, lub mogą po prostu zniknąć z większości menedżerów dezinstalacji.</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Uszkodzone lub zaginione dezinstalatory</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>W niektórych przypadkach dezinstalatory mogą zostać uszkodzone, przez co odinstalowanie aplikacji staje się niemożliwe. Można usunąć je poprzez funkcję \"Odinstaluj ręcznie\".</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Zaznacz nieprawidłowe dezinstalatory</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>Nieprawidłowe dezinstalatory są zaznaczone na szaro</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Niezarejestrowana aplikacje</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>Czasem całe aplikacje mogą być pozostawione na dysku nawet po odinstalowaniu. Może się to zdarzyć, jeśli tylko dezinstalator jest usunięty.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż niezarejestrowane aplikacje na liście</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>Niezarejestrowane aplikacje są zaznaczone na czerwono.\r\nJeśli oryginalny dezinstalator nie zostanie znaleziony będziesz musiał skorzystać z opcji \"Odinstaluj ręcznie\", aby je usunąć.</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Użytkownicy zaawansowani</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller może być używany jako podstawowy dezinstalator. Większość jego funkcji przeznaczona jest dla użytkowników zaawansowanych. Postępuj ostrożnie!</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>Komponenty systemu</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>Aplikacje oznaczone jako \"składniki systemu\" są ukryte w większości podstawowych menedżerów dezinstalacji. Znacznik ten NIE oznacza, że aplikacja jest częścią systemu operacyjnego.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż dezinstalatory oznaczone jako \"komponenty systemu\"</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Chronione dezinstalatory</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Chronione elementy są oznaczone jako \"Nieusuwalne\", co oznacza, że wydawca nie chce, by je usunąć. To oznaczenie często jest wykorzystywane przez duże pakiety oprogramowania aby uniemożliwić odinstalowanie poszczególnych ich części.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż dezinstalatory oznaczone jako \"chronione\"</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Wyłącz ochronę dla dezinstalatorów oznaczonych \r\njako \"chronione\"</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>To pozwoli ci odinstalować elementy chronione.</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>Lista dezinstalatorów</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>Wszystkie dezinstalatory znalezione w systemie widoczne są w głównym widoku listy. Oto kilka sposobów, aby przeglądać te dane:</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Użyj filtrów i wyszukiwania słów kluczowych (we wszystkich kolumnach)</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Sortuj dezinstalatory według dowolnej kolumny. Dowolnie zmieniaj układ kolumn.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>● Grupuj podobne dezinstalatory.</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż dezinstalatory w grupach</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Zaznaczaj polami wyboru</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Dezinstalatory certyfikowane</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>Dezinstalatory mogą mieć podpisane certyfikaty wydane przez odpowiednie władze. Jeśli certyfikat przeszedł walidację pakiet oprogramowania nie został zmieniony i jest godny zaufania.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Zaznacz dezinstalatory certyfikowane</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>Zweryfikowane dezinstalatory są zaznaczone na zielone, niezweryfikowane na niebiesko. Uwaga: Weryfikacja może zając dużo czasu.</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Witaj w BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Ten kreator pomoże ci w szybkiej konfiguracji programu.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Wybrany język</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>Możesz zmienić język, jeśli domyślna lokalizacja sprzętu jest nieprawidłowa. Aby zastosować wybrany język nastąpi ponowne uruchomienie programu.</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Zastosuj</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>Jeśli chcesz pomóc w tłumaczeniu BCUninstaller na swój język, kliknij na link poniżej i skontaktuj się ze mną. Każda pomoc jest mile widziana!</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz formularz kontaktowy</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Witaj w BCUninstaller</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n    <comment>The missing B is in an image next to the text</comment>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>Więcej ustawień</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● Aby pobrać i wysłać oceny aplikacji</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Włącz oceny użytkowników dla aplikacji</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Pokaż pomoc</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Sair do assistente</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Voltar</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Continuar</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>A instalação finalizou</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Acesso à rede</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller pode tentar se conectar à Internet pelas seguintes razões:</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● Para procurar atualizações do programa</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● Enviar relatórios de erros.</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● Para enviar estatísticas anônimas de utilização.</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● Para obter e fazer upload de classificações de aplicativos</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Toda vez que ocorrer um erro, será perguntado se deseja enviá-lo. Você pode verificar quais dados estão sendo enviados com os relatórios de erros e de uso, inspecionando seus respectivos arquivos XML no diretório do BCUninstaller. Os dados enviados não são compartilhados com terceiros.</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Procurar automaticamente atualizações ao iniciar o aplicativo</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>Você pode procurar atualizações manualmente na barra de menus.</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Enviar automaticamente estatísticas de uso anônimo</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>O envio dessas estatísticas ajudará a melhorar o BCUninstaller.</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Habilitar classificações de usuários de aplicativos</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores corrompidos</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Ao longo do tempo, você pode achar que algumas aplicações se recusarão a desinstalar ou simplesmente desaparecerão da maioria dos gerenciadores de desinstalação.</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores corrompidos ou em falta</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Em alguns casos, os desinstaladores podem ficar corrompidos, tornando-os impossíveis de desinstalar. BCUninstaller pode remover essas entradas facilmente usando a opção \"Desinstalar manualmente\".</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Destacar Desinstaladores inválidos</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores inválidos são marcados em cinza.</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Aplicações não registradas</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>Às vezes, aplicativos inteiros podem ser deixados na sua unidade, mesmo depois de serem desinstalados. Isso também pode ocorrer se apenas o desinstalador for removido.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar aplicativos não registrados na lista</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>Os aplicativos não registrados estão marcados em vermelho.\r\nSe o desinstalador original não for encontrado, você terá que usar a opção \"Desinstalar manualmente\" para removê-los.</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Usuários avançados</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>Enquanto o BCUninstaller pode ser usado como um desinstalador básico, a maioria de suas funções são destinadas aos usuários avançados. Prossiga com cuidado!</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>Componentes do sistema</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>Os aplicativos marcados como \"componentes do sistema\" estão ocultos da maioria dos gerenciadores básicos de desinstalação. Esta etiqueta NÃO significa que o aplicativo seja parte do sistema operacional.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar desinstaladores marcados como \"componentes do sistema\"</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores protegidos</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Os itens protegidos são marcados com a tag \"NoRemove\", o que significa que o editor não deseja que você os remova. Esta etiqueta é frequentemente usada por grandes pacotes de software para evitar que você desinstale suas partes individuais.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar desinstaladores marcados como \"protegidos\"</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Desativar proteção de desinstaladores marcados como \"protegidos\"</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>Isso permitirá que você desinstale itens protegidos.</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>Visualização da lista do desinstalador</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>Todos os desinstaladores encontrados em seu sistema estão na lista principal. Aqui estão algumas maneiras de procurar esses dados:</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Use filtros e procure por palavras-chave (em todas as colunas)</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Classifique os desinstaladores por qualquer coluna. Colunas de rearranjo livre.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>● Agrupar desinstaladores similares.</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar desinstaladores em grupos</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Selecione usando caixas de seleção</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores certificados</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>Os desinstaladores podem ser assinados com certificados emitidos pelas autoridades relevantes. Se o certificado passar na validação, o pacote de software não foi alterado e é respeitável.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Destacar desinstaladores certificados</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>Os desinstaladores verificados são marcados em verde, não verificados estão em azul.\r\nAtenção: a verificação pode demorar muito.</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Bem-vindo ao BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Este assistente lhe dará um rápido passeio e ajudará a configurar o aplicativo.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Idioma selecionado</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>Você pode forçar o BCUninstaller a usar uma localização específica se o idioma padrão estiver incorreto. Um reinício será executado para aplicar o novo idioma.</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>Se você está disposto a ajudar a traduzir BCUninstaller para o seu idioma, clique no link abaixo para entrar em contato comigo. Toda ajuda é bem-vinda!</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Abrir o formulário de contato</value>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>Mais configurações</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Ver ajuda</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Concluir a configuração</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>Agora você pode começar a usar o BCUninstaller. Se você tiver alguma dúvida ou gostaria de sugerir um novo recurso, visite o link abaixo.</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Abrir o formulário de contato</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Você pode ler os logs de mudanças detalhadas e confira mais do meu software na página inicial.</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Abrir a homepage</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Aplicar</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bem-vindo ao BCUninstaller</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Bem-vindo ao BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Ver ajuda</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>Se estiver disposto a ajudar a traduzir o BCUninstaller para o seu idioma, clique no link abaixo para entrar em contato comigo. Toda a ajuda é bem-vinda!</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● Para pesquisar e baixar avaliações de aplicativos.</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Continuar</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores corrompidos</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Os itens protegidos estão nomeados como \"NoRemove (NãoRemover)\", o que significa que o autor não quer que sejam removidos. Esta condição é muitas vezes imposta a grandes conjuntos de software para evitar que você desinstale partes individuais dele.</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Acesso à rede</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● Para enviar estatísticas anónimas de utilização.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>Todos os desinstaladores encontrados no seu sistema estão na vista lista principal. Eis algumas maneiras de procurar esses dados:</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>Os desinstaladores inválidos estão assinalados a cinzento</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Abrir a homepage</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● Para procurar actualizações do sistema</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>Pode obrigar o BCUninstaller a usar uma localização específica se o idioma instalado por defeito for o incorreto. Será realizada uma reinicialização para aplicar o novo idioma.</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Destacar Desinstaladores inválidos</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>Pode procurar manualmente por atualizações usando a barra de menu.</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>As aplicações não registada estão assinaladas a vermelho.\r\nSe o desinstalador original não for encontrado terá de usar a opção \"Desinstalar manualmente\" para os remover.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Bem-vindo ao BCUninstaller</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Terminar a configuração</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar desinstaladores designados como \"protegidos\".</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Permitir avaliações do utilizaddor das aplicações</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Aplicar</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Aplicação não registada</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>Componentes do sistema</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Anterior</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>O BCUninstaller pode tentar ligar-se à internet, pelas seguintes razões::</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Sempre que ocorrer um erro, ser-lhe-á perguntado se deseja enviar um relatório. Poderá verificar se os dados estão a ser enviados em relatórios de erros e utilização examinando os arquivos XML no directório do BCUninstaller. Os dados enviados não são participados a terceiros.</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>Enviando estas estatísticas está a contribuir para melhorar o BCUninstaller.</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>Agora pode começar a usar o BCUninstaller. Se tiver alguma dúvida ou se quiser sugerir um novo recurso visite o link abaixo.</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Apresentar os desinstaladores dispostos em grupos</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores certificados</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>Isto permite-lhe desinstalar itens protegidos.</value>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>Mais configuirações</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Este assistente permite-lhe fazer uma rápida ronda pelo programa e ajudá-lo-á a configurar a aplicação.</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>As aplicações denominadas como \"Componentes do sistema\" são invisíveis à maior parte dos gestores básicos de desinstalação. Esta indicação NÃO significa que a aplicação faça parte do sistema operativo.</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>\r\nDesactiva a protecção dos desinstaladores designados como \"Protegidos\".</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Utilizadores experientes</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores corrompidos ou em falta</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Destacar desinstaladores certificadosHighlight certified uninstallers</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Desinstaladores protegidos</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>Exibição da lista de desinstalador.</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Ao longo do tempo irá constatar que alguns aplicativos se recusarão a desinstalar ou que vão simplesmente desaparecer da maioria dos gestores de desinstalação.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar na lista as aplicações não registada</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>Em certos casos, alguns desinstaladores podem estar corrompidos, sendo impossível desinstalá-los. O BCUninstaller pode remover essas entradas facilmente usando a opção \"Desinstalar manualmente\".</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>Sometimes whole applications can be left on your drive even after being uninstalled. This can also happen if only the uninstaller is removed.</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>Os desinstaladores podem ser reconhecidos por certificados emitidos pelas autoridades competentes. Se o certificado legitima a validação, o software não foi alterado e é credível.</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>\r\nSe bem que o BCUninstaller possa ser utilizado como um desinstalador básico, a maior parte das suas funções são destinadas aos utilizadores experientes. Proceda com precaução!\r\n</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Seleccionar usando as caixas de selecção</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Enviar automaticamente estatísticas anónimas de utilização.</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>A instalação terminou</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Procurar automaticamente por atualizações no arranque da aplicação.</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Abrir o formulário de contacto</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>Os desinstaladores comprovados estão assinalados a verde, os não comprovados estão a azul.\r\nAviso: A verificação pode levar bastante tempo.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Ordenar os desinstaladores em qualquer coluna. Reorganize livremente as colunas.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>● Agrupar desinstaladores similares.</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n    <comment>The missing B is in an image next to the text</comment>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Utilizar os filtros e pesquise por palavras-chave (em todas as colunas).</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Abra o formulário de contacto</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Sair do assistente</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Mostrar desinstaladores assinalados como \"componentes do sistema\"</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● Enviar relatórios de erros.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Idioma seleccionado</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Pode ler o rol detalhado das alterações e inteirar-se mais acerca do meu software na página inicial.</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"timer1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>ru</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelProgress.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"labelProgress.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 9.75pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"labelProgress.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>123, 13</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelProgress.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelProgress.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>89, 28</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelProgress.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n  <data name=\"labelProgress.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleCenter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelProgress.Name\" xml:space=\"preserve\">\r\n    <value>labelProgress</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelProgress.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelProgress.Parent\" xml:space=\"preserve\">\r\n    <value>panelNavigation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelProgress.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonExit.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonExit.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"buttonExit.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>13, 13</value>\r\n  </data>\r\n  <data name=\"buttonExit.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonExit.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>110, 28</value>\r\n  </data>\r\n  <data name=\"buttonExit.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Exit wizard</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExit.Name\" xml:space=\"preserve\">\r\n    <value>buttonExit</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExit.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExit.Parent\" xml:space=\"preserve\">\r\n    <value>panelNavigation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExit.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonPrev.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>212, 13</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 28</value>\r\n  </data>\r\n  <data name=\"buttonPrev.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Back</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonPrev.Name\" xml:space=\"preserve\">\r\n    <value>buttonPrev</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonPrev.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonPrev.Parent\" xml:space=\"preserve\">\r\n    <value>panelNavigation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonPrev.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"panel4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"panel4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>300, 13</value>\r\n  </data>\r\n  <data name=\"panel4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>12, 28</value>\r\n  </data>\r\n  <data name=\"panel4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Name\" xml:space=\"preserve\">\r\n    <value>panel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Parent\" xml:space=\"preserve\">\r\n    <value>panelNavigation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"buttonNext.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonNext.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"buttonNext.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>312, 13</value>\r\n  </data>\r\n  <data name=\"buttonNext.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonNext.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 28</value>\r\n  </data>\r\n  <data name=\"buttonNext.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Continue</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonNext.Name\" xml:space=\"preserve\">\r\n    <value>buttonNext</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonNext.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonNext.Parent\" xml:space=\"preserve\">\r\n    <value>panelNavigation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonNext.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"panelNavigation.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"panelNavigation.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 409</value>\r\n  </data>\r\n  <data name=\"panelNavigation.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panelNavigation.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>13, 13, 13, 13</value>\r\n  </data>\r\n  <data name=\"panelNavigation.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>413, 54</value>\r\n  </data>\r\n  <data name=\"panelNavigation.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panelNavigation.Name\" xml:space=\"preserve\">\r\n    <value>panelNavigation</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panelNavigation.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panelNavigation.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panelNavigation.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"scrollPanel.AutoScroll\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"panel3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"panel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>2551, 7</value>\r\n  </data>\r\n  <data name=\"panel3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 432</value>\r\n  </data>\r\n  <data name=\"panel3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>17</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Name\" xml:space=\"preserve\">\r\n    <value>panel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"panel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>2525, 7</value>\r\n  </data>\r\n  <data name=\"panel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 432</value>\r\n  </data>\r\n  <data name=\"panel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>16</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Name\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonMore.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"buttonMore.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"buttonMore.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>125, 42</value>\r\n  </data>\r\n  <data name=\"buttonMore.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonMore.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>148, 27</value>\r\n  </data>\r\n  <data name=\"buttonMore.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>More settings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonMore.Name\" xml:space=\"preserve\">\r\n    <value>buttonMore</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonMore.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonMore.Parent\" xml:space=\"preserve\">\r\n    <value>panel12</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonMore.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"buttonHelp.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>125, 75</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>148, 27</value>\r\n  </data>\r\n  <data name=\"buttonHelp.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>View help</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonHelp.Name\" xml:space=\"preserve\">\r\n    <value>buttonHelp</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonHelp.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonHelp.Parent\" xml:space=\"preserve\">\r\n    <value>panel12</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonHelp.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"buttonFinish.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>125, 130</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>148, 27</value>\r\n  </data>\r\n  <data name=\"buttonFinish.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Finish setup</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonFinish.Name\" xml:space=\"preserve\">\r\n    <value>buttonFinish</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonFinish.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonFinish.Parent\" xml:space=\"preserve\">\r\n    <value>panel12</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonFinish.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"panel12.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel12.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 193</value>\r\n  </data>\r\n  <data name=\"panel12.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel12.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>386, 171</value>\r\n  </data>\r\n  <data name=\"panel12.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel12.Name\" xml:space=\"preserve\">\r\n    <value>panel12</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel12.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel12.Parent\" xml:space=\"preserve\">\r\n    <value>page5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel12.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel6.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p5finishContact.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 5</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 9, 0, 5</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>364, 44</value>\r\n  </data>\r\n  <data name=\"p5finishContact.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>You can now start using BCUninstaller. If you have any questions or would like to suggest a new feature visit the link below.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5finishContact.Name\" xml:space=\"preserve\">\r\n    <value>p5finishContact</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5finishContact.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5finishContact.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5finishContact.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 49</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>128, 15</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Open the contact form</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5LinkContact.Name\" xml:space=\"preserve\">\r\n    <value>p5LinkContact</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5LinkContact.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5LinkContact.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5LinkContact.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 64</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 9, 0, 5</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>333, 44</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>You can read detailed change logs and check out more of my software on the homepage.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5finishHomepage.Name\" xml:space=\"preserve\">\r\n    <value>p5finishHomepage</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5finishHomepage.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5finishHomepage.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5finishHomepage.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 108</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>116, 15</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Open the homepage</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5LinkHomepage.Name\" xml:space=\"preserve\">\r\n    <value>p5LinkHomepage</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5LinkHomepage.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5LinkHomepage.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5LinkHomepage.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel6.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel6.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 65</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel6.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel6.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 5, 5, 5</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel6.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>386, 128</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel6.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel6.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel6.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel6.Parent\" xml:space=\"preserve\">\r\n    <value>page5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel6.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 7</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>386, 65</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>Setup has been finished</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>BottomCenter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5finishTitle.Name\" xml:space=\"preserve\">\r\n    <value>p5finishTitle</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5finishTitle.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5finishTitle.Parent\" xml:space=\"preserve\">\r\n    <value>page5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p5finishTitle.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"page5.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"page5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>2127, 7</value>\r\n  </data>\r\n  <data name=\"page5.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"page5.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 12, 0</value>\r\n  </data>\r\n  <data name=\"page5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>398, 432</value>\r\n  </data>\r\n  <data name=\"page5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>14</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page5.Name\" xml:space=\"preserve\">\r\n    <value>page5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page5.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page5.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"spacer4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"spacer4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>2101, 7</value>\r\n  </data>\r\n  <data name=\"spacer4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"spacer4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 432</value>\r\n  </data>\r\n  <data name=\"spacer4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>15</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer4.Name\" xml:space=\"preserve\">\r\n    <value>spacer4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer4.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer4.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"p4netTitle.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 5</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>155, 26</value>\r\n  </data>\r\n  <data name=\"p4netTitle.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Network access</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netTitle.Name\" xml:space=\"preserve\">\r\n    <value>p4netTitle</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netTitle.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netTitle.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netTitle.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p4netDesc.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 31</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>377, 33</value>\r\n  </data>\r\n  <data name=\"p4netDesc.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller can attempt to connect to the internet for the following reasons:</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc.Name\" xml:space=\"preserve\">\r\n    <value>p4netDesc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 64</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 2</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>186, 17</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● To search for program updates.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc1.Name\" xml:space=\"preserve\">\r\n    <value>p4netDesc1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc1.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 81</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 2</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>145, 17</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● To upload error reports.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc2.Name\" xml:space=\"preserve\">\r\n    <value>p4netDesc2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc2.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc2.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 98</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 2</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>213, 17</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● To send anonymous usage statistics.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc3.Name\" xml:space=\"preserve\">\r\n    <value>p4netDesc3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc3.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc3.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 115</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 2</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>228, 17</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● To fetch and upload application ratings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc4.Name\" xml:space=\"preserve\">\r\n    <value>p4netDesc4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc4.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netDesc4.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"p4netErrors.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 132</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 9, 0, 9</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>380, 78</value>\r\n  </data>\r\n  <data name=\"p4netErrors.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Every time an error occurs you will be asked if you want to send it. You can check what data is being sent in error and usage reports by inspecting their respective XML files in BCUninstaller's directory. The sent data is not shared with any third parties.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netErrors.Name\" xml:space=\"preserve\">\r\n    <value>p4netErrors</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netErrors.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netErrors.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netErrors.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 213</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 2</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>299, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Automatically look for updates on application start</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxUpdateSearch.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxUpdateSearch</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxUpdateSearch.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxUpdateSearch.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxUpdateSearch.ZOrder\" xml:space=\"preserve\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 8.25pt, style=Italic</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 234</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 7</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>280, 20</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>You can search for updates manually from the menu bar.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netUpdateAdd.Name\" xml:space=\"preserve\">\r\n    <value>p4netUpdateAdd</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netUpdateAdd.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netUpdateAdd.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netUpdateAdd.ZOrder\" xml:space=\"preserve\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 257</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 2</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>281, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Automatically send anonymous usage statistics</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxSendStats.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxSendStats</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxSendStats.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxSendStats.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxSendStats.ZOrder\" xml:space=\"preserve\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 8.25pt, style=Italic</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 278</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 7</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>274, 20</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>11</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>Sending these statistics will help improve BCUninstaller.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netUsageAdd.Name\" xml:space=\"preserve\">\r\n    <value>p4netUsageAdd</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netUsageAdd.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netUsageAdd.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p4netUsageAdd.ZOrder\" xml:space=\"preserve\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 301</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 2</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>211, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>11</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Enable user ratings of applications</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRatings.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxRatings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRatings.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRatings.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxRatings.ZOrder\" xml:space=\"preserve\">\r\n    <value>11</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 5, 5, 5</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>398, 432</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.Parent\" xml:space=\"preserve\">\r\n    <value>pageNetwork</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"pageNetwork.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"pageNetwork.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>1703, 7</value>\r\n  </data>\r\n  <data name=\"pageNetwork.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"pageNetwork.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>398, 432</value>\r\n  </data>\r\n  <data name=\"pageNetwork.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pageNetwork.Name\" xml:space=\"preserve\">\r\n    <value>pageNetwork</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pageNetwork.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pageNetwork.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pageNetwork.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"panel5.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"panel5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>1677, 7</value>\r\n  </data>\r\n  <data name=\"panel5.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 432</value>\r\n  </data>\r\n  <data name=\"panel5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>19</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.Name\" xml:space=\"preserve\">\r\n    <value>panel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"pCorTitle.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"pCorTitle.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 5</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>209, 26</value>\r\n  </data>\r\n  <data name=\"pCorTitle.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Corrupted uninstallers</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorTitle.Name\" xml:space=\"preserve\">\r\n    <value>pCorTitle</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorTitle.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorTitle.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorTitle.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"pCorDesc.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"pCorDesc.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 31</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>379, 33</value>\r\n  </data>\r\n  <data name=\"pCorDesc.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Over time you may find that some applications will refuse to uninstall, or will just disappear from most of the uninstall managers.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorDesc.Name\" xml:space=\"preserve\">\r\n    <value>pCorDesc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorDesc.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorDesc.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorDesc.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial, 9.75pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 64</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 9, 0, 3</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>216, 28</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Corrupted or missing uninstallers</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorViewInvalidTitle.Name\" xml:space=\"preserve\">\r\n    <value>pCorViewInvalidTitle</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorViewInvalidTitle.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorViewInvalidTitle.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorViewInvalidTitle.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 92</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>380, 48</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>In some cases uninstallers can get corrupted, making them impossible to uninstall. BCUninstaller can remove these entries easily using the \"Uninstall manually\" option.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorViewInvalid.Name\" xml:space=\"preserve\">\r\n    <value>pCorViewInvalid</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorViewInvalid.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorViewInvalid.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorViewInvalid.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 143</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 2</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>182, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Highlight invalid uninstallers</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInvalidTest.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxInvalidTest</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInvalidTest.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInvalidTest.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInvalidTest.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 8.25pt, style=Italic</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 164</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>193, 13</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>Invalid uninstallers are marked in grey.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorViewinvalidComment.Name\" xml:space=\"preserve\">\r\n    <value>pCorViewinvalidComment</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorViewinvalidComment.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorViewinvalidComment.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorViewinvalidComment.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial, 9.75pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 177</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 9, 0, 3</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>169, 28</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Unregistered applications</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorOrphansTitle.Name\" xml:space=\"preserve\">\r\n    <value>pCorOrphansTitle</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorOrphansTitle.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorOrphansTitle.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorOrphansTitle.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 205</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>357, 48</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>Sometimes whole applications can be left on your drive even after being uninstalled. This can also happen if only the uninstaller is removed.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorOrphansMessage.Name\" xml:space=\"preserve\">\r\n    <value>pCorOrphansMessage</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorOrphansMessage.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorOrphansMessage.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorOrphansMessage.ZOrder\" xml:space=\"preserve\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 256</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 2</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>247, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Show unregistered applications in the list</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxOrphans.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxOrphans</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxOrphans.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxOrphans.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxOrphans.ZOrder\" xml:space=\"preserve\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 8.25pt, style=Italic</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 277</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>340, 39</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>Unregistered applications are marked in red.\r\nIf the original uninstaller isn't found you will have to use the \"Uninstall manually\" option to remove them.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorOrphansComment.Name\" xml:space=\"preserve\">\r\n    <value>pCorOrphansComment</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorOrphansComment.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorOrphansComment.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pCorOrphansComment.ZOrder\" xml:space=\"preserve\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 5, 5, 5</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>398, 432</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\r\n    <value>pageCorrupted</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"pageCorrupted.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"pageCorrupted.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>1279, 7</value>\r\n  </data>\r\n  <data name=\"pageCorrupted.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"pageCorrupted.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>398, 432</value>\r\n  </data>\r\n  <data name=\"pageCorrupted.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>18</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pageCorrupted.Name\" xml:space=\"preserve\">\r\n    <value>pageCorrupted</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pageCorrupted.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pageCorrupted.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pageCorrupted.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"spacer3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"spacer3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>1253, 7</value>\r\n  </data>\r\n  <data name=\"spacer3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"spacer3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 432</value>\r\n  </data>\r\n  <data name=\"spacer3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>13</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer3.Name\" xml:space=\"preserve\">\r\n    <value>spacer3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer3.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer3.ZOrder\" xml:space=\"preserve\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"p3advTitle.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 5</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>152, 26</value>\r\n  </data>\r\n  <data name=\"p3advTitle.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Advanced users</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advTitle.Name\" xml:space=\"preserve\">\r\n    <value>p3advTitle</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advTitle.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advTitle.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advTitle.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p3advDesc.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 31</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>353, 30</value>\r\n  </data>\r\n  <data name=\"p3advDesc.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>While BCUninstaller can be used as a basic uninstaller, most of its functions are aimed at power users. Proceed with caution!</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advDesc.Name\" xml:space=\"preserve\">\r\n    <value>p3advDesc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advDesc.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advDesc.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advDesc.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial, 9.75pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 61</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 9, 0, 3</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>134, 28</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>System components</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advSyscompTitle.Name\" xml:space=\"preserve\">\r\n    <value>p3advSyscompTitle</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advSyscompTitle.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advSyscompTitle.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advSyscompTitle.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 89</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>371, 48</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>Applications marked as \"system components\" are hidden from most of the basic uninstall managers. This tag does NOT mean that the application is a part of the operating system.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advSyscomp.Name\" xml:space=\"preserve\">\r\n    <value>p3advSyscomp</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advSyscomp.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advSyscomp.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advSyscomp.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 140</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 2</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>300, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Show uninstallers marked as \"system components\"</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListSysComp.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxListSysComp</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListSysComp.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListSysComp.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListSysComp.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial, 9.75pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 161</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 5, 0, 3</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>145, 24</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Protected uninstallers</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advProtectTitle.Name\" xml:space=\"preserve\">\r\n    <value>p3advProtectTitle</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advProtectTitle.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advProtectTitle.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advProtectTitle.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"p3advProtect.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 185</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>378, 63</value>\r\n  </data>\r\n  <data name=\"p3advProtect.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Protected items are marked with the \"NoRemove\" tag, which means that the publisher doesn't want you to remove them. This tag is often used by large software packages to prevent you from uninstalling their individual parts.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advProtect.Name\" xml:space=\"preserve\">\r\n    <value>p3advProtect</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advProtect.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advProtect.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advProtect.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 251</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 2</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>244, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Show uninstallers marked as \"protected\"</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListProtected.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxListProtected</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListProtected.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListProtected.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxListProtected.ZOrder\" xml:space=\"preserve\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 275</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 2</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>325, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Disable protection of uninstallers marked as \"protected\"</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxDiisableProtection.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxDiisableProtection</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxDiisableProtection.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxDiisableProtection.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxDiisableProtection.ZOrder\" xml:space=\"preserve\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 8.25pt, style=Italic</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 296</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>204, 13</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>This will let you uninstall protected items.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advProtectAdd.Name\" xml:space=\"preserve\">\r\n    <value>p3advProtectAdd</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advProtectAdd.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advProtectAdd.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p3advProtectAdd.ZOrder\" xml:space=\"preserve\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 5, 5, 5</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>398, 432</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.Parent\" xml:space=\"preserve\">\r\n    <value>page3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel4.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"page3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"page3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>855, 7</value>\r\n  </data>\r\n  <data name=\"page3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"page3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>398, 432</value>\r\n  </data>\r\n  <data name=\"page3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>12</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page3.Name\" xml:space=\"preserve\">\r\n    <value>page3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page3.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page3.ZOrder\" xml:space=\"preserve\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"spacer2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"spacer2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>829, 7</value>\r\n  </data>\r\n  <data name=\"spacer2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"spacer2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 432</value>\r\n  </data>\r\n  <data name=\"spacer2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>11</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer2.Name\" xml:space=\"preserve\">\r\n    <value>spacer2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer2.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer2.ZOrder\" xml:space=\"preserve\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 5</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>184, 26</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>Uninstaller list view</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewTitle.Name\" xml:space=\"preserve\">\r\n    <value>p2viewTitle</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewTitle.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewTitle.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewTitle.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 31</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>366, 33</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>All of the uninstallers found in your system are in the main list view. Here are some ways to browse this data:</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail.Name\" xml:space=\"preserve\">\r\n    <value>p2viewDetail</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 64</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 2</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>289, 17</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Use filters and search for keywords (in all columns)</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail1.Name\" xml:space=\"preserve\">\r\n    <value>p2viewDetail1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail1.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 81</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 2</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>330, 17</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Sort uninstallers by any column. Freely rearrange columns.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail2.Name\" xml:space=\"preserve\">\r\n    <value>p2viewDetail2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail2.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail2.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 98</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 5</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>156, 20</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>● Group similar uninstallers</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail3.Name\" xml:space=\"preserve\">\r\n    <value>p2viewDetail3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail3.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewDetail3.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 121</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 2</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>176, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Show uninstallers in groups</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxGroups.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxGroups</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxGroups.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxGroups.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxGroups.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 145</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 2</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>159, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Select using checkboxes</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCheckboxes.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxCheckboxes</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCheckboxes.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCheckboxes.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCheckboxes.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial, 9.75pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 166</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 9, 0, 3</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>138, 28</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Certified uninstallers</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewCertsTitle.Name\" xml:space=\"preserve\">\r\n    <value>p2viewCertsTitle</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewCertsTitle.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewCertsTitle.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewCertsTitle.ZOrder\" xml:space=\"preserve\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 194</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>379, 48</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>Uninstallers can be signed with certificates issued by relevant authorities. If the certificate passes validation the software package has not been altered and is reputable.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewCerts.Name\" xml:space=\"preserve\">\r\n    <value>p2viewCerts</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewCerts.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewCerts.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewCerts.ZOrder\" xml:space=\"preserve\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 245</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 2</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>190, 19</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Highlight certified uninstallers</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCertTest.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxCertTest</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCertTest.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCertTest.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxCertTest.ZOrder\" xml:space=\"preserve\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Microsoft Sans Serif, 8.25pt, style=Italic</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 266</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>308, 26</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>Verified uninstallers are marked in green, unverified are in blue.\r\nWarning: Verification can take a long time.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewAdd.Name\" xml:space=\"preserve\">\r\n    <value>p2viewAdd</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewAdd.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewAdd.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p2viewAdd.ZOrder\" xml:space=\"preserve\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 5, 5, 5</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>398, 432</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.Parent\" xml:space=\"preserve\">\r\n    <value>page2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel3.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"page2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"page2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>431, 7</value>\r\n  </data>\r\n  <data name=\"page2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"page2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>398, 432</value>\r\n  </data>\r\n  <data name=\"page2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page2.Name\" xml:space=\"preserve\">\r\n    <value>page2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page2.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page2.ZOrder\" xml:space=\"preserve\">\r\n    <value>10</value>\r\n  </data>\r\n  <data name=\"spacer1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"spacer1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>405, 7</value>\r\n  </data>\r\n  <data name=\"spacer1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"spacer1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>26, 432</value>\r\n  </data>\r\n  <data name=\"spacer1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer1.Name\" xml:space=\"preserve\">\r\n    <value>spacer1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer1.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;spacer1.ZOrder\" xml:space=\"preserve\">\r\n    <value>11</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 5</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 9, 0, 3</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>244, 35</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Welcome to BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeHeading.Name\" xml:space=\"preserve\">\r\n    <value>p1welcomeHeading</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeHeading.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeHeading.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeHeading.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 40</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>326, 30</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>This wizard will give you a quick tour and help configure the application.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeSubheading.Name\" xml:space=\"preserve\">\r\n    <value>p1welcomeSubheading</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeSubheading.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeSubheading.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1welcomeSubheading.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Arial Black, 12pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 70</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 9, 0, 3</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>176, 35</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Selected language</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1languageHeading.Name\" xml:space=\"preserve\">\r\n    <value>p1languageHeading</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1languageHeading.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1languageHeading.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1languageHeading.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 105</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 5</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>376, 50</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>You can force BCUninstaller to use a specific localization if the default language is incorrect. A restart will be performed to apply the new language.</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1languageDesc.Name\" xml:space=\"preserve\">\r\n    <value>p1languageDesc</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1languageDesc.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1languageDesc.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1languageDesc.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"comboBoxLanguage.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 3</value>\r\n  </data>\r\n  <data name=\"comboBoxLanguage.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 7, 4, 3</value>\r\n  </data>\r\n  <data name=\"comboBoxLanguage.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>268, 23</value>\r\n  </data>\r\n  <data name=\"comboBoxLanguage.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxLanguage.Name\" xml:space=\"preserve\">\r\n    <value>comboBoxLanguage</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxLanguage.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxLanguage.Parent\" xml:space=\"preserve\">\r\n    <value>panel9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxLanguage.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Anchor\" type=\"System.Windows.Forms.AnchorStyles, System.Windows.Forms\">\r\n    <value>Top, Right</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>284, 2</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>88, 27</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Apply</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonLanguageApply.Name\" xml:space=\"preserve\">\r\n    <value>buttonLanguageApply</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonLanguageApply.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonLanguageApply.Parent\" xml:space=\"preserve\">\r\n    <value>panel9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonLanguageApply.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel9.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel9.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 158</value>\r\n  </data>\r\n  <data name=\"panel9.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel9.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>379, 31</value>\r\n  </data>\r\n  <data name=\"panel9.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel9.Name\" xml:space=\"preserve\">\r\n    <value>panel9</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel9.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel9.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel9.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 192</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 2, 0, 5</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>379, 37</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>If you are willing to help translate BCUninstaller to your language, click on the link below to contact me. All help is greatly appreciated!</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1languageExtradetails.Name\" xml:space=\"preserve\">\r\n    <value>p1languageExtradetails</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1languageExtradetails.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1languageExtradetails.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1languageExtradetails.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>9, 229</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>128, 15</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Open the contact form</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1linkLabelContact.Name\" xml:space=\"preserve\">\r\n    <value>p1linkLabelContact</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1linkLabelContact.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1linkLabelContact.Parent\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;p1linkLabelContact.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.FlowDirection\" type=\"System.Windows.Forms.FlowDirection, System.Windows.Forms\">\r\n    <value>TopDown</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 118</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 5, 5, 5</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>398, 314</value>\r\n  </data>\r\n  <data name=\"flowLayoutPanel5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel5.Name\" xml:space=\"preserve\">\r\n    <value>flowLayoutPanel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel5.Parent\" xml:space=\"preserve\">\r\n    <value>page1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;flowLayoutPanel5.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>40, 0</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"pictureBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>114, 118</value>\r\n  </data>\r\n  <data name=\"pictureBox1.SizeMode\" type=\"System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms\">\r\n    <value>Zoom</value>\r\n  </data>\r\n  <data name=\"pictureBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Name\" xml:space=\"preserve\">\r\n    <value>pictureBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;pictureBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"label2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"label2.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Calibri, 27.75pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"label2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>154, 0</value>\r\n  </data>\r\n  <data name=\"label2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"label2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>244, 118</value>\r\n  </data>\r\n  <data name=\"label2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n  </data>\r\n  <data name=\"label2.TextAlign\" type=\"System.Drawing.ContentAlignment, System.Drawing\">\r\n    <value>MiddleLeft</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Name\" xml:space=\"preserve\">\r\n    <value>label2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>398, 118</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>page1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"page1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"page1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 7</value>\r\n  </data>\r\n  <data name=\"page1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"page1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>398, 432</value>\r\n  </data>\r\n  <data name=\"page1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page1.Name\" xml:space=\"preserve\">\r\n    <value>page1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page1.Parent\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;page1.ZOrder\" xml:space=\"preserve\">\r\n    <value>12</value>\r\n  </data>\r\n  <data name=\"scrollPanel.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"scrollPanel.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"scrollPanel.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"scrollPanel.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 7</value>\r\n  </data>\r\n  <data name=\"scrollPanel.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>413, 463</value>\r\n  </data>\r\n  <data name=\"scrollPanel.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;scrollPanel.Name\" xml:space=\"preserve\">\r\n    <value>scrollPanel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;scrollPanel.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;scrollPanel.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;scrollPanel.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <metadata name=\"timer1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>413, 463</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.StartPosition\" type=\"System.Windows.Forms.FormStartPosition, System.Windows.Forms\">\r\n    <value>CenterParent</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Welcome to BCUninstaller</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;timer1.Name\" xml:space=\"preserve\">\r\n    <value>timer1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;timer1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Timer, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>FirstStartBox</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Отмена</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Назад</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Далее</value>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>Больше настроек</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Просмотр справки</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Готово</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>Теперь Вы можете начать использовать BCUninstaller. Если у Вас есть вопросы или вы хотите предложить новую функцию — посетите ссылку ниже.</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Написать разработчику</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Вы можете посмотреть новости и другие мои программы на домашней странице.</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Домашняя страница</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>Установка завершена</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Доступ к сети</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller может попытаться подключиться к Интернету по следующим причинам:</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● Для поиска обновлений программы.</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● Для отправки отчётов об ошибках.</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● Для отправки анонимной статистики.</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● Для получения и загрузки рейтинга программ</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Каждый раз, когда возникает ошибка, Вам будет предложено отправить отчёт. Вы можете проверить, какие данные передаются в отчёте, просмотрев XML-файлы в каталоге BCUninstaller. Передаваемые данные не передаются третьим сторонам.</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Искать обновления при запуске приложения</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>Вы можете искать обновления вручную в строке меню.</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Отправлять анонимную статистику использования</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>Эти статистические данные помогут улучшить BCUninstaller.</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Включить пользовательские оценки приложений</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Повреждённые деинсталляторы</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Со временем Вы можете обнаружить, что некоторые приложения отказываются удаляться или просто исчезли из большинства менеджеров деинсталляции программ.</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Повреждённые или отсутствующие деинсталляторы</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>В некоторых случаях деинсталляторы могут быть повреждены, что делает невозможным их удаление. BCUninstaller может удалить эти записи с помощью опции \"Удалить вручную\".</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>Подсветка недопустимых деинсталляторов</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>Недействительные деинсталляторы помечаются серым.</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Незарегистрированные приложения</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>Иногда целые приложения остаются на винчестере даже после удаления. Это обычно происходит, если деинсталлятор удалён.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Показывать незарегистрированные в списке</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>Незарегистрированные приложения помечены красным.\r\nИх деинсталлятор не обнаружен и Вам надо использовать параметр \"Удалить вручную\" для их удаления.</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Опытные пользователи</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller может использоваться как основной деинсталлятор, но многие его функции предназначены для опытных пользователей. Соблюдайте осторожность!</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>Системные компоненты</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>Приложения, помеченные как \"системные\", скрыты от большинства основных менеджеров деинсталляции программ. Этот тег не означает, что приложение является частью операционной системы.</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Показывать деинсталляторы с тегом \"системные\"</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Защищённые деинсталляторы</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Защищённые элементы помечены тегом \"NoRemove\", это означает, что издатель не хочет, чтобы их удаляли. Этот тег часто используется крупными пакетами программного обеспечения, чтобы помешать Вам удалить их отдельные части.</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Показывать деинсталляторы с тегом \"NoRemove\"</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Отключить защиту деинсталляторов с тегом \r\n\"NoRemove\"</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>Это позволит Вам деинсталлировать защищённые элементы.</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>Вид списка деинсталяции</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>Все деинсталляторы, найденные в вашей системе, находятся в главном списке. Вот несколько способов, как просматривать эти данные:</value>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Используйте фильтры и поиск по ключевым словам (во всех колонках)</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Сортировка деинсталляторов по любой колонке. Можно переставлять столбцы.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>● Группировка похожих деинсталляторов</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Показывать деинсталляторы в группах</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Использовать для выбора флажки</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Сертифицированные деинсталляторы</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>Деинсталлятор может быть подписан с помощью доверенных сертификатов. Если сертификат проходит проверку подлинности — означает, что программный пакет не был изменён и заслуживает доверия.</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Подсвечивать проверенные деинсталляторы</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>Проверенные деинсталляторы выделяются зелёным, непроверенные — синим.\r\nВнимание: Проверка может занимать длительное время.</value>\r\n  </data>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Добро пожаловать в BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Этот мастер проведёт краткий обзор и поможет настроить приложение.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Выбранный язык</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller может использовать указанную локализацию. Чтобы применить новый язык, будет выполнена перезагрузка программы.</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Применить</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>Если Вы готовы помочь в переводе BCUninstaller на Ваш язык, нажмите на ссылку ниже, чтобы связаться со мной. Любая помощь будет принята с благодарностью!</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Открыть форму связи</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Добро пожаловать в BCUninstaller</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n    <comment>The missing B is in an image next to the text</comment>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1 / 6</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\r\n    <value>Dobrodošli v BCUninstaller!</value>\r\n  </data>\r\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\r\n    <value>Zaščitene vnosi so označeni z oznako \"NeOdstrani\", kar pomeni, da izdajatelj ne želi, da jih odstranite. Ta oznaka se pogosto uporablja v velikih programskih paketih, da vam preprečuje odstranjevanje njihovih posameznih delov.</value>\r\n  </data>\r\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\r\n    <value>Omrežni dostop</value>\r\n  </data>\r\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\r\n    <value>● Za pošiljanje anonimne statistike o uporabi.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\r\n    <value>Vsi najdeni odstranjevalci v vašem sistemu so v glavnem pogledu seznama. Tukaj je nekaj načinov za brskanje teh podatkov:</value>\r\n  </data>\r\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\r\n    <value>Neveljavni odstranjevalci so označeni  v sivi barvi.</value>\r\n  </data>\r\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži neregistrirane aplikacije na seznamu</value>\r\n  </data>\r\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\r\n    <value>Zaščiteni odstranjevalci</value>\r\n  </data>\r\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Odpri domačo stran</value>\r\n  </data>\r\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\r\n    <value>● Za iskanje posodobitev programa.</value>\r\n  </data>\r\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller lahko prisilite, da uporablja določen jezik, če je privzeti jezik napačen. Za začetek uporabe novega jezika bo opravljen ponovni zagon programa.</value>\r\n  </data>\r\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\r\n    <value>Zdaj lahko začnete uporabljati BCUninstaller. Če imate kakršna koli vprašanja ali, če želite predlagati nove funkcije, obiščite spodnjo povezavo.</value>\r\n  </data>\r\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\r\n    <value>\r\nOznači neveljavne odstranjevalce</value>\r\n  </data>\r\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\r\n    <value>\r\nIz menijske vrstice lahko ročno poiščete posodobitve.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Dobrodošli v BCUninstallerju</value>\r\n  </data>\r\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\r\n    <value>Končaj namestitev</value>\r\n  </data>\r\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\r\n    <value>Nadaljuj</value>\r\n  </data>\r\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži odstranjevalce, ki so označene kot \"zaščiteni\"</value>\r\n  </data>\r\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\r\n    <value>Uporabi</value>\r\n  </data>\r\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\r\n    <value>Neregistrirane aplikacije</value>\r\n  </data>\r\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\r\n    <value>Sestavine sistema</value>\r\n  </data>\r\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\r\n    <value>Nazaj</value>\r\n  </data>\r\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži odstranjevalce, ki so označene kot  \"sistemske sestavine\"</value>\r\n  </data>\r\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\r\n    <value>Lahko preberete podrobne dnevnike sprememb in preverite več mojih programov na domači spletni strani.</value>\r\n  </data>\r\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\r\n    <value>Vsakič, ko pride do napake boste vprašani, če želite poslati sporočilo o napaki. Lahko preverite kateri podatki bodo poslani v poročilu o napaki in v poročilu o uporabi, z upogledom v njune XML datoteke (v imeniku BCUninstallerja). Poslani podatki ne bodo dostopni drugim osebam.</value>\r\n  </data>\r\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\r\n    <value>Pošiljanje teh statistik nam bo pomagalo izboljšati BCUninstaller.</value>\r\n  </data>\r\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\r\n    <value>Ta čarovnik vam bo nudil hiter ogled in pomagal nastaviti aplikacijo.</value>\r\n  </data>\r\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\r\n    <value>Prikaži odstranjevalce v skupinah</value>\r\n  </data>\r\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\r\n    <value>Zapri čarovnika</value>\r\n  </data>\r\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\r\n    <value>Overjeni odstranjevalci</value>\r\n  </data>\r\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\r\n    <value>To vam bo dovolilo odstraniti zaščitene vnose.</value>\r\n  </data>\r\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\r\n    <value>Več nastavitev</value>\r\n  </data>\r\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\r\n    <value>Aplikacije, ki so označene kot \"sistemske sestavine\", so skrite za večino osnovnih upraviteljev odstranjevanj. Ta oznaka NE pomeni, da je aplikacija del operacijskega sistema.</value>\r\n  </data>\r\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\r\n    <value>Onemogoči zaščito odstranjevalcev, ki so označeni kot \"zaščiteni\"</value>\r\n  </data>\r\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\r\n    <value>Napredni uporabniki</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\r\n    <value>Poškodovani ali manjkajoči odstranjevalci</value>\r\n  </data>\r\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\r\n    <value>Označi overjene odstranjevalce</value>\r\n  </data>\r\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\r\n    <value>Pogled seznama odstranjevalcev</value>\r\n  </data>\r\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\r\n    <value>Poškodovani odstranjevalci</value>\r\n  </data>\r\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\r\n    <value>Sčasoma boste morda ugotovili, da bodo nekatere aplikacije zavrnile odstranjevanje, ali bodo samo izginile iz večine upraviteljev odstranjevanja.</value>\r\n  </data>\r\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\r\n    <value>V nekaterih primerih lahko prejmete poškodovane odstranjevalce, zaradi česar ni možno odstranjevanje aplikacij. BCUninstaller lahko preprosto odstrani te vnose z uporabo možnosti \"Odstrani ročno\".</value>\r\n  </data>\r\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\r\n    <value>Včasih cele aplikacije lahko ostanejo na vašem pogonu, tudi po odstranitvi. To se lahko zgodi tudi, če je odstranjen samo odstranjevalec.</value>\r\n  </data>\r\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\r\n    <value>Odstranjevalci so lahko podpisani s potrdili, ki so jih izdali pomembni organi. Če potrdila opravijo potrditev, programski paket ni bil spreminjan in je pristen.</value>\r\n  </data>\r\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\r\n    <value>BCUninstaller se lahko poskuša povezati z internetom iz naslednjih razlogov:</value>\r\n  </data>\r\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\r\n    <value>Medtem, ko se BCUninstaller lahko uporablja kot osnovni odstranjevalec, je  večina njegovih funkcij namenjenih naprednejšim uporabnikom. Nadaljujte previdno!</value>\r\n  </data>\r\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\r\n    <value>Izberi s pomočjo potrditvenih polj</value>\r\n  </data>\r\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\r\n    <value>Samodejno pošlji anonimno statistiko uporabe</value>\r\n  </data>\r\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\r\n    <value>Namestitev je končana</value>\r\n  </data>\r\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\r\n    <value>Ob zagonu aplikacije, samodejno preveri obstoj posodobitev</value>\r\n  </data>\r\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\r\n    <value>Neregistrirane aplikacije so označene z rdečo barvo.\r\nČe ni mogoče najti izvirnega odstranjevalca, boste morali uporabiti možnost \"Odstrani ročno\", da jih odstranite.</value>\r\n  </data>\r\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\r\n    <value>Odpri obrazec za stik</value>\r\n  </data>\r\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\r\n    <value>Preverjeni odstranjevalci so označeni z zeleno barvo, nepreverjeni pa so v modri barvi.\r\nOpozorilo: Preverjanje lahko traja dlje časa.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\r\n    <value>● Razvrstite odstranjevalce po vsakem stolpcu. Prosto preuredite stolpce.</value>\r\n  </data>\r\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\r\n    <value>● Grupiraj podobne odstranjevalce</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>ulk crap\r\nuninstaller</value>\r\n    <comment>The missing B is in an image next to the text</comment>\r\n  </data>\r\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\r\n    <value>● Uporabite filtre in poiščite ključne besede (v vseh stolpcih)</value>\r\n  </data>\r\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\r\n    <value>Odpri obrazec za stik</value>\r\n  </data>\r\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\r\n    <value>Če ste pripravljeni pomagati prevesti BCUninstaller v vaš jezik, kliknite na spodnjo povezavo, da stopite v stik z mano. Vsa pomoč je zelo cenjena!</value>\r\n  </data>\r\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\r\n    <value>● Za pošiljanje poročil o napakah.</value>\r\n  </data>\r\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\r\n    <value>Izbran jezik</value>\r\n  </data>\r\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\r\n    <value>● Za pridobivanje in nalaganje ocen aplikacije</value>\r\n  </data>\r\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\r\n    <value>Omogoči uporabnikovo ocenjevanje aplikacije</value>\r\n  </data>\r\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\r\n    <value>Prikaz pomoči</value>\r\n  </data>\r\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\r\n    <value>1/6</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"timer1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>cs</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1 / 6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>Avsluta guiden</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>Tillbaka</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>Fortsätt</value>\n  </data>\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\n    <value>Fler inställningar</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>Visa hjälp</value>\n  </data>\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\n    <value>Slutför</value>\n  </data>\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\n    <value>Nu kan du börja använda BCUninstaller. Om du har några frågor eller vill föreslå en ny funktion, besök länken nedan.</value>\n  </data>\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\n    <value>Öppna kontaktformuläret</value>\n  </data>\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\n    <value>Du kan läsa detaljerade ändringsloggar och kolla in mer av min programvara på hemsidan.</value>\n  </data>\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\n    <value>Öppna hemsidan</value>\n  </data>\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\n    <value>Installationen har slutförts</value>\n  </data>\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\n    <value>Nätverksåtkomst</value>\n  </data>\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller kan försöka ansluta till internet av följande skäl:</value>\n  </data>\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\n    <value>● För att söka efter uppdateringar.</value>\n  </data>\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\n    <value>● För att ladda upp felrapporter.</value>\n  </data>\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\n    <value>● För att skicka anonym användarstatistik.</value>\n  </data>\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\n    <value>● För att hämta och ladda upp appbetyg</value>\n  </data>\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\n    <value>Varje gång ett fel inträffar kommer du att bli ombedd att rapportera det. Du kan kontrollera vilka data som skickas i fel- och användningsrapporter genom att inspektera deras respektive XML-filer i BCUninstallers mapp. Uppladdad data delas inte med några tredje parter.</value>\n  </data>\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\n    <value>Sök efter uppdateringar automatiskt vid varje uppstart</value>\n  </data>\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\n    <value>Du kan söka efter uppdateringar manuellt från menyraden.</value>\n  </data>\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\n    <value>Skicka anonym användningsstatistik automatiskt</value>\n  </data>\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\n    <value>Att skicka denna statistik hjälper till att förbättra BCUninstaller.</value>\n  </data>\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\n    <value>Aktivera användarbetyg för appar</value>\n  </data>\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\n    <value>Korrupta avinstallationsprogram</value>\n  </data>\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\n    <value>Över tid kan du märka att vissa appar vägrar att avinstallera sig, eller helt enkelt försvinner från de flesta avinstallationshanterare.</value>\n  </data>\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\n    <value>Korrupta eller saknade avinstallationsprogram</value>\n  </data>\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\n    <value>I vissa fall kan avinstallationsprogram bli korrupta, vilket gör dem omöjliga att avinstallera. BCUninstaller kan ta bort dessa poster med hjälp av alternativet \"Avinstallera manuellt\".</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\n    <value>Märk ogiltiga avinstallationsprogram</value>\n  </data>\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\n    <value>Ogiltiga avinstallationsprogram är markerade i grått.</value>\n  </data>\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\n    <value>Oregistrerade appar</value>\n  </data>\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\n    <value>Ibland kan fullständiga appar lämnas kvar på din enhet trots att de har avinstallerats. Detta kan också hända om endast avinstallationsprogrammet tas bort.</value>\n  </data>\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\n    <value>Visa oregistrerade appar i listan</value>\n  </data>\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\n    <value>Oregistrerade appar är markerade i rött.\nOm det ursprungliga avinstallationsprogrammet inte hittas måste du använda alternativet \"Avinstallera manuellt\" för att ta bort dem.</value>\n  </data>\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\n    <value>Avancerade användare</value>\n  </data>\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\n    <value>Även om BCUninstaller kan användas som en grundläggande avinstallerare, är de flesta av dess funktioner riktade mot avancerade användare. Använd med försiktighet!</value>\n  </data>\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\n    <value>Systemkomponenter</value>\n  </data>\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\n    <value>Appar markerade som 'systemkomponenter' är dolda från de flesta avinstallationshanterare. Denna tagg innebär INTE att appen är en del av operativsystemet.</value>\n  </data>\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\n    <value>Visa avinstallationsprogram markerade som 'systemkomponenter'</value>\n  </data>\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\n    <value>Skyddade avinstallationsprogram</value>\n  </data>\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\n    <value>Skyddade objekt är markerade med taggen \"NoRemove\", vilket innebär att utgivaren inte vill att du ska ta bort dem. Denna tagg används ofta av stora programvarupaket för att förhindra att du avinstallerar deras enskilda delar.</value>\n  </data>\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\n    <value>Visa avinstallationsprogram markerade som \"skyddade\"</value>\n  </data>\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\n    <value>Inaktivera skyddet av avinstallationsprogram markerade som 'skyddade'</value>\n  </data>\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\n    <value>Detta tillåter dig att avinstallera skyddade objekt.</value>\n  </data>\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\n    <value>Avinstallationer listvy</value>\n  </data>\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\n    <value>Alla avinstallationsprogram som hittats på din dator finns i huvudlistvyn. Här är några sätt att bläddra bland denna data:</value>\n  </data>\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\n    <value>● Använd filter och sök efter nyckelord (i alla kolumner)</value>\n  </data>\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\n    <value>● Sortera avinstallationsprogram efter valfri kolumn. Flytta kolumner fritt.</value>\n  </data>\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\n    <value>● Gruppera liknande avinstallationsprogram</value>\n  </data>\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\n    <value>Visa avinstallationsprogram i grupper</value>\n  </data>\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\n    <value>Välj med hjälp av kryssrutor</value>\n  </data>\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\n    <value>Certifierade avinstallationsprogram</value>\n  </data>\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\n    <value>Avinstallationsprogram kan signeras med certifikat utfärdade av relevanta myndigheter. Om certifikatet passerar valideringen har programvarupaketet inte ändrats och är betrodd.</value>\n  </data>\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\n    <value>Markera certifierade avinstallationsprogram</value>\n  </data>\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\n    <value>Verifierade avinstallationsprogram är markerade i grönt, ej verifierade är i blått.\nVarning: Verifiering kan ta lång tid.</value>\n  </data>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>Välkommen till BCUninstaller!</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>Den här guiden kommer att ge dig en snabb översikt och hjälpa dig att konfigurera appen.</value>\n  </data>\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\n    <value>Språkval</value>\n  </data>\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\n    <value>Du kan tvinga BCUninstaller att använda en specifik språkversion om standardspråket är felaktigt. En omstart kommer att utföras för att tillämpa det nya språket.</value>\n  </data>\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\n    <value>Verkställ</value>\n  </data>\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\n    <value>Om du är villig att hjälpa till med att översätta BCUninstaller till ditt språk, klicka på länken nedan för att kontakta mig. All hjälp uppskattas mycket!</value>\n  </data>\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\n    <value>Öppna kontaktformuläret</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>ulk crap\nuninstaller</value>\n    <comment>The missing B is in an image next to the text</comment>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Välkommen till BCUninstaller</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1 / 6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>Sihirbazdan çık</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>Geri</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>Devam</value>\n  </data>\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\n    <value>Diğer ayarlar</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>Yardımı görüntüle</value>\n  </data>\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\n    <value>Kurulumu bitir</value>\n  </data>\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\n    <value>Artık BCUninstaller'ı kullanmaya başlayabilirsiniz. Herhangi bir sorunuz varsa veya yeni bir özellik önermek istiyorsanız, aşağıdaki bağlantıyı ziyaret edin.</value>\n  </data>\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\n    <value>İletişim formunu aç</value>\n  </data>\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\n    <value>Ayrıntılı değişiklik kayıtlarını okuyabilir ve ana sayfamdaki yazılımımdan daha fazlasını kontrol edebilirsiniz.</value>\n  </data>\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\n    <value>Ana sayfayı aç</value>\n  </data>\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\n    <value>Kurulum bitti</value>\n  </data>\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\n    <value>Ağ Girişi</value>\n  </data>\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller aşağıdaki nedenlerle internete bağlanmayı deneyebilir:</value>\n  </data>\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\n    <value>● Program güncellemelerini ara.</value>\n  </data>\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\n    <value>● Hata raporlarını yükle.</value>\n  </data>\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\n    <value>● Anonim kullanım istatistiklerini gönder.</value>\n  </data>\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\n    <value>● Uygulama puanlarını almak ve yükle.</value>\n  </data>\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\n    <value>Bir hata oluştuğunda, göndermek istediğiniz zaman size sorulur. BCUninstaller dizinindeki ilgili XML dosyalarını inceleyerek hata ve kullanım raporlarında hangi verilerin gönderildiğini kontrol edebilirsiniz. Gönderilen veriler üçüncü taraflarla paylaşılmaz.</value>\n  </data>\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\n    <value>Uygulama başlangıcında güncellemeleri otomatik olarak arayın</value>\n  </data>\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\n    <value>Güncellemeleri menü çubuğundan elle arayabilirsiniz.</value>\n  </data>\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\n    <value>Anonim kullanım istatistiklerini otomatik olarak gönder</value>\n  </data>\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\n    <value>Bu istatistikleri göndermek BCUninstaller'ı iyileştirmeye yardımcı olacaktır.</value>\n  </data>\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\n    <value>Uygulamaların kullanıcı derecelendirmelerini etkinleştir</value>\n  </data>\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\n    <value>Bozulmuş kaldırıcılar</value>\n  </data>\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\n    <value>Zamanla bazı uygulamaların kaldırmayı reddedeceğini veya yalnızca kaldırılan yöneticilerin çoğundan kaybolduğunu görebilirsiniz.</value>\n  </data>\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\n    <value>Bozuk veya eksik kaldırıcılar</value>\n  </data>\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\n    <value>Bazı durumlarda, kaldırma araçları bozulabilir ve bunları kaldırmak imkansız hale getirir. BCUninstaller bu girdileri \"Manuel kaldır\" seçeneğini kullanarak kolayca kaldırabilir.</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\n    <value>Geçersiz kaldırıcıları vurgula</value>\n  </data>\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\n    <value>Geçersiz kaldırıcılar gri ile işaretlenmiştir.</value>\n  </data>\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\n    <value>Kayıtsız başvurular</value>\n  </data>\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\n    <value>Bazen tüm uygulamalar kaldırıldıktan sonra bile sürücünüzde bırakılabilir. Bu, yalnızca kaldırıcı kaldırılırsa da gerçekleşebilir.</value>\n  </data>\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\n    <value>Kayıtlı olmayan uygulamaları listede göster</value>\n  </data>\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\n    <value>Kayıtlı olmayan uygulamalar kırmızı olarak işaretlenmiştir. Orijinal kaldırıcı bulunamadıysa, kaldırmak için \"El ile kaldır\" seçeneğini kullanmanız gerekecektir.</value>\n  </data>\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\n    <value>Ileri düzey kullanıcılar</value>\n  </data>\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller temel bir kaldırıcı olarak kullanılabilirken, işlevlerinin çoğu deneyimli kullanıcılara yöneliktir. Dikkatli ilerle!</value>\n  </data>\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\n    <value>Sistem bileşenleri</value>\n  </data>\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\n    <value>\"Sistem bileşenleri\" olarak işaretlenmiş uygulamalar, temel kaldırma yöneticilerinin çoğundan gizlenmiştir. Bu etiket, uygulamanın işletim sisteminin bir parçası olduğu anlamına gelmez.</value>\n  </data>\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\n    <value>Show uninstallers marked as \"system components\"</value>\n  </data>\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\n    <value>Korumalı kaldırıcılar</value>\n  </data>\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\n    <value>Korunan öğeler \"NoRemove\" etiketi ile işaretlenir, yani yayıncı bunları kaldırmanızı istemez. Bu etiket genellikle bireysel parçalarını kaldırmanızı önlemek için büyük yazılım paketleri tarafından kullanılır.</value>\n  </data>\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\n    <value>\"Korumalı\" olarak işaretlenmiş kaldırıcıları göster</value>\n  </data>\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\n    <value>\"Korumalı\" olarak işaretlenmiş kaldırıcıların korumasını devre dışı bırak</value>\n  </data>\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\n    <value>Bu korumalı öğeleri kaldırmanıza izin verecektir.</value>\n  </data>\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\n    <value>Kaldırıcı listesi görünümü</value>\n  </data>\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\n    <value>Sisteminizde bulunan tüm kaldırma programları ana liste görünümündedir. Bu verilere göz atmanın bazı yolları:</value>\n  </data>\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\n    <value>● Filtreleri kullanın ve anahtar kelimeleri arayın (tüm sütunlarda)</value>\n  </data>\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\n    <value>● Filtreleri kullanın ve anahtar kelimeleri arayın (tüm sütunlarda)...</value>\n  </data>\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\n    <value>● Benzer kaldırıcılar gruplandır</value>\n  </data>\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\n    <value>Gruplardaki kaldırıcıları göster</value>\n  </data>\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\n    <value>Onay kutularını kullanarak seçin</value>\n  </data>\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\n    <value>Sertifikalı kaldırıcılar</value>\n  </data>\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\n    <value>Kaldırma yetkilileri ilgili yetkililer tarafından verilen sertifikalarla imzalanabilir. Sertifika geçerliliğini geçerse, yazılım paketi değiştirilmemiştir ve saygındır.</value>\n  </data>\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\n    <value>Sertifikalı kaldırıcıları vurgulayın</value>\n  </data>\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\n    <value>Doğrulanmış kaldırıcılar yeşil olarak işaretlenmiş, doğrulanmamış mavi renktedir.</value>\n  </data>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>Uyarı: Doğrulama uzun sürebilir.</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>Bu sihirbaz size hızlı bir tur verir ve uygulamayı yapılandırmaya yardımcı olur.</value>\n  </data>\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\n    <value>Seçilen dil</value>\n  </data>\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\n    <value>Varsayılan dil yanlışsa BCUninstaller'ı belirli bir yerelleştirmeyi kullanmaya zorlayabilirsiniz. Yeni dili uygulamak için bir yeniden başlatma yapılacaktır.</value>\n  </data>\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\n    <value>Uygula</value>\n  </data>\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller'ı kendi dilinize çevirmeye yardımcı olmak istiyorsanız, bana ulaşmak için aşağıdaki bağlantıya tıklayın. Tüm yardımlar büyük beğeni topluyor!</value>\n  </data>\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\n    <value>İletişim formunu aç</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>ulk crap uninstaller</value>\n    <comment>The missing B is in an image next to the text</comment>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller'e hoş geldiniz</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1 / 6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>Thoát thiết lập</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>Trở về</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>Tiếp tục</value>\n  </data>\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\n    <value>Xem thêm cài đặt</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>Xem trợ giúp</value>\n  </data>\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\n    <value>Hoàn thành thiết lập</value>\n  </data>\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\n    <value>Bạn có thể bắt đầu sử dụng BCUninstaller ngay bây giờ. Nếu bạn có bất kỳ câu hỏi nào hay muốn đề xuất một tính năng mới, hãy truy cập vào liên kết dưới đây.</value>\n  </data>\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\n    <value>Mở biểu mẫu liên hệ</value>\n  </data>\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\n    <value>Bạn có thể xem chi tiết nhật ký thay đổi và khám phá thêm các phần mềm khác của tôi trên trang chủ.</value>\n  </data>\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\n    <value>Mở trang chủ</value>\n  </data>\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\n    <value>Thiết lập đã hoàn tất</value>\n  </data>\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\n    <value>Truy cập mạng</value>\n  </data>\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller có thể cố gắng kết nối Internet vì những lý do sau: </value>\n  </data>\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\n    <value>● Để kiểm tra các bản cập nhật.</value>\n  </data>\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\n    <value>● Để tải lên các báo cáo lỗi.</value>\n  </data>\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\n    <value>● Để gửi số liệu thống kê sử dụng ẩn danh.</value>\n  </data>\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\n    <value>● Để tìm và tải lên các đánh giá ứng dụng.</value>\n  </data>\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\n    <value>Mỗi khi xảy ra lỗi, bạn sẽ được hỏi xem có muốn gửi báo cáo lỗi đó không. Bạn có thể kiểm tra dữ liệu nào đang được gửi trong các báo cáo lỗi và sử dụng bằng cách kiểm tra các file XML tương ứng trong thư mục của BCUninstaller. Dữ liệu được gửi đi không được chia sẻ với bất kỳ bên thứ ba nào.</value>\n  </data>\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\n    <value>Tự động kiểm tra các bản cập nhật khi khởi động ứng dụng</value>\n  </data>\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\n    <value>Bạn có thể kiểm tra cập nhật thủ công từ thanh menu.</value>\n  </data>\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\n    <value>Tự động gửi số liệu thống kê sử dụng ẩn danh</value>\n  </data>\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\n    <value>Gửi những số liệu thống kê này có thể giúp cải thiện BCUninstaller.</value>\n  </data>\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\n    <value>Bật tính năng đánh giá ứng dụng của người dùng</value>\n  </data>\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt bị hỏng</value>\n  </data>\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\n    <value>Theo thời gian, bạn có thể gặp phải tình trạng một số ứng dụng không thể gỡ cài đặt theo cách thông thường, hoặc chúng biến mất khỏi danh sách của hầu hết các công cụ gỡ cài đặt.</value>\n  </data>\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt bị hỏng hoặc bị thiếu</value>\n  </data>\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\n    <value>Đôi khi trình gỡ cài đặt có thể bị lỗi, khiến bạn không thể gỡ cài đặt phần mềm theo cách thông thường. BCUninstaller có thể dễ dàng loại bỏ các chương trình này bằng cách sử dụng tùy chọn \"Gỡ cài đặt thủ công\".</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\n    <value>Đánh dấu các trình gỡ cài đặt không hợp lệ</value>\n  </data>\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt không hợp lệ được đánh dấu bằng màu xám.</value>\n  </data>\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\n    <value>Ứng dụng chưa đăng ký</value>\n  </data>\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\n    <value>Đôi khi toàn bộ ứng dụng vẫn có thể còn sót lại trên ổ đĩa của bạn ngay cả sau khi gỡ cài đặt. Điều này cũng có thể xảy ra khi chỉ có mỗi trình gỡ cài đặt được xoá.</value>\n  </data>\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\n    <value>Hiển thị các ứng dụng chưa đăng ký</value>\n  </data>\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\n    <value>Các ứng dụng chưa đăng ký được đánh dấu bằng màu đỏ.\nNếu bạn không thể tìm thấy trình gỡ cài đặt gốc, bạn sẽ cần xóa chúng bằng tùy chọn \"Gỡ cài đặt thủ công\".</value>\n  </data>\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\n    <value>Dành cho người dùng nâng cao</value>\n  </data>\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\n    <value>Mặc dù BCUninstaller có thể được sử dụng như một trình gỡ cài đặt cơ bản, nhưng hầu hết các chức năng của nó đều hướng đến người dùng chuyên sâu. Hãy cẩn thận khi sử dụng!</value>\n  </data>\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\n    <value>Thành phần hệ thống</value>\n  </data>\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\n    <value>Các ứng dụng được đánh dấu là \"thành phần hệ thống\" thường bị ẩn khỏi hầu hết các trình gỡ cài đặt cơ bản. Tuy nhiên, điều này KHÔNG CÓ NGHĨA là ứng dụng đó là một phần của hệ điều hành.</value>\n  </data>\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\n    <value>Hiển thị các trình gỡ cài đặt được đánh dấu là \"thành phần hệ thống\"</value>\n  </data>\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt được bảo vệ</value>\n  </data>\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\n    <value>Các mục được bảo vệ được đánh dấu bằng thẻ \"NoRemove\", có nghĩa là nhà phát hành không muốn bạn xóa chúng. Thẻ này thường được các gói phần mềm lớn sử dụng để ngăn bạn gỡ cài đặt các phần riêng lẻ của chúng.</value>\n  </data>\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\n    <value>Hiển thị các trình gỡ cài đặt được đánh dấu là \"được bảo vệ\"</value>\n  </data>\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\n    <value>Tắt tính năng bảo vệ của các trình gỡ cài đặt được đánh dấu\nlà \"được bảo vệ\"</value>\n  </data>\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\n    <value>Tính năng này sẽ cho phép bạn gỡ cài đặt các mục được bảo vệ.</value>\n  </data>\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\n    <value>Chế độ xem danh sách trình gỡ cài đặt</value>\n  </data>\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\n    <value>Tất cả các trình gỡ cài đặt được tìm thấy trong hệ thống của bạn đều có trong danh sách chính. Dưới đây là một số cách để duyệt qua dữ liệu này:</value>\n  </data>\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\n    <value>● Sử dụng bộ lọc và tìm kiếm theo từ khóa (tất cả các cột)</value>\n  </data>\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\n    <value>● Sắp xếp các trình gỡ cài đặt theo bất kỳ cột nào và bạn có thể sắp xếp lại các cột theo ý muốn.</value>\n  </data>\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\n    <value>● Nhóm các trình gỡ cài đặt tương tự lại với nhau.</value>\n  </data>\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\n    <value>Hiển thị các trình gỡ cài đặt theo nhóm</value>\n  </data>\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\n    <value>Chọn bằng cách tích vào hộp kiểm</value>\n  </data>\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt đã đạt chứng chỉ</value>\n  </data>\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt có thể được ký bằng chứng chỉ do các tổ chức uy tín cấp. Nếu chứng chỉ vượt qua xác thực, thì gói phần mềm chưa bị can thiệp và có uy tín.</value>\n  </data>\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\n    <value>Đánh dấu các trình gỡ cài đặt đạt chứng chỉ</value>\n  </data>\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt được xác minh được đánh dấu màu xanh lục, trình gỡ cài đặt chưa được xác minh được đánh dấu màu xanh lam.\nCảnh báo: Việc xác minh có thể mất nhiều thời gian.</value>\n  </data>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>Chào mừng bạn đến với BCUninstaller!</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>Trình hướng dẫn này sẽ cung cấp cho bạn một bản tóm tắt nhanh và hỗ trợ cấu hình ứng dụng.</value>\n  </data>\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\n    <value>Ngôn ngữ đã chọn</value>\n  </data>\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\n    <value>Bạn có thể buộc BCUninstaller sử dụng một cụ thể nếu ngôn ngữ mặc định không chính xác. Để áp dụng ngôn ngữ mới, chương trình cần sẽ cần phải khởi động lại.</value>\n  </data>\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\n    <value>Chấp nhận</value>\n  </data>\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\n    <value>Nếu bạn sẵn lòng giúp đỡ dịch BCUninstaller sang ngôn ngữ mẹ đẻ của bạn, hãy nhấp vào liên kết bên dưới để liên hệ với tôi. Mọi sự trợ giúp đều được trân trọng!</value>\n  </data>\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\n    <value>Mở biểu mẫu liên hệ</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>ulk crap\nuninstaller</value>\n    <comment>The missing B is in an image next to the text</comment>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Chào mừng đến với BCUninstaller!</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1 / 6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>退出向导</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>返回</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>继续</value>\n  </data>\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\n    <value>更多设置</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>查看帮助</value>\n  </data>\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\n    <value>完成设置</value>\n  </data>\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\n    <value>现在可以开始使用BCUninstaller。如果你有任何问题或想建议一个新功能，请访问下面的链接。</value>\n  </data>\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\n    <value>打开联系窗体</value>\n  </data>\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\n    <value>你可以查看详细的更新日志，并在主页上查看我的其他软件。</value>\n  </data>\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\n    <value>打开主页</value>\n  </data>\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\n    <value>设置已完成</value>\n  </data>\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\n    <value>网络访问</value>\n  </data>\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller会尝试连接到互联网，原因如下:</value>\n  </data>\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\n    <value>● 搜索应用程序更新。</value>\n  </data>\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\n    <value>● 上传错误报告。</value>\n  </data>\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\n    <value>● 发送匿名使用情况统计信息。</value>\n  </data>\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\n    <value>● 获取和上传应用程序评分</value>\n  </data>\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\n    <value>每次发生错误时，系统都会询问你是否要发送错误。通过检查BCUninstaller目录中相应的XML文件，可以检查错误和使用情况报告中发送的数据。发送的数据不与任何第三方共享。</value>\n  </data>\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\n    <value>在应用程序启动时自动查找更新</value>\n  </data>\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\n    <value>你可以从菜单栏手动搜索更新。</value>\n  </data>\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\n    <value>自动发送匿名使用情况统计信息</value>\n  </data>\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\n    <value>发送这些统计信息将有助于改进BCUninstaller</value>\n  </data>\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\n    <value>启用应用程序的用户评分</value>\n  </data>\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\n    <value>已损坏的卸载程序</value>\n  </data>\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\n    <value>随着时间推移，你可能会发现一些应用程序会拒绝卸载，或者只是从大多数卸载管理器中消失。</value>\n  </data>\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\n    <value>已损坏或丢失的卸载程序</value>\n  </data>\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\n    <value>在某些情况下，卸载程序可能会损坏，导致无法卸载。BCUninstaller可以使用\"手动卸载\"选项轻松删除这些条目。</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\n    <value>突出显示无效的卸载程序</value>\n  </data>\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\n    <value>无效的卸载程序标记为灰色。</value>\n  </data>\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\n    <value>未注册的应用程序</value>\n  </data>\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\n    <value>有时，即使卸载后，整个应用程序也可能留在驱动器上。如果只删除卸载程序，也可能发生这种情况。</value>\n  </data>\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\n    <value>在列表中显示未注册的应用程序</value>\n  </data>\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\n    <value>未注册的应用程序以红色标记。\n如果找不到原始的卸载程序，则必须使用“手动卸载”选项来删除它们。</value>\n  </data>\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\n    <value>高级用户</value>\n  </data>\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\n    <value>虽然BCUninstaller可以用作基本的卸载程序，但它的大部分功能都是针对高级用户的。小心行事！</value>\n  </data>\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\n    <value>系统组件</value>\n  </data>\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\n    <value>标记为\"系统组件\"的应用程序对大多数基本卸载管理器都是隐藏的。此标记并不意味着应用程序是操作系统的一部分。</value>\n  </data>\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\n    <value>显示标记为“系统组件”的卸载程序</value>\n  </data>\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\n    <value>受保护的卸载程序</value>\n  </data>\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\n    <value>受保护的项目用\"不要删除\"标记，这意味着发布者不希望你删除它们。大型软件包经常使用此标记来阻止你卸载其各个部分。</value>\n  </data>\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\n    <value>显示标记为\"受保护\"的卸载程序</value>\n  </data>\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\n    <value>禁用标记为\"受保护\"的卸载程序的保护</value>\n  </data>\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\n    <value>这将允许你卸载受保护的项目。</value>\n  </data>\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\n    <value>卸载程序列表视图</value>\n  </data>\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\n    <value>在系统中找到的所有卸载程序都在主列表视图中。以下是浏览这些数据的一些方法:</value>\n  </data>\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\n    <value>如果你愿意帮助将BCUninstaller翻译成你的语言，请单击下面的链接与我联系。非常感谢你的帮助！</value>\n  </data>\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\n    <value>打开联系窗体</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>ulk crap</value>\n    <comment>The missing B is in an image next to the text</comment>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>欢迎使用BCUninstaller</value>\n  </data>\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\n    <value>●使用筛选器并搜索关键字（在所有列中）</value>\n  </data>\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\n    <value>●按任意列对卸载程序排序。自由地重新安排列。</value>\n  </data>\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\n    <value>●将相似卸载程序分组</value>\n  </data>\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\n    <value>分组显示卸载程序</value>\n  </data>\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\n    <value>使用复选框选择</value>\n  </data>\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\n    <value>已验证卸载程序</value>\n  </data>\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\n    <value>卸载程序可以使用相关机构颁发的证书进行签名。如果证书通过验证，则软件包未被更改，且信誉良好。</value>\n  </data>\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\n    <value>突出显示已验证卸载程序</value>\n  </data>\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\n    <value>已验证的卸载程序以绿色标记，未验证的卸载程序以蓝色标记。\n警告：验证可能需要很长时间。</value>\n  </data>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>欢迎使用BCUninstaller!</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>此向导将为你提供快速教程并帮助你配置应用程序。</value>\n  </data>\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\n    <value>选择语言</value>\n  </data>\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\n    <value>如果默认语言不正确，可以强制BCUninstaller使用特定的本地化。将重新启动以应用新语言。</value>\n  </data>\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\n    <value>应用</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Forms/Wizards/FirstStartBox.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelProgress.Text\" xml:space=\"preserve\">\n    <value>1/6</value>\n  </data>\n  <data name=\"buttonExit.Text\" xml:space=\"preserve\">\n    <value>關閉精靈</value>\n  </data>\n  <data name=\"buttonPrev.Text\" xml:space=\"preserve\">\n    <value>返回</value>\n  </data>\n  <data name=\"buttonNext.Text\" xml:space=\"preserve\">\n    <value>繼續</value>\n  </data>\n  <data name=\"buttonMore.Text\" xml:space=\"preserve\">\n    <value>更多設定</value>\n  </data>\n  <data name=\"buttonHelp.Text\" xml:space=\"preserve\">\n    <value>查看幫助</value>\n  </data>\n  <data name=\"buttonFinish.Text\" xml:space=\"preserve\">\n    <value>完成設定</value>\n  </data>\n  <data name=\"p5finishContact.Text\" xml:space=\"preserve\">\n    <value>現在可以開始使用BCUninstaller。如果你有任何問題或想建議一個新功能，請透過下面的連結。</value>\n  </data>\n  <data name=\"p5LinkContact.Text\" xml:space=\"preserve\">\n    <value>開啟聯絡表單</value>\n  </data>\n  <data name=\"p5finishHomepage.Text\" xml:space=\"preserve\">\n    <value>你可以查看詳細的更新日誌，並在官網上查看我的其他軟體。</value>\n  </data>\n  <data name=\"p5LinkHomepage.Text\" xml:space=\"preserve\">\n    <value>開啟官網</value>\n  </data>\n  <data name=\"p5finishTitle.Text\" xml:space=\"preserve\">\n    <value>設定已完成</value>\n  </data>\n  <data name=\"p4netTitle.Text\" xml:space=\"preserve\">\n    <value>訪問網路</value>\n  </data>\n  <data name=\"p4netDesc.Text\" xml:space=\"preserve\">\n    <value>BCUninstaller會嘗試連結到網路，原因如下：</value>\n  </data>\n  <data name=\"p4netDesc1.Text\" xml:space=\"preserve\">\n    <value>● 搜尋應用程式更新。</value>\n  </data>\n  <data name=\"p4netDesc2.Text\" xml:space=\"preserve\">\n    <value>● 上傳錯誤報告。</value>\n  </data>\n  <data name=\"p4netDesc3.Text\" xml:space=\"preserve\">\n    <value>● 傳送匿名使用情況統計資訊。</value>\n  </data>\n  <data name=\"p4netDesc4.Text\" xml:space=\"preserve\">\n    <value>● 獲取和上傳應用程式評分</value>\n  </data>\n  <data name=\"p4netErrors.Text\" xml:space=\"preserve\">\n    <value>每次發生錯誤時，系統都會詢問你是否要傳送錯誤。通過檢查BCUninstaller目錄中相應的XML文件，可以檢查錯誤和使用情況報告中傳送的資料。傳送的資料不與任何第三方共享</value>\n  </data>\n  <data name=\"checkBoxUpdateSearch.Text\" xml:space=\"preserve\">\n    <value>在應用程式啟動時自動檢查更新</value>\n  </data>\n  <data name=\"p4netUpdateAdd.Text\" xml:space=\"preserve\">\n    <value>你可以從選單列手動搜尋更新</value>\n  </data>\n  <data name=\"checkBoxSendStats.Text\" xml:space=\"preserve\">\n    <value>自動傳送匿名使用情況統計資訊</value>\n  </data>\n  <data name=\"p4netUsageAdd.Text\" xml:space=\"preserve\">\n    <value>發送這些統計資訊將有助於改進BCUninstaller</value>\n  </data>\n  <data name=\"checkBoxRatings.Text\" xml:space=\"preserve\">\n    <value>啟用應用程式的使用者評分</value>\n  </data>\n  <data name=\"pCorTitle.Text\" xml:space=\"preserve\">\n    <value>已毀損的移除程式</value>\n  </data>\n  <data name=\"pCorDesc.Text\" xml:space=\"preserve\">\n    <value>隨著時間，你可能會發現一些應用程式會拒絕移除，或者只是從大多數移除管理程式中消失。</value>\n  </data>\n  <data name=\"pCorViewInvalidTitle.Text\" xml:space=\"preserve\">\n    <value>已毀損或遺失的移除程式</value>\n  </data>\n  <data name=\"pCorViewInvalid.Text\" xml:space=\"preserve\">\n    <value>在某些情況下，移除程式可能會毀損，導致無法移除。BCUninstaller可以使用\"手動移除選項輕鬆刪除這些項目。</value>\n  </data>\n  <data name=\"checkBoxInvalidTest.Text\" xml:space=\"preserve\">\n    <value>提高顯示無效的移除程式</value>\n  </data>\n  <data name=\"pCorViewinvalidComment.Text\" xml:space=\"preserve\">\n    <value>無效的移除程式標記為灰色。</value>\n  </data>\n  <data name=\"pCorOrphansTitle.Text\" xml:space=\"preserve\">\n    <value>未註冊的應用程式</value>\n  </data>\n  <data name=\"pCorOrphansMessage.Text\" xml:space=\"preserve\">\n    <value>有時，即使移除後，整個應用程式也可能留在硬碟上。如果只刪除應用程式，也可能發生這種情況。</value>\n  </data>\n  <data name=\"checkBoxOrphans.Text\" xml:space=\"preserve\">\n    <value>在清單中顯示未註冊的應用程式</value>\n  </data>\n  <data name=\"pCorOrphansComment.Text\" xml:space=\"preserve\">\n    <value>未註冊的應用程式以紅色標記。\n如果找不到原始的移除程式，則必須使用\"手動移除\"選項來刪除它們。</value>\n  </data>\n  <data name=\"p3advTitle.Text\" xml:space=\"preserve\">\n    <value>進階使用者</value>\n  </data>\n  <data name=\"p3advDesc.Text\" xml:space=\"preserve\">\n    <value>雖然BCUninstaller可以用作基本的移除程式，但它的大部分功能都是針對進階使用者的。請小心使用！</value>\n  </data>\n  <data name=\"p3advSyscompTitle.Text\" xml:space=\"preserve\">\n    <value>系統元件</value>\n  </data>\n  <data name=\"p3advSyscomp.Text\" xml:space=\"preserve\">\n    <value>標記為\"系統元件\"的應用程式對大多數基本移除管理員都是隱藏的。此標記並不意味著應用程式式操作系統的一部份。</value>\n  </data>\n  <data name=\"checkBoxListSysComp.Text\" xml:space=\"preserve\">\n    <value>顯示標記為\"系統元件\"的移除程式</value>\n  </data>\n  <data name=\"p3advProtectTitle.Text\" xml:space=\"preserve\">\n    <value>受保護的移除程式</value>\n  </data>\n  <data name=\"p3advProtect.Text\" xml:space=\"preserve\">\n    <value>受保護的項目用\"不要刪除標記，這意味著發布者不希望你刪除它們。大型軟體經常使用此標記來阻止你移除其他各個部分。</value>\n  </data>\n  <data name=\"checkBoxListProtected.Text\" xml:space=\"preserve\">\n    <value>顯示標記為\"受保護\"的移除程式</value>\n  </data>\n  <data name=\"checkBoxDiisableProtection.Text\" xml:space=\"preserve\">\n    <value>隱藏標記為''受保護\"的移除程式的保護</value>\n  </data>\n  <data name=\"p3advProtectAdd.Text\" xml:space=\"preserve\">\n    <value>這將允許你移除受保護的項目。</value>\n  </data>\n  <data name=\"p2viewTitle.Text\" xml:space=\"preserve\">\n    <value>移除程式清單顯示</value>\n  </data>\n  <data name=\"p2viewDetail.Text\" xml:space=\"preserve\">\n    <value>在喜桶中找到的所有移除程式都在主清單顯示中。以下式瀏覽這些資料的一些方法:</value>\n  </data>\n  <data name=\"p2viewDetail1.Text\" xml:space=\"preserve\">\n    <value>●篩選並搜尋關鍵字(在所有列中)</value>\n  </data>\n  <data name=\"p2viewDetail2.Text\" xml:space=\"preserve\">\n    <value>●按任意列對應用程式排序。自由重新安排列。</value>\n  </data>\n  <data name=\"p2viewDetail3.Text\" xml:space=\"preserve\">\n    <value>●將相似應用程式分組</value>\n  </data>\n  <data name=\"checkBoxGroups.Text\" xml:space=\"preserve\">\n    <value>分組顯示移除程式</value>\n  </data>\n  <data name=\"checkBoxCheckboxes.Text\" xml:space=\"preserve\">\n    <value>使用複選框選擇</value>\n  </data>\n  <data name=\"p2viewCertsTitle.Text\" xml:space=\"preserve\">\n    <value>已驗證移除程式</value>\n  </data>\n  <data name=\"p2viewCerts.Text\" xml:space=\"preserve\">\n    <value>移除程序可以使用相關機構頒發的憑證進行簽名。如果憑證通過驗證，則軟體包未被更改，且信譽良好。</value>\n  </data>\n  <data name=\"checkBoxCertTest.Text\" xml:space=\"preserve\">\n    <value>提高顯示已驗證的移除程式</value>\n  </data>\n  <data name=\"p2viewAdd.Text\" xml:space=\"preserve\">\n    <value>已驗證的移除程式已綠色標記，未驗證的移除程式已藍色標記。\n警告：驗證可能需要很長時間。</value>\n  </data>\n  <data name=\"p1welcomeHeading.Text\" xml:space=\"preserve\">\n    <value>歡迎使用BCUninstaller！</value>\n  </data>\n  <data name=\"p1welcomeSubheading.Text\" xml:space=\"preserve\">\n    <value>此精靈將為你提供快速教學並幫助你設置應用程式。</value>\n  </data>\n  <data name=\"p1languageHeading.Text\" xml:space=\"preserve\">\n    <value>選擇語言</value>\n  </data>\n  <data name=\"p1languageDesc.Text\" xml:space=\"preserve\">\n    <value>如果預設語言不正確，可以強制BCUninstaller使用特定的本地化。將重新啟動以套用新語言。</value>\n  </data>\n  <data name=\"buttonLanguageApply.Text\" xml:space=\"preserve\">\n    <value>套用</value>\n  </data>\n  <data name=\"p1languageExtradetails.Text\" xml:space=\"preserve\">\n    <value>如果願意幫助將BCUninstaller翻譯成你的語言，請點擊下面的連結與我聯繫。非常感謝你的幫助！</value>\n  </data>\n  <data name=\"p1linkLabelContact.Text\" xml:space=\"preserve\">\n    <value>開啟聯絡視窗</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>ulk crap</value>\n    <comment>The missing B is in an image next to the text</comment>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>歡迎使用BCUninstaller</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/AppPropertiesGatherer.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Data;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing BulkCrapUninstaller.Functions.Tools;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Extensions;\r\nusing Klocman.IO;\r\nusing Klocman.Localising;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Functions\r\n{\r\n    using SingleProperty = KeyValuePair<string, object>;\r\n\r\n    internal enum InfoType\r\n    {\r\n        Invalid = 0,\r\n        Overview,\r\n        FileInfo,\r\n        Certificate,\r\n        Registry\r\n    }\r\n\r\n    internal static class AppPropertiesGatherer\r\n    {\r\n        public static DataTable GetInfo(ApplicationUninstallerEntry entry, InfoType infoType)\r\n        {\r\n            try\r\n            {\r\n                switch (infoType)\r\n                {\r\n                    case InfoType.Overview:\r\n                        return ExtractOverview(entry);\r\n\r\n                    case InfoType.FileInfo:\r\n                        return ExtractFileInfo(entry);\r\n\r\n                    case InfoType.Registry:\r\n                        return ExtractRegistryInfo(entry);\r\n\r\n                    case InfoType.Certificate:\r\n                        return ExtractCertificateInfo(entry);\r\n\r\n                    default:\r\n                        throw new InvalidOperationException(\"Selected tab is invalid or not supported.\");\r\n                }\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                return GetError(ex.Message);\r\n            }\r\n        }\r\n\r\n        private static void ConvertPropertiesIntoDataTable(IEnumerable<SingleProperty> lq, DataTable dt)\r\n        {\r\n            foreach (var kvp in lq.OrderBy(x => x.Key))\r\n            {\r\n                if (kvp.Value == null)\r\n                    continue;\r\n\r\n                if (kvp.Value is Guid guid && guid.IsEmpty())\r\n                    continue;\r\n\r\n                if (kvp.Value is DateTime time && time.IsDefault())\r\n                    continue;\r\n                \r\n                if ((kvp.Value as Version)?.IsZeroOrNull() ?? false)\r\n                    continue;\r\n\r\n                string result;\r\n                \r\n                if (kvp.Value is bool b)\r\n                    result = b.ToYesNo();\r\n                else if (kvp.Value is Enum e)\r\n                    result = e.GetLocalisedName();\r\n                else if (kvp.Value is ICollection c)\r\n                    result = string.Join(\" | \", c.Cast<object>().Select(x => x.ToString()).ToArray());\r\n                else\r\n                    result = kvp.Value.ToString();\r\n\r\n                if (!string.IsNullOrEmpty(result))\r\n                    dt.Rows.Add(kvp.Key, result);\r\n            }\r\n        }\r\n\r\n        private static DataTable ExtractCertificateInfo(ApplicationUninstallerEntry tag)\r\n        {\r\n            var cert = tag.GetCertificate();\r\n\r\n            if (cert == null)\r\n                return GetError(Localisable.PropertiesWindow_Table_ErrorNoCertificate);\r\n\r\n            var localizedCert = new LocalizedX509Certificate2(cert);\r\n\r\n            // Extract required data\r\n            var lq = from property in typeof(LocalizedX509Certificate2).GetProperties()\r\n                     select new SingleProperty(property.GetLocalisedName(), property.GetValue(localizedCert, new object[] { }));\r\n\r\n            // Create and return the table\r\n            var dt = GetCleanDataTable();\r\n            ConvertPropertiesIntoDataTable(lq.ToList(), dt);\r\n            return dt;\r\n        }\r\n\r\n        private static DataTable ExtractFileInfo(ApplicationUninstallerEntry tag)\r\n        {\r\n            if (string.IsNullOrEmpty(tag.UninstallerFullFilename))\r\n                throw new InvalidOperationException(Localisable.PropertiesWindow_Table_ErrorMissingUninstaller);\r\n\r\n            if (!File.Exists(tag.UninstallerFullFilename))\r\n            {\r\n                if (tag.UninstallerKind == UninstallerType.Msiexec)\r\n                    throw new NotSupportedException(Localisable.PropertiesWindow_Table_ErrorMsi);\r\n                throw new IOException(Localisable.PropertiesWindow_Table_ErrorDoesntExist);\r\n            }\r\n            \r\n            var fi = AdvancedFileInfo.FromPath(tag.UninstallerFullFilename);\r\n            \r\n            var lq = from property in typeof(AdvancedFileInfo).GetProperties()\r\n                     select new SingleProperty(property.GetLocalisedName(), property.GetValue(fi, new object[] { }));\r\n\r\n            // Create and return the table\r\n            var dt = GetCleanDataTable();\r\n            ConvertPropertiesIntoDataTable(lq, dt);\r\n            return dt;\r\n        }\r\n\r\n        private static DataTable ExtractOverview(ApplicationUninstallerEntry tag)\r\n        {\r\n            var lq = from property in typeof(ApplicationUninstallerEntry).GetProperties()\r\n                     select new SingleProperty(property.GetLocalisedName(), property.GetValue(tag, new object[] { }));\r\n\r\n            // Create and return the table\r\n            var dt = GetCleanDataTable();\r\n            ConvertPropertiesIntoDataTable(lq, dt);\r\n            return dt;\r\n        }\r\n\r\n        private static DataTable ExtractRegistryInfo(ApplicationUninstallerEntry tag)\r\n        {\r\n            if (!tag.IsRegistered)\r\n                throw new InvalidOperationException(Localisable.PropertiesWindow_Table_ErrorMissingRegistry);\r\n\r\n            var targetKey = tag.OpenRegKey();\r\n            var dt = GetCleanDataTable();\r\n\r\n            var valueNames = targetKey.GetValueNames();\r\n            foreach (var valueName in valueNames)\r\n            {\r\n                dt.Rows.Add(valueName, targetKey.GetValue(valueName));\r\n            }\r\n\r\n            targetKey.Close();\r\n            return dt;\r\n        }\r\n\r\n        private static DataTable GetCleanDataTable()\r\n        {\r\n            var dt = new DataTable {Locale = CultureInfo.InvariantCulture};\r\n            dt.Columns.Add(Localisable.PropertiesWindow_Table_Name, typeof(string));\r\n            dt.Columns.Add(Localisable.PropertiesWindow_Table_Value, typeof(string));\r\n            return dt;\r\n        }\r\n\r\n        private static DataTable GetError(string message)\r\n        {\r\n            return GetMessage(Localisable.PropertiesWindow_Table_Error, message);\r\n        }\r\n\r\n        private static DataTable GetMessage(string name, string message)\r\n        {\r\n            var dt = GetCleanDataTable();\r\n            dt.Rows.Add(name, message);\r\n            return dt;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/AppUninstaller.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Threading;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Forms;\r\nusing BulkCrapUninstaller.Functions.Tools;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Native;\r\nusing Klocman.Tools;\r\nusing UninstallTools;\r\nusing UninstallTools.Factory;\r\nusing UninstallTools.Factory.InfoAdders;\r\nusing UninstallTools.Junk;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Uninstaller;\r\n\r\nnamespace BulkCrapUninstaller.Functions\r\n{\r\n    internal class AppUninstaller\r\n    {\r\n        private readonly Action _initiateListRefresh;\r\n        private readonly Action<bool> _lockApplication;\r\n        private readonly Action<bool> _visibleCallback;\r\n        private readonly Settings _settings = Settings.Default;\r\n        private readonly object _uninstallLock = new();\r\n\r\n        /// <summary>\r\n        ///     Uninstall tasks will wait until this is released to continue. Keep it short to prevent ui unresponsiveness.\r\n        /// </summary>\r\n        public readonly object PublicUninstallLock = new();\r\n\r\n        private static readonly int MyProcessId = Environment.ProcessId;\r\n\r\n        /// <exception cref=\"ArgumentNullException\"> One of arguments is <see langword=\"null\" />.</exception>\r\n        internal AppUninstaller(Action listRefreshCallback, Action<bool> applicationLockCallback, Action<bool> visibleCallback)\r\n        {\r\n            _initiateListRefresh = listRefreshCallback ?? throw new ArgumentNullException(nameof(listRefreshCallback));\r\n            _lockApplication = applicationLockCallback ?? throw new ArgumentNullException(nameof(applicationLockCallback));\r\n            _visibleCallback = visibleCallback;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Returns false if export failed, else true.\r\n        /// </summary>\r\n        /// <param name=\"itemsToExport\">What to export</param>\r\n        /// <param name=\"filename\">Full path with filename and extension to write the export result to.</param>\r\n        /// <returns></returns>\r\n        public static bool ExportUninstallers(IEnumerable<ApplicationUninstallerEntry> itemsToExport, string filename)\r\n        {\r\n            var applicationUninstallerEntries = itemsToExport as List<ApplicationUninstallerEntry> ??\r\n                                                itemsToExport.ToList();\r\n            if (applicationUninstallerEntries.Count <= 0)\r\n                return false;\r\n\r\n            try\r\n            {\r\n                ApplicationEntrySerializer.SerializeApplicationEntries(filename, applicationUninstallerEntries);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                MessageBoxes.ExportFailed(ex.Message, null);\r\n                return false;\r\n            }\r\n            return true;\r\n        }\r\n\r\n        internal static int[] GetRelatedProcessIds(IEnumerable<ApplicationUninstallerEntry> entries, bool doNotKillSteam)\r\n        {\r\n            var filters = entries.SelectMany(e => new[] { e.InstallLocation, e.UninstallerLocation })\r\n                .Where(s => !string.IsNullOrEmpty(s)).Distinct().ToArray();\r\n\r\n            return GetRelatedProcessIds(filters, doNotKillSteam);\r\n        }\r\n\r\n        private static bool CheckForRunningProcessesBeforeUninstall(IEnumerable<ApplicationUninstallerEntry> entries, bool doNotKillSteam)\r\n        {\r\n            var filters = entries.SelectMany(e => new[] { e.InstallLocation, e.UninstallerLocation })\r\n                .Where(s => !string.IsNullOrEmpty(s)).Distinct().ToArray();\r\n\r\n            return CheckForRunningProcesses(filters, doNotKillSteam);\r\n        }\r\n\r\n        private static bool CheckForRunningProcessesBeforeCleanup(IEnumerable<IJunkResult> entries)\r\n        {\r\n            var filters = entries.OfType<FileSystemJunk>()\r\n                .Select(x => x.Path.FullName)\r\n                .Distinct().ToArray();\r\n\r\n            return CheckForRunningProcesses(filters, false);\r\n        }\r\n\r\n        public static IEnumerable<ApplicationUninstallerEntry> GetApplicationsFromProcess(\r\n            IEnumerable<ApplicationUninstallerEntry> allApplications, Process targetProcess)\r\n        {\r\n            if (targetProcess == null) throw new ArgumentNullException(nameof(targetProcess));\r\n            if (targetProcess.MainModule?.FileName == null) throw new ArgumentException(\"MainModule is null\");\r\n\r\n            var mainFilename = targetProcess.MainModule.FileName;\r\n            return from app in allApplications\r\n                   where\r\n                       (app.IsInstallLocationValid() &&\r\n                        mainFilename.Contains(app.InstallLocation, StringComparison.InvariantCultureIgnoreCase))\r\n                       ||\r\n                       (!string.IsNullOrEmpty(app.UninstallerLocation) &&\r\n                        mainFilename.Contains(app.UninstallerLocation, StringComparison.InvariantCultureIgnoreCase))\r\n                   select app;\r\n        }\r\n\r\n        internal static bool CheckForRunningProcesses(string[] filters, bool doNotKillSteam, Form parentForm = null)\r\n        {\r\n            var idsToCheck = GetRelatedProcessIds(filters, doNotKillSteam);\r\n\r\n            if (idsToCheck.Length > 0)\r\n            {\r\n                if (!ProcessWaiter.ShowDialog(parentForm ?? MessageBoxes.DefaultOwner, idsToCheck.ToArray(), false))\r\n                    return false;\r\n            }\r\n\r\n            return true;\r\n        }\r\n\r\n        private static int[] GetRelatedProcessIds(string[] filters, bool doNotKillSteam)\r\n        {\r\n            var idsToCheck = new List<int>();\r\n            foreach (var pr in Process.GetProcesses())\r\n            {\r\n                try\r\n                {\r\n                    if (pr.Id == MyProcessId || pr.HasExited)\r\n                        continue;\r\n\r\n                    if (doNotKillSteam && pr.ProcessName.Equals(\"steam\", StringComparison.OrdinalIgnoreCase))\r\n                        continue;\r\n\r\n                    if (string.IsNullOrEmpty(pr.MainModule?.FileName) ||\r\n                        pr.MainModule.FileName.StartsWith(WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_SYSTEM), StringComparison.OrdinalIgnoreCase))\r\n                        continue;\r\n\r\n                    var filenames = pr.Modules.Cast<ProcessModule>()\r\n                        .Select(x => x.FileName)\r\n                        .Where(s => !string.IsNullOrEmpty(s))\r\n                        .Distinct();\r\n\r\n                    if (filenames.Any(filename => filters.Any(filter =>\r\n                    {\r\n                        if (string.IsNullOrEmpty(filename))\r\n                            return false;\r\n\r\n                        if (!Path.IsPathRooted(filename))\r\n                            return false;\r\n\r\n                        return filename.StartsWith(filter, StringComparison.OrdinalIgnoreCase);\r\n                    })))\r\n                    {\r\n                        idsToCheck.Add(pr.Id);\r\n                    }\r\n                }\r\n                catch\r\n                {\r\n                    // Ignore invalid processes\r\n                }\r\n            }\r\n\r\n            return idsToCheck.ToArray();\r\n        }\r\n\r\n        public void RunUninstall(IEnumerable<ApplicationUninstallerEntry> selectedUninstallers,\r\n            IEnumerable<ApplicationUninstallerEntry> allUninstallers, bool quiet)\r\n        {\r\n            if (!TryGetUninstallLock()) return;\r\n            var listRefreshNeeded = false;\r\n\r\n            try\r\n            {\r\n                var targetList = new List<ApplicationUninstallerEntry>(selectedUninstallers);\r\n                var allUninstallerList = allUninstallers as IList<ApplicationUninstallerEntry> ?? allUninstallers.ToList();\r\n\r\n                if (!_settings.AdvancedDisableProtection)\r\n                {\r\n                    var protectedTargets = targetList.Where(x => x.IsProtected).ToList();\r\n                    if (\r\n                        MessageBoxes.ProtectedItemsWarningQuestion(protectedTargets.Select(x => x.DisplayName).ToArray()) ==\r\n                        MessageBoxes.PressedButton.Cancel)\r\n                        return;\r\n\r\n                    targetList.RemoveAll(protectedTargets);\r\n                }\r\n\r\n                if (targetList.Any())\r\n                {\r\n                    _lockApplication(true);\r\n\r\n                    IReadOnlyList<BulkUninstallEntry> taskEntries;\r\n\r\n                    using (var wizard = new BeginUninstallTaskWizard())\r\n                    {\r\n                        wizard.Initialize(targetList, allUninstallerList.ToList(), quiet);\r\n\r\n                        wizard.StartPosition = FormStartPosition.CenterParent;\r\n                        if (wizard.ShowDialog(MessageBoxes.DefaultOwner) != DialogResult.OK || wizard.Results.Count == 0)\r\n                            return;\r\n\r\n                        taskEntries = wizard.Results;\r\n                    }\r\n\r\n                    _visibleCallback(false);\r\n\r\n                    // No turning back at this point (kind of)\r\n                    listRefreshNeeded = true;\r\n\r\n                    if (_settings.MessagesRestorePoints != YesNoAsk.No)\r\n                    {\r\n                        try\r\n                        {\r\n                            SystemRestore.BeginSysRestore(taskEntries.Count, true);\r\n                        }\r\n                        catch (Exception exception)\r\n                        {\r\n                            PremadeDialogs.GenericError(exception);\r\n                        }\r\n                    }\r\n\r\n                    if (_settings.ExternalEnable && _settings.ExternalPreCommands.IsNotEmpty())\r\n                    {\r\n                        LoadingDialog.ShowDialog(\r\n                            MessageBoxes.DefaultOwner, Localisable.LoadingDialogTitlePreUninstallCommands,\r\n                            controller => { RunExternalCommands(_settings.ExternalPreCommands, controller); });\r\n                    }\r\n\r\n                    var status = UninstallManager.CreateBulkUninstallTask(taskEntries, GetConfiguration(quiet));\r\n                    status.OneLoudLimit = _settings.UninstallConcurrentOneLoud;\r\n                    status.ConcurrentUninstallerCount = _settings.UninstallConcurrency\r\n                        ? _settings.UninstallConcurrentMaxCount\r\n                        : 1;\r\n                    status.Start();\r\n\r\n                    UninstallProgressWindow.ShowUninstallDialog(status, entries => SearchForAndRemoveJunk(entries, allUninstallerList));\r\n\r\n                    var junkRemoveTargetsQuery = from bulkUninstallEntry in status.AllUninstallersList\r\n                                                 where bulkUninstallEntry.CurrentStatus == UninstallStatus.Completed\r\n                                                       || bulkUninstallEntry.CurrentStatus == UninstallStatus.Invalid\r\n                                                       || (bulkUninstallEntry.CurrentStatus == UninstallStatus.Skipped\r\n                                                           && !bulkUninstallEntry.UninstallerEntry.RegKeyStillExists())\r\n                                                 select bulkUninstallEntry.UninstallerEntry;\r\n\r\n                    if (MessageBoxes.LookForJunkQuestion())\r\n                        SearchForAndRemoveJunk(junkRemoveTargetsQuery, allUninstallerList);\r\n\r\n                    if (_settings.ExternalEnable && _settings.ExternalPostCommands.IsNotEmpty())\r\n                    {\r\n                        LoadingDialog.ShowDialog(\r\n                            MessageBoxes.DefaultOwner, Localisable.LoadingDialogTitlePostUninstallCommands,\r\n                            controller => { RunExternalCommands(_settings.ExternalPostCommands, controller); });\r\n                    }\r\n                }\r\n                else\r\n                {\r\n                    MessageBoxes.NoUninstallersSelectedInfo();\r\n                }\r\n            }\r\n            catch (ObjectDisposedException ex)\r\n            {\r\n                // ODE at CreateHandle can be caused by closing main window in the middle of the process\r\n                // It gets thrown at ShowDialog, it's safe to cancel the process at these points\r\n                if (ex.TargetSite?.Name != \"CreateHandle\") throw;\r\n            }\r\n            finally\r\n            {\r\n                SystemRestore.EndSysRestore();\r\n                ReleaseUninstallLock();\r\n                _lockApplication(false);\r\n                _visibleCallback(true);\r\n                if (listRefreshNeeded)\r\n                    _initiateListRefresh();\r\n            }\r\n        }\r\n\r\n        public static IEnumerable<T> SortIntelligently<T>(IEnumerable<T> entries, Func<T, BulkUninstallEntry> entryGetter)\r\n        {\r\n            var query = from x in entries\r\n                        let item = entryGetter(x)\r\n                        orderby\r\n                            // For safety always run simple deletes last so that actual uninstallers have a chance to run\r\n                            item.UninstallerEntry.UninstallerKind == UninstallerType.SimpleDelete ascending,\r\n                            // Always run loud first so later user can have some time to watch cat pics\r\n                            item.IsSilentPossible ascending,\r\n                            // Updates usually get uninstalled by their parent uninstallers\r\n                            item.UninstallerEntry.IsUpdate ascending,\r\n                            // SysCmps and Protected usually get uninstalled by their parent, user-visible uninstallers\r\n                            item.UninstallerEntry.SystemComponent ascending,\r\n                            item.UninstallerEntry.IsProtected ascending,\r\n                            // Calculate number of digits (Floor of Log10 + 1) and divide it by 4 to create buckets of sizes\r\n                            Math.Round(Math.Floor(Math.Log10(item.UninstallerEntry.EstimatedSize.GetKbSize(true)) + 1) / 4) descending,\r\n                            // Prioritize Msi uninstallers because they tend to take the longest\r\n                            item.UninstallerEntry.UninstallerKind == UninstallerType.Msiexec descending,\r\n                            // Final sorting to get things deterministic\r\n                            item.UninstallerEntry.EstimatedSize.GetKbSize(true) descending\r\n                        select x;\r\n            return query;\r\n        }\r\n\r\n        public static IEnumerable<BulkUninstallEntry> SortIntelligently(List<BulkUninstallEntry> taskEntries)\r\n        {\r\n            return SortIntelligently(taskEntries, entry => entry);\r\n        }\r\n\r\n        public void AdvancedUninstall(IEnumerable<ApplicationUninstallerEntry> selectedUninstallers,\r\n            IEnumerable<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            if (!TryGetUninstallLock()) return;\r\n            var listRefreshNeeded = false;\r\n\r\n            try\r\n            {\r\n                _lockApplication(true);\r\n\r\n                listRefreshNeeded = SearchForAndRemoveJunk(selectedUninstallers, allUninstallers);\r\n            }\r\n            finally\r\n            {\r\n                ReleaseUninstallLock();\r\n                _lockApplication(false);\r\n                if (listRefreshNeeded)\r\n                    _initiateListRefresh();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Returns true if things were actually removed, false if user cancelled the operation.\r\n        /// </summary>\r\n        private bool SearchForAndRemoveJunk(IEnumerable<ApplicationUninstallerEntry> selectedUninstallers,\r\n            IEnumerable<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            var junk = new List<IJunkResult>();\r\n            var error = LoadingDialog.ShowDialog(MessageBoxes.DefaultOwner, Localisable.LoadingDialogTitleLookingForJunk,\r\n                dialogInterface =>\r\n                {\r\n                    var allValidUninstallers = allUninstallers.Where(y => y.RegKeyStillExists());\r\n\r\n                    dialogInterface.SetSubProgressVisible(true);\r\n                    junk.AddRange(JunkManager.FindJunk(selectedUninstallers, allValidUninstallers.ToList(), x =>\r\n                    {\r\n                        if (x.TotalCount <= 1)\r\n                        {\r\n                            // Don't update the title label to uninstaller name when there's only one uninstaller\r\n                            dialogInterface.SetMaximum(-1);\r\n                        }\r\n                        else\r\n                        {\r\n                            dialogInterface.SetMaximum(x.TotalCount);\r\n                            dialogInterface.SetProgress(x.CurrentCount, x.Message);\r\n                        }\r\n\r\n                        var inner = x.Inner;\r\n                        if (inner != null)\r\n                        {\r\n                            dialogInterface.SetSubMaximum(inner.TotalCount);\r\n                            dialogInterface.SetSubProgress(inner.CurrentCount, inner.Message);\r\n                        }\r\n                        else\r\n                        {\r\n                            dialogInterface.SetSubMaximum(-1);\r\n                            dialogInterface.SetSubProgress(0, string.Empty);\r\n                        }\r\n\r\n                        if (dialogInterface.Abort)\r\n                            throw new OperationCanceledException();\r\n                    }));\r\n                });\r\n\r\n            if (error != null)\r\n            {\r\n                PremadeDialogs.GenericError(error);\r\n                return false;\r\n            }\r\n\r\n            return ShowJunkWindow(junk);\r\n        }\r\n\r\n        private bool ShowJunkWindow(List<IJunkResult> junk)\r\n        {\r\n            if (!junk.Any(x => _settings.MessagesShowAllBadJunk || x.Confidence.GetRawConfidence() >= 0))\r\n            {\r\n                MessageBoxes.NoJunkFoundInfo();\r\n                return false;\r\n            }\r\n\r\n            using (var junkWindow = new JunkRemoveWindow(junk))\r\n            {\r\n                if (junkWindow.ShowDialog() != DialogResult.OK) return false;\r\n\r\n                var selectedJunk = junkWindow.SelectedJunk.ToList();\r\n\r\n                if (!CheckForRunningProcessesBeforeCleanup(selectedJunk)) return false;\r\n\r\n                //Removing the junk\r\n                LoadingDialog.ShowDialog(MessageBoxes.DefaultOwner, Localisable.LoadingDialogTitleRemovingJunk, controller =>\r\n                {\r\n                    var top = selectedJunk.Count;\r\n                    controller.SetMaximum(top);\r\n                    var itemsRemoved = 0; // current value\r\n\r\n                    var sortedJunk = from item in selectedJunk\r\n                                         // Run commands before deleting any files or reg keys to avoid missing files\r\n                                     orderby item is RunProcessJunk descending,\r\n                                     // Need to stop and unregister service before deleting its exe\r\n                                             item is StartupJunkNode descending\r\n                                     select item;\r\n\r\n                    foreach (var junkNode in sortedJunk)\r\n                    {\r\n                        controller.SetProgress(itemsRemoved++);\r\n\r\n                        if (_settings.AdvancedSimulate)\r\n                        {\r\n                            Thread.Sleep(100);\r\n                        }\r\n                        else\r\n                        {\r\n                            try\r\n                            {\r\n                                junkNode.Delete();\r\n                            }\r\n                            catch (Exception ex)\r\n                            {\r\n                                Console.WriteLine(\"Exception while removing junk: \" + ex);\r\n                            }\r\n                        }\r\n                    }\r\n                });\r\n\r\n                return true;\r\n            }\r\n        }\r\n\r\n        public void SearchForAndRemoveProgramFilesJunk(IEnumerable<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            if (!TryGetUninstallLock()) return;\r\n\r\n            try\r\n            {\r\n                _lockApplication(true);\r\n\r\n                var junk = new List<IJunkResult>();\r\n                var error = LoadingDialog.ShowDialog(null, Localisable.LoadingDialogTitleLookingForJunk,\r\n                    x => junk.AddRange(JunkManager.FindProgramFilesJunk(allUninstallers.Where(y => y.RegKeyStillExists()).ToList())));\r\n\r\n                if (error != null)\r\n                    PremadeDialogs.GenericError(error);\r\n                else\r\n                    ShowJunkWindow(junk);\r\n            }\r\n            catch (ObjectDisposedException) { }\r\n            finally\r\n            {\r\n                ReleaseUninstallLock();\r\n                _lockApplication(false);\r\n            }\r\n        }\r\n\r\n        public void UninstallUsingMsi(MsiUninstallModes mode,\r\n            IEnumerable<ApplicationUninstallerEntry> selectedUninstallers)\r\n        {\r\n            if (!TryGetUninstallLock()) return;\r\n            var listRefreshNeeded = false;\r\n\r\n            try\r\n            {\r\n                _lockApplication(true);\r\n\r\n                var results = selectedUninstallers.Take(2).ToList();\r\n\r\n                if (results.Count != 1)\r\n                {\r\n                    MessageBoxes.CanSelectOnlyOneItemInfo();\r\n                    return;\r\n                }\r\n\r\n                var selected = results.First();\r\n\r\n                if (!_settings.AdvancedDisableProtection && selected.IsProtected)\r\n                {\r\n                    MessageBoxes.ProtectedItemError(selected.DisplayName);\r\n                    return;\r\n                }\r\n\r\n                if (selected.BundleProviderKey.IsEmpty())\r\n                {\r\n                    MessageBoxes.UninstallMsiGuidMissing();\r\n                    return;\r\n                }\r\n\r\n                if (!CheckForRunningProcessesBeforeUninstall(new[] { selected }, true))\r\n                    return;\r\n\r\n                try\r\n                {\r\n                    selected.UninstallUsingMsi(mode, _settings.AdvancedSimulate);\r\n                    listRefreshNeeded = true;\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    PremadeDialogs.GenericError(ex);\r\n                }\r\n            }\r\n            finally\r\n            {\r\n                ReleaseUninstallLock();\r\n                _lockApplication(false);\r\n                if (listRefreshNeeded)\r\n                    _initiateListRefresh();\r\n            }\r\n        }\r\n\r\n        public void UninstallFromDirectory(IEnumerable<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            if (!TryGetUninstallLock()) return;\r\n            var listRefreshNeeded = false;\r\n\r\n            var applicationUninstallerEntries = allUninstallers as IList<ApplicationUninstallerEntry> ?? allUninstallers.ToList();\r\n\r\n            try\r\n            {\r\n                var result = MessageBoxes.SelectFolder(Localisable.UninstallFromDirectory_FolderBrowse);\r\n\r\n                if (result == null) return;\r\n\r\n                var items = new List<ApplicationUninstallerEntry>();\r\n                LoadingDialog.ShowDialog(MessageBoxes.DefaultOwner, Localisable.UninstallFromDirectory_ScanningTitle,\r\n                    _ => items.AddRange(DirectoryFactory.TryCreateFromDirectory(new DirectoryInfo(result), Array.Empty<string>())));\r\n\r\n                if (items.Count == 0)\r\n                    items.AddRange(applicationUninstallerEntries.Where(x => PathTools.PathsEqual(result, x.InstallLocation)));\r\n\r\n                if (items.Count == 0)\r\n                    MessageBoxes.UninstallFromDirectoryNothingFound();\r\n                else\r\n                {\r\n\r\n                    foreach (var item in items.ToList())\r\n                    {\r\n                        if (item.UninstallPossible && item.UninstallerKind != UninstallerType.SimpleDelete &&\r\n                            MessageBoxes.UninstallFromDirectoryUninstallerFound(item.DisplayName, item.UninstallString))\r\n                        {\r\n                            try { item.RunUninstaller(false, Settings.Default.AdvancedSimulate).WaitForExit(60000); }\r\n                            catch (Exception ex) { PremadeDialogs.GenericError(ex); }\r\n                            items.Remove(item);\r\n                            listRefreshNeeded = true;\r\n                        }\r\n                        else\r\n                        {\r\n                            var found = applicationUninstallerEntries.Where(\r\n                                x => PathTools.PathsEqual(item.InstallLocation, x.InstallLocation)).ToList();\r\n\r\n                            if (!found.Any()) continue;\r\n\r\n                            items.Remove(item);\r\n\r\n                            foreach (var entry in found)\r\n                            {\r\n                                if (entry.UninstallPossible && entry.UninstallerKind != UninstallerType.SimpleDelete &&\r\n                                    MessageBoxes.UninstallFromDirectoryUninstallerFound(entry.DisplayName, entry.UninstallString))\r\n                                {\r\n                                    try { item.RunUninstaller(false, Settings.Default.AdvancedSimulate).WaitForExit(60000); }\r\n                                    catch (Exception ex) { PremadeDialogs.GenericError(ex); }\r\n\r\n                                    listRefreshNeeded = true;\r\n                                }\r\n                                else\r\n                                    items.Add(entry);\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    AdvancedUninstall(items, applicationUninstallerEntries.Where(\r\n                        x => !items.Any(y => PathTools.PathsEqual(y.InstallLocation, x.InstallLocation))));\r\n                }\r\n            }\r\n            finally\r\n            {\r\n                ReleaseUninstallLock();\r\n                _lockApplication(false);\r\n                if (listRefreshNeeded)\r\n                    _initiateListRefresh();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Ask to self uninstall and do so if user agrees, else return and do nothing.\r\n        /// </summary>\r\n        internal void AskToSelfUninstall()\r\n        {\r\n            if (MessageBoxes.SelfUninstallQuestion())\r\n            {\r\n                if (!TryGetUninstallLock()) return;\r\n\r\n                try\r\n                {\r\n                    var fullPath = MessageBoxes.GetBundledFilePath(\"unins000.exe\");\r\n                    if (fullPath != null)\r\n                    {\r\n                        Process.Start(fullPath);\r\n                        Environment.Exit(0);\r\n                    }\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    PremadeDialogs.GenericError(ex);\r\n                }\r\n                finally\r\n                {\r\n                    ReleaseUninstallLock();\r\n                }\r\n            }\r\n        }\r\n\r\n        private BulkUninstallConfiguration GetConfiguration(bool quiet)\r\n        {\r\n            return new BulkUninstallConfiguration(_settings.AdvancedDisableProtection, quiet, _settings.AdvancedSimulate,\r\n                _settings.QuietAutoKillStuck, _settings.QuietRetryFailedOnce);\r\n        }\r\n\r\n        private void ReleaseUninstallLock()\r\n        {\r\n            Monitor.Exit(PublicUninstallLock);\r\n            Monitor.Exit(_uninstallLock);\r\n        }\r\n\r\n        private static void RunExternalCommands(string commands, LoadingDialogInterface controller)\r\n        {\r\n            var lines = commands.SplitNewlines(StringSplitOptions.RemoveEmptyEntries);\r\n            controller.SetMaximum(lines.Length);\r\n\r\n            for (var i = 0; i < lines.Length; i++)\r\n            {\r\n                controller.SetProgress(i);\r\n\r\n                var line = lines[i];\r\n                try\r\n                {\r\n                    var filename = ProcessTools.SeparateArgsFromCommand(line);\r\n                    filename.FileName = Path.GetFullPath(filename.FileName);\r\n                    if (!File.Exists(filename.FileName))\r\n                        throw new IOException(Localisable.Error_FileNotFound);\r\n                    filename.ToProcessStartInfo().StartAndWait();\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    MessageBox.Show(string.Format(Localisable.MessageBoxes_ExternalCommandFailed_Message, line)\r\n                                    + Localisable.MessageBoxes_Error_details + ex.Message,\r\n                        Localisable.MessageBoxes_ExternalCommandFailed_Title,\r\n                        MessageBoxButtons.OK, MessageBoxIcon.Error);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Attempt to get the lock and display error popup if the process fails.\r\n        /// </summary>\r\n        /// <returns>True if lock was succesfully acquired, otherwise false.</returns>\r\n        private bool TryGetUninstallLock()\r\n        {\r\n            if (Monitor.TryEnter(_uninstallLock))\r\n            {\r\n                Monitor.Enter(PublicUninstallLock);\r\n                return true;\r\n            }\r\n\r\n            MessageBoxes.UninstallAlreadyRunning();\r\n            return false;\r\n        }\r\n\r\n        public static ICollection<ApplicationUninstallerEntry> GetApplicationsFromDirectories(\r\n            IEnumerable<ApplicationUninstallerEntry> allUninstallers, ICollection<DirectoryInfo> results)\r\n        {\r\n            var output = new List<ApplicationUninstallerEntry>();\r\n            var processed = new List<DirectoryInfo>();\r\n            foreach (var dir in results.Distinct(PathTools.PathsEqual).OrderBy(x => x.FullName))\r\n            {\r\n                if (processed.Any(x => x.FullName.Contains(dir.FullName, StringComparison.InvariantCultureIgnoreCase)))\r\n                    continue;\r\n\r\n                processed.Add(dir);\r\n            }\r\n\r\n            var exceptions = allUninstallers.Where(x => x.InstallLocation != null).ToList();\r\n\r\n            var infoAdder = new InfoAdderManager();\r\n            foreach (var dir in processed)\r\n            {\r\n                var items = exceptions.Where(\r\n                    x => x.InstallLocation.Contains(dir.FullName, StringComparison.InvariantCultureIgnoreCase))\r\n                    .ToList();\r\n\r\n                if (items.Count > 0)\r\n                {\r\n                    output.AddRange(items);\r\n                    continue;\r\n                }\r\n\r\n                var res = DirectoryFactory.TryCreateFromDirectory(dir, exceptions).ToList();\r\n                if (res.Count == 0)\r\n                {\r\n                    MessageBox.Show(\r\n                        string.Format(Localisable.Uninstaller_GetApplicationsFromDirectories_NothingFound_Message,\r\n                            dir.FullName), Localisable.Uninstaller_GetApplicationsFromDirectories_NothingFound_Title,\r\n                        MessageBoxButtons.OK, MessageBoxIcon.Warning);\r\n                    continue;\r\n                }\r\n\r\n                foreach (var result in res)\r\n                {\r\n                    infoAdder.AddMissingInformation(result);\r\n                    output.Add(result);\r\n                }\r\n            }\r\n\r\n            return output;\r\n        }\r\n\r\n        public void Modify(IEnumerable<ApplicationUninstallerEntry> selectedUninstallers)\r\n        {\r\n            if (!TryGetUninstallLock()) return;\r\n            var listRefreshNeeded = false;\r\n\r\n            try\r\n            {\r\n                _lockApplication(true);\r\n\r\n                var results = selectedUninstallers.Take(2).ToList();\r\n\r\n                if (results.Count != 1)\r\n                {\r\n                    MessageBoxes.CanSelectOnlyOneItemInfo();\r\n                    return;\r\n                }\r\n\r\n                var selected = results.First();\r\n\r\n                if (!_settings.AdvancedDisableProtection && selected.IsProtected)\r\n                {\r\n                    MessageBoxes.ProtectedItemError(selected.DisplayName);\r\n                    return;\r\n                }\r\n\r\n                if (string.IsNullOrEmpty(selected.ModifyPath))\r\n                {\r\n                    MessageBoxes.ModifyCommandMissing();\r\n                    return;\r\n                }\r\n\r\n                if (!CheckForRunningProcessesBeforeUninstall(new[] { selected }, true))\r\n                    return;\r\n\r\n                try\r\n                {\r\n                    selected.Modify(_settings.AdvancedSimulate);\r\n                    listRefreshNeeded = true;\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    PremadeDialogs.GenericError(ex);\r\n                }\r\n            }\r\n            finally\r\n            {\r\n                ReleaseUninstallLock();\r\n                _lockApplication(false);\r\n                if (listRefreshNeeded)\r\n                    _initiateListRefresh();\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/ApplicationList/ApplicationListColors.cs",
    "content": "/*\n    Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Drawing;\n\nnamespace BulkCrapUninstaller.Functions.ApplicationList\n{\n    internal class ApplicationListColors\n    {\n        public static ApplicationListColors Normal = new(\n            Color.FromArgb(unchecked((int)0xffccffcc)), Color.FromArgb(unchecked((int)0xffbbddff)),\n            Color.FromArgb(unchecked((int)0xffE0E0E0)), Color.FromArgb(unchecked((int) 0xffffdbcd)),\n            Color.FromArgb(unchecked((int) 0xffe7cfff)), Color.FromArgb(unchecked((int)0xffa3ffff)));\n\n        public static ApplicationListColors ColorBlind = new(\n            Color.FromArgb(unchecked((int) 0xfff6382d)), Color.FromArgb(unchecked((int)0xfffc8d59)),\n            Color.FromArgb(unchecked((int) 0xff5189d3)), Color.FromArgb(unchecked((int)0xff91bfdb)),\n            Color.FromArgb(unchecked((int)0xfffee090)), Color.FromArgb(unchecked((int) 0xffc9dade)));\n\n        public ApplicationListColors(Color verifiedColor, Color unverifiedColor, Color invalidColor,\n            Color unregisteredColor, Color windowsFeatureColor, Color windowsStoreAppColor)\n        {\n            VerifiedColor = verifiedColor;\n            UnverifiedColor = unverifiedColor;\n            InvalidColor = invalidColor;\n            UnregisteredColor = unregisteredColor;\n            WindowsFeatureColor = windowsFeatureColor;\n            WindowsStoreAppColor = windowsStoreAppColor;\n        }\n\n        public Color VerifiedColor { get; }\n        public Color UnverifiedColor { get; }\n        public Color InvalidColor { get; }\n        public Color UnregisteredColor { get; }\n        public Color WindowsFeatureColor { get; }\n        public Color WindowsStoreAppColor { get; }\n    }\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/ApplicationList/ApplicationListConstants.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Drawing;\r\nusing BulkCrapUninstaller.Properties;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Functions.ApplicationList\r\n{\r\n    internal static class ApplicationListConstants\r\n    {\r\n        public static ApplicationListColors Colors => Settings.Default.MiscColorblind ? ApplicationListColors.ColorBlind : ApplicationListColors.Normal;\r\n\r\n        public static Color GetApplicationBackColor(ApplicationUninstallerEntry entry)\r\n        {\r\n            if (Settings.Default.AdvancedHighlightSpecial)\r\n            {\r\n                if (entry.UninstallerKind == UninstallerType.WindowsFeature)\r\n                    return Colors.WindowsFeatureColor;\r\n\r\n                if (entry.UninstallerKind == UninstallerType.StoreApp)\r\n                    return Colors.WindowsStoreAppColor;\r\n\r\n                if (entry.IsOrphaned)\r\n                    return Colors.UnregisteredColor;\r\n            }\r\n\r\n            if (!entry.IsValid && Settings.Default.AdvancedTestInvalid)\r\n                return Colors.InvalidColor;\r\n\r\n            if (Settings.Default.AdvancedTestCertificates)\r\n            {\r\n                var result = entry.IsCertificateValid(true);\r\n                if (result.HasValue)\r\n                    return result.Value\r\n                        ? Colors.VerifiedColor\r\n                        : Colors.UnverifiedColor;\r\n            }\r\n\r\n            return Color.Empty;\r\n        }\r\n\r\n        public static Color GetApplicationTreemapColor(ApplicationUninstallerEntry entry)\r\n        {\r\n            if (entry.UninstallerKind == UninstallerType.WindowsFeature)\r\n                return Colors.WindowsFeatureColor;\r\n\r\n            if (entry.UninstallerKind == UninstallerType.StoreApp)\r\n                return Colors.WindowsStoreAppColor;\r\n\r\n            if (entry.IsOrphaned)\r\n                return Colors.UnregisteredColor;\r\n\r\n            if (!entry.IsValid)\r\n                return Colors.InvalidColor;\r\n\r\n            if (Settings.Default.AdvancedTestCertificates)\r\n            {\r\n                var result = entry.IsCertificateValid(true);\r\n                if (result.HasValue)\r\n                    return result.Value\r\n                        ? Colors.VerifiedColor\r\n                        : Colors.UnverifiedColor;\r\n            }\r\n\r\n            return Color.White;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/ApplicationList/CertificateCache.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Security.Cryptography.X509Certificates;\r\nusing System.Xml.Serialization;\r\nusing Klocman.Tools;\r\n\r\nnamespace BulkCrapUninstaller.Functions.ApplicationList\r\n{\r\n    public sealed class CertCacheEntry\r\n    {\r\n        public bool Valid { get; set; }\r\n\r\n        [XmlIgnore]\r\n        public X509Certificate2 Cert { get; set; }\r\n        public byte[] CertData // ReadOnlySpan<byte> crashes XML serializer in new versions of .NET\r\n        {\r\n            get => Cert?.RawData;\r\n            set => Cert = value == null ? null : new X509Certificate2(value);\r\n        }\r\n    }\r\n\r\n    internal class CertificateCache\r\n    {\r\n        public string CacheFilename { get; }\r\n        private IDictionary<string, CertCacheEntry> _dictionaryCache;\r\n        private readonly object _cacheLock = new object();\r\n\r\n        public CertificateCache(string cacheFilename)\r\n        {\r\n            CacheFilename = cacheFilename ?? throw new ArgumentNullException(nameof(cacheFilename));\r\n        }\r\n\r\n        public void LoadCertificateCache()\r\n        {\r\n            lock (_cacheLock)\r\n            {\r\n                _dictionaryCache = null;\r\n                try\r\n                {\r\n                    if (File.Exists(CacheFilename))\r\n                    {\r\n                        _dictionaryCache = SerializationTools.DeserializeDictionary<string, CertCacheEntry>(CacheFilename);\r\n                        // Remove invalid entries in case the xml is corrupted\r\n                        _dictionaryCache?.Where(x => x.Value == null).ToList().ForEach(pair => _dictionaryCache.Remove(pair.Key));\r\n                    }\r\n                }\r\n                catch (SystemException e)\r\n                {\r\n                    Console.WriteLine(e);\r\n                    ClearChache();\r\n                }\r\n            }\r\n        }\r\n\r\n        public void SaveCertificateCache()\r\n        {\r\n            lock (_cacheLock)\r\n            {\r\n                if (_dictionaryCache == null || _dictionaryCache.Count == 0)\r\n                {\r\n                    ClearChache();\r\n                    return;\r\n                }\r\n\r\n                try\r\n                {\r\n                    SerializationTools.SerializeDictionary(_dictionaryCache, CacheFilename);\r\n                }\r\n                catch (SystemException e)\r\n                {\r\n                    Console.WriteLine(e);\r\n                    ClearChache();\r\n                }\r\n            }\r\n        }\r\n\r\n        public void ClearChache()\r\n        {\r\n            lock (_cacheLock)\r\n            {\r\n                _dictionaryCache = null;\r\n                try\r\n                {\r\n                    File.Delete(CacheFilename);\r\n                }\r\n                catch\r\n                {\r\n                    System.Threading.Thread.Sleep(50);\r\n                    File.Delete(CacheFilename);\r\n                }\r\n            }\r\n        }\r\n\r\n        public void SetItem(string id, X509Certificate2 cert, bool verified)\r\n        {\r\n            lock (_cacheLock)\r\n            {\r\n                if (!string.IsNullOrEmpty(id))\r\n                {\r\n                    if (_dictionaryCache == null) _dictionaryCache = new Dictionary<string, CertCacheEntry>();\r\n\r\n                    _dictionaryCache[id] = new CertCacheEntry { Cert = cert, Valid = verified };\r\n                }\r\n            }\r\n        }\r\n\r\n        public bool TryGetCachedItem(string id, out CertCacheEntry entry)\r\n        {\r\n            lock (_cacheLock)\r\n            {\r\n                if (_dictionaryCache == null || string.IsNullOrEmpty(id))\r\n                {\r\n                    entry = null;\r\n                    return false;\r\n                }\r\n\r\n                return _dictionaryCache.TryGetValue(id, out entry);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/ApplicationList/ListViewDelegates.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Extensions;\r\nusing Klocman.IO;\r\nusing Klocman.Resources;\r\nusing Klocman.Tools;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Functions.ApplicationList\r\n{\r\n    internal static class ListViewDelegates\r\n    {\r\n        internal static string AspectToStringConverter(object x)\r\n        {\r\n            return x is long l ? new FileSize(l).ToString() : string.Empty;\r\n        }\r\n\r\n        internal static string BoolToYesNoAspectConverter(object rowObject)\r\n        {\r\n            var result = rowObject as bool?;\r\n            return result.ToYesNo();\r\n        }\r\n\r\n        internal static object ColumnGuidAspectGetter(object rowObj)\r\n        {\r\n            if (rowObj is ApplicationUninstallerEntry entry)\r\n            {\r\n                var result = entry.BundleProviderKey;\r\n                if (!result.IsEmpty())\r\n                    return $\"{result:B}\".ToUpperInvariant();\r\n            }\r\n            return string.Empty;\r\n        }\r\n\r\n        internal static object ColumnGuidGroupKeyGetter(object rowObj)\r\n        {\r\n            if (rowObj is ApplicationUninstallerEntry entry)\r\n            {\r\n                var result = entry.BundleProviderKey;\r\n                if (result.Equals(Guid.Empty))\r\n                    return Localisable.GuidFound;\r\n            }\r\n            return Localisable.GuidMissing;\r\n        }\r\n\r\n        internal static object ColumnInstallLocationGroupKeyGetter(object rowObj)\r\n        {\r\n            var entry = rowObj as ApplicationUninstallerEntry;\r\n            return GetFuzzyDirectory(entry?.InstallLocation);\r\n        }\r\n\r\n        internal static object ColumnInstallSourceGroupKeyGetter(object rowObj)\r\n        {\r\n            var entry = rowObj as ApplicationUninstallerEntry;\r\n            return GetFuzzyDirectory(entry?.InstallSource);\r\n        }\r\n\r\n        internal static object ColumnPublisherGroupKeyGetter(object rowObj)\r\n        {\r\n            var entry = rowObj as ApplicationUninstallerEntry;\r\n            return string.IsNullOrEmpty(entry?.PublisherTrimmed) ? CommonStrings.Unknown : entry.PublisherTrimmed;\r\n        }\r\n\r\n        internal static object ColumnQuietUninstallStringGroupKeyGetter(object rowObj)\r\n        {\r\n            var entry = rowObj as ApplicationUninstallerEntry;\r\n            return GetFuzzyDirectory(entry?.QuietUninstallString);\r\n        }\r\n\r\n        internal static object ColumnSizeAspectGetter(object x)\r\n        {\r\n            if (x is ApplicationUninstallerEntry applicationUninstallerEntry)\r\n                return applicationUninstallerEntry.EstimatedSize.GetKbSize();\r\n            return (long)0;\r\n        }\r\n\r\n        internal static object ColumnUninstallStringGroupKeyGetter(object rowObj)\r\n        {\r\n            var entry = rowObj as ApplicationUninstallerEntry;\r\n            return GetFuzzyDirectory(entry?.UninstallString);\r\n        }\r\n\r\n        /// <exception cref=\"InvalidOperationException\">The source sequence is empty.</exception>\r\n        internal static object GetFirstCharGroupKeyGetter(object rowobject)\r\n        {\r\n            var entry = rowobject as ApplicationUninstallerEntry;\r\n            if (entry?.DisplayName == null)\r\n                return Localisable.Empty;\r\n\r\n            var character = entry.DisplayName.StripAccents().FirstOrDefault(x => !char.IsWhiteSpace(x));\r\n\r\n            return character.IsDefault() ? Localisable.Empty : char.ToUpperInvariant(character).ToString();\r\n        }\r\n\r\n        internal static object DisplayVersionGroupKeyGetter(object rowObject)\r\n        {\r\n            var entry = rowObject as ApplicationUninstallerEntry;\r\n            if (string.IsNullOrEmpty(entry?.DisplayVersion))\r\n                return CommonStrings.Unknown;\r\n\r\n            var dotIndex = entry.DisplayVersion.IndexOf('.');\r\n            return dotIndex > 0 ? entry.DisplayVersion.Substring(0, dotIndex) + \".x\" : entry.DisplayVersion;\r\n        }\r\n\r\n        internal static object ColumnSizeGroupKeyGetter(object rowObject)\r\n        {\r\n            return rowObject is not ApplicationUninstallerEntry entry ? 0L : entry.EstimatedSize.GetRoundedKbSize();\r\n        }\r\n\r\n        /// <summary>\r\n        ///  Convert path to a directory string usable for grouping\r\n        /// </summary>\r\n        private static string GetFuzzyDirectory(string fullCommand)\r\n        {\r\n            if (string.IsNullOrEmpty(fullCommand)) return Localisable.Empty;\r\n\r\n            if (fullCommand.StartsWith(\"msiexec\", StringComparison.OrdinalIgnoreCase)\r\n                || fullCommand.Contains(\"msiexec.exe\", StringComparison.OrdinalIgnoreCase))\r\n                return \"MsiExec\";\r\n\r\n            try\r\n            {\r\n                if (fullCommand.Contains('\\\\'))\r\n                {\r\n                    string strOut;\r\n                    try\r\n                    {\r\n                        strOut = ProcessTools.SeparateArgsFromCommand(fullCommand).FileName;\r\n                    }\r\n                    catch\r\n                    {\r\n                        strOut = fullCommand;\r\n                    }\r\n\r\n                    strOut = Path.GetDirectoryName(strOut);\r\n\r\n                    strOut = PathTools.GetPathUpToLevel(strOut, 1, false);\r\n                    if (strOut.IsNotEmpty())\r\n                    {\r\n                        return PathTools.PathToNormalCase(strOut); //Path.GetFullPath(strOut);\r\n                    }\r\n                }\r\n            }\r\n            catch\r\n            {\r\n                // Assume path is invalid\r\n            }\r\n            return Localisable.Empty;\r\n        }\r\n\r\n        private static readonly string UninstallStringTrimString = '\"' + Program.AssemblyLocation.FullName + '\\\\';\r\n\r\n        private static object CleanupUninstallString(string uninstallString)\r\n        {\r\n            if (uninstallString == null)\r\n                return string.Empty;\r\n\r\n            if (uninstallString.StartsWith(UninstallStringTrimString, StringComparison.OrdinalIgnoreCase))\r\n            {\r\n                var trimmed = uninstallString.Substring(UninstallStringTrimString.Length);\r\n                var closingQuote = trimmed.IndexOf('\"');\r\n                if (closingQuote >= 0)\r\n                {\r\n                    trimmed = trimmed.Remove(closingQuote, 1);\r\n                    return trimmed;\r\n                }\r\n            }\r\n            return uninstallString;\r\n        }\r\n\r\n        public static object ColumnUninstallStringGetter(object rowobject)\r\n        {\r\n            if (rowobject is ApplicationUninstallerEntry entry)\r\n                return CleanupUninstallString(entry.UninstallString);\r\n            return string.Empty;\r\n        }\r\n\r\n        public static object ColumnQuietUninstallStringGetter(object rowobject)\r\n        {\r\n            if (rowobject is ApplicationUninstallerEntry entry)\r\n                return CleanupUninstallString(entry.QuietUninstallString);\r\n            return string.Empty;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/ApplicationList/UninstallerListConfigurator.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Windows.Forms;\r\nusing BrightIdeasSoftware;\r\nusing BulkCrapUninstaller.Forms;\r\nusing BulkCrapUninstaller.Functions.Ratings;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Binding.Settings;\r\nusing Klocman.Extensions;\r\nusing Klocman.IO;\r\nusing Klocman.Localising;\r\nusing Klocman.Resources;\r\nusing UninstallTools;\r\nusing UninstallTools.Factory;\r\nusing UninstallTools.Lists;\r\n\r\nnamespace BulkCrapUninstaller.Functions.ApplicationList\r\n{\r\n    internal class UninstallerListConfigurator : IDisposable\r\n    {\r\n        private readonly FilterCondition _filteringFilterCondition = new() { FilterText = string.Empty };\r\n        private readonly TypedObjectListView<ApplicationUninstallerEntry> _listView;\r\n        private readonly MainWindow _reference;\r\n\r\n        private readonly Timer _updateThrottleTimer;\r\n\r\n        private readonly SettingBinder<Settings> _settings = Settings.Default.SettingBinder;\r\n\r\n        public UninstallerListConfigurator(MainWindow reference)\r\n        {\r\n            _reference = reference;\r\n            _listView = new TypedObjectListView<ApplicationUninstallerEntry>(reference.uninstallerObjectListView);\r\n\r\n            _reference.filterEditor1.TargetFilterCondition = _filteringFilterCondition;\r\n\r\n            _updateThrottleTimer = new Timer { Interval = 500 };\r\n            _updateThrottleTimer.Tick += (sender, args) =>\r\n            {\r\n                _updateThrottleTimer.Stop();\r\n                _listView.ListView.UpdateColumnFiltering();\r\n            };\r\n\r\n            SetupListView();\r\n\r\n            RatingManagerWrapper = new RatingManagerWrapper();\r\n            RatingManagerWrapper.InitializeRatingColumn(_reference.olvColumnRating, _reference.uninstallerObjectListView);\r\n            _reference.FormClosed += (x, y) => { RatingManagerWrapper.ProcessGatheredRatings(); };\r\n\r\n            _settings.Subscribe((sender, args) => RatingManagerWrapper.InitializeRatings(), x => x.MiscUserRatings, this);\r\n        }\r\n\r\n        public ITestEntry FilteringOverride { get; set; }\r\n\r\n        public RatingManagerWrapper RatingManagerWrapper { get; }\r\n\r\n        public void Dispose()\r\n        {\r\n            _updateThrottleTimer.Dispose();\r\n        }\r\n\r\n        [System.Diagnostics.CodeAnalysis.SuppressMessage(\"Naming\", \"CA1713:Events should not have 'Before' or 'After' prefix\", Justification = \"<Pending>\")]\r\n        public event EventHandler AfterFiltering;\r\n\r\n        /// <summary>\r\n        /// Return a filter equivalent to current basic filtering settings\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        public IEnumerable<Filter> GenerateEquivalentFilter()\r\n        {\r\n            var results = new List<Filter>();\r\n\r\n            if (string.IsNullOrEmpty(_filteringFilterCondition.FilterText))\r\n                results.Add(new Filter(\"Include all\", false, new FilterCondition(\"!\",\r\n                    ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsOrphaned))\r\n                { InvertResults = true }));\r\n            else\r\n                results.Add(new Filter(_filteringFilterCondition.FilterText, false,\r\n                    (FilterCondition)_filteringFilterCondition.Clone()));\r\n\r\n            if (_settings.Settings.FilterHideMicrosoft)\r\n                results.Add(new Filter(\"Published by Microsoft\", true, new FilterCondition(\"Microsoft\",\r\n                    ComparisonMethod.Contains, nameof(ApplicationUninstallerEntry.Publisher))));\r\n\r\n            if (!_settings.Settings.FilterShowStoreApps)\r\n                results.Add(new Filter(\"Store Apps\", true, new FilterCondition(nameof(UninstallerType.StoreApp),\r\n                    ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.UninstallerKind))));\r\n\r\n            if (!_settings.Settings.FilterShowWinFeatures)\r\n                results.Add(new Filter(\"Windows Features\", true,\r\n                    new FilterCondition(nameof(UninstallerType.WindowsFeature),\r\n                        ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.UninstallerKind))));\r\n\r\n            if (!_settings.Settings.AdvancedDisplayOrphans)\r\n                results.Add(new Filter(\"Orphaned apps\", true, new FilterCondition(true.ToString(),\r\n                    ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsOrphaned))));\r\n\r\n            if (!_settings.Settings.FilterShowProtected)\r\n                results.Add(new Filter(\"Protected apps\", true, new FilterCondition(true.ToString(),\r\n                    ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsProtected))));\r\n\r\n            if (!_settings.Settings.FilterShowSystemComponents)\r\n                results.Add(new Filter(\"System Components\", true, new FilterCondition(true.ToString(),\r\n                    ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.SystemComponent))));\r\n\r\n            if (!_settings.Settings.FilterShowUpdates)\r\n                results.Add(new Filter(\"Updates\", true, new FilterCondition(true.ToString(),\r\n                    ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsUpdate))));\r\n\r\n            // TODO Better detection, can lead to bugs down the line\r\n            if (!_settings.Settings.FilterShowTweaks)\r\n                results.Add(new Filter(\"Tweaks\", true, new FilterCondition(@\"\\Resources\\Scripts\\Tweak\",\r\n                    ComparisonMethod.Contains, nameof(ApplicationUninstallerEntry.UninstallString))));\r\n\r\n            return results;\r\n        }\r\n\r\n        private bool ListViewFilter(object obj)\r\n        {\r\n            if (obj is not ApplicationUninstallerEntry entry) return false;\r\n\r\n            if (FilteringOverride != null) return FilteringOverride.TestEntry(entry) == true;\r\n\r\n            if (_settings.Settings.FilterHideMicrosoft && !string.IsNullOrEmpty(entry.Publisher) &&\r\n                entry.Publisher.Contains(\"Microsoft\"))\r\n                return false;\r\n\r\n            if (!_settings.Settings.FilterShowStoreApps && entry.UninstallerKind == UninstallerType.StoreApp)\r\n                return false;\r\n\r\n            if (!_settings.Settings.FilterShowWinFeatures && entry.UninstallerKind == UninstallerType.WindowsFeature)\r\n                return false;\r\n\r\n            if (!_settings.Settings.AdvancedDisplayOrphans && entry.IsOrphaned) return false;\r\n\r\n            if (!_settings.Settings.FilterShowProtected && entry.IsProtected) return false;\r\n\r\n            if (!_settings.Settings.FilterShowSystemComponents && entry.SystemComponent) return false;\r\n\r\n            if (!_settings.Settings.FilterShowUpdates && entry.IsUpdate) return false;\r\n\r\n            if (entry.RatingId != null)\r\n            {\r\n                if (!_settings.Settings.FilterShowTweaks && entry.RatingId.StartsWith(\"tweak\", StringComparison.Ordinal))\r\n                    return false;\r\n            }\r\n\r\n            if (string.IsNullOrEmpty(_filteringFilterCondition.FilterText)) return true;\r\n\r\n            return _filteringFilterCondition.TestEntry(entry) == true;\r\n        }\r\n\r\n        public void SetupListView()\r\n        {\r\n            _reference.uninstallerObjectListView.VirtualMode = false;\r\n\r\n            _reference.olvColumnDisplayName.AspectName = RegistryFactory.RegistryNameDisplayName;\r\n            _reference.olvColumnDisplayName.GroupKeyGetter = ListViewDelegates.GetFirstCharGroupKeyGetter;\r\n\r\n            _reference.olvColumnStartup.AspectGetter = x =>\r\n            {\r\n                var obj = x as ApplicationUninstallerEntry;\r\n                return (obj?.HasStartups).ToYesNo();\r\n            };\r\n\r\n            _reference.olvColumnPublisher.AspectName = RegistryFactory.RegistryNamePublisher;\r\n            _reference.olvColumnPublisher.GroupKeyGetter = ListViewDelegates.ColumnPublisherGroupKeyGetter;\r\n\r\n            _reference.olvColumnDisplayVersion.AspectName = RegistryFactory.RegistryNameDisplayVersion;\r\n            _reference.olvColumnDisplayVersion.GroupKeyGetter = ListViewDelegates.DisplayVersionGroupKeyGetter;\r\n\r\n            _reference.olvColumnUninstallString.AspectGetter = ListViewDelegates.ColumnUninstallStringGetter;\r\n            _reference.olvColumnUninstallString.GroupKeyGetter = ListViewDelegates.ColumnUninstallStringGroupKeyGetter;\r\n\r\n            _reference.olvColumnQuietUninstallString.AspectGetter = ListViewDelegates.ColumnQuietUninstallStringGetter;\r\n            _reference.olvColumnQuietUninstallString.GroupKeyGetter = ListViewDelegates.ColumnQuietUninstallStringGroupKeyGetter;\r\n\r\n            _reference.olvColumnInstallDate.AspectGetter = x =>\r\n            {\r\n                var obj = x as ApplicationUninstallerEntry;\r\n                return obj?.InstallDate.Date ?? DateTime.MinValue;\r\n            };\r\n            //_reference.olvColumnInstallDate.AspectName = ApplicationUninstallerEntry.RegistryNameInstallDate;\r\n            _reference.olvColumnInstallDate.AspectToStringConverter = x =>\r\n            {\r\n                if (x is not DateTime time) return Localisable.Empty;\r\n                try\r\n                {\r\n                    return time.IsDefault() ? Localisable.Empty : time.ToShortDateString();\r\n                }\r\n                catch (SystemException)\r\n                {\r\n                    return Localisable.NotAvailable;\r\n                }\r\n            };\r\n\r\n            _reference.olvColumnGuid.AspectGetter = ListViewDelegates.ColumnGuidAspectGetter;\r\n            _reference.olvColumnGuid.GroupKeyGetter = ListViewDelegates.ColumnGuidGroupKeyGetter;\r\n\r\n            _reference.olvColumnSystemComponent.AspectName = RegistryFactory.RegistryNameSystemComponent;\r\n            _reference.olvColumnSystemComponent.AspectToStringConverter = ListViewDelegates.BoolToYesNoAspectConverter;\r\n            _reference.olvColumnSystemComponent.GroupKeyToTitleConverter = ListViewDelegates.BoolToYesNoAspectConverter;\r\n\r\n            _reference.olvColumnIs64.AspectGetter =\r\n                y => (y as ApplicationUninstallerEntry)?.Is64Bit.GetLocalisedName();\r\n\r\n            _reference.olvColumnProtected.AspectToStringConverter = ListViewDelegates.BoolToYesNoAspectConverter;\r\n            _reference.olvColumnProtected.GroupKeyToTitleConverter = ListViewDelegates.BoolToYesNoAspectConverter;\r\n\r\n            _reference.olvColumnInstallLocation.AspectName = RegistryFactory.RegistryNameInstallLocation;\r\n            _reference.olvColumnInstallLocation.GroupKeyGetter = ListViewDelegates.ColumnInstallLocationGroupKeyGetter;\r\n\r\n            _reference.olvColumnInstallSource.AspectName = RegistryFactory.RegistryNameInstallSource;\r\n            _reference.olvColumnInstallSource.GroupKeyGetter = ListViewDelegates.ColumnInstallSourceGroupKeyGetter;\r\n\r\n            _reference.olvColumnRegistryKeyName.AspectName = \"RegistryKeyName\";\r\n\r\n            _reference.olvColumnUninstallerKind.AspectGetter =\r\n                y => (y as ApplicationUninstallerEntry)?.UninstallerKind.GetLocalisedName();\r\n\r\n            _reference.olvColumnAbout.AspectName = \"AboutUrl\";\r\n            _reference.olvColumnAbout.GroupKeyGetter = x =>\r\n            {\r\n                var entry = x as ApplicationUninstallerEntry;\r\n                var aboutUri = entry?.GetAboutUri();\r\n                return aboutUri?.Host ?? Localisable.Empty;\r\n            };\r\n\r\n            _reference.olvColumnSize.TextAlign = HorizontalAlignment.Right;\r\n            _reference.olvColumnSize.AspectGetter = ListViewDelegates.ColumnSizeAspectGetter;\r\n            _reference.olvColumnSize.AspectToStringConverter = ListViewDelegates.AspectToStringConverter;\r\n            _reference.olvColumnSize.GroupKeyGetter = ListViewDelegates.ColumnSizeGroupKeyGetter;\r\n            _reference.olvColumnSize.GroupKeyToTitleConverter = x => x is long num and > 0 ? FileSize.GetUnitName(num) : CommonStrings.Unknown;\r\n\r\n            _reference.uninstallerObjectListView.PrimarySortColumn = _reference.olvColumnDisplayName;\r\n            _reference.uninstallerObjectListView.SecondarySortColumn = _reference.olvColumnPublisher;\r\n            _reference.uninstallerObjectListView.Sorting = SortOrder.Ascending;\r\n\r\n            _reference.uninstallerObjectListView.AdditionalFilter = new ModelFilter(ListViewFilter);\r\n            _reference.uninstallerObjectListView.UseFiltering = true;\r\n\r\n            _reference.uninstallerObjectListView.FormatRow += UninstallerObjectListView_FormatRow;\r\n\r\n            _listView.ListView.AfterSorting += (x, y) => { AfterFiltering?.Invoke(x, y); };\r\n        }\r\n\r\n        private void UninstallerObjectListView_FormatRow(object sender, FormatRowEventArgs e)\r\n        {\r\n            if (e.Model is not ApplicationUninstallerEntry entry) return;\r\n\r\n            var color = ApplicationListConstants.GetApplicationBackColor(entry);\r\n            if (!color.IsEmpty)\r\n                e.Item.BackColor = color;\r\n        }\r\n\r\n        public void UpdateColumnFiltering(bool anyUninstallers)\r\n        {\r\n            _listView.ListView.EmptyListMsg = anyUninstallers\r\n                ? Localisable.SearchNothingFoundMessage\r\n                : null;\r\n\r\n            _updateThrottleTimer.Stop();\r\n            _updateThrottleTimer.Start();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/ApplicationList/UninstallerListPostProcesser.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Linq;\r\nusing System.Security.Cryptography.X509Certificates;\r\nusing System.Threading;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Binding.Settings;\r\nusing Klocman.Events;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Functions.ApplicationList\r\n{\r\n    internal class UninstallerListPostProcesser : IDisposable\r\n    {\r\n        private readonly SettingBinder<Settings> _settings = Settings.Default.SettingBinder;\r\n        private bool _abortPostprocessingThread;\r\n        private Thread _finalizerThread;\r\n        private readonly Queue<ApplicationUninstallerEntry> _itemsToProcess = new();\r\n        private readonly List<object> _objectsToUpdate = new();\r\n        private readonly Action<IList> _updateItemsCallback;\r\n\r\n        /// <summary>\r\n        /// External lock to the uninstall system.\r\n        /// </summary>\r\n        internal object UninstallerFileLock { get; set; } = new();\r\n\r\n        private readonly CertificateCache _certificateCache;\r\n\r\n        public event EventHandler<CountingUpdateEventArgs> UninstallerPostprocessingProgressUpdate;\r\n\r\n        public UninstallerListPostProcesser(Action<IList> updateItemsCallback, CertificateCache certificateCache)\r\n        {\r\n            _updateItemsCallback = updateItemsCallback ?? throw new ArgumentNullException(nameof(updateItemsCallback));\r\n            _certificateCache = certificateCache;\r\n        }\r\n\r\n        public void AbortPostprocessingThread()\r\n        {\r\n            _abortPostprocessingThread = true;\r\n            lock (_itemsToProcess) _itemsToProcess.Clear();\r\n        }\r\n\r\n        public void StartProcessingThread(IEnumerable<ApplicationUninstallerEntry> itemsToProcess)\r\n        {\r\n            lock (_itemsToProcess)\r\n            {\r\n                foreach (var entry in itemsToProcess.Except(_itemsToProcess))\r\n                    _itemsToProcess.Enqueue(entry);\r\n            }\r\n\r\n            if (_finalizerThread == null || !_finalizerThread.IsAlive)\r\n            {\r\n                _finalizerThread = new Thread(UninstallerPostprocessingThread)\r\n                { Name = \"UninstallerPostprocessingThread\", IsBackground = true, Priority = ThreadPriority.Lowest };\r\n\r\n                _abortPostprocessingThread = false;\r\n\r\n                _finalizerThread.Start();\r\n            }\r\n        }\r\n\r\n        public void StopProcessingThread()\r\n        {\r\n            lock (_itemsToProcess)\r\n                _itemsToProcess.Clear();\r\n        }\r\n\r\n        private void UninstallerPostprocessingThread()\r\n        {\r\n            while (true)\r\n            {\r\n                int count;\r\n                ApplicationUninstallerEntry target = null;\r\n                lock (_itemsToProcess)\r\n                {\r\n                    count = _itemsToProcess.Count;\r\n                    if (count > 0) target = _itemsToProcess.Dequeue();\r\n                }\r\n\r\n                if (count == 0 || _abortPostprocessingThread)\r\n                {\r\n                    _finalizerThread = null;\r\n                    OnUninstallerPostprocessingProgressUpdate(new CountingUpdateEventArgs(0, 0, 0));\r\n                    return;\r\n                }\r\n\r\n                var sendTag = true;\r\n                if (_settings.Settings.AdvancedTestCertificates)\r\n                {\r\n                    lock (UninstallerFileLock)\r\n                    {\r\n                        var cert = GetCert(target);\r\n                        sendTag = cert != null;\r\n                    }\r\n                }\r\n\r\n                var countingUpdateEventArgs = new CountingUpdateEventArgs(0, count, 0);\r\n                if (sendTag) countingUpdateEventArgs.Tag = target;\r\n\r\n                OnUninstallerPostprocessingProgressUpdate(countingUpdateEventArgs);\r\n            }\r\n        }\r\n\r\n        private X509Certificate2 GetCert(ApplicationUninstallerEntry uninstaller)\r\n        {\r\n            var id = uninstaller.GetCacheId();\r\n\r\n            if (_certificateCache.TryGetCachedItem(id, out var cachedCert))\r\n            {\r\n                uninstaller.SetCertificate(cachedCert.Cert, cachedCert.Valid);\r\n                return cachedCert.Cert;\r\n            }\r\n            else\r\n            {\r\n                var cert = uninstaller.GetCertificate();\r\n                _certificateCache.SetItem(id, cert, uninstaller.IsCertificateValid(true) == true);\r\n                return cert;\r\n            }\r\n        }\r\n\r\n        public void Dispose()\r\n        {\r\n            StopProcessingThread();\r\n        }\r\n\r\n        protected virtual void OnUninstallerPostprocessingProgressUpdate(CountingUpdateEventArgs y)\r\n        {\r\n            lock (_objectsToUpdate)\r\n            {\r\n                if (y.Tag != null)\r\n                    _objectsToUpdate.Add(y.Tag);\r\n\r\n                if (y.Value == y.Maximum || _objectsToUpdate.Count % 35 == 0)\r\n                {\r\n                    try\r\n                    {\r\n                        _updateItemsCallback(_objectsToUpdate.ToList());\r\n                    }\r\n                    catch (SystemException ex)\r\n                    {\r\n                        // The list view got disposed before we could update it.\r\n                        AbortPostprocessingThread();\r\n                        Debug.Fail(ex.Message, ex.StackTrace);\r\n                    }\r\n                    _objectsToUpdate.Clear();\r\n                }\r\n            }\r\n\r\n            UninstallerPostprocessingProgressUpdate?.Invoke(this, y);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/ApplicationList/UninstallerListViewUpdater.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Drawing;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing BrightIdeasSoftware;\r\nusing BulkCrapUninstaller.Forms;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Binding.Settings;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.IO;\r\nusing Klocman.Tools;\r\nusing UninstallTools;\r\nusing UninstallTools.Controls;\r\nusing UninstallTools.Factory;\r\nusing UninstallTools.Startup;\r\n\r\nnamespace BulkCrapUninstaller.Functions.ApplicationList\r\n{\r\n    internal class UninstallerListViewUpdater : IDisposable\r\n    {\r\n        private readonly UninstallerIconGetter _iconGetter;\r\n        private readonly TypedObjectListView<ApplicationUninstallerEntry> _listView;\r\n        private readonly MainWindow _reference;\r\n        readonly SettingBinder<Settings> _settings = Settings.Default.SettingBinder;\r\n        private IEnumerable<ApplicationUninstallerEntry> _allUninstallers;\r\n        private bool _firstRefresh = true;\r\n        private bool _listRefreshIsRunning;\r\n\r\n        internal UninstallerListViewUpdater(MainWindow reference)\r\n        {\r\n            _reference = reference;\r\n            _listView = new TypedObjectListView<ApplicationUninstallerEntry>(reference.uninstallerObjectListView);\r\n\r\n            _iconGetter = new UninstallerIconGetter();\r\n            _reference.olvColumnDisplayName.ImageGetter = _iconGetter.ColumnImageGetter;\r\n\r\n            // Refresh items marked as invalid after corresponding setting change\r\n            _settings.Subscribe((x, y) =>\r\n            {\r\n                if (CheckIsAppDisposed()) return;\r\n\r\n                if (!_firstRefresh)\r\n                    _listView.ListView.RefreshObjects(AllUninstallers.Where(u => !u.IsValid).ToList());\r\n            }, x => x.AdvancedTestInvalid, this);\r\n\r\n            // Refresh items marked as orphans after corresponding setting change\r\n            _settings.Subscribe((x, y) =>\r\n            {\r\n                if (CheckIsAppDisposed()) return;\r\n\r\n                if (!_firstRefresh)\r\n                    _listView.ListView.UpdateColumnFiltering();\r\n            }, x => x.AdvancedDisplayOrphans, this);\r\n\r\n        }\r\n\r\n        public IEnumerable<ApplicationUninstallerEntry> AllUninstallers\r\n        {\r\n            get { return _allUninstallers ?? Enumerable.Empty<ApplicationUninstallerEntry>(); }\r\n            private set { _allUninstallers = value; }\r\n        }\r\n\r\n        public IEnumerable<ApplicationUninstallerEntry> FilteredUninstallers\r\n            =>\r\n                CheckIsAppDisposed()\r\n                    ? AllUninstallers\r\n                    : _listView.ListView.FilteredObjects.Cast<ApplicationUninstallerEntry>();\r\n\r\n        public bool FirstRefreshCompleted => !_firstRefresh;\r\n\r\n        public bool ListRefreshIsRunning\r\n        {\r\n            get { return _listRefreshIsRunning; }\r\n            private set\r\n            {\r\n                if (value != _listRefreshIsRunning)\r\n                {\r\n                    _listRefreshIsRunning = value;\r\n                    ListRefreshIsRunningChanged?.Invoke(this, new ListRefreshEventArgs(value, !FirstRefreshCompleted));\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Faster than SelectedUninstallers.Count()\r\n        /// </summary>\r\n        public int SelectedUninstallerCount => _listView.ListView.CheckBoxes\r\n            ? _listView.CheckedObjects.Count\r\n            : _listView.SelectedObjects.Count;\r\n\r\n        public IEnumerable<ApplicationUninstallerEntry> SelectedUninstallers => _listView.ListView.CheckBoxes\r\n            ? _listView.ListView.GetAllObjectsWithMappedCheckState(CheckState.Checked).Cast<ApplicationUninstallerEntry>().Where(e => e != null && AllUninstallers.Contains(e))\r\n            : _listView.SelectedObjects.Where(e => e != null);\r\n\r\n        public void Dispose()\r\n        {\r\n            _iconGetter?.Dispose();\r\n        }\r\n\r\n        public event EventHandler<ListRefreshEventArgs> ListRefreshIsRunningChanged;\r\n\r\n        private void ChangeSelection(IEnumerable<ApplicationUninstallerEntry> newSelection)\r\n        {\r\n            _listView.ListView.BeginUpdate();\r\n\r\n            var items = newSelection.ToList();\r\n            if (_listView.ListView.CheckBoxes)\r\n                _listView.ListView.CheckedObjects = items;\r\n            _listView.ListView.SelectedObjects = items;\r\n\r\n            _listView.ListView.EndUpdate();\r\n            _listView.ListView.Refresh();\r\n            _listView.ListView.Focus();\r\n        }\r\n\r\n        public bool CheckIsAppDisposed()\r\n        {\r\n            return _listView.ListView.IsDisposed || _listView.ListView.Disposing\r\n                   || _reference.IsDisposed || _reference.Disposing;\r\n        }\r\n\r\n        public void DeselectAllItems(object sender, EventArgs e)\r\n        {\r\n            var selected = _listView.ListView.CheckBoxes ? _listView.CheckedObjects : _listView.SelectedObjects;\r\n            var subtracted = selected.Except(FilteredUninstallers);\r\n            ChangeSelection(subtracted);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get total size of all visible uninstallers.\r\n        /// </summary>\r\n        public FileSize GetFilteredSize()\r\n        {\r\n            return FilteredUninstallers.Select(x => x.EstimatedSize).DefaultIfEmpty(FileSize.Empty)\r\n                .Aggregate((size1, size2) => size1 + size2);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get total size of selected uninstallers\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        public FileSize GetSelectedSize()\r\n        {\r\n            return SelectedUninstallers.Select(x => x.EstimatedSize).DefaultIfEmpty(FileSize.Empty)\r\n                .Aggregate((size1, size2) => size1 + size2);\r\n        }\r\n\r\n        public void InitiateListRefresh()\r\n        {\r\n            if (ListRefreshIsRunning || CheckIsAppDisposed())\r\n                return;\r\n\r\n            ListRefreshIsRunning = true;\r\n\r\n            _reference.LockApplication(true);\r\n\r\n            if (CheckIsAppDisposed())\r\n                return;\r\n\r\n            _listView.ListView.SuspendLayout();\r\n            _listView.ListView.BeginUpdate();\r\n\r\n            var dialog = LoadingDialog.Show(_reference, Localisable.LoadingDialogTitlePopulatingList,\r\n                ListRefreshThread, new Point(-35, -35), ContentAlignment.BottomRight);\r\n\r\n            dialog.FormClosed += OnRefreshFinished;\r\n\r\n            void OnRefreshFinished(object sender, FormClosedEventArgs args)\r\n            {\r\n                dialog.FormClosed -= OnRefreshFinished;\r\n\r\n                if (dialog.Error != null)\r\n                {\r\n                    if (dialog.Error is OperationCanceledException)\r\n                        return;\r\n                    throw new InvalidOperationException(\"Uncaught exception in ListRefreshThread\", dialog.Error);\r\n                }\r\n\r\n                if (CheckIsAppDisposed() || args.CloseReason == CloseReason.WindowsShutDown ||\r\n                    args.CloseReason == CloseReason.ApplicationExitCall ||\r\n                    args.CloseReason == CloseReason.FormOwnerClosing ||\r\n                    args.CloseReason == CloseReason.TaskManagerClosing) return;\r\n\r\n                var oldList = _listView.ListView.SmallImageList;\r\n                _listView.ListView.SmallImageList = _iconGetter.IconList;\r\n                oldList?.Dispose();\r\n\r\n                _listView.ListView.SetObjects(AllUninstallers);\r\n\r\n                try\r\n                {\r\n                    _listView.ListView.EndUpdate();\r\n                    _listView.ListView.ResumeLayout();\r\n                    _listView.ListView.Focus();\r\n                }\r\n                catch (ObjectDisposedException)\r\n                {\r\n                }\r\n\r\n                _reference.LockApplication(false);\r\n\r\n                // Run events\r\n                ListRefreshIsRunning = false;\r\n\r\n                // Set after running events\r\n                _firstRefresh = false;\r\n            }\r\n\r\n            dialog.StartWork();\r\n        }\r\n\r\n        public void InvertSelectedItems(object sender, EventArgs e)\r\n        {\r\n            var selected = _listView.ListView.CheckBoxes ? _listView.CheckedObjects : _listView.SelectedObjects;\r\n            var inverted = FilteredUninstallers.Except(selected);\r\n            ChangeSelection(inverted);\r\n        }\r\n\r\n        private void ListRefreshThread(LoadingDialogInterface dialogInterface)\r\n        {\r\n            dialogInterface.SetSubProgressVisible(true);\r\n            var progressMax = 0;\r\n            var uninstallerEntries = ApplicationUninstallerFactory.GetUninstallerEntries(x =>\r\n            {\r\n                progressMax = x.TotalCount + 1;\r\n                dialogInterface.SetMaximum(progressMax);\r\n                dialogInterface.SetProgress(x.CurrentCount, x.Message);\r\n\r\n                var inner = x.Inner;\r\n                if (inner != null)\r\n                {\r\n                    dialogInterface.SetSubMaximum(inner.TotalCount);\r\n                    dialogInterface.SetSubProgress(inner.CurrentCount, inner.Message);\r\n                }\r\n                else\r\n                {\r\n                    dialogInterface.SetSubMaximum(-1);\r\n                    dialogInterface.SetSubProgress(0, string.Empty);\r\n                }\r\n\r\n                if (dialogInterface.Abort)\r\n                    throw new OperationCanceledException();\r\n            });\r\n\r\n            dialogInterface.SetProgress(progressMax, Localisable.Progress_Finishing, true);\r\n            dialogInterface.SetSubMaximum(2);\r\n            dialogInterface.SetSubProgress(0, string.Empty);\r\n\r\n            if (!string.IsNullOrEmpty(Program.InstalledRegistryKeyName))\r\n                uninstallerEntries.RemoveAll(\r\n                    x => PathTools.PathsEqual(x.RegistryKeyName, Program.InstalledRegistryKeyName));\r\n\r\n            AllUninstallers = uninstallerEntries;\r\n\r\n            dialogInterface.SetSubProgress(1, Localisable.Progress_Finishing_Icons);\r\n            try\r\n            {\r\n                _iconGetter.UpdateIconList(AllUninstallers);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n            }\r\n\r\n            dialogInterface.SetSubProgressVisible(false);\r\n\r\n            // Fixes loading gettings stuck on finalizing if main window is minimized\r\n            _reference.SafeInvoke(() =>\r\n            {\r\n                if (_reference.WindowState == FormWindowState.Minimized)\r\n                    _reference.WindowState = FormWindowState.Normal;\r\n            });\r\n        }\r\n\r\n        internal void ReassignStartupEntries(bool refreshListView, IEnumerable<StartupEntryBase> items)\r\n        {\r\n            ApplicationUninstallerFactory.AttachStartupEntries(AllUninstallers, items);\r\n\r\n            if (refreshListView)\r\n                RefreshList();\r\n        }\r\n\r\n        public void RefreshList()\r\n        {\r\n            if (CheckIsAppDisposed())\r\n                return;\r\n\r\n            _listView.ListView.UpdateColumnFiltering();\r\n            //_listView.ListView.BuildList(true); No need, UpdateColumnFiltering already does this\r\n        }\r\n\r\n        public void SelectAllItems(object sender, EventArgs e)\r\n        {\r\n            var selected = _listView.ListView.CheckBoxes ? _listView.CheckedObjects : _listView.SelectedObjects;\r\n            var added = selected.Union(FilteredUninstallers);\r\n            ChangeSelection(added);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Select first item starting with the keycode.\r\n        /// If keycode leads to a valid selection true is returned. Otherwise, if there is nothing relevant to select false is\r\n        /// returned.\r\n        /// </summary>\r\n        public bool SelectItemFromKeystroke(Keys keyCode)\r\n        {\r\n            var keyName = keyCode.ToLetterOrNumberString();\r\n\r\n            if (keyName != null)\r\n            {\r\n                var selectedObj =\r\n                    FilteredUninstallers.FirstOrDefault(\r\n                        x => x.DisplayName.StartsWith(keyName, StringComparison.InvariantCultureIgnoreCase));\r\n\r\n                _listView.ListView.DeselectAll();\r\n\r\n                if (selectedObj != null)\r\n                {\r\n                    _listView.ListView.SelectObject(selectedObj, true);\r\n                    _listView.ListView.EnsureModelVisible(selectedObj);\r\n\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        }\r\n\r\n        public sealed class ListRefreshEventArgs : EventArgs\r\n        {\r\n            public ListRefreshEventArgs(bool refreshIsRunning, bool firstRefresh)\r\n            {\r\n                RefreshIsRunning = refreshIsRunning;\r\n                FirstRefresh = firstRefresh;\r\n            }\r\n\r\n            public bool FirstRefresh { get; }\r\n\r\n            public bool RefreshIsRunning { get; }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/MessageBoxes.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Drawing;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman;\r\nusing Klocman.Forms;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Localising;\r\nusing Klocman.Tools;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Functions\r\n{\r\n    internal static class MessageBoxes\r\n    {\r\n        public enum PressedButton\r\n        {\r\n            Cancel,\r\n            Yes,\r\n            No\r\n        }\r\n\r\n        public static Form DefaultOwner { get; set; }\r\n\r\n        public static void RatingsDisabled()\r\n        {\r\n            MessageBox.Show(DefaultOwner,\r\n                Localisable.MessageBoxes_RatingsDisabled_Message,\r\n                Localisable.MessageBoxes_RatingErrorTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning);\r\n        }\r\n\r\n        public static void RatingUnavailable()\r\n        {\r\n            MessageBox.Show(DefaultOwner,\r\n                Localisable.MessageBoxes_RatingUnavailable_Message,\r\n                Localisable.MessageBoxes_RatingErrorTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning);\r\n        }\r\n\r\n        internal static CustomMessageBox.PressedButton AskToSubmitFeedback()\r\n        {\r\n            return CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_Title_Submit_feedback,\r\n                    Localisable.MessageBoxes_AskToSubmitFeedback_Message,\r\n                    Localisable.MessageBoxes_AskToSubmitFeedback_Details,\r\n                    SystemIcons.Question, Buttons.ButtonRate, Buttons.ButtonSubmit, Buttons.ButtonClose));\r\n        }\r\n\r\n        internal static PressedButton BackupFailedQuestion(string exMessage, Form owner)\r\n        {\r\n            switch (\r\n                CustomMessageBox.ShowDialog(owner ?? DefaultOwner,\r\n                    new CmbBasicSettings(Localisable.MessageBoxes_Title_Leftover_removal,\r\n                        Localisable.MessageBoxes_BackupFailedQuestion_Message,\r\n                        Localisable.MessageBoxes_BackupFailedQuestion_Details + exMessage,\r\n                        SystemIcons.Warning, Buttons.ButtonContinue, Buttons.ButtonCancel)))\r\n            {\r\n                case CustomMessageBox.PressedButton.Middle:\r\n                    return PressedButton.Yes;\r\n                default:\r\n                    return PressedButton.Cancel;\r\n            }\r\n        }\r\n\r\n        internal static PressedButton BackupRegistryQuestion(Form owner)\r\n        {\r\n            var check = new CmbCheckboxSettings(Localisable.MessageBoxes_RememberChoiceCheckbox)\r\n            { DisableRightButton = true };\r\n            switch (\r\n                CustomMessageBox.ShowDialog(owner ?? DefaultOwner,\r\n                    new CmbBasicSettings(Localisable.MessageBoxes_Title_Leftover_removal,\r\n                        Localisable.MessageBoxes_BackupRegistryQuestion_Message,\r\n                        Localisable.MessageBoxes_BackupRegistryQuestion_Details,\r\n                        SystemIcons.Question, Buttons.ButtonCreate, Buttons.ButtonDontCreate, Buttons.ButtonCancel),\r\n                    check))\r\n            {\r\n                case CustomMessageBox.PressedButton.Left:\r\n                    if (check.Result == true)\r\n                        Settings.Default.BackupLeftovers = YesNoAsk.Yes;\r\n                    return PressedButton.Yes;\r\n\r\n                case CustomMessageBox.PressedButton.Middle:\r\n                    if (check.Result == true)\r\n                        Settings.Default.BackupLeftovers = YesNoAsk.No;\r\n                    return PressedButton.No;\r\n\r\n                default:\r\n                    return PressedButton.Cancel;\r\n            }\r\n        }\r\n\r\n        internal static void CanSelectOnlyOneItemInfo()\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_CanSelectOnlyOneItemInfo_Title,\r\n                    Localisable.MessageBoxes_CanSelectOnlyOneItemInfo_Message,\r\n                    Localisable.MessageBoxes_CanSelectOnlyOneItemInfo_Details,\r\n                    SystemIcons.Warning, Buttons.ButtonOk));\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Used when sorted uninstall task hits the first quiet uninstaller.\r\n        /// </summary>\r\n        internal static CustomMessageBox CanWalkAwayInfo(Form owner)\r\n        {\r\n            return CustomMessageBox.Show(owner, new CmbBasicSettings(Localisable.MessageBoxes_CanWalkAwayInfo_Title,\r\n                Localisable.MessageBoxes_CanWalkAwayInfo_Message,\r\n                Localisable.MessageBoxes_CanWalkAwayInfo_Details,\r\n                SystemIcons.Information, Buttons.ButtonOk)\r\n            { StartPosition = FormStartPosition.CenterParent, AlwaysOnTop = true });\r\n        }\r\n\r\n        internal static bool ConfirmLowConfidenceQuestion(Form owner)\r\n        {\r\n            return CustomMessageBox.ShowDialog(owner ?? DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_Title_Junk_Leftover_removal,\r\n                    Localisable.MessageBoxes_ConfirmLowConfidenceQuestion_Message,\r\n                    Localisable.MessageBoxes_ConfirmLowConfidenceQuestion_Details,\r\n                    SystemIcons.Warning, Buttons.ButtonYes, Buttons.ButtonCancel)) ==\r\n                   CustomMessageBox.PressedButton.Middle;\r\n        }\r\n\r\n        internal static bool DeleteRegKeysConfirmation(string[] affectedKeyNames)\r\n        {\r\n            return CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_DeleteRegKeysConfirmation_Title,\r\n                    Localisable.MessageBoxes_DeleteRegKeysConfirmation_Message,\r\n                    string.Format(CultureInfo.InvariantCulture, Localisable.MessageBoxes_DeleteRegKeysConfirmation_Details,\r\n                        string.Join(\"\\n\", affectedKeyNames)),\r\n                    SystemIcons.Question, Buttons.ButtonRemove, Buttons.ButtonCancel)) ==\r\n                   CustomMessageBox.PressedButton.Middle;\r\n        }\r\n\r\n        internal static void ExportFailed(string exMessage, Form owner)\r\n        {\r\n            CustomMessageBox.ShowDialog(owner ?? DefaultOwner, new CmbBasicSettings(Localisable.MessageBoxes_ExportFailed_Title,\r\n                Localisable.MessageBoxes_ExportFailed_Message,\r\n                Localisable.MessageBoxes_ExportFailed_Details + Localisable.MessageBoxes_Error_details + exMessage,\r\n                SystemIcons.Error, Buttons.ButtonOk));\r\n        }\r\n\r\n        internal static string GetSystemRestoreDescription(int count)\r\n        {\r\n            return string.Format(CultureInfo.InvariantCulture, Localisable.MessageBoxes_GetSystemRestoreDescription, count);\r\n        }\r\n\r\n        internal static void InvalidNewEntryName()\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_Title_Rename_uninstaller,\r\n                    Localisable.MessageBoxes_InvalidNewEntryName_Message,\r\n                    string.Format(CultureInfo.InvariantCulture, Localisable.MessageBoxes_InvalidNewEntryName_Details,\r\n                        string.Join(\" \", StringTools.InvalidPathChars.Select(x => x.ToString()).ToArray())),\r\n                    SystemIcons.Warning, Buttons.ButtonOk));\r\n        }\r\n\r\n        /// <summary>\r\n        ///     True if user wants to look for junk\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        internal static bool LookForJunkQuestion()\r\n        {\r\n            switch (Settings.Default.MessagesRemoveJunk)\r\n            {\r\n                case YesNoAsk.Yes:\r\n                    return true;\r\n                case YesNoAsk.No:\r\n                    return false;\r\n            }\r\n\r\n            var check = new CmbCheckboxSettings(Localisable.MessageBoxes_RememberChoiceCheckbox);\r\n            var result =\r\n                CustomMessageBox.ShowDialog(DefaultOwner,\r\n                    new CmbBasicSettings(Localisable.MessageBoxes_Title_Junk_Leftover_removal,\r\n                        Localisable.MessageBoxes_LookForJunkQuestion_Message,\r\n                        Localisable.MessageBoxes_LookForJunkQuestion_Details,\r\n                        SystemIcons.Question, Buttons.ButtonYes, Buttons.ButtonNo), check);\r\n\r\n            if (check.Result.HasValue && check.Result.Value)\r\n                Settings.Default.MessagesRemoveJunk = result == CustomMessageBox.PressedButton.Middle\r\n                    ? YesNoAsk.Yes\r\n                    : YesNoAsk.No;\r\n\r\n            return result == CustomMessageBox.PressedButton.Middle;\r\n        }\r\n\r\n        internal static void NoJunkFoundInfo()\r\n        {\r\n            // If automatically searching for junk do not show this message\r\n            if (Settings.Default.MessagesRemoveJunk == YesNoAsk.Yes)\r\n                return;\r\n\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_Title_Leftover_removal,\r\n                    Localisable.MessageBoxes_NoJunkFoundInfo_Message,\r\n                    Localisable.MessageBoxes_NoJunkFoundInfo_Details,\r\n                    SystemIcons.Information, Buttons.ButtonOk));\r\n        }\r\n\r\n        internal static void NoNetworkConnected()\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_NoNetworkConnected_Open_online_content,\r\n                    Localisable.MessageBoxes_NoNetworkConnected_Message,\r\n                    Localisable.MessageBoxes_NoNetworkConnected_Details,\r\n                    SystemIcons.Error, Buttons.ButtonOk));\r\n        }\r\n\r\n        internal static void NothingToCopy()\r\n        {\r\n            MessageBox.Show(\r\n                Localisable.MessageBoxes_NothingToCopy_Message,\r\n                Localisable.MessageBoxes_Title_Copy_to_clipboard, MessageBoxButtons.OK, MessageBoxIcon.Warning);\r\n        }\r\n\r\n        internal static void NoUninstallersSelectedInfo()\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_NoUninstallersSelectedInfo_Title,\r\n                    Localisable.MessageBoxes_NoUninstallersSelectedInfo_Message,\r\n                    Localisable.MessageBoxes_NoUninstallersSelectedInfo_Details,\r\n                    SystemIcons.Warning, Buttons.ButtonOk));\r\n        }\r\n\r\n        internal static bool OpenDirectoriesMessageBox(int sourceDirCount)\r\n        {\r\n            if (sourceDirCount <= 0)\r\n            {\r\n                MessageBox.Show(Localisable.MessageBoxes_OpenDirectories_NoDirsToOpen,\r\n                    Localisable.MessageBoxes_Title_Open_directories,\r\n                    MessageBoxButtons.OK,\r\n                    MessageBoxIcon.Information);\r\n                return false;\r\n            }\r\n\r\n            return (sourceDirCount == 1) || (MessageBox.Show(\r\n                string.Format(CultureInfo.CurrentCulture, Localisable.MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple, sourceDirCount),\r\n                Localisable.MessageBoxes_Title_Open_directories, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.Cancel);\r\n        }\r\n\r\n        internal static void OpenDirectoryError(Exception e)\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_Title_Open_directories,\r\n                    Localisable.MessageBoxes_OpenDirectoryError_Message,\r\n                    Localisable.MessageBoxes_Error_details + e.Message, SystemIcons.Error, Buttons.ButtonOk));\r\n        }\r\n\r\n        internal static void OpenUninstallListError(string exMessage)\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_Title_Open_Uninstall_List,\r\n                    Localisable.MessageBoxes_OpenUninstallListError_Message,\r\n                    exMessage, SystemIcons.Error, Buttons.ButtonClose));\r\n        }\r\n\r\n        internal static PressedButton OpenUninstallListQuestion()\r\n        {\r\n            switch (\r\n                CustomMessageBox.ShowDialog(DefaultOwner,\r\n                    new CmbBasicSettings(Localisable.MessageBoxes_Title_Open_Uninstall_List,\r\n                        Localisable.MessageBoxes_OpenUninstallListQuestion_Message,\r\n                        Localisable.MessageBoxes_OpenUninstallListQuestion_Details,\r\n                        SystemIcons.Question, Buttons.ButtonKeep, Buttons.ButtonClear, Buttons.ButtonCancel)))\r\n            {\r\n                case CustomMessageBox.PressedButton.Left:\r\n                    return PressedButton.Yes;\r\n                case CustomMessageBox.PressedButton.Middle:\r\n                    return PressedButton.No;\r\n                default:\r\n                    return PressedButton.Cancel;\r\n            }\r\n        }\r\n\r\n        internal static void OpenUrlError(Exception e)\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner, new CmbBasicSettings(Localisable.MessageBoxes_Title_Open_urls,\r\n                Localisable.MessageBoxes_OpenUrlError_Message,\r\n                Localisable.MessageBoxes_Error_details + e.Message, SystemIcons.Error, Buttons.ButtonOk));\r\n        }\r\n\r\n        internal static bool OpenUrlsMessageBox(int sourceDirCount)\r\n        {\r\n            if (sourceDirCount <= 0)\r\n            {\r\n                MessageBox.Show(Localisable.MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title,\r\n                    Localisable.MessageBoxes_Title_Open_urls, MessageBoxButtons.OK,\r\n                    MessageBoxIcon.Information);\r\n                return false;\r\n            }\r\n\r\n            return (sourceDirCount == 1) || (MessageBox.Show(\r\n                string.Format(CultureInfo.CurrentCulture, Localisable.MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message, sourceDirCount),\r\n                Localisable.MessageBoxes_Title_Open_urls, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.Cancel);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Returns false if user wants to cancel\r\n        /// </summary>\r\n        internal static void ProtectedItemError(string affectedKeyName)\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_Title_Modify_protected_items,\r\n                    Localisable.MessageBoxes_ProtectedItemError_Message,\r\n                    string.Format(CultureInfo.InvariantCulture, Localisable.MessageBoxes_ProtectedItemError_Details, affectedKeyName),\r\n                    SystemIcons.Error, Buttons.ButtonOk));\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Returns false if user wants to cancel\r\n        /// </summary>\r\n        internal static PressedButton ProtectedItemsWarningQuestion(string[] affectedKeyNames)\r\n        {\r\n            if (!affectedKeyNames.Any())\r\n                return PressedButton.Yes;\r\n\r\n            switch (\r\n                CustomMessageBox.ShowDialog(DefaultOwner,\r\n                    new CmbBasicSettings(Localisable.MessageBoxes_Title_Modify_protected_items,\r\n                        Localisable.MessageBoxes_ProtectedItemsWarningQuestion_Message,\r\n                        string.Format(CultureInfo.InvariantCulture, Localisable.MessageBoxes_ProtectedItemsWarningQuestion_Details,\r\n                            string.Join(\"\\n\", affectedKeyNames)),\r\n                        SystemIcons.Warning, Buttons.ButtonRemove, Buttons.ButtonCancel)))\r\n            {\r\n                case CustomMessageBox.PressedButton.Middle:\r\n                    return PressedButton.Yes;\r\n\r\n                default:\r\n                    return PressedButton.Cancel;\r\n            }\r\n        }\r\n\r\n        internal static PressedButton QuietUninstallersNotAvailableQuestion(string[] nonQuiet)\r\n        {\r\n            if (!Settings.Default.MessagesAskRemoveLoudItems)\r\n                return PressedButton.Yes;\r\n\r\n            var check = new CmbCheckboxSettings(Localisable.MessageBoxes_RememberChoiceCheckbox)\r\n            {\r\n                DisableRightButton = true,\r\n                DisableMiddleButton = true\r\n            };\r\n            var result =\r\n                CustomMessageBox.ShowDialog(DefaultOwner,\r\n                    new CmbBasicSettings(Localisable.MessageBoxes_Title_Quiet_uninstall,\r\n                        Localisable.MessageBoxes_QuietUninstallersNotAvailableQuestion_Message,\r\n                        string.Format(CultureInfo.InvariantCulture, Localisable.MessageBoxes_QuietUninstallersNotAvailableQuestion_Details,\r\n                            string.Join(\"\\n\", nonQuiet)),\r\n                        SystemIcons.Question, Buttons.ButtonUseLoud, Buttons.ButtonRemove, Buttons.ButtonCancel), check);\r\n\r\n            switch (result)\r\n            {\r\n                case CustomMessageBox.PressedButton.Left:\r\n                    if (check.Result.HasValue && check.Result.Value)\r\n                        Settings.Default.MessagesAskRemoveLoudItems = false;\r\n                    return PressedButton.Yes;\r\n                case CustomMessageBox.PressedButton.Middle:\r\n                    return PressedButton.No;\r\n                default:\r\n                    return PressedButton.Cancel;\r\n            }\r\n        }\r\n\r\n        internal static PressedButton ResetSettingsConfirmation()\r\n        {\r\n            switch (\r\n                CustomMessageBox.ShowDialog(DefaultOwner,\r\n                    new CmbBasicSettings(Localisable.MessageBoxes_Title_Restore_default_settings,\r\n                        Localisable.MessageBoxes_ResetSettingsConfirmation_Message,\r\n                        Localisable.MessageBoxes_ResetSettingsConfirmation_Details,\r\n                        SystemIcons.Warning, Buttons.ButtonReset, Buttons.ButtonCancel)))\r\n            {\r\n                case CustomMessageBox.PressedButton.Middle:\r\n                    return PressedButton.Yes;\r\n\r\n                default:\r\n                    return PressedButton.Cancel;\r\n            }\r\n        }\r\n\r\n        internal static bool RestartNeededForSettingChangeQuestion()\r\n        {\r\n            var result = CustomMessageBox.ShowDialog(DefaultOwner, new CmbBasicSettings(\r\n                Localisable.MessageBoxes_RestartNeededForSettingChangeQuestion_Title,\r\n                Localisable.MessageBoxes_RestartNeededForSettingChangeQuestion_Message,\r\n                Localisable.MessageBoxes_RestartNeededForSettingChangeQuestion_Details,\r\n                SystemIcons.Question, Buttons.ButtonYes, Buttons.ButtonNo));\r\n            return result == CustomMessageBox.PressedButton.Middle;\r\n        }\r\n\r\n        internal static void SaveUninstallListError(string exMessage)\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_Title_Save_Uninstall_List,\r\n                    Localisable.MessageBoxes_SaveUninstallListError_Message,\r\n                    exMessage, SystemIcons.Error, Buttons.ButtonClose));\r\n        }\r\n\r\n        internal static void SearchOnlineError(Exception e)\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner, new CmbBasicSettings(Localisable.MessageBoxes_Title_Search_online,\r\n                Localisable.MessageBoxes_SearchOnlineError_Message,\r\n                Localisable.MessageBoxes_Error_details + e.Message, SystemIcons.Error, Buttons.ButtonOk));\r\n        }\r\n\r\n        internal static PressedButton SearchOnlineMessageBox(int sourceDirCount)\r\n        {\r\n            if (sourceDirCount <= 0)\r\n            {\r\n                MessageBox.Show(Localisable.MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message,\r\n                    Localisable.MessageBoxes_Title_Search_online, MessageBoxButtons.OK,\r\n                    MessageBoxIcon.Information);\r\n                return PressedButton.Cancel;\r\n            }\r\n\r\n            if (sourceDirCount == 1)\r\n                return PressedButton.Yes;\r\n\r\n            switch (MessageBox.Show(\r\n                string.Format(CultureInfo.CurrentCulture, Localisable.MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple,\r\n                    sourceDirCount),\r\n                Localisable.MessageBoxes_Title_Open_directories, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning))\r\n            {\r\n                case DialogResult.OK:\r\n                    return PressedButton.Yes;\r\n\r\n                default:\r\n                    return PressedButton.Cancel;\r\n            }\r\n        }\r\n\r\n        internal static bool SelfUninstallQuestion()\r\n        {\r\n            return CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_SelfUninstallQuestion_Title,\r\n                    Localisable.MessageBoxes_SelfUninstallQuestion_Message,\r\n                    Localisable.MessageBoxes_SelfUninstallQuestion_Details,\r\n                    SystemIcons.Question, Buttons.ButtonUninstall, Buttons.ButtonCancel)) ==\r\n                   CustomMessageBox.PressedButton.Middle;\r\n        }\r\n\r\n        internal static PressedButton SysRestoreBeginQuestion()\r\n        {\r\n            switch (Settings.Default.MessagesRestorePoints)\r\n            {\r\n                case YesNoAsk.Yes:\r\n                    return PressedButton.Yes;\r\n                case YesNoAsk.No:\r\n                    return PressedButton.No;\r\n            }\r\n\r\n            var check = new CmbCheckboxSettings(Localisable.MessageBoxes_RememberChoiceCheckbox)\r\n            {\r\n                DisableRightButton = true\r\n            };\r\n            switch (\r\n                CustomMessageBox.ShowDialog(DefaultOwner,\r\n                    new CmbBasicSettings(Localisable.MessageBoxes_Title_Create_restore_point,\r\n                        Localisable.MessageBoxes_SysRestoreBeginQuestion_Message,\r\n                        Localisable.MessageBoxes_SysRestoreBeginQuestion_Details,\r\n                        SystemIcons.Question, Buttons.ButtonCreate, Buttons.ButtonDontCreate, Buttons.ButtonCancel),\r\n                    check))\r\n            {\r\n                case CustomMessageBox.PressedButton.Left:\r\n                    if (check.Result.HasValue && check.Result.Value)\r\n                        Settings.Default.MessagesRestorePoints = YesNoAsk.Yes;\r\n                    return PressedButton.Yes;\r\n\r\n                case CustomMessageBox.PressedButton.Middle:\r\n                    if (check.Result.HasValue && check.Result.Value)\r\n                        Settings.Default.MessagesRestorePoints = YesNoAsk.No;\r\n                    return PressedButton.No;\r\n\r\n                default:\r\n                    return PressedButton.Cancel;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Returns true if user wants to continue even though system restore failed\r\n        /// </summary>\r\n        internal static PressedButton SysRestoreContinueAfterError(string exMessage)\r\n        {\r\n            switch (\r\n                CustomMessageBox.ShowDialog(DefaultOwner,\r\n                    new CmbBasicSettings(Localisable.MessageBoxes_Title_Create_restore_point,\r\n                        Localisable.MessageBoxes_SysRestoreContinueAfterError_Message,\r\n                        Localisable.MessageBoxes_SysRestoreContinueAfterError_Details +\r\n                        Localisable.MessageBoxes_Error_details + exMessage,\r\n                        SystemIcons.Warning, Buttons.ButtonContinue, Buttons.ButtonCancel)))\r\n            {\r\n                case CustomMessageBox.PressedButton.Middle:\r\n                    return PressedButton.Yes;\r\n\r\n                default:\r\n                    return PressedButton.Cancel;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Yes if the task should be killed,\r\n        ///     No if the process should continue without killing the task and\r\n        ///     Cancel if the skip should be aborted.\r\n        /// </summary>\r\n        internal static CustomMessageBox TaskSkipCurrentKillTaskQuestion(Form parent)\r\n        {\r\n            return CustomMessageBox.Show(parent, new CmbBasicSettings(Localisable.MessageBoxes_TaskSkip_Title,\r\n                Localisable.MessageBoxes_TaskSkip_Message, Localisable.MessageBoxes_TaskSkip_Details,\r\n                SystemIcons.Question, Buttons.ButtonTerminate, Buttons.ButtonSkip, Buttons.ButtonCancel));\r\n        }\r\n\r\n        internal static PressedButton TaskStopConfirmation(Form ownerForm)\r\n        {\r\n            switch (\r\n                CustomMessageBox.ShowDialog(ownerForm,\r\n                    new CmbBasicSettings(Localisable.MessageBoxes_TaskStopConfirmation_Title,\r\n                        Localisable.MessageBoxes_TaskStopConfirmation_Message,\r\n                        Localisable.MessageBoxes_TaskStopConfirmation_Details,\r\n                        SystemIcons.Question, Buttons.ButtonStop, Buttons.ButtonCancel)))\r\n            {\r\n                case CustomMessageBox.PressedButton.Middle:\r\n                    return PressedButton.Yes;\r\n\r\n                default:\r\n                    return PressedButton.Cancel;\r\n            }\r\n        }\r\n\r\n        internal static void UninstallAlreadyRunning()\r\n        {\r\n            PremadeDialogs.GenericError(Localisable.MessageBoxes_UninstallAlreadyRunning_Message);\r\n        }\r\n\r\n        internal static void UninstallMsiGuidMissing()\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_UninstallMsiGuidMissing_Title,\r\n                    Localisable.MessageBoxes_UninstallMsiGuidMissing_Message,\r\n                    Localisable.MessageBoxes_UninstallMsiGuidMissing_Details, SystemIcons.Warning, Buttons.ButtonOk));\r\n        }\r\n\r\n        internal static void ModifyCommandMissing()\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_ModifyCommandMissing_Title,\r\n                    Localisable.MessageBoxes_ModifyCommandMissing_Message,\r\n                    Localisable.MessageBoxes_ModifyCommandMissing_Details, SystemIcons.Warning, Buttons.ButtonOk));\r\n        }\r\n\r\n        internal static bool UpdateAskToDownload(Version latestVersion)\r\n        {\r\n            if (latestVersion == null) throw new ArgumentNullException(nameof(latestVersion));\r\n\r\n            return CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_Title_Search_for_updates,\r\n                    string.Format(CultureInfo.CurrentCulture, Localisable.MessageBoxes_UpdateAskToDownload_Message, latestVersion),\r\n            //      string.Format(CultureInfo.CurrentCulture, Localisable.MessageBoxes_UpdateAskToDownload_Details, string.Join(\"\\n- \", changes)),\r\n                    string.Format(CultureInfo.CurrentCulture, \"Do you want to open the download page to get the latest version of BCUninstaller?\"), //todo localize\r\n                    SystemIcons.Information, Buttons.ButtonYes, Buttons.ButtonNo)) == CustomMessageBox.PressedButton.Middle;\r\n        }\r\n\r\n        internal static void UpdateFailed(string errorMessage)\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_Title_Search_for_updates,\r\n                    Localisable.MessageBoxes_UpdateFailed_Message,\r\n                    Localisable.MessageBoxes_UpdateFailed_Details + Localisable.MessageBoxes_Error_details +\r\n                    errorMessage,\r\n                    SystemIcons.Error, Buttons.ButtonClose));\r\n        }\r\n\r\n        internal static void UpdateUptodate()\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_Title_Search_for_updates,\r\n                    Localisable.MessageBoxes_UpdateUptodate_Message,\r\n                    Localisable.MessageBoxes_UpdateUptodate_Details,\r\n                    SystemIcons.Information, Buttons.ButtonClose));\r\n        }\r\n\r\n        internal static void ForceRunUninstallFailedError(Form owner, IEnumerable<string> failed)\r\n        {\r\n            CustomMessageBox.ShowDialog(owner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_ForceRunUninstallFailedError_Title,\r\n                    Localisable.MessageBoxes_ForceRunUninstallFailedError_Header,\r\n                    string.Format(CultureInfo.InvariantCulture, Localisable.MessageBoxes_ForceRunUninstallFailedError_Message,\r\n                        string.Join(\"\\n\", failed.ToArray())),\r\n                    SystemIcons.Error, Buttons.ButtonClose));\r\n        }\r\n\r\n        //public static void Net4MissingInfo()\r\n        //{\r\n        //    CustomMessageBox.ShowDialog(DefaultOwner,\r\n        //        new CmbBasicSettings(Localisable.MessageBoxes_Net4Missing_Title,\r\n        //            Localisable.MessageBoxes_Net4Missing_Message,\r\n        //            Localisable.MessageBoxes_Net4Missing_Details, SystemIcons.Warning, Buttons.ButtonOk));\r\n        //}\r\n\r\n        public static void DisplayHelp()\r\n        {\r\n            var path = GetBundledFilePath(Resources.HelpFilename);\r\n            if (path != null) PremadeDialogs.StartProcessSafely(path);\r\n        }\r\n\r\n        public static void DisplayLicense()\r\n        {\r\n            var path = GetBundledFilePath(Resources.LicenceFilename);\r\n            if (path != null) PremadeDialogs.StartProcessSafely(path);\r\n        }\r\n\r\n        public static void DisplayPrivacyPolicy()\r\n        {\r\n            var path = GetBundledFilePath(Resources.PrivacyPolicyFilename);\r\n            if (path != null) PremadeDialogs.StartProcessSafely(path);\r\n        }\r\n\r\n        public static string GetBundledFilePath(string filename)\r\n        {\r\n            var path = Path.Combine(Program.AssemblyLocation.FullName, filename);\r\n            if (!File.Exists(path))\r\n            {\r\n                path = Path.Combine(Program.AssemblyLocation.FullName, \"..\", filename);\r\n                if (!File.Exists(path))\r\n                {\r\n                    MessageBox.Show(\"Could not find file \" + filename);\r\n                    path = null;\r\n                }\r\n            }\r\n\r\n            return path;\r\n        }\r\n\r\n        public static bool AskToRetryFailedQuietAsLoud(Form owner, IEnumerable<string> failedNames)\r\n        {\r\n            return CustomMessageBox.ShowDialog(owner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_AskToRetryFailedQuietAsLoud_Title,\r\n                    Localisable.MessageBoxes_AskToRetryFailedQuietAsLoud_Header,\r\n                    string.Format(CultureInfo.InvariantCulture, \"{0}\\n\\n{1}\", Localisable.MessageBoxes_AskToRetryFailedQuietAsLoud_Details,\r\n                        string.Join(\"\\n\", failedNames.OrderBy(x => x).ToArray())),\r\n                    SystemIcons.Question, Buttons.ButtonYes, Buttons.ButtonNo)) == CustomMessageBox.PressedButton.Middle;\r\n        }\r\n\r\n        public static void UninstallFromDirectoryNothingFound()\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_UninstallFromDirectory_Title,\r\n                    Localisable.MessageBoxes_UninstallFromDirectoryNothingFound_Message,\r\n                    Localisable.MessageBoxes_UninstallFromDirectoryNothingFound_Details,\r\n                    SystemIcons.Information, Buttons.ButtonOk));\r\n        }\r\n\r\n        public static bool UninstallFromDirectoryUninstallerFound(string displayName, string uninstallString)\r\n        {\r\n            return CustomMessageBox.ShowDialog(DefaultOwner,\r\n                new CmbBasicSettings(Localisable.MessageBoxes_UninstallFromDirectory_Title,\r\n                    string.Format(Localisable.MessageBoxes_UninstallFromDirectoryUninstallerFound_Message, displayName),\r\n                    Localisable.MessageBoxes_UninstallFromDirectoryUninstallerFound_Details + \"\\n\\n\" + uninstallString,\r\n                    SystemIcons.Information, Buttons.ButtonUninstall, Buttons.ButtonSkip)) == CustomMessageBox.PressedButton.Middle;\r\n        }\r\n\r\n        public static PressedButton AskToSaveUninstallList()\r\n        {\r\n            switch (CustomMessageBox.ShowDialog(DefaultOwner,\r\n                    new CmbBasicSettings(Localisable.MessageBoxes_AskToSaveUninstallList_Title,\r\n                        Localisable.MessageBoxes_AskToSaveUninstallList_Message,\r\n                        Localisable.MessageBoxes_AskToSaveUninstallList_Details,\r\n                        SystemIcons.Question, Buttons.ButtonYes, Buttons.ButtonNo, Buttons.ButtonCancel)))\r\n            {\r\n                case CustomMessageBox.PressedButton.Right:\r\n                    return PressedButton.Yes;\r\n\r\n                case CustomMessageBox.PressedButton.Middle:\r\n                    return PressedButton.No;\r\n\r\n                default:\r\n                    return PressedButton.Cancel;\r\n            }\r\n        }\r\n\r\n        public static string SelectFolder(string title)\r\n        {\r\n            try\r\n            {\r\n                var dialog = new FolderBrowserDialog\r\n                {\r\n                    AutoUpgradeEnabled = true,\r\n                    Description = title,\r\n                    UseDescriptionForTitle = true,\r\n                };\r\n\r\n                return dialog.ShowDialog() == DialogResult.OK ? dialog.SelectedPath : null;\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                Console.WriteLine(e);\r\n\r\n                var dialog = new FolderBrowserDialog\r\n                {\r\n                    RootFolder = Environment.SpecialFolder.Desktop,\r\n                    Description = title,\r\n                    ShowNewFolderButton = false\r\n                };\r\n\r\n                return dialog.ShowDialog() == DialogResult.OK ? dialog.SelectedPath : null;\r\n            }\r\n        }\r\n\r\n        public static void CantRenameUninstallerKind(string displayName, UninstallerType uninstallerKind)\r\n        {\r\n            CustomMessageBox.ShowDialog(DefaultOwner, new CmbBasicSettings(Localisable.MessageBoxes_Title_Rename_uninstaller,\r\n                                                                           string.Format(Localisable.MessageBoxes_CantRenameUninstallerKind_Title, displayName),\r\n                                                                           string.Format(Localisable.MessageBoxes_CantRenameUninstallerKind_Details, uninstallerKind.GetLocalisedName()),\r\n                                                                           SystemIcons.Error, Buttons.ButtonOk));\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Ratings/RatingEntry.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing BulkCrapUninstaller.Properties;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Ratings\r\n{\r\n    public struct RatingEntry : IEquatable<RatingEntry>\r\n    {\r\n        public override int GetHashCode()\r\n        {\r\n            unchecked\r\n            {\r\n                return (AverageRating.GetHashCode() * 397) ^ MyRating.GetHashCode();\r\n            }\r\n        }\r\n\r\n        public string ApplicationName { get; set; }\r\n        public int? AverageRating { get; set; }\r\n        public int? MyRating { get; set; }\r\n        public bool IsEmpty => ApplicationName == null && !HasValue;\r\n        public bool HasValue => AverageRating.HasValue || MyRating.HasValue;\r\n        public static RatingEntry Empty { get; } = default(RatingEntry);\r\n\r\n        public static RatingEntry NotAvailable { get; } = new()\r\n        {\r\n            AverageRating = null,\r\n            MyRating = null,\r\n            ApplicationName = Localisable.NotAvailable\r\n        };\r\n\r\n        public bool Equals(RatingEntry other)\r\n        {\r\n            return AverageRating == other.AverageRating && MyRating == other.MyRating && ApplicationName == other.ApplicationName;\r\n        }\r\n\r\n        public override bool Equals(object obj)\r\n        {\r\n            if (ReferenceEquals(null, obj)) return false;\r\n            return obj is RatingEntry entry && Equals(entry);\r\n        }\r\n\r\n        public static bool operator ==(RatingEntry left, RatingEntry right)\r\n        {\r\n            return left.Equals(right);\r\n        }\r\n\r\n        public static bool operator !=(RatingEntry left, RatingEntry right)\r\n        {\r\n            return !left.Equals(right);\r\n        }\r\n\r\n        public static UninstallerRating ToRating(int value)\r\n        {\r\n            if (value <= ((int)UninstallerRating.Bad + (int)UninstallerRating.Neutral) / 2)\r\n                return UninstallerRating.Bad;\r\n            if (value >= ((int)UninstallerRating.Good + (int)UninstallerRating.Neutral) / 2)\r\n                return UninstallerRating.Good;\r\n\r\n            return UninstallerRating.Neutral;\r\n        }\r\n\r\n        public override string ToString()\r\n        {\r\n            return string.Format(Localisable.RatingEntry_ToString,\r\n                AverageRating.HasValue ? ToRating(AverageRating.Value) : UninstallerRating.Unknown,\r\n                MyRating.HasValue ? ToRating(MyRating.Value) : UninstallerRating.Unknown);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Ratings/RatingManagerWrapper.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Drawing;\r\nusing System.Globalization;\r\nusing System.Linq;\r\nusing System.Threading;\r\nusing System.Windows.Forms;\r\nusing BrightIdeasSoftware;\r\nusing BulkCrapUninstaller.Forms;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Binding.Settings;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Resources;\r\nusing Klocman.Tools;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Ratings\r\n{\r\n    internal class RatingManagerWrapper\r\n    {\r\n        private readonly UninstallerRatingManager _ratingManager = new(Settings.Default.MiscUserId);\r\n\r\n\r\n        private readonly SettingBinder<Settings> _settings = Settings.Default.SettingBinder;\r\n        \r\n        /// <summary>\r\n        /// Upload or discard user ratings based on current settings.\r\n        /// </summary>\r\n        public void ProcessGatheredRatings()\r\n        {\r\n            if (_settings.Settings.MiscUserRatings)\r\n            {\r\n                new Thread(() =>\r\n                {\r\n                    try\r\n                    {\r\n                        _ratingManager.UploadRatings();\r\n                    }\r\n                    catch\r\n                    {\r\n                        //TODO: Handle this better?\r\n                    }\r\n                    try\r\n                    {\r\n                        _ratingManager.SerializeCache(Program.AssemblyLocation);\r\n                    }\r\n                    catch\r\n                    {\r\n                        FlushRatings();\r\n                    }\r\n                })\r\n                { IsBackground = false, Name = \"ProcessRatingDispose_Thread\" }.Start();\r\n            }\r\n            else\r\n            {\r\n                FlushRatings();\r\n            }\r\n        }\r\n\r\n        public void InitializeRatingColumn(OLVColumn olvColumnRating, ObjectListView uninstallerObjectListView)\r\n        {\r\n            olvColumnRating.AspectGetter = x =>\r\n            {\r\n                var entry = x as ApplicationUninstallerEntry;\r\n                return string.IsNullOrEmpty(entry?.RatingId)\r\n                    ? RatingEntry.NotAvailable\r\n                    : _ratingManager.GetRating(entry.RatingId);\r\n            };\r\n\r\n            olvColumnRating.Renderer = new RatingRenderer();\r\n\r\n            olvColumnRating.GroupKeyGetter = x =>\r\n            {\r\n                var model = x as ApplicationUninstallerEntry;\r\n\r\n                if (!_settings.Settings.MiscUserRatings\r\n                    || string.IsNullOrEmpty(model?.RatingId)\r\n                    || _ratingManager.RemoteRatingCount <= 0)\r\n                    return Localisable.NotAvailable;\r\n\r\n                var rating = _ratingManager.GetRating(model.RatingId);\r\n                if (rating.MyRating.HasValue)\r\n                    return string.Format(\"Your rating: {0}\", RatingEntry.ToRating(rating.MyRating.Value));\r\n                else if (rating.AverageRating.HasValue)\r\n                    return string.Format(\"Average rating: {0}\", RatingEntry.ToRating(rating.AverageRating.Value));\r\n                else\r\n                    return CommonStrings.Unknown;\r\n            };\r\n\r\n            uninstallerObjectListView.CellClick += (x, y) =>\r\n            {\r\n                if (y.Column == null || (y.ModifierKeys != Keys.None) || !y.Column.Equals(olvColumnRating))\r\n                    return;\r\n\r\n                if (y.Model is not ApplicationUninstallerEntry model)\r\n                    return;\r\n\r\n                RateEntries(new[] { model }, uninstallerObjectListView.PointToScreen(y.Location));\r\n            };\r\n        }\r\n\r\n        public void RateEntries(ApplicationUninstallerEntry[] entries, Point location)\r\n        {\r\n            if (!_settings.Settings.MiscUserRatings)\r\n            {\r\n                MessageBoxes.RatingsDisabled();\r\n            }\r\n            else if (!entries.Any() || entries.All(x => string.IsNullOrEmpty(x.RatingId)))\r\n            {\r\n                MessageBoxes.RatingUnavailable();\r\n            }\r\n            else\r\n            {\r\n                var title = entries.Length == 1\r\n                    ? entries[0].DisplayName\r\n                    : string.Format(CultureInfo.CurrentCulture, Localisable.RateTitle_Counted, entries.Length);\r\n\r\n                var result = RatingPopup.ShowRateDialog(MessageBoxes.DefaultOwner, title, location);\r\n\r\n                if (result == UninstallerRating.Unknown)\r\n                    return;\r\n\r\n                foreach (var entry in entries.Where(x => !string.IsNullOrEmpty(x.RatingId)))\r\n                {\r\n                    _ratingManager.SetMyRating(entry.RatingId, result);\r\n                }\r\n            }\r\n        }\r\n\r\n        public void InitializeRatings()\r\n        {\r\n            if (_settings.Settings.MiscUserRatings)\r\n            {\r\n                new Thread(() =>\r\n                {\r\n                    try\r\n                    {\r\n                        _ratingManager.DeserializeCache(Program.AssemblyLocation);\r\n                    }\r\n                    catch (Exception ex)\r\n                    {\r\n                        FlushRatings();\r\n                        PremadeDialogs.GenericError(ex);\r\n                    }\r\n\r\n                    // If _ratingManager has no ratings it means that deserialization failed so we need to fetch from db\r\n                    // Otherwise fetch at most every few hours, unless user manually clears the cache\r\n                    if (_ratingManager.RemoteRatingCount > 0 &&\r\n                        (DateTime.Now - _settings.Settings.MiscRatingCacheDate).Duration() < _settings.Settings._CacheUpdateRate)\r\n                        return;\r\n\r\n                    if (!WindowsTools.IsNetworkAvailable())\r\n                        return;\r\n\r\n                    try\r\n                    {\r\n                        _ratingManager.FetchRatings();\r\n                        _settings.Settings.MiscRatingCacheDate = DateTime.Now;\r\n                    }\r\n                    catch (Exception ex)\r\n                    {\r\n                        Console.WriteLine(ex);\r\n                    }\r\n                })\r\n                { IsBackground = false, Name = \"ProcessRatingInit_Thread\" }.Start();\r\n            }\r\n            else\r\n            {\r\n                FlushRatings();\r\n            }\r\n        }\r\n\r\n        private void FlushRatings()\r\n        {\r\n            try\r\n            {\r\n                _ratingManager.ClearRatings();\r\n                UninstallerRatingManager.DeleteCache(Program.AssemblyLocation);\r\n            }\r\n            catch\r\n            {\r\n                //Ignore errors, the cashe won't be accessed anyways\r\n            }\r\n\r\n            _settings.Settings.MiscRatingCacheDate = DateTime.MinValue;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Ratings/RatingRenderer.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Drawing;\r\nusing System.Windows.Forms;\r\nusing BrightIdeasSoftware;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Resources;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Ratings\r\n{\r\n    public class RatingRenderer : BaseRenderer\r\n    {\r\n        private readonly Image[] _coloredImages =\r\n        {\r\n            Resources.rating1, Resources.rating3, Resources.rating4,\r\n            Resources.rating5\r\n        };\r\n        private readonly Image _baseImage = Resources.star;\r\n\r\n        private readonly int _maximumValue = 8;\r\n        private readonly int _maxNumberImages = 4;\r\n        private readonly int _minimumValue = -8;\r\n\r\n        public override void Render(Graphics g, Rectangle r)\r\n        {\r\n            DrawBackground(g, r);\r\n            r = ApplyCellPadding(r);\r\n\r\n            // Convert our aspect to a numeric value\r\n            var aspect = (RatingEntry)Aspect;\r\n\r\n            if (aspect.Equals(RatingEntry.NotAvailable))\r\n            {\r\n                DrawText(g, r, Localisable.NotAvailable);\r\n            }\r\n            else if (aspect.AverageRating.HasValue || aspect.MyRating.HasValue)\r\n            {\r\n                var aspectValue = (float)(aspect.MyRating ?? aspect.AverageRating);\r\n\r\n                // Calculate how many images we need to draw to represent our aspect value\r\n                int numberOfImages;\r\n                if (aspectValue <= _minimumValue) numberOfImages = 1;\r\n                // ReSharper disable once PossibleLossOfFraction\r\n                else if (aspectValue <= (_maximumValue + _minimumValue) / 2) numberOfImages = 2;\r\n                else if (aspectValue < _maximumValue) numberOfImages = 3;\r\n                else numberOfImages = _maxNumberImages;\r\n\r\n                // If we need to shrink the image, what will its on-screen dimensions be?\r\n                var imageScaledWidth = _baseImage.Width;\r\n                var imageScaledHeight = _baseImage.Height;\r\n                if (r.Height < _baseImage.Height)\r\n                {\r\n                    imageScaledWidth = (int)(_baseImage.Width * (float)r.Height / _baseImage.Height);\r\n                    imageScaledHeight = r.Height;\r\n                }\r\n                // Calculate where the images should be drawn\r\n                var imageBounds = r;\r\n                imageBounds.Width = _maxNumberImages * (imageScaledWidth + Spacing) - Spacing;\r\n                imageBounds.Height = imageScaledHeight;\r\n                imageBounds = AlignRectangle(r, imageBounds);\r\n\r\n                // Finally, draw the images\r\n                var singleImageRect = new Rectangle(imageBounds.X, imageBounds.Y, imageScaledWidth, imageScaledHeight);\r\n                var backgroundColor = GetBackgroundColor();\r\n                for (var i = 0; i < numberOfImages; i++)\r\n                {\r\n                    if (ListItem.Enabled)\r\n                    {\r\n                        var displayedImage = aspect.MyRating.HasValue || Settings.Default.MiscColorblind ? _baseImage : _coloredImages[numberOfImages - 1];\r\n                        g.DrawImage(displayedImage, singleImageRect);\r\n                        //DrawImage(g, singleImageRect, image);\r\n                    }\r\n                    else\r\n                        ControlPaint.DrawImageDisabled(g, _baseImage, singleImageRect.X, singleImageRect.Y,\r\n                            backgroundColor);\r\n                    singleImageRect.X += (imageScaledWidth + Spacing);\r\n                }\r\n            }\r\n            else\r\n            {\r\n                DrawText(g, r, CommonStrings.Unknown);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Ratings/UninstallerRating.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nnamespace BulkCrapUninstaller.Functions.Ratings\r\n{\r\n    public enum UninstallerRating\r\n    {\r\n        Unknown = 127,\r\n        Neutral = 0,\r\n        Bad = -10,\r\n        Good = 10\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Ratings/UninstallerRatingManager.Utils.cs",
    "content": "﻿using System;\nusing System.Collections.Concurrent;\nusing System.IO;\nusing System.IO.Compression;\nusing System.Text;\nusing System.Text.Json;\n\nnamespace BulkCrapUninstaller.Functions.Ratings\n{\n    public partial class UninstallerRatingManager\n    {\n        internal static class Utils\n        {\n            public static T DecompressAndDeserialize<T>(byte[] bytes, JsonSerializerOptions jsonSerializerOptions = null)\n            {\n                using (var msInput = new MemoryStream(bytes))\n                using (var bs = new BrotliStream(msInput, CompressionMode.Decompress))\n                using (var msOutput = new MemoryStream())\n                {\n                    bs.CopyTo(msOutput);\n                    msOutput.Seek(0, SeekOrigin.Begin);\n                    var output = msOutput.ToArray();\n                    return JsonSerializer.Deserialize<T>(output, jsonSerializerOptions);\n                }\n            }\n\n            public static byte[] SerializeAndCompress(object objToJsonserialize)\n            {\n                var inputStr = JsonSerializer.Serialize(objToJsonserialize);\n\n                var bytes = Encoding.UTF8.GetBytes(inputStr);\n\n                using (var outputStream = new MemoryStream())\n                {\n                    using (var gZipStream = new BrotliStream(outputStream, CompressionLevel.Optimal))\n                        gZipStream.Write(bytes, 0, bytes.Length);\n\n                    var result = outputStream.ToArray();\n                    //Debug.WriteLine($\"Compression result: {bytes.Length} -> {result.Length} ({(result.Length / (double)bytes.Length) * 100:F1}%)\");\n                    return result;\n                }\n            }\n\n\n            [ThreadStatic] private static System.Security.Cryptography.MD5 _md5;\n            private static readonly ConcurrentDictionary<string, ulong> _hashCache = new();\n\n            public static ulong StableHash(string str)\n            {\n                if (str == null) return 0;\n                if (_hashCache.TryGetValue(str, out var hash))\n                {\n                    return hash;\n                }\n                else\n                {\n                    if (_md5 == null) _md5 = System.Security.Cryptography.MD5.Create();\n                    byte[] inputBytes = Encoding.UTF8.GetBytes(str);\n                    var hashBytes = _md5.ComputeHash(inputBytes);\n                    var stableHash = BitConverter.ToUInt64(hashBytes, 0) ^ BitConverter.ToUInt64(hashBytes, 8);\n                    _hashCache.TryAdd(str, stableHash);\n                    return stableHash;\n                }\n            }\n\n            // Needed for deserializing incoming data from the server\n            public class AverageRatingEntry\n            {\n                public int AverageRating { get; set; }\n                public ulong AppId { get; set; }\n            }\n            // Needed for deserializing incoming data from the server\n            public class UserRatingEntry\n            {\n                public ulong UserId { get; set; }\n                public int Rating { get; set; }\n                public ulong AppId { get; set; }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Ratings/UninstallerRatingManager.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Text.Json;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Ratings\r\n{\r\n    public partial class UninstallerRatingManager\r\n    {\r\n        private readonly Dictionary<ulong, int> _ratingsToSend = new();\r\n        private readonly Dictionary<ulong, int> _avgRatings = new();\r\n        private readonly Dictionary<ulong, int> _myRatings = new();\r\n\r\n        public UninstallerRatingManager(ulong userId)\r\n        {\r\n            if (userId == 0) throw new ArgumentOutOfRangeException(nameof(userId));\r\n            UserId = userId;\r\n        }\r\n\r\n        private ulong UserId { get; }\r\n\r\n        public int RemoteRatingCount => _avgRatings.Count;\r\n\r\n        public int UserRatingCount => _myRatings.Count;\r\n        \r\n        public void FetchRatings()\r\n        {\r\n            using var cl = Program.HomeServerClient;\r\n\r\n            var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };\r\n\r\n            var txt = cl.GetStringAsync(new Uri(@\"GetAverageRatingsComp\", UriKind.Relative)).Result.Trim('\"');\r\n            var bytes = Convert.FromBase64String(txt);\r\n            var remoteAvgRatings = Utils.DecompressAndDeserialize<List<Utils.AverageRatingEntry>>(bytes, options);\r\n\r\n            var txt2 = cl.GetStringAsync(new Uri(@\"GetUserRatings?userId=\" + UserId, UriKind.Relative)).Result;\r\n            var remoteMyRatings = JsonSerializer.Deserialize<List<Utils.UserRatingEntry>>(txt2, options);\r\n\r\n            _avgRatings.Clear();\r\n            foreach (Utils.AverageRatingEntry entry in remoteAvgRatings)\r\n                _avgRatings.Add(entry.AppId, entry.AverageRating);\r\n\r\n            if (remoteMyRatings != null)\r\n            {\r\n                _myRatings.Clear();\r\n                foreach (Utils.UserRatingEntry entry in remoteMyRatings)\r\n                    _myRatings.Add(entry.AppId, entry.Rating);\r\n            }\r\n        }\r\n\r\n        public void UploadRatings()\r\n        {\r\n            lock (_ratingsToSend)\r\n                if (_ratingsToSend.Count < 1) return;\r\n\r\n            using var cl = Program.HomeServerClient;\r\n\r\n            lock (_ratingsToSend)\r\n            {\r\n                foreach (var uninstallerRating in _ratingsToSend)\r\n                {\r\n                    var msg = cl.PutAsync(new Uri($@\"SetUserRating?userId={UserId}&appId={uninstallerRating.Key}&rating={uninstallerRating.Value}\", UriKind.Relative), null!).Result;\r\n                    msg.EnsureSuccessStatusCode();\r\n                }\r\n\r\n                _ratingsToSend.Clear();\r\n            }\r\n        }\r\n\r\n        public void SetMyRating(string appKey, UninstallerRating rating)\r\n        {\r\n            if (string.IsNullOrEmpty(appKey))\r\n                throw new ArgumentNullException(nameof(appKey));\r\n            if (rating == UninstallerRating.Unknown)\r\n                throw new ArgumentException(\"Can't set unknown rating\", nameof(rating));\r\n\r\n            lock (_ratingsToSend)\r\n            {\r\n                var appId = Utils.StableHash(appKey);\r\n                _ratingsToSend[appId] = (int)rating;\r\n                _myRatings[appId] = (int)rating;\r\n            }\r\n        }\r\n\r\n        public RatingEntry GetRating(string appName)\r\n        {\r\n            var appId = Utils.StableHash(appName);\r\n            int? avg = null;\r\n            int? my = null;\r\n            if (_avgRatings.TryGetValue(appId, out var a)) avg = a;\r\n            if (_myRatings.TryGetValue(appId, out var m)) my = m;\r\n            return new RatingEntry { ApplicationName = appName, AverageRating = avg, MyRating = my };\r\n        }\r\n\r\n        public void SerializeCache(DirectoryInfo directory)\r\n        {\r\n            if (directory == null) throw new ArgumentNullException(nameof(directory));\r\n            lock (_ratingsToSend)\r\n            {\r\n                var dir = directory.FullName;\r\n                var avgPath = Path.Combine(dir, \"RatingCashe_Avg.json\");\r\n                var myPath = Path.Combine(dir, \"RatingCashe_User.json\");\r\n                var pendingPath = Path.Combine(dir, \"RatingCashe_Pending.json\");\r\n\r\n                File.WriteAllText(avgPath, JsonSerializer.Serialize(_avgRatings));\r\n                File.WriteAllText(myPath, JsonSerializer.Serialize(_myRatings));\r\n                File.WriteAllText(pendingPath, JsonSerializer.Serialize(_ratingsToSend));\r\n            }\r\n        }\r\n\r\n        public static void DeleteCache(DirectoryInfo directory)\r\n        {\r\n            if (directory == null) throw new ArgumentNullException(nameof(directory));\r\n            var dir = directory.FullName;\r\n            var avgPath = Path.Combine(dir, \"RatingCashe_Avg.json\");\r\n            var myPath = Path.Combine(dir, \"RatingCashe_User.json\");\r\n            var pendingPath = Path.Combine(dir, \"RatingCashe_Pending.json\");\r\n            File.Delete(avgPath);\r\n            File.Delete(myPath);\r\n            File.Delete(pendingPath);\r\n        }\r\n\r\n        public void DeserializeCache(DirectoryInfo directory)\r\n        {\r\n            if (directory == null) throw new ArgumentNullException(nameof(directory));\r\n            lock (_ratingsToSend)\r\n            {\r\n                var dir = directory.FullName;\r\n                var avgPath = Path.Combine(dir, \"RatingCashe_Avg.json\");\r\n                var myPath = Path.Combine(dir, \"RatingCashe_User.json\");\r\n                var pendingPath = Path.Combine(dir, \"RatingCashe_Pending.json\");\r\n\r\n                LoadFromFile(avgPath, _avgRatings);\r\n                LoadFromFile(myPath, _myRatings);\r\n                LoadFromFile(pendingPath, _ratingsToSend);\r\n            }\r\n        }\r\n\r\n        private static void LoadFromFile(string path, Dictionary<ulong, int> target)\r\n        {\r\n            try\r\n            {\r\n                var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };\r\n                var avgRatings = JsonSerializer.Deserialize<Dictionary<ulong, int>>(File.ReadAllText(path), options);\r\n\r\n                if (avgRatings != null)\r\n                {\r\n                    target.Clear();\r\n                    foreach (var avgRating in avgRatings)\r\n                        target.Add(avgRating.Key, avgRating.Value);\r\n                }\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                Console.WriteLine(e);\r\n            }\r\n        }\r\n\r\n        public void ClearRatings()\r\n        {\r\n            lock (_ratingsToSend)\r\n            {\r\n                _ratingsToSend.Clear();\r\n                _myRatings.Clear();\r\n                _avgRatings.Clear();\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Tools/ImportExport.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms.Tools;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Tools\r\n{\r\n    internal static class ImportExport\r\n    {\r\n        public static void CopyToClipboard(IEnumerable<string> inputLines)\r\n        {\r\n            var text = string.Join(\"\\r\\n\", inputLines.OrderBy(t => t).ToArray());\r\n\r\n            if (text.IsNotEmpty())\r\n            {\r\n                try\r\n                {\r\n                    Clipboard.SetText(text);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    PremadeDialogs.GenericError(ex);\r\n                }\r\n            }\r\n            else\r\n                MessageBoxes.NothingToCopy();\r\n        }\r\n\r\n        public static void CopyNamesToClipboard(IEnumerable<ApplicationUninstallerEntry> items)\r\n        {\r\n            CopyToClipboard(items.Select(z => z.DisplayName));\r\n        }\r\n\r\n        public static void CopyRegKeysToClipboard(IEnumerable<ApplicationUninstallerEntry> items)\r\n        {\r\n            CopyToClipboard(items.Select(z => z.RegistryPath));\r\n        }\r\n\r\n        public static void CopyUninstallStringsToClipboard(IEnumerable<ApplicationUninstallerEntry> items)\r\n        {\r\n            CopyToClipboard(items.Select(z => z.UninstallString));\r\n        }\r\n\r\n        public static void CopyGuidsToClipboard(IEnumerable<ApplicationUninstallerEntry> items)\r\n        {\r\n            CopyToClipboard(items.Select(z => z.BundleProviderKey.ToString(\"B\").ToUpperInvariant()));\r\n        }\r\n\r\n        public static void CopyFullInformationToClipboard(IEnumerable<ApplicationUninstallerEntry> items)\r\n        {\r\n            CopyToClipboard(items.Select(z => z.ToLongString()));\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Tools/LocalizedX509Certificate.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Linq;\r\nusing System.Security.Cryptography.X509Certificates;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Extensions;\r\nusing Klocman.Localising;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Tools\r\n{\r\n    internal class LocalizedX509Certificate2\r\n    {\r\n        public LocalizedX509Certificate2(X509Certificate2 baseCert)\r\n        {\r\n            BaseCert = baseCert;\r\n        }\r\n\r\n        private X509Certificate2 BaseCert { get; }\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_Archived))]\r\n        public bool Archived => BaseCert.Archived;\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_Extensions))]\r\n        public string Extensions\r\n            => string.Join(\", \", BaseCert.Extensions.Cast<X509Extension>().Where(x => x.Oid != null).Select(x => x.Oid.FriendlyName).ToArray());\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_FriendlyName))]\r\n        public string FriendlyName => BaseCert.FriendlyName;\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_HasPrivateKey))]\r\n        public bool HasPrivateKey => BaseCert.HasPrivateKey;\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_Issuer))]\r\n        public string Issuer => BaseCert.Issuer;\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_IssuerName))]\r\n        public string IssuerName => BaseCert.IssuerName.Format(false);\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_NotAfter))]\r\n        public DateTime NotAfter => BaseCert.NotAfter;\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_NotBefore))]\r\n        public DateTime NotBefore => BaseCert.NotBefore;\r\n\r\n#pragma warning disable SYSLIB0027\r\n#pragma warning disable SYSLIB0028\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_PrivateKey))]\r\n        public string PrivateKey => BaseCert.PrivateKey?.ToString();\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_PublicKey))]\r\n        public string PublicKey => BaseCert.PublicKey.Key.SignatureAlgorithm;\r\n#pragma warning restore SYSLIB0028\r\n#pragma warning restore SYSLIB0027\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_RawData))]\r\n        public string RawData => BaseCert.RawData.ToHexString();\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_SerialNumber))]\r\n        public string SerialNumber => BaseCert.SerialNumber;\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_SignatureAlgorithm))]\r\n        public string SignatureAlgorithm => BaseCert.SignatureAlgorithm.FriendlyName;\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_Subject))]\r\n        public string Subject => BaseCert.Subject;\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_SubjectName))]\r\n        public string SubjectName => BaseCert.SubjectName.Format(false);\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_Thumbprint))]\r\n        public string Thumbprint => BaseCert.Thumbprint;\r\n\r\n        [LocalisedName(typeof(Localisable), nameof(Localisable.LocalizedX509Certificate2_Version))]\r\n        public int Version => BaseCert.Version;\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Tools/OnlineSearchTools.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing Klocman.Tools;\r\nusing UninstallTools;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Tools\r\n{\r\n    public static class OnlineSearchTools\r\n    {\r\n        public static void SearchGoogle(IEnumerable<ApplicationUninstallerEntry> selectedUninstallers)\r\n        {\r\n            SearchOnline(selectedUninstallers, @\"https://www.google.com/search?q=\", GetFullName, SearchSeparatorType.Plus);\r\n        }\r\n        public static void SearchFilehippo(IEnumerable<ApplicationUninstallerEntry> selectedUninstallers)\r\n        {\r\n            SearchOnline(selectedUninstallers, @\"http://filehippo.com/search?q=\", GetTrimmedName, SearchSeparatorType.Plus);\r\n        }\r\n        public static void SearchSourceforge(IEnumerable<ApplicationUninstallerEntry> selectedUninstallers)\r\n        {\r\n            SearchOnline(selectedUninstallers, @\"https://sourceforge.net/directory/?q=\", GetTrimmedName, SearchSeparatorType.Escaped);\r\n        }\r\n\r\n        public static void SearchFosshub(IEnumerable<ApplicationUninstallerEntry> selectedUninstallers)\r\n        {\r\n            SearchOnline(selectedUninstallers, @\"https://www.fosshub.com/search/\", GetTrimmedName, SearchSeparatorType.Escaped);\r\n        }\r\n\r\n        public static void SearchAlternativeTo(IEnumerable<ApplicationUninstallerEntry> selectedUninstallers)\r\n        {\r\n            SearchOnline(selectedUninstallers, @\"https://alternativeto.net/browse/search/?q=\", GetTrimmedName, SearchSeparatorType.Plus);\r\n        }\r\n\r\n        public static void SearchGithub(IEnumerable<ApplicationUninstallerEntry> selectedUninstallers)\r\n        {\r\n            SearchOnline(selectedUninstallers, @\"https://github.com/search?q=\", GetTrimmedName, SearchSeparatorType.Plus);\r\n        }\r\n\r\n        public static void SearchSlantCo(IEnumerable<ApplicationUninstallerEntry> selectedUninstallers)\r\n        {\r\n            SearchOnline(selectedUninstallers, @\"https://www.slant.co/search?query=\", GetTrimmedName, SearchSeparatorType.Escaped);\r\n        }\r\n\r\n        private static string GetTrimmedName(ApplicationUninstallerEntry entry)\r\n        {\r\n            var displayNameTrimmed = entry.DisplayNameTrimmed;\r\n            return displayNameTrimmed.Length > 3 ? displayNameTrimmed : entry.DisplayName;\r\n        }\r\n\r\n        private static string GetFullName(ApplicationUninstallerEntry entry)\r\n        {\r\n            return entry.DisplayName;\r\n        }\r\n\r\n        public static void SearchOnline(IEnumerable<ApplicationUninstallerEntry> selectedUninstallers, string searchString, Func<ApplicationUninstallerEntry, string> searchStringGetter, SearchSeparatorType spaceReplacement)\r\n        {\r\n            if (WindowsTools.IsNetworkAvailable())\r\n            {\r\n                var items = selectedUninstallers\r\n                    .Select(searchStringGetter)\r\n                    .Where(x => !string.IsNullOrEmpty(x))\r\n                    .Select(str =>\r\n                    {\r\n                        switch (spaceReplacement)\r\n                        {\r\n                            case SearchSeparatorType.Plus:\r\n                                return HttpUtility.UrlEncode(str);\r\n                                //return str.Replace(' ', '+');\r\n                            case SearchSeparatorType.Escaped:\r\n                                return HttpUtility.UrlEncode(str).Replace(\"+\", \"%20\");\r\n                            default:\r\n                                throw new ArgumentOutOfRangeException(nameof(spaceReplacement), spaceReplacement, null);\r\n                        }\r\n                    }).Select(y => string.Concat(searchString, y)).ToList();\r\n\r\n                if (MessageBoxes.SearchOnlineMessageBox(items.Count) == MessageBoxes.PressedButton.Yes)\r\n                {\r\n                    try\r\n                    {\r\n                        items.ForEach(x => Process.Start(new ProcessStartInfo(x) { UseShellExecute = true }));\r\n                    }\r\n                    catch (Exception ex)\r\n                    {\r\n                        MessageBoxes.SearchOnlineError(ex);\r\n                    }\r\n                }\r\n            }\r\n            else\r\n                MessageBoxes.NoNetworkConnected();\r\n        }\r\n\r\n        public enum SearchSeparatorType\r\n        {\r\n            Plus,\r\n            Escaped\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Tools/SettingTools.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Drawing;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Forms;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Binding.Settings;\r\nusing Klocman.Forms.Tools;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Tools\r\n{\r\n    internal sealed class SettingTools\r\n    {\r\n        private readonly MainWindow _mainWindow;\r\n        private bool _resetSettings;\r\n\r\n        public SettingTools(SettingBinder<Settings> settingSet, MainWindow mainWindow)\r\n        {\r\n            Selected = settingSet;\r\n            _mainWindow = mainWindow;\r\n        }\r\n\r\n        public SettingBinder<Settings> Selected { get; }\r\n\r\n        public void LoadSettings()\r\n        {\r\n#if DEBUG\r\n            Selected.Settings.Debug = true;\r\n#endif\r\n            if (Selected.Settings.MiscFirstRun) return;\r\n\r\n            if (Selected.Settings.WindowSize.Width >= _mainWindow.MinimumSize.Width &&\r\n                Selected.Settings.WindowSize.Height >= _mainWindow.MinimumSize.Height &&\r\n                !Selected.Settings.WindowPosition.IsEmpty)\r\n            {\r\n                var targetRect = new Rectangle(Selected.Settings.WindowPosition, Selected.Settings.WindowSize);\r\n                if (Screen.AllScreens.Any(s => s.WorkingArea.IntersectsWith(targetRect)))\r\n                {\r\n                    _mainWindow.Size = Selected.Settings.WindowSize;\r\n                    _mainWindow.Location = Selected.Settings.WindowPosition;\r\n\r\n                    _mainWindow.StartPosition = FormStartPosition.Manual;\r\n\r\n                    if (Selected.Settings.WindowState != FormWindowState.Minimized)\r\n                        _mainWindow.WindowState = Selected.Settings.WindowState;\r\n                }\r\n            }\r\n\r\n            if (!string.IsNullOrEmpty(Selected.Settings.UninstallerListViewState))\r\n            {\r\n                try\r\n                {\r\n                    _mainWindow.uninstallerObjectListView.RestoreState(\r\n                        Convert.FromBase64String(Selected.Settings.UninstallerListViewState));\r\n                }\r\n                catch (Exception)\r\n                {\r\n                    // Failed to load listview state, likely old version that used binaryformatter\r\n                }\r\n            }\r\n        }\r\n\r\n        public void LoadSorting()\r\n        {\r\n            try\r\n            {\r\n                _mainWindow.uninstallerObjectListView.Sorting = Selected.Settings.UninstallerListSortOrder;\r\n                _mainWindow.uninstallerObjectListView.Sort(Selected.Settings.UninstallerListSortColumn);\r\n            }\r\n            catch\r\n            {\r\n                // OLV can throw a nullref\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Ask user to reset settings. If user selects yes the settings are reset and application is restarted.\r\n        /// </summary>\r\n        public void ResetSettingsDialog()\r\n        {\r\n            if (MessageBoxes.ResetSettingsConfirmation() == MessageBoxes.PressedButton.Yes)\r\n            {\r\n                _resetSettings = true;\r\n                EntryPoint.Restart();\r\n            }\r\n        }\r\n\r\n        public void SaveSettings()\r\n        {\r\n            if (_resetSettings)\r\n            {\r\n                try\r\n                {\r\n                    File.Delete(Program.ConfigFileFullname);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    /*Failed to save settings, probably read only drive*/\r\n                    PremadeDialogs.GenericError(new IOException(Localisable.Error_SaveSettingsFailed, ex));\r\n                }\r\n            }\r\n            else\r\n            {\r\n                Selected.Settings.WindowState = _mainWindow.WindowState;\r\n                if (_mainWindow.WindowState == FormWindowState.Normal)\r\n                {\r\n                    Selected.Settings.WindowSize = _mainWindow.Size;\r\n                    Selected.Settings.WindowPosition = _mainWindow.Location;\r\n                }\r\n\r\n                Selected.Settings.UninstallerListViewState =\r\n                    Convert.ToBase64String(_mainWindow.uninstallerObjectListView.SaveState());\r\n\r\n                Selected.Settings.UninstallerListSortOrder = _mainWindow.uninstallerObjectListView.PrimarySortOrder;\r\n                Selected.Settings.UninstallerListSortColumn = _mainWindow.uninstallerObjectListView.Columns.IndexOf(\r\n                    _mainWindow.uninstallerObjectListView.PrimarySortColumn);\r\n                Selected.Settings.MiscVersion = Program.AssemblyVersion.ToString();\r\n\r\n                try\r\n                {\r\n                    Selected.Settings.Save();\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    /*Failed to save settings, probably read only drive*/\r\n                    PremadeDialogs.GenericError(new IOException(Localisable.Error_SaveSettingsFailed, ex));\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Tools/SystemRestore.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\nusing System.Windows.Forms;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Forms;\r\nusing Klocman.IO;\r\nusing Microsoft.UI.Xaml;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Tools\r\n{\r\n    internal static class SystemRestore\r\n    {\r\n        /// <summary>\r\n        /// Currently running system restore number\r\n        /// </summary>\r\n        private static long _currentRestoreId = long.MinValue;\r\n\r\n        /// <summary>\r\n        ///     Ask the user to begin system restore and do so if he accepts. Returns false if user decides to cancel the\r\n        ///     operation.\r\n        /// </summary>\r\n        /// <param name=\"count\">How many items are being uninstalled</param>\r\n        /// <param name=\"displayMessage\">If user should be asked to create the restore point. If false, always create</param>\r\n        /// <param name=\"owner\">Window to show on top of</param>\r\n        public static bool BeginSysRestore(int count, bool displayMessage = true, Form owner = null)\r\n        {\r\n            if (!SysRestore.SysRestoreAvailable()) return false;\r\n\r\n            // If a restore is already running, do not start another one\r\n            if (_currentRestoreId != long.MinValue) return true;\r\n\r\n            switch (displayMessage ? MessageBoxes.SysRestoreBeginQuestion() : MessageBoxes.PressedButton.Yes)\r\n            {\r\n                case MessageBoxes.PressedButton.Yes:\r\n                    var error = LoadingDialog.ShowDialog(owner, Localisable.LoadingDialogTitleCreatingRestorePoint, x =>\r\n                    {\r\n                        EndSysRestore();\r\n\r\n                        var result = SysRestore.StartRestore(MessageBoxes.GetSystemRestoreDescription(count), out _currentRestoreId, 3);\r\n                        if (result < 0)\r\n                            throw new IOException(Localisable.SysRestoreGenericError);\r\n                    });\r\n\r\n                    return error == null ||\r\n                           MessageBoxes.SysRestoreContinueAfterError(error.Message) ==\r\n                           MessageBoxes.PressedButton.Yes;\r\n\r\n                default:\r\n                case MessageBoxes.PressedButton.No:\r\n                case MessageBoxes.PressedButton.Cancel:\r\n                    return false;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Cancel running restore if any\r\n        /// </summary>\r\n        public static void CancelSysRestore()\r\n        {\r\n            try\r\n            {\r\n                if (_currentRestoreId != long.MinValue)\r\n                    SysRestore.CancelRestore(_currentRestoreId);\r\n            }\r\n            catch (Exception ex) { Console.WriteLine(ex); }\r\n            finally { _currentRestoreId = long.MinValue; }\r\n        }\r\n\r\n        public static void EndSysRestore()\r\n        {\r\n            try\r\n            {\r\n                if (_currentRestoreId != long.MinValue)\r\n                    SysRestore.EndRestore(_currentRestoreId);\r\n            }\r\n            catch (Exception ex) { Console.WriteLine(ex); }\r\n            finally { _currentRestoreId = long.MinValue; }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Tools/UpdateGrabber.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Diagnostics;\r\nusing System.Net;\r\nusing System.Net.Http;\r\nusing System.Reflection;\r\nusing System.Threading;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Forms;\r\nusing Klocman.Tools;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Tools\r\n{\r\n    internal static class UpdateGrabber\r\n    {\r\n        /// <summary>\r\n        ///     Look for updates while displaying a progress bar. At the end display a message box with the result.\r\n        /// </summary>\r\n        public static void LookForUpdates()\r\n        {\r\n            bool? result = null;\r\n            Version latestVersion = null;\r\n            var error = LoadingDialog.ShowDialog(null, Localisable.LoadingDialogTitleSearchingForUpdates,\r\n                _ => { result = IsUpdateAvailable(Assembly.GetExecutingAssembly().GetName().Version, out latestVersion); });\r\n\r\n            if (error == null)\r\n            {\r\n                switch (result)\r\n                {\r\n                    case null:\r\n                        MessageBoxes.UpdateFailed(\"Unknown error\");\r\n                        break;\r\n\r\n                    case true:\r\n                        AskAndBeginUpdate(latestVersion);\r\n                        break;\r\n\r\n                    case false:\r\n                        MessageBoxes.UpdateUptodate();\r\n                        break;\r\n                }\r\n            }\r\n            else\r\n            {\r\n                MessageBoxes.UpdateFailed(error.Message);\r\n            }\r\n        }\r\n\r\n        public static void AskAndBeginUpdate(Version latestVersion)\r\n        {\r\n            if (MessageBoxes.UpdateAskToDownload(latestVersion))\r\n            {\r\n                try\r\n                {\r\n                    // Prevent log cleaner from running in portable builds\r\n                    //EntryPoint.IsRestarting = true;\r\n\r\n                    Process.Start(new ProcessStartInfo(LatestReleaseUrl) { UseShellExecute = true });\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    EntryPoint.IsRestarting = false;\r\n\r\n                    Console.WriteLine(ex);\r\n                    MessageBoxes.UpdateFailed(ex.Message);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Setup update system and automatically search for them if auto update is enabled.\r\n        ///     Doesn't block, use delegates to interface.\r\n        /// </summary>\r\n        public static void Setup()\r\n        {\r\n            //UpdateSystem.UpdateFeedUri = Program.EnableDebug ? DebugUpdateFeedUri : UpdateFeedUri;\r\n            //UpdateSystem.CurrentVersion = Assembly.GetExecutingAssembly().GetName().Version;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Automatically search for updates if auto update is enabled.\r\n        ///     Doesn't block, use delegates to interface.\r\n        /// </summary>\r\n        /// <param name=\"canDisplayMessage\">updateFoundCallback will be called after this returns true</param>\r\n        /// <param name=\"updateFoundCallback\">Launched only if a new update was found. It's launched from a background thread.</param>\r\n        public static void AutoUpdate(Func<bool> canDisplayMessage, Action<Version> updateFoundCallback)\r\n        {\r\n            if (Settings.Default.MiscCheckForUpdates && WindowsTools.IsNetworkAvailable())\r\n            {\r\n                new Thread(() =>\r\n                {\r\n                    if (IsUpdateAvailable(Assembly.GetExecutingAssembly().GetName().Version, out var updateVersion) == true)\r\n                    {\r\n                        while (!canDisplayMessage())\r\n                            Thread.Sleep(100);\r\n\r\n                        try\r\n                        {\r\n                            updateFoundCallback(updateVersion);\r\n                        }\r\n                        catch\r\n                        {\r\n                            // Ignore background error, not necessary\r\n                        }\r\n                    }\r\n                })\r\n                { Name = \"UpdateCheck_Thread\", IsBackground = true }.Start();\r\n            }\r\n        }\r\n\r\n        public static string LatestReleaseUrl = \"https://github.com/Klocman/Bulk-Crap-Uninstaller/releases/latest\";\r\n\r\n        public static Version CheckLatestVersion()\r\n        {\r\n            // Should result in something like \"https://github.com/Klocman/Bulk-Crap-Uninstaller/releases/tag/v4.1\"\r\n            var url = GetFinalRedirect(LatestReleaseUrl);\r\n            if (url != null)\r\n            {\r\n                var i = url.LastIndexOf('/');\r\n                var tag = url.Substring(i).TrimStart('/', 'v');\r\n                return new Version(tag);\r\n            }\r\n\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Returns null if failed to look for updates, else returns if there is a newer version available\r\n        /// </summary>\r\n        public static bool? IsUpdateAvailable(Version currentVersion, out Version updateVersion)\r\n        {\r\n            updateVersion = null;\r\n            try\r\n            {\r\n                var latestVersion = CheckLatestVersion();\r\n                if (latestVersion == null)\r\n                {\r\n                    throw new WebException(\"Failed to get version from URL\");\r\n                }\r\n                else if (latestVersion > currentVersion)\r\n                {\r\n                    updateVersion = latestVersion;\r\n                    Console.WriteLine(\"A new version is available: \" + latestVersion);\r\n                    return true;\r\n                }\r\n                else\r\n                {\r\n                    Console.WriteLine(\"The current version is the latest\");\r\n                    return false;\r\n                }\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                Console.WriteLine(\"Failed to check for new versions: \" + e.Message);\r\n                return null;\r\n            }\r\n        }\r\n\r\n        private static string GetFinalRedirect(string url)\r\n        {\r\n            if (string.IsNullOrWhiteSpace(url))\r\n                return null;\r\n\r\n            try\r\n            {\r\n                // https://stackoverflow.com/a/79339216\r\n                using (var client = new HttpClient(new HttpClientHandler { AllowAutoRedirect = true }))\r\n                {\r\n                    client.Timeout = new TimeSpan(0, 0, 10);\r\n                    using (var response = client.SendAsync(new HttpRequestMessage(HttpMethod.Head, url)))\r\n                    {\r\n                        var result = response.Result.RequestMessage?.RequestUri;\r\n                        return result?.ToString();\r\n                    }\r\n                }\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Console.WriteLine($\"GetFinalRedirect failed for url=[{url}] with exception: {ex}\");\r\n                return null;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Tracking/DatabaseStatSender.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing Klocman.Tools;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Tracking\r\n{\r\n    public class DatabaseStatSender\r\n    {\r\n        private readonly ulong userId;\r\n\r\n        public DatabaseStatSender(ulong userId)\r\n        {\r\n            this.userId = userId;\r\n        }\r\n\r\n        public bool SendData(string value)\r\n        {\r\n            try\r\n            {\r\n                var compressed = CompressionTools.BrotliCompress(value);\r\n\r\n                using var s = Program.HomeServerClient;\r\n                var response = s.PostAsync(new Uri($\"SendStats?userId={userId}&data={Convert.ToBase64String(compressed)}\", UriKind.Relative), null!).Result;\r\n                response.EnsureSuccessStatusCode();\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                Console.WriteLine(\"Failed to send stats: \" + e);\r\n                return false;\r\n            }\r\n            return true;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Tracking/EventHook.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Reflection;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Tracking\r\n{\r\n    internal sealed class EventHook : IDisposable\r\n    {\r\n        private readonly List<SingleEventHook> _hooks = new();\r\n\r\n        public EventHook(object target, FieldInfo targetField, IEnumerable<EventInfo> targetEvents)\r\n        {\r\n            Parent = target;\r\n            Field = targetField;\r\n\r\n            ParentName = Parent.GetType().Name;\r\n            FieldName = Field.Name;\r\n\r\n            SubscribeToEvents(targetEvents);\r\n        }\r\n\r\n        public FieldInfo Field { get; }\r\n        public string FieldName { get; }\r\n        public IEnumerable<SingleEventHook> Hooks => _hooks;\r\n        public object Parent { get; }\r\n        public string ParentName { get; }\r\n\r\n        public void Dispose()\r\n        {\r\n            foreach (var hook in _hooks)\r\n            {\r\n                hook.Dispose();\r\n            }\r\n        }\r\n\r\n        private void SubscribeToEvents(IEnumerable<EventInfo> targetEvents)\r\n        {\r\n            foreach (var targetEvent in targetEvents)\r\n            {\r\n                try\r\n                {\r\n                    _hooks.Add(new SingleEventHook(this, targetEvent));\r\n                }\r\n                catch (ArgumentException)\r\n                {\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Tracking/SingleEventHook.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Diagnostics;\r\nusing System.Reflection;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Tracking\r\n{\r\n    internal sealed class SingleEventHook : IDisposable\r\n    {\r\n        private static readonly MethodInfo SimpleHandlerInfo = typeof (SingleEventHook).GetMethod(\"SimpleHandler\",\r\n            BindingFlags.Instance | BindingFlags.NonPublic);\r\n\r\n        public SingleEventHook(EventHook parent, EventInfo targetEvent)\r\n        {\r\n            if (parent == null) throw new ArgumentNullException(nameof(parent));\r\n            if (targetEvent == null) throw new ArgumentNullException(nameof(targetEvent));\r\n\r\n            EventName = targetEvent.Name;\r\n\r\n            Parent = parent;\r\n            TargetProperty = parent.Field.GetValue(parent.Parent);\r\n\r\n            if (TargetProperty == null)\r\n                throw new ArgumentException(\"EventHook has an invalid Field or Parent property.\");\r\n\r\n            TargetEvent = targetEvent;\r\n\r\n            Handler = Delegate.CreateDelegate(targetEvent.EventHandlerType ?? throw new ArgumentException(\"EventHandlerType is null\"), this, SimpleHandlerInfo);\r\n\r\n            TargetEvent.AddEventHandler(TargetProperty, Handler);\r\n        }\r\n\r\n        public string EventName { get; }\r\n        public Delegate Handler { get; }\r\n        public int HitCount { get; private set; }\r\n        public string Name => Parent.ParentName + \" -> \" + Parent.FieldName + \" -> \" + EventName;\r\n        public EventHook Parent { get; }\r\n        public EventInfo TargetEvent { get; }\r\n        public object TargetProperty { get; }\r\n\r\n        public void Dispose()\r\n        {\r\n            TargetEvent.RemoveEventHandler(TargetProperty, Handler);\r\n        }\r\n\r\n        public override string ToString()\r\n        {\r\n            return Name;\r\n        }\r\n\r\n        // Accessed via reflection by SimpleHandlerInfo\r\n        private void SimpleHandler(object sender, EventArgs args)\r\n        {\r\n            HitCount++;\r\n            Debug.WriteLine(Name + \" | Times hit: \" + HitCount);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Tracking/UsageManager.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Reflection;\r\nusing System.Xml;\r\nusing System.Xml.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.IO;\r\nusing Klocman.Tools;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Tracking\r\n{\r\n    public static class UsageManager\r\n    {\r\n        private static readonly string StatsFilename = Program.AssemblyLocation + @\"\\UsageStatistics.xml\";\r\n        internal static List<UsageTracker> Trackers = new();\r\n        private static XDocument _currentData;\r\n        private static readonly object OperationLock = new();\r\n\r\n        public static bool IsCollectingData { get; private set; }\r\n\r\n        private static XDocument CurrentData\r\n        {\r\n            get\r\n            {\r\n                lock (OperationLock)\r\n                {\r\n                    if (_currentData == null)\r\n                    {\r\n                        XDocument doc;\r\n                        try\r\n                        {\r\n                            doc = XDocument.Load(StatsFilename);\r\n                            if (doc.Root == null || (doc.Root.Name != \"UsageStatistics\" || doc.Root.IsEmpty))\r\n                                throw new XmlException();\r\n                        }\r\n                        catch\r\n                        {\r\n                            doc = CreateNewDataDocument();\r\n                        }\r\n                        _currentData = doc;\r\n\r\n                        AppLaunchCount++;\r\n                    }\r\n                    return _currentData;\r\n                }\r\n            }\r\n        }\r\n\r\n        public static int AppLaunchCount\r\n        {\r\n            get\r\n            {\r\n                lock (OperationLock)\r\n                {\r\n                    var metadata = CurrentData.Root.GetOrCreateElement(\"Metadata\");\r\n                    var counter = metadata.GetOrCreateElement(\"LaunchCount\");\r\n                    int.TryParse(counter.Value, out var launchCount);\r\n                    return launchCount;\r\n                }\r\n            }\r\n            private set\r\n            {\r\n                lock (OperationLock)\r\n                {\r\n                    var metadata = CurrentData.Root.GetOrCreateElement(\"Metadata\");\r\n                    var counter = metadata.GetOrCreateElement(\"LaunchCount\");\r\n                    counter.SetValue(value);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Object used to send the usage data.\r\n        /// </summary>\r\n        public static DatabaseStatSender DataSender { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Finish tracking data and save results to the hard drive\r\n        /// </summary>\r\n        public static void FinishCollectingData()\r\n        {\r\n            lock (Trackers)\r\n            {\r\n                IsCollectingData = false;\r\n\r\n                foreach (var tracker in Trackers)\r\n                {\r\n                    SerializeToXml(tracker.Hooks);\r\n                }\r\n\r\n                // Save to disk\r\n                try\r\n                {\r\n                    CurrentData.Save(StatsFilename);\r\n                }\r\n                catch\r\n                {\r\n                    /*PremadeDialogs.GenericError(ex); // No need, not critical*/\r\n                }\r\n            }\r\n        }\r\n\r\n        public static void RemoveStoredData()\r\n        {\r\n            try\r\n            {\r\n                File.Delete(StatsFilename);\r\n            }\r\n            catch\r\n            {\r\n                //Ignore permission and read errors\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Send usage data specified mail address\r\n        /// </summary>\r\n        public static void SendUsageData()\r\n        {\r\n            if (DataSender == null)\r\n                throw new InvalidOperationException(\"DataSender must be set before sending data\");\r\n\r\n            lock (OperationLock)\r\n            {\r\n                DataSender.SendData(CurrentData.ToString(SaveOptions.DisableFormatting));\r\n            }\r\n        }\r\n\r\n        internal static void UsageTrackerDestructionCallback(UsageTracker tracker)\r\n        {\r\n            lock (Trackers)\r\n            {\r\n                if (Trackers.Contains(tracker))\r\n                    Trackers.Remove(tracker);\r\n\r\n                if (IsCollectingData)\r\n                    SerializeToXml(tracker.Hooks);\r\n            }\r\n        }\r\n\r\n        private static XDocument CreateNewDataDocument()\r\n        {\r\n            var tempDoc = new XDocument(new XDeclaration(\"1.0\", \"utf-8\", null), new XElement(\"UsageStatistics\"));\r\n\r\n            var metadata = tempDoc.Root.GetOrCreateElement(\"Metadata\");\r\n            metadata.Add(new XElement(\"ApplicationVersion\", Assembly.GetEntryAssembly()?.GetName().Version?.ToString() ?? \"Unknown\"));\r\n            metadata.Add(new XElement(\"SystemVersion\", Environment.OSVersion.VersionString));\r\n            metadata.Add(new XElement(\"Is64Bit\", ProcessTools.Is64BitProcess));\r\n            metadata.Add(new XElement(\"Locale\", CultureInfo.InstalledUICulture.ToString()));\r\n            //metadata.Add(new XElement(\"UserId\", WindowsTools.GetUserSid()));\r\n\r\n            var net = new XElement(\"Net\", string.Join(\"; \", NetFrameworkTools.GetInstalledFrameworkVersions()));\r\n            metadata.Add(net);\r\n\r\n            return tempDoc;\r\n        }\r\n\r\n        private static void SerializeToXml(IEnumerable<EventHook> hooks)\r\n        {\r\n            lock (OperationLock)\r\n            {\r\n                var root = CurrentData.Root.GetOrCreateElement(\"InterfaceStatistics\");\r\n                foreach (var mainHook in hooks)\r\n                {\r\n                    var parentElement = root.GetOrCreateElement(mainHook.ParentName);\r\n                    var fieldElement = parentElement.GetOrCreateElement(mainHook.FieldName);\r\n\r\n                    foreach (var singleHook in mainHook.Hooks)\r\n                    {\r\n                        if (singleHook.HitCount <= 0)\r\n                            continue;\r\n\r\n                        var element = fieldElement.GetOrCreateElement(singleHook.EventName);\r\n                        int.TryParse(element.Value, out var result);\r\n                        element.SetValue(singleHook.HitCount + result);\r\n                    }\r\n\r\n                    if (fieldElement.IsEmpty)\r\n                        fieldElement.Remove();\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Functions/Tracking/UsageTracker.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing System.Windows.Forms;\r\nusing Klocman.Forms.Tools;\r\n\r\nnamespace BulkCrapUninstaller.Functions.Tracking\r\n{\r\n    public sealed class UsageTracker : ReferencedComponent\r\n    {\r\n        private static readonly IEnumerable<string> EventFilters = new[] {\"Click\", \"DoubleClick\"};\r\n        private static readonly List<Type> TypeBlacklist = new();\r\n        // new[] { typeof(Forms.CustomMessageBox) });\r\n\r\n        private readonly List<EventHook> _hooks = new();\r\n        internal IEnumerable<EventHook> Hooks => _hooks;\r\n\r\n        public static void AddBlacklistType(Type typeToBlacklist)\r\n        {\r\n            TypeBlacklist.Add(typeToBlacklist);\r\n        }\r\n\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing)\r\n            {\r\n                UsageManager.UsageTrackerDestructionCallback(this);\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        private void HookToForm()\r\n        {\r\n            var type = ContainerControl.GetType();\r\n\r\n            var fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);\r\n            foreach (var field in fields)\r\n            {\r\n                var fieldType = field.FieldType;\r\n\r\n                if (typeof (Form).IsAssignableFrom(fieldType) || TypeBlacklist.Contains(fieldType))\r\n                    continue;\r\n\r\n                var targetEvents = fieldType.GetEvents(BindingFlags.Instance | BindingFlags.Public)\r\n                    .Where(x => EventFilters.Contains(x.Name)).ToList();\r\n                if (targetEvents.Count > 0)\r\n                    _hooks.Add(new EventHook(ContainerControl, field, targetEvents));\r\n            }\r\n        }\r\n\r\n        protected override void OnContainerInitialized(object obj, EventArgs args)\r\n        {\r\n            HookToForm();\r\n            UsageManager.Trackers.Add(this);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/NBugConfigurator.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Windows.Forms;\r\nusing Klocman.Tools;\r\nusing NBug;\r\nusing NBug.Core.Reporting.Info;\r\nusing NBug.Core.Submission;\r\nusing NBug.Core.Util.Serialization;\r\nusing NBug.Enums;\r\nusing Settings = NBug.Settings;\r\n\r\nnamespace BulkCrapUninstaller\r\n{\r\n    /// <summary>\r\n    ///     Can not be contained inside of a static class as it needs to be serialized\r\n    /// </summary>\r\n    [System.Diagnostics.CodeAnalysis.SuppressMessage(\"Design\", \"CA1051:Do not declare visible instance fields\", Justification = \"Used during serialization\")]\r\n    public class BugReportExtraInfo\r\n    {\r\n        public bool Is64Bit = ProcessTools.Is64BitProcess;\r\n        public string Locale = CultureInfo.InstalledUICulture.ToString();\r\n        public string SystemVersion = Environment.OSVersion.VersionString;\r\n\r\n        internal BugReportExtraInfo()\r\n        {\r\n        }\r\n    }\r\n\r\n    public static class NBugConfigurator\r\n    {\r\n        public static void SetupNBug()\r\n        {\r\n            Settings.UIMode = UIMode.Full;\r\n            Settings.UIProvider = UIProvider.WinForms;\r\n            Settings.SleepBeforeSend = 3;\r\n            Settings.MaxQueuedReports = 4;\r\n            Settings.StopReportingAfter = 10;\r\n            Settings.MiniDumpType = MiniDumpType.None;\r\n            Settings.WriteLogToDisk = false;\r\n            Settings.ExitApplicationImmediately = true;\r\n            Settings.HandleProcessCorruptedStateExceptions = false;\r\n\r\n            Settings.ReleaseMode = true;\r\n\r\n            Settings.Destinations.Add(new NBugDatabaseSenderWrapper());\r\n\r\n            AppDomain.CurrentDomain.UnhandledException += Handler.UnhandledException;\r\n            Application.ThreadException += Handler.ThreadException;\r\n        }\r\n\r\n        private class NBugDatabaseSenderWrapper : ProtocolBase\r\n        {\r\n            public override bool Send(string fileName, Stream file, Report report, SerializableException exception)\r\n            {\r\n                try\r\n                {\r\n                    report.CustomInfo = new BugReportExtraInfo();\r\n                    var data = string.Concat(\"<BugReport>\", report.ToString(), exception.ToString(), \"</BugReport>\");\r\n\r\n                    var compressed = CompressionTools.BrotliCompress(data);\r\n\r\n                    using var s = Program.HomeServerClient;\r\n                    var result = s.PostAsync(new Uri($\"SendCrashReport?userId={Properties.Settings.Default.MiscUserId}&data={Convert.ToBase64String(compressed)}\", UriKind.Relative), null!).Result;\r\n                    result.EnsureSuccessStatusCode();\r\n                }\r\n                catch (Exception e)\r\n                {\r\n                    Console.WriteLine(\"Failed to send crash report: \" + e);\r\n                    return false;\r\n                }\r\n                return true;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Program.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Net.Http;\r\nusing System.Net.NetworkInformation;\r\nusing System.Reflection;\r\nusing System.Runtime.InteropServices;\r\nusing System.Security.Principal;\r\nusing System.Xml.Linq;\r\nusing BulkCrapUninstaller.Forms;\r\nusing BulkCrapUninstaller.Functions.Ratings;\r\nusing BulkCrapUninstaller.Properties;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Tools;\r\nusing Microsoft.Win32;\r\nusing UninstallTools;\r\nusing UninstallTools.Factory;\r\n\r\nnamespace BulkCrapUninstaller\r\n{\r\n    //TODO This is a leftover class, extract the self installed detection logic and get rid of it\r\n    public static class Program\r\n    {\r\n        private static DirectoryInfo _assemblyLocation;\r\n        private static string _installedRegistryKeyName;\r\n        private static bool? _isInstalled;\r\n\r\n        public static DirectoryInfo AssemblyLocation\r\n        {\r\n            get\r\n            {\r\n                if (_assemblyLocation == null)\r\n                {\r\n                    var location = Assembly.GetAssembly(typeof(Program))?.Location;\r\n                    if (location == null) throw new InvalidOperationException(\"Failed to get entry assembly location\");\r\n                    if (Path.HasExtension(location))\r\n                        location = PathTools.GetDirectory(location);\r\n                    _assemblyLocation = new DirectoryInfo(location);\r\n                }\r\n                return _assemblyLocation;\r\n            }\r\n        }\r\n\r\n        public static Version AssemblyVersion => Assembly.GetExecutingAssembly().GetName().Version;\r\n\r\n        /// <summary>\r\n        ///     Do not call before CheckForOldSettings() completes\r\n        /// </summary>\r\n        public static bool EnableDebug => Debugger.IsAttached || Settings.Default.Debug;\r\n\r\n        /// <summary>\r\n        /// Don't use settings\r\n        /// </summary>\r\n        public static Uri ConnectionString { get; } = Debugger.IsAttached ? new Uri(@\"http://localhost:7721\") : new Uri(@\"http://bugsklocman.ddns.net:7721\");\r\n\r\n        public static string InstalledRegistryKeyName\r\n        {\r\n            get\r\n            {\r\n                if (_installedRegistryKeyName == null)\r\n                    GetInstalledRegKey();\r\n                return _installedRegistryKeyName;\r\n            }\r\n        }\r\n\r\n        public static bool IsAfterUpgrade { get; private set; }\r\n\r\n        /// <summary>\r\n        ///     Use setter to override the value\r\n        /// </summary>\r\n        public static bool IsInstalled\r\n        {\r\n            get\r\n            {\r\n                if (!_isInstalled.HasValue)\r\n                    _isInstalled = InstalledRegistryKeyName.IsNotEmpty();\r\n                return _isInstalled.Value;\r\n            }\r\n            internal set { _isInstalled = value; }\r\n        }\r\n\r\n        internal static string ConfigFileFullname { get; private set; }\r\n\r\n        /// <summary>\r\n        ///     Remove old or invalid setting files and make sure settings are ready to be used.\r\n        ///     Run before the settings are used, best at the very start of the application.\r\n        /// </summary>\r\n        internal static void PrepareSettings()\r\n        {\r\n            const string exeName = \"BCUninstaller\";\r\n\r\n            IsAfterUpgrade = false;\r\n            try\r\n            {\r\n                var dir = AssemblyLocation;\r\n                // Check if we are bundled with a launcher and place settings in the same folder as the launcher, so they are shared between different builds\r\n                if (dir.Name.StartsWith(\"win-\") && dir.Parent != null &&\r\n                    File.Exists(Path.Combine(dir.Parent.FullName, exeName + \".exe\"))) dir = dir.Parent;\r\n\r\n                var settingsDir = dir.FullName;\r\n                ConfigFileFullname = Path.Combine(settingsDir, exeName + \".settings\");\r\n\r\n                PortableSettingsProvider.PortableSettingsProvider.AppSettingsPathOverride = settingsDir;\r\n                PortableSettingsProvider.PortableSettingsProvider.ApplicationNameOverride = exeName;\r\n\r\n                var settingsXmlDocument = XDocument.Parse(File.ReadAllText(ConfigFileFullname));\r\n                if (settingsXmlDocument.Root == null) throw new FormatException(\"Missing root element\");\r\n                \r\n                var result = settingsXmlDocument.Root.Element(\"MiscVersion\");\r\n                if (result == null) throw new FormatException(\"Invalid version number\");\r\n                if (result.Value.Equals(\"Reset\")) throw new OperationCanceledException(\"Settings reset was requested\");\r\n\r\n                if (!string.IsNullOrWhiteSpace(result.Value) && new Version(result.Value) < AssemblyVersion)\r\n                    IsAfterUpgrade = true;\r\n\r\n                // One extra check to make sure loading and using the settings doesn't throw\r\n                // Initializes the Default settings object (unless it has been accessed before, which it shouldn't have)\r\n                Settings.Default.Reload();\r\n                Settings.Default.AdvancedSimulate = Settings.Default.AdvancedSimulate;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                if (ex is FileNotFoundException)\r\n                    Console.WriteLine(@\"Settings file not found, creating new one.\");\r\n                else if (ex is not OperationCanceledException)\r\n                    Console.WriteLine(@\"Failed to load settings from the config file: \" + ex);\r\n\r\n                File.Delete(ConfigFileFullname);\r\n                Settings.Default.Reload();\r\n            }\r\n\r\n            // Ensure the user ID is valid\r\n            if (Settings.Default.MiscUserId == 0)\r\n                Settings.Default.MiscUserId = GetUniqueUserId();\r\n\r\n            if (IsAfterUpgrade)\r\n                ClearCaches(false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get an ID that is unlikely to be duplicate but that should always return the same on current pc\r\n        /// </summary>\r\n        private static ulong GetUniqueUserId()\r\n        {\r\n            var windowsIdentity = WindowsIdentity.GetCurrent();\r\n\r\n            string networkIdentity;\r\n            try\r\n            {\r\n                var networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();\r\n                networkIdentity = string.Join(\"\", networkInterfaces.Select(x => x.GetPhysicalAddress().ToString()));\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                Console.WriteLine(e);\r\n                networkIdentity = e.ToString();\r\n            }\r\n\r\n            var idStr = windowsIdentity.User?.Value + string.Join(\"\", windowsIdentity.Claims.Select(x => x.Value)) + networkIdentity;\r\n            return UninstallerRatingManager.Utils.StableHash(idStr);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Check if this application is installed by looking for the registry key created by the installer.\r\n        /// If the key is not found it means this is most likely a portable version.\r\n        /// </summary>\r\n        private static void GetInstalledRegKey()\r\n        {\r\n            // This GUID is the AppID from the installer. It can end with an optional identifier if the installer had to create a new key because of a conflict.\r\n            const string appId = \"f4fef76c-1aa9-441c-af7e-d27f58d898d1\";\r\n            const string regUninstallersKeyDirect = @\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\";\r\n\r\n            try\r\n            {\r\n                using var regKey = Registry.LocalMachine.OpenSubKey(regUninstallersKeyDirect);\r\n\r\n                if (regKey == null)\r\n                    throw new ArgumentException(\"Could not open Software registry key\");\r\n\r\n                var keyNames = regKey.GetSubKeyNames().Where(x => x.Contains(appId, StringComparison.InvariantCultureIgnoreCase));\r\n\r\n                foreach (var keyName in keyNames)\r\n                {\r\n                    using var subKey = regKey.OpenSubKey(keyName, true);\r\n\r\n                    var installLocation = subKey?.GetStringSafe(RegistryFactory.RegistryNameInstallLocation);\r\n                    if (string.IsNullOrEmpty(installLocation)) continue;\r\n\r\n                    if (PathTools.SubPathIsInsideBasePath(installLocation, AssemblyLocation.FullName, true, true))\r\n                    {\r\n                        // We are installed!\r\n                        _installedRegistryKeyName = keyName;\r\n\r\n                        // Update the version number in case it changed, so the user can see it in the list of installed programs\r\n                        subKey.SetValue(\"DisplayVersion\", AssemblyVersion.ToString(), RegistryValueKind.String);\r\n                    }\r\n                }\r\n            }\r\n            catch\r\n            {\r\n                _installedRegistryKeyName = String.Empty;\r\n            }\r\n        }\r\n\r\n        public static void StartLogCleaner()\r\n        {\r\n            try\r\n            {\r\n                const string cleanerName = \"CleanLogs.bat\";\r\n                var cleanerPath = Path.Combine(AssemblyLocation.FullName, cleanerName);\r\n\r\n                if (!File.Exists(cleanerPath))\r\n                {\r\n                    Console.WriteLine(@\"WARNING: CleanLogs.bat doesn't exist, can't clean logs.\");\r\n                    return;\r\n                }\r\n\r\n                var cleanerUri = PathToUri(cleanerPath);\r\n                if (cleanerUri.IsUnc)\r\n                {\r\n                    // 'cmd.exe /c start' doesn't work with UNC paths, script has to run in foreground.\r\n                    Process.Start(new ProcessStartInfo(cleanerPath) { UseShellExecute = true });\r\n                }\r\n                else\r\n                {\r\n                    // Run cleanup script in minimized cmd window\r\n                    var ps = new ProcessStartInfo\r\n                    {\r\n                        WorkingDirectory = AssemblyLocation.FullName,\r\n                        FileName = \"cmd.exe\",\r\n                        Arguments = \"/c start /min \" + cleanerName,\r\n                        UseShellExecute = true,\r\n                        WindowStyle = ProcessWindowStyle.Minimized\r\n                    };\r\n                    Process.Start(ps);\r\n                }\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                // Ignore errors, not critical\r\n                Console.WriteLine(ex);\r\n            }\r\n        }\r\n\r\n        private static Uri PathToUri(string filePath)\r\n        {\r\n            try\r\n            {\r\n                return new Uri(filePath);\r\n            }\r\n            catch (UriFormatException)\r\n            {\r\n                filePath = Path.GetFullPath(filePath);\r\n                return new Uri(filePath);\r\n            }\r\n        }\r\n\r\n        public static void ClearCaches(bool showErrors)\r\n        {\r\n            try\r\n            {\r\n                MainWindow.CertificateCache.ClearChache();\r\n                UninstallToolsGlobalConfig.ClearChache();\r\n            }\r\n            catch (SystemException systemException)\r\n            {\r\n                if (showErrors)\r\n                    PremadeDialogs.GenericError(systemException);\r\n                else\r\n                    Console.WriteLine(systemException);\r\n            }\r\n        }\r\n\r\n        public static HttpClient HomeServerClient\r\n        {\r\n            get\r\n            {\r\n                var cl = new HttpClient();\r\n                cl.BaseAddress = ConnectionString;\r\n                return cl;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace BulkCrapUninstaller.Properties {\r\n    using System;\r\n    \r\n    \r\n    /// <summary>\r\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\r\n    /// </summary>\r\n    // This class was auto-generated by the StronglyTypedResourceBuilder\r\n    // class via a tool like ResGen or Visual Studio.\r\n    // To add or remove a member, edit your .ResX file then rerun ResGen\r\n    // with the /str option, or rebuild your VS project.\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\r\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    internal class Localisable {\r\n        \r\n        private static global::System.Resources.ResourceManager resourceMan;\r\n        \r\n        private static global::System.Globalization.CultureInfo resourceCulture;\r\n        \r\n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\r\n        internal Localisable() {\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Returns the cached ResourceManager instance used by this class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Resources.ResourceManager ResourceManager {\r\n            get {\r\n                if (object.ReferenceEquals(resourceMan, null)) {\r\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"BulkCrapUninstaller.Properties.Localisable\", typeof(Localisable).Assembly);\r\n                    resourceMan = temp;\r\n                }\r\n                return resourceMan;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Overrides the current thread's CurrentUICulture property for all\r\n        ///   resource lookups using this strongly typed resource class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Globalization.CultureInfo Culture {\r\n            get {\r\n                return resourceCulture;\r\n            }\r\n            set {\r\n                resourceCulture = value;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Default.\r\n        /// </summary>\r\n        internal static string DefaultLanguage {\r\n            get {\r\n                return ResourceManager.GetString(\"DefaultLanguage\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Empty.\r\n        /// </summary>\r\n        internal static string Empty {\r\n            get {\r\n                return ResourceManager.GetString(\"Empty\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to File not found..\r\n        /// </summary>\r\n        internal static string Error_FileNotFound {\r\n            get {\r\n                return ResourceManager.GetString(\"Error_FileNotFound\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Failed to save settings.\r\n        /// </summary>\r\n        internal static string Error_SaveSettingsFailed {\r\n            get {\r\n                return ResourceManager.GetString(\"Error_SaveSettingsFailed\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Select the directory with the applications to uninstall..\r\n        /// </summary>\r\n        internal static string FileTargeter_SelectDirectoryWithAppsToRemove {\r\n            get {\r\n                return ResourceManager.GetString(\"FileTargeter_SelectDirectoryWithAppsToRemove\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to GUID found.\r\n        /// </summary>\r\n        internal static string GuidFound {\r\n            get {\r\n                return ResourceManager.GetString(\"GuidFound\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to GUID missing.\r\n        /// </summary>\r\n        internal static string GuidMissing {\r\n            get {\r\n                return ResourceManager.GetString(\"GuidMissing\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Rating: {0}\r\n        ///\r\n        ///Positives:\r\n        ///{1}\r\n        ///\r\n        ///Negatives:\r\n        ///{2}.\r\n        /// </summary>\r\n        internal static string JunkRemove_Details_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"JunkRemove_Details_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Rating details.\r\n        /// </summary>\r\n        internal static string JunkRemove_Details_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"JunkRemove_Details_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Select down to....\r\n        /// </summary>\r\n        internal static string JunkRemove_SelectionBoxText {\r\n            get {\r\n                return ResourceManager.GetString(\"JunkRemove_SelectionBoxText\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Select where to save the backup. A new directory will be created..\r\n        /// </summary>\r\n        internal static string JunkRemoveWindow_SelectBackupDirectoryTitle {\r\n            get {\r\n                return ResourceManager.GetString(\"JunkRemoveWindow_SelectBackupDirectoryTitle\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Creating a restore point....\r\n        /// </summary>\r\n        internal static string LoadingDialogTitleCreatingRestorePoint {\r\n            get {\r\n                return ResourceManager.GetString(\"LoadingDialogTitleCreatingRestorePoint\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Loading Windows Features....\r\n        /// </summary>\r\n        internal static string LoadingDialogTitleLoadingWindowsFeatures {\r\n            get {\r\n                return ResourceManager.GetString(\"LoadingDialogTitleLoadingWindowsFeatures\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Searching for leftovers....\r\n        /// </summary>\r\n        internal static string LoadingDialogTitleLookingForJunk {\r\n            get {\r\n                return ResourceManager.GetString(\"LoadingDialogTitleLookingForJunk\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Populating uninstaller list....\r\n        /// </summary>\r\n        internal static string LoadingDialogTitlePopulatingList {\r\n            get {\r\n                return ResourceManager.GetString(\"LoadingDialogTitlePopulatingList\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Running post-uninstall commands....\r\n        /// </summary>\r\n        internal static string LoadingDialogTitlePostUninstallCommands {\r\n            get {\r\n                return ResourceManager.GetString(\"LoadingDialogTitlePostUninstallCommands\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Running pre-uninstall commands....\r\n        /// </summary>\r\n        internal static string LoadingDialogTitlePreUninstallCommands {\r\n            get {\r\n                return ResourceManager.GetString(\"LoadingDialogTitlePreUninstallCommands\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Removing leftovers....\r\n        /// </summary>\r\n        internal static string LoadingDialogTitleRemovingJunk {\r\n            get {\r\n                return ResourceManager.GetString(\"LoadingDialogTitleRemovingJunk\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Searching for updates....\r\n        /// </summary>\r\n        internal static string LoadingDialogTitleSearchingForUpdates {\r\n            get {\r\n                return ResourceManager.GetString(\"LoadingDialogTitleSearchingForUpdates\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Archived.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_Archived {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_Archived\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Extensions.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_Extensions {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_Extensions\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Friendly Name.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_FriendlyName {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_FriendlyName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Has Private Key.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_HasPrivateKey {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_HasPrivateKey\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Issuer.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_Issuer {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_Issuer\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Issuer Name.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_IssuerName {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_IssuerName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Not After.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_NotAfter {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_NotAfter\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Not Before.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_NotBefore {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_NotBefore\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Private Key.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_PrivateKey {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_PrivateKey\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Public Key.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_PublicKey {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_PublicKey\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Raw Data.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_RawData {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_RawData\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Serial Number.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_SerialNumber {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_SerialNumber\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Signature Algorithm.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_SignatureAlgorithm {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_SignatureAlgorithm\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Subject.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_Subject {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_Subject\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Subject Name.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_SubjectName {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_SubjectName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Thumbprint.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_Thumbprint {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_Thumbprint\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Version.\r\n        /// </summary>\r\n        internal static string LocalizedX509Certificate2_Version {\r\n            get {\r\n                return ResourceManager.GetString(\"LocalizedX509Certificate2_Version\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Renaming &quot;{0}&quot;.\r\n        /// </summary>\r\n        internal static string MainWindow_Rename_Description {\r\n            get {\r\n                return ResourceManager.GetString(\"MainWindow_Rename_Description\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Rename selected entry.\r\n        /// </summary>\r\n        internal static string MainWindow_Rename_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MainWindow_Rename_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Processing detected applications, {0} left....\r\n        /// </summary>\r\n        internal static string MainWindow_Statusbar_ProcessingUninstallers {\r\n            get {\r\n                return ResourceManager.GetString(\"MainWindow_Statusbar_ProcessingUninstallers\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Refreshing startup information....\r\n        /// </summary>\r\n        internal static string MainWindow_Statusbar_RefreshingStartup {\r\n            get {\r\n                return ResourceManager.GetString(\"MainWindow_Statusbar_RefreshingStartup\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Ready.\r\n        /// </summary>\r\n        internal static string MainWindow_Statusbar_StatusReady {\r\n            get {\r\n                return ResourceManager.GetString(\"MainWindow_Statusbar_StatusReady\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to {0} uninstallers selected.\r\n        /// </summary>\r\n        internal static string MainWindow_Statusbar_StatusSelection {\r\n            get {\r\n                return ResourceManager.GetString(\"MainWindow_Statusbar_StatusSelection\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to {0} uninstallers in total, {1}.\r\n        /// </summary>\r\n        internal static string MainWindow_Statusbar_Total {\r\n            get {\r\n                return ResourceManager.GetString(\"MainWindow_Statusbar_Total\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Following uninstallers will be restarted loudly:.\r\n        /// </summary>\r\n        internal static string MessageBoxes_AskToRetryFailedQuietAsLoud_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Do you want to try running quiet uninstallers that failed as loud?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_AskToRetryFailedQuietAsLoud_Header {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Some uninstallers failed.\r\n        /// </summary>\r\n        internal static string MessageBoxes_AskToRetryFailedQuietAsLoud_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to There are unsaved changes in the opened uninstall list that will be lost by closing it..\r\n        /// </summary>\r\n        internal static string MessageBoxes_AskToSaveUninstallList_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_AskToSaveUninstallList_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Save changes to the opened uninstall list?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_AskToSaveUninstallList_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_AskToSaveUninstallList_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Save uninstall list.\r\n        /// </summary>\r\n        internal static string MessageBoxes_AskToSaveUninstallList_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_AskToSaveUninstallList_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to This will take you less than a minute but help the development greatly! All feedback is appreciated, be it a bug report, feature request or a simple thanks!\r\n        ///\r\n        ///You can send it later from the top menu bar (Help-&gt;Submit feedback)..\r\n        /// </summary>\r\n        internal static string MessageBoxes_AskToSubmitFeedback_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_AskToSubmitFeedback_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Would you like to send feedback concerning BCU?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_AskToSubmitFeedback_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_AskToSubmitFeedback_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Error details: .\r\n        /// </summary>\r\n        internal static string MessageBoxes_BackupFailedQuestion_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_BackupFailedQuestion_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Registry backup failed, do you want to continue anyway?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_BackupFailedQuestion_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_BackupFailedQuestion_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to You will be able to roll back all changes by double-clicking it afterwards.\r\n        ///\r\n        ///Files and directories will be moved to the recycle bin, you can restore them from there..\r\n        /// </summary>\r\n        internal static string MessageBoxes_BackupRegistryQuestion_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_BackupRegistryQuestion_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Do you want to create a registry backup before continuing?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_BackupRegistryQuestion_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_BackupRegistryQuestion_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Select exactly one uninstaller from the list. If you are using check-boxes make sure to check them..\r\n        /// </summary>\r\n        internal static string MessageBoxes_CanSelectOnlyOneItemInfo_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to You need to select only one entry for this action.\r\n        /// </summary>\r\n        internal static string MessageBoxes_CanSelectOnlyOneItemInfo_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Action failed.\r\n        /// </summary>\r\n        internal static string MessageBoxes_CanSelectOnlyOneItemInfo_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to This uninstaller kind does not support renaming ({0})..\r\n        /// </summary>\r\n        internal static string MessageBoxes_CantRenameUninstallerKind_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_CantRenameUninstallerKind_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Cannot rename {0}.\r\n        /// </summary>\r\n        internal static string MessageBoxes_CantRenameUninstallerKind_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_CantRenameUninstallerKind_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Remaining uninstallers should be able to complete without any user intervention. You should still check in from time to time in case one of the uninstallers crashes..\r\n        /// </summary>\r\n        internal static string MessageBoxes_CanWalkAwayInfo_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_CanWalkAwayInfo_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to You can now leave the computer.\r\n        /// </summary>\r\n        internal static string MessageBoxes_CanWalkAwayInfo_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_CanWalkAwayInfo_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstall progress.\r\n        /// </summary>\r\n        internal static string MessageBoxes_CanWalkAwayInfo_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_CanWalkAwayInfo_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Removing items marked with confidence lower than Good can be very dangerous! It is recommended that you verify that every single item is safe to delete..\r\n        /// </summary>\r\n        internal static string MessageBoxes_ConfirmLowConfidenceQuestion_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Do you really want to modify low-confidence items?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_ConfirmLowConfidenceQuestion_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Following items will be removed from registry and will disappear from the uninstaller list, but will not be uninstalled.\r\n        ///\r\n        ///{0}.\r\n        /// </summary>\r\n        internal static string MessageBoxes_DeleteRegKeysConfirmation_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_DeleteRegKeysConfirmation_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Are you sure you want to remove selected uninstaller entries?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_DeleteRegKeysConfirmation_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_DeleteRegKeysConfirmation_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Remove keys from registry.\r\n        /// </summary>\r\n        internal static string MessageBoxes_DeleteRegKeysConfirmation_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_DeleteRegKeysConfirmation_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to \r\n        ///\r\n        ///Error details:\r\n        ///.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Error_details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Error_details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to If the error persists try saving to a different directory, for example to the desktop..\r\n        /// </summary>\r\n        internal static string MessageBoxes_ExportFailed_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ExportFailed_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to An error has been encountered while saving exported data.\r\n        /// </summary>\r\n        internal static string MessageBoxes_ExportFailed_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ExportFailed_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Export failed.\r\n        /// </summary>\r\n        internal static string MessageBoxes_ExportFailed_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ExportFailed_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Following command failed to execute:\r\n        ///{0}.\r\n        /// </summary>\r\n        internal static string MessageBoxes_ExternalCommandFailed_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ExternalCommandFailed_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to External execute failed.\r\n        /// </summary>\r\n        internal static string MessageBoxes_ExternalCommandFailed_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ExternalCommandFailed_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Failed to run some of the uninstallers.\r\n        /// </summary>\r\n        internal static string MessageBoxes_ForceRunUninstallFailedError_Header {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ForceRunUninstallFailedError_Header\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Following  uninstallers failed to execute, likely because of a collision. Please wait for other uninstallers to finish and try again. \r\n        ///{0}\r\n        ///\r\n        ///You can try disabling collision detection in the settings, but it is not recommended..\r\n        /// </summary>\r\n        internal static string MessageBoxes_ForceRunUninstallFailedError_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ForceRunUninstallFailedError_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Force uninstallation.\r\n        /// </summary>\r\n        internal static string MessageBoxes_ForceRunUninstallFailedError_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ForceRunUninstallFailedError_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to BCUninstaller is uninstalling {0} application(s).\r\n        /// </summary>\r\n        internal static string MessageBoxes_GetSystemRestoreDescription {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_GetSystemRestoreDescription\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Make sure you have not included any of the following characters:\r\n        ///{0}.\r\n        /// </summary>\r\n        internal static string MessageBoxes_InvalidNewEntryName_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_InvalidNewEntryName_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Supplied name is empty or contains invalid characters.\r\n        /// </summary>\r\n        internal static string MessageBoxes_InvalidNewEntryName_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_InvalidNewEntryName_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Please note that this feature is intended only for power users that understand how it works. It is not necessary to remove these files and they will not affect system performance in any meaningful way..\r\n        /// </summary>\r\n        internal static string MessageBoxes_LookForJunkQuestion_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_LookForJunkQuestion_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Do you want to look for leftovers from performed uninstallation(s)?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_LookForJunkQuestion_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_LookForJunkQuestion_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to The selected application has no modify command specified. It might be necessary to uninstall, and then install it again to change install settings..\r\n        /// </summary>\r\n        internal static string MessageBoxes_ModifyCommandMissing_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ModifyCommandMissing_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Selected application can&apos;t be modified.\r\n        /// </summary>\r\n        internal static string MessageBoxes_ModifyCommandMissing_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ModifyCommandMissing_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Modify application.\r\n        /// </summary>\r\n        internal static string MessageBoxes_ModifyCommandMissing_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ModifyCommandMissing_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to The v4.0 framework is optional, but recommended. The features that rely on the framework will be disabled until you install it..\r\n        /// </summary>\r\n        internal static string MessageBoxes_Net4Missing_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Net4Missing_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to .NET Framework v4.0 was not found, some features will be disabled.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Net4Missing_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Net4Missing_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to .NET Framework v4.0 not found.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Net4Missing_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Net4Missing_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to No leftovers were found. There still might be some residue left so you can run a temporary file cleaner like BleachBit..\r\n        /// </summary>\r\n        internal static string MessageBoxes_NoJunkFoundInfo_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_NoJunkFoundInfo_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to No leftovers were found.\r\n        /// </summary>\r\n        internal static string MessageBoxes_NoJunkFoundInfo_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_NoJunkFoundInfo_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Make sure that your network cable is plugged in. If you are using Wi-Fi ensure that you have good signal strength..\r\n        /// </summary>\r\n        internal static string MessageBoxes_NoNetworkConnected_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_NoNetworkConnected_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Can&apos;t connect to the internet, there are no networks available..\r\n        /// </summary>\r\n        internal static string MessageBoxes_NoNetworkConnected_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_NoNetworkConnected_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Open on-line content.\r\n        /// </summary>\r\n        internal static string MessageBoxes_NoNetworkConnected_Open_online_content {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_NoNetworkConnected_Open_online_content\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to There was nothing to copy to the clipboard. Either no selected uninstaller has this bit of information or you didn&apos;t select anything..\r\n        /// </summary>\r\n        internal static string MessageBoxes_NothingToCopy_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_NothingToCopy_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to To uninstall applications you must first select them from the list view. If you are using check-boxes, make sure that they are checked..\r\n        /// </summary>\r\n        internal static string MessageBoxes_NoUninstallersSelectedInfo_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_NoUninstallersSelectedInfo_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to No uninstallers were selected, nothing to uninstall.\r\n        /// </summary>\r\n        internal static string MessageBoxes_NoUninstallersSelectedInfo_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_NoUninstallersSelectedInfo_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Run uninstallers.\r\n        /// </summary>\r\n        internal static string MessageBoxes_NoUninstallersSelectedInfo_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_NoUninstallersSelectedInfo_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to No directories to open.\r\n        /// </summary>\r\n        internal static string MessageBoxes_OpenDirectories_NoDirsToOpen {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_OpenDirectories_NoDirsToOpen\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to This action will open {0} directories at once, are you sure you want to continue?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to An error has been encountered while opening the directory.\r\n        /// </summary>\r\n        internal static string MessageBoxes_OpenDirectoryError_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_OpenDirectoryError_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Failed to load selected files.\r\n        /// </summary>\r\n        internal static string MessageBoxes_OpenUninstallListError_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_OpenUninstallListError_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to If you choose to keep current selection it will be merged with the opened list(s).\r\n        /// </summary>\r\n        internal static string MessageBoxes_OpenUninstallListQuestion_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_OpenUninstallListQuestion_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Do you want to keep current selection?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_OpenUninstallListQuestion_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_OpenUninstallListQuestion_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to An error has been encountered while opening the URL.\r\n        /// </summary>\r\n        internal static string MessageBoxes_OpenUrlError_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_OpenUrlError_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to No URLs to open.\r\n        /// </summary>\r\n        internal static string MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to This action will open {0} URLs at once, are you sure you want to continue?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Protected entry: {0}\r\n        ///\r\n        ///To modify this entry you need to disable uninstaller protection from the settings panel..\r\n        /// </summary>\r\n        internal static string MessageBoxes_ProtectedItemError_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ProtectedItemError_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Selected entry is protected and can not be modified.\r\n        /// </summary>\r\n        internal static string MessageBoxes_ProtectedItemError_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ProtectedItemError_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Affected entries:\r\n        ///{0}\r\n        ///\r\n        ///To modify these entries you need to disable uninstaller protection from the settings sidebar.You can remove them from the task and continue with other items if you want..\r\n        /// </summary>\r\n        internal static string MessageBoxes_ProtectedItemsWarningQuestion_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ProtectedItemsWarningQuestion_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Some entries are protected and can not be modified.\r\n        /// </summary>\r\n        internal static string MessageBoxes_ProtectedItemsWarningQuestion_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ProtectedItemsWarningQuestion_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Following items are missing quiet uninstallers:\r\n        ///{0}\r\n        ///\r\n        ///Do you want to use &quot;loud&quot; uninstallers for those items, or should they be removed them from the task?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_QuietUninstallersNotAvailableQuestion_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Some applications can&apos;t be uninstalled quietly.\r\n        /// </summary>\r\n        internal static string MessageBoxes_QuietUninstallersNotAvailableQuestion_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Ratings not available.\r\n        /// </summary>\r\n        internal static string MessageBoxes_RatingErrorTitle {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_RatingErrorTitle\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to You have to enable ratings from the settings first..\r\n        /// </summary>\r\n        internal static string MessageBoxes_RatingsDisabled_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_RatingsDisabled_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to You can&apos;t rate applications that are not installed properly..\r\n        /// </summary>\r\n        internal static string MessageBoxes_RatingUnavailable_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_RatingUnavailable_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Remember choice.\r\n        /// </summary>\r\n        internal static string MessageBoxes_RememberChoiceCheckbox {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_RememberChoiceCheckbox\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to All of your settings will be lost permanently. BCUninstaller will have to restart to complete this action..\r\n        /// </summary>\r\n        internal static string MessageBoxes_ResetSettingsConfirmation_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ResetSettingsConfirmation_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Are you sure you want to reset all application settings?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_ResetSettingsConfirmation_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_ResetSettingsConfirmation_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Some settings will not take effect until the application is restarted..\r\n        /// </summary>\r\n        internal static string MessageBoxes_RestartNeededForSettingChangeQuestion_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Do you want to restart BCU to apply new settings?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_RestartNeededForSettingChangeQuestion_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Change application settings.\r\n        /// </summary>\r\n        internal static string MessageBoxes_RestartNeededForSettingChangeQuestion_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Failed to save the list to a file.\r\n        /// </summary>\r\n        internal static string MessageBoxes_SaveUninstallListError_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_SaveUninstallListError_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to An error has been encountered while opening the search page.\r\n        /// </summary>\r\n        internal static string MessageBoxes_SearchOnlineError_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_SearchOnlineError_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Nothing to search for.\r\n        /// </summary>\r\n        internal static string MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to I&apos;m sorry to see you leave! If you have a minute or two please drop a word on why you uninstalled BCU on my website (http://klocmansoftware.weebly.com/). I&apos;ll do my best to fix any legitimate problems..\r\n        /// </summary>\r\n        internal static string MessageBoxes_SelfUninstallQuestion_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_SelfUninstallQuestion_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Are you sure you want to uninstall BCUninstaller?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_SelfUninstallQuestion_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_SelfUninstallQuestion_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstall BCUninstaller.\r\n        /// </summary>\r\n        internal static string MessageBoxes_SelfUninstallQuestion_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_SelfUninstallQuestion_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to If you are unsure if applications you are uninstalling are important or required to system stability it is recommended to create a restore point. \r\n        /// If anything breaks after the procedure you can then use System Restore to roll back the changes..\r\n        /// </summary>\r\n        internal static string MessageBoxes_SysRestoreBeginQuestion_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_SysRestoreBeginQuestion_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Do you want to create a restore point before continuing?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_SysRestoreBeginQuestion_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_SysRestoreBeginQuestion_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to The restore point WAS NOT CREATED, you will not be able to restore changes! Do you want to continue with the uninstallation anyway?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_SysRestoreContinueAfterError_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_SysRestoreContinueAfterError_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Failed to create a new restore point.\r\n        /// </summary>\r\n        internal static string MessageBoxes_SysRestoreContinueAfterError_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_SysRestoreContinueAfterError_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Selecting &quot;Terminate&quot; will immediately close the running uninstaller and might result in uninstallation not being completed. Usually it is possible to run the uninstaller again to finish the uninstallation.\r\n        ///\r\n        ///Alternatively you can skip waiting for this process. Skipping will let the uninstaller continue working while the task moves on to the next item. Keep in mind that some uninstallers can fail to run until the skipped process finishes..\r\n        /// </summary>\r\n        internal static string MessageBoxes_TaskSkip_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_TaskSkip_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Do you want to skip waiting for the currently running uninstaller?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_TaskSkip_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_TaskSkip_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Skip currently running task.\r\n        /// </summary>\r\n        internal static string MessageBoxes_TaskSkip_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_TaskSkip_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Stopping the task prematurely will not revert any changes. Currently running uninstaller won&apos;t be stopped, the task will wait for it to finish..\r\n        /// </summary>\r\n        internal static string MessageBoxes_TaskStopConfirmation_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_TaskStopConfirmation_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Are you sure you want to stop currently running task?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_TaskStopConfirmation_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_TaskStopConfirmation_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Stop current uninstall task.\r\n        /// </summary>\r\n        internal static string MessageBoxes_TaskStopConfirmation_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_TaskStopConfirmation_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Copy to clipboard.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Copy_to_clipboard {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Copy_to_clipboard\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Create restore point.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Create_restore_point {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Create_restore_point\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Junk/Leftover removal.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Junk_Leftover_removal {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Junk_Leftover_removal\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Leftover removal.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Leftover_removal {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Leftover_removal\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Modify protected item.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Modify_protected_items {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Modify_protected_items\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Open directories.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Open_directories {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Open_directories\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Open Uninstall List.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Open_Uninstall_List {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Open_Uninstall_List\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Open URLs.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Open_urls {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Open_urls\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Quiet uninstall.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Quiet_uninstall {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Quiet_uninstall\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Rename uninstaller.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Rename_uninstaller {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Rename_uninstaller\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Restore default settings.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Restore_default_settings {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Restore_default_settings\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Save Uninstall List.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Save_Uninstall_List {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Save_Uninstall_List\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Search for updates.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Search_for_updates {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Search_for_updates\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Search on line.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Search_online {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Search_online\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Submit feedback.\r\n        /// </summary>\r\n        internal static string MessageBoxes_Title_Submit_feedback {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_Title_Submit_feedback\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Another uninstall task is already running. Please wait for it to finish and then try again..\r\n        /// </summary>\r\n        internal static string MessageBoxes_UninstallAlreadyRunning_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UninstallAlreadyRunning_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstall from directory.\r\n        /// </summary>\r\n        internal static string MessageBoxes_UninstallFromDirectory_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UninstallFromDirectory_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Make sure that you selected the correct directory and that the application&apos;s executables are still present..\r\n        /// </summary>\r\n        internal static string MessageBoxes_UninstallFromDirectoryNothingFound_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to No applications were found in the specified directory.\r\n        /// </summary>\r\n        internal static string MessageBoxes_UninstallFromDirectoryNothingFound_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Do you want to run this uninstaller?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_UninstallFromDirectoryUninstallerFound_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Found an uninstaller for {0}.\r\n        /// </summary>\r\n        internal static string MessageBoxes_UninstallFromDirectoryUninstallerFound_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Selected uninstaller doesn&apos;t have a valid Guid for use with MsiExec..\r\n        /// </summary>\r\n        internal static string MessageBoxes_UninstallMsiGuidMissing_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UninstallMsiGuidMissing_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to The selected entry can&apos;t be uninstalled using the MsiExec installer.\r\n        /// </summary>\r\n        internal static string MessageBoxes_UninstallMsiGuidMissing_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UninstallMsiGuidMissing_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstall using Msi.\r\n        /// </summary>\r\n        internal static string MessageBoxes_UninstallMsiGuidMissing_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UninstallMsiGuidMissing_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to BCUninstaller will automatically download the update and apply it after a restart. Please note that you might lose your settings in the process. \r\n        ///\r\n        ///Changelog:\r\n        ///- {0}\r\n        ///\r\n        ///Warning: During update the folder &quot;Update&quot; and the file &quot;Update.zip&quot; inside of the BCU directory will be removed..\r\n        /// </summary>\r\n        internal static string MessageBoxes_UpdateAskToDownload_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UpdateAskToDownload_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to New version {0} is available, do you want to upgrade now?.\r\n        /// </summary>\r\n        internal static string MessageBoxes_UpdateAskToDownload_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UpdateAskToDownload_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Make sure that BCUninstaller is not blocked in your firewall and that you have a working internet connection.\r\n        ///\r\n        ///.\r\n        /// </summary>\r\n        internal static string MessageBoxes_UpdateFailed_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UpdateFailed_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Encountered an error while checking for updates.\r\n        /// </summary>\r\n        internal static string MessageBoxes_UpdateFailed_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UpdateFailed_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to No updates were found at this time, you have the latest version.\r\n        ///\r\n        ///Want some functionality added or a bug fixed? Please send me your feedback using &quot;Help-&gt;Submit feedback&quot; menu..\r\n        /// </summary>\r\n        internal static string MessageBoxes_UpdateUptodate_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UpdateUptodate_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Current version is up to date.\r\n        /// </summary>\r\n        internal static string MessageBoxes_UpdateUptodate_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"MessageBoxes_UpdateUptodate_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Welcome to BCU version {0}!.\r\n        /// </summary>\r\n        internal static string NewsPopup_FirstStartTitle {\r\n            get {\r\n                return ResourceManager.GetString(\"NewsPopup_FirstStartTitle\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to BCU has been updated to v{0}!.\r\n        /// </summary>\r\n        internal static string NewsPopup_UpdatedTitle {\r\n            get {\r\n                return ResourceManager.GetString(\"NewsPopup_UpdatedTitle\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Not available.\r\n        /// </summary>\r\n        internal static string NotAvailable {\r\n            get {\r\n                return ResourceManager.GetString(\"NotAvailable\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Finishing up....\r\n        /// </summary>\r\n        internal static string Progress_Finishing {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_Finishing\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Loading icons.\r\n        /// </summary>\r\n        internal static string Progress_Finishing_Icons {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_Finishing_Icons\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Error.\r\n        /// </summary>\r\n        internal static string PropertiesWindow_Table_Error {\r\n            get {\r\n                return ResourceManager.GetString(\"PropertiesWindow_Table_Error\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to File doesn&apos;t exist..\r\n        /// </summary>\r\n        internal static string PropertiesWindow_Table_ErrorDoesntExist {\r\n            get {\r\n                return ResourceManager.GetString(\"PropertiesWindow_Table_ErrorDoesntExist\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to This application does not have a valid registry entry.\r\n        /// </summary>\r\n        internal static string PropertiesWindow_Table_ErrorMissingRegistry {\r\n            get {\r\n                return ResourceManager.GetString(\"PropertiesWindow_Table_ErrorMissingRegistry\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to This application does not have a valid uninstaller.\r\n        /// </summary>\r\n        internal static string PropertiesWindow_Table_ErrorMissingUninstaller {\r\n            get {\r\n                return ResourceManager.GetString(\"PropertiesWindow_Table_ErrorMissingUninstaller\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Nothing to display. This application is uninstalled using Windows Installer (MsiExec)..\r\n        /// </summary>\r\n        internal static string PropertiesWindow_Table_ErrorMsi {\r\n            get {\r\n                return ResourceManager.GetString(\"PropertiesWindow_Table_ErrorMsi\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Certificate is missing.\r\n        /// </summary>\r\n        internal static string PropertiesWindow_Table_ErrorNoCertificate {\r\n            get {\r\n                return ResourceManager.GetString(\"PropertiesWindow_Table_ErrorNoCertificate\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Name.\r\n        /// </summary>\r\n        internal static string PropertiesWindow_Table_Name {\r\n            get {\r\n                return ResourceManager.GetString(\"PropertiesWindow_Table_Name\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Value.\r\n        /// </summary>\r\n        internal static string PropertiesWindow_Table_Value {\r\n            get {\r\n                return ResourceManager.GetString(\"PropertiesWindow_Table_Value\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to {0} applications.\r\n        /// </summary>\r\n        internal static string RateTitle_Counted {\r\n            get {\r\n                return ResourceManager.GetString(\"RateTitle_Counted\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Average rating: {0}; My rating: {1}.\r\n        /// </summary>\r\n        internal static string RatingEntry_ToString {\r\n            get {\r\n                return ResourceManager.GetString(\"RatingEntry_ToString\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to There are no entries matching your search criteria..\r\n        /// </summary>\r\n        internal static string SearchNothingFoundMessage {\r\n            get {\r\n                return ResourceManager.GetString(\"SearchNothingFoundMessage\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to x64.\r\n        /// </summary>\r\n        internal static string Str64Bit {\r\n            get {\r\n                return ResourceManager.GetString(\"Str64Bit\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to DEBUG.\r\n        /// </summary>\r\n        internal static string StrDebug {\r\n            get {\r\n                return ResourceManager.GetString(\"StrDebug\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to BCUninstaller export\r\n        ///Publisher | Version | Date | Size | Registry | Uninstaller type | Uninstall string | Quiet uninstall string | Comments.\r\n        /// </summary>\r\n        internal static string StrExportHeader {\r\n            get {\r\n                return ResourceManager.GetString(\"StrExportHeader\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Portable.\r\n        /// </summary>\r\n        internal static string StrIsPortable {\r\n            get {\r\n                return ResourceManager.GetString(\"StrIsPortable\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Failed to call the API.\r\n        /// </summary>\r\n        internal static string SysRestoreGenericError {\r\n            get {\r\n                return ResourceManager.GetString(\"SysRestoreGenericError\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to No valid files or directories were selected. Make sure you have access to them, and they aren&apos;t marked as system files..\r\n        /// </summary>\r\n        internal static string TargetWindow_NoFilesSelected_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"TargetWindow_NoFilesSelected_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Look for application.\r\n        /// </summary>\r\n        internal static string TargetWindow_NoFilesSelected_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"TargetWindow_NoFilesSelected_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Failed to find any applications inside {0}.\r\n        /// </summary>\r\n        internal static string Uninstaller_GetApplicationsFromDirectories_NothingFound_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Look for applications.\r\n        /// </summary>\r\n        internal static string Uninstaller_GetApplicationsFromDirectories_NothingFound_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Does nothing.\r\n        /// </summary>\r\n        internal static string UninstallerListDoubleClickAction_DoNothing {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerListDoubleClickAction_DoNothing\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Opens properties.\r\n        /// </summary>\r\n        internal static string UninstallerListDoubleClickAction_Properties {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerListDoubleClickAction_Properties\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstalls.\r\n        /// </summary>\r\n        internal static string UninstallerListDoubleClickAction_Uninstall {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerListDoubleClickAction_Uninstall\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Select directory with applications that you want to remove..\r\n        /// </summary>\r\n        internal static string UninstallFromDirectory_FolderBrowse {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallFromDirectory_FolderBrowse\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Scanning specified directory....\r\n        /// </summary>\r\n        internal static string UninstallFromDirectory_ScanningTitle {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallFromDirectory_ScanningTitle\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Putting PC to sleep in {0}s. Uncheck the sleep checkbox to cancel..\r\n        /// </summary>\r\n        internal static string UninstallProgressWindow_StatusPuttingToSleepInSeconds {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Task finished.\r\n        /// </summary>\r\n        internal static string UninstallProgressWindow_TaskDone {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallProgressWindow_TaskDone\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstalling.\r\n        /// </summary>\r\n        internal static string UninstallProgressWindow_Uninstalling {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallProgressWindow_Uninstalling\", resourceCulture);\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>الاسم</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>القيمه</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>فارغ</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>موجود GUID</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>مفقود GUID</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>حدد لاسفل الى...</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>لم يتم العثور على الملف.</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>تشغيل الاوامر بعد الغاء التثبيت...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>تشغيل الاوامر السابقة لالغاء التثبيت...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>انشاء نقطه استعاده...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>بحث عن البقايا ...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>ملء قائمه الغاء التثبيت...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>ازاله البقايا...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>بحث عن التحديثات...</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value>  محمول</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>API فشل استدعاء </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>فشل النسخ الاحتياطي لمكتب السجل ، هل تريد المتابعة على ايه حال ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>تفاصيل الخطا:</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>ازاله البقايا</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>فشل الاجراء</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>تحتاج الى تحديد ادخال واحد فقط لهذا الاجراء</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>حدد الغاء تثبيت واحد بالضبط من القائمة. اذا انت تستخدم خانات الاختيار للتاكد من التحقق منها.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>البحث عن التحديثات</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>فتح المحتوي على الخط</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>لا يمكن الاتصال بالانترنت ، لا توجد شبكات متوفرة.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>تاكد من توصيل كبل الشبكة. اذا كنت تستخدم واي فاي ضمان ان لديك قوه اشاره جيده.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>ارسال الملاحظات</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value>x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value>DEBUG</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>لا توجد ادخالات مطابقه لمعايير البحث.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>Bcuninstaller تصدير\r\nالناشر | الاصدار | التاريخ | الحجم | التسجيل | الغاء التثبيت نوع | الغاء تثبيت السلسلة | سلسله الغاء التثبيت بهدوء|</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>هل تريد انشاء نسخه احتياطيه لمكتب السجل قبل المتابعة ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>سوف تكون قادره على دحر جميع التغييرات عن طريق النقر المزدوج بعد ذلك.\r\n\r\nسيتم نقل الملفات والدلائل ىلى سله المحذوفات ، يمكنك استعادتها من هناك.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>فتح الروابط</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>لا توجد روابط لفتحها</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>تعديل المادة المحمية</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>الادخالات المتاثره:\r\n{0}\r\n\r\nلتعديل هذه الادخالات تعطيل الحماية من الغاء التثبيت من الشريط الجانبي الاعدادات. يمكنك ازالتها من المهمة ومتابعه المواد الاخرى اذا اردت.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>لادخال المحمي: {0}\r\n\r\nلتعديل هذا الادخال ، تحتاج الى تعطيل حماية الغاء التثبيت من لوحه الاعدادات.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>المواد التالية مفقوده غير مثبتات بهدوء:\r\n{0}\r\n\r\nهل تريد استخدام \"بصوت عال\" للالغاء تثبيت هذه المواد ، او يجب ازالتها من المهمة ؟</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت بهدوء</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>استعاده الاعدادات الافتراضية</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>سيتم فقدان كافة اعداداتك بشكل دائم. سيكون لديك المثبت لاعاده تشغيل لاكمال هذا الاجراء.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>فتح قائمه الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>لم يتم انشاء نقطه الاستعادة ، لن تكون قادرا على استعاده التغييرات! هل تريد متابعه الغاء التثبيت على ايه حال ؟</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>اعاده تسميه \"{0}\" </value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>اعاده تسميه الادخال المحدد</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>انتهت المهمة</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>تثبيت</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>تذكر الاختيار</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>خطا</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>الملف غير موجود.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>(MsiExec) لا شيء للعرض. يتم الغاء تثبيت هذا التطبيق باستخدام مثبت الوندوز  </value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>جاهز</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>تم تحديد {0} الغاء التثبيت</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>{0} الغاء التثبيت في المجموع ، {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>فشل تنفيذ الامر التالي:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>فشل التنفيذ الخارجي</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>افتراضي</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>لن تصبح بعض الاعدادات نافذه المفعول حتى يتم اعاده تشغيل التطبيق.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>لتطبيق الاعدادات الجديدة BCU هل تريد اعاده تشغيل ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>تغيير اعدادات التطبيق</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>الشهادة مفقوده</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>معالجه الغاء التثبيت {0}</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>هل تريد تخطي انتظار الغاء التثبيت قيد التشغيل حاليا ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>تخطي المهمة قيد التشغيل حاليا</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>هناك مهمة اخرى لالغاء التثبيت قيد التشغيل بالفعل. الرجاء الانتظار حتى تنتهي ثم حاول مره اخرى.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>التقييم: {0} \r\n\r\nايجابي:\r\n{1}\r\n\r\nنفي:\r\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>تفاصيل التصنيف</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>لا يوجد ادخال مكتب تسجيل صالح لهذا التطبيق</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>ليس لهذا التطبيق الغاء تثبيت صالح</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>يتم الان تحميل ميزات الوندوز...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>تحديث معلومات بدء التشغيل...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>لا توجد دلائل للفتح</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>غير متاحه</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>التصنيفات غير متوفرة</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>يجب عليك تمكين التصنيفات من الاعدادات اولا.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>لا يمكنك تقييم التطبيقات التي لم يتم تثبيتها بشكل صحيح.</value>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} التطبيقات</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>متوسط التقييم: {0}; تقييمي: {1} </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>فشلت عمليه التثبيت التالية في التنفيذ ، ومن المحتمل بسبب حدوث اصطدام. الرجاء الانتظار لانهاء التثبيت الاخرى والمحاولة مره اخرى.\r\n{0}\r\n\r\nيمكنك محاولة تعطيل الكشف عن الاصطدام في الاعدادات ، ولكن لا ينصح به.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>اجبار الغاء التثبيت </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>فشل تشغيل بعض المثبتات</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>NET Framework v4.0 لم يتم العثور على</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>سيتم تعطيل بعض الميزات NET Framework v4.0 لم يتم العثور على</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>المصدر</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>الموضوع</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>المؤرشف</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>امتدادات</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>اسم مالوف</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>اسم المصدر</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>ليس بعد</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>ليس قبل</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>مفتاح خاص</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>لديه مفتاح خاص</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>مفتاح عمومي</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>البيانات الخام</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>الرقم التسلسلي</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>اسم الموضوع</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>خوارزميه التوقيع</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>الاصدار</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>بصمه الابهام</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>فشل حفظ الاعدادات</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>الانتهاء...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>تحميل الايقونات</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>بحث عن التطبيق</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>لم يتم تحديد ايه ملفات او دلائل صالحه. تاكد من ان لديك حق الوصول اليها ، ولا يتم وضع علامة عليها كملفات نظام.</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>بحث عن التطبيقات</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>فشل العثور على ايه تطبيقات داخل {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>تعديل التطبيق</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>لا يمكن تعديل التطبيق المحدد</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\r\n    <value>التطبيق المحدد ليس له امر تعديل محدد. قد يكون من الضروري الغاء تثبيته ، ثم تثبيته مره اخرى لتغيير اعدادات التثبيت.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>سيؤدي تحديد \"الانهاء\" الى اغلاق الغاء التثبيت الذي تم تشغيله فورا وقد ينتج عنه عدم اكتمال عمليه الغاء التثبيت. وعاده ما يكون من الممكن لتشغيل الغاء التثبيت مره اخرى لانهاء الغاء التثبيت\r\n\r\nبدلا من ذلك يمكنك تتخطى انتظار هذه العملية. التخطي سيسمح الغاء التثبيت الاستمرار في العمل اثناء انتقال المهمة الى المادة التالية. تذكر ان بعض المثبتات قد تفشل في التشغيل حتى تنتهي عمليه التخطي.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>اختياري ، ولكن ينصح به. سيتم تعطيل الميزات التي تعتمد على الاطار حتى تقوم بتثبيته. v4.0 الاطار </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>فشل بعض غير المثبتين</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>هل تريد محاولة تشغيل المثبتات بهدوء التي فشلت بصوت عال ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>سيتم اعاده تشغيل المثبتات التالية بصوت عال:</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>يتم الان مسح الدليل المحدد...</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>حدد الدليل مع التطبيقات التي تريد ازالتها.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت من الدليل</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>لم يتم العثور على اي تطبيقات في الدليل المحدد</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>تاكد من تحديد الدليل الصحيح ومن ان الملفات التنفيذية للتطبيق لا تزال موجودة.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>تم العثور على الغاء التثبيت ل {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>هل تريد تشغيل هذا الغاء التثبيت ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>؟ BCU هل ترغب في ارسال الملاحظات بشان</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>سوف ياخذك اقل من دقيقه ولكن مساعده التنمية بشكل كبير! ويقدر جميع ردود الفعل ، ان يكون تقرير الشوائب ، وطلب ميزه او بفضل بسيط!\r\n\r\n(يمكنك ارسالها لاحقا من شريط القوائم العلوي (مساعده-&lt; ارسال ملاحظات.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>الاصدار الحالي محدث</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>لم يتم العثور على ايه تحديثات في هذا الوقت ، لديك الاصدار الاحدث.\r\n\r\nتريد بعض الوظائف المضافة او الشوائب الثابتة ؟ الرجاء ارسال ملاحظاتك \"باستخدام القائمة \"مساعده-&lt; ارسال ملاحظات.\r\n</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>صادف خطا اثناء التحقق من وجود تحديثات</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>تاكد من عدم حظر المثبت في جدار حمايتك ومن ان لديك اتصال بالانترنت يعمل.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>الاصدار الجديد {0} متوفر ، هل تريد الترقية الان ؟</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>سيقوم المثبت بتحميل التحديث تلقائيا وتطبيقه بعد اعاده التشغيل. يرجى ملاحظه انه قد تفقد اعداداتك في العملية.\r\n\r\nالتغييرات:\r\n-{0}\r\n\r\nستتم ازاله.BCU تحذير: اثناء تحديث المجلد \"تحديث\" و الملف \"التحديث .ضغط\" داخل الدليل</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Msi الغاء التثبيت باستخدام </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>msiexec لا يمكن الغاء تثبيت الادخال المحدد باستخدام المثبت   </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>MsiExec صالح للاستخدام مع Guid الغاء التثبيت المحدد ليس له</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>ايقاف مهمة الغاء التثبيت الحالية</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>هل تريد بالتاكيد ايقاف تشغيل المهمة حاليا ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>لن يؤدي ايقاف المهمة قبل الاوان الى ارجاع ايه تغييرات. لن يتم ايقاف تشغيل الغاء التثبيت حاليا ، ستنتظر المهمة حتى تنتهي.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>انشاء نقطه استعاده</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>فشل انشاء نقطه استعاده جديده</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>تقدم الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>يمكنك الان ترك الحاسوب</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>يجب ان يكون التثبيت المتبقي قادرا على اكمال دون اي تدخل من قبل المستخدم. يجب عليك الاختيار ما زالت في من وقت لاخر في حاله واحده من تعطل التركيب.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>ازاله الخردة/البقايا</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>هل تريد حقا تعديل المواد ذات الثقة المنخفضة ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>ازاله المواد التي تحمل الثقة اقل من جيده يمكن ان تكون خطيره جدا! من المستحسن التحقق من ان كل مادة واحدة امنة لحذف.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>ازاله مفاتيح من مكتب التسجيل</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>هل تريد بالتاكيد ازاله ادخالات الغاء التثبيت المحددة ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>سيتم ازاله المواد التالية من مكتب التسجيل وسوف تختفي من قائمه الغاء التثبيت ، ولكن لن يتم الغاء تثبيت.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>فشل التصدير</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>تمت مصادفه خطا اثناء حفظ البيانات المصدرة</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>اذا استمر الخطا في محاولة الحفظ الى دليل مختلف ، على سبيل المثال الى سطح المكتب.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>يتم ازاله تثبيت التطبيق (التطبيقات) {0} </value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>اعاده تسميه الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>الاسم الذي تم توفيره فارغ او يحتوي على احرف غير صالحه</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>تاكد من انك لم تقم بتضمين اي من الاحرف التالية:\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>هل تريد البحث عن البقايا التي تم اجراؤها من غير المنشات ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>يرجى ملاحظه ان هذه الميزة مخصصه فقط لمستخدمي الطاقة الذين يفهمون كيفيه عملها. ليس من الضروري ازاله هذه الملفات وانها لن تؤثر على اداء النظام باي طريقه مجديه.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>لم يتم العثور على البقايا </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>BleachBit لم يتم العثور علي البقايا. لا يزال هناك قد يكون بعض البقايا متبقية حتى تتمكن من تشغيل ملف مؤقت المنظف مثل</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>ليس هناك شيء للنسخ الى الحافظة. اما اي الغاء التثبيت المحدد لديه هذا القليل من المعلومات او انك لم تحدد اي شيء.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>نسخ الى الحافظة</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>فتح الدلائل</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>سيقوم هذا الاجراء بفتح {0} دليل في نفس الوقت ، هل تريد بالتاكيد المتابعة ؟</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>بحث عن الخط</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>لا شيء للبحث عنة</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>الغاء تثبيت المثبت</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>هل تريد بالتاكيد الغاء تثبيت المثبت ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\nتفاصيل الخطا:</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>سافعل ما بوسعي لاصلاح اي مشاكل مشروعه (http://klocmansoftware.weebly.com/).على موقعي  BCU  انا اسف لرؤيتك ترحل اذا كان لديك دقيقه او اثنتين يرجى اسقاط  كلمه واحده لماذا قمت بالغاء تثبيت</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>هل تريد انشاء نقطه استعاده قبل المتابعة ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>اذا كنت غير متاكد اذا كانت التطبيقات التي تقوم بالغاء تثبيتها هامه او مطلوبه لاستقرار النظام فمن المستحسن انشاء نقطه استعاده.\r\nاذا كان اي شيء فواصل بعد الاجراء يمكنك استخدام استعاده النظام لاسترجاع التغييرات.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>تمت مصادفه خطا اثناء فتح صفحه البحث</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>حفظ قائمه الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>فشل حفظ القائمة في ملف</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>هل تريد بالتاكيد اعاده تعيين كافة اعدادات التطبيق ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>لا يمكن الغاء تثبيت بعض التطبيقات بهدوء</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>بعض الادخالات محمية ولا يمكن تعديلها</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>الادخال المحدد محمي ولا يمكن تعديله</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>حدث خطا اثناء فتح الرابط</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>هل تريد الاحتفاظ بالتحديد الحالي ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>تمت مصادفه خطا اثناء فتح الدليل</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>فشل تحميل الملفات المحددة</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>لم يتم تحديد اي المثبتات ، لا شيء للغاء</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>تشغيل الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>لالغاء تثبيت التطبيقات يجب اولا تحديدها من عرض القائمة. اذا كنت تستخدم خانات الاختيار ، تاكد من ان يتم التحقق منها.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>اذا اخترت الاحتفاظ بالتحديد الحالي سيتم دمجه مع القائمة (القوائم)المفتوحة</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>سيقوم هذا الاجراء بفتح رابط {0} في نفس الوقت ، هل تريد بالتاكيد المتابعة ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>حفظ قائمه الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>حفظ التغييرات في قائمه الغاء التثبيت المفتوحة ؟</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>توجد تغييرات غير محفوظه في قائمه الغاء التثبيت المفتوحة سيتم فقدانها عند اغلاقها.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>حدد الدليل مع التطبيقات لالغاء التثبيت.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>حدد مكان حفظ النسخة الاحتياطية. سيتم انشاء دليل جديد.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Vytvoření bodu obnovení ...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Vyhledávání pozůstatků ...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>Vyplnění seznamu odinstalací ...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Odstranění pozůstatků ...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Hledání aktualizací ...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>Nejsou k dispozici žádné záznamy odpovídající hledanému řetězeci.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>BCUninstaller export\r\nVydavatel | Verze | Datum | Velikost | Registr | Typ odinstalátoru | Odinstalovat řetězec | Tichá odinstalace řetězece | Komentáře</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value>Přenosná</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>Nepodařilo se volání API</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Zálohování registru selhalo, chcete přesto pokračovat?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Podrobnosti o chybě:</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Odstranění pozůstatků</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nPodrobnosti o chybě:\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Chcete vytvořit zálohu registru před pokračováním?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Budete mít možnost se vrátit zpět všechny změny dvojitým kliknutím na něj později.\r\n\r\nSoubory a adresáře budou přesunuty do koše, můžete je obnovit tam.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>Akce se nezdařila</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>Musíte vybrat pouze jednu položku pro tuto akci</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>Vyberte přesně jednu položku ze seznamu. Používáte-li zaškrtávací políčka, ujistěte se, že jsou vybrány.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Vyhledat aktualizace</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Otevřená on-line obsah</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>Nelze se připojit k internetu, není k dispozici žádné připojení k síti.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Ujistěte se, že síťový kabel je zapojen. Pokud používáte Wi-Fi, ujistěte, že máte dobrou sílu signálu.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Odeslat zpětnou vazbu</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>Chcete poslat zpětnou vazbu týkající se BCU?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>Bude vám trvat méně než minutu, ale muže nám to pomoc při vývoji programu! Všechny názory a připomínky jsou vítány!\r\n\r\nMůžete ji poslat později přes pozici v horním menu (Nápověda-&gt; Odeslat zpětné vazby).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>Současná verze je aktuální</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>Nebyly nalezeny žádné aktualizace, máte nejnovější verzi programu.\r\n\r\nTy čekají na nové funkce nebo zlepšit chybu? Dejte mi vědět, přes menu \"Nápověda-&gt; Odeslat zpětné vazby\".</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Došlo k chybě při kontrole aktualizací</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Ujistěte se, že BCUninstaller není blokován ve vašem firewallu, a že máte funkční připojení k internetu.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>Nová verze {0} je k dispozici, chcete upgradovat teď?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>BCUninstaller automaticky stáhne aktualizaci a aplikuje po restartu. Vezměte prosím na vědomí, že může dojít ke ztrátě nastavení v procesu.\r\n\r\nchangelog:\r\n- {0}\r\n\r\nUpozornění: Během aktualizace bude odstraněna složka \"Update\" a soubor \"Update.zip\" uvnitř adresáře BCU.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Odinstalace pomocí Msi</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>Vybraná položka nelze odinstalovat pomocí instalátoru msiexec</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>Vybraný odinstalátor nemá platnou GUID pro použití s Msiexec.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Zastavit aktuální úkol odinstalaci</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Jste si jisti, že chcete právě zastavit běžící úlohu?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Zastavení úkolu předčasně nebude možné vrátit žádné změny. V současné době běží odinstalování nebude zastaveno, bude úkol čekat na  dokončení.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Vytvořit bod obnovení</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Nepodařilo se vytvořit nový bod obnovení</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value>x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value>DEBUG</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>Odinstalační proces</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>Nyní můžete opustit počítač</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>Ostatní odinstalace jsou schopen se dokončit bez vašeho zásahu. Přesto, tu a tam zkontrolujte, zda některá z odinstalací, nezaznamenala neočekávanou chybu.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Nevyžádané/Zbylé odstranění</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Jste si jisti, že chcete změnit položky s nízkou duvěryhodností?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Odebrat prvky s nízkou úrovní důvěry je velmi nebezpečné, pečlivě před odstraněním zkontrolujte každou položku.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Odstranit klíče od registru</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Jste si jisti, že chcete odstranit vybrané položky?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Následující položky budou odstraněny z registru a zmizí ze seznamu aplikací, ale není možné je odinstalovat.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>Export selhal</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>Došlo k chybě při ukládání exportovaných dat</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>Pokud chyba přetrvává, zkuste uložit do jiného adresáře, například na plochu.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>BCUninstaller odinstaluje aplikace {0}</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>Přejmenovat odinstalátor</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>Zadané jméno je prázdné nebo obsahuje nepovolené znaky</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Ujistěte se, že jste nezahrnuli některý z následujících znaků:\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Chcete se podívat na zbytky z provedených odinstalaci ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Vezměte prosím na vědomí, že tato funkce je určena pouze pro pokročilé uživatele, aby pochopili, jak to funguje. Není nutné, tyto soubory odebrat a nebudou mít vliv na výkon systému významným způsobem.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>Nebyly nalezeny žádné zbytky</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>Nebyl nalezen žádný zbytek. Aby se ujistil, můžete spustit další program pro čištění smetí, např. BleachBit.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>Nebylo co zkopírovat do schránky. Buď není vybraný odinstalátor nebo nějaké informace, nebo jste nevybrali nic.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>Kopírovat do schránky</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Otevřené adresáře</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>Tato akce otevře {0} adresářů okamžitě, jsou si jisti, že chcete pokračovat?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Hledání Online</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>Nic k vyhledání</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Odinstalovat BCUninstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Jste si jisti, že chcete odinstalovat BCUninstaller?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Je mi líto, že odcházíte! Pokud máte minutu nebo dvě, prosím napište slovo o tom, proč jste odinstalovali BCU na mých webových stránkách (http://klocmansoftware.weebly.com/). Budu se snažit opravit legitimní problémy.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Chcete vytvořit bod obnovení před instalací?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Pokud si nejste jisti, zda aplikace, které chcete odinstalovat, jsou důležité nebo nutné pro stabilitou systému doporučuje se vytvořit bod obnovení.\r\n  Kdyby se něco poškodilo po zákroku pak můžete použít nástroje Obnovení systému a vrátit změny zpět.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>Byla nalezena chyba při otevírání vyhledávací stránku</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Uložit seznam odinstalací</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Nepodařilo se uložení seznamu do souboru</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Jste si jisti, že chcete obnovit všechna nastavení aplikace?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Některé aplikace nelze odinstalovat tiše</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Některé položky jsou chráněné a nelze změnit</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>Vybraný záznam je chráněn a nelze změnit</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>Byla nalezena chyba při otevírání URL</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Chcete zachovat aktuální výběr?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>Byla nalezena chyba při otevírání adresáře</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Nepodařilo se načíst vybrané soubory</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>Nebyli vybrány odinstalace, není co odinstalovat</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>Spustit odinstalace</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>K odinstalování aplikace je nutné nejprve ji vyberat ze zobrazého seznamu. Pokud používáte zaškrtávacích políček, ujistěte se, že jsou vybrány.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Pokud se rozhodnete zachovat aktuální výběr, bude sloučen do otevřeného seznamu</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>Tato akce otevře {0} URL ihned, jste si jisti, že chcete pokračovat?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>Otevřít URL</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>Žádné URL k otevření</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Změnit chráněné položky</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Dotčené údaje:\r\n{0}\r\n\r\nChcete-li změnit tyto položky, potřebujete vypnout ochranu odinstalátoru z postranního panelu nastavení. Můžete je odstranit z úkolu, a pokračovat s dalšími položkami, pokud chcete.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>Chráněná položka: {0}\r\n\r\nChcete-li změnit tuto položku, potřebujete vypnout ochranu odinstalátoru z panelu nastavení.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Následující položky nemají tichou odinstalaci:\r\n{0}\r\n\r\nPonechat je v úloze a použijte \"hlasité\" odinstalace nebo zcela odstranit z úkolu?</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Tichá odinstalace</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Obnovit výchozí nastavení</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Všechna nastavení budou natrvalo ztraceny. BCUninstaller bude muset restartovat k dokončení této akce.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Otevřít seznam odinstalovat</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>Bod obnovení nebyl vytvořen, nebudete moci obnovit změny! Chcete pokračovat v odinstalaci ?</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>Přejmenování \"{0}\"</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Přejmenovat vybrané položky</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>Úlohá dokončena</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Odinstalace</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Pamatovat si výběr</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Chyba</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>Soubor neexistuje.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Nic k zobrazení. Tato aplikace je odinstalovat pomocí Windows Installer (msiexec).</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Název</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Hodnota</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Prázdné</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>GUID nalezeno</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>GUID chybí</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Vyberte až na ...</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Soubor nenalezen.</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Spuštění po-odinstalační příkazy ...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Spuštění před-odinstalační příkazy ...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Připraven</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>{0} odinstalace vybraných</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>Celkem {0} odinstalováno, {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>Provedení následujícího příkazu se nezdařilo:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>Chyba při vykonání příkazu</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>Výchozí</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Některá nastavení se projeví až po restartu aplikace.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Chcete restartovat BCU pro použít nového nastavení?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Změna nastavení aplikace</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>Certifikát chybí</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Zpracování odinstalace ({0})</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>Volba \"Ukončit\" se okamžitě uzavře běžící odinstalace a může způsobit že odinstalace není dokončena. Obvykle je možné spustit odinstalátor znovu a dokončit odinstalování.\r\n\r\nPřípadně můžete přeskočit čekání na tento proces. Přeskakování umožní v odinstalaci pokračovat, zatímco úkol přesune na další položku. Mějte na paměti, že některé odinstalace mohou selhat, pokud proces přeskočí a nedokončí.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>Chcete přeskočit čekání na spuštění odinstalování?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Přeskočit aktuálně běžící úlohy</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Další odinstalace probíhá. Prosím, vyčkejte na dokončení procesu a zkuste to znovu.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Hodnocení: {0}\r\n\r\nPozitivní:\r\n{1}\r\n\r\nNegativní:\r\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Podrobnosti o hodnocení</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>Tato aplikace nemá platnou položku registru</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>Tato aplikace nemá platný odinstalalátor</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Windows Vlastnosti se Načítájí ...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>Aktualizace startup informací ...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>Žádné adresáře pro otevření</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>Není dostupný</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} aplikací</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Hodnocení není k dispozici.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>Musíte hodnocení povolit při prvním nastavení.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>Nelze hodnotit aplikace, které nejsou správně nainstalovány.</value>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Průměrné hodnocení: {0}; Mé hodnocení: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>Odinstalace programů se nezdařila, pravděpodobně kvůli kolizim. Počkejte na ostatní dokončení odinstalací a akci opakujte.  \r\n{0}\r\n\r\nMůžete zkusit zakázat detekci kolizí v nastavení, není doporučeno.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Vynutit odinstalaci</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>Nepodařilo se spustit některé odinstalace programů</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>.NET framework v4.0 nebyla nalezena.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>.NET framework v4.0 nebylo nalezeno, budou zakázány některé funkce</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>Framework v4.0 je nepovinný, ale doporučený. Funkce které spoléhají na framework budou zakázány, dokud nebude nainstalován.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Některé odinstalace selhaly</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>Chcete si vyzkoušet tichý chod odinstalace, pokud selhala hlasitá?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>Následující odinstalace bude hlasitá:</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>Vyhledávání zadaného adresáře...</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Vyberte adresář s aplikacemi, které chcete odstranit.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>Odinstalovat z adresáře</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>V zadaném adresáři nebyly nalezeny žádné aplikace</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Ujistěte se, že jste vybrali správného adresáře a že spustitelné soubory aplikace jsou stále přítomny.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Našel pro odinstalaci {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>Chcete spustit odinstalační program?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Vydavatel</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Předmět</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Archivováno</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Rozšíření</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Název popisu </value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Název vystavitele</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>Ne po</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>Ne před</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Soukromý klíč</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>Has Soukromý klíč</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Veřejný klíč</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Nezpracovaná Data</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Sériové číslo</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Název předmětu</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Algoritmus podpisu</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Verze</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Miniatura</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Nepodařilo se uložit nastavení</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Dokončuje se ...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>Načtení ikon</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>Vyhledat aplikaci</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>Nebyly vybrány žádné platné soubory nebo adresáře. Ujistěte se, že k nim máte přístup a nejsou označeny jako systémové soubory.</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>Vyhledat aplikace</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Nepodařilo se najít žádné aplikace uvnitř {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>Změnit aplikaci</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>Vybranou aplikaci nelze změnit.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\r\n    <value>Vybraná aplikace nemá žádný příkaz pro úpravu. Bude nutné ji odinstalovat a znovu jej nainstalovat</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>Uložit seznam odinstalace</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>Uložit změny do seznamu otevřených odinstalací?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>V otevřeném odinstalačním seznamu jsou neuložené změny, které budou ztraceny zavřením.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>Vyberte adresář s aplikacemi, které chcete odinstalovat.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>Vyberte, kam chcete zálohu uložit. Bude vytvořen nový adresář.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Erstelle Wiederherstellungspunkt...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Suche nach Programmresten...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>Fülle die Uninstaller Liste...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Entferne Programmreste...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Suche nach Updates...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>Es gibt keine Einträge, die Ihrem Suchbegriff entsprechen.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>BCUninstaller Export\r\nHerausgeber | Version | Datum | Größe | Registry | Uninstallertyp | Uninstallanweisung | Uninstallanweisung (still) | Kommentar</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value>Portabel</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>Fehler beim Aufruf der API</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Sicherung der Registry ist fehlgeschlagen. Trotzdem fortfahren?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Fehlerdetails:</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Entfernen von Resten</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nFehlerdetails:\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Möchten Sie eine Sicherung der Registry erstellen, bevor Sie fortfahren?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Sie können alle Änderungen zurücksetzen, in dem Sie später darauf doppelklicken.\r\n\r\nDateien und Verzeichnisse werden in den Papierkorb veschoben, von wo Sie sie wiederherstellen können.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>Aktion fehlgeschlagen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>Sie müssen nur einen Eintrag für diese Aktion auswählen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>Einen bestimmten Uninstaller aus der Liste auswählen. Bei Verwendung von Checkboxen, vor Ausführung überprüfen!</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Suche nach Updates</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Online-Inhalte öffnen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>Keine Verbindung zum Internet. Es sind keine Netzwerke verfügbar.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Stellen Sie sicher, dass das Netzwerkkabel angeschlossen ist. Bei Verwendung von Wi-Fi achten Sie auf eine gute Signalstärke.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Feedback senden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>Möchten Sie mir ein Feedback zu BCU senden? </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>Es wird Sie weniger als eine Minute kosten und der Programm-Entwicklung enorm helfen! Jede Art Feedback ist willkommen, sei es Fehlerbericht, Feature-Anfrage oder ein einfaches Danke!\r\n\r\nSie können es auch später senden aus dem Top-Menü (Hilfe-&gt; Feedback senden).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>Version ist auf aktuellem Stand</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>Aktuell gibt es keine Updates. Sie verwenden die neueste Version.\r\n\r\nMöchten Sie Funktionen hinzugefügt oder einen Fehler behoben haben? Bitte senden Sie mir Ihr Feedback über das Menü \"Hilfe-&gt; Feedback senden\".</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Fehler beim Suchen nach Updates</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Stellen Sie sicher, dass BCUninstaller in der Firewall nicht blockiert wird und Sie eine funktionierende Internetverbindung haben.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>Neue Version {0} ist verfügbar, möchten sie jetzt aktualisieren?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>BCUninstaller wird automatisch das Update herunterladen und es nach einem Neustart anwenden. Bitte beachten Sie, dass Sie Ihre Einstellungen in den Prozess verloren gehen können.\r\n\r\nÄnderungsprotokoll:\r\n- {0}\r\n\r\nAchtung: während der Aktualisierung werden der Ordner \"Update\" und die Datei \"Update.zip\" innerhalb des BCU-Verzeichnisses entfernt.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Deinstallation mit Msi</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>Ausgewählter Eintrag kann mit dem MsiExec-Installer nicht deinstalliert werden. </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>Ausgewählter Uninstaller hat keine gültige Guid für die Verwendung mit MsiExec.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Aktuellen Deinstallations-Task beenden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Laufenden Task wirklich beenden?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Vorzeitiges Beenden des Tasks macht Änderungen nicht rückgängig.\r\nLaufender Uninstaller wird nicht gestoppt, der Task wartet auf seinen Abschluss.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Wiederherstellungspunkt erstellen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Konnte keinen neuen Wiederherstellungspunkt erstellen</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value>x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value>DEBUG</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>Deinstallations-Fortschritt</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>Sie können nun den Computer verlassen.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>Verbliebene Uninstaller sollten ohne weiteren Eingriff abgeschlossen werden können.\r\nVon Zeit zu Zeit sollten Sie kontrollieren, ob nicht einer der Uninstaller abgestürzt ist.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Müll/Programmreste entfernen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Wirklich Elemente mit niedrigem Vertrauensgrad ändern?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Das Entfernen von Elementen mit niedrigerem Vertrauensgrad als GUT kann sehr gefährlich sein! Stellen Sie sicher, dass jedes Element sicher zu entfernen ist.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Schlüssel aus der Registry entfernen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Wirklich die ausgewählten Uninstaller-Einträge entfernen?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Folgende Elemente werden aus der Registry entfernt und verschwinden aus der Uninstaller-Liste, werden aber nicht deinstalliert.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>Export fehlgeschlagen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>Fehler beim Speichern der exportierten Daten</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>Tritt der Fehler weiter auf, versuchen Sie, in ein anderes Verzeichnis zu sichern, z.B. den Desktop</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>BCUninstaller deinstalliert {0} Anwendung(en)</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>Uninstaller umbenennen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>Angegebener Name ist leer oder enthält ungültige Zeichen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Stellen Sie sicher, dass Sie keines der folgenden Zeichen verwendet haben:\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Nach durchgeführter Deinstallation nach Programmresten suchen?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Hinweis: dieses Feature ist nur für erfahrene Anwender, die verstehen, wie es funktioniert. Es ist nicht erforderlich, diese Dateien zu entfernen, weil sie die Systemleistung nicht bedeutend beeinträchtigen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>Keine Programm-Rückstände gefunden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>Keine Elemente gefunden. Mögliche Rückstände können Sie mit einem temporären Dateireiniger wie BleachBit entfernen.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>Es gab nichts in die Zwischenablage zu kopieren. Sie haben entweder nichts ausgewählt oder die Information stammt vom Uninstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>In Zwischenablage kopieren</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Verzeichnisse öffnen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>Diese Aktion öffnet {0} Verzeichnisse auf einmal. Sind Sie sicher, dass Sie fortfahren möchten?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Online-Suche</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>Nichts zu suchen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>BCUninstaller deinstallieren</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Möchten Sie BCUninstaller wirklich deinstallieren?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Tut mir leid, Sie gehen zu sehen! Wenn Sie eine Minute Zeit haben, schreiben Sie mir kurz etwas über Ihre Gründe auf meiner Website (http://klocmansoftware.weebly.com/). Ich werde mein Bestes tun, um berechtigte Probleme zu beheben.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Wiederherstellungspunkt erstellen, bevor Sie fortfahren?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Wenn Sie unsicher sind, ob die Anwendungen, die Sie deinstallieren, wichtig oder für die Systemstabilität erforderlich sind, ist es empfehlenswert, einen Wiederherstellungspunkt zu erstellen.\r\nSollte etwas schief gehen, können Sie mittels Systemwiederherstellung die Änderungen zurücknehmen.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>Beim Öffnen der Seite \"Suche\" ist ein Fehler aufgetreten</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Deinstallations-Liste speichern</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Liste konnte nicht in Datei gespeichert werden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Sind Sie sicher, dass Sie alle Einstellungen zurücksetzen möchten?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Für manche Anwendungen geht keine stille Deinstallation</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Einige Einträge sind geschützt und können nicht verändert werden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>Gewählter Eintrag ist geschützt und kann nicht verändert werden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>Beim Öffnen der URL ist ein Fehler aufgetreten</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Möchten Sie die aktuelle Auswahl beibehalten?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>Beim Öffnen des Verzeichnisses ist ein Fehler aufgetreten</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Konnte gewählte Dateien nicht laden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>Keine Uninstaller ausgewählt. Nichts zu deinstallieren</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>Uninstaller ausführen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>Um Anwendungen zu deinstallieren müssen Sie sie zuerst aus der Listenansicht auswählen. Wenn Sie Checkboxen verwenden, stellen Sie sicher, dass sie aktiviert sind.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Wenn Sie die aktuelle Auswahl behalten möchten, wird sie mit der geöffneten Liste zusammengeführt</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>Diese Aktion öffnet {0} URLs gleichzeitig. Sind Sie sicher, dass Sie fortfahren möchten?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>URLs öffnen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>Keine URLs zu öffnen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Geschütztes Element verändern</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Betroffene Einträge:\r\n{0}\r\n\r\nUm diese Einträge zu ändern, müssen Sie aus der Einstellungen Seitenleiste den Schutz der Uninstaller deaktivieren. Sie können sie aus dem Task entfernen und mit anderen fortfahren</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>Geschützter Eintrag: {0}\r\n\r\nUm diesen Eintrage zu ändern, müssen Sie aus dem Bedienfeld Einstellungen den Schutz der Uninstaller deaktivieren.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Folgene Elemente haben keine 'stillen' Uninstaller:\r\n{0}\r\n\r\nMöchten Sie für diese Elemente die Standard Uninstaller verwenden oder sollen die Einträge aus dem Task entfernt werden?</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Stille Deinstallation</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Standardeinstellungen wiederherstellen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Alle Einstellungen werden dauerhaft gelöscht. BCUninstaller neu starten, um diesen Vorgang zu beenden.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Deinstallations-Liste öffnen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>Der Wiederherstellungspunkt WURDE NICHT ERSTELLT, Sie werden Änderungen nicht wiederherstellen können! Möchten Sie trotzdem mit der Deinstallation fortfahren?</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>Umbenennen \"{0}\"</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Gewählten Einrag umbenennen</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>Task abgeschlossen</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Deinstallation</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Auswahl merken</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Fehler</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>Datei existiert nicht</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Keine Anzeige. Diese Anwendung wird mittels Windows Installer (MsiExec) deinstalliert.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Name</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Wert</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Leer</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>GUID gefunden</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>GUID fehlt</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Wählen Sie bis zu...</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Datei nicht gefunden</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Ausführen von NACH-Deinstallations Anweisungen...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Ausführen von VOR-Deinstallations Anweisungen...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Fertig</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>{0} Uninstaller gewählt</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>{0} Uninstaller gesamt, {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>Folgender Befehl konnte nicht ausgeführt werden:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>Externe Ausführung fehlgeschlagen</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>Voreinstellung</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Einige Einstellungen werden erst nach einem Neustart der Anwendung wirksam.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Wollen Sie BCU neu starten, um die neuen Einstellungen zu übernehmen?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Anwendungseinstellungen ändern</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>Zertifikat fehlt</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Verarbeitung der Uninstaller ({0})</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>Die Auswahl \"Beenden\" schließt unmittelbar den laufenden Uninstaller und kann dazu führen, dass die Deinstallation nicht abgeschlossen wird. In der Regel können Sie den Uninstaller erneut ausführen, um die Deinstallation abzuschließen.\r\n\r\nAlternativ können Sie die Wartezeit für diesen Prozess überspringen. Dies lässt den Uninstaller weiterarbeiten, während der Task zum nächsten Element springt. Denken Sie daran, dass einige Uninstaller nicht  ausgeführt werden können, bevor der übersprungene Prozess abgeschlossen ist.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>Warten auf den laufenden Uninstaller überspringen?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Aktuell laufende Aufgabe überspringen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Ein anderer Uninstall-Task läuft bereits. Warten Sie auf dessen Beendung und versuchen Sie es erneut.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Bewertung: {0}\r\n\r\nPositive:\r\n{1}\r\n\r\nNegative:\r\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Bewertungs-Details</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>Diese Anwendung hat keinen gültigen Registry-Eintrag</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>Diese Anwendung hat keinen gültigen Uninstaller</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Windows-Funktionen laden...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>Startinformationen aktualisieren...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>Keine Verzeichnsse zu öffnen</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>Nicht verfügbar</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} Anwendungen</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Bewertung nicht verfügbar</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>Sie müssen zuerst Bewertungen anhand der Einstellungen aktivieren.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>Sie können Anwendungen nicht bewerteten wenn sie nicht vollständig installiert wurden.</value>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Durchschnittliche Bewertung: {0}; Meine Bewertung: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 nicht gefunden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 wurde nicht gefunden, einige Funktionen sind nicht verfügbar.</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Öffentlicher Schlüssel</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Serien Nummer</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Version</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Fingerabdruck</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>Lade Icons</value>\r\n  </data>\r\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\r\n    <value>Willkommen zu BCU version {0}!</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>Nachfolgende Uninstaller verhinderten die Ausführung wahrscheinlich wegen einer Kollision. Bitte warten Sie, bis andere Uninstaller fertig sind, und versuchen Sie es erneut. {0}\r\n\r\nSie können versuchen, die Kollisionserkennung in den Einstellungen zu deaktivieren, dieses wird jedoch nicht empfohlen.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Deinstallation erzwingen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>Einige der Deinstallationsprogramme konnten nicht ausgeführt werden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>Das .NET v4.0 Framework ist optional, wird aber empfohlen. Die Funktionen, die auf diesem Framework basieren, werden deaktiviert, bis Sie es installieren.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Einige Deinstallationsprogramme sind fehlgeschlagen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>Möchten Sie versuchen, quiet Deinstallationsprogramme auszuführen, die fehlgeschlagen sind?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>Folgende Deinstallationsprogramme werden neu gestartet:</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>Überprüfen des angegebenen Verzeichnisses</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Wählen Sie das Verzeichnis mit den Anwendungen aus, die Sie entfernen möchten</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>Deinstallieren aus dem Verzeichnis</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Im angegebenen Verzeichnis wurden keine Anwendungen gefunden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Stellen Sie sicher, dass Sie das richtige Verzeichnis ausgewählt haben und dass die ausführbaren Dateien der Anwendung noch vorhanden sind.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Deinstallationsprogramm für {0} gefunden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>Möchten Sie dieses Deinstallationsprogramm ausführen?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Aussteller</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Gegenstand</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Archiviert</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Erweiterungen</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Anzeigename</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Name des Ausstellers</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>nicht nach</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>nicht vor</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Privater Schlüssel</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>Hat einen privaten Schlüssel</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Rohdaten</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Gegenstands Name</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Signaturalgorithmus</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Einstellungen konnten nicht gespeichert werden</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Beenden</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>Suchen Sie nach Anwendung</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>Es wurden keine gültigen Dateien oder Ordner ausgewählt. Stellen sie sicher, dass sie Zugriff auf diese haben und es keine Systemdateien sind.</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>Suchen Sie nach Anwendung</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Fehler bei der Suche nach Anwendungen {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>Ändern der Anwendung</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>Ausgewählte Anwendung kann nicht verändert werden.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\r\n    <value>Für die ausgewählte Anwendung wurde kein Änderungsbefehl angegeben.\r\nMöglicherweise muss eine Deinstallation durchgeführt werden und eine Neuinstallation durchgeführt werden um Änderungen zu speichern.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>Speichern der Uninstall Liste</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>Speichern der Änderungen in der geöffneten Uninstall Liste</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>Änderungen wurden in der geöffneten Uninstall Liste noch nicht gespeichert und werden beim Schließen verloren gehen.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>Wählen Sie das Verzeichnis mit den zu deinstallierenden Anwendungen aus.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>Wählen Sie, wo die Sicherung gespeichert werden soll. Ein neues Verzeichnis wird erstellt.</value>\r\n  </data>\r\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\r\n    <value>BCU wurde Upgedated auf v{0}!</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\r\n    <value>Einschlafen des PCs in {0}s. Deaktivieren Sie das Kontrollkästchen für den Ruhezustand, um abzubrechen.</value>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\r\n    <value>Macht nichts</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\r\n    <value>Öffnet Eigenschaften</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\r\n    <value>Deinstalliert</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Creando un punto de restauración...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Buscando actualizaciones...</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value>Portable</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Detalles del error:</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nDetalles del error:\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>¿Le gustaría crear una copia de seguridad del registro antes de continuar?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>Acción fallida</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>Solo necesita seleccionar una entrada para ésta acción</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>Seleccione exactamente un desinstalador de la lista. Si está utilizando las casillas de verificación, asegúrese de revisarlas.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Buscar actualizaciones</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Desinstalar BCUninstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>¿Está seguro que desea desinstalar BCUninstaller?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>¿Le gustaría crear un punto de restauración antes de continuar?</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>Por defecto</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Buscando restos...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>Poblando lista de desinstalación...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Eliminando restos...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>No hay entradas que coincidan con sus criterios de búsqueda.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>Exportación BCUninstaller\r\nEditor | Versión | Fecha | Tamaño | Registro | Tipo de desinstalación | Cadena de desinstalación | Cadena de desinstalación silenciosa | Comentarios</value>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>No se ha podido llamar a la API</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Error en la copia de seguridad del registro, ¿desea continuar de todos modos?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Eliminación de restos</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Enviar comentario</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Listo</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>{0} desinstaladores seleccionados</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>{0} desinstaladores en total, {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Cargando características de Windows...</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>No disponible</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} aplicaciones</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Promedio de calificación: {0}; Mi calificación: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 no encontrado</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 no ha sido encontrado, algunas características podrían desactivarse</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Calificaciones no disponibles</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>Primero tiene que activar las calificaciones desde la configuración.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>No puede calificar aplicaciones no instaladas adecuadamente.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Calificación: {0}\r\n\r\nPositivos:\r\n{1}\r\n\r\nNegativos:\r\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>Esta aplicación no tiene una entrada de registro válida</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>Esta aplicación no tiene un desinstalador válido</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Detalles de calificación</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>Actualizando información de inicio...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>No hay directorios que abrir</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Forzar desinstalación</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Saltar la tarea actualmente en ejecución</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Otra tarea de desinstalación está ejecutándose. Por favor espere a que finalice e inténtelo nuevamente.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>¿Desea reiniciar BCU para aplicar los nuevos cambios?</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Procesando desinstaladores ({0})</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Cambiar configuración de la aplicación</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>Hace falta el certificado</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Nombre</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Valor</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>GUID encontrado</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>GUID ausente</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Archivo no encontrado.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Algunos cambios no tendrán efecto hasta que se reinicie la aplicación.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Error</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Vacio</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>Tarea finalizada</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Desinstalando</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Recordar elección</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>El archivo no existe.</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>Renombrando \"{0}\"</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Renombrar entrada seleccionada.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Desinstalación silenciosa</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Abrir lista de desinstalación</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>Abrir URLs</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Restaurar configuración por defecto</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>No hay URLs que abrir</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Modificar elemento protegido</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Abrir los contenidos en línea</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>No se puede conectar a Internet, no hay redes disponibles.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Asegúrese de que el cable de red está enchufado. Si está utilizando Wi-Fi asegúrese de que tiene buena la señal.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>¿Le gustaría enviar comentarios acerca de BCU?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>Ejecutar desinstaladores</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Usted podrá revertir todos los cambios haciendo doble clic después.\r\n\r\nLos archivos y directorios se moverán a la papelera de reciclaje, puede restaurarlos desde allí.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>¡Esto le llevará menos de un minuto, pero ayudará en gran medida al desarrollo! Se agradece cualquier comentario, ya sea un informe de error, solicitud de función ¡o un simple gracias!\r\n\r\nPuede enviarlo más tarde desde la barra de menú superior (Ayuda-&gt;Enviar comentario).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>La versión actual está actualizada</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>No hay actualizaciones, usted cuenta con la última versión.\r\n\r\n¿Desea un poco más de funcionalidad o corregir un error? Por favor, envíe sus comentarios usando \"Ayuda-&gt;Enviar comentario\" del menú.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Encontrado un error al buscar actualizaciones</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Asegúrese de que BCUninstaller no está bloqueado por su cortafuegos y que tiene una conexión a Internet.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>Nueva versión {0} disponible, ¿desea actualizar ahora?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>BCUninstaller descargará automáticamente la actualización y la aplicará después de un reinicio. Tenga en cuenta que es posible que pierda su configuración en el proceso.\r\n\r\nLista de cambios:\r\n- {0}\r\n\r\nAdvertencia: Durante la actualización serán eliminados la carpeta \"Update\" y el archivo \"Update.zip\" dentro del directorio delBCU.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Desinstalar utilizando MSI</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>La entrada seleccionada no se puede desinstalar utilizando el instalador MsiExec</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>El desinstalador seleccionado no tiene un GUID válido para su uso con MsiExec.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Detener la tarea actual de desinstalación</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>¿Seguro que desea detener la ejecución de la tarea actual?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Detener la tarea prematuramente no revertirá ningún cambio. El desinstalador en ejecución actual no se detendrá, la tarea esperará a que finalice.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Crear un punto de restauración</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Error al crear un nuevo punto de restauración</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value>x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value>DEPURAR</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>Progreso de la desinstalación</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>Ahora puede dejar el ordenador</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>No se pudo ejecutar algunos de los desinstaladores</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 es opcional, pero recomendado. Las características que se basan en el framework se desactivará hasta que se instale.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Eliminación de basura/restos</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>¿Realmente desea modificar los elementos de baja confianza?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>Los desinstaladores restantes deben poder completarse sin intervención del usuario. Usted debe todavía comprobar de vez en cuando en caso de que uno de los desinstaladores se bloquee.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>¡La eliminación de los elementos marcados con baja a buena confianza pueden ser muy peligrosos! Se recomienda que compruebe si cada elemento es seguro para eliminar.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Eliminar las claves de registro</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>¿Seguro que desea eliminar las entradas de desinstalación seleccionadas?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Los siguientes elementos serán eliminados del registro y desaparecerán de la lista de desinstalación, pero no se pueden desinstalar.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>Exportación fallida</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>Se ha encontrado un error al guardar datos exportados</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>Si el error persiste, intente guardar en un directorio diferente, por ejemplo en el escritorio.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>BCUninstaller está desinstalando {0} aplicaciones</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>Renombrar desinstalador</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>El nombre proporcionado está vacío o contiene caracteres no válidos</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Asegúrese de que no ha incluido alguno de los siguientes caracteres:\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>¿Desea buscar restos de las desinstalaciones realizadas?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Tenga en cuenta que esta función está pensada para usuarios que entienden cómo funciona. No es necesario quitar estos archivos y no afectará el rendimiento del sistema en cualquier manera significativa.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>No se encontraron restos</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>No se encontraron restos. Todavía puede haber algún residuo faltante por lo que debería ejecutar un limpiador de archivos temporales como BleachBit o similar.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>No había nada que copiar en el portapapeles. Ningún desinstalador seleccionado tiene este bit de información o no ha seleccionado nada.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>Copiar al portapapeles</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Abrir directorios</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>Esta acción abrirá {0} directorios a la vez, ¿está seguro de que desea continuar?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Buscar en línea</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>No hay que buscar</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>¡Siento que nos deje! Si tiene un minuto, por favor, indique en mi sitio Web (http://klocmansoftware.weebly.com/) por qué desinstaló BCU. Haré mi mejor esfuerzo para solucionar cualquier problema legítimo.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Si no está seguro de que las aplicaciones que está desinstalando son importantes o necesarias para la estabilidad del sistema, se recomienda crear un punto de restauración.\r\n Si se daña algo después del siguiente procedimiento, puede utilizar Restaurar Sistema para deshacer los cambios.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>Se ha encontrado un error al abrir la página de búsqueda</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Guardar lista de desinstalación</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>No se ha podido guardar la lista en un archivo</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>¿Está seguro que desea restablecer todos los ajustes de la aplicación?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Algunas aplicaciones no se pueden desinstalar silenciosamente</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Algunas entradas están protegidas y no pueden ser modificadas</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>La entrada seleccionada está protegida y no puede ser modificada</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>Se ha encontrado un error al abrir la URL</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>¿Desea mantener la selección actual?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>Se ha encontrado un error al abrir el directorio</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>No se pudieron cargar los archivos seleccionados</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>No se seleccionaron desinstaladores, nada que desinstalar</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>El siguiente comando no se pudo ejecutar:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>Error de ejecución externa</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>Al seleccionar \"Terminar\", se cerrará inmediatamente la desinstalación en ejecución y podría no ompletarse. Normalmente, es posible ejecutar el desinstalador de nuevo para terminar la desinstalación.\r\n\r\nPuede omitir la espera de este proceso. Esto permitirá que el desinstalador continúe trabajando mientras la tarea pasa al siguiente elemento. Tenga en cuenta que algunos desinstaladores pueden fallar para ejecutarse hasta que el proceso omitido termine.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>¿Desea omitir la espera del desinstalador en ejecución?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>Los siguientes desinstaladores no se pudieron ejecutar, probablemente a causa de una colisión. Por favor, espere a que otros desinstaladores terminen y vuelva a intentarlo.\r\n{0}\r\n\r\nPuede intentar deshabilitar la detección de colisiones en la configuración, pero no es recomendable.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Seleccionar abajo hasta...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Ejecutando comandos de post-desinstalación...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Ejecutando comandos de pre-desinstalación...</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>Para desinstalar aplicaciones primero debe seleccionarlas de entre la lista. Si usted está usando checkboxs, asegúrese de que estén marcados.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Si decide quedarse con la selección actual se fusionará con la(s) lista(s) abierta(s)</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>Esta acción abrirá {0} URLs a la vez, ¿está seguro de que desea continuar?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Entradas afectadas:\r\n{0}\r\n\r\nPara modificar estas entradas desactive la protección de desinstalación de la barra lateral de configuración. Puede eliminarlas de la tarea y continuar con otros elementos si lo desea.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>Entrada protegida: {0}\r\n\r\nPara modificar esta entrada tiene que desactivar la protección de desinstalación desde el panel de configuración.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Los siguientes elementos no tienen desinstaladores silenciosos:\r\n{0}\r\n\r\n¿Desea usar desinstaladores \"fuertes\" para estos elementos, o deberían ser removidos de la tarea?</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Todos los ajustes se perderán de forma permanente. BCUninstaller tendrá que reiniciarse para completar esta acción.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>El punto de restauración NO FUE CREADO, ¡usted no podrá restaurar los cambios! ¿Desea continuar con la desinstalación de todos modos?</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Nada que mostrar. Esta aplicación se desinstala utilizando el desinstalador de Windows (MsiExec).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Algunos desinstaladores han fallado</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>¿Desea intentar ejecutar desinstaladores silenciosos que fallaron como fuertes?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>Los desinstaladores siguientes se reiniciarán altamente:</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>Analizando directorio especificado...</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Seleccione el directorio con las aplicaciones que desea eliminar.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>Desinstalar del directorio</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>No se encontraron aplicaciones en el directorio especificado</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Asegúrese de que ha seleccionado el directorio correcto y que los ejecutables de la aplicación siguen estando presentes.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Encontrado un desinstalador para {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>¿Desea ejecutar este desinstalador?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Editor</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Asunto</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Archivado</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Extensiones</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Nombre Amigable</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Nombre del Editor</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Clave Privada</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>Tiene Clave Privada</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Clave Pública</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Versión</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>No Después</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>No Antes</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Datos en Bruto\r\n</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Número de Serie</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Nombre del Asunto</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Algoritmo de Firma</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Huella Digital</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Error al guardar la configuración</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Terminando...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>Cargando iconos</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>Buscar aplicación</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>No se seleccionaron archivos o directorios válidos. Asegúrese de tener acceso a ellos y no están marcados como archivos de sistema.</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>Buscar aplicaciones</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>No se pudo encontrar ninguna aplicación dentro de {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>Modificar aplicación</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>La aplicación seleccionada no se puede modificar</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\r\n    <value>La aplicación seleccionada no tiene comando de modificación especificado. Puede ser necesario desinstalar e instalar de nuevo para cambiar la configuración de instalación.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>Guardar lista de desinstalación</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>¿Desea guardar cambios en la lista de desinstalación abierta?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>Hay cambios no guardados en la lista de desinstalación abierta que se perderán al cerrarla.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>Seleccione el directorio con las aplicaciones a desinstalar.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>Seleccione dónde guardar la copia de seguridad. Se creará un nuevo directorio.</value>\r\n  </data>\r\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\r\n    <value>¡BCU se ha actualizado a v{0}!</value>\r\n  </data>\r\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\r\n    <value>¡Bienvenido a BCU, versión {0}!</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\r\n    <value>Poniendo la PC en reposo en {0}s.\r\nDesmarque la casilla de reposo para cancelar.</value>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\r\n    <value>No hace nada</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\r\n    <value>Abre las propiedades</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\r\n    <value>Desinstala</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Création d'un point de restauration...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Recherche de vestiges...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>Remplissage de la liste de désinstalleurs...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Suppression des vestiges...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Recherche de mises à jour...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>Il n'y a pas d'entrée correspondant à votre critère de recherche.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>Export BCUninstaller \r\nÉditeur | Version | Date | Taille | Registre | Type de désinstalleur | Chaîne de désinstallation | Chaîne de désinstallation silencieuse | Commentaires</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value> Portable</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>Échec en appelant l'API</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Échec en sauvegarde du registre, voulez-vous continuer tout de même ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Détails d'erreur : </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Suppression des vestiges</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nDétails de l'erreur :\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Voulez-vous créer une sauvegarde du registre avant de continuer ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Vous pourrez revenir sur tous les changements en double-cliquant dessus par la suite.\r\n\r\nFichiers et dossiers seront déplacés dans la corbeille, vous pouvez les restaurer à partir d'ici.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>Action échouée</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>Vous devez ne sélectionner qu'une entrée pour cette action</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>Sélectionnez exactement un désinstalleur dans la liste. Si vous utilisez les cases à cocher, assurez-vous de les cocher.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Rechercher des mises à jour</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Ouvrir du contenu en ligne</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>Connexion à internet impossible, il n'y a pas de réseau disponible.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Vérifiez que le câble réseau est branché. Si vous utilisez le Wi-Fi vérifiez que vous avez une bonne force de signal.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Soumettre un retour</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>Voudriez-vous envoyer un retour concernant BCU ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>Cela prendra moins d'une minute mais aidera grandement le développement  ! Tout retour est apprécié, que ce soit un rapport de bogue, une demande de fonction ou un simple merci !\r\n\r\nVous pouvez l'envoyer plus tard à partir de la barre de menu du haut (Aide-&gt;Soumettre un retour).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>La version courante est à jour</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>Aucune mise à jour n'a été trouvée pour l'heure, vous avez la dernière version.\r\n\r\nVous voulez ajouter une fonctionnalité ou corriger une bogue ? Merci de m'envoyer votre retour en utilisant le menu \"Aide-&gt;Soumettre un retour\".</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Erreur rencontrée en vérifiant les mises à jour</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Vérifiez que BCUninstaller n'est pas bloqué dans votre pare-feu et que vous avez une connection internet fonctionnelle.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>Nouvelle version {0} disponible, voulez-vous mettre à jour maintenant ?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>BCUninstaller téléchargera automatiquement la mise à jour et l'appliquera après un redémarrage. Merci de noter que vous pouvez perdre vos réglages dans l'opération. \r\n\r\nJournal de changement :\r\n- {0}\r\n\r\nAttention : pendant la mise à jour le dossier \"Update\" et le fichier \"Update.zip\" dans le dossier de BCU seront supprimés.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Désinstaller en utilisant Msi</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>L'entrée sélectionnée ne peut être désinstallée en utilisant l'installeur MsiExec</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>Le désinstalleur sélectionné n'a pas pas de Guid valide à utiliser avec MsiExec.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Arrêter la tâche courante de désinstallation</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Etes-vous sûr de vouloir arrêter la tâche courante ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Arrêter prématurément la tâche n'annulera pas tout changement. Le désinstalleur en cours d'exécution ne sera pas stoppé, la tâche attendra qu'il ait terminé.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Créer un point de restauration</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Échec en créant un nouveau point de restauration</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value> x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value>DEBUG</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>Progression de la désinstallation</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>Vous pouvez maintenant laisser l'ordinateur</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>Les désinstalleurs restants devraient pouvoir terminer sans aucune intervention de l'utilisateur. Vous devriez quand même vérifier de temps en temps au cas où un des désinstalleurs plante.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Suppression des déchets/vestiges</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Voulez-vous réellement modifier les éléments de faible-confiance ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>La suppression des éléments marqués d'une confiance inférieure à Bon peut être très dangereuse ! Il vous est recommandé de vérifier qu'il est sûr de supprimer chaque élément individuel.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Supprimer les clés du registre</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Êtes-vous sûr de vouloir supprimer les entrées du désinstalleur sélectionné ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Les élements suivants seront supprimés du registre et disparaîtront de la liste du désinstalleur, mais ne seront pas désinstallés.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>Échec en exportant</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>Erreur rencontrée pendant l'enregistrement des données exportées</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>Si l'erreur persiste essayez de sauvegarder dans un dossier différent, par exemple sur le bureau.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>BCUninstaller désinstalle {0} application(s)</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>Renommer le désinstalleur</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>Le nom fourni est vide ou contient des caractères invalides</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Vérifiez que vous n'avez inclus aucun des caractères suivants :\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Voulez-vous voir les vestiges des désinstallations réalisées ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Merci de noter que cette fonction est conçue uniquement pour les utilisateurs avancés qui comprennent comment cela marche. Il n'est pas nécessaire de supprimer ces fichiers et ils n'affecteront les performances du système en aucune façon significative.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>Aucun vestige trouvé</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>Aucun élément n'a été trouvé. Il pourrait encore rester des résidus, de sorte que vous pouvez lancer un nettoyeur de fichiers temporaires comme BleachBit.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>Il n'y a rien à copier dans le presse-papiers. Soit aucun désinstalleur sélectionné n'a ce bout d'information, soit vous n'avez rien sélectionné.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>Copier dans le presse-papiers</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Ouvrir les dossiers</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>Cette action ouvrira {0} dossiers d'un coup, êtes-vous sûr de vouloir continuer ?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Rechercher en ligne</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>Rien à rechercher</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Désinstaller BCUninstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Êtes-vous sur de vouloir désinstaller BCUninstaller ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Je suis désolé de vous voir partir ! Si vous avez une minute ou deux merci de laisser un mot sur mon site web (http://klocmansoftware.weebly.com/)  pour dire pourquoi vous désinstallez BCU. Je ferai de mon mieux pour réparer tout problème légitime.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Voulez-vous créer un point de restauration avant de continuer ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Si vous n'êtes pas sûr que les applications que vous désinstallez sont importantes ou nécessaires à la stabilité du système, il est recommandé de créer un point de restauration. \r\nSi quelque chose est rompu après la procédure vous pouvez alors utiliser la Restauration du système pour revenir sur les changements.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>Erreur rencontrée en ouvrant la page de recherche</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Sauvegarder la liste de désinstallation</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Échec en sauvegardant la liste dans un fichier</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Êtes-vous sûr de vouloir réinitialiser tous les réglages de l'application ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Quelques applications ne peuvent être désinstallées silencieusement</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Quelques entrées sont protégées et ne peuvent être modifiées</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>L'entrée sélectionnée est protégée et ne peut être modifiée</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>Une erreur a été rencontrée en ouvrant l'URL</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Voulez-vous garder la sélection courante ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>Une erreur a été rencontrée en ouvrant le dossier</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Échec en chargeant les fichiers sélectionnés</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>Aucun désinstalleur sélectionné, rien à désinstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>Lancer les désinstalleurs</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>Pour désinstaller les  applications vous devez d'abord les sélectionner depuis la vue liste. Si vous utilisez des cases à cochers, vérifiez qu'elles sont cochées.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Si vous choisissez de garder la sélection courante, elle sera fusionnée avec la ou les listes ouvertes</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>Cette action ouvrira {0} URLs d'un coup, êtes-vous sûr de vouloir continuer ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>Ouvrir les URLs</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>Pas d'URL à ouvrir</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Modifier l'élément protégé</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Entrées affectées :\r\n{0}\r\n\r\nPour modifier ces entrées vous devez désactiver la protection du désinstalleur dans la barre latérale des réglages. Vous pouvez les supprimer de la tâche et continuer avec les autres éléments si vous voulez.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>Entrée protégée : {0}\r\n\r\nPour modifier cette entrée vous devez désactiver la protection du désinstalleur dans le panneau de réglages.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Les éléments suivants ne comportent pas de désinstalleur silencieux :\r\n{0}\r\n\r\nVoulez-vous utiliser les désinstalleurs \"causants\" pour ces éléments, ou doivent-ils être supprimés de la tâche ?</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Désinstallation silencieuse</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Restaurer les réglages par défaut</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Tous vos réglages seront perdus définitivement. BCUninstaller devra redémarrer pour terminer cette action.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Ouvrir la liste de désinstallation</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>Le point de restauration N'A PAS ETE CRÉÉ, vous ne pourrez pas restaurer les changements ! Voulez-vous continuer quand même la désinstallation ?</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>Renommage de \"{0}\"</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Renommer l'entrée sélectionnée</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>Tâche terminée</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Désinstallation</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Se rappeler le choix</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Erreur</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>Fichier inexistant.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Rien à afficher. Cette application est désinstallée en utilisant Windows Installer (MsiExec).</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Nom</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Valeur</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Vide</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>GUID trouvé</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>GUID manquant</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Sélectionner jusqu'à...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Prêt </value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>{0} désinstalleur(s) sélectionné(s)</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>{0} désinstalleur(s) au total, {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>La commande suivante a échoué à l'exécution:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>Par défaut</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Fichier non trouvé.</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Lancement de commandes post-désinstallation...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Lancement de commandes pré-désinstallation...</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>Échec d'exécution externe</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Certains paramètres ne prendront pas effet jusqu'à ce que l'application soit relancée.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Voulez-vous redémarrer BCU à appliquer les nouveaux réglages ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Modifier les réglages de l'application</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>Certificat manquant</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Traitement des applications détectées, ({0}) restantes...</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>Sélectionner \"Terminer\" fermera immédiatement le désinstalleur en cours et pourrait aboutir à une désinstallation incomplète. D'ordinaire, il est possible de relancer le désinstalleur pour finir la désinstallation.\r\n\r\nAlternativement, vous pouvez passer l'attente de ce processus. Passer laissera le désinstalleur continuer à travailler pendant que la tâche passera à l'élément suivant. Gardez à l'esprit que quelques désinstalleurs peuvent échouer à se lancer jusqu'à ce que le processus passé se termine.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>Voulez-vous passer l'attente pour le désinstalleur en cours ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Passer la tâche en cours</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Une autre tâche de désinstallation est déjà en cours. Merci d'attendre qu'elle ait fini puis réessayer.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Notes : {0}\r\n\r\nPositives :\r\n{1}\r\n\r\nNégatives :\r\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Détails de la note</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>Cette application n'a pas une entrée de registre valide</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>Cette application n'a pas un désinstalleur valide</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Chargement des Fonctionnalités Windows...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>Rafraîchissement des informations de démarrage...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>Aucun dossier à ouvrir</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>Indisponible</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Notes non disponibles</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>Vous devez d'abord activer les notes dans les réglages.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>Vous ne pouvez pas noter les applications qui ne sont pas installées correctement.</value>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} applications</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Note moyenne: {0}; Ma note: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>Les désinstalleurs suivants ont échoué à l'exécution, sûrement en raison d'une collision. Veuillez attendre que les autres désinstalleurs aient fini et réessayer.\r\n{0}\r\n\r\nVous pouver tenter de désactiver la prévention de collision dans les réglages, mais ce n'est pas recommandé.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Forcer la désinstallation</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>Échec au lancement de certains des désinstalleurs</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>Framework .NET 4.0 introuvable</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>Framework .NET 4.0 introuvable, certaines fonctions seront désactivées</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>Le Framework .NET 4.0 est optionnel, mais recommandé. Les fonctions reposant sur le framework seront désactivées jusqu'à son installation.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Quelques désinstalleurs ont échoué</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>Voulez-vous tenter de lancer des désinstalleurs silencieux qui ont échoué en normal ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>Les désinstalleurs suivants seront redemarrés normalement :</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>Balayage du dossier spécifié...</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Sélectionner le dossier avec les applications que vous voulez enlever.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>Désinstaller depuis le dossier</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Aucune application trouvée dans le dossier spécifié</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Assurez-vous d'avoir sélectionné le dossier correct et que les exécutables de l'application sont encore présents.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Désinstalleur trouvé pour {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>Voulez-vous lancer ce désinstalleur?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Émetteur</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Sujet</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Archivé</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Extensions</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Nom Familier</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Nom de l'Emetteur</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>Pas Après</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>Pas Avant</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Clé Privée</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>A une Clé Privée</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Clé Publique</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Données Brutes</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Numéro de Série</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Nom de sujet</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Algorithme Signature</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Version</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Empreinte</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Échec à l'enregistrement des paramètres</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>En train de finir...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>Icônes de chargement</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>Chercher une application</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>Aucun fichier ou dossier valide n'a été sélectionné. Assurez-vous que vous y avez accès, et qu'ils ne sont pas marqués comme fichiers système.</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>Chercher des applications</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Impossible de trouver une application dans {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>Modifier l'application</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>L'application sélectionnée ne peut être modifiée</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\r\n    <value>L'application sélectionnée n'a pas la commande modifier spécifiée. Il peut être nécessaire de la désinstaller, puis de l'installer à nouveau pour changer les réglages d'installation.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>Sauver la liste de désinstallation</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>Sauver les changements de la liste de désinstallation ouverte ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>Il y a des changements non sauvés dans la liste de désinstallation ouverte qui seront perdus en la fermant.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>Sélectionner le dossier avec les applications à désinstaller.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>Sélectionner où enregistrer la sauvegarde. Un nouveau dossier sera créé.</value>\r\n  </data>\r\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\r\n    <value>BCU a été mis à jour en v{0} !</value>\r\n  </data>\r\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\r\n    <value>Bienvenue à BCU version {0} !</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\r\n    <value>Mise en veille du PC dans {0}s. Décocher la case veille pour annuler.</value>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\r\n    <value>Ne fait rien</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\r\n    <value>Ouvre les propriétés</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\r\n    <value>Désinstalle</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CantRenameUninstallerKind_Title\" xml:space=\"preserve\">\r\n    <value>Ne peut renommer {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CantRenameUninstallerKind_Details\" xml:space=\"preserve\">\r\n    <value>Ce type de désinstalleur ne supporte pas de renommer ({0}).</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Visszaállítási pont létrehozása...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Maradványok keresése...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>Eltávolító lista feltöltése...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Maradványok eltávolítása...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Frissítések keresése...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>Nincs a keresési feltételnek megfelelő bejegyzés.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>BCUninstaller exportálás\r\nKiadó | Verzió | Dátum | Méret | Beállításjegyzék | Eltávolító típusa | Eltávolítási karaktersorozat | Csendes eltávolító karaktersorozat | Megjegyzések</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value>Hordozható</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>Az API meghívása nem sikerült</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>A beállításjegyzék mentése nem sikerült, mégis folytatni szeretné?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Hiba részletei: </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Maradványeltávolítás</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nHiba részletei:\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Szeretné elkészíteni a beállításjegyzék mentését a folytatás előtt?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Minden módosítást visszaállíthat a dupla kattintást követően.\r\n\r\nA fájlok és mappák a Lomtárba kerülnek, ahonnan visszaállíthatja azokat.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>A művelet nem sikerült</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>Ehhez a művelethez csak egy bejegyzést kell kiválasztania</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>A szükséges eltávolítót válassza ki a listából. Ha a jelölőnégyzeteket használja ellenőrizze a kijelölését.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Frissítések keresése</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Online tartalom megnyitása</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>Nem lehet csatlakozni az Internethez, nincsenek elérhető hálózatok.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Kérem ellenőrizze, hogy a hálózati kábel be van-e dugva. Ha Wi-Fi-t használ vizsgálja meg a jelerősséget.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Visszajelzés küldése</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>Szeretne visszajelzést küldeni a BCU-val kapcsolatban?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>Ez kevesebb mint egy percet vesz csak igénybe, de nagyban segítheti a fejlesztéseinket! Minden visszajelzést nagyra értékelünk, legyen az hibajelzés, új igény, vagy egyszerűen csak köszönetnyilvánítás!\r\n\r\nEzeket később is elküldheti a menüsávból (Súgó-&gt;Visszajelzés küldése).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>A jelenlegi verzió naprakész</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>Jelenleg nem érhetők el frissítések, ön a legújabb verziót használja.\r\n\r\nSzeretné a funkciók bővítését, vagy hibával találkozott? Kérjük, hogy küldje el a visszajelzését a \"Súgó-&gt;Visszajelzés küldése\" menü használatával.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Hiba történt a frissítések ellenőrzése közben</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Kérem ellenőrizze, hogy a BCUninstaller-t nem blokkolja-e a tűzfala, és működik-e az Internetkapcsolata.\r\n\r\n</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>Új verzió {0} érhető el. Szeretne erre frissíteni most?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>A BCUininstaller automatikusan letölti a frissítéseket, és telepíti azokat a program újraindítását követően. A folyamat során a saját beállításai elveszhetnek. \r\n\r\nMódosítások:\r\n- {0}\r\n\r\nFigyelem: A frissítés közben a BCU könyvtárában levő \"Update\" mappa, és az \"Update.zip\" fájl törlésre kerül.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Eltávolítás az Msi használatával</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>A kiválasztott bejegyzés nem távolítható el az MsiExec telepítővel</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>A kiválasztott eltávolító nem rendelkezik érvényes GUID-al, az MsiExec használatához.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Eltávolítási feladat leállítása</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Biztos benne, hogy leállítja az aktuálisan futó feladatot?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>A feladat idő előtti leállításával nem vonhatja vissza a módosításokat. A jelenleg futó eltávolítót nem lehet leállítani, a feladat várakozni fog a befejeződéséig.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Visszaállítási pont létrehozása</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Az új visszaállítási pont létrehozása nem sikerült</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value>x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value>DEBUG</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>Eltávolítási folyamat</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>Most itt hagyhatja a számítógépet</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>A hátrahagyott eltávolítóknak képesnek kell lenniük, a felhasználói beavatkozás nélküli eltávolításra. Ennek ellenére időről-időre ellenőrizze azokat, ha az egyik eltávolító összeomlana.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Feleslegesek/visszamaradtak törlése</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Valójában módosítani szeretné az alacsony biztonságú elemeket?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Az eltávolításra kijelölt elemek biztonságos eltávolíthatósága a Jó szintnél alacsonyabb, ezért ez veszélyes lehet! Nagyon ajánlott az egyes elemek biztonságos törlésének az ellenőrzése.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Kulcsok eltávolítása a Beállításjegyzékből</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Biztos benne, hogy törli a kijelölt eltávolítási bejegyzéseket?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>A következő elemek törlésre kerültek a Beállításjegyzékből, és eltűntek az eltávolítási listából, de nem lettek eltávolítva.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>Az exportálás nem sikerült</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>Egy hiba történt az exportált adatok elmentése közben</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>Ha a hiba továbbra is fennáll, próbálja meg egy másik könyvtárba, például az Asztalra elmenteni.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>A BCUninstaller eltávolított {0} alkalmazást</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>Eltávolító átnevezése</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>A megadott név üres, vagy érvénytelen karaktereket tartalmaz</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Győződjön meg róla, hogy ne legyenek benne a következő karakterek:\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Szeretné felkutatni az eltávolítás után visszamaradt elemeket?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Felhívjuk a figyelmét, hogy ez a lehetőség csak hozzáértő felhasználóknak ajánlott, akik tudják mit csinálnak. Ezeknek a fájloknak az eltávolítása nem szükséges, és nem lesznek hatással a rendszere teljesítményére.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>Nem találhatók maradványok</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>Nem találhatók maradványok. Ennek ellenére bizonyos szemét hátramaradhatott, ezért futtasson le egy olyan jellegű takarítót, mint például a BleachBit.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>Semmi sem lett kimásolva a Vágólapra. Vagy nem jelölt ki semmit se, vagy az eltávolító nagyon kevés információval rendelkezik.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>Másolás a Vágólapra</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Könyvtárak megnyitása</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>Ezzel a művelettel, egyszerre {0} könyvtár fog megnyílni. Biztos benne, hogy folytatja?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Keresés az Interneten</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>Nincs megadva semmi keresendő</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>BCUninstaller eltávolítása</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Biztos benne, hogy szeretné eltávolítani a BCUninstaller-t?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Sajnáljuk, hogy nem tetszett önnek a program! Ha van egy-két perce írjon pár szót a webhelyünkön (http://klocmansoftware.weebly.com/), hogy miért távolította el a BCU-t. Mindent megteszünk, hogy kijavítsuk a valós problémákat.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Szeretne létrehozni egy visszaállítási pontot a folytatás előtt?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Ha nem biztos abban, hogy az eltávolítandó alkalmazás fontos, vagy szükséges-e a rendszere működéséhez, javasolt egy visszaállítási pont létrehozása. \r\n Amennyiben a műveletet követően hibákat észlelne, a módosításokat visszavonhatja a Rendszer-visszaállítás segítségével.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>Hiba történt a keresőlap megnyitása közben</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Eltávolítási lista mentése</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Nem sikerült a lista mentése egy fájlba</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Biztos benne, hogy visszaállítja az alkalmazás összes beállítását?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Néhány alkalmazást nem lehet csendesen eltávolítani</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Néhány bejegyzés védett, és ezért nem módosítható</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>A kiválasztott bejegyzés védett és nem módosítható</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>Egy hiba történt az URL megnyitása közben</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Szeretné megtartani a jelenlegi kijelöléseit?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>Egy hiba történt a könyvtár megnyitása közben</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Nem sikerült a kijelölt fájlok betöltése</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>Nincsenek eltávolítók kiválasztva, semmi sem lesz eltávolítva</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>Eltávolítók futtatása</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>Az alkalmazások eltávolításához, először ki kell választania azokat a listanézetben. Ha a jelölőnégyzeteket használja, ellenőrizze a kijelölését.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Ha úgy dönt, hogy szeretné megtartani a jelenlegi kijelöléseit, azok egyesítésre kerülnek a megnyitott listával</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>Ezzel a művelettel, egyszerre {0} URL fog megnyílni. Biztos benne, hogy folytatja?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>URL-ek megnyitása</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>Nincsenek megnyitható URL-ek</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Védett elem módosítása</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Érintett bejegyzések:\r\n{0}\r\n\r\nEzeknek a bejegyzéseknek módosításához ki kell kapcsolnia a beállításoknál, az eltávolító védelmet. Vagy el is távolíthatja azokat a feladatból, és más elemekkel folytathatja, ha akarja.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>Védett bejegyzés: {0}\r\n\r\nA bejegyzés módosításához ki kell kapcsolnia a beállításoknál, az eltávolító védelmet.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>A következő elemeknek nincs csendes eltávolítójuk:\r\n{0}\r\n\r\nSzeretne normál eltávolítást ezekhez az elemekhez, vagy inkább eltávolítja azokat a feladatból?</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Csendes eltávolítás</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Alapbeállítások visszaállítása</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Az összes saját beállítása elfog veszni. A BCUninstaller-t újra kell indítani a művelet befejezéséhez.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Eltávolítási lista megnyitása</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>A visszaállítási pont NEM KERÜLT LÉTREHOZÁSRA, így a módosítások nem vonhatók vissza! Ennek ellenére továbbra is folytatni szeretné az eltávolítást?</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>\"{0}\" átnevezése</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Kijelölt bejegyzés átnevezése</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>A feladat befejeződött</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Eltávolítás</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Választás megjegyzése</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Hiba</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>A fájl nem létezik.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Nincs mit megjeleníteni. Ez az alkalmazás a Windows Installer (MsiExec) használatával távolítható el.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Név</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Érték</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Üres</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>GUID van</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>A GUID hiányzik</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Kijelölés lefelé...</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>A fájl nem található.</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Eltávolítás utáni parancsok futtatása...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Eltávolítás előttii parancsok futtatása...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Kész</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>{0} eltávolító kijelölve</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>{0} eltávolító, összesen {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>A következő parancs végrehajtása nem sikerült:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>A külső futtatás nem sikerült</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>Alapérték</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Néhány beállítása nem lép életbe, amíg nem indítja újra a programot.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Szeretné újraindítani a BCU-t, az új beállítások érvényesítéséhez?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Programbeállítások módosítása</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>A tanúsítvány hiányzik</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Eltávolítók feldolgozása ({0})</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>A \"Leállítás\" választásával azonnal bezárásra kerül az épp futó eltávolító, és ez azt eredményezheti, hogy az eltávolítás nem lesz teljes. Általában az eltávolító újra futtatható, az eltávolítás befejezése érdekében.\r\n\r\nMásik lehetőség, hogy kihagyja ezt a várakozó folyamatot. A kihagyással az eltávolító folytatja a működését, a következő elemre történő lépéssel. Vegye figyelembe, hogy néhány eltávolító nem fog futni, amíg a kihagyott folyamat nem fejeződik be.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>Szeretné kihagyni a jelenleg várakozó eltávolítót?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Jelenlegi feladat kihagyása</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Egy másik feladat már folyamatban van. Kérem, hogy várja meg amíg az befejeződik, majd próbálja meg újra.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Értékelés: {0}\r\n\r\nPozitív:\r\n{1}\r\n\r\nNegatív:\r\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Értékelés részletei</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>Ez az alkalmazás nem rendelkezik érvényes registry bejegyzéssel</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>Ez az alkalmazás nem rendelkezik szabályos eltávolítóval</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Windows-szolgáltatások betöltése...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>Indítópult információk frissítése...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>Nincsenek megnyitandó könyvtárak</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>Nem érhető el</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Az értékelés nem érhető el</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>Az értékeléshez először azt engedélyeznie kell a beállításoknál.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>Azok az alkalmazások nem értékelhetők, amelyek nincsenek megfelelően telepítve.</value>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} program</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Átlagos értékelés: {0}; Saját értékelés: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>A következő eltávolítók futtatása, feltehetően összeütközés miatt nem sikerült. Kérem várjon, amíg az egyéb eltávolítók végeznek, majd próbálja meg újra. \r\n{0}\r\n\r\nA beállításoknál megpróbálhatja letiltani az összeütközések észlelését, de ez nem ajánlott.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Kényszerített eltávolítás</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>Néhány eltávolító futtatása nem sikerült</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>A .NET Framework v4.0 nem található</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>A .NET Framework v4.0 nem található, ezért néhány lehetőség letiltásra kerül</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>A v4.0 keretrendszer megléte nem kötelező, de ajánlott. A keretrendszerhez kapcsolódó funkciók letiltásra kerülnek, amíg nem telepíti azt.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Néhány eltávolító nem működött</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>A sikertelenek esetében megpróbálja a háttérben az eltávolítást?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>A következő eltávolítók normál módú újraindítása:</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>Megadott könyvtár ellenőrzése...</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Válassza ki azt a könyvtárat, ahonnan szeretné a programokat eltávolítani.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>Eltávolítás a könyvtárból</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Nem találhatóak alkalmazások a megadott könyvtárban</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Gondoskodjék a megfelelő könyvtár kiválasztásáról és arról, hogy a futtatható alkalmazás ebben a könyvtárban legyen.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Eltávolítót találtam ehhez {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>Szeretné futtatni ezt az eltávolítóprogramot?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Kiállító</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Tulajdonos</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Archiválva</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Kiterjesztések</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Rövid név</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Kiállító neve</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>Ezután nem</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>Ez előtt nem</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Titkos kulcs</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>Van titkos kulcs</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Nyilvános kulcs</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Nyers adatok</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Sorozatszám</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Tulajdonos neve</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Aláírási algoritmus</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Verzió</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Ujjlenyomat</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Nem sikerült a beállítások mentése</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Befejezés...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>Ikonok betöltése</value>\r\n  </data>\r\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\r\n    <value>A BCU a(z) {0} verzióra frissült!</value>\r\n  </data>\r\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\r\n    <value>Üdvözli a BCU {0} verziója!</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\r\n    <value>Alvó módba lépés {0} mp múlva. Kattintson az alvó mód beállítás jelölőnégyzetébe a visszavonáshoz.</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>Alkalmazás keresése</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>Nincs érvényes fájl vagy könyvtár kiválasztva. Győződjön meg arról, hogy hozzáférhet ezekhez, és hogy nincsenek rendszerfájlként megjelölve.</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>Alkalmazás keresése</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Nem található alkalmazás a ezen helyen: {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>Alkalmazás módosítása</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>Kijelölt alkalmazás nem módosítható</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>Eltávolítólista mentése</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>A megnyitott eltávolítólistán végzett módosítatások mentése?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>A megnyitott eltávolítólistában vannak nem mentett módosítások, amelyek bezárásakor elvesznek.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>Válassza ki az eltávolítani kívánt alkalmazások könyvtárát.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>Válassza ki, hová szeretné menteni a biztonsági másolatot. Egy új könyvtár jön létre.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Creazione punto di ripristino...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Ricerca oggetti residui...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>Creazione elenco disinstallazione...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Rimozione oggetti residui...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Ricerca aggiornamenti...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>Non ci sono voci che corrispondano ai criteri di ricerca.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>Esportazione BCUninstaller\r\nEditore | Versione | Data | Dimensione | Registro | Tipo di disinstallatore | Stringa disinstallazione | Stringa disinstallazione silenziosa | Commenti</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value>Portatile</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>Chiamata dell'API non riuscita</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Backup del registro non riuscito. Vuoi continuare ugualmente?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Dettaglio errori:</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Rimozione oggetti residui</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nDettaglio errori:\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Vuoi creare un backup del registro prima di continuare ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Sarà possibile annullare tutti i cambiamenti facendo clic due volte successivamente.\r\n\r\nFile e cartelle saranno spostati nel Cestino.\r\nPotrai recuperarli da lì.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>Azione fallita</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>Per questa azione devi selezionare una sola voce</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>Seleziona esattamente un installatore dall'elenco. Se usi le caselle di controllo assicurati di selezionarli.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Ricerca aggiornamenti</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Apri contenuti online</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>Non è possibile collegarsi ad internet, poixchè non ci sono reti disponibili.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Assicurati che il cavo di rete sia collegato. Se usi il WiFi assicurati che la qualità del segnale sia buona.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Invia feedback</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>Vuoi inviare feedback su BCU?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>Ti occuperà per meno di un minuto ma aiuterà molto lo sviluppo! Tutti i feedback sono apprezzati, che siano una segnalazione di errori, una richiesta di funzionalità aggiuntive o un semplice grazie!\r\n\r\nPuoi inviarlo in seguito dalla barra del menù superiore (Aiuto -&gt; Invia feedback).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>Questa versione è aggiornata</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>Non sono disponibili aggiornamenti.\r\nLa versione in uso è aggiornata.\r\n\r\nVuoi che siano aggiunte nuove funzionalità o correggere un errore? Puoi inviarci un feedback dal menù \"Aiuto -&gt; Invia feedback\".</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Errore riscontrato durante la verifica di aggiornamenti</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Assicurati che BCUninstaller non sia bloccato dal firewall e che la connessione internet sia funzionante.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>È disponibile una nuova versione {0}. Vuoi aggiornare ora?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>BCUninstaller scaricherà automaticamente l'aggiornamento e lo installerà al riavvio. Nel corso del processo potresti perdere le configurazioni .\r\n\r\nNovità programma (changelog): \r\n- {0}\r\n\r\nAttenzione: nel corso dell'aggiornamento la cartella \"Update\" e il file \"Update.zip\" nella cartella di BCU saranno rimossi.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Disinstalla utilizzando Msi</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>La voce selezionata non può essere disinstallata con l'installatore MsiExec</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>Il disinstallatore selezionato non ha una GUID valida per essere utilizzato con MsiExec.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Ferma l'operazione di disinstallazione in corso</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Sei sicuro di voler interrompere l'operazione?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Fermando l'attività prima della sua fine non verranno annullate tutte le modifiche effettuate. I disinstallatori in esecuzione non saranno fermati, continueranno fino al termine.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Crea un punto di ripristino</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Creazione del nuovo punto di ripristino fallita</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value>x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value>DEBUG</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>Avanzamento disinstallazione</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>Ora puoi lasciare il computer</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>I disinstallatori rimasti dovrebbero poter completare le operazioni senza intervento dell'utente. Controlla ogni tanto l'avanzamento nel caso il disinstallatore si blocchi.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Rimozione oggetti residui</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Vuoi davvero modificare gli elementi con bassa affidabilità?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>La rimozione di elementi con affidabilità minore di \"Buona\" può essere molto pericolosa! Ti raccomandiamo di verificare che ogni singolo elemento sia sicuro da rimuovere.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Rimozione chiavi di registro</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Sei sicuro di voler rimuovere le voci di disinstallazione selezionate?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>I seguenti elementi saranno rimossi dal registro e dall'elenco del disinstallatore, ma non saranno disinstallati.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>Esportazione fallita</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>Errore riscontrato durante il salvataggio dei dati esportati</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>Se l'errore persiste prova a salvare in una cartella diversa, ad esempio sul desktop.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>BCUninstaller sta disinstallando {0} applicazione/i</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>Rinomina disinstallatore</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>Il nome indicato è vuoto o contiene caratteri invalidi</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Assicurati di non aver incluso nessuno dei seguenti caratteri:\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Vuoi controllare le presenza nelle disinstallazioni effettuate di elementi rimanenti?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Considera che questa funzionalità è rivolta ad utenti esperti che sanno come funziona. Non è necessario rimuovere questi file e non comprometteranno le prestazioni del sistema in maniera significativa.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>Non è stato triovato nessun elemento rimanente</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>Nessun elemento rimanente trovato. Ci potrebbero essere alcuni residui e file temporanei che puoi rimuovere con programmi tipo BleachBit.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>Non c'è nulla da copiare negli Appunti. Nessun disinstallatore selezionato ha questo bit di informazione oppure non hai selezionato nulla.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>Copia negli Appunti</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Apri cartella</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>Questa azione aprirà {0} cartelle alla volta. Sei sicuro di voler continuare?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Ricerca in internet</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>Nulla da cercare</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Disinstalla BCUninstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Sei sicuro di voler disinstallare BCUninstaller?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Mi dispiace che ci vuoi lasciare! Se hai un minuto ti chiedo di scrivere sul sito web (http://klocmansoftware.weebly.com/) per quale motivo disinstalli BCU. Farò il massimo per porre rimedio ad ogni problema.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Prima di continuare vuoi creare un punto di ripristino?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Se hai dubbi che l'applicazione che stai disinstallando sia importante o necessaria per la stabilità del sistema è raccomandata la creazione di un punto di ripristino.\r\nSe qualunque cosa non dovesse funzionare dopo la procedura potrai ripristinare il sistema per annullare i cambiamenti.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>Errore nell'apertura della pagina di ricerca</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Salva elenco disinstallazione</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Errore nel salvataggio dell'elenco disinstallazione in un file</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Sei sicuro di voler ripristinare tutti i paramenti dell'applicazione?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Alcune applicazioni non possono essere disinstallate silenziosamente</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Alcune voci sono protette e non possono essere modificate</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>La voce selezionata è protetta e non può essere modificata</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>Errore nell'apertura dell'URL</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Vuoi mantenere la selezione attuale?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>Errore nell'apertura della cartella</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Impossibile caricare i file selezionati</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>Nessun disinstallatore è stato selezionato, niente da disinstallare</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>Esegui disinstallazioni</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>Per disinstallare la applicazioni devi prima selezionarle nell'elenco. Se usi i riquadri di controllo assicurati che siano segnate.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Se decidi di mantenere l'attuale selezione questa sarà unita agli elenchi aperti</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>Questa operazione aprirà {0} URL alla volta. Sei sicuro di voler continuare?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>Apri URL</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>Nessuna URL da aprire</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Modifica elemento protetto</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Voci interessate:\r\n{0}\r\n\r\nPer modificare queste voci devi disabilitare la protezione della disinstallazione dalla barra laterale di configurazione. Se preferisci puoi rimuoverle dall'attività e continuare con gli altri elementi.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>Voci protette: {0}\r\n\r\nPer modificare queste voci devi disabilitare la protezione della disinstallazione dal pannello di configurazione.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>I seguenti elementi non hanno un disinstallatore silenzioso:\r\n{0}\r\n\r\nVuoi utilizzare i disinstallatori guidati per questi elementi? O preferisci siano rimossi dall'attività?</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Disinstallazione silenziosa</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Ripristina impostazioni predefinite</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Tutte le tue impostazioni saranno perse definitivamente. Per completare questa azione BCUninstaller deve essere riavviato.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Apri elenco disinstallazione</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>Il punto di ripristino NON E' STATO CREATO. Non sarà possibile annullare le modifiche. Vuoi continuare comunque con la disinstallazione?</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>Rinomina di \"{0}\"</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Rinomina la voce selezionata</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>Attività completata</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Disinstallazione</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Ricorda la scelta</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Errore</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>Il file non esiste. </value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Nulla da visualizzare. Questa applicazione si disinstalla con Windows Installer (MsiExec).</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Nome</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Valore</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Vuoto</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>GUID trovato</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>GUID mancante</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Seleziona in basso fino a...</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>FIle non trovato.</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Esecuzione comandi post-disinstallazione...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Esecuzione comandi pre-disinstallazione...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Pronto</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>{0} disinstallatori selezionati</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>{0} disinstallatori in totale, {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>Fallita esecuzione del seguente comando:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>Esecuzione esterna fallita</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>Predefinita</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Alcuni parametri non saranno attivi fino a quando l'applicazione non sarà riavviata.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Vuoi riavviare BCU per rendere operative le nuove impostazioni?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Modifica impostazioni programma</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>Certificato mancante</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Elaborazione applicazioni rilevate. {0} mancanti...</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>Selezionando \"Termina\" sarà immediatamente fermato il disinstallatore in esecuzione e la disinstallazione potrebbe non essere completata. Normalmente per completare l'attività è possibile eseguire nuovamente il disinstallatore.\r\n\r\nIn alternativa puoi saltare l'attesa per questo processo. In questo modo farai in modo che il disinstallatore continuerà a lavorare mentre l'attività passerà all'elemento successivo. Ricorda che alcuni disinstallatori potrebbero non avviarsi fino a quando il processo saltato non verrà completato.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>Vuoi smettere di attendere il processo di disinstallazione in corso?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Salta operazione in esecuzione</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Un altro processo di disinstallazione è già in corso. Attendi il completamento e quindi riprova.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Valutazioni: {0}\r\n\r\nPositive:\r\n{1}\r\n\r\nNegative:\r\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Dettagli valutazione</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>Questa applicazione non ha voci di registro valide</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>Questa applicazione non ha un disinstallatore valido</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Caricamento funzionalità di Windows...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>Aggiornamento informazioni avvio automatico...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>Nessuna cartella da aprire</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>Non disponibile</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Valutazioni non disponibili</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>Devi prima abilitare le valutazioni nelle impostazioni.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>Non puoi valutare le applicazioni che non sono installate correttamente.</value>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} applicazioni</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Valutazione media: {0}; la mia valutazione: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>I seguenti disinstallatori hanno fallito l'esecuzione, forse per una collisione. Attendi che gli altri disinstallatori finiscano e riprova.\r\n{0}\r\n\r\nPuoi provare a disabilitare la rilevazione delle collisioni nelle impostazioni, ma non è raccomandato.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Forza disinstallazione</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>Esecuzione fallita di alcuni disinstallatori</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 non trovato</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 non trovato. Alcune funzioni saranno disabilitate</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>Il framework v4.0 è opzionale, ma raccomandato. Le funzionalità che si basano su framework saranno disabilitate fino quando non sarà installato.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Alcuni disinstallatori hanno fallito</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>Vuoi provare ad eseguire i disinstallatori silenziosi che hanno fallito in modalità guidata?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>I seguenti disinstallatori saranno riavviati in modalità guidata:</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>Scansione cartelle specificate...</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Seleziona le cartelle con applicazioni che vuoi rimuovere.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>Disinstalla dalla cartella</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Nessuna applicazione trovata nelle cartelle specificate</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Assicurati di aver selezionato le cartelle corrette e che gli eseguibili delle applicazioni siano ancora presenti.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Trovato un disinstallatore per {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>Vuoi eseguire questo disinstallatore?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Produttore</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Argomento</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Archiviato</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Estensioni</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Nome intuitivo</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Nome emittente</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>Non dopo</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>Non prima</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Chiave privata</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>Ha una chiave privata</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Chiave pubblica</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Dati grezzi</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Numero seriale</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Nome argomento</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Algoritmo di firma</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Versione</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Impronta digitale</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Salvataggio impostazioni fallito</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Completamento operazioni...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>Caricamento icone</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>Ricerca applicazione</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>Non sono stati selezionati file o cartelle validi. Assicurati di avere i corretti diritti di accesso e che non abbiano attributi di sistema</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>Ricerca applicazioni</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Impossibile rilevare applicazioni all'interno di {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>Modifica applicazione</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>L'applicazione selezionata non uò essere modificata</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\r\n    <value>L'applicazione selezionata non ha i comandi di modifica specificati. Per modificare i parametri di installazione potrebbe essere necessario disinstallarla e quindi reinstallarla..</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>Salva elenco disinstallazione</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>Vuoi salvare le modifiche dell'elenco disinstallazione aperto?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>Nell'elenco disinstallazione aperto sono presenti alcune modifiche non salvate che saranno perse alla chiusura.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>Seleziona la cartella con le applicazioni da disinstallare.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>Seleziona dove salvare la copia di sicurezza. Sarà creata una nuova cartella.</value>\r\n  </data>\r\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\r\n    <value>BCU è stato aggiornato alla versione v{0}!</value>\r\n  </data>\r\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\r\n    <value>Benvenuto/a nella versione {0} di BCU!</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\r\n    <value>Il PC verrà messo nello stato di sleep tra {0} secondi. Per annullare deseleziona la casella di controllo 'sleep'.</value>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\r\n    <value>Non fare nulla</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\r\n    <value>Apri proprietà</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\r\n    <value>Disinstalla</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CantRenameUninstallerKind_Title\" xml:space=\"preserve\">\r\n    <value>Impossibile rinominare {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CantRenameUninstallerKind_Details\" xml:space=\"preserve\">\r\n    <value>Questo tipo di programma di disinstallazione non supporta la ridenominazione ({0}).</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\n    <value>適切にインストールされていないアプリケーションを評価することはできません。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\n    <value>静かにアンインストール</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\n    <value>デフォルト設定を復元</value>\n  </data>\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\n    <value>すべての設定は永久に失われます。BCUninstallerはこのアクションを完了するために再起動する必要があります。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\n    <value>アンインストールリストを開く</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\n    <value>リストアポイントが作成されませんでした。変更を元に戻すことはできません！それでもアンインストールを続行しますか？</value>\n  </data>\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\n    <value>\"{0}\"の名前を変更</value>\n  </data>\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\n    <value>選択したエントリの名前を変更</value>\n  </data>\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\n    <value>タスク完了</value>\n    <comment>Shown on the status bar</comment>\n  </data>\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\n    <value>アンインストール中</value>\n    <comment>Shown on the status bar</comment>\n  </data>\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\n    <value>選択を記憶</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\n    <value>エラー</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\n    <value>ファイルが存在しません。</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\n    <value>表示するものはありません。このアプリケーションはWindows Installer（MsiExec）を使用してアンインストールされています。</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\n    <value>名前</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\n    <value>値</value>\n  </data>\n  <data name=\"Empty\" xml:space=\"preserve\">\n    <value>空</value>\n  </data>\n  <data name=\"GuidFound\" xml:space=\"preserve\">\n    <value>GUIDが見つかりました</value>\n  </data>\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\n    <value>GUIDがありません</value>\n  </data>\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\n    <value>...まで選択</value>\n  </data>\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\n    <value>ファイルが見つかりません。</value>\n  </data>\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\n    <value>アンインストール後のコマンドを実行中...</value>\n  </data>\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\n    <value>アンインストール前のコマンドを実行中...</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\n    <value>準備完了</value>\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\n  </data>\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\n    <value>{0}のアンインストーラーが選択されました</value>\n    <comment>{0} is a number of selected uninstallers</comment>\n  </data>\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\n    <value>合計{0}のアンインストーラー、{1}</value>\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\n  </data>\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\n    <value>次のコマンドの実行に失敗しました:\n{0}</value>\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\n  </data>\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\n    <value>外部実行に失敗しました</value>\n  </data>\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\n    <value>デフォルト</value>\n    <comment>Used in language select box when you want to use the system language</comment>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\n    <value>一部の設定はアプリケーションが再起動されるまで適用されません。</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\n    <value>新しい設定を適用するためにBCUを再起動しますか？</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\n    <value>アプリケーション設定を変更</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\n    <value>証明書がありません</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\n    <value>検出されたアプリケーションを処理中、残り{0}...</value>\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\n    <value>選択した「終了」は、実行中のアンインストーラーを即座に閉じ、アンインストールが完了しない可能性があります。通常、アンインストーラーを再実行してアンインストールを完了することができます。\n\nまた、このプロセスを待つのをスキップすることもできます。スキップすることで、アンインストーラーは作業を続け、タスクは次の項目に移動します。ただし、スキップしたプロセスが完了するまで、一部のアンインストーラーが実行されない可能性があることに注意してください。\n\n</value>\n  </data>\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\n    <value>評価の詳細</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\n    <value>このアプリケーションには有効なレジストリエントリがありません。</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\n    <value>このアプリケーションには有効なアンインストーラーがありません。</value>\n  </data>\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\n    <value>Windowsの機能を読み込んでいます...</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\n    <value>起動情報を更新しています...</value>\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\n    <value>開くディレクトリはありません。</value>\n  </data>\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\n    <value>利用できません。</value>\n    <comment>Used on application list when value is not available</comment>\n  </data>\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\n    <value>評価は利用できません。</value>\n  </data>\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\n    <value>設定から評価を有効にする必要があります。</value>\n  </data>\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\n    <value>{0} アプリケーション</value>\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\n  </data>\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\n    <value>平均評価: {0}; 私の評価: {1}</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\n    <value>次のアンインストーラーの実行に失敗しました。おそらく衝突が原因です。他のアンインストーラーが完了するのを待ってから再試行してください。\n{0}\n\n設定で衝突検出を無効にすることもできますが、お勧めしません。</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\n    <value>強制アンインストール</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\n    <value>いくつかのアンインストーラーを実行できませんでした。</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\n    <value>.NET Framework v4.0が見つかりませんでした。</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\n    <value>.NET Framework v4.0が見つかりませんでした。一部の機能が無効になります。</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\n    <value>v4.0フレームワークはオプションですが、推奨されます。このフレームワークに依存する機能は、インストールするまで無効のままとなります。</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\n    <value>いくつかのアンインストーラーが失敗しました。</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\n    <value>失敗した静かなアンインストーラーを騒音アンインストーラーで再実行しますか？</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\n    <value>次のアンインストーラーは、騒音アンインストーラーで再実行されます:</value>\n  </data>\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\n    <value>指定されたディレクトリをスキャンしています...</value>\n  </data>\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\n    <value>削除したいアプリケーションがあるディレクトリを選択してください。</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\n    <value>ディレクトリからアンインストール</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\n    <value>指定されたディレクトリ内にアプリケーションが見つかりませんでした。</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\n    <value>正しいディレクトリを選択し、アプリケーションの実行ファイルがまだ存在することを確認してください。</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\n    <value>{0} のアンインストーラーが見つかりました。</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\n    <value>このアンインストーラーを実行しますか？</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\n    <value>発行者</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\n    <value>件名</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\n    <value>アーカイブされた</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\n    <value>拡張子</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\n    <value>表示名</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\n    <value>発行者名</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\n    <value>有効期限</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\n    <value>発行日</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\n    <value>秘密鍵</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\n    <value>秘密鍵があります</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\n    <value>公開鍵</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\n    <value>生データ</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\n    <value>シリアル番号</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\n    <value>件名</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\n    <value>署名アルゴリズム</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\n    <value>バージョン</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\n    <value>サムプリント</value>\n  </data>\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\n    <value>設定の保存に失敗しました。</value>\n  </data>\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\n    <value>最終処理中...</value>\n  </data>\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\n    <value>アイコンを読み込んでいます</value>\n  </data>\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\n    <value>アプリケーションを探しています</value>\n  </data>\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\n    <value>有効なファイルまたはディレクトリが選択されていません。</value>\n  </data>\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\n    <value>アプリケーションを探す</value>\n  </data>\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\n    <value>{0} 内にアプリケーションが見つかりませんでした。</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\n    <value>アプリケーションを変更</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\n    <value>選択したアプリケーションは変更できません。</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\n    <value>選択したアプリケーションには変更コマンドが指定されていません。\nインストール設定を変更するには、アンインストールして再インストールする必要がある場合があります。</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\n    <value>アンインストールリストを保存</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\n    <value>開いているアンインストールリストに変更を保存しますか？</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\n    <value>開いているアンインストールリストに未保存の変更があります。これを閉じると失われます。</value>\n  </data>\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\n    <value>アンインストールするアプリケーションのあるディレクトリを選択してください。</value>\n  </data>\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\n    <value>バックアップを保存する場所を選択します。新しいディレクトリが作成されます。</value>\n  </data>\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\n    <value>BCUはv{0}に更新されました！</value>\n  </data>\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\n    <value>BCUバージョン{0}へようこそ！</value>\n  </data>\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\n    <value>{0}秒後にPCをスリープ状態にします。スリープのチェックボックスを外すとキャンセルされます。</value>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\n    <value>何もしない</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\n    <value>プロパティを開く</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\n    <value>アンインストールする</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\n    <value>復元ポイントを作成する...</value>\n  </data>\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\n    <value>残留物の検索...</value>\n  </data>\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\n    <value>アンインストーラリストを作成する</value>\n  </data>\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\n    <value>残存物を削除しています...</value>\n  </data>\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\n    <value>アップデートを検索する...</value>\n  </data>\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\n    <value>検索条件に一致するエントリはありません。</value>\n  </data>\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\n    <value>BCUninstaller のエクスポート\n発行者｜バージョン｜日付｜サイズ｜レジストリ｜アンインストーラの種類｜アンインストール文字列｜静かなアンインストール文字列｜コメント</value>\n  </data>\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\n    <value>ポータブル</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\n    <value>APIの呼び出しに失敗しました</value>\n  </data>\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\n    <value>レジストリのバックアップに失敗しましたが、続行しますか？</value>\n  </data>\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\n    <value>エラー詳細:\n</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\n    <value>残存物の削除</value>\n  </data>\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\n    <value> \n \nエラーの詳細です：\n</value>\n    <comment>Add space or newline afterwards and two newlines before</comment>\n  </data>\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\n    <value>続行する前にレジストリのバックアップを作成しますか？</value>\n  </data>\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\n    <value>後でダブルクリックすることで、すべての変更を元に戻すことができます。\n\nファイルとディレクトリはゴミ箱に移動され、そこから復元できます。</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\n    <value>アクションの失敗</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\n    <value>このアクションには1つのエントリのみを選択する必要があります。</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\n    <value>リストから正確に1つのアンインストーラーを選択してください。チェックボックスを使用している場合は、必ずチェックしてください。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\n    <value>アップデートを検索する</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\n    <value>オンラインコンテンツを開く</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\n    <value>インターネットに接続できない、利用可能なネットワークがない。</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\n    <value>インターネットに接続できません。利用可能なネットワークがありません。\nネットワークケーブルが接続されていることを確認してください。Wi-Fiを使用している場合は、信号強度が良好であることを確認してください。\n</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\n    <value>フィードバックの送信</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\n    <value>BCUに関するフィードバックを送信しますか？</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\n    <value>これには1分もかかりませんが、開発に大いに役立ちます！バグ報告、機能リクエスト、単なる感謝の言葉など、どんなフィードバックでも歓迎です！\n後で上部メニューバーから送信できます（ヘルプ-&gt;フィードバックを送信）\n</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\n    <value>現在のバージョンは最新です。</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\n    <value>現在のところ更新は見つかりませんでした。最新バージョンを使用しています。\n\n機能の追加やバグの修正を希望しますか？「ヘルプ-&gt;フィードバックを送信」メニューを使用してフィードバックを送信してください。\n</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\n    <value>更新を確認中にエラーが発生しました</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\n    <value>BCUninstallerがファイアウォールでブロックされておらず、インターネット接続が正常であることを確認してください。</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\n    <value>新しいバージョン{0}が利用可能です。今すぐアップグレードしますか？</value>\n    <comment>0 is version number</comment>\n  </data>\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\n    <value>BCUninstallerは自動的に更新をダウンロードし、再起動後に適用します。この過程で設定が失われる可能性があることに注意してください。\n\n変更履歴:\n- {0}\n\n警告:更新中にBCUディレクトリ内の「Update」フォルダと「Update.zip」ファイルが削除されます。\n</value>\n    <comment>0 is a list of changes separated by \"- \"</comment>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\n    <value>影響を受けるエントリ: {0}\n\nこれらのエントリを変更するには、設定サイドバーからアンインストーラー保護を無効にする必要があります。タスクから削除し、他のアイテムを続行することもできます。</value>\n    <comment>0 names of protected uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\n    <value>保護されたエントリ: {0}\n\nこのエントリを変更するには、設定パネルからアンインストーラー保護を無効にする必要があります。\n</value>\n    <comment>0 name of protected uninstaller</comment>\n  </data>\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\n    <value>次のアイテムにはサイレントアンインストーラーがありません: {0}\nこれらのアイテムに「騒音」アンインストーラーを使用しますか、それともタスクから削除しますか？\n</value>\n    <comment>0 is names of non-quiet uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\n    <value>Msiを使用してアンインストールする</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\n    <value>選択したエントリはMsiExecインストーラーを使用してアンインストールできません</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\n    <value>選択したアンインストーラーには、MsiExecで使用するための有効なGuidがありません。</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\n    <value>現在のアンインストールタスクを停止</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\n    <value>現在実行中のタスクを停止してもよろしいですか？</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\n    <value>タスクを早期に停止すると、変更は元に戻りません。現在実行中のアンインストーラーは停止せず、タスクは完了するまで待機します。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\n    <value>リストアポイントを作成</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\n    <value>新しいリストアポイントの作成に失敗しました</value>\n  </data>\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\n    <value>x64</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"StrDebug\" xml:space=\"preserve\">\n    <value>デバッグ</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\n    <value>アンインストールの進行状況</value>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\n    <value>コンピューターを離れることができます</value>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\n    <value>残りのアンインストーラーは、ユーザーの介入なしに完了できるはずです。アンインストーラーの1つがクラッシュした場合に備えて、時々確認してください。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\n    <value>ジャンク/残存物の削除</value>\n  </data>\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\n    <value>本当に信頼度の低いアイテムを変更しますか？</value>\n  </data>\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\n    <value>良い以下の信頼度でマークされたアイテムを削除することは非常に危険です！すべてのアイテムが削除しても安全であることを確認することをお勧めします。</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\n    <value>レジストリからキーを削除</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\n    <value>選択したアンインストーラーエントリを削除してもよろしいですか？</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\n    <value>次のアイテムはレジストリから削除され、アンインストーラーリストから消えますが、アンインストールはされません。\n\n{0}</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\n    <value>エクスポートに失敗しました</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\n    <value>エクスポートされたデータを保存中にエラーが発生しました</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\n    <value>エラーが続く場合は、別のディレクトリに保存してみてください。たとえば、デスクトップに保存します。</value>\n  </data>\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\n    <value>BCUninstallerは{0}アプリケーションをアンインストールしています</value>\n    <comment>0 is the uninstaller count</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\n    <value>アンインストーラーの名前を変更</value>\n  </data>\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\n    <value>提供された名前が空であるか、無効な文字</value>\n  </data>\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\n    <value>次の文字が含まれていないことを確認してください:\n{0}</value>\n    <comment>0 is list of characters separated by spaces</comment>\n  </data>\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\n    <value>実行されたアンインストールの残留物を探しますか？</value>\n  </data>\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\n    <value>この機能は、その動作を理解しているパワーユーザー向けのものです。このファイルを削除する必要はなく、システムのパフォーマンスに有意な影響を与えることはありません。</value>\n  </data>\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\n    <value>残留物は見つかりませんでした</value>\n  </data>\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\n    <value>残留物は見つかりませんでした。まだいくらかの残留物が残っている可能性があるため、BleachBitのような一時ファイルクリーナーを実行できます。</value>\n  </data>\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\n    <value>クリップボードにコピーするものはありませんでした。選択したアンインストーラーにはこの情報が含まれていないか、何も選択されていません。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\n    <value>クリップボードにコピー</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\n    <value>ディレクトリを開く</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\n    <value>この操作は{0}のディレクトリを一度に開きます。続行してもよろしいですか？</value>\n    <comment>0 is number of directories to open\n</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\n    <value>オンライン検索</value>\n  </data>\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\n    <value>検索するものはありません</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\n    <value>BCUninstallerをアンインストール</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\n    <value>BCUninstallerをアンインストールしてもよろしいですか？</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\n    <value>お別れは残念です！\nお時間があれば、なぜBCUをアンインストールしたのかを私のウェブサイト（http://klocmansoftware.weebly.com/）で教えていただけると幸いです。\n正当な問題を修正できるよう最善を尽くします。</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\n    <value>続行する前にリストアポイントを作成しますか？</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\n    <value>アンインストールするアプリケーションが重要であるか、システムの安定性に必要かどうか不明な場合は、リストアポイントを作成することをお勧めします。\n手順後に何か問題が発生した場合は、システムの復元を使用して変更を元に戻すことができます。</value>\n  </data>\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\n    <value>検索ページを開いているときにエラーが発生しました</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\n    <value>アンインストールリストを保存</value>\n  </data>\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\n    <value>リストをファイルに保存できませんでした</value>\n  </data>\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\n    <value>すべてのアプリケーション設定をリセットしてもよろしいですか？</value>\n  </data>\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\n    <value>一部のアプリケーションは静かにアンインストールできません</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\n    <value>一部のエントリは保護されており、変更できません</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\n    <value>選択したエントリは保護されており、変更できません</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\n    <value>URLを開いているときにエラーが発生しました</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\n    <value>現在の選択を保持しますか？</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\n    <value>ディレクトリを開いているときにエラーが発生しました</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\n    <value>選択したファイルを読み込めませんでした</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\n    <value>アンインストーラーが選択されていません。アンインストールするものはありません</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\n    <value>アンインストーラーを実行</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\n    <value>アプリケーションをアンインストールするには、最初にリストビューから選択する必要があります。チェックボックスを使用している場合は、必ずチェックしてください。</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\n    <value>現在の選択を保持する場合、それは開いているリストと統合されます</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\n    <value>このアクションは{0}のURLを一度に開きますが、続行してもよろしいですか？</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\n    <value>URLを開く</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\n    <value>開くURLはありません</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\n    <value>保護された項目を変更</value>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\n    <value>現在実行中のアンインストーラーを待つのをスキップしますか？</value>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\n    <value>現在実行中のタスクをスキップ</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\n    <value>別のアンインストールタスクがすでに実行中です。完了するまでお待ちください。その後、再試行してください。</value>\n  </data>\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\n    <value>評価: {0}\n\nポジティブ: {1}\n\nネガティブ: {2}</value>\n    <comment>{0} - Rating as a string\n{1} - List of strings of positive parts of the rating\n{2} - List of strings of negative parts of the rating\nThe lists are separated by a single newline.</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Maak een herstelpunt...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Zoeken naar programma restanten</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>De de-installatie lijst vullen...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Programma restanten verwijderen...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Zoeken naar updates...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>Er zijn geen registraties, die met uw zoekbegrip overeenkomen.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>BCUninstaller Export\r\nUitgever | Versie | Datum | Grootte | Registry | De-installatie type | De-installatie string | De-installatie string (stil) | Commentaar</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value> Portabel</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>Oproep van API mislukt</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Back-up van register is mislukt. Wilt u toch doorgaan?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>\r\nFout details:\r\n</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Restanten verwijderen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nFout details:\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Wilt u een back-up van het register maken, voordat u verder gaat?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>U kunt alle wijzigingen terugzetten, als u daar later op dubbel klikt.\r\n\r\nBestanden en mappen worden verplaatst naar de prullenbak, van waaruit u deze kunt herstellen.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>De bewerking is mislukt</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>U moet één registratie voor deze bewerking selecteren</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>Selecteer exact één de-installer uit de lijst. Maakt u gebruikt van checkboxen, controleer deze dan voor de uitvoering!</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Zoeken naar updates</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Online inhoud openen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>Geen verbinding met het Internet. Er is geen netwerk beschibaar.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Weet u zeker dat u lopende taken wilt beëindigen?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Een herstelpunt maken?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>Export is mislukt</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>BCUninstaller de-installeert {0} programma('s)</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>De-installer hernoemen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>De opgegeven naam is leeg of bevat ongeldige tekens</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Let op: dit onderdeel is alleen bedoeld voor ervaren gebruikers, die begrijpen hoe het e.e.a. werkt. Het is niet nodig om deze bestanden te verwijderen, als deze de systeem prestaties niet wezenlijk beïnvloeden.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>Geen programma restanten gevonden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>Geen restanten gevonden. Mogelijke restanten kunt u met een tijdelijke bestandenreiniger zoals BleachBit verwijderen.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Online zoeken</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>Niets om naar te zoeken</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>BCUninstaller de-installeren</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Wilt u BCUninstaller daadwerkelijk de-installeren?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Wilt u een herstelpunt maken voordat u verder gaat?</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Naam</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Waarde</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Leeg</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>GUID gevonden</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>GUID ontbreekt</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Selecteer tot aan...</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Bestand niet gevonden</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Uitvoeren van NA de-installatie opdrachten...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Uitvoeren van VOOR de-installatie opdrachten...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Voltooid</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>{0} De-installer(s) geselecteerd</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>{0} de-installer(s) in totaal, {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>De volgende opdracht kon niet worden uitgevoerd:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>Externe uitvoering is mislukt</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>Voorinstelling</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Sommige instellingen worden pas na een herstart van het programma effectief.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Wilt u BCU opnieuw starten, om de nieuwe instellingen over te nemen?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Programma instellingen wijzigen</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>Certificaat ontbreekt</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Verwerking van de de-installers ({0})</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>Wilt u het wachten op de nu lopende de-installatie overslaan?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Actueel uitgevoerde taken overslaan</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Er wordt al een andere de-installatie taak uitgevoerd. Even geduld tot deze is voltooid en probeer het daarna opnieuw.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Waardering: {0}\r\n\r\nPositief:\r\n{1}\r\n\r\nNegatief:\r\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>Dit programma heeft geen geldige register ingang</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>Dit programma heeft geen geldige de-installer</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>Verversen opstart informatie...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>Geen mappen om te openen</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>Niet beschikbaar</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Waarderingen niet beschikbaar</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>U moet eerst 'Waarderen' inschakelen in de instellingen.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>U kunt onjuist geïnstalleerde programma's niet waarderen.</value>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} programma's</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Forceer de-installatie</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>Het uitvoeren van enkele de-installers is mislukt</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 niet gevonden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 werd niet gevonden, enkele functies zullen worden uitgeschakeld</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>Het v4.0 Framework is optioneel, maar wordt aanbevolen. De functies die zijn gebaseerd op dit framework, zullen worden uitgeschakeld totdat u dit installeert.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Enkele de-installers mislukten</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>Wilt u proberen om lopende stille de-installers die mislukten zichtbaar te maken?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>De volgende de-installers worden zichtbaar herstart:</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>De opgegeven map scannen...</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Selecteer de map met programma's die u wilt verwijderen.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>De-installeer uit map</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Er werden geen programma's gevonden in de opgegeven map</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Controleer dat u de juiste map selecteerde en dat de uitvoerbare programma's (.exe) nog aanwezig zijn.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Een de-installer gevonden voor {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>Wilt u deze de-installer uitvoeren?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Verlener</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Onderwerp</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Gearchiveerd</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Extensies</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Vriendelijke naam</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Naam verlener</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>Niet na</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>Niet voor</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Privé sleutel</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>Heeft een prive sleutel</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Publieke sleutel</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Raw data</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Serienummer</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Onderwerp naam</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Signatuur algoritme</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Versie</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Vingerafdruk</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Opslaan instellingen is mislukt</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Voltooid op...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>Pictogrammen laden...</value>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Gemiddelde waardering: {0}; Mijn waardering: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Controleer dat de netwerkkabel is aangesloten. Indien u gebruik maakt van Wi-Fi, controleer dan de signaalsterkte.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Feedback sturen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>Wilt u mij feedback over BCU sturen?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>Dit kost u minder dan een minuut en helpt de ontwikkelinmg van het programma enorm! Elke vorm van feedback is welkom, zoals een foutbericht, verzoeken voor nieuwe functionaliteit(en) of een bedankje!\r\n\r\nU kunt dit ook later sturen via de hoofd menubalk (Help -&gt; Feedback sturen).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>De huidige versie is actueel!</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>Er werden geen updates gevonden, u heeft de laatste versie.\r\n\r\nMist u functionaliteiten of wilt u een oplossing voor een fout? Stuur mij dan uw feedback via het menu (Help -&gt; Feedback sturen).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Er werd een fout ontdekt bij het zoeken naar updates!</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Controleer dat BCUninstaller niet wordt geblokkeerd door uw 'firewall' en dat u een werkende internetverbinding hebt.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>Een nieuwe versie {0} is beschikbaar, wilt u nu upgraden?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>De geselecteerde registratie kan niet met de MsiEx-Installer worden gede-installeerd.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>De geselecteerde de-installer heeft geen geldige Guid voor het gebruik met MsiExec.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>De actuele de-installatie taak beëindigen?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>De keuze 'Beëindigen\" sluit onmiddellijk de lopende de-installer en kan er in resulteren dat de de-installatie niet wordt afgesloten. In de regel kunt u de de-installer opnieuw uitvoeren om de de-installatie af te sluiten.\r\n\r\nAls alternatief kunt u de wachttijd voor dit proces overslaan. Hierdoor werkt de de-installer door, terwijl de taak naar het volgende onderdeel springt.\r\nDenk er aan, dat enkele de-installers niet kunnen worden uitgevoerd, voor dat het overgeslagen proces is afgesloten.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Waardering details</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Windows onderdelen laden...</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>De volgende de-installers werden uitgevoerd, mogelijk vanwege een conflict. Wacht tot de andere de-installers zijn voltooid en probeer het opnieuw.\r\n{0}\r\n\r\nU kunt proberen de detectie van conflicten in de instellingen uit te schakelen, maar dit wordt niet aanbevolen.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>BCUninstaller zal automatisch de update downloaden en zal dit na een herstart gebruiken. Houd er rekening mee dat uw instellingen tijdens dit proces verloren kunnen gaan.\r\n\r\nWijzigingen log:\r\n- {0}\r\n\r\nWaarschuwing: tijdens de update worden de map \"Update\" en het bestand \"Update.zip\" in de BCU mappen verwijderd.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Kon geen nieuw herstelpunt maken</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value> x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value> DEBUG</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>De-installatie voortgang</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>U kunt de computer nu uitzetten.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>Resterende de-installers zouden zonder gebruikersinterventie moeten voltooien.\r\nVan tijd tot tijd zou u moeten controleren of een van de de-installers niet is gecrashed.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Afval/Programma restanten verwijderen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Wilt u onderdelen met een lage graad van vertrouwen wijzigen?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Het verwijderen van onderdelen met een lage graad van vertrouwen als GOED, kan zeer gevaarlijk zijn! Het wordt aanbevolen dat u elk individueel onderdeel alvorens te verwijderen verifieërd!</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Sleutels uit het register verwijderen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Weet u zeker dat u de geselecteerde de-installer registraties wilt verwijderen?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>De volgende onderdelen werden uit het register verwijderd en verdwijnen uit de de-installer lijst, maar worden niet gede-installeerd.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>Er is een fout opgetreden bij het opslaan van de geëxporteerde gegevens</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>Als de fout blijft voortbestaan, probeer dan in een andere map op te slaan, bijv. het bureaublad.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Controleer of u niet een van de volgende tekens heeft gebruikt:\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Wilt na uitvoering van de-installatie(s) zoeken naar restanten?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>Er was niets om te kopieëren naar het klembord. Of u heeft niets geselecteerd of de informatie is afkomstig van de de-installer.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>Kopiëren naar het klembord</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Mappen openen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>Deze bewerking opent {0} mappen tegelijk. Weet u zeker dat u verder wilt gaan?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Stille de-installatie</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Standaard instellingen herstellen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Alle instellingen gaan blijvend verloren. BCUninstaller moet worden herstart om deze bewerking te voltooien. </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>De-installatie lijst openen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>Het herstelpunt WERD NIET GEMAAKT, u kunt wijzigingen niet herstellen! Wilt u toch doorgaan met de de-installatie?</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>Hernoemen \"{0}\"</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Geselecteerde registratie hernoemen</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>Taak voltooid</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>De-installatie</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Keuze onthouden</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Fout</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>Het bestand bestaat niet</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Niets om weer te geven. Dit programmma wordt m.b.v. de Windows Installer (MsiExec) gede-installeerd.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Jammer dat u ons gaat verlaten! Als u enkele minuten heeft, laat mij dan met een kort bericht op mijn website (http://klocmansoftware.weebly.com/) weten waarom u BCU de-installeerde. Ik zal mijn best doen om gemelde problemen op te lossen.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>Bij het openen van de pagina \"Zoeken\" trad een fout op</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>De-installatiie lijst opslaan</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>De lijst kon niet in een bestand worden opgeslagen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Weet u zeker dat u alle programma-instellingen wilt terugzetten?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Sommige programma's kunnen niet stil worden gede-installeerd</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Sommige onderdelen zijn beveiligd en kunnen niet worden gewijzigd</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>Het geselecteerde onderdeel is beveiligd en kan niet worden gewijzigd</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>Bij het openen van de URL trad een fout op</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Wilt u de huidge selectie behouden?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>Bij het openen van de map trad een fout op</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>De geselecteerde bestanden konden niet worden geladen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>Geen uninstaller geselecteerd, er is niets om te de-installeren</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>De-installer uitvoeren</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>URL's openen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>Geen URL's om te openen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Beveiligd onderdeel wijzigen</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>De-installatie met MSI</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Het voortijdig beëindigen van de taak, maakt dat terugzetten niet mogelijk is.\r\nDe lopende de-installer wordt niet gestopt, deze taak wacht op zijn voltooiing.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Bent u onzeker of de programma's die u wilt de-installeren, belangrijk of voor de systeemstabiliteit vereist zijn? Dan wordt aanbevolen om een herstelpunt te maken.\r\nMocht er onverhoopt iets misgaan, dan kunt u met systeemherstel de wijziging(en) ongedaan maken.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>Om programma's te de-installeren moet u deze eerst in de getoonde lijst selecteren. Als u gebruik maakt van checkboxen, controleer dan dat deze aangevinkt zijn.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Als u de huidige selectie wilt opslaan, wordt deze met de geopende lijst(en) samengevoegd.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>Deze bewerking opent {0} URL's. Weet u zeker dat u wilt doorgaan?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>\r\nGetroffen registraties: {0}\r\n\r\nOm deze registraties te wijzigen, moet u uit de instellingen in de zijbalk lijst de beveiliging van de de-installer uitschakelen. U kunt deze uit de taak verwijderen en met de andere onderdelen doorgaan.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>\r\nBeveilgde registratie: {0}\r\n\r\nOm deze registratie te wijzigen, moet u de beveiliging van de de-installer in het instellingen venster uitschakelen.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>\r\nDe volgende onderdelen hebben geen onzichtbare de-installer(s): {0}\r\n\r\nWilt u voor deze onderdelen de standaard de-installer gebruiken of moeten de registraties uit de taak worden verwijderd?</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>Zoeken naar programma</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>Er werden geen geldige mappen of bestanden. Controleer of u daar toegang toe hebt en dat deze niet zijn aangeduid als systeembestanden.</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>Zoeken naar programma's</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Zoeken naar programma's in {0} is mislukt</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>Wijzig programma</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>Het geselecteerde programma kan niet worden gewijzigd</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\r\n    <value>Voor het geselecteerde programma is geen wijzig opdracht gespecificeerd.\r\nHet kan noodzakelijk zijn om te de-installeren en het dan opnieuw te installeren om de installatie instellingen te wijzigen.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>Opslaan de-installeer lijst</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>Wijzigingen opslaan in de de-installatie lijst?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>Er zijn niet opgeslagen wijzigingen in de geopende de-installatie lijst, die verloren gaan door deze te sluiten.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>Selecteer de map met de programma's om te de-installeren.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>Selecteer waar de back-up opgeslagen moet worden. Er zal een nieuwe map gemaakt worden.</value>\r\n  </data>\r\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\r\n    <value>BCU is bijgewerkt naar v{0}!</value>\r\n  </data>\r\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\r\n    <value>Welkom bij BCU versie {0}!</value>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\r\n    <value>Niets</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\r\n    <value>Eigenschappen openen</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\r\n    <value>De-installeert</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\r\n    <value>PC in slaapstand zetten in {0}s. Verwijder het vinkje uit het slaapvakje om te annuleren.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Tworzenie punktu przywracania...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Szukanie pozostałości...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>Odświeżanie listy dezinstalatorów...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Usuwanie pozostałości...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Szukanie aktualizacji...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>Żaden element nie spełnia kryteriów wyszukiwania</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>Eksport programu BCUninstaller | Wersja | Data | Rozmiar | Rejestr| Typ dezinstalatora | Komenda dezinstalacji | Komenda cichej dezinstalacji | Komentarze</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value>Portable</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>Błąd dostępu do API</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Tworzenia kopii zapasowej rejestru nie powiodło się, czy chcesz kontynuować mimo to?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Szczegóły błędu: </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Usuwanie pozostałości</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nSzczegóły błędu:\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Czy chcesz utworzyć kopię zapasową rejestru przed kontynuowaniem?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Będzie można cofnąć wszystkie zmiany w rejestrze klikając ją dwukrotnie.\r\n\r\nPliki i katalogi będą przenoszone do kosza, można przywrócić je stamtąd.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>Akcja nie powiodła się</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>Musisz wybrać tylko jedną pozycję dla tego działania</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>Wybierz dokładnie jedną pozycję  z listy. Jeśli używasz pól wyboru upewnij się że są zaznaczone.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Szukaj aktualizacji</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Otwórz treści sieciowe</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>Nie można połączyć się z internetem, brak dostępnych sieci.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Upewnij się, że kabel sieciowy jest podłączony. Jeśli korzystasz z Wi-Fi sprawdź, czy masz dobrą siłę sygnału.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Wyślij feedback</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>Chciałbyś wysłać opinię dotyczącą BCU?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>To zajmie Ci mniej niż minutę, ale znacznie pomoże w rozwoju programu! Wszystkie opinie i komentarze są mile widziane!\r\n\r\nMożesz wysłać ją później poprzez pozycję w górnym menu (Pomoc-&gt; Wyślij feedback).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>Obecna wersja jest aktualna</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>Nie znaleziono aktualizacji, masz najnowszą wersję programu.\r\n\r\nCzekasz na nowe funkcje lub poprawę błędów? Daj mi znać poprzez menu \"Pomoc-&gt;Wyślij feedback\".</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Podczas wyszukiwania aktualizacji wystąpił błąd. </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Upewnij się że BCUninstaller nie jest blokowany przez twojego firewalla i że masz sprawne połączenie z internetem.\r\n\r\n</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>Nowa wersja {0} jest dostępna, zaktualizować teraz?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>BCUninstaller automatycznie ściągnie aktualizację  i zainstaluje ją po restarcie programu.\r\n\r\nLista zmian:\r\n- {0}\r\n\r\nUwaga: Podczas aktualizacji folder \"Update\" i plik \"Update.zip\" w folderze BCU zostaną usunięte.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Odinstaluj używając MsiExec</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>Wybrana pozycja nie może zostać odinstalowana poprzez MsiExec</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>Pozycja nie posiada prawidłowego kodu produktu (GUID) potrzebnego do tej akcji.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Zatrzymaj dezinstalację</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Czy na pewno chcesz zatrzymać dezinstalację?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Przedwczesne zatrzymanie nie przywróci wprowadzonych zmian. Obecnie działający dezinstalator nie zostanie zamknięty, musi zostać zatrzymany ręcznie.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Utwórz punkt przywracania</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Tworzenie punktu przywracania nie powiodło się</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value>x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value>DEBUG</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>Postęp dezinstalacji</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>Możesz opuścić komputer, pozostałe aplikacje odinstalują się automatycznie</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>Pozostałe dezinstalatory powinny być w stanie skończyć pracę bez twojej interwencji. Mimo to sprawdzaj co jakiś czas czy któryś z dezinstalatorów nie napotkał nieoczekiwanego błędu.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Usuwanie pozostałości</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Czy na pewno chcesz zmodyfikować pozycje z niską pewnością?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Usuwanie elementów o niskim poziomie pewności jest bardzo niebezpieczne, dokładnie sprawdź każdą pozycję przed usunięciem.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Usuń klucze z rejestru</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Czy na pewno chcesz usunąć wybrane pozycje?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Następujące elementy zostaną usunięte z rejestru i znikną z listy aplikacji, ale nie zostaną odinstalowane.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>Eksport nie powiódł się</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>Napotkano błąd podczas zapisywania eksportowanych danych</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>Jeśli błąd będzie się powtarzał spróbować zapisać do innego katalogu, na przykład na pulpicie.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>BCUninstaller odinstalowuje {0} aplikacji</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>Zmień nazwę dezinstalatora</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>Dostarczane nazwa jest pusta lub zawiera niedozwolone znaki</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Upewnij się że nie zostały użyte następujące znaki:\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Czy wyszukać pozostałości po odinstalowanych aplikacjach?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Pamiętaj że ta funkcja jest przeznaczona dla zaawansowanych użytkowników którzy rozumieją jej działanie. Usunięcie pozostałości nie jest wymagane - nie spowolnią one systemu, jedynie zajmą niewielką ilość miejsca na dysku.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>Nie znaleziono pozostałości</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>Nie znaleziono żadnych pozostałości. Dla pewności można uruchomić inny program czyszczący śmieci, np. BleachBit.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>Nie znaleziono nic do skopiowania. Wybrane dezinstalatory nie posiadały tych informacji lub nie wybrałeś żadnego dezinstalatora.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>Kopiuj do schowka</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Otwórz foldery</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>Ta akcja otworzy {0} folderów na raz, czy kontynuować?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Szukaj online</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>Nie ma nic do wyszukania</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Odinstaluj BCUninstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Czy na pewno chcesz odinstalować BCUninstaller?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Jeżeli masz chwilę wstąp na stronę programu (http://klocmansoftware.weebly.com/) i napisz co skłoniło cię do odinstalowania BCU.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Czy utworzyć punkt przywracania przed dezinstalacją?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>If you are unsure if applications you are uninstalling are important or required to system stability it is recommended to create a restore point. \r\n If anything breaks after the procedure you can then use System Restore to roll back the changes.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>Wystąpił błąd podczas otwierania wyszukiwarki.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Zapisz listę dezinstalatorów</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Zapisanie listy do pliku nie powiodło się.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Czy na pewno zresetować wszystkie ustawienia?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Niektóre aplikacje nie mogą zostać cicho odinstalowane</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Niektóre pozycje są zabezpieczone i nie mogą być zmienione</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>Wybrana pozycja jest zabezpieczona i nie może zostać zmieniona</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>Napotkano błąd podczas otwierania adresu.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Czy chcesz zachować aktualne zaznaczenie?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>Napotkano błąd podczas otwierania folderu.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Otwarcie plików nie powiodło się</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>Nie wybrano żadnych dezinstalatorów, nic do odinstalowania</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>Dezinstaluj pozycje</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>Aby odinstalować aplikacje należy najpierw wybrać je z listy. Jeśli używasz pól wyboru, upewnij się, że są one zaznaczone.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Jeżeli zachowasz zaznaczenie zostanie ono połączone z otworzoną listą/listami</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>Ta akcja otworzy {0} adresów na raz, czy kontynuować?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>Otwórz adresy URL</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>Brak adresów do otwarcia</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Modyfikuj zabezpieczone pozycje</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Zabezpieczone pozycje:\r\n{0}\r\n\r\nAby zmienić te ustawienia musisz wyłączyć zabezpieczenia w pasku ustawień.Możesz usunąć te pozycje z zadania i kontynuować lub anulować zadanie.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>Zabezpieczona pozycja: {0}\r\n\r\nAby zmienić tą pozycję musisz wyłączyć zabezpieczenia w pasku ustawień</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Następujące pozycje nie posiadają cichych dezinstalatorów:\r\n{0}\r\n\r\nPozostawić je w zadaniu i użyć 'głośnych' dezinstalatorów czy całkowicie usunąć je z zadania?</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Cicha dezinstalacja</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Przywróć ustawienia domyślne</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Wszystkie ustawienia zostaną utracone na stałe. BCUninstaller będzie musiał ponownie uruchomić się do przeprowadzenia tej akcji.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Otwórz listę dezinstalatorów</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>Punkt przywracania nie został utworzony, nie będzie możliwości cofnięcia zmian! Czy chcesz kontynuować dezinstalację mimo to?</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>Zmiana nazwy \"{0}\"</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Zmień nazwę dezinstalatora</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>Zadanie zakończone</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Odinstalowywanie</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Zapamiętaj wybór</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Błąd</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>Plik nie istnieje na dysku.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Aplikacja jest odinstalowywana Instalator systemu Windows (MsiExec).</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Nazwa</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Wartość</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Brak</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>Znaleziono GUID</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>Brak GUID</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Zaznacz do...</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Nie znaleziono pliku.</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Wykonywanie komend po dezinstalacji...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Wykonywanie komend przed dezinstalacją...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Gotowy</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>Wybrano {0} dezinstalatorów</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>Razem {0} dezinstalatorów, {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>Wykonanie następującej komendy nie powiodło się:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>Błąd wykonania komendy</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>Domyślny</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Niektóre ustawienia nie zostaną wprowadzone do momentu ponownego uruchomienia aplikacji.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Czy chcesz ponownie uruchomić BCU aby zastosować nowe ustawienia?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Zmień ustawienia aplikacji</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>Brak certyfikatu</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Przetwarzanie wykrytych aplikacji, pozostało {0}...</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>Wybranie opcji \"Zakończ\" natychmiast zamknie uruchomiony dezinstalator i może spowodować nie dokończenie dezinstalacji. Zazwyczaj należy uruchomić dezinstalator jeszcze raz, aby dokończyć dezinstalację.\r\n\r\nAlternatywnie można pominąć czekanie na ten proces. Pomijanie pozwoli kontynuować pracę podczas dezinstalacji, zadanie przechodzi do następnej pozycji. Należy pamiętać, że niektóre dezinstalatory mogą nie działać, aż zakończy się proces pomijania.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>Czy chcesz pominąć czekanie na uruchomiony dezinstalator?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Pomiń aktualnie uruchomione zadanie</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Inna dezinstalacja w toku. Proszę czekać na zakończenie procesu i spróbować ponownie.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Ocena: {0}\r\n\r\nPozytywy:\r\n{1}\r\n\r\nNegatywy:\r\n{2}\r\n</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Szczegóły oceny</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>Ta aplikacja nie posiada prawidłowego wpisu w rejestrze</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>Ta aplikacja nie posiada prawidłowego dezinstalatora</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Ładowanie funkcji systemu Windows...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>Odświeżanie informacji o autostarcie...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>Brak katalogów do otwarcia</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>Niedostępne</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Oceny nie dostępne</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>Najpierw musisz włączyć oceny z ustawień.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>Nie można ocenić aplikacji, które nie są prawidłowo zainstalowane.</value>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} aplikacji</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Średnia ocena: {0}; Moja ocena: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>Następujących dezinstalatorów nie udało się uruchomić, prawdopodobnie z powodu kolizji. Poczekaj aż inne dezinstalatory skonczą pracę i spróbuj ponownie.\r\n{0}\r\n\r\nMożna spróbować wyłączyć wykrywanie kolizji w ustawieniach, ale nie jest to zalecane.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Wymuś dezinstalację</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>Nie powiodło się uruchomiene niektórych dezinstalatorów</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>Nie znaleziono .NET Framework v4.0</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>Nie znaleziono .NET Framework v4.0, niektóre funkcje będą niedostępne</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>Obecność .NET Framework v4.0 jest opcjonalna, ale zalecana. Funkcje które na niej polegają będą wyłączone do czasu zainstalowania .NET Framework v4.0.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Niepowodzenie niektórych dezinstalatorów</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>Czy uruchomić ciche dezinstalatory które się nie powiodły jako głośne?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>Następujące dezinstalatory zostaną uruchomione ponownie jako głośne:</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>Skanowanie podanego folderu...</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Podaj folder z aplikacjami które chcesz usunąć.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>Dezinstaluj z folderu</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Nie znaleziono żadnych aplikacji w podanym folderze</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Upewnij się że wybrałeś właściwy folder i że zawiera on pliki wykonywalne aplikacji</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Znaleziono dezinstalator dla {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>Czy uruchomić znaleziony dezinstalator?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Emitent</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Podmiot</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Zarchiwizowany</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Rozszerzenia</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Przyjazna nazwa</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Nazwa emitenta</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>Nie po</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>Nie przed</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Prywatny klucz</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>Ma prywatny klucz</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Publiczny klucz</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Surowe dane</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Numer seryjny</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Nazwa podmiotu</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Algorytm podpisu</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Wersja</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Odcisk kciuka</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Nie udało się zapisać ustawień</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Kończenie...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>Ładowanie ikon</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>Szukaj aplikację</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>Nie wybrano żadnych poprawnych plików i/lub folderów. Upewnij się że masz do nich dostęp, i że nie są oznaczone jako pliki systemowe.</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>Szukaj aplikacji</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Nie znaleziono żadnych aplikacji w {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>Zmodyfikuj aplikację</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>Wybranej aplikacji nie można zmodyfikować</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\r\n    <value>Wybrana aplikacja nie ma określonego polecenia modyfikacji. Może być konieczne odinstalowanie, a następnie ponownie zainstalowanie aplikacji w celu zmiany ustawień jej instalacji.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>Zapisz listę odinstalowywania</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>Czy zapisać zmiany na otwartej liście odinstalowywania?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>Istnieją niezapisane zmiany na otwartej liście odinstalowań, które zostaną utracone przez zamknięcie.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>Wybierz katalog z aplikacjami do odinstalowania.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>Wybierz lokalizację, w której chcesz zapisać kopię zapasową. Zostanie utworzony nowy katalog.</value>\r\n  </data>\r\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\r\n    <value>BCU został zaktualizowany do wersji v{0}!</value>\r\n  </data>\r\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\r\n    <value>Witamy w wersji BCU v{0}!</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\r\n    <value>Uśpienie komputera za {0} sekund. Jeśli chcesz przerwać tę operację, odznacz pole wyboru. </value>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\r\n    <value>Nic nie robi.</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\r\n    <value>Otwiera ustawienia. </value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\r\n    <value>Odinstalowuje.</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Criando um ponto de restauração</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Procurando por sobras...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>Preenchendo a lista de desinstalação...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Removendo sobras...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Procurando atualizações...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>Não há entradas que correspondam aos seus critérios de pesquisa.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>Exportação BCUninstaller\r\nEditora | Versão | Data | Tamanho | Registro | Tipo de desinstalador | Cadeia de desinstalação | Cadeia de desinstalação silenciosa | Comentários</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value> Portátil</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>Falha ao chamar a API</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>O backup do registro falhou, você quer continuar de qualquer maneira?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Detalhes do erro:</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Remoção das sobras</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nDetalhes do erro:\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Você deseja criar um backup do registro antes de continuar?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Você poderá reverter todas as alterações clicando duas vezes sobre ele mais tarde.\r\n\r\nArquivos e diretórios serão movidos para a lixeira, você pode restaurá-los a partir de lá.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>A ação falhou</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>Você precisa selecionar apenas uma entrada para esta ação</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>Selecione exatamente um desinstalador da lista. Se você estiver usando caixas de seleção certifique-se de que as selecionou.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Procurar atualizações</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Abrir conteúdo on-line</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>Não é possível conectar-se à internet, não há redes disponíveis.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Certifique-se de que seu cabo de rede esteja conectado. Se você estiver usando o Wi-Fi, assegure-se de ter uma boa intensidade de sinal.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Enviar comentário</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>Gostaria de enviar comentários sobre o BCU?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>Isso vai levar menos de um minuto mas irá ajudar o desenvolvimento imensamente! Todo feedback é apreciado, seja um bug report, solicitação de recursos ou apenas um obrigado!\r\n\r\nVocê pode mandar depois pelo menu superior\r\n(Ajuda &gt; Enviar comentário...).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>A versão atual está atualizada</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>Nenhuma atualização encontrada, você possui a última versão.\r\n\r\nQuer algum recurso ou bug arrumado? Envie por favor seu feedback usando o menu \"Ajuda -&gt; Enviar comentários...\".</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Aconteceu um erro ao buscar por atualizações</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Verifique se o BCUninstaller não está bloqueado pelo seu firewall e que sua conexão com a internet está funcionando.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>Nova versão {0} disponível, deseja atualizar agora?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>BCUninstaller irá baixar automaticamente a atualização e instalar após um reinício. Você irá perder dados não salvos.\r\n\r\nChangelog:\r\n- {0}\r\n\r\nAtenção: Durante a atualização a pasta \"Update\" e o arquivo \"Update.zip\" dentro da pasta do BCU serão removidos.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Desinstalar usando o MSI</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>A entrada selecionada não pode ser desinstalada usando o instalador MsiExec</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>Desinstalador selecionado não possui um GUID válido para uso com o MsiExec</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Para tarefa de desinstalação atual</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Você tem certeza que deseja parar a tarefa de desinstalação em uso?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Interromper a tarefa prematuramente não reverterá nenhuma alteração. O desinstalador em execução não será interrompido e a tarefa aguardará até que ele finalize.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Criar um ponto de restauração</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Falha ao criar ponto de restauração</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value> x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value> DEBUG</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>Progresso de desinstalação</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>Você pode ir tomar um café</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>Os desinstaladores restantes devem ser capazes de concluir sem intervenção do usuário. Ainda assim, você deve verificar de vez em quando, caso um dos desinstaladores trave.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Remoção de lixo/sobras</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Você realmente deseja modificar itens de baixa confiabilidade?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Remover itens marcados com confiança menor que Boa pode ser muito perigoso! É recomendado que você verifique se cada item é seguro para excluir.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Remover chaves do registro</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Tem certeza que deseja remover as entradas de desinstalador selecionadas?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Os seguintes itens serão removidos do registro e desaparecerão da lista de desinstaladores, mas não serão desinstalados.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>A exportação falhou</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>Um erro foi encontrado ao salvar dados exportados</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>Se o erro persiste tente salvar em um local diferente, por exemplo a Área de trabalho.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>BCUninstaller está desinstalando {0} aplicação(ões)</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>Renomear desinstalador</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>O nome fornecido está vazio ou contém caracteres inválidos.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Certifique-se de não ter incluído nenhum dos seguintes caracteres: \r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Você quer procurar resíduos das desinstalações realizadas?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Entenda que este recurso é destinado apenas a usuários avançados que entendem como funciona. Não é necessário remover esses arquivos, e eles não afetarão o desempenho do sistema de forma significativa.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>Nenhum resíduo foi encontrado</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>Sem resíduos encontrados. Podem existir alguns resíduos ainda, você pode usar um limpador de arquivos temporários como o BleachBit.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>Não foi encontrado nada para copiar para a área de transferência. Nenhum desinstalador selecionado possui essa informação ou você não selecionou algo.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>Copiar para a Área de Transferência</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Abrir diretórios</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>Esta ação irá abrir {0} diretórios de uma vez. Tem certeza que deseja continuar?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Procurar online</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>Nada para procurar</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Desinstalar o BCUninstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Tem certeza que deseja desinstalar o BCUninstaller?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Lamento em vê-lo partir! Se tiver um minuto ou dois, por favor, deixe um comentário sobre o motivo de ter desinstalado o BCU no meu site (http://klocmansoftware.weebly.com/). Farei o meu melhor para corrigir qualquer problema legítimo.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Você quer criar um ponto de restauração antes de continuar?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Se você não tem certeza que os aplicativos que está desinstalando são importantes ou necessários para a estabilidade do sistema, é recomendável criar um ponto de restauração.\n Se algo der errado após o procedimento, você pode usar a Restauração do Sistema para reverter as alterações.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>Um erro ocorreu ao abrir a página de pesquisa.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Salvar lista de Desinstalação</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Falhar ao salvar a lista em um arquivo</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Tem certeza que deseja resetar todas as configurações do aplicativo?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Algumas aplicaçoes não podem ser desinstaladas silenciosamente</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Algumas entradas sao protegiddas e não podem ser modificadas</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>Entrada selecioanda é protegida e não pode ser modificada</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>Ocorreu um erro ao abrir a URL</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Quer manter a seleçao atual?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>Ocorreu um erro ao abrir a pasta</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Falha ao carregar os arquivos selecionados</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>Nenhum desinstalador foi selecionado, nada para desinstalar</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>Executar desinstaladores</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>Para desinstalar aplicativos, você deve primeiro selecioná-los na visualização da lista. Se estiver usando caixas de seleção, certifique-se de que elas estejam marcadas.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Se você manter a seleção atual, ela será mesclada com a(s) lista(s) aberta(s).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>Esta ação abrirá {0} URLs de uma vez, você tem certeza de que deseja continuar?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>Abrir URLs</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>Não há URLs para abrir</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Modificar item protegido</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Entradas afetadas:\n{0}\n\nPara modificar essas entradas, você precisa desabilitar a proteção do desinstalador na barra lateral de configurações. Se quiser, pode removê-las e continuar com os outros itens.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>Entrada protegida: {0}\n\nPara modificar esta entrada, você precisa desabilitar a proteção do desinstalador no painel de configurações.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Os seguintes itens estão sem desinstaladores silenciosos:\r\n{0}\r\n\nVocê quer usar desinstaladores \"em primeiro plano\" para esses itens, ou prefere removê-los da tarefa?</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Desinstalação silenciosa</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Restaurar configurações de fábrica</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Todas as suas configurações serão perdidas permanentemente. O BCUninstaller precisará reiniciar para concluir esta ação.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Abrir lista de desinstalaçao</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>Renomeando \"{0}</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Renomear entrada selecionada</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>Tarefa encerrada</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Desinstalando</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Lembrar-se</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Erro</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>Arquivo não existe.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Nada para exibir. Este aplicativo é desinstalado usando o Windows Installer (MsiExec).</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Nome</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Valor</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Vazio</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>GUID encontrado</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>GUID em falta</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Selecioanr até...</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Arquivo não encontrado</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Executando comandos pós-desinstalação...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Executando comandos pre-desinstalação...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Pronto</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>{0} desinstaladores selecionados</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>{0} desinstaladores no total, {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>O seguinte comanddo falhou ao executar: {0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>Falha de execução externa</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>Padrão</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Algumas configurações só surtirão efeito após a reiniciação da aplicação.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Deseja reiniciar o BCU para aplicar as novas configurações?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Alterar configurações do aplicativo</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>Certificado em falta</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Processando aplicativos detectados, {0} restantes...</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>Selecionar \"Terminar\" fechará imediatamente o desinstalador em execução e pode resultar em uma desinstalação incompleta. Normalmente, é possível executar o desinstalador novamente para concluir a desinstalação.\n\r\nComo alternativa, você pode pular a espera por esse processo. Pular permitirá que o desinstalador continue funcionando enquanto a tarefa avança para o próximo item. Lembre-se de que alguns desinstaladores podem falhar em ser executados até que o processo pulado seja concluído.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>Deseja pular a espera pelo desinstalador em execução no momento?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Pular a tarefa em execução no momento</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Outra tarefa de desinstalação já está em execução. Por favor, aguarde ela terminar e tente novamente.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Avaliação: {0}\n\nPositivos:\n{1}\n\nNegativos:\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Info. Avaliações</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>Essa aplicação nao tem uma entrada de registro válida</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>Essa aplicação não tem um desinstalador válido</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Carregando funcionalidades do Windows...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>Atualizando informações de inicialização...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>Sem diretórios para abrir</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>Indisponível</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Avaliações indisponíveis</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>Você precisa habilitar as avaliações nas configurações antes.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>Você não pode avaliar aplicações que não estao instaladas corretamente.</value>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} aplicações</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Média da avaliação: {0}; Minha avaliação: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>Os seguintes desinstaladores falharam ao ser executados, provavelmente devido a um conflito. Por favor, aguarde os outros desinstaladores terminarem e tente novamente.\n{0}\n\nVocê pode tentar desabilitar a detecção de conflitos nas configurações, mas isso não é recomendado.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Forçar desinstalação</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>Falha para executar alguns dos desinstaladores</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 não encontrado</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 não foi encontrado, alguns recursos serão desabilitados</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>O framework v4.0 é opcional, mas recomendado. As funcionalidades que dependem do framework serão desativadas até que você o instale.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Alguns dos desinstaladores falharam</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>Deseja tentar executar os desinstaladores silenciosos que falharam em primeiro plano?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>Os seguintes desinstaladores serão executados em primeiro plano:</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>Escaneando o diretório especificado...</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Selecione diretórios com aplicações que você deseja remover.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>Desinstalar do diretório</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Não foram encontrado aplicações no diretório especificado</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Certifique-se de que selecionou o diretório correto e que os executáveis do aplicativo ainda estão presentes.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Encontrado um desinstaladdor para {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>Quer executar esse desinstalador?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Editor</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Assunto</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Arquivado</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Extensões</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Nome comum</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Nome do Editor</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>Não depois de</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>Não antes de</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Chave privada</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>Tem chave privada</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Chave pública</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Dados não processados</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Número de Série</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Nome do Assunto</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Algoritmo de assinatura</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Versão</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Impressão digital</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Erro ao guardar as configurações </value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Finalizando...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>Carregando os ícones</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>Buscar aplicação</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>Nenhum arquivo ou diretório válido foi selecionado. Certifique-se de que você tenha acesso a eles e que não estejam marcados como arquivos do sistema.</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>Buscar por aplicativos</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Falha ao encontrar quaisquer aplicativos dentro de {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>Modificar aplicação</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>Aplicação selecionada não pode ser modificada</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\r\n    <value>O aplicativo selecionado não possui um comando de modificação especificado. Pode ser necessário desinstalá-lo e, em seguida, reinstalá-lo para alterar as configurações de instalação.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>Salvar lista de desinstalação</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>Salvar as alterações na lista de desinstalação aberta?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>Existem alterações não salvas na lista de desinstalação aberta que serão perdidas ao fechá-la.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>Selecione o diretório com os aplicativos a serem desinstalados.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>Selecione onde salvar o backup. Um novo diretório será criado.</value>\r\n  </data>\r\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\r\n    <value>O BCU foi atualizado para v{0}!</value>\r\n  </data>\r\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\r\n    <value>Bem-vindo ao BCU versão {0}!</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\r\n    <value>Colocando o PC em modo de descanso em {0} segundos. Desmarque a caixa de seleção de descanso para cancelar.</value>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\r\n    <value>Fazer nada</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\r\n    <value>Abrir propriedade</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\r\n    <value>Desinstala</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Criando um ponto de restauro...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Procurando vestígios residuais...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>Preenchendo a lista do desinstalador...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Removendo vestígios resíduais...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Procurando actualizações...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>Não há entradas correspondentes aos seus critérios de busca.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>Exportação do editor do BCUninstaller | Versão | Data | Tamanho | Registo | Tipo de desinstalador | Correnten de desinstalação | Corrente de desinstalação em segundo plano | Comentários</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value> Portátil</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>Falha na chamada do API</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>A cópia do registo falhou, quer continuar mesmo assim?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Pormenores do erro: </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Remoção dos vestígios residuais</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\nPormenores do erro:\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Deseja criar umam cópia de segurança antes de continuar?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Pode repor todas as alterações posteriormente fazendo um duplo clique sobre ele.\r\n\r\nOs arquivos e os diretórios serão movidos para o cesto do lixo. Poderá restaurá-los a partir daí.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>A acção falhou</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>Tem de seleccionar só uma entrada para esta acção.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>Seleccione exactamente um desinstalador da lista. Se estiver a usar caixas de verificação, certifique-se de que as seleccionou.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Procurar actualizações</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Abrir o conteúdo on line</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>Não é possível ligar-se à internet, não há redes disponíveis.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Certifique-se de que o cabo de rede está conectado. Se estiver a usar a Wi-Fi assegure-se de que tem um sinal de boa intensidade.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Enviar comentário</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>Deseja enviar um comentário acerca do BCU?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\n\r\nIsto tomar-lhe-á apenas um minuto do seu tempo, mas ajudar-nos-á imenso a aperfeiçoar o programa! Todo o comentário é bem-vindo, seja ele um relatório de erro, um pedido de resolução ou um simples agradecimento!\r\n\r\nPoderá enviá-lo mais tarde usando a barra superior do menu (Ajuda -&gt; Enviar comentário).\r\n</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>A versão presente está actualizada</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nNão foram encontradas novas actualizações, a instalada é a mais recente.\r\n\r\nQuer ter funcionalidades adicionais ou corrigir um erro? Por favor envie-me os seus comentários usando o menu \"Ajuda -&gt; Envie comentário\".\r\n</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Encontrado um erro na verificação de existência de atualizações.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Assegure-se de que o BCU não está a ser bloqueado pela sua Firewall e que a sua ligação à Internet está activa.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>Está disponível uma nova versão {0}, quer actualizar agora?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>O BCUninstaller irá automaticamente baixar a actualização e aplicá-la após fazer um reinício. Por favor note que pode perder as suas configurações no processo.\r\n\r\nchangelog:\r\n- {0}\r\n\r\nAviso: Durante a actualização, a pasta \"Actualizar\" e o arquivo \"Update.zip\" incluídos no directório BCU serão removidos.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Desinstalar usando o Msi</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>A entrada seleccionada não pode ser desinstalada usando o desinstalador MsiExec.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>O desinstalador seleccionado não tem um Guid válido para ser usado com o MsiExec.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Parar a tarefa de desinstalação em curso</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Tem a certeza de que quer interromper a tarefa actual de desinstalação?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Interromper prematuramente a tarefa não reflectirá quaisquer alterações. A desinstalação em curso não será interrompida, a tarefa aguardará o seu final.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Criar um ponto de restauro</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Failed to create a new restore point</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value> [x64]</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value> DEPURAÇÃO</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>Progresso da desinstalação</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>Agora pode deixar o computador fazer a tarefa por si</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>Os restantes desinstaladores devem estar aptos a completar a tarefa sem qualquer intervenção do utilizador. Deverá ainda fazer uma verificação de vez em quando para o caso de um dos desinstaladores falhar.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Remoção de Lixo/Vestígios residuais</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Deseja realmente modificar os itens de baixa confiança?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Remover itens marcados com confiança inferior a Bom pode ser muito perigoso! Recomenda-se que verifique se é seguro excluir cada um dos itens.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Eliminar as chaves do registo</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Tem a certexa de que quer eliminar as entradas do desinstalador seleccionado??</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Os itens seguintes serão removidos do registo e desaparecerão da lista do desinstalador, mas não serão desinstalados.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>A exportação falhou</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>Foi detectado um erro durante a salvaguarda dos dados exportados</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>Se o erro persistir, guarde os dados num directório diferente, por exemplo no ambiente de trabalho.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>O BCUninstaller está a desinstalar {0} aplicação(ões)</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>Renomear o desinstalador</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>O nome fornecido está ausente ou contém caracteres inválidos.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Assegure-se de que não incluiu nenhum dos seguintes caracteres:\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Deseja procurar vestígios residuais deixados pelas desinstalações realizadas?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Por favor note que este recurso se destina apenas a utilizadores experientes que entendam o seu funcionamento. Não é necessário remover estes arquivos e eles não afectarão de maneira significativa o desempenho do sistema.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>Não foram encontrados vestígios residuais</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>Não foram detectctados vestígios residuais. Ainda assim poderão ter ficado alguns, de maneira que poderá correr um utilitário de limpeza como o BleachBit.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>Não havia nada para copiar para a área de transferência. Ou, então, o desinstalador selecionado não tem a mínima informação ou você não seleccionou nada.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>Copiar para a Área de Transferência</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Abrir directórios</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>Esta acção abrirá {0} directórios de uma só vez. Tem a certeza de que quer continuar?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Procurar on line</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>Nada a procurar</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Desinstalar o BCUninstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Tem a certeza de que quer desinstalar o BCUninstaller?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Lamento vê-lo partir! Se tiver um ou dois minutos que me dispense, por favor envie-me uma palavra no meu site (http://klocmansoftware.weebly.com/) sobre a razão pela qual desinstalou o BCU. Farei o meu melhor para corrigir quaisquer problemas legítimos.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Quer criar um ponto de restauro antes de continuar?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Se não tem certeza se os aplicativos que está a desinstalar são importantes ou necessários para a estabilidade do sistema, recomenda-se que crie um ponto de restauro.\r\nSe alguma coisa correr mal após o procedimento poderá recorrer ao restauro do sistema para anular as alterações.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>Foi detectado um erro enquanto se abria a página de pesquisa</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Salvar a Lista de Desinstalação</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Falhou a salvaguarda da lista num ficheiro</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Tem a certeza de que deseja redefinir todas as configurações da aplicação?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Algumas das aplicações não podem ser desinstaladas em segundo plano</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Algumas entradas estão protegidas e não podem ser modificadas</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>A entrada seleccionada está protegida e não pode ser modificada</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>Foi detectado um erro quando se abriu o URL</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Quer manter a presente selecção?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>Foi detectado um erro quando se abriu o directório</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>O carregamento dos ficheiros seleccionados falhou</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>Não há desinstaladores seleccionados, não há nada para desinstalar</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>Correr os desinstaladores</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>Correr desisnataladores\r\nPara desinstalar aplicações terá primeiro de de as seleccionar na lista respectiva. Se estiver a usar as caixas seleccionadoras, assegure-se de que estas estão assinaladas.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Se preferir manter a selecção actual ela será interligada com a(s) lista(s) aberta(s).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>Esta acção abrirá {0} URLs de uma só vez. Tem a certeza de que quer continuar?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>Abrir URLs</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>Não há URLs para abrir</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Modify protected item</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Entradas afectadas:\r\n{0}\r\n\r\nPara editar estas entradas terá de desactivar a proteção do desinstalador nas configurações da barra lateral. Se quiser, pode removê-las e continuar com os outros itens.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>Entradas protegidas: {0}\r\n\r\nPara editar esta entrada terá de desactivar a proteção do desinstalador no painel das configurações.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Os seguintes itens estão em falta nos desinstaladores de segundo plano:\r\n{0}\r\n\r\nQuer usar desinstaladores \"de primeiro plano\" para esses itens ou quer que sejam removidos da tarefa?</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Desinstalação em segundo plano</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Restaurar a configuração original.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Todas as suas configurações serão apagadas permanentemente. O BCUninstaller irá reiniciar para concluir esta acção.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Abrir a lista de desinstalação</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>NÃO FOI CRIADO nenhum ponto de restauro, não poderá depois recuperar das mudanças efectuadas! Quer continuar com a desinstalação mesmo assim?</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>A renomear \"{0}\"</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Renomear a entrada seleccionada</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>Tarefa terminada</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Desinstalando</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Lembre-se da escolha feita</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Erro</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>O ficheiro não existe.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Nada a apresentar. Este aplicativo é desinstalado usando-se o Windows Installer (MsiExec).</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Nome</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Valor</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Vazio</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>GUID encontrado</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>GUID em falta</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Seleccionar até...</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Ficheiro não encontrado.</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Correndo os comandos de pós-desinstalação...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Correndo os comandos de pré-desinstalação...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Pronto</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>{0} desinstaladores seleccionados</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>{0} desinstaladores no total, {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>O comando seguinte falhou a sua execução:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>Falha de execução externa</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>Padrão</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Alguns parâmetros só surtirão efeito após a reiniciação da aplicação.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Deseja reiniciar o BCU para tornar efectivas as novas configurações?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Mudar as configurações da aplicação</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>Certificado em falta</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Desinstaladores em curso ({0})</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>Seleccionar \"Terminar\" irá imediatamente fechar o desinstalador em curso e poderá resultar numa incompleta desinstalação. Normalmente, é possível retomar a desinstalação para a terminar.\r\n\r\nEm alternativa, poderá pular esta espera pelo correr do processo. Pulá-la permitirá ao desinstalador continuar a trabalhar enquanto a tarefa segue para o próximo item. Tenha presente que alguns desinstaladores podem deixar de correr até que a tarefa termine.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>Deseja pular a espera pelo processo em curso do desinstalador?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Pular a tarefa em curso</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Já está a decorrer outra tarefa de desinstalação. Por favor, espere pela sua conclusão e depois tente de novo.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Avaliação: {0}\r\n\r\nPositivo:\r\n{1}\r\n\r\nNegativo:\r\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Pormenores da avaliação</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>Esta aplicação não tem uma entrada de registo válida</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>Esta aplicação não tem um desinstalador válido</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Carregando funcionalidades do Windows...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>\r\nActualizando informações de inicialização...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>Não há directorias para abrir</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>Indisponível</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Avaliações indisponíveis</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>Deverá activar primeiro as avaliações das configurações </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>Não pode avaliar aplicações que não estejam corretamente instaladas.</value>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} aplicações</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Média da avaliação: {0}; A minha avaliação: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>Os seguintes desinstaladores falharam a execução, ao que parece por causa de conflito. Por favor espere que outros desinstaladores  terminem a sua tarefa e tente de novo. \r\n{0}\r\n\r\nPode sentir-se tentado a desactivar o detector de conflitos nas configurações. mas isso não é recomendável.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Forçar a desinstalação</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>Falha ao correr alguns dos desinstaladores </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>O Framework .NET v4.0 não foi encontrado</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>O Framework .NET v4.0 não foi encontrado, algumas das funções serão desactivadas.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>O Framework v4.0 é opcional, masrecomendado. Os recursos que dependem do framework serão desativados até que sejam instalados por si.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Alguns dos desinstaladores falharam</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>Quer tentar executar os desinstaladores de segundo plano em caso de tentativa falhada em modo normal?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>Os seguintes desinstaladores são reiniciados no modo de assistente:</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>Digitalizando o directório especificado...</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Seleccione o directório com os aplicativos que deseja excluir.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>Desinstalar do directório</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Não foram encontradas aplicações no directório especificado</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Certifique-se de que seleccionou o directório correcto e que os executáveis do aplicativo ainda estão presentes.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Encontrado um dsinstalador para  {0}  </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>Quer executar este desinstalador?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Editor</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Assunto</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Arquivado</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Extensões</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Nome familiar</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Nome do Editor</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>Não depois de</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>Não antes de</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Chave privada</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>Tem chave privada</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Chave pública</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Dados não processados</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Número de Série</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Nome do Assunto</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Algoritmo de assinatura</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Versão</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Impressão digital</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Erro ao guardar as configurações </value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>A terminar...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>A carregar os ícones</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Creating a restore point...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Searching for leftovers...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>Populating uninstaller list...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Removing leftovers...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Searching for updates...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>There are no entries matching your search criteria.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>BCUninstaller export\r\nPublisher | Version | Date | Size | Registry | Uninstaller type | Uninstall string | Quiet uninstall string | Comments</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value>Portable</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>Failed to call the API</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Registry backup failed, do you want to continue anyway?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Error details: </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Leftover removal</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nError details:\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Do you want to create a registry backup before continuing?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>You will be able to roll back all changes by double-clicking it afterwards.\r\n\r\nFiles and directories will be moved to the recycle bin, you can restore them from there.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>Action failed</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>You need to select only one entry for this action</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>Select exactly one uninstaller from the list. If you are using check-boxes make sure to check them.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Search for updates</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Open on-line content</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>Can't connect to the internet, there are no networks available.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Make sure that your network cable is plugged in. If you are using Wi-Fi ensure that you have good signal strength.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Submit feedback</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>Would you like to send feedback concerning BCU?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>This will take you less than a minute but help the development greatly! All feedback is appreciated, be it a bug report, feature request or a simple thanks!\r\n\r\nYou can send it later from the top menu bar (Help-&gt;Submit feedback).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>Current version is up to date</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>No updates were found at this time, you have the latest version.\r\n\r\nWant some functionality added or a bug fixed? Please send me your feedback using \"Help-&gt;Submit feedback\" menu.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Encountered an error while checking for updates</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Make sure that BCUninstaller is not blocked in your firewall and that you have a working internet connection.\r\n\r\n</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>New version {0} is available, do you want to upgrade now?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>BCUninstaller will automatically download the update and apply it after a restart. Please note that you might lose your settings in the process. \r\n\r\nChangelog:\r\n- {0}\r\n\r\nWarning: During update the folder \"Update\" and the file \"Update.zip\" inside of the BCU directory will be removed.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Uninstall using Msi</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>The selected entry can't be uninstalled using the MsiExec installer</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>Selected uninstaller doesn't have a valid Guid for use with MsiExec.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Stop current uninstall task</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Are you sure you want to stop currently running task?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Stopping the task prematurely will not revert any changes. Currently running uninstaller won't be stopped, the task will wait for it to finish.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Create restore point</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Failed to create a new restore point</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value>x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value>DEBUG</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>Uninstall progress</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>You can now leave the computer</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>Remaining uninstallers should be able to complete without any user intervention. You should still check in from time to time in case one of the uninstallers crashes.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Junk/Leftover removal</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Do you really want to modify low-confidence items?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Removing items marked with confidence lower than Good can be very dangerous! It is recommended that you verify that every single item is safe to delete.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Remove keys from registry</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Are you sure you want to remove selected uninstaller entries?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Following items will be removed from registry and will disappear from the uninstaller list, but will not be uninstalled.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>Export failed</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>An error has been encountered while saving exported data</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>If the error persists try saving to a different directory, for example to the desktop.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>BCUninstaller is uninstalling {0} application(s)</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>Rename uninstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>Supplied name is empty or contains invalid characters</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Make sure you have not included any of the following characters:\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Do you want to look for leftovers from performed uninstallation(s)?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Please note that this feature is intended only for power users that understand how it works. It is not necessary to remove these files and they will not affect system performance in any meaningful way.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>No leftovers were found</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>No leftovers were found. There still might be some residue left so you can run a temporary file cleaner like BleachBit.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>There was nothing to copy to the clipboard. Either no selected uninstaller has this bit of information or you didn't select anything.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>Copy to clipboard</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Open directories</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>This action will open {0} directories at once, are you sure you want to continue?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Search on line</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>Nothing to search for</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Uninstall BCUninstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Are you sure you want to uninstall BCUninstaller?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>I'm sorry to see you leave! If you have a minute or two please drop a word on why you uninstalled BCU on my website (http://klocmansoftware.weebly.com/). I'll do my best to fix any legitimate problems.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Do you want to create a restore point before continuing?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>If you are unsure if applications you are uninstalling are important or required to system stability it is recommended to create a restore point. \r\n If anything breaks after the procedure you can then use System Restore to roll back the changes.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>An error has been encountered while opening the search page</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Save Uninstall List</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Failed to save the list to a file</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Are you sure you want to reset all application settings?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Some applications can't be uninstalled quietly</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Some entries are protected and can not be modified</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>Selected entry is protected and can not be modified</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>An error has been encountered while opening the URL</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Do you want to keep current selection?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>An error has been encountered while opening the directory</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Failed to load selected files</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>No uninstallers were selected, nothing to uninstall</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>Run uninstallers</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>To uninstall applications you must first select them from the list view. If you are using check-boxes, make sure that they are checked.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>If you choose to keep current selection it will be merged with the opened list(s)</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>This action will open {0} URLs at once, are you sure you want to continue?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>Open URLs</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>No URLs to open</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Modify protected item</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Affected entries:\r\n{0}\r\n\r\nTo modify these entries you need to disable uninstaller protection from the settings sidebar.You can remove them from the task and continue with other items if you want.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>Protected entry: {0}\r\n\r\nTo modify this entry you need to disable uninstaller protection from the settings panel.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Following items are missing quiet uninstallers:\r\n{0}\r\n\r\nDo you want to use \"loud\" uninstallers for those items, or should they be removed them from the task?</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Quiet uninstall</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Restore default settings</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>All of your settings will be lost permanently. BCUninstaller will have to restart to complete this action.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Open Uninstall List</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>The restore point WAS NOT CREATED, you will not be able to restore changes! Do you want to continue with the uninstallation anyway?</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>Renaming \"{0}\"</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Rename selected entry</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>Task finished</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Uninstalling</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Remember choice</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Error</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>File doesn't exist.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Nothing to display. This application is uninstalled using Windows Installer (MsiExec).</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Name</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Value</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Empty</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>GUID found</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>GUID missing</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Select down to...</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>File not found.</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Running post-uninstall commands...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Running pre-uninstall commands...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Ready</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>{0} uninstallers selected</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>{0} uninstallers in total, {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>Following command failed to execute:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>External execute failed</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>Default</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Some settings will not take effect until the application is restarted.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Do you want to restart BCU to apply new settings?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Change application settings</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>Certificate is missing</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Processing detected applications, {0} left...</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>Selecting \"Terminate\" will immediately close the running uninstaller and might result in uninstallation not being completed. Usually it is possible to run the uninstaller again to finish the uninstallation.\r\n\r\nAlternatively you can skip waiting for this process. Skipping will let the uninstaller continue working while the task moves on to the next item. Keep in mind that some uninstallers can fail to run until the skipped process finishes.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>Do you want to skip waiting for the currently running uninstaller?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Skip currently running task</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Another uninstall task is already running. Please wait for it to finish and then try again.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Rating: {0}\r\n\r\nPositives:\r\n{1}\r\n\r\nNegatives:\r\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Rating details</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>This application does not have a valid registry entry</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>This application does not have a valid uninstaller</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Loading Windows Features...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>Refreshing startup information...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>No directories to open</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>Not available</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Ratings not available</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>You have to enable ratings from the settings first.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>You can't rate applications that are not installed properly.</value>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} applications</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Average rating: {0}; My rating: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>Following  uninstallers failed to execute, likely because of a collision. Please wait for other uninstallers to finish and try again. \r\n{0}\r\n\r\nYou can try disabling collision detection in the settings, but it is not recommended.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Force uninstallation</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>Failed to run some of the uninstallers</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 not found</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 was not found, some features will be disabled</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>The v4.0 framework is optional, but recommended. The features that rely on the framework will be disabled until you install it.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Some uninstallers failed</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>Do you want to try running quiet uninstallers that failed as loud?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>Following uninstallers will be restarted loudly:</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>Scanning specified directory...</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Select directory with applications that you want to remove.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>Uninstall from directory</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>No applications were found in the specified directory</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Make sure that you selected the correct directory and that the application's executables are still present.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Found an uninstaller for {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>Do you want to run this uninstaller?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Issuer</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Subject</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Archived</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Extensions</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Friendly Name</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Issuer Name</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>Not After</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>Not Before</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Private Key</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>Has Private Key</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Public Key</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Raw Data</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Serial Number</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Subject Name</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Signature Algorithm</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Version</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Thumbprint</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Failed to save settings</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Finishing up...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>Loading icons</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>Look for application</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>No valid files or directories were selected. Make sure you have access to them, and they aren't marked as system files.</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>Look for applications</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Failed to find any applications inside {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>Modify application</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>Selected application can't be modified</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\r\n    <value>The selected application has no modify command specified. It might be necessary to uninstall, and then install it again to change install settings.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>Save uninstall list</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>Save changes to the opened uninstall list?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>There are unsaved changes in the opened uninstall list that will be lost by closing it.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>Select the directory with the applications to uninstall.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>Select where to save the backup. A new directory will be created.</value>\r\n  </data>\r\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\r\n    <value>BCU has been updated to v{0}!</value>\r\n  </data>\r\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\r\n    <value>Welcome to BCU version {0}!</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\r\n    <value>Putting PC to sleep in {0}s. Uncheck the sleep checkbox to cancel.</value>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\r\n    <value>Does nothing</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\r\n    <value>Opens properties</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\r\n    <value>Uninstalls</value>\r\n    <comment>Option for \"Double clicking in application list...\"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CantRenameUninstallerKind_Title\" xml:space=\"preserve\">\r\n    <value>Cannot rename {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CantRenameUninstallerKind_Details\" xml:space=\"preserve\">\r\n    <value>This uninstaller kind does not support renaming ({0}).</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Создание точки восстановления...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Поиск остатков...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>Обновление списка...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Удаление остатков...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Поиск обновлений...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>Нет элементов, соответствующих критериям поиска.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>BCUninstaller экспорт\r\nИздатель | Версия | Дата | Размер | Реестр | Тип деинсталлятора | Команда удаления | Команда тихого удаления | Комментарии</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value>Портативная</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>Не удалось вызвать API</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Бэкап реестра не удался, всё равно продолжить?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Детали ошибки:</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Удаление остатков</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nДетали ошибки:\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Вы хотите создать бэкап реестра перед продолжением?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>У Вас будет возможность откатить все изменения, дважды щёлкнув по ним впоследствии.\r\n\r\nФайлы и каталоги будут перемещены в корзину, Вы можете восстановить их оттуда.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>Действие не удалось</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>Нужно выбрать только одну запись для этого действия</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>Выберите один деинсталлятор из списка. Если Вы используете чекбоксы, не забудьте проверить их.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Поиск обновлений</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Открыть он-лайн контент</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>Не могу подключиться к интернету, нет доступных сетей.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Убедитесь, что сетевой кабель подключён. Если Вы используете Wi-Fi, убедитесь, что сигнал достаточен.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Отправить отзыв</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>Хотите отправить отзыв о BCU?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>Это займёт меньше минуты, но сильно поможет развитию! Все отзывы высоко ценятся, будь то сообщение об ошибке, запрос новой фичи, или простое \"спасибо\"!\r\n\r\nВы можете отправить его позже через меню (Справка-&gt; Обратная связь).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>Текущая версия актуальна</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>Обновления не найдены, у вас последняя версия.\r\n\r\nХотите, чтобы добавились новые возможности или была исправлена ошибка? Пожалуйста, присылайте мне Ваши отзывы с помощью меню \"Справка-&gt; Обратная связь\".</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Ошибка при проверке наличия обновлений</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Убедитесь, что BCUninstaller не заблокирован в вашем файрволе и что Вы подключены к интернету.\r\n\r\n</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>Новая версия {0} доступна, желаете обновить сейчас?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>BCUninstaller загрузит обновление и применит его после перезагрузки программы. Имейте в виду, Вы можете потерять свои настройки в процессе обновления.\r\n\r\nИзменения:\r\n- {0}\r\n\r\nВнимание: Во время обновления папка \"Update\" и файл \"Update.zip\" внутри BCU каталога будут удалены.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Удалить с помощью Msi</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>Выбранный элемент не может быть удалён с помощью MsiExec</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>Выбранный деинсталлятор не имеет допустимый идентификатор Guid для использования с MsiExec.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Остановить текущую деинсталляцию</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Вы уверены, остановить запущенные задачи?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Остановка задачи не вернёт уже сделанные изменения. Работающий в данный момент деинсталлятор не остановить, это задание будет дожидаться его завершения.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Создать точку восстановления</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Не удалось создать точку восстановления</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value>x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value>Отладка</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>Прогресс деинсталляции</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>Вы можете оставить компьютер, процесс автоматический</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>Остальные деинсталляторы должны закончить работу без вмешательства пользователя. Проверяйте процесс время от времени на случай сбоя какого-либо из деинсталляторов.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Мусор/Остатки удаления</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Вы действительно хотите изменить неуверенно распознанные элементы?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Удаление элементов, помеченных с уверенностью ниже, чем хорошая, может быть очень опасно! Рекомендуется убедиться, что каждый отдельный элемент можно безопасно удалять.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Удалить ключи из реестра</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Вы уверены, что хотите удалить выбранные записи?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Следующие элементы будут удалены из реестра и исчезнут из списка удаления, но не будут удалены.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>Ошибка экспорта</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>Произошла ошибка при сохранении экспортируемых данных</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>Если ошибка повторяется, попробуйте сохранить в другой каталог, например — на рабочем столе.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>BCUninstaller удаляет {0} программ(ы).</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>Переименовать деинсталлятор</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>Пустое имя или содержатся недопустимые символы</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Убедитесь, что Вы не включили следующие символы:\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Вы хотите найти остатки удалённых программ?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Обратите внимание, что эта функция предназначена для опытных пользователей, которые понимают, как это работает. Необязательно удалять эти файлы, они не будут влиять на производительность системы каким-либо значимым образом.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>Остатки не найдены</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>Остатки не найдены. Тем не менее, могли остаться временные файлы, Вы можете запустить чистку временных файлов, например, в BleachBit.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>Нечего копировать в буфер обмена. Выбранное не имеет этот блок информации, либо ничего не выбрано.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>Копировать в буфер</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Открыть папку</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>Это действие откроет {0} каталогов сразу, Вы уверены, что хотите продолжить?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Поиск в интернете</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>Нечего искать</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Удалить BCUninstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Вы уверены, что хотите удалить BCUninstaller?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Мне жаль видеть, что вы уходите! Если у Вас есть минута или две, пожалуйста, напишите на моём сайте несколько слов о том, почему был удалён BCU (http://klocmansoftware.weebly.com/). Я сделаю всё возможное, чтобы исправить любые существенные проблемы.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Вы хотите создать точку восстановления прежде, чем продолжить?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Если при удалении приложения Вы не уверены, является ли оно важными или обязательным для стабильности системы, рекомендуется создать точку восстановления. \r\n Если возникнут проблемы после удаления, Вы сможете воспользоваться восстановлением системы для отката изменений.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>Произошла ошибка при открытии страницы поиска</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Сохранить список деинсталляции</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Не удалось сохранить список в файл</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Вы уверены, действительно хотите сбросить все параметры приложения?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Некоторые приложения не могут быть удалены тихо</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Некоторые записи защищены и не могут быть изменены</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>Выбраннная запись защищена и не может быть изменена</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>Произошла ошибка при открытии URL-адреса</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Сохранить текущий выбор элементов?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>Произошла ошибка при открытии каталога</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Не удалось загрузить выбранные файлы</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>Вы не выбрали элементы, нечего удалять</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>Запуск деинсталляторов</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>Для удаления программ надо сначала выбрать их из списка. Если Вы используете флажки, убедитесь, что они отмечены.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Если Вы сохраните выбор, он будет объединён с открытым списком/списками</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>Это действие откроет {0} URL-адресов одновременно, хотите продолжить?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>Открыть URL-адрес(а)</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>Нет URL для открытия</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Изменить защищённый элемент</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Затронутые записи:\r\n{0}\r\n\r\nЧтобы изменить эти записи, нужно отключить защиту в боковой панели настроек. Также Вы можете убрать их из задания и продолжать с другими элементами по желанию.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>Защищённые записи: {0}\r\n\r\nЧтобы изменить эту запись, необходимо отключить защиту в панели настроек.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Следующие пункты не имеют тихие деинсталляторы:\r\n{0}\r\n\r\nВы хотите использовать \"громкие\" деинсталляторы для этих элементов или они должны быть удалены из задания?</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Тихая деинсталляция</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Восстановление настроек по умолчанию</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Все ваши настройки будут потеряны навсегда. BCUninstaller придётся перезапустить, чтобы выполнить это действие.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Открыть список деинсталляции</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>Точка восстановления не была создана, Вы не сможете восстановить изменения! Вы хотите всё равно продолжить удаление?</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>Переименование \"{0}\"</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Переименовать выбранный элемент</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>Задача завершена</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Процесс деинсталляции</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Запомнить выбор</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Ошибка</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>Файл не существует.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Нечего показывать. Это приложение удаляется с помощью Windows Installer (MSIexec).</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Имя</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Значение</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Пустой</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>GUID найден</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>GUID отсутствует</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Выбрать вплоть до...</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Файл не найден.</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Запуск после команды удаления...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Запуск перед командой удаления...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Готов</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>{0} деинсталлятора(ов) отмечено</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>{0} деинсталляторов всего, {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>Следующую команду выполнить не удалось:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>Внешняя команда не выполнена</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>По умолчанию</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Некоторые настройки не вступят в силу, пока приложение не будет перезапущено.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Вы хотите перезапустить BCU, чтобы применить новые настройки?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Изменение настроек приложения</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>Сертификат отсутствует</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Процесс деинсталляции ({0})</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>При выборе \"Прервать\" процесс удаления немедленно прекратится, это может привести к неполному удалению. Обычно можно запустить деинсталлятор снова, чтобы завершить удаление программы.\r\n\r\nВ качестве альтернативы Вы можете пропустить ожидание для этого процесса. Пропуск позволит деинсталлятору продолжать работать, а заданию — перейти к следующему пункту. Имейте в виду, что некоторые деинсталляторы могут не заработать, пока не завершится предыдущий процесс.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>Пропустить ожидание завершения текущей деинсталляции?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Пропустить текущее ожидание</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Уже выполняется другая задача удаления. Дождитесь её окончания и повторите попытку.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Рейтинг: {0}\r\n\r\nПоложительные:\r\n{1}\r\n\r\nОтрицательные:\r\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Детали рейтинга</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>Это приложение не имеет действительную запись в реестре</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>Это приложение не имеет валидного деинсталлятора</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Загрузка компонентов Windows...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>Обновление информации автозапуска...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>Нет каталогов для открытия</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>Недоступно</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Рейтинги недоступны</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>Вы должны включить рейтинги в настройках.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>Нельзя оценить приложения, которые не установлены должным образом.</value>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} приложений</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Средний рейтинг: {0}; Мой рейтинг: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>Следующие деинсталляторы не удалось выполнить, скорее всего, из-за конфликтов. Дождитесь окончания текущих деинсталляций и попробуйте снова.\r\n{0}\r\n\r\nВы можете отключить обнаружение конфликтов в настройках, но это не рекомендуется.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Удалить принудительно</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>Не все деинсталляторы удалось запустить</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 не найден</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 не найден, некоторые функции будут отключены</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 является необязательным, но рекомендуется. Функции, которые зависят от .NET, будут отключены, пока Вы не установите его.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Некоторые деинсталляторы дали сбой</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>Хотите запустить \"тихо\" те, которые не отработали \"громко\"?</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>Сканирование указанной папки...</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Выбрать папку с приложениями, которые Вы хотите удалить.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>Удалить из каталога</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>В указанном каталоге не найдено приложений</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Убедитесь, что Вы выбрали правильный каталог и исполняемые файлы программ присутствуют.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Найден деинсталлятор для {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>Следующие деинсталляторы будут перезапущены \"громко\":</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>Запустить этот деинсталлятор?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Отправитель</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Субъект</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Архивировано</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Расширения</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Короткое имя</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Имя отправителя</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>Не позднее</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>Не ранее</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Приватный ключ</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>Имеет Приватный ключ</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Публичный ключ</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Необработанные данные</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Серийный номер</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Имя субъекта</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Алгоритм подписи</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Версия</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Отпечаток</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Не удалось сохранить настройки</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Завершение...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>Загрузка иконок</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>Показать приложение</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>Не выбраны действительные файлы или каталоги. Убедитесь, что у Вас есть доступ к ним и они не помечены как системные.</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>Показать приложения</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Приложения в {0} не найдены</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>Изменить приложение</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>Выбранное приложение нельзя изменить</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\r\n    <value>Выбранное приложение не имеет команды изменения. Возможно, потребуется удалить, а затем снова установить его, чтобы изменить настройки установки.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>Сохранить список удаления</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>Сохранить изменения в списке удаления?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>В списке удаления есть несохранённые изменения, которые будут потеряны при закрытии.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>Выберите каталог с приложениями для удаления.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>Выберите, где сохранить резервную копию. Будет создан новый каталог.</value>\r\n  </data>\r\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\r\n    <value>BCU обновлён до v{0}!</value>\r\n  </data>\r\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\r\n    <value>Добро пожаловать в BCU версии {0}!</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\r\n    <value>Перевод компьютера в спящий режим через {0}s. Уберите флажок спящего режима для отмены. </value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\r\n    <value>Ustvarjanje obnovitvene točke...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\r\n    <value>Iskanje ostankov...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\r\n    <value>Naseljevanje seznama odstranjevanja...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\r\n    <value>Odstranjevanje ostankov...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\r\n    <value>Iskanje posodobitev...</value>\r\n  </data>\r\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\r\n    <value>Tukaj ni ujemajočih vnosov z vašim iskalnim kriterijem.</value>\r\n  </data>\r\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\r\n    <value>BCUninstaller izvoz\r\nZaložnik | Različica | Datum | Velikost | Register | Vrsta odstranjevalca | Odstranjevalni niz | Tiho odstrani | Komentarji</value>\r\n  </data>\r\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\r\n    <value>Prenosni</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\r\n    <value>Ni uspel klic API funcije</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Varnostna kopija registra ni uspela. Ali želite, kljub temu nadaljevati?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Podrobnosti napake: </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Odstranitev ostankov namestitve</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\r\n    <value>\r\n\r\nPodrobnosti o napaki:\r\n</value>\r\n    <comment>Add space or newline afterwards and two newlines before</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Ali želite pred nadaljevanjem, narediti varnostno kopijo registra?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Povrnili boste vse spremembe z dvoklikom nanje.\r\n\r\nDatoteke in imeniki bodo premaknjeni v Koš. Od tam jih lahko obnovite.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\r\n    <value>Postopek ni uspel.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\r\n    <value>Za ta postopek morate izbrati le eden vnos</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\r\n    <value>S seznama izberite natančno enega odstranjevalca. Če uporabljate potrditveno polje, prepričajte se, da ste ga označili.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\r\n    <value>Poišči posodobitve</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\r\n    <value>Odpri spletno vsebino</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\r\n    <value>Ne morem se povezati z internetom. Omrežje ni na voljo.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\r\n    <value>Prepričajte se, da je vaš omrežni kabel priključen v računalnik. Če uporabljate brezžično omrežje, zagotovite dovolj močan signal.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\r\n    <value>Pošlji povratne informacije</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\r\n    <value>Ali želite poslati povratne informacije v zvezi z BCU?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\r\n    <value>To bo trajalo manj kot minuto vendar bo izjemno pomagalo razvijalcem! Vse povratne informacije so zelo zaželene in cenjene bodisi, da gre za poročilo o hrošču, zahtevo nove funkcije ali za preprosto zahvalo!\r\n\r\nKasneje jih lahko pošljete iz glavne menijske vrstice (Pomoč-&gt;Pošlji povratne informacije).</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\r\n    <value>Trenutna različica je posodobljena</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\r\n    <value>V tem trenutku niso bile najdene posodobitve. Imate nameščeno zadnjo različico.\r\n\r\nŽelite nove funkcije ali popravljen hrošč? Prosimo, pošljite nam vaše povratne informacije z uporabo menija \"Pomoč-&gt;Pošlji povratne informacije\".</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\r\n    <value>Pri preverjanju obstoja posodobitev je prišlo je do napake </value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\r\n    <value>Zagotovite, da BCUninstaller ni blokiran z vašim požarnim zidom in, da ste povezani z internetom.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\r\n    <value>Na voljo je nova različica {0}. Ali jo želita zdaj nadgraditi?</value>\r\n    <comment>0 is version number</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\r\n    <value>BCUninstaller bo samodejno prenesel posodobitve in jih uporabil po ponovnem zagonu. Upoštevajte, da boste med postopkom morda izgubili vaše nastavitve.\r\n\r\nDnevnik sprememb:\r\n- {0}\r\n\r\nOpozorilo: Med posodabljanjem bo odstranjena mapa \"Update\" in datoteka \"Update.zip\", v imeniku BCU.</value>\r\n    <comment>0 is a list of changes separated by \"- \"</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\r\n    <value>Odstrani z Msi</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\r\n    <value>Izbran vnos ni možno odstraniti z uporabo MsiExec installerja</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\r\n    <value>Izbran odstranjevalec nima veljaven Guid za uporabo z MsiExec.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Ustavi trenutno odstranjevanje</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Ali res želite ustaviti trenutno delujoče opravilo?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Predčasno ustavljanje opravila ne bo povrnilo nobene spremembe. Trenutno delujoč odstranjevalec ne bo ustavljen. Opravilo bo počakalo na njegov zaključek.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\r\n    <value>Ustvari obnovitveno točko</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\r\n    <value>Ni uspelo ustvarjanje nove obnovitvene točke</value>\r\n  </data>\r\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\r\n    <value>x64</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"StrDebug\" xml:space=\"preserve\">\r\n    <value>DEBUG</value>\r\n    <comment>keep space in front</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\r\n    <value>Napredek odstranjevanja</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\r\n    <value>Zdaj lahko pustite računalnik</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\r\n    <value>Preostali odstranjevalci bi morali dokončati delo brez kakršnega koli uporabnikovega posredovanja. Od časa do časa boste jih še vedno morali preveriti, v primeru, če se eden izmed njih sesuje.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\r\n    <value>Odstranitev neuporabnih/ostankov</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Ali res želite spremeniti vnose nizke stopnje zaupanja?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Odstranjevanje vnosov, označenih z nižjim zaupanjem 'Dobro', je lahko zelo nevarno! Priporočljivo je, da preverite, ali je vsak posamičen vnos varno izbrisati.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\r\n    <value>Odstrani ključe iz registra</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Ali ste prepričani v to, da želite odstraniti izbrane vnose odstranjevalca?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Naslednji vnosi bodo odstranjeni iz registra in bodo izginili s seznama odstranjevanja, vendar ne bodo odstranjeni.\r\n\r\n{0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\r\n    <value>Izvoz ni uspel</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\r\n    <value>Prišlo je do napake med shranjevanjem izvoženih podatkov</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\r\n    <value>Če obstaja napaka, poskusite shraniti v drugo mapo! Npr. na Namizje.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\r\n    <value>BCUninstaller odstranjuje {0} aplikacij</value>\r\n    <comment>0 is the uninstaller count</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\r\n    <value>Preimenuj odstranjevalca</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\r\n    <value>Zagotovljeno ime je prazno ali vsebuje neveljavne znake</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\r\n    <value>Prepričajte se, da niso vključeni kateri koli naslednji znaki:\r\n{0}</value>\r\n    <comment>0 is list of characters separated by spaces</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Ali želite pogledati ostanke opravljenih odstranitev?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Upoštevajte, da je ta funkcija namenjena samo za napredne uporabnike, ki razumejo kako le-ta deluje. Teh datotek ni potrebno odstraniti, in te ne bodo na noben način vplivale na delovanje sistema.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\r\n    <value>Niso bili najdeni ostanki namestitve</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\r\n    <value>Niso bili najdeni ostanki namestitve. So pa še vedno prisotni nekateri drugi neuporabni ostanki. Zato lahko zaženete čistilec začasnih datotek kot je npr. BleachBit.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\r\n    <value>Ničesar ni za kopiranje v odložišče. Ali ni izbran odstranjevalec s tako malo informacijami ali pa niste nič izbrali.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\r\n    <value>Kopiraj v odložišče</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\r\n    <value>Odpri imenike</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\r\n    <value>To opravilo bo naenkrat odprlo {0} imenikov. Ali res želite nadaljevati?</value>\r\n    <comment>0 is number of directories to open\r\n</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\r\n    <value>Poišči na spletu</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\r\n    <value>Ničr ni za iskanje</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Odstrani BCUninstaller</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Ali res želite odstraniti BCUninstaller?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Glejte. Žal mi je, da greste! Če imate vsaj minuto časa,  na moji spletni strani (http://klocmansoftware.weebly.com/) napišite kakšno besedo o tem zakaj ste odstranili BCU. Po svojih najboljših močeh se bom potrudil popraviti vse legitimne težave.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Ali želite pred nadaljevanjem, ustvariti obnovitveno točko?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\r\n    <value>\r\nČe niste prepričani, ali so aplikacije, ki ste jih odstranili, pomembne ali zahtevane za stabilnost sistema, je priporočljivo, da ustvarite obnovitveno točko.\r\n  Če se karkoli zalomi po pravljenem postopki, lahko uporabite Obnovitev sistema, da povrnete nazaj vse opravljene spremembe.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\r\n    <value>Prišlo je do napake med odpiranjem iskane strani</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Shrani seznam odstranjevanja</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Spodletelo je shranjevanje seznama v datoteko</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\r\n    <value>Ali ste prepričani, da želite ponastaviti vse nastavitve aplikacije?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Nekaterih aplikacij ni mogoče tiho odstraniti</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Nekateri vnosi so zaščiteni in jih ni mogoče spreminjati</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\r\n    <value>Izbran vnos je zaščiten in ga ni možno spremeniti</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\r\n    <value>Prišlo je do napake med odpiranje URL naslova</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Ali želite obdržati trenutni izbor?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\r\n    <value>Prišlo je do napake med odpiranje imenika.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\r\n    <value>Ni uspelo nalaganje izbranih datotek</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\r\n    <value>Ni izbranih odstranjevalcev. Nič ni za odstranjevanje.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\r\n    <value>Zaženi odstranjevalce</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\r\n    <value>Za odstranjevanje aplikacij, jih morate najprej izbrati s seznama za ogled. Če uporabljate potrditvena polja se prepričajte, da so označeni.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Če se odločite obdržati trenutni izbor, ta mora biti spojen z odprtimi seznami.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\r\n    <value>Ta postopek bo naenkrat odprl {0} URL naslovov. Ali res želite nadaljevati?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\r\n    <value>Odpri URL naslove</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\r\n    <value>Ni URL naslovov za odpiranje</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\r\n    <value>Spremeni zaščiten vnos</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Prizadetih vnosov:\r\n{0}\r\n\r\nZa spreminjanje teh vnosov morate onemogočiti zaščito odstranjevalca iz stranske vrstice z nastavitvami. Lahko jih odstranite iz opravila in nadaljujete z drugimi vnosi, če to želite.</value>\r\n    <comment>0 names of protected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\r\n    <value>Zaščiten vnos: {0}\r\n\r\nZa spreminjanje vnosa morate onemogočiti zaščito odstranjevalca iz plošče z nastavitvami.</value>\r\n    <comment>0 name of protected uninstaller</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Naslednji vnosi manjkajo v tihih odstranjevalcih:\r\n{0}\r\n\r\nAli želite za te vnose uporabiti \"glasne\" odstranjevalce, ali morajo ti biti odstranjeni iz opravila.</value>\r\n    <comment>0 is names of non-quiet uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\r\n    <value>Tiho odstrani</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\r\n    <value>Obnovi privzete nastavitve</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\r\n    <value>Vse vaše nastavitve bodo trajno izgubljene. BCUninstaller boste morali ponovno zagnati, da dokončate ta postopek.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\r\n    <value>Odpri seznam odstranjevanja</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\r\n    <value>Obnovitvena točka NI BILA USTVARJENA.  Ne boste mogli obnoviti spremembe! Ali želite na vsak način nadaljevati?</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\r\n    <value>Preimenovanje \"{0}\"</value>\r\n  </data>\r\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\r\n    <value>Preimenuj izbran vnos</value>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\r\n    <value>Opravilo je končano</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Odstranjevanje</value>\r\n    <comment>Shown on the status bar</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\r\n    <value>Zapomni izbiro</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\r\n    <value>Napaka</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\r\n    <value>Datoteka ne obstaja.</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\r\n    <value>Ni ničesar za prikaz. Ta aplikacija je odstranjena z Windows Installerjem (MsiExec).</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\r\n    <value>Ime</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\r\n    <value>Vrednost</value>\r\n  </data>\r\n  <data name=\"Empty\" xml:space=\"preserve\">\r\n    <value>Prazno</value>\r\n  </data>\r\n  <data name=\"GuidFound\" xml:space=\"preserve\">\r\n    <value>GUID je najden</value>\r\n  </data>\r\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\r\n    <value>Manjkajoč GUID</value>\r\n  </data>\r\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\r\n    <value>Izberi navzdol...</value>\r\n  </data>\r\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Datoteka ni najdena.</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Izvajanje poodstranitvenih ukazov...</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\r\n    <value>Izvajanje predodstranitvenih ukazov...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\r\n    <value>Pripravljen</value>\r\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\r\n    <value>{0} izbranih odstranjevalcev</value>\r\n    <comment>{0} is a number of selected uninstallers</comment>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\r\n    <value>{0} odstranjevalcev skupaj {1}</value>\r\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\r\n    <value>Naslednji ukaz ni bil izveden:\r\n{0}</value>\r\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\r\n    <value>Zunanje izvajanje je spodletelo</value>\r\n  </data>\r\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\r\n    <value>Privzeto</value>\r\n    <comment>Used in language select box when you want to use the system language</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\r\n    <value>Nekatere nastavitve ne bodo uveljavljene, dokler aplikacija ne bo ponovno zagnana.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\r\n    <value>Ali želite ponovno zagnati BCU, za uporabo novih nastavitev?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\r\n    <value>Spremeni nastavitve aplikacije</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\r\n    <value>Manjka digitalno potrdilo</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\r\n    <value>Obdelava odstranjevalcev ({0})</value>\r\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\r\n    <value>Izbira \"Prekini\", bo takoj zaprla zagnanega odstranjevalca in lahko povzroči nedokončano odstranjevanje. Za dokončanje odstranitve ponavadi zadostuje ponovni zagon odstranjevalca.\r\n\r\nNeobvezno, lahko preskočite čakanja na ta proces. Preskok bo dovolil odstranjevalcu nadaljevati z delom, medtem, ko se bo opravilo premaknilo na naslednji vnos. Imejte v mislih, da nekaterim odstranjevalcem lahko spodleti zagon, ko se konča preskočen proces.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\r\n    <value>Ali želite preskočiti čakanje trenutno zagnanega odstranjevalca?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\r\n    <value>Preskoči trenutno zagnano storitev</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\r\n    <value>Izvaja se že drugo odstranjevanje. Počakajte na njen konec, nato poskusite znova.</value>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\r\n    <value>Ocena: {0}\r\n\r\nPozitivnih:\r\n{1}\r\n\r\nNegativnih:\r\n{2}</value>\r\n    <comment>{0} - Rating as a string\r\n{1} - List of strings of positive parts of the rating\r\n{2} - List of strings of negative parts of the rating\r\nThe lists are separated by a single newline.</comment>\r\n  </data>\r\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\r\n    <value>Podrobne ocene</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\r\n    <value>Ta aplikacija nima veljavnega vnosa v registru</value>\r\n  </data>\r\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\r\n    <value>Ta aplikacija nima veljavnega odstranjevalca</value>\r\n  </data>\r\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\r\n    <value>Nalaganje Windows funkcij...</value>\r\n  </data>\r\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\r\n    <value>Osveževanje zagonskih informacij...</value>\r\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\r\n    <value>Ni map za odpiranje</value>\r\n  </data>\r\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\r\n    <value>{0} aplikacij</value>\r\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\r\n    <value>Ocene niso na voljo</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\r\n    <value>V nastavitvah najprej morate omogočiti ocenjevanje.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\r\n    <value>Ne morete ocenjevati nepravilno nameščenih aplikacij.</value>\r\n  </data>\r\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\r\n    <value>Povprečna ocena: {0}; Moja ocena: {1}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\r\n    <value>Naslednji odstranjevalci se niso uspešno zagnali, verjetno zaradi spora. Prosimo, da najprej počakate, da drugi odstranjevalci končajo delo in nato poskusite znova. \r\n{0}\r\n\r\nLahko poskusite onemogočiti zaznavanje sporov v Nastavitvah, toda to ni priporočeno.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\r\n    <value>Vsili odstranitev</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\r\n    <value>Spodletel zagon nekaterih odstranjevalcev</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 nni najden</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\r\n    <value>.NET Framework v4.0 ni bil najden, nekatere funkcije bodo onemogočene.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\r\n    <value>Različica Framework 4.0 je neobvezna, toda priporočena. Funkcije, ki zahtevajo Framework bodo onemogočene dokler ga ne namestite.</value>\r\n  </data>\r\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\r\n    <value>Ni na voljo</value>\r\n    <comment>Used on application list when value is not available</comment>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\r\n    <value>Nekateri odstranjevalci niso bili uspešni</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\r\n    <value>Ali želite poskusiti uporabiti tihe odstranjevalce, ko glasen ni bil uspešen?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\r\n    <value>Naslednji odstranjevalci bodo znova glasno zagnani:</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\r\n    <value>Pregled določene mape....</value>\r\n  </data>\r\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\r\n    <value>Izberite mapo z aplikacijami, ki jih želite odstraniti.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\r\n    <value>Odstrani iz mape</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\r\n    <value>V določeni mapi niso bile najdene nobene aplikacije.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\r\n    <value>Prepričajte se, da ste izbrali pravilno mapo in, da so izvedljive datoteke aplikacij še vedno prisotne.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\r\n    <value>Najden je odstranjevalec za {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\r\n    <value>Ali želite zagnati tega odstranjevalca?</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\r\n    <value>Izdajatelj</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\r\n    <value>Predmet</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\r\n    <value>Arhiviran</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\r\n    <value>Razširitve</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\r\n    <value>Prijazno ime</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\r\n    <value>Ime izdajatelja</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\r\n    <value>Ne po</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\r\n    <value>Ne pred</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\r\n    <value>Zaseben ključ</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\r\n    <value>Ima zaseben ključ</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\r\n    <value>Javni ključ</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\r\n    <value>Surovi podatki</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\r\n    <value>Serijska številka</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\r\n    <value>Ime predmeta</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\r\n    <value>Algoritem podpisa</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\r\n    <value>Različica</value>\r\n  </data>\r\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\r\n    <value>Prstni odtis</value>\r\n  </data>\r\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\r\n    <value>Ni uspelo shranjevanje nastavitev</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Dokončanje...</value>\r\n  </data>\r\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\r\n    <value>Nalaganje ikon</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\r\n    <value>Poglej za aplikacijo</value>\r\n  </data>\r\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\r\n    <value>Ni izbranih veljavnih datotek ali map. Prepričajte se, da imate dostop do njih in, da te niso označene kot sistemske datoteke.</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\r\n    <value>Poglej za aplikacije</value>\r\n  </data>\r\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\r\n    <value>Ni bilo mogoče najti nobenih aplikacij znotraj {0}</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\r\n    <value>Spremeni aplikacijo</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\r\n    <value>Izbrane aplikacije ni mogoče spremeniti</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\r\n    <value>Izbrana aplikacija nima določenega ukaza za spreminjanje. Morda jo bo potrebno odstraniti, nato pa jo znova namestiti, da spremenite nastavitve namestitve.</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\r\n    <value>Shrani seznam odstranjevanja</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\r\n    <value>Shranim spremembe na odprtem seznamu za odstranitev?</value>\r\n  </data>\r\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\r\n    <value>Na odprtem seznamu za odstranjevanje so shranjene neshranjene spremembe, ki bodo izgubljene z njegovim zapiranjem.</value>\r\n  </data>\r\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\r\n    <value>Izberite imenik z aplikacijami za odstranitev.</value>\r\n  </data>\r\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\r\n    <value>Izberite, kje želite shraniti varnostno kopijo. Ustvarjen bo nov imenik.</value>\r\n  </data>\r\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\r\n    <value>BCU je bil posodobljen v  različico {0}!</value>\r\n  </data>\r\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\r\n    <value>Dobrodošli pri delu z BCU različice {0}!</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\n    <value>Skapar en återställningspunkt</value>\n  </data>\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\n    <value>Sök efter rester...</value>\n  </data>\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\n    <value>Fyller listan med avinstallationsprogram...</value>\n  </data>\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\n    <value>Tar bort rester...</value>\n  </data>\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\n    <value>Söker efter uppdateringar...</value>\n  </data>\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\n    <value>Inga poster matchar dina sökkriterier.</value>\n  </data>\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\n    <value>BCUninstaller export\nUtgivare | Version | Datum | Storlek | Register | Avinstallations typ | Avinstallationssträng | Tyst avinstallationssträng | Kommentarer</value>\n  </data>\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\n    <value> Portable</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\n    <value>Misslyckades att anropa API:en</value>\n  </data>\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\n    <value>Säkerhetskopiering av registret misslyckades, vill du fortsätta ändå?</value>\n  </data>\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\n    <value>Feluppgifter:</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\n    <value>Restborttagning</value>\n  </data>\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\n    <value>\n\nFeldetaljer:\n</value>\n    <comment>Add space or newline afterwards and two newlines before</comment>\n  </data>\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\n    <value>Vill du skapa en säkerhetskopia av registret innan du fortsätter?</value>\n  </data>\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\n    <value>Du kommer att kunna ångra alla ändringar genom att dubbelklicka på den efteråt.\n\nFiler och kataloger kommer att flyttas till papperskorgen, du kan återställa dem därifrån.</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\n    <value>Åtgärd misslyckades</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\n    <value>Du kan bara välja en post för denna åtgärd</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\n    <value>Välj exakt en enstaka avinstallation från listan. Om du använder kryssrutor, se till att kontrollera dem.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\n    <value>Sök efter uppdateringar</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\n    <value>Öppna online-innehåll</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\n    <value>Kan inte ansluta till internet, det finns inga tillgängliga nätverk.</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\n    <value>Se till att din nätverkskabel är ansluten. Om du använder Wi-Fi, se till att du har bra signalstyrka.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\n    <value>Skicka feedback</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\n    <value>Vill du skicka feedback angående BCU?</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\n    <value>Detta tar mindre än en minut och hjälper utvecklingen enormt! All feedback uppskattas, vare sig det är en buggrapport, en funktionsförfrågan eller ett enkelt tack!\n\nDu kan skicka det senare från toppmenyn (Hjälp-&gt;Skicka feedback).</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\n    <value>Du har den senaste versionen</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\n    <value>Inga uppdateringar hittades för tillfället, du har den senaste versionen.\n\nVill du ha någon funktionalitet tillagd eller en bugg fixad? Skicka gärna din feedback via menyn \"Hjälp-&gt;Skicka feedback\".</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\n    <value>Ett fel uppstod vid kontroll av uppdateringar</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\n    <value>Se till att BCUninstaller inte är blockerad i din brandvägg och att du har en fungerande internetanslutning.</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\n    <value>Ny version {0} är tillgänglig, vill du uppgradera nu?</value>\n    <comment>0 is version number</comment>\n  </data>\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\n    <value>BCUninstaller kommer automatiskt att hämta uppdateringen och tillämpa den efter en omstart. Observera att du kanske förlorar dina inställningar i processen.\n\nÄndringslogg:\n- {0}\n\nVarning: Under uppdateringen kommer mappen \"Update\" och filen \"Update.zip\" inuti BCU-mappen att tas bort.</value>\n    <comment>0 is a list of changes separated by \"- \"</comment>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\n    <value>Avinstallera med Msi</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\n    <value>Den valda posten kan inte avinstalleras med MsiExec-installeraren</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\n    <value>Den valda avinstallationen har inte en giltig GUID för användning med MsiExec.</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\n    <value>Stoppa pågående avinstallationsjobb</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill stoppa den pågående uppgiften?</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\n    <value>Att stoppa processen i förtid kommer inte att ångra några ändringar. Den körande avinstallationen kommer inte att stoppas, uppgiften kommer att vänta på att den ska slutföras.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\n    <value>Skapa återställningspunkt</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\n    <value>Det gick inte att skapa en ny återställningspunkt</value>\n  </data>\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\n    <value> x64</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"StrDebug\" xml:space=\"preserve\">\n    <value> DEBUG</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\n    <value>Avinstallationsförlopp</value>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\n    <value>Nu kan du låta datorn jobba</value>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\n    <value>Återstående avinstallationer borde kunna slutföras av sig själv. Du bör ändå kontrollera med jämna mellanrum ifall någon avinstallation kraschar.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\n    <value>Borttagning av skräp/efterlämnade filer</value>\n  </data>\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\n    <value>Vill du verkligen ändra lågtillförlitliga objekt?</value>\n  </data>\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\n    <value>Att ta bort objekt markerade med en tillförlitlighetsgrad lägre än Bra kan vara mycket farligt! Det rekommenderas att du verifierar att varje enskilt objekt är säkert att ta bort.</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\n    <value>Ta bort nycklar från registret</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill ta bort valda avinstallationsposter?</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\n    <value>Följande poster kommer att tas bort från registret och försvinna från avinstallationslistan, men kommer inte att avinstalleras.\n\n{0}</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\n    <value>Export misslyckades</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\n    <value>Ett fel inträffade när datan skulle exporteras</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\n    <value>Om felet kvarstår, försök spara till en annan plats, till exempel till skrivbordet.</value>\n  </data>\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\n    <value>BCUninstaller avinstallerar {0} app(ar)</value>\n    <comment>0 is the uninstaller count</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\n    <value>Döp om avinstallationsprogram</value>\n  </data>\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\n    <value>Namnet är tomt eller innehåller ogiltiga tecken</value>\n  </data>\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\n    <value>Kontrollera att du inte har inkluderat något av följande tecken:\n{0}</value>\n    <comment>0 is list of characters separated by spaces</comment>\n  </data>\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\n    <value>Vill du leta efter kvarlämnade filer från utförda avinstallation(er)?</value>\n  </data>\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\n    <value>Den här funktionen är avsedd endast för avancerade användare som förstår hur den fungerar. Det är inte nödvändigt att ta bort dessa filer och de kommer inte att påverka systemets prestanda på något meningsfullt sätt.</value>\n  </data>\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\n    <value>Inga rester hittades</value>\n  </data>\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\n    <value>Inga rester hittades. Det kan dock fortfarande finnas några rester kvar så du kan köra en filrensare som BleachBit.</value>\n  </data>\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\n    <value>Det fanns inget att kopiera till urklipp. Antingen har ingen vald avinstallationsprogram denna information eller så valde du ingenting.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\n    <value>Kopiera till Urklipp</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\n    <value>Öppna mappar</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\n    <value>Denna åtgärd kommer att öppna {0} kataloger samtidigt, är du säker på att du vill fortsätta?</value>\n    <comment>0 is number of directories to open\n</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\n    <value>Sök online</value>\n  </data>\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\n    <value>Inget att söka efter</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\n    <value>Avinstallera BCUninstaller</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill avinstallera BCUninstaller?</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\n    <value>Tråkigt att du lämnar! Om du har en minut eller två, vänligen lämna några ord om varför du avinstallerade BCU på min webbplats (http://klocmansoftware.weebly.com/). Jag kommer att göra mitt bästa för att åtgärda eventuella legitima problem.</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\n    <value>Vill du skapa en återställningspunkt innan du fortsätter?</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\n    <value>Om du är osäker på om de appar du avinstallerar är viktiga eller nödvändiga för systemets stabilitet, rekommenderas det att skapa en återställningspunkt. Om något går fel efter proceduren, kan du sedan använda Systemåterställning för att ångra ändringarna.</value>\n  </data>\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\n    <value>Ett fel uppstod när söksidan skulle öppnas.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\n    <value>Spara avinstallations-lista</value>\n  </data>\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\n    <value>Misslyckades att spara listan till filen</value>\n  </data>\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill återställa alla appinställningar?</value>\n  </data>\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\n    <value>Vissa appar kan inte installeras tyst</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\n    <value>Vissa poster är skyddade och kan inte ändras.</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\n    <value>Den valda posten är skyddad och kan inte ändras.</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\n    <value>Ett fel uppstod vid öppnandet av webbadressen.</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\n    <value>Vill du behålla nuvarande urval?</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\n    <value>Ett fel inträffade när katalogen öppnades</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\n    <value>Misslyckades att ladda valda filer</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\n    <value>Inga avinstallerare valdes, det finns inget att avinstallera</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\n    <value>Kör avinstallationer</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\n    <value>För att avinstallera appar måste du först välja dem från listvyn. Om du använder kryssrutor, se till att de är förbockade.</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\n    <value>Om du väljer att behålla nuvarande urval, kommer det att sammanfogas med de öppnade listorna.</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\n    <value>Detta öppnar {0} webbadresser samtidigt. Vill du vill fortsätta?</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\n    <value>Öppna webbadresser</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\n    <value>Inga webbadresser att öppna</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\n    <value>Modifiera skyddat objekt</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\n    <value>Påverkade poster:\n{0}\n\nFör att ändra dessa poster behöver du inaktivera avinstalleringsskyddet från inställningssidofältet. Du kan ta bort dem från uppgiften och fortsätta med andra objekt om du vill.</value>\n    <comment>0 names of protected uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\n    <value>Skyddad post: {0}\n\nFör att ändra denna post behöver du inaktivera avinstalleringsskyddet från inställningspanelen.</value>\n    <comment>0 name of protected uninstaller</comment>\n  </data>\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\n    <value>Följande objekt saknar tysta avinstallationsprogram:\n{0}\n\nVill du använda synliga avinstallationsprogram för dessa objekt, eller ska de tas bort från uppgiften?</value>\n    <comment>0 is names of non-quiet uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\n    <value>Tyst avinstallation</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\n    <value>Återställ standardinställningar</value>\n  </data>\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\n    <value>Alla dina inställningar kommer att gå förlorade permanent. BCUninstaller måste startas om för att slutföra denna åtgärd.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\n    <value>Öppna avinstallationslistan</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\n    <value>Återställningspunkten SKAPADES INTE, du kommer inte att kunna återställa ändringarna! Vill du fortsätta med avinstallationen ändå?”</value>\n  </data>\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\n    <value>Döper om \"{0}\"</value>\n  </data>\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\n    <value>Döp om vald post</value>\n  </data>\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\n    <value>Uppgiften avslutad</value>\n    <comment>Shown on the status bar</comment>\n  </data>\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\n    <value>Avinstallerar</value>\n    <comment>Shown on the status bar</comment>\n  </data>\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\n    <value>Kom ihåg val</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\n    <value>Fel</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\n    <value>Filen finns inte.</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\n    <value>Inget att visa. Denna appen avinstalleras med Windows Installer (MsiExec).</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\n    <value>Namn</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\n    <value>Värde</value>\n  </data>\n  <data name=\"Empty\" xml:space=\"preserve\">\n    <value>Tomt</value>\n  </data>\n  <data name=\"GuidFound\" xml:space=\"preserve\">\n    <value>GUID hittad</value>\n  </data>\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\n    <value>GUID saknas</value>\n  </data>\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\n    <value>Välj ner till…</value>\n  </data>\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\n    <value>Fil ej funnen.</value>\n  </data>\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\n    <value>Kör efter-avinstallationskommandon…</value>\n  </data>\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\n    <value>Kör före-avinstallationskommandon…</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\n    <value>Klar</value>\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\n  </data>\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\n    <value>{0} avinstallerare valda</value>\n    <comment>{0} is a number of selected uninstallers</comment>\n  </data>\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\n    <value>{0} avinstallerare totalt, {1}</value>\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\n  </data>\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\n    <value>Följande kommando misslyckades med att utföras:\n{0}</value>\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\n  </data>\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\n    <value>Extern åtgärd misslyckades</value>\n  </data>\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\n    <value>Standard</value>\n    <comment>Used in language select box when you want to use the system language</comment>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\n    <value>Vissa inställningar kommer inte att träda i kraft förrän appen har startats om.</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\n    <value>Vill du starta om BCU för att tillämpa nya inställningar?</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\n    <value>Ändra appinställningar</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\n    <value>Certifikat saknas</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\n    <value>Bearbetar upptäckta appar, {0} kvar...</value>\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\n    <value>Att välja \"Avsluta\" kommer omedelbart att stänga den pågående avinstallationen och kan resultera i att avinstallationen inte slutförs. Vanligtvis är det möjligt att köra avinstallationsprogrammet igen för att slutföra avinstallationen.\n\nAlternativt kan du hoppa över att vänta på denna process. Att hoppa över kommer att låta avinstallationen fortsätta arbeta medan uppgiften går vidare till nästa objekt. Tänk på att vissa avinstallationer kan misslyckas med att köras tills den hoppade över processen är färdig.</value>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\n    <value>Vill du hoppa över att vänta på det nuvarande körande avinstallationsprogrammet?</value>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\n    <value>Hoppa över pågående uppgift</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\n    <value>En annan avinstallation är redan igång. Vänligen vänta tills den är klar och försök sedan igen.</value>\n  </data>\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\n    <value>Betyg: {0}\n\nPositiva:\n{1}\n\nNegativa:\n{2}</value>\n    <comment>{0} - Rating as a string\n{1} - List of strings of positive parts of the rating\n{2} - List of strings of negative parts of the rating\nThe lists are separated by a single newline.</comment>\n  </data>\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\n    <value>Betygdetaljer</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\n    <value>Denna app har inte ett giltigt registerinlägg.</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\n    <value>Denna app har inte ett giltigt avinstallationsprogram.</value>\n  </data>\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\n    <value>Laddar Windows Funktioner...</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\n    <value>Uppdaterar startinformation…</value>\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\n    <value>Inga kataloger att öppna</value>\n  </data>\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\n    <value>Inte tillgängligt</value>\n    <comment>Used on application list when value is not available</comment>\n  </data>\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\n    <value>Betyg är inte tillgängligt</value>\n  </data>\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\n    <value>Du måste aktivera betyg i inställningarna först.</value>\n  </data>\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\n    <value>Du kan inte betygsätta appar som inte installerats korrekt.</value>\n  </data>\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\n    <value>{0} appar</value>\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\n  </data>\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\n    <value>Medelbetyg: {0}; Mitt betyg: {1}</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\n    <value>Följande avinstallationer misslyckades att köras, troligen på grund av en kollision. Vänligen vänta tills andra avinstallationsprogram har slutförts och försök igen.\n{0}\n\nDu kan försöka inaktivera kollisionsdetektering i inställningarna, men det rekommenderas inte.</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\n    <value>Tvinga avinstallation</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\n    <value>Misslyckades med att köra några av avinstallationsprogrammen.</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\n    <value>.NET Framework 4.0 hittades inte.</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\n    <value>.NET Framework 4.0 hittades inte, vissa funktioner kommer att inaktiveras.</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\n    <value>.NET Framework 4.0 är valfritt, men rekommenderas. De funktioner som är beroende av ramverket kommer att vara inaktiverade tills du installerar det.</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\n    <value>Några av avinstallationsprogrammen misslyckades.</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\n    <value>Vill du försöka köra de tysta avinstallationsprogrammen som misslyckades som synliga?</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\n    <value>Följande avinstallationsprogram kommer att startas om högljutt:</value>\n  </data>\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\n    <value>Skannar angiven katalog...</value>\n  </data>\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\n    <value>Välj katalog med appar som du vill ta bort.</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\n    <value>Avinstallera från katalog.</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\n    <value>Inga appar hittades i den angivna katalogen.</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\n    <value>Se till att du har valt rätt katalog och att programmets körbara filer fortfarande finns kvar.</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\n    <value>Hittade ett avinstallationsprogram för {0}</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\n    <value>Vill du köra detta avinstallationsprogram?</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\n    <value>Utfärdare</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\n    <value>Ämne</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\n    <value>Arkiverad</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\n    <value>Tillägg</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\n    <value>Vänligt namn</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\n    <value>Utfärdarnamn</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\n    <value>Inte efter</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\n    <value>Inte före</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\n    <value>Privat nyckel</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\n    <value>Har privat nyckel</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\n    <value>Offentlig nyckel</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\n    <value>Rådata</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\n    <value>Serienummer</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\n    <value>Ämnesnamn</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\n    <value>Signatur algoritm</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\n    <value>Avtryck</value>\n  </data>\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\n    <value>Misslyckades med att spara inställningar</value>\n  </data>\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\n    <value>Avslutar...</value>\n  </data>\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\n    <value>Laddar ikoner</value>\n  </data>\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\n    <value>Letar efter app</value>\n  </data>\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\n    <value>Inga giltiga filer eller kataloger valdes. Kontrollera att du har åtkomst till dem och att de inte är markerade som systemfiler.</value>\n  </data>\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\n    <value>Leta efter appar</value>\n  </data>\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\n    <value>Misslyckades med att hitta några appar inuti {0}</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\n    <value>Modifiera app</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\n    <value>Vald app kan inte modifieras</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\n    <value>Den valda applikationen har inget ändringskommando angivet. Det kan vara nödvändigt att avinstallera och sedan installera om den för att ändra installationsinställningarna.</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\n    <value>Spara avinstallationslista</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\n    <value>Spara ändringar i den öppnade avinstallationslistan?</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\n    <value>Det finns osparade ändringar i den öppnade avinstallationslistan som kommer att gå förlorade vid stängning.</value>\n  </data>\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\n    <value>Välj katalogen med apparna som ska avinstalleras.</value>\n  </data>\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\n    <value>Välj var säkerhetskopian ska sparas. En ny mapp kommer att skapas.</value>\n  </data>\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\n    <value>BCU har uppdaterats till v{0}!</value>\n  </data>\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\n    <value>Välkommen till BCU version {0}!</value>\n  </data>\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\n    <value>Ställer datorn i viloläge om {0}s. Avmarkera kryssrutan för viloläge för att avbryta.</value>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\n    <value>Gör ingenting</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\n    <value>Öppnar egenskaper</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\n    <value>Avinstallationer</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\n    <value>Bir geri yükleme noktası oluşturuluyor ...</value>\n  </data>\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\n    <value>Arta kalanlar aranıyor ...</value>\n  </data>\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\n    <value>Kaldırma listesini kaldırılıyor ...</value>\n  </data>\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\n    <value>Kalıntıları çıkarma ...</value>\n  </data>\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\n    <value>Güncellemeler aranıyor ...</value>\n  </data>\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\n    <value>Arama kriterinizle eşleşen giriş yok.</value>\n  </data>\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\n    <value>BCUninstaller dışa aktarma. Yayıncı | Sürüm | Tarih | Boyut | Kayıt defteri | Kaldırıcı türü | Dizgiyi kaldır | Sessiz kaldırma dizesi | Yorumlar</value>\n  </data>\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\n    <value>Taşınabilir</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\n    <value>API çağrısı başarısız oldu</value>\n  </data>\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\n    <value>Kayıt defteri yedeği başarısız oldu, yine de devam etmek istiyor musunuz?</value>\n  </data>\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\n    <value>Hata detayları:</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\n    <value>Arta kalan kaldırma</value>\n  </data>\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\n    <value>Hata detayları:</value>\n    <comment>Add space or newline afterwards and two newlines before</comment>\n  </data>\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\n    <value>Devam etmeden önce bir kayıt defteri yedeği oluşturmak ister misiniz?</value>\n  </data>\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\n    <value>Tüm değişiklikleri daha sonra çift tıklatarak geri alabilirsiniz. Dosyalar ve dizinler geri dönüşüm kutusuna taşınır, onları buradan geri yükleyebilirsiniz.</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\n    <value>Eylem başarısız</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\n    <value>Bu işlem için yalnızca bir giriş seçmeniz gerekiyor</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\n    <value>Listeden tam olarak bir kaldırıcı seçin. Onay kutularını kullanıyorsanız, bunları kontrol ettiğinizden emin olun.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\n    <value>Güncellemeleri arayın</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\n    <value>Çevrimiçi içeriği aç</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\n    <value>İnternete bağlanılamıyor, ağ yok.</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\n    <value>Ağ kablonuzun takılı olduğundan emin olun. Wi-Fi kullanıyorsanız, sinyal gücünüzün iyi olduğundan emin olun.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\n    <value>Geri bildirim gönder</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\n    <value>BCU ile ilgili geri bildirim göndermek ister misiniz?</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\n    <value>Bu sizi bir dakikadan daha az sürecek ama gelişime büyük ölçüde yardımcı olacak! Tüm geri bildirimler takdir edilir, bir hata raporu, özellik talebi veya basit bir teşekkür! Daha sonra üst menü çubuğundan gönderebilirsiniz (Yardım-&gt; Geri bildirim gönder).</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\n    <value>Güncel versiyon güncel</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\n    <value>Şu anda hiçbir güncelleme bulunamadı, en son sürüme sahipsiniz. Bazı işlevler eklendi mi yoksa bir hata mı düzeltildi? Lütfen \"Yardım-&gt; Geri Bildirim Gönder\" menüsünü kullanarak geri bildiriminizi gönderin.</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\n    <value>Encountered an error while checking for updates</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\n    <value>Güvenlik duvarınızda BCUninstaller'ın engellenmediğinden ve çalışan bir internet bağlantınızın olduğundan emin olun.</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\n    <value>Yeni sürüm {0} kullanılabilir, şimdi yeni sürüme geçmek istiyor musunuz?</value>\n    <comment>0 is version number</comment>\n  </data>\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\n    <value>BCUninstaller güncellemeyi otomatik olarak indirecek ve yeniden başlattıktan sonra uygulayacaktır. Lütfen ayarlarınızı bu süreçte kaybedebileceğinizi unutmayın.\n\nDeğişiklikler:\n\n- {0}\n\nUyarı: Güncelleme sırasında \"Update\" klasörü ve BCU dizininin içindeki \"Update.zip\" dosyası kaldırılacaktır.\n</value>\n    <comment>0 is a list of changes separated by \"- \"</comment>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\n    <value>Msi kullanarak kaldır</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\n    <value>Seçilen giriş MsiExec yükleyici kullanılarak kaldırılamaz</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\n    <value>Seçilen kaldırıcı, MsiExec ile kullanım için geçerli bir Kılavuza sahip değil.</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\n    <value>Mevcut kaldırma görevini durdur</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\n    <value>Şu anda çalışan görevi durdurmak istediğinizden emin misiniz?</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\n    <value>Görevi zamanından önce durdurmak herhangi bir değişikliği geri almayacaktır. Şu anda çalışan kaldırıcı durdurulmayacak, görev bitirmek için bekleyecektir.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\n    <value>Geri yükleme noktası oluştur</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\n    <value>Yeni bir geri yükleme noktası oluşturulamadı</value>\n  </data>\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\n    <value>x64</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"StrDebug\" xml:space=\"preserve\">\n    <value>DEBUG</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\n    <value>Kaldırma ilerlemesi</value>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\n    <value>Şimdi bilgisayarı bırakabilirsin</value>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\n    <value>Kalan kaldırıcılar herhangi bir kullanıcı müdahalesi olmadan tamamlayabilmelidir. Kaldırma araçlarından birinin çökmesi durumunda zaman zaman kontrol etmelisiniz.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\n    <value>Önemsiz / arta kalan Kaldırma</value>\n  </data>\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\n    <value>Düşük güvenli ürünleri gerçekten değiştirmek istiyor musunuz?</value>\n  </data>\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\n    <value>İyi'den daha düşük bir güven ile işaretlenmiş öğeleri çıkarmak çok tehlikeli olabilir! Her bir öğenin silinmesi güvenli olduğunu doğrulamanız önerilir.</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\n    <value>Anahtarları kayıt defterinden kaldır</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\n    <value>Seçilen kaldırıcı girişlerini kaldırmak istediğinizden emin misiniz?</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\n    <value>Aşağıdaki öğeler kayıt defterinden kaldırılacak ve kaldırıcı listesinden silinecek, ancak kaldırılmayacaktır.\n\n{0}</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\n    <value>Dışa aktarma başarısız oldu</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\n    <value>Dışa aktarılan verileri kaydederken bir hatayla karşılaşıldı</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\n    <value>Hata devam ederse, örneğin masaüstüne farklı bir dizine kaydetmeyi deneyin.</value>\n  </data>\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\n    <value>BCUninstaller, {0} uygulamasını kaldırıyor</value>\n    <comment>0 is the uninstaller count</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\n    <value>Kaldırıcıyı yeniden adlandır</value>\n  </data>\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\n    <value>Sağlanan ad boş veya geçersiz karakterler içeriyor</value>\n  </data>\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\n    <value>Aşağıdaki karakterlerden hiçbirini içermediğinden emin olun:\n{0}</value>\n    <comment>0 is list of characters separated by spaces</comment>\n  </data>\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\n    <value>Arta kalan kaldırma işlemlerinden kalanları aramak ister misiniz?</value>\n  </data>\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\n    <value>Lütfen bu özelliğin yalnızca nasıl çalıştığını anlayan deneyimli kullanıcıları için olduğunu unutmayın. Bu dosyaları kaldırmak gerekli değildir ve sistem performansını anlamlı bir şekilde etkilemeyecektir.</value>\n  </data>\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\n    <value>Arta kalan kalıntı bulunamadı</value>\n  </data>\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\n    <value>Arta kalan kalıntı bulunamadı. BleachBit gibi geçici bir dosya temizleyici çalıştırabilmeniz için hala bir miktar kalıntı kalmış olabilir.</value>\n  </data>\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\n    <value>Panoya kopyalamak için hiçbir şey yoktu. Ya seçilen kaldırıcıyı bu bilgi biti yok ya da hiçbir şey seçmediniz.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\n    <value>Panoya kopyala</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\n    <value>Açık dizinler</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\n    <value>Bu işlem bir kerede {0} dizini açacak, devam etmek istediğinizden emin misiniz?</value>\n    <comment>0 is number of directories to open\n</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\n    <value>Çevrimiçi ara</value>\n  </data>\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\n    <value>Aranacak bir şey yok</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\n    <value>BCUninstaller öğesini kaldır</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\n    <value>BCUninstaller'ı kaldırmak istediğinizden emin misiniz?</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\n    <value>Ayrıldığın için üzgünüm! Bir iki dakikanız varsa, lütfen web sitemde BCU'yu kaldırdığınıza dair bir söz bırakın (http://klocmansoftware.weebly.com/). Herhangi bir meşru sorunu çözmek için elimden geleni yapacağım.</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\n    <value>Devam etmeden önce bir geri yükleme noktası oluşturmak ister misiniz?</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\n    <value>Kaldırmakta olduğunuz uygulamaların önemli veya sistem kararlılığı için gerekli olup olmadığından emin değilseniz bir geri yükleme noktası oluşturmanız önerilir. İşlemden sonra herhangi bir şey olursa, değişiklikleri geri almak için Sistem Geri Yükleme'yi kullanabilirsiniz.</value>\n  </data>\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\n    <value>Arama sayfası açılırken bir hatayla karşılaşıldı</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\n    <value>Kaldırma Listesini Kaydet</value>\n  </data>\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\n    <value>Liste bir dosyaya kaydedilemedi</value>\n  </data>\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\n    <value>Tüm uygulama ayarlarını sıfırlamak istediğinizden emin misiniz?</value>\n  </data>\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\n    <value>Bazı uygulamalar sessizce kaldırılamaz</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\n    <value>Bazı girişler korunur ve değiştirilemez</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\n    <value>Seçilen giriş korunur ve değiştirilemez</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\n    <value>URL açılırken bir hatayla karşılaşıldı</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\n    <value>Mevcut seçimi korumak istiyor musunuz?</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\n    <value>Dizini açarken bir hatayla karşılaşıldı</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\n    <value>Seçilen dosyalar yüklenemedi</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\n    <value>Kaldırıcı seçilmedi, kaldırılacak hiçbir şey yok</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\n    <value>Kaldırıcıları çalıştır</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\n    <value>Uygulamaları kaldırmak için önce onları liste görünümünden seçmelisiniz. Onay kutularını kullanıyorsanız, kontrol edildiğinden emin olun.</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\n    <value>Mevcut seçimi korumayı seçerseniz, açılan liste (ler) ile birleştirilir.</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\n    <value>Bu işlem bir kerede {0} URL'yi açacak, devam etmek istediğinizden emin misiniz?</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\n    <value>Açık URL'ler</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\n    <value>Açılacak URL yok</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\n    <value>Korunan öğeyi değiştir</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\n    <value>Etkilenen girişler:\n{0}\n\nBu girişleri değiştirmek için ayarların kenar çubuğundan kaldırıcı korumasını devre dışı bırakmanız gerekir. Bunları görevden kaldırabilir ve isterseniz diğer öğelere devam edebilirsiniz.</value>\n    <comment>0 names of protected uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\n    <value>Korumalı giriş: {0}\n\nBu girişi değiştirmek için, kurulum panelinden kaldırıcı korumasını devre dışı bırakmanız gerekir.</value>\n    <comment>0 name of protected uninstaller</comment>\n  </data>\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\n    <value>Aşağıdaki öğeler sessiz kaldırıcılar eksik:\n{0}\n\nBu öğeler için \"yüksek\" kaldırıcıları mı kullanmak istiyorsunuz yoksa görevden çıkarılmaları mı gerekiyor?</value>\n    <comment>0 is names of non-quiet uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\n    <value>Sessiz kaldırma</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\n    <value>Ayarları varsayılan duruma getir</value>\n  </data>\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\n    <value>Tüm ayarlarınız kalıcı olarak kaybolacak. Bu eylemi tamamlamak için BCUninstaller'ın yeniden başlatılması gerekecektir.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\n    <value>Yükleme Kaldırma Listesi</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\n    <value>Geri yükleme noktası OLUŞTURMAZ, değişiklikleri geri yükleyemezsiniz! Kaldırma işlemine devam etmek istiyor musunuz?</value>\n  </data>\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\n    <value>\"{0}\" yeniden adlandırılıyor</value>\n  </data>\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\n    <value>Seçilen girişi yeniden adlandır</value>\n  </data>\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\n    <value>Görev bitti</value>\n    <comment>Shown on the status bar</comment>\n  </data>\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\n    <value>Kaldırma</value>\n    <comment>Shown on the status bar</comment>\n  </data>\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\n    <value>Seçimi hatırla</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\n    <value>Hata</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\n    <value>Dosya mevcut değil.</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\n    <value>Gösterilecek bir şey yok. Bu uygulama Windows Installer (MsiExec) kullanılarak kaldırılmıştır.</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\n    <value>Adı</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\n    <value>Değer</value>\n  </data>\n  <data name=\"Empty\" xml:space=\"preserve\">\n    <value>Boş</value>\n  </data>\n  <data name=\"GuidFound\" xml:space=\"preserve\">\n    <value>GUID bulundu</value>\n  </data>\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\n    <value>GUID eksik</value>\n  </data>\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\n    <value>Aşağıya doğru seçin ...</value>\n  </data>\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\n    <value>Dosya bulunamadı.</value>\n  </data>\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\n    <value>Yükleme sonrası komutları çalıştırılıyor ...</value>\n  </data>\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\n    <value>Ön yükleme komutlarını çalıştırılıyor ...</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\n    <value>Hazır</value>\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\n  </data>\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\n    <value>{0} kaldırıcı seçildi</value>\n    <comment>{0} is a number of selected uninstallers</comment>\n  </data>\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\n    <value>Toplam {0} kaldırıcı, {1}</value>\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\n  </data>\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\n    <value>Aşağıdaki komut çalıştırılamıyor:\n{0}</value>\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\n  </data>\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\n    <value>Harici yürütme başarısız oldu</value>\n  </data>\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\n    <value>Varsayılan</value>\n    <comment>Used in language select box when you want to use the system language</comment>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\n    <value>Bazı ayarlar uygulama yeniden başlatılıncaya kadar geçerli olmaz.</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\n    <value>Yeni ayarları uygulamak için BCU'yu yeniden başlatmak istiyor musunuz?</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\n    <value>Uygulama ayarlarını değiştir</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\n    <value>Sertifika eksik</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\n    <value>Kaldırma işlemlerini gerçekleştirme ({0})</value>\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\n    <value>\"Sonlandır\" seçeneğinin seçilmesi, çalışan kaldırıcıyı hemen kapatır ve kaldırma işleminin tamamlanamamasına neden olabilir. Genellikle kaldırmayı bitirmek için kaldırıcıyı tekrar çalıştırmak mümkündür.\n\nAlternatif olarak, bu işlemi beklemeyi atlayabilirsiniz. Atlama, işleyici sonraki öğeye geçerken kaldırıcıyı çalışmaya devam etmesine izin verecektir. Bazı kaldırıcıların atlanan işlem bitene kadar çalışmaya devam edemeyeceğini unutmayın.</value>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\n    <value>Şu anda çalışan kaldırıcıyı beklemeyi mi atlamak istiyorsunuz?</value>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\n    <value>Şu anda çalışan görevi atla</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\n    <value>Başka bir kaldırma görevi zaten çalışıyor. Lütfen bitirmesini bekleyin ve tekrar deneyin.</value>\n  </data>\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\n    <value>Değerlendirme: {0}\n\nPozitif:\n{1}\n\nNegatif:\n{2}</value>\n    <comment>{0} - Rating as a string\n{1} - List of strings of positive parts of the rating\n{2} - List of strings of negative parts of the rating\nThe lists are separated by a single newline.</comment>\n  </data>\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\n    <value>Derecelendirme detayları</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\n    <value>Bu uygulamanın geçerli bir kayıt defteri girişi yok</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\n    <value>Bu uygulama geçerli bir kaldırıcıya sahip değil</value>\n  </data>\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\n    <value>Windows Özellikleri yükleniyor ...</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\n    <value>Yenileme başlangıç bilgileri ...</value>\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\n    <value>Açılacak dizin yok</value>\n  </data>\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\n    <value>Müsait değil</value>\n    <comment>Used on application list when value is not available</comment>\n  </data>\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\n    <value>Puanlar mevcut değil</value>\n  </data>\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\n    <value>İlk önce ayarlardan puanları etkinleştirmeniz gerekir.</value>\n  </data>\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\n    <value>Düzgün yüklenmemiş uygulamaları değerlendiremezsiniz.</value>\n  </data>\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\n    <value>{0} uygulamalar</value>\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\n  </data>\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\n    <value>Ortalama kullanıcı oyu: {0}; Derecelendirmem: {1}</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\n    <value>Yüklemelerin kaldırılması, muhtemelen bir çarpışma nedeniyle yürütülemedi. Lütfen diğer kaldırıcıların bitmesini bekleyin ve tekrar deneyin.\n{0}\n\nAyarlarda çarpışma algılamayı devre dışı bırakmayı deneyebilirsiniz, ancak önerilmez.</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\n    <value>Kaldırma işlemini zorla</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\n    <value>Bazı kaldırıcılar çalıştırılamadı</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\n    <value>.NET Framework v4.0 bulunamadı</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\n    <value>.NET Framework v4.0 bulunamadı, bazı özellikler devre dışı bırakılacak</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\n    <value>V4.0 çerçevesi isteğe bağlıdır, ancak önerilir. Çerçeveye dayanan özellikler, siz yükleyene kadar devre dışı bırakılacaktır.</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\n    <value>Bazı kaldırıcılar başarısız oldu</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\n    <value>Başarısız sessiz kaldırıcıları zorla çalıştırmayı denemek ister misiniz?</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\n    <value>Kaldırma işlemlerinin ardından yeniden başlatılacak:</value>\n  </data>\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\n    <value>Belirtilen dizini tara ...</value>\n  </data>\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\n    <value>Kaldırmak istediğiniz uygulamaların bulunduğu dizini seçin.</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\n    <value>Dizinden kaldır</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\n    <value>Belirtilen dizinde uygulama bulunamadı</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\n    <value>Doğru dizini seçtiğinizden ve uygulamanın yürütülebilir dosyalarının bulunduğundan emin olun.</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\n    <value>{0} için bir kaldırıcı bulundu</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\n    <value>Bu kaldırıcıyı çalıştırmak ister misin?</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\n    <value>İhraççı</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\n    <value>Konu</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\n    <value>Arşivlenmiş</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\n    <value>Eklentiler</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\n    <value>Kısa adı</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\n    <value>İhracatçı adı</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\n    <value>Sonra değil</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\n    <value>Önce değil</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\n    <value>Özel anahtar</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\n    <value>Özel Anahtarı Var</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\n    <value>Genel anahtar</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\n    <value>İşlenmemiş veri</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\n    <value>Seri Numarası</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\n    <value>Konu Adı</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\n    <value>İmza Algoritması</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\n    <value>Versiyon</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\n    <value>Parmakizi</value>\n  </data>\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\n    <value>Ayarlar kaydedilemedi</value>\n  </data>\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\n    <value>Tamamlama</value>\n  </data>\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\n    <value>İkonlar yükleniyor</value>\n  </data>\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\n    <value>Uygulamaya bak</value>\n  </data>\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\n    <value>Geçerli dosya veya dizin seçilmedi. Onlara erişebildiğinizden ve sistem dosyaları olarak işaretlenmediğinden emin olun.</value>\n  </data>\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\n    <value>Uygulamalar için bak</value>\n  </data>\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\n    <value>{0} içinde herhangi bir uygulama bulunamadı</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\n    <value>Uygulamayı düzenle</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\n    <value>Seçilen uygulama düzenlenemez</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\n    <value>Seçilen uygulamada belirtilen değişiklik komutu yok. Yükleme ayarlarını değiştirmek için kaldırmak ve yeniden yüklemek gerekebilir.</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\n    <value>Kaldırma listesini kaydet</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\n    <value>Açılan kaldırma listesine değişiklikleri kaydedin?</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\n    <value>Açılan kaldırma listesinde, kapatılarak kaybedilecek kaydedilmemiş değişiklikler var.</value>\n  </data>\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\n    <value>Kaldırılacak uygulamalar ile dizini seçin.</value>\n  </data>\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\n    <value>Yedeklemeyi nereye kaydedeceğinizi seçin. Yeni bir dizin oluşturulacak.</value>\n  </data>\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\n    <value>BCU, v {0} olarak güncellendi!</value>\n  </data>\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\n    <value>BCU {0} sürümüne hoş geldiniz!</value>\n  </data>\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\n    <value>Bilgisayarı {0} saniye içinde uyku moduna geçirir. İptal etmek için uyku onay kutusunun işaretini kaldırın.</value>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\n    <value>Bir şey yapmaz</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\n    <value>Özellikleri açar</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\n    <value>Yüklemeleri kaldırır</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\n    <value>Đang tạo một điểm khôi phục mới...</value>\n  </data>\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\n    <value>Đang kiểm tra các phần còn sót lại...</value>\n  </data>\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\n    <value>Đang cập nhật danh sách các trình gỡ cài đặt...</value>\n  </data>\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\n    <value>Đang loại bỏ các phần còn sót lại...</value>\n  </data>\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\n    <value>Đang kiểm tra các bản cập nhật...</value>\n  </data>\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\n    <value>Không có mục nào phù hợp với tiêu chí tìm kiếm của bạn.</value>\n  </data>\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\n    <value>Xuất BCUninstaller\nNhà phát hành | Phiên bản | Ngày | Kích thước | Regsitry | Loại trình gỡ cài đặt | Câu lệnh gỡ cài đặt | Câu lệnh gỡ cài đặt âm thầm | Chú thích</value>\n  </data>\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\n    <value> Portable</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\n    <value>Gọi API không thành công</value>\n  </data>\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\n    <value>Sao lưu registry không thành công, bạn có muốn tiếp tục chứ?</value>\n  </data>\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\n    <value>Chi tiết lỗi: </value>\n  </data>\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\n    <value>Loại bỏ phần còn sót lại</value>\n  </data>\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\n    <value>\n\nChi tiết lỗi:\n</value>\n    <comment>Add space or newline afterwards and two newlines before</comment>\n  </data>\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\n    <value>Bạn có muốn sao lưu registry trước khi tiếp tục không?</value>\n  </data>\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\n    <value>Bạn có thể hoàn tác mọi thay đổi bằng cách nhấp đúp vào nó sau này.\n\nCác tệp và thư mục sẽ được chuyển vào thùng rác, bạn có thể khôi phục chúng từ đó.</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\n    <value>Thao tác thất bại</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\n    <value>Thao tác này chỉ yêu cầu một mục được chọn.</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\n    <value>Chọn chính xác một trình gỡ cài đặt từ danh sách. Nếu có các hộp kiểm, hãy nhớ tích vào chúng.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\n    <value>Kiểm tra các bản cập nhật</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\n    <value>Mở nội dung trực tuyến</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\n    <value>Không thể kết nối Internet hoặc không có mạng.</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\n    <value>Đảm bảo rằng cáp mạng của bạn đã được cắm. Và nếu bạn đang sử dụng Wi-Fi, hãy đảm bảo rằng bạn có cường độ tín hiệu tốt.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\n    <value>Gửi phản hồi</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\n    <value>Bạn có muốn gửi phản hồi liên quan về BCU không?</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\n    <value>Sẽ chỉ mất của bạn chưa đến một phút nhưng lại giúp ích rất nhiều cho việc phát triển! Mọi phản hồi đều được ghi nhận, cho dù đó là báo lỗi, yêu cầu tính năng mới hay chỉ đơn giản là lời cảm ơn!\n\nBạn có thể gửi nó sau từ thanh menu trên cùng (Trợ giúp -&gt; Gửi phản hồi).</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\n    <value>Phiên bản hiện tại là phiên bản mới nhất</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\n    <value>Hiện tại không tìm thấy bản cập nhật nào, bạn đang dùng phiên bản mới nhất.\n\nBạn có muốn đề xuất thêm tính năng hoặc báo cáo lỗi không? Vui lòng gửi cho tôi phản hồi của bạn bằng cách sử dụng menu \"Trợ giúp-&gt;Gửi phản hồi\".</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\n    <value>Đã xảy ra lỗi khi kiểm tra các bản cập nhật</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\n    <value>Hãy đảm bảo rằng BCUninstaller không bị chặn bởi tường lửa và bạn đã kết nối Internet.</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\n    <value>Đã có phiên bản mới {0}, bạn có muốn nâng cấp ngay không?</value>\n    <comment>0 is version number</comment>\n  </data>\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\n    <value>BCUninstaller sẽ tự động tải xuống bản các cập nhật và áp dụng chúng sau khi khởi động lại. Xin lưu ý rằng bạn có thể mất cài đặt trong quá trình này.\n\nNhật ký thay đổi:\n- {0}\n\nCảnh báo: Trong quá trình cập nhật, thư mục \"Update\" và tệp \"Update.zip\" trong thư mục BCU sẽ bị xóa.</value>\n    <comment>0 is a list of changes separated by \"- \"</comment>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt bằng Msi</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\n    <value>Không thể gỡ cài đặt mục đã chọn bằng trình cài đặt MsiExec.</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt đã chọn không có GUID hợp lệ để sử dụng với MsiExec.</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\n    <value>Dừng tác vụ gỡ cài đặt hiện tại</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\n    <value>Bạn có chắc là muốn dừng tác vụ hiện đang thực thi chứ?</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\n    <value>Dừng tác vụ trước khi hoàn thành sẽ không hoàn tác bất kỳ thay đổi nào đã thực hiện. Trình gỡ cài đặt đang thực thi sẽ không bị dừng lại, tác vụ sẽ đợi nó hoàn tất.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\n    <value>Tạo điểm khôi phục</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\n    <value>Tạo điểm khôi phục không thành công</value>\n  </data>\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\n    <value> x64</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"StrDebug\" xml:space=\"preserve\">\n    <value> GỠ LỖI</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\n    <value>Tiến trình gỡ cài đặt</value>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\n    <value>Bạn có thể rời khỏi máy tính của mình ngay bây giờ</value>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\n    <value>Các trình gỡ cài đặt còn lại có thể hoàn thành mà không cần sự can thiệp của người dùng. Tuy nhiên, bạn vẫn nên kiểm tra định kỳ đề phòng trường hợp một trong số các trình gỡ cài đặt bị lỗi.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\n    <value>Loại bỏ rác/phần còn sót lại</value>\n  </data>\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\n    <value>Bạn có thực sự muốn thay đổi các mục có độ tin cậy thấp chứ?</value>\n  </data>\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\n    <value>Việc xóa các mục được đánh dấu có độ tin cậy thấp có thể rất nguy hiểm! Bạn nên xác minh rằng mọi mục đều an toàn để xóa.</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\n    <value>Xoá các khoá khỏi registry</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\n    <value>Bạn có chắc là muốn xóa mục trình gỡ cài đặt đã chọn chứ?</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\n    <value>Các mục sau sẽ bị xóa khỏi registry và sẽ biến mất khỏi danh sách của trình gỡ cài đặt nhưng sẽ không được nó gỡ cài đặt.\n\n{0}</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\n    <value>Xuất không thành công</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\n    <value>Đã xảy ra lỗi khi lưu dữ liệu đã xuất.</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\n    <value>Nếu lỗi vẫn còn, hãy thử lưu vào một thư mục khác, chẳng hạn như \"Desktop\".</value>\n  </data>\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\n    <value>BCUninstaller đang gỡ cài đặt {0} ứng dụng</value>\n    <comment>0 is the uninstaller count</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\n    <value>Đổi tên trình gỡ cài đặt</value>\n  </data>\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\n    <value>Tên đã nhập trống hoặc chứa ký tự không hợp lệ.</value>\n  </data>\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\n    <value>Hãy đảm bảo rằng nó không chứa bất kỳ ký tự nào sau đây:\n{0}</value>\n    <comment>0 is list of characters separated by spaces</comment>\n  </data>\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\n    <value>Bạn muốn kiểm tra các phần còn sót lại của (các) lần gỡ cài đặt mà bạn đã thực hiện chứ?</value>\n  </data>\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\n    <value>Cần lưu ý rằng tính năng này chỉ dành cho người dùng chuyên sâu, hiểu rõ cách hoạt động của nó. Không cần thiết phải xóa các tệp này và chúng không ảnh hưởng đáng kể đến hiệu suất hệ thống.</value>\n  </data>\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\n    <value>Không tìm thấy bất kỳ phần còn sót lại nào</value>\n  </data>\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\n    <value>Không tìm thấy bất kỳ phần còn sót lại nào. Có thể vẫn còn một ít, vì vậy bạn có thể chạy trình dọn dẹp tệp tạm thời như BleachBit.</value>\n  </data>\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\n    <value>Không có gì để sao chép vào bảng nhớ tạm. Trình gỡ cài đặt bạn đã chọn không có thông tin này hoặc bạn không chọn bất kỳ thông tin nào.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\n    <value>Sao chép vào bảng nhớ tạm</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\n    <value>Mở thư mục</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\n    <value>Thao tác này sẽ mở {0} thư mục cùng một lúc, bạn có chắc là muốn tiếp tục chứ?</value>\n    <comment>0 is number of directories to open\n</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\n    <value>Tìm kiếm trực tuyến</value>\n  </data>\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\n    <value>Không có gì để tìm kiếm</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt BCUninstaller</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\n    <value>Bạn có chắc là muốn gỡ cài đặt BCUninstaller chứ?</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\n    <value>Tôi rất tiếc vì bạn đã gỡ bỏ BCU! Nếu bạn có một vài phút, hãy cho tôi biết lý do tại sao bạn gỡ cài đặt BCU trên trang web của tôi (http://klocmansoftware.weebly.com/). Tôi sẽ cố gắng hết sức để khắc phục bất kỳ sự cố chính đáng nào.</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\n    <value>Bạn có muốn tạo điểm khôi phục trước khi tiếp tục chứ?</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\n    <value>Nếu bạn không chắc chắn rằng các ứng dụng bạn đang gỡ cài đặt có quan trọng hoặc cần thiết cho sự ổn định của hệ thống hay không, thì việc tạo điểm khôi phục hệ thống là điều được khuyến khích.\nNếu bất kỳ vấn đề gì xảy ra sau quá trình gỡ cài đặt, bạn có thể sử dụng tính năng Khôi phục Hệ thống để hoàn tác các thay đổi.</value>\n  </data>\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\n    <value>Đã xảy ra lỗi khi mở trang tìm kiếm.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\n    <value>Lưu danh sách bộ lọc gỡ cài đặt</value>\n  </data>\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\n    <value>Lưu danh sách vào tệp không thành công</value>\n  </data>\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\n    <value>Bạn có chắc là muốn khôi phục lại tất cả cài đặt ứng dụng chứ?</value>\n  </data>\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\n    <value>Một số ứng dụng không thể được gỡ cài đặt âm thầm.</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\n    <value>Một số mục được bảo vệ và không thể sửa đổi</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\n    <value>Mục đã chọn được bảo vệ và không thể sửa đổi</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\n    <value>Đã xảy ra lỗi khi mở URL</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\n    <value>Bạn có muốn giữ lại lựa chọn hiện tại chứ?</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\n    <value>Đã xảy ra lỗi khi mở thư mục</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\n    <value>Xử lý các tập tin đã chọn không thành công</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\n    <value>Không có gì để gỡ cài đặt vì không có trình gỡ cài đặt nào được chọn.</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\n    <value>Khởi chạy trình gỡ cài đặt</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\n    <value>Để gỡ cài đặt ứng dụng, trước tiên bạn phải chọn ứng dụng đó từ chế độ xem danh sách. Nếu có các hộp kiểm, hãy nhớ tích vào chúng.</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\n    <value>Nếu bạn chọn giữ lựa chọn hiện tại, nó sẽ được hợp nhất vào (các) danh sách đã mở.</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\n    <value>Thao tác này sẽ mở {0} URL cùng một lúc, bạn có chắc là muốn tiếp tục không?</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\n    <value>Mở URL</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\n    <value>Không có URL nào để mở</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\n    <value>Sửa đổi các mục được bảo vệ</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\n    <value>Các mục bị ảnh hưởng:\n{0}\n\nĐể thay đổi các mục này, bạn phải tắt bảo vệ trình gỡ cài đặt từ cài đặt ở thanh bên. Bạn có thể xóa những mục này khỏi tác vụ và tiếp tục với các mục khác nếu muốn.</value>\n    <comment>0 names of protected uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\n    <value>Mục được bảo vệ: {0}\n\nĐể thay đổi mục này, bạn phải tắt tính năng bảo vệ trình gỡ cài đặt khỏi bảng cài đặt.</value>\n    <comment>0 name of protected uninstaller</comment>\n  </data>\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt âm thầm bị thiếu các mục sau:\n{0}\n\nBạn có muốn sử dụng trình gỡ cài đặt gốc cho những mục này, hay bạn muốn loại bỏ chúng khỏi tác vụ?</value>\n    <comment>0 is names of non-quiet uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt âm thầm</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\n    <value>Khôi phục các cài đặt gốc</value>\n  </data>\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\n    <value>Tất cả các cài đặt của bạn sẽ bị mất vĩnh viễn. BCUninstaller cần phải khởi động lại để hoàn thành hành động này.</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\n    <value>Mở danh sách gỡ cài đặt</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\n    <value>KHÔNG CÓ ĐIỂM KHÔI PHỤC NÀO ĐƯỢC TẠO, nên không thể hoàn tác các thay đổi! Bạn vẫn muốn tiếp tục gỡ cài đặt chứ?</value>\n  </data>\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\n    <value>Đang đổi tên \"{0}\"</value>\n  </data>\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\n    <value>Đổi tên mục đã chọn</value>\n  </data>\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\n    <value>Tác vụ đã hoàn thành</value>\n    <comment>Shown on the status bar</comment>\n  </data>\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\n    <value>Đang gỡ cài đặt</value>\n    <comment>Shown on the status bar</comment>\n  </data>\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\n    <value>Ghi nhớ lựa chọn</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\n    <value>Lỗi</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\n    <value>Tệp tin không tồn tại.</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\n    <value>Không có gì được hiển thị. Ứng dụng này được gỡ cài đặt bằng Trình gỡ cài đặt Windows (MsiExec).</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\n    <value>Tên</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\n    <value>Giá trị</value>\n  </data>\n  <data name=\"Empty\" xml:space=\"preserve\">\n    <value>Trống</value>\n  </data>\n  <data name=\"GuidFound\" xml:space=\"preserve\">\n    <value>Đã tìm thấy GUID</value>\n  </data>\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\n    <value>Thiếu GUID</value>\n  </data>\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\n    <value>Lựa chọn...</value>\n  </data>\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\n    <value>Không tìm thấy tệp tin.</value>\n  </data>\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\n    <value>Đang các thực thi các câu lệnh sau khi gỡ cài đặt (post-uninstall)...</value>\n  </data>\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\n    <value>Đang thực thi các câu lệnh trước khi gỡ cài đặt (pre-uninstall)...</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\n    <value>Sẵn sàng</value>\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\n  </data>\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\n    <value>{0} trình gỡ cài đặt được chọn</value>\n    <comment>{0} is a number of selected uninstallers</comment>\n  </data>\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\n    <value>Tổng số {0} trình gỡ cài đặt, {1}</value>\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\n  </data>\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\n    <value>Không thực hiện được câu lệnh sau:\n{0}</value>\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\n  </data>\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\n    <value>Thực thi bên ngoài không thành công</value>\n  </data>\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\n    <value>Mặc định</value>\n    <comment>Used in language select box when you want to use the system language</comment>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\n    <value>Một số cài đặt không có hiệu lực cho đến khi bạn khởi động lại ứng dụng.</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\n    <value>Bạn có muốn khởi động lại BCU để áp dụng các cài đặt mới chứ?</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\n    <value>Thay đổi cài đặt ứng dụng</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\n    <value>Không có chứng chỉ</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\n    <value>Đang xử lý các ứng dụng được phát hiện, còn lại {0} ứng dụng...</value>\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\n    <value>Việc chọn \"Chấm dứt\" sẽ ngay lập tức đóng trình gỡ cài đặt đang chạy và có thể khiến quá trình gỡ cài đặt không được hoàn tất. Thông thường, bạn có thể chạy lại trình gỡ cài đặt để hoàn tất quá trình gỡ cài đặt.\n\nNgoài ra, bạn có thể bỏ qua việc chờ quá trình này. Việc bỏ qua sẽ cho phép trình gỡ cài đặt tiếp tục hoạt động trong khi tác vụ chuyển sang mục tiếp theo. Hãy nhớ rằng một số trình gỡ cài đặt có thể không chạy cho đến khi quá trình bị bỏ qua kết thúc.</value>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\n    <value>Bạn muốn bỏ qua trạng thái chờ của trình gỡ cài đặt hiện đang thực thi chứ?</value>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\n    <value>Bỏ qua tác vụ hiện đang thực thi</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\n    <value>Một tác vụ gỡ cài đặt khác đang thực thi. Vui lòng đợi cho đến khi nó hoàn tất và thử lại.</value>\n  </data>\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\n    <value>Đánh giá: {0}\n\nTích cực:\n{1}\n\nTiêu cực:\n{2}</value>\n    <comment>{0} - Rating as a string\n{1} - List of strings of positive parts of the rating\n{2} - List of strings of negative parts of the rating\nThe lists are separated by a single newline.</comment>\n  </data>\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\n    <value>Chi tiết đánh giá</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\n    <value>Ứng dụng này không có bất kỳ mục registry hợp lệ nào.</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\n    <value>Ứng dụng này không có trình gỡ cài đặt hợp lệ nào.</value>\n  </data>\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\n    <value>Đang nạp Windows Features...</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\n    <value>Đang làm mới thông tin khởi động cùng hệ thống...</value>\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\n    <value>Không có thư mục nào để mở</value>\n  </data>\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\n    <value>Không khả dụng</value>\n    <comment>Used on application list when value is not available</comment>\n  </data>\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\n    <value>Đánh giá không có sẵn</value>\n  </data>\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\n    <value>Trước tiên, bạn cần bật tính năng đánh giá từ cài đặt.</value>\n  </data>\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\n    <value>Bạn không thể đánh giá các ứng dụng không được cài đặt đúngc cách.</value>\n  </data>\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\n    <value>{0} ứng dụng</value>\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\n  </data>\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\n    <value>Đánh giá trung bình: {0}; Đánh giá của tôi: {1}</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\n    <value>Việc thực thi trình gỡ cài đặt sau không thành công. Chắc là do xung đột. Đợi các trình gỡ cài đặt khác hoàn tất và thử lại.\n{0}\n\nBạn có thể thử tắt tính năng phát hiện xung đột trong cài đặt nhưng điều này không được khuyến khích.</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\n    <value>Buộc gỡ cài đặt</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\n    <value>Một số trình gỡ cài đặt không thực thi được.</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\n    <value>Không tìm thấy .NET Framework v4.0</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\n    <value>Một số tính năng sẽ bị tắt do không tìm thấy .NET Framework v4.0.</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\n    <value>.NET framework v4.0 là tùy chọn nhưng được khuyến nghị. Các tính năng phụ thuộc vào framework sẽ bị tắt cho đến khi bạn cài đặt chúng.</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\n    <value>Một số trình gỡ cài đặt không thành công</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt không thành công, tại sao bạn không thử chạy trình gỡ cài đặt âm thầm?</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt bên dưới sẽ khởi động lại trình gỡ cài đặt gốc: </value>\n  </data>\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\n    <value>Đang quét thư mục được chỉ định...</value>\n  </data>\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\n    <value>Chọn thư mục chứa ứng dụng mà bạn muốn gỡ bỏ.</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt từ thư mục</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\n    <value>Không tìm thấy ứng dụng nào trong thư mục được chỉ định</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\n    <value>Hãy chắc rằng thư mục đã chọn có chính xác và tệp thực thi của ứng dụng vẫn còn.</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\n    <value>Đã tìm thấy trình gỡ cài đặt cho {0}</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\n    <value>Bạn có muốn chạy trình gỡ cài đặt này chứ?</value>\n  </data>\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\n    <value>Lưu cài đặt không thành công</value>\n  </data>\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\n    <value>Sắp hoàn thành...</value>\n  </data>\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\n    <value>Đang nạp biểu tượng</value>\n  </data>\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\n    <value>Tìm kiếm ứng dụng</value>\n  </data>\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\n    <value>Không có tệp tin hoặc thư mục hợp lệ nào được chọn. Đảm bảo rằng bạn có quyền truy cập và nó không bị đánh dấu là tệp hệ thống.</value>\n  </data>\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\n    <value>Tìm kiếm ứng dụng</value>\n  </data>\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\n    <value>Không thể tìm thấy ứng dụng trong {0}</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\n    <value>Thay đổi ứng dụng</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\n    <value>Không thể thay đổi ứng dụng đã chọn</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\n    <value>Không có câu lệnh sửa đổi nào được chỉ định cho ứng dụng đã chọn. Bạn có thể cần phải gỡ cài đặt và cài đặt lại để thay đổi cài đặt cài đặt.</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\n    <value>Lưu danh sách gỡ cài đặt</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\n    <value>Bạn có muốn lưu các thay đổi vào danh sách gỡ cài đặt đang mở chứ?</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\n    <value>Có những thay đổi chưa được lưu trong danh sách gỡ cài đặt đang mở và sẽ bị mất khi đóng.</value>\n  </data>\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\n    <value>Chọn thư mục chứa ứng dụng mà bạn muốn gỡ cài đặt.</value>\n  </data>\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\n    <value>Chọn nơi để lưu bản sao lưu. Một thư mục mới sẽ được tạo.</value>\n  </data>\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\n    <value>BCU đã được cập nhật lên v{0}!</value>\n  </data>\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\n    <value>Chào mừng bạn đến với phiên bản {0} của BCU!</value>\n  </data>\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\n    <value>Thiếp lập PC ở chế độ ngủ trong {0} giây. Tích vào hộp kiểm để hủy.</value>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\n    <value>Không làm gì cả</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\n    <value>Mở thuộc tính</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\n    <value>Đã lưu trữ</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\n    <value>Thực thể chứng thực</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\n    <value>Chủ thể</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\n    <value>Phần mở rộng</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\n    <value>Tên dễ hiểu</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\n    <value>Tên của thực thể chứng thực</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\n    <value>Không sau ngày</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\n    <value>Không trước ngày</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\n    <value>Khoá riêng tư</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\n    <value>Có khoá riêng tư</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\n    <value>Khoá công khai</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\n    <value>Dữ liệu thô</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\n    <value>Số Sêri</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\n    <value>Tên chủ thể</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\n    <value>Phiên bản</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\n    <value>Vân tay khoá công khai</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\n    <value>Thuật toán chữ ký</value>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\n    <value>创建新的还原点...</value>\n  </data>\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\n    <value>搜索残余...</value>\n  </data>\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\n    <value>正在填充卸载程序列表...</value>\n  </data>\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\n    <value>删除残余...</value>\n  </data>\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\n    <value>搜索更新...</value>\n  </data>\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\n    <value>没有与你的搜索条件匹配的条目。</value>\n  </data>\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\n    <value>BCUninstaller导出\n发布者 | 版本 | 日期 | 大小 | 注册表 | 卸载程序类型 | 卸载字符串 | 静默卸载字符串 | 注释</value>\n  </data>\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\n    <value>便携</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\n    <value>调用API失败</value>\n  </data>\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\n    <value>注册表备份失败，还要继续吗?</value>\n  </data>\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\n    <value>错误详细信息:</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\n    <value>删除残余</value>\n  </data>\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\n    <value>\n\n错误详细信息:\n</value>\n    <comment>Add space or newline afterwards and two newlines before</comment>\n  </data>\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\n    <value>要在继续之前创建注册表备份吗？</value>\n  </data>\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\n    <value>你可以在之后双击它来回滚所有更改。\n\n文件和目录将被移动到回收站，你可以从那里还原它们。</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\n    <value>操作失败</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\n    <value>你只需要为此操作选择一个条目</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\n    <value>从列表中只选择一个卸载程序。如果你正在使用复选框，请确保选中它们。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\n    <value>搜索更新</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\n    <value>打开联机内容</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\n    <value>无法连接到互联网，没有可用的网络。</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\n    <value>确保网线已接入。如果你使用Wi-Fi，请确保信号良好。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\n    <value>提交反馈</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\n    <value>你想发送有关BCU的反馈吗？</value>\n  </data>\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\n    <value>默认</value>\n    <comment>Used in language select box when you want to use the system language</comment>\n  </data>\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\n    <value>这只花费你不到一分钟，但大大有助于开发！感谢所有反馈，无论是错误报告、功能请求还是简单的感谢！\n\n你可以稍后从顶部菜单栏（帮助-&gt;提交反馈）发送。</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\n    <value>当前版本为最新</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\n    <value>当前未找到更新，你拥有最新版本。\n\n想要添加一些功能或者修复一个bug吗?请使用\"帮助-&gt;提交反馈\"菜单将你的反馈发送给我。</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\n    <value>检查更新时遇到错误</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\n    <value>确保BCUninstaller没有在防火墙中被阻止，并且互联网连接正常。</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\n    <value>新版本{0}可用,现在更新吗?</value>\n    <comment>0 is version number</comment>\n  </data>\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\n    <value>BCUninstaller将自动下载更新并在重新启动后应用它。请注意，在此过程中你可能会丢失设置。\n\n更新日志：\n- {0}\n\n警告:在更新过程中，BCU目录中的文件夹\"update\"和文件\"update.zip\"将被删除。</value>\n    <comment>0 is a list of changes separated by \"- \"</comment>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\n    <value>使用Msi卸载</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\n    <value>无法使用MsiExec安装程序卸载所选条目</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\n    <value>选中的卸载程序没有用于MsiExec的有效Guid。</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\n    <value>停止当前卸载任务</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\n    <value>确定要停止当前正在运行的任务吗?</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\n    <value>过早停止任务不会还原任何更改。当前正在运行的卸载程序不会停止，任务将等待它完成。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\n    <value>创建还原点</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\n    <value>无法创建新的还原点</value>\n  </data>\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\n    <value>x64</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"StrDebug\" xml:space=\"preserve\">\n    <value>调试</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\n    <value>卸载进度</value>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\n    <value>你现在可以离开电脑</value>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\n    <value>其余的卸载程序应该能够在没有任何用户干预的情况下完成。你仍然应该不时检查，以防其中一个卸载程序崩溃。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\n    <value>垃圾/残余删除</value>\n  </data>\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\n    <value>确定要修改低置信度项?</value>\n  </data>\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\n    <value>删除置信度标记为低于好的项目可能是非常危险的！建议你确认每个项目都可以安全删除。</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\n    <value>从注册表删除键</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\n    <value>确定要删除选定的卸载程序条目吗?</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\n    <value>下列项目将从注册表中删除，并将从卸载程序列表中消失，但不会卸载。\n\n{0}</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\n    <value>导出失败</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\n    <value>保存导出的数据时遇到错误</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\n    <value>如果错误仍然存在，请尝试保存到其他目录，例如桌面。</value>\n  </data>\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\n    <value>BCUninstaller正在卸载{0}个应用程序</value>\n    <comment>0 is the uninstaller count</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\n    <value>重命名卸载程序</value>\n  </data>\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\n    <value>提供的名称为空或包含无效字符</value>\n  </data>\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\n    <value>确保未包含以下任何字符:\n{0}</value>\n    <comment>0 is list of characters separated by spaces</comment>\n  </data>\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\n    <value>是否要查找已执行卸载的残余内容?</value>\n  </data>\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\n    <value>请注意，此功能仅适用于了解其工作原理的高级用户。不需要删除这些文件，它们不会以任何有意义的方式影响系统性能。</value>\n  </data>\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\n    <value>没有找到残余</value>\n  </data>\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\n    <value>没有发现残余。可能还有一些残留，所以可以运行一个临时文件清理程序，如BleachBit。</value>\n  </data>\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\n    <value>没有可复制到剪贴板的内容。没有选定的卸载程序包含此信息，或者你没有选择任何内容。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\n    <value>复制到剪贴板</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\n    <value>打开目录</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\n    <value>此操作将立即打开{0}个目录，确定要继续吗?</value>\n    <comment>0 is number of directories to open\n</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\n    <value>联机搜索</value>\n  </data>\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\n    <value>没有可搜索的</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\n    <value>卸载BCUninstaller</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\n    <value>你确定要卸载BCUninstaller吗?</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\n    <value>很遗憾看到你离开！如果你有一两分钟的时间，请在我的网站上留言说明你为什么卸载BCU(http://klocmansoftware.weebly.com/)。我会尽力解决任何合理的问题。</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\n    <value>要在继续之前创建还原点吗?</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\n    <value>如果你不确定要卸载的应用程序对系统稳定性是否重要或必需，建议创建还原点。\n如果在此过程之后出现任何中断，则可以使用系统还原回滚更改。</value>\n  </data>\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\n    <value>打开搜索页面时遇到错误</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\n    <value>保存卸载列表</value>\n  </data>\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\n    <value>保存列表到文件失败</value>\n  </data>\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\n    <value>确定要重置所有应用程序设置?</value>\n  </data>\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\n    <value>有些应用程序无法静默卸载</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\n    <value>某些条目受保护，无法修改</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\n    <value>所选条目受保护，无法修改</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\n    <value>打开URL时遇到错误</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\n    <value>是否保留当前选择?</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\n    <value>打开目录时遇到错误</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\n    <value>无法加载选中的文件</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\n    <value>没有选择卸载程序，没有要卸载的内容</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\n    <value>运行卸载程序</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\n    <value>要卸载应用程序，必须首先从列表视图中选择它们。如果要使用复选框，请确保选中了它们。</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\n    <value>如果选择保留当前选择，它将与打开的列表合并</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\n    <value>此操作将一次打开{0}个URL，确定要继续吗？</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\n    <value>打开URLs</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\n    <value>没有URL可打开</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\n    <value>修改受保护项目</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\n    <value>受影响的条目:\n{0}\n\n要修改这些条目，你需要从设置侧边栏中禁用卸载程序保护。你可以从任务中删除它们，如果需要可以继续选择其他项目。</value>\n    <comment>0 names of protected uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\n    <value>受保护的条目: {0}\n\n要修改此条目，你需要从设置面板中禁用卸载程序保护。</value>\n    <comment>0 name of protected uninstaller</comment>\n  </data>\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\n    <value>错误</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\n    <value>名称</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\n    <value>值</value>\n  </data>\n  <data name=\"Empty\" xml:space=\"preserve\">\n    <value>空</value>\n  </data>\n  <data name=\"GuidFound\" xml:space=\"preserve\">\n    <value>找到GUID</value>\n  </data>\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\n    <value>GUID丢失</value>\n  </data>\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\n    <value>文件未找到。</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\n    <value>准备</value>\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\n  </data>\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\n    <value>已选中{0}个卸载程序</value>\n    <comment>{0} is a number of selected uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\n    <value>跳过当前运行任务</value>\n  </data>\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\n    <value>评分: {0}\n\n积极:\n{1}\n\n消极:\n{2}</value>\n    <comment>{0} - Rating as a string\n{1} - List of strings of positive parts of the rating\n{2} - List of strings of negative parts of the rating\nThe lists are separated by a single newline.</comment>\n  </data>\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\n    <value>评分详细信息</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\n    <value>没有目录可以打开</value>\n  </data>\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\n    <value>不可用</value>\n    <comment>Used on application list when value is not available</comment>\n  </data>\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\n    <value>评分不可用</value>\n  </data>\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\n    <value>你必须先从设置启用评分</value>\n  </data>\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\n    <value>你不能给未正确安装的应用程序评分</value>\n  </data>\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\n    <value>{0}应用程序</value>\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\n  </data>\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\n    <value>平均评分:{0};我的评分:{1}</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\n    <value>强制卸载</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\n    <value>未找到.NET Framework v4.0</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\n    <value>未找到.NET Framework v4.0，某些功能将禁用</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\n    <value>部分卸载程序失败</value>\n  </data>\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\n    <value>扫描特定目录...</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\n    <value>从目录卸载</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\n    <value>Issuer</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\n    <value>主题</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\n    <value>存档</value>\n  </data>\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\n    <value>BCU已更新到v{0}!</value>\n  </data>\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\n    <value>欢迎使用BCU版本{0}!</value>\n  </data>\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\n    <value>PC{0}秒后进入睡眠状态。取消选择睡眠复选框以取消。</value>\n  </data>\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\n    <value>以下项目缺少静默卸载程序:\n{0}\n\n你是否想要为这些项目使用交互卸载程序，或者从任务中删除它们?</value>\n    <comment>0 is names of non-quiet uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\n    <value>静默卸载</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\n    <value>还原默认设置</value>\n  </data>\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\n    <value>你的所有设置将永久丢失。 BCUnInstaller将必须重新启动以完成此操作。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\n    <value>打开卸载列表</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\n    <value>还原点未创建，你将无法还原更改！继续卸载吗?</value>\n  </data>\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\n    <value>重命名\"0\"</value>\n  </data>\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\n    <value>重命名选中条目</value>\n  </data>\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\n    <value>任务完成</value>\n    <comment>Shown on the status bar</comment>\n  </data>\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\n    <value>卸载</value>\n    <comment>Shown on the status bar</comment>\n  </data>\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\n    <value>记住选择</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\n    <value>文件不存在。</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\n    <value>无内容显示。使用Windows Installer（MSIexec）卸载此应用程序。</value>\n  </data>\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\n    <value>选择至...</value>\n  </data>\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\n    <value>运行卸载后命令...</value>\n  </data>\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\n    <value>运行卸载前命令</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\n    <value>共{0}卸载程序，{1}</value>\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\n  </data>\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\n    <value>以下命令无法执行:\n{0}</value>\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\n  </data>\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\n    <value>外部执行失败</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\n    <value>在重新启动应用程序之前，某些设置不会生效。</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\n    <value>想重新启动BCU以应用新设置吗?</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\n    <value>更改应用程序设置</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\n    <value>证书丢失</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\n    <value>正在处理检测到的应用程序，剩余{0}个...</value>\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\n    <value>选择“终止”将立即关闭运行的卸载程序，并且可能导致卸载不完整。通常可以再次运行卸载程序以完成卸载。\n\n或者，你可以跳过等待此过程。跳过将让卸载程序继续工作，而任务移动到下一个项目。请记住，在跳过的过程完成之前，一些卸载程序无法运行。</value>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\n    <value>你想跳过等待目前运行的卸载程序吗?</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\n    <value>另一个卸载任务已在运行。请等待它完成，然后再试一次。</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\n    <value>此应用程序没有有效的注册表项</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\n    <value>此应用程序没有有效的卸载程序</value>\n  </data>\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\n    <value>加载Windows功能...</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\n    <value>刷新开机启动项信息...</value>\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\n    <value>在卸载程序执行失败后，可能是因为冲突。请等待其他卸载程序完成并再试一次。\n{0}\n\n你可以尝试在设置中禁用冲突检测，但不建议使用。</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\n    <value>部分卸载程序无法运行</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\n    <value>V4.0框架是可选的，但推荐。依赖框架的功能将被禁用，直到你安装它。</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\n    <value>交互卸载失败后你想尝试运行静默卸载吗?</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\n    <value>以下卸载程序将重启为交互式：</value>\n  </data>\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\n    <value>选择有要删除的应用程序的目录。</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\n    <value>在指定的目录中找不到任何应用程序</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\n    <value>确保你选择了正确的目录，并且仍然存在应用程序的可执行文件。</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\n    <value>找到了{0}的卸载程序</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\n    <value>你想运行这个卸载程序吗?</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\n    <value>扩展名</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\n    <value>友好名称</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\n    <value>Issuer名</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\n    <value>不晚于</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\n    <value>不早于</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\n    <value>私有键</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\n    <value>有私有键</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\n    <value>公开键</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\n    <value>Raw数据</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\n    <value>序列号</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\n    <value>主题名</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\n    <value>签名算法</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\n    <value>版本</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\n    <value>凭证指纹</value>\n  </data>\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\n    <value>保存设置失败</value>\n  </data>\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\n    <value>完成中...</value>\n  </data>\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\n    <value>加载图标</value>\n  </data>\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\n    <value>查找应用程序</value>\n  </data>\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\n    <value>未选择有效的文件或目录。确保你有权访问它们，并且它们没有被标记为系统文件。</value>\n  </data>\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\n    <value>查找应用程序</value>\n  </data>\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\n    <value>在{0}内找不到任何应用程序</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\n    <value>修改应用程序</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\n    <value>无法修改选中的应用程序</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\n    <value>所选应用程序未指定修改命令。可能需要卸载，然后重新安装以更改安装设置。</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\n    <value>保存卸载列表</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\n    <value>保存更改到打开的卸载列表?</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\n    <value>打开的卸载列表中有未保存的更改，关闭该列表将丢失这些更改。</value>\n  </data>\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\n    <value>选择包含要卸载的应用程序的目录。</value>\n  </data>\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\n    <value>选择保存备份的位置。将创建一个新目录。</value>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\n    <value>无</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\n    <value>打开属性</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\n    <value>卸载</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Localisable.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"LoadingDialogTitleCreatingRestorePoint\" xml:space=\"preserve\">\n    <value>建立新的還原點...</value>\n  </data>\n  <data name=\"LoadingDialogTitleLookingForJunk\" xml:space=\"preserve\">\n    <value>搜尋剩餘檔案...</value>\n  </data>\n  <data name=\"LoadingDialogTitlePopulatingList\" xml:space=\"preserve\">\n    <value>正在填充應用程式清單...</value>\n  </data>\n  <data name=\"LoadingDialogTitleRemovingJunk\" xml:space=\"preserve\">\n    <value>刪除剩餘檔案...</value>\n  </data>\n  <data name=\"LoadingDialogTitleSearchingForUpdates\" xml:space=\"preserve\">\n    <value>搜尋更新...</value>\n  </data>\n  <data name=\"SearchNothingFoundMessage\" xml:space=\"preserve\">\n    <value>沒有與你的搜尋件相同的項目。</value>\n  </data>\n  <data name=\"StrExportHeader\" xml:space=\"preserve\">\n    <value>BCUninstaller匯出\n發布者 | 版本 | 日期 | 大小 | 註册表 | 移除程式類型 | 移除字串 | 最小化移除字串 | 建議</value>\n  </data>\n  <data name=\"StrIsPortable\" xml:space=\"preserve\">\n    <value>免安裝</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"SysRestoreGenericError\" xml:space=\"preserve\">\n    <value>呼叫API失敗</value>\n  </data>\n  <data name=\"MessageBoxes_BackupFailedQuestion_Message\" xml:space=\"preserve\">\n    <value>註冊表備份失敗， 還要繼續嗎？</value>\n  </data>\n  <data name=\"MessageBoxes_BackupFailedQuestion_Details\" xml:space=\"preserve\">\n    <value>錯誤詳細訊息:</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Leftover_removal\" xml:space=\"preserve\">\n    <value>移除剩餘檔案</value>\n  </data>\n  <data name=\"MessageBoxes_Error_details\" xml:space=\"preserve\">\n    <value>\n\n錯誤詳細資訊：\n</value>\n    <comment>Add space or newline afterwards and two newlines before</comment>\n  </data>\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Message\" xml:space=\"preserve\">\n    <value>要在繼續之前建立註冊表備份嗎？</value>\n  </data>\n  <data name=\"MessageBoxes_BackupRegistryQuestion_Details\" xml:space=\"preserve\">\n    <value>你可以在之後雙擊它來取消所有更改。\n\n檔案和目錄將會被移動到資源回收桶，你可以從那裡還原它們。</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Title\" xml:space=\"preserve\">\n    <value>操作失敗</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Message\" xml:space=\"preserve\">\n    <value>你只需要為此操作選擇一個項目</value>\n  </data>\n  <data name=\"MessageBoxes_CanSelectOnlyOneItemInfo_Details\" xml:space=\"preserve\">\n    <value>從列表中止選擇一個移除程式。如果你正在使用複選框，請確保選中他們。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Search_for_updates\" xml:space=\"preserve\">\n    <value>搜尋更新</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Open_online_content\" xml:space=\"preserve\">\n    <value>開啟線上內容</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Message\" xml:space=\"preserve\">\n    <value>無法連接到網路，沒有可用的連線。</value>\n  </data>\n  <data name=\"MessageBoxes_NoNetworkConnected_Details\" xml:space=\"preserve\">\n    <value>確定網路已連結。如果你使用Wi-Fi，請確保訊號良\n好。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Submit_feedback\" xml:space=\"preserve\">\n    <value>傳送回饋</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Message\" xml:space=\"preserve\">\n    <value>你想傳送有關BCU的回饋嗎？</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSubmitFeedback_Details\" xml:space=\"preserve\">\n    <value>這只花費你不到一分鐘，但大大有助於開發！感謝所有回饋，無論是錯誤報告、功能請求還是簡單的感謝！\n\n你可以稍後從頂部選單列(關於-&gt;提交回饋)傳送。</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateUptodate_Message\" xml:space=\"preserve\">\n    <value>目前版本為最新版</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateUptodate_Details\" xml:space=\"preserve\">\n    <value>目前未找到更新，你用的是最版本。\n\n想要添加一些功能或者修復一個BUG嗎？請使用關於-&gt;提交回饋\"選單將你的回饋傳送給我。</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateFailed_Message\" xml:space=\"preserve\">\n    <value>檢查更新時遇到錯誤</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateFailed_Details\" xml:space=\"preserve\">\n    <value>確保BCUninstaller沒有在防火牆鐘被阻擋連接，且網路連接正常。</value>\n  </data>\n  <data name=\"MessageBoxes_UpdateAskToDownload_Message\" xml:space=\"preserve\">\n    <value>新版本{0}可用,現在更新嗎?</value>\n    <comment>0 is version number</comment>\n  </data>\n  <data name=\"MessageBoxes_UpdateAskToDownload_Details\" xml:space=\"preserve\">\n    <value>BCUninstaller將自動下載更新並在重新啟動後應用它。請注意，在此過程中你可能會丢失設定。\n\n更新日誌：\n- {0}\n\n警告:在更新過程中，BCU目錄中的資料夾\"update\"和檔案\"update.zip\"將被删除。</value>\n    <comment>0 is a list of changes separated by \"- \"</comment>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Title\" xml:space=\"preserve\">\n    <value>使用MSI移除</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Message\" xml:space=\"preserve\">\n    <value>無法使用MSIExec安裝程式移除所選項目</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallMsiGuidMissing_Details\" xml:space=\"preserve\">\n    <value>選中的移除程式沒有用於MSIExec的有效GUID。</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Title\" xml:space=\"preserve\">\n    <value>停止目前移除任務</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Message\" xml:space=\"preserve\">\n    <value>確定要停止目前正在執行的任務嗎？</value>\n  </data>\n  <data name=\"MessageBoxes_TaskStopConfirmation_Details\" xml:space=\"preserve\">\n    <value>提早停止任務不會還原任何變更。目前正在運行的移除任務不會停止，任務將等待其完成。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Create_restore_point\" xml:space=\"preserve\">\n    <value>建立還原點</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Message\" xml:space=\"preserve\">\n    <value>無法建立新的還原點</value>\n  </data>\n  <data name=\"Str64Bit\" xml:space=\"preserve\">\n    <value>x64</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"StrDebug\" xml:space=\"preserve\">\n    <value>偵錯</value>\n    <comment>keep space in front</comment>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Title\" xml:space=\"preserve\">\n    <value>移除進度</value>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Message\" xml:space=\"preserve\">\n    <value>你現在可以離開電腦</value>\n  </data>\n  <data name=\"MessageBoxes_CanWalkAwayInfo_Details\" xml:space=\"preserve\">\n    <value>其餘的移除程式應該能夠在沒有任何使用者干預的情況下完成，你仍應該不時檢查，以防其中一個移除程式當機。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Junk_Leftover_removal\" xml:space=\"preserve\">\n    <value>垃圾/剩餘檔案刪除</value>\n  </data>\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Message\" xml:space=\"preserve\">\n    <value>確定要修改低信任度項目？</value>\n  </data>\n  <data name=\"MessageBoxes_ConfirmLowConfidenceQuestion_Details\" xml:space=\"preserve\">\n    <value>刪除信任度標記為低於好的項目可能是非常危險的！建議確認每個項目都可以安全刪除。</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Title\" xml:space=\"preserve\">\n    <value>從註冊表刪除鍵</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Message\" xml:space=\"preserve\">\n    <value>確定要刪除選定的移除程式項目嗎？</value>\n  </data>\n  <data name=\"MessageBoxes_DeleteRegKeysConfirmation_Details\" xml:space=\"preserve\">\n    <value>下列項目將從註冊表中刪除，並將從移除程式表中消失，但不會移除。\n\n{0}</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Title\" xml:space=\"preserve\">\n    <value>匯出失敗</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Message\" xml:space=\"preserve\">\n    <value>儲存匯出的資料時遇到錯誤</value>\n  </data>\n  <data name=\"MessageBoxes_ExportFailed_Details\" xml:space=\"preserve\">\n    <value>如果錯誤仍然存在，請嘗試保存到其他目錄，例如桌面。</value>\n  </data>\n  <data name=\"MessageBoxes_GetSystemRestoreDescription\" xml:space=\"preserve\">\n    <value>BCUninstaller正在移除{0}個應用程式</value>\n    <comment>0 is the uninstaller count</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Rename_uninstaller\" xml:space=\"preserve\">\n    <value>重新命名移除程式</value>\n  </data>\n  <data name=\"MessageBoxes_InvalidNewEntryName_Message\" xml:space=\"preserve\">\n    <value>提供的名稱為空或包含無效符號</value>\n  </data>\n  <data name=\"MessageBoxes_InvalidNewEntryName_Details\" xml:space=\"preserve\">\n    <value>確認未包含以下任何符號：\n{0}</value>\n    <comment>0 is list of characters separated by spaces</comment>\n  </data>\n  <data name=\"MessageBoxes_LookForJunkQuestion_Message\" xml:space=\"preserve\">\n    <value>是否要尋找已執行移除的剩餘檔案內容？</value>\n  </data>\n  <data name=\"MessageBoxes_LookForJunkQuestion_Details\" xml:space=\"preserve\">\n    <value>請注意，此功能僅使適用於了解其工作原理的進階使用者。不需要刪除這些文件，它們不會以任何有意義的方式影響系統效能。</value>\n  </data>\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Message\" xml:space=\"preserve\">\n    <value>沒有找到剩餘檔案</value>\n  </data>\n  <data name=\"MessageBoxes_NoJunkFoundInfo_Details\" xml:space=\"preserve\">\n    <value>沒有發現剩餘檔案。可能還有一些檔案殘留，所以可以執行一個臨時資料清理程式，如BleachBit。</value>\n  </data>\n  <data name=\"MessageBoxes_NothingToCopy_Message\" xml:space=\"preserve\">\n    <value>沒有可複製到剪貼簿的內容。沒有選定的移除程式包含此訊息，或者你沒有選擇任何內容。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Copy_to_clipboard\" xml:space=\"preserve\">\n    <value>複製到剪貼簿</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_directories\" xml:space=\"preserve\">\n    <value>開啟目錄</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectoriesMessageBox_OpenMultiple\" xml:space=\"preserve\">\n    <value>此操作將立即開啟{0}個目錄，確定要繼續嗎？</value>\n    <comment>0 is number of directories to open\n</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Search_online\" xml:space=\"preserve\">\n    <value>線上尋找</value>\n  </data>\n  <data name=\"MessageBoxes_SearchOnlineMessageBox_NothingToSearchFor_Message\" xml:space=\"preserve\">\n    <value>沒有可尋找的</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Title\" xml:space=\"preserve\">\n    <value>移除BCUninstaller</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Message\" xml:space=\"preserve\">\n    <value>你確定要移除BCUninstaller嗎？</value>\n  </data>\n  <data name=\"MessageBoxes_SelfUninstallQuestion_Details\" xml:space=\"preserve\">\n    <value>很遺憾看到你離開！如果你有一兩分鐘的時間，請至我的網站上說明你為什麼移除BCU(http://klocmansoftware.weebly.com/)。我會盡力解決任何合理的問題。</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Message\" xml:space=\"preserve\">\n    <value>要在繼續之前建立還原點嗎？</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreBeginQuestion_Details\" xml:space=\"preserve\">\n    <value>如果你不確定要移除的應用程式對系統穩定性是否重要或必需，建議建立還原點。\n如果於此過程之後出現任何中斷，則可以使用系統還原回復更改。</value>\n  </data>\n  <data name=\"MessageBoxes_SearchOnlineError_Message\" xml:space=\"preserve\">\n    <value>開啟搜尋頁面時遇到錯誤</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Save_Uninstall_List\" xml:space=\"preserve\">\n    <value>儲存移除清單</value>\n  </data>\n  <data name=\"MessageBoxes_SaveUninstallListError_Message\" xml:space=\"preserve\">\n    <value>儲存清單到檔案失敗</value>\n  </data>\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Message\" xml:space=\"preserve\">\n    <value>確定要重置所有應用程式設定？</value>\n  </data>\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Message\" xml:space=\"preserve\">\n    <value>有些應用程式無法最小化移除</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Message\" xml:space=\"preserve\">\n    <value>某些項目受保護，無法修改</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemError_Message\" xml:space=\"preserve\">\n    <value>所選項目受保護，無法修改</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlError_Message\" xml:space=\"preserve\">\n    <value>開啟網址時遇到錯誤</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Message\" xml:space=\"preserve\">\n    <value>是否保存目前選擇？</value>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectoryError_Message\" xml:space=\"preserve\">\n    <value>開啟目錄時遇到錯誤</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListError_Message\" xml:space=\"preserve\">\n    <value>無法載入選中的檔案</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Message\" xml:space=\"preserve\">\n    <value>沒有選擇移除程式，沒有要移除的內容</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Title\" xml:space=\"preserve\">\n    <value>執行移除程式</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Message\" xml:space=\"preserve\">\n    <value>未找到.NET Framework V4.0，某些功能將禁用。</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Details\" xml:space=\"preserve\">\n    <value>V4.0Framework是可選擇的，但推薦。依賴Framework的功能將被禁止，直到你安裝它。</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Title\" xml:space=\"preserve\">\n    <value>部分應用程式失敗</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Header\" xml:space=\"preserve\">\n    <value>交互移除失敗後你想嘗試執行最小化移除嗎？</value>\n  </data>\n  <data name=\"MessageBoxes_AskToRetryFailedQuietAsLoud_Details\" xml:space=\"preserve\">\n    <value>以下移除程式將充新啟動為交互式：</value>\n  </data>\n  <data name=\"UninstallFromDirectory_ScanningTitle\" xml:space=\"preserve\">\n    <value>掃描特定目錄...</value>\n  </data>\n  <data name=\"UninstallFromDirectory_FolderBrowse\" xml:space=\"preserve\">\n    <value>選擇要刪除的應用程式目錄。</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectory_Title\" xml:space=\"preserve\">\n    <value>從目錄移除</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Message\" xml:space=\"preserve\">\n    <value>在指定的目錄中找不到任何應用程式</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryNothingFound_Details\" xml:space=\"preserve\">\n    <value>確定你選擇了正確的目錄，並且仍然存在應用程式的可執行文件。</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Message\" xml:space=\"preserve\">\n    <value>找到了{0}個移除程式</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallFromDirectoryUninstallerFound_Details\" xml:space=\"preserve\">\n    <value>你想執行這個移除程示嗎？</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Issuer\" xml:space=\"preserve\">\n    <value>Issuer</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Subject\" xml:space=\"preserve\">\n    <value>主題</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Archived\" xml:space=\"preserve\">\n    <value>壓縮</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Extensions\" xml:space=\"preserve\">\n    <value>擴充元件</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_FriendlyName\" xml:space=\"preserve\">\n    <value>好記的名稱</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_IssuerName\" xml:space=\"preserve\">\n    <value>Issuer名稱</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_NotAfter\" xml:space=\"preserve\">\n    <value>不晚於</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_NotBefore\" xml:space=\"preserve\">\n    <value>不早於</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_PrivateKey\" xml:space=\"preserve\">\n    <value>私有金鑰</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_HasPrivateKey\" xml:space=\"preserve\">\n    <value>有私有金鑰</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_PublicKey\" xml:space=\"preserve\">\n    <value>公開金鑰</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_RawData\" xml:space=\"preserve\">\n    <value>原始資料</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SerialNumber\" xml:space=\"preserve\">\n    <value>序號</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SubjectName\" xml:space=\"preserve\">\n    <value>主題名稱</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_SignatureAlgorithm\" xml:space=\"preserve\">\n    <value>簽名算法</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Version\" xml:space=\"preserve\">\n    <value>版本</value>\n  </data>\n  <data name=\"LocalizedX509Certificate2_Thumbprint\" xml:space=\"preserve\">\n    <value>憑證指紋</value>\n  </data>\n  <data name=\"Error_SaveSettingsFailed\" xml:space=\"preserve\">\n    <value>儲存設定失敗</value>\n  </data>\n  <data name=\"Progress_Finishing\" xml:space=\"preserve\">\n    <value>完成中...</value>\n  </data>\n  <data name=\"Progress_Finishing_Icons\" xml:space=\"preserve\">\n    <value>載入圖示</value>\n  </data>\n  <data name=\"TargetWindow_NoFilesSelected_Title\" xml:space=\"preserve\">\n    <value>尋找應用程式</value>\n  </data>\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Title\" xml:space=\"preserve\">\n    <value>尋找應用程式</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Title\" xml:space=\"preserve\">\n    <value>修改應用程式</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Message\" xml:space=\"preserve\">\n    <value>無法修改選中的應用程式</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Title\" xml:space=\"preserve\">\n    <value>儲存移除清單</value>\n  </data>\n  <data name=\"MessageBoxes_NoUninstallersSelectedInfo_Details\" xml:space=\"preserve\">\n    <value>要移除應用程式，必須先從列表中選擇它們。如果要使用複選框，請確保選中它們。</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUninstallListQuestion_Details\" xml:space=\"preserve\">\n    <value>如果選擇保留目前選擇，它們將與開啟的列表合併</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_OpenMultiple_Message\" xml:space=\"preserve\">\n    <value>此操作將一次打開{0}個網址，確定要繼續嗎？</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_urls\" xml:space=\"preserve\">\n    <value>開啟網址</value>\n  </data>\n  <data name=\"MessageBoxes_OpenUrlsMessageBox_No_URLs_to_open_Title\" xml:space=\"preserve\">\n    <value>沒有網址可開啟</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Modify_protected_items\" xml:space=\"preserve\">\n    <value>修改受保護項目</value>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemsWarningQuestion_Details\" xml:space=\"preserve\">\n    <value>受影響的項目：\n{0}\n\n要修改這些項目，你需要從設定側邊列中禁用移除程式保護。你可以從任務中刪除它們，如果需要可以繼續學則其他項目。</value>\n    <comment>0 names of protected uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_ProtectedItemError_Details\" xml:space=\"preserve\">\n    <value>受保護的項目：{0}\n\n要修改此項目，你需要從設定面板中禁用移除程式保護。</value>\n    <comment>0 name of protected uninstaller</comment>\n  </data>\n  <data name=\"MessageBoxes_QuietUninstallersNotAvailableQuestion_Details\" xml:space=\"preserve\">\n    <value>以下項目缺少最小化移除程式：\n{0}\n你是否想要為這些項目使用交互移除程式，或者從任務中刪除它們？</value>\n    <comment>0 is names of non-quiet uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_Title_Quiet_uninstall\" xml:space=\"preserve\">\n    <value>最小化移除</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Restore_default_settings\" xml:space=\"preserve\">\n    <value>還原預設設定</value>\n  </data>\n  <data name=\"MessageBoxes_ResetSettingsConfirmation_Details\" xml:space=\"preserve\">\n    <value>你的所有設定將永久遺失。BCUninstaller必須重新啟動以完成此操作。</value>\n  </data>\n  <data name=\"MessageBoxes_Title_Open_Uninstall_List\" xml:space=\"preserve\">\n    <value>開啟移除清單</value>\n  </data>\n  <data name=\"MessageBoxes_SysRestoreContinueAfterError_Details\" xml:space=\"preserve\">\n    <value>還原點未建立，你將無法還原變更！繼續移除嗎？</value>\n  </data>\n  <data name=\"MainWindow_Rename_Description\" xml:space=\"preserve\">\n    <value>重新命名\"0\"</value>\n  </data>\n  <data name=\"MainWindow_Rename_Title\" xml:space=\"preserve\">\n    <value>重新命名選中項目</value>\n  </data>\n  <data name=\"UninstallProgressWindow_TaskDone\" xml:space=\"preserve\">\n    <value>任務完成</value>\n    <comment>Shown on the status bar</comment>\n  </data>\n  <data name=\"UninstallProgressWindow_Uninstalling\" xml:space=\"preserve\">\n    <value>移除</value>\n    <comment>Shown on the status bar</comment>\n  </data>\n  <data name=\"MessageBoxes_RememberChoiceCheckbox\" xml:space=\"preserve\">\n    <value>記住選擇</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Error\" xml:space=\"preserve\">\n    <value>錯誤</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorDoesntExist\" xml:space=\"preserve\">\n    <value>檔案不存在。</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMsi\" xml:space=\"preserve\">\n    <value>無內容顯示。使用Windows Installer(MSIexec)移除此應用程式。</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Name\" xml:space=\"preserve\">\n    <value>名稱</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_Value\" xml:space=\"preserve\">\n    <value>值</value>\n  </data>\n  <data name=\"Empty\" xml:space=\"preserve\">\n    <value>空</value>\n  </data>\n  <data name=\"GuidFound\" xml:space=\"preserve\">\n    <value>找到GUID</value>\n  </data>\n  <data name=\"GuidMissing\" xml:space=\"preserve\">\n    <value>GUID遺失</value>\n  </data>\n  <data name=\"JunkRemove_SelectionBoxText\" xml:space=\"preserve\">\n    <value>選擇至...</value>\n  </data>\n  <data name=\"Error_FileNotFound\" xml:space=\"preserve\">\n    <value>檔案未找到。</value>\n  </data>\n  <data name=\"LoadingDialogTitlePostUninstallCommands\" xml:space=\"preserve\">\n    <value>執行移除後指令...</value>\n  </data>\n  <data name=\"LoadingDialogTitlePreUninstallCommands\" xml:space=\"preserve\">\n    <value>執行移除前指令</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_StatusReady\" xml:space=\"preserve\">\n    <value>準備</value>\n    <comment>Shows up when nothing else is displayed on the status bar.</comment>\n  </data>\n  <data name=\"MainWindow_Statusbar_StatusSelection\" xml:space=\"preserve\">\n    <value>已選取{0}個移除程式</value>\n    <comment>{0} is a number of selected uninstallers</comment>\n  </data>\n  <data name=\"MainWindow_Statusbar_Total\" xml:space=\"preserve\">\n    <value>共{0}移除程式，{1}</value>\n    <comment>{0} is a number of all uninstallers, {1} is a long file size (123 Megabytes)</comment>\n  </data>\n  <data name=\"MessageBoxes_ExternalCommandFailed_Message\" xml:space=\"preserve\">\n    <value>以下指令無法執行：\n{0}</value>\n    <comment>{0} is a command line (c:\\example.exe /help)</comment>\n  </data>\n  <data name=\"MessageBoxes_ExternalCommandFailed_Title\" xml:space=\"preserve\">\n    <value>外部執行失敗</value>\n  </data>\n  <data name=\"DefaultLanguage\" xml:space=\"preserve\">\n    <value>預設</value>\n    <comment>Used in language select box when you want to use the system language</comment>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Details\" xml:space=\"preserve\">\n    <value>在重新啟動應用程式之前，某些設定不會生效。</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Message\" xml:space=\"preserve\">\n    <value>重新啟動BCU以應用新設定？</value>\n  </data>\n  <data name=\"MessageBoxes_RestartNeededForSettingChangeQuestion_Title\" xml:space=\"preserve\">\n    <value>更改應用程式設定</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorNoCertificate\" xml:space=\"preserve\">\n    <value>證書遺失</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_ProcessingUninstallers\" xml:space=\"preserve\">\n    <value>正在處理檢測到的應用程式，剩下{0}個...</value>\n    <comment>{1} = how many application uninstallers still need to be processed</comment>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Details\" xml:space=\"preserve\">\n    <value>選擇\"中止\"將立即關閉執行的移除程式，並且可能導致移除不完全。通常可以再次執行移除程式以完成移除。\n\n或者，你可以略過等待此過程。略過將讓移除程式繼續工作，而任務移動到下一個項目。請記住，在略過的過程完成之前，一些移除程式無法執行。</value>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Message\" xml:space=\"preserve\">\n    <value>略過等待目前執行的移除程式？</value>\n  </data>\n  <data name=\"MessageBoxes_TaskSkip_Title\" xml:space=\"preserve\">\n    <value>跳過目前執行任務</value>\n  </data>\n  <data name=\"MessageBoxes_UninstallAlreadyRunning_Message\" xml:space=\"preserve\">\n    <value>另一個移除任務已在執行。請等待它完成，然後再試一次。</value>\n  </data>\n  <data name=\"JunkRemove_Details_Message\" xml:space=\"preserve\">\n    <value>評分：{0}\n\n積極：\n{1}\n\n消極：\n{2}</value>\n    <comment>{0} - Rating as a string\n{1} - List of strings of positive parts of the rating\n{2} - List of strings of negative parts of the rating\nThe lists are separated by a single newline.</comment>\n  </data>\n  <data name=\"JunkRemove_Details_Title\" xml:space=\"preserve\">\n    <value>評分詳細訊息</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMissingRegistry\" xml:space=\"preserve\">\n    <value>此應用程式沒有有效的註冊表項目</value>\n  </data>\n  <data name=\"PropertiesWindow_Table_ErrorMissingUninstaller\" xml:space=\"preserve\">\n    <value>此應用程式沒有有效的移除程式</value>\n  </data>\n  <data name=\"LoadingDialogTitleLoadingWindowsFeatures\" xml:space=\"preserve\">\n    <value>載入Windows功能...</value>\n  </data>\n  <data name=\"MainWindow_Statusbar_RefreshingStartup\" xml:space=\"preserve\">\n    <value>重整開機啟動項資訊</value>\n    <comment>Shown when refreshing autostart information of the uninstallers</comment>\n  </data>\n  <data name=\"MessageBoxes_OpenDirectories_NoDirsToOpen\" xml:space=\"preserve\">\n    <value>沒有目錄可以開啟</value>\n  </data>\n  <data name=\"NotAvailable\" xml:space=\"preserve\">\n    <value>不可用</value>\n    <comment>Used on application list when value is not available</comment>\n  </data>\n  <data name=\"MessageBoxes_RatingErrorTitle\" xml:space=\"preserve\">\n    <value>評分不可用</value>\n  </data>\n  <data name=\"MessageBoxes_RatingsDisabled_Message\" xml:space=\"preserve\">\n    <value>你必須先從設定啟用評分</value>\n  </data>\n  <data name=\"MessageBoxes_RatingUnavailable_Message\" xml:space=\"preserve\">\n    <value>你不能給未正確安裝的應用程式評分</value>\n  </data>\n  <data name=\"RateTitle_Counted\" xml:space=\"preserve\">\n    <value>{0}應用程式</value>\n    <comment>{0} is number of apps to rate, \"Rate \" will be automatically put in front of this string</comment>\n  </data>\n  <data name=\"RatingEntry_ToString\" xml:space=\"preserve\">\n    <value>平均評分:{0};我的評分:{1}</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Message\" xml:space=\"preserve\">\n    <value>在移除程式執行失敗後，可能是因為衝突。請等待其他移除程式完成後再試一次。\n{0}\n\n你可以嘗試在設定中禁用衝突檢測，但不建議使用。</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Title\" xml:space=\"preserve\">\n    <value>強制移除</value>\n  </data>\n  <data name=\"MessageBoxes_ForceRunUninstallFailedError_Header\" xml:space=\"preserve\">\n    <value>部分移除程式無法執行</value>\n  </data>\n  <data name=\"MessageBoxes_Net4Missing_Title\" xml:space=\"preserve\">\n    <value>未找到.NET Framework V4.0</value>\n  </data>\n  <data name=\"TargetWindow_NoFilesSelected_Message\" xml:space=\"preserve\">\n    <value>未選擇有效的檔案或目錄。確定你有權限訪問它們，並且它們沒有被標記為系統檔案。</value>\n  </data>\n  <data name=\"Uninstaller_GetApplicationsFromDirectories_NothingFound_Message\" xml:space=\"preserve\">\n    <value>在{0}內找不到任何應用程式</value>\n  </data>\n  <data name=\"MessageBoxes_ModifyCommandMissing_Details\" xml:space=\"preserve\">\n    <value>所選應用程式未指定修改指令。可能需要移除，然後重新安裝來更改安裝設定。</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Message\" xml:space=\"preserve\">\n    <value>儲存變更到開啟的移除列表？</value>\n  </data>\n  <data name=\"MessageBoxes_AskToSaveUninstallList_Details\" xml:space=\"preserve\">\n    <value>開啟的移除列表中有未儲存的變更，關閉該列表將遺失這些變更。</value>\n  </data>\n  <data name=\"FileTargeter_SelectDirectoryWithAppsToRemove\" xml:space=\"preserve\">\n    <value>選擇要移除的應用程式目錄。</value>\n  </data>\n  <data name=\"JunkRemoveWindow_SelectBackupDirectoryTitle\" xml:space=\"preserve\">\n    <value>選擇儲存備份的位置。將建立一個新目錄。</value>\n  </data>\n  <data name=\"NewsPopup_UpdatedTitle\" xml:space=\"preserve\">\n    <value>BCU已更新到v{0}！</value>\n  </data>\n  <data name=\"NewsPopup_FirstStartTitle\" xml:space=\"preserve\">\n    <value>歡迎使用BCU版本{0}！</value>\n  </data>\n  <data name=\"UninstallProgressWindow_StatusPuttingToSleepInSeconds\" xml:space=\"preserve\">\n    <value>PC{0}秒後進入睡眠狀態。取消選擇睡眠複選框來取消。</value>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_DoNothing\" xml:space=\"preserve\">\n    <value>不進行任何動作</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_Properties\" xml:space=\"preserve\">\n    <value>開啟詳細內容</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n  <data name=\"UninstallerListDoubleClickAction_Uninstall\" xml:space=\"preserve\">\n    <value>解除安裝</value>\n    <comment>Option for \"Double clicking in application list...\"</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace BulkCrapUninstaller.Properties {\r\n    using System;\r\n    \r\n    \r\n    /// <summary>\r\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\r\n    /// </summary>\r\n    // This class was auto-generated by the StronglyTypedResourceBuilder\r\n    // class via a tool like ResGen or Visual Studio.\r\n    // To add or remove a member, edit your .ResX file then rerun ResGen\r\n    // with the /str option, or rebuild your VS project.\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\r\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    internal class Resources {\r\n        \r\n        private static global::System.Resources.ResourceManager resourceMan;\r\n        \r\n        private static global::System.Globalization.CultureInfo resourceCulture;\r\n        \r\n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\r\n        internal Resources() {\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Returns the cached ResourceManager instance used by this class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Resources.ResourceManager ResourceManager {\r\n            get {\r\n                if (object.ReferenceEquals(resourceMan, null)) {\r\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"BulkCrapUninstaller.Properties.Resources\", typeof(Resources).Assembly);\r\n                    resourceMan = temp;\r\n                }\r\n                return resourceMan;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Overrides the current thread's CurrentUICulture property for all\r\n        ///   resource lookups using this strongly typed resource class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Globalization.CultureInfo Culture {\r\n            get {\r\n                return resourceCulture;\r\n            }\r\n            set {\r\n                resourceCulture = value;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap _bcu_logo {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"_bcu_logo\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap add {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"add\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap add_multiple {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"add.multiple\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap bigImage {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"bigImage\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap centerline {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"centerline\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap check {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"check\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap checkmark {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"checkmark\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap checkmarkpencil {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"checkmarkpencil\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap checkmarkuncrossed {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"checkmarkuncrossed\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap clean {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"clean\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to https://github.com/Klocman/Bulk-Crap-Uninstaller/discussions.\r\n        /// </summary>\r\n        internal static string ContactUrl {\r\n            get {\r\n                return ResourceManager.GetString(\"ContactUrl\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap control_fastforward {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"control.fastforward\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap control_fastforward_variant {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"control.fastforward.variant\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Default.bcul.\r\n        /// </summary>\r\n        internal static string DefaultUninstallListFilename {\r\n            get {\r\n                return ResourceManager.GetString(\"DefaultUninstallListFilename\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap delete {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"delete\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap diagram {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"diagram\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap donate_button {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"donate_button\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to http://klocmansoftware.weebly.com/donate.html.\r\n        /// </summary>\r\n        internal static string DonateLink {\r\n            get {\r\n                return ResourceManager.GetString(\"DonateLink\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap edit_box {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"edit.box\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap filter {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"filter\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap folderopen {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"folderopen\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap fullscreen {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"fullscreen\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to https://github.com/Klocman/Bulk-Crap-Uninstaller/issues.\r\n        /// </summary>\r\n        internal static string GithubIssuesLink {\r\n            get {\r\n                return ResourceManager.GetString(\"GithubIssuesLink\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to https://github.com/Klocman/Bulk-Crap-Uninstaller.\r\n        /// </summary>\r\n        internal static string GithubLink {\r\n            get {\r\n                return ResourceManager.GetString(\"GithubLink\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to https://github.com/Klocman/Bulk-Crap-Uninstaller/issues/new.\r\n        /// </summary>\r\n        internal static string GithubNewIssueLink {\r\n            get {\r\n                return ResourceManager.GetString(\"GithubNewIssueLink\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to https://github.com/Klocman/Bulk-Crap-Uninstaller/releases.\r\n        /// </summary>\r\n        internal static string GithubReleasesLink {\r\n            get {\r\n                return ResourceManager.GetString(\"GithubReleasesLink\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to BCU_manual.html.\r\n        /// </summary>\r\n        internal static string HelpFilename {\r\n            get {\r\n                return ResourceManager.GetString(\"HelpFilename\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to https://www.bcuninstaller.com/.\r\n        /// </summary>\r\n        internal static string HomepageUrl {\r\n            get {\r\n                return ResourceManager.GetString(\"HomepageUrl\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Icon similar to (Icon).\r\n        /// </summary>\r\n        internal static System.Drawing.Icon Icon_Logo {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"Icon_Logo\", resourceCulture);\r\n                return ((System.Drawing.Icon)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap information {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"information\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap information_circle {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"information_circle\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap layer {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"layer\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap layer_add {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"layer.add\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap layer1 {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"layer1\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap layerdelete {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"layerdelete\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap layerdown {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"layerdown\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Licence.txt.\r\n        /// </summary>\r\n        internal static string LicenceFilename {\r\n            get {\r\n                return ResourceManager.GetString(\"LicenceFilename\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap list {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"list\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap list_reorder {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"list.reorder\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap magnify {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"magnify\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap magnifybrowse {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"magnifybrowse\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap magnifyforward {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"magnifyforward\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap message {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"message\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap moon_full {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"moon_full\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap oswindows8 {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"oswindows8\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap pagecopy {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"pagecopy\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to PrivacyPolicy.txt.\r\n        /// </summary>\r\n        internal static string PrivacyPolicyFilename {\r\n            get {\r\n                return ResourceManager.GetString(\"PrivacyPolicyFilename\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap properties {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"properties\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap rating1 {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"rating1\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap rating3 {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"rating3\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap rating4 {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"rating4\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap rating5 {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"rating5\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap refresh {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"refresh\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to https://dappcdn.com/download/utilities/bulk-crap-uninstaller.\r\n        /// </summary>\r\n        internal static string ReviewLink {\r\n            get {\r\n                return ResourceManager.GetString(\"ReviewLink\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap save {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"save\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap settings {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"settings\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap star {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"star\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap stop {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"stop\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to https://github.com/Klocman/Bulk-Crap-Uninstaller/discussions.\r\n        /// </summary>\r\n        internal static string SubmitFeedbackLink {\r\n            get {\r\n                return ResourceManager.GetString(\"SubmitFeedbackLink\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap table_add {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"table.add\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap target {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"target\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap timer {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"timer\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to https://github.com/Klocman/Bulk-Crap-Uninstaller/blob/master/CONTRIBUTING.md.\r\n        /// </summary>\r\n        internal static string TranslateLink {\r\n            get {\r\n                return ResourceManager.GetString(\"TranslateLink\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to https://twitter.com/intent/tweet?text=Check+out+this+cool+uninstaller+that+I+found!+sourceforge.net/projects/bulk-crap-uninstaller/.\r\n        /// </summary>\r\n        internal static string TwitterLink {\r\n            get {\r\n                return ResourceManager.GetString(\"TwitterLink\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap warning {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"warning\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap weather_sun_set {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"weather.sun.set\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"GithubReleasesLink\" xml:space=\"preserve\">\r\n    <value>https://github.com/Klocman/Bulk-Crap-Uninstaller/releases</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"layer\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\layer.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"DefaultUninstallListFilename\" xml:space=\"preserve\">\r\n    <value>Default.bcul</value>\r\n  </data>\r\n  <data name=\"add\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"Icon_Logo\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\logo.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"layer1\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\layer.delete1.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"save\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"table.add\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\table.add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"fullscreen\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\fullscreen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"oswindows8\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\os.windows.8.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"rating4\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\rating4.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"magnifybrowse\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\magnify.browse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"settings\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\settings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"checkmark\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\checkmark.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"TwitterLink\" xml:space=\"preserve\">\r\n    <value>https://twitter.com/intent/tweet?text=Check+out+this+cool+uninstaller+that+I+found!+sourceforge.net/projects/bulk-crap-uninstaller/</value>\r\n  </data>\r\n  <data name=\"diagram\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\diagram.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"LicenceFilename\" xml:space=\"preserve\">\r\n    <value>Licence.txt</value>\r\n  </data>\r\n  <data name=\"refresh\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"GithubIssuesLink\" xml:space=\"preserve\">\r\n    <value>https://github.com/Klocman/Bulk-Crap-Uninstaller/issues</value>\r\n  </data>\r\n  <data name=\"information_circle\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\information.circle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"layerdown\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\layer.down.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"GithubNewIssueLink\" xml:space=\"preserve\">\r\n    <value>https://github.com/Klocman/Bulk-Crap-Uninstaller/issues/new</value>\r\n  </data>\r\n  <data name=\"information\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\information.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"rating3\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\rating3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"_bcu_logo\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"moon_full\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\moon.full.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"magnify\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\magnify.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"DonateLink\" xml:space=\"preserve\">\r\n    <value>http://klocmansoftware.weebly.com/donate.html</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"properties\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO\r\n        vAAADrwBlbxySQAAAwFJREFUaEPdlz9rFFEUxbP/WFwLbVwLP4CFaGEh6DewsNMina1fwl4FO6sUgnYp\r\n        BCvbSeEnEBEkiKCQYGMKEXGD47nLXrl757gz71/c9cKP3ZzcOfedbN7Om62qqv4LqLiJUHEToeImQkUF\r\n        VRdkbzwen2ZzY6Ci4gaXIFsYKipuaCmyhKGi4gaWJDkMFRU3rGY9XfFehKQwVFTcoNxBXhItOgwVFTck\r\n        a5DJZDLGa7YwVFTcgKxBRMsZhoqKM88eRMgVhoqKMy4SRMgRhoqKMy0WREgNQ0XFGRYNIqSEoaLizIoH\r\n        EVaFYf0KFRVnlDVIDMxXoaISYtSG94qB+SpUVEKM2vBeMTBfhYpKiFEb3isG5qtQUQkxKkHIfCoqIUYl\r\n        CJlPRSXEqAQh86mohBiVAPW663wqKtakzSgUufH1er3b8H0O3oOv4Dv4CF6Be/j9WXkFR2D9gqBugQ/q\r\n        u4JDhLk7HA7P4/0u81KoqBjDOawnhOl0OoDPA/DL+nZgB4GGzFOhouLMkoOgHlu/QJ4wT4WKijNKCoLa\r\n        tl4LjsEzcF32w2w2O4X3l8Ej8A34/m3mLVBRcSbRQeQIjus/O78DcIP1CygJJBvfXnP4t+N8Q7A4k+gg\r\n        smGd13Fd19dYrwU9V9C79MmIF+ttCBZrILCeLqB2rQ94yvoYKL+v6LdXQ7A4g5Qgn6yP/KVZH2Pxqdh1\r\n        vGV9DcHiDFKC/Ij1QZBz9lrwhfU1BIszSAkS7TMajc64649YX0OwOIN1+dfaZ30NweIMUoL4zb7D+hgo\r\n        v9lf0D4mKs4gJcgd6wM6ff2i5F6yPl+/ck7C9fvO7wBhrrJ+AbV+N8TBYHAB1/sgwp8jiixQjvb9fv8S\r\n        fl6/I8oihDxvLHlFkO/QGMjDjCHyHuMDaAshB8g3TmPMH6zY2jxUVJxpV1pDYB9cXDxk3QTyqPsOyJ74\r\n        CSTk/FFXboZsXQwqKii2kFV0CsFmpULFWP5VCIGKsaD2zMJPLIRAxVhQS6fcBcVDCFSMBXXfBDixEFVV\r\n        bf0GeDTIxb8Pvs8AAAAASUVORK5CYII=\r\n</value>\r\n  </data>\r\n  <data name=\"layer.add\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\layer.add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"timer\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\timer.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"star\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\star.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"target\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\target.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"list\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\list.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"add.multiple\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\add.multiple.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"centerline\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\centerline.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"SubmitFeedbackLink\" xml:space=\"preserve\">\r\n    <value>https://github.com/Klocman/Bulk-Crap-Uninstaller/discussions</value>\r\n  </data>\r\n  <data name=\"stop\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"HelpFilename\" xml:space=\"preserve\">\r\n    <value>BCU_manual.html</value>\r\n  </data>\r\n  <data name=\"pagecopy\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\page.copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"bigImage\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\bigImage.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"PrivacyPolicyFilename\" xml:space=\"preserve\">\r\n    <value>PrivacyPolicy.txt</value>\r\n  </data>\r\n  <data name=\"list.reorder\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\list.reorder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"checkmarkuncrossed\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\checkmark.uncrossed.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"layerdelete\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\layer.delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"delete\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"message\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\message.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"control.fastforward.variant\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\control.fastforward.variant.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"magnifyforward\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\magnify.forward.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"weather.sun.set\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\weather.sun.set.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"warning\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\warning.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"rating1\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\rating1.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"donate_button\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\donate_button.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"ContactUrl\" xml:space=\"preserve\">\r\n    <value>https://github.com/Klocman/Bulk-Crap-Uninstaller/discussions</value>\r\n  </data>\r\n  <data name=\"clean\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\clean.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"rating5\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\rating5.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"ReviewLink\" xml:space=\"preserve\">\r\n    <value>https://dappcdn.com/download/utilities/bulk-crap-uninstaller</value>\r\n  </data>\r\n  <data name=\"folderopen\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\folder.open.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"edit.box\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\edit.box.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"HomepageUrl\" xml:space=\"preserve\">\r\n    <value>https://www.bcuninstaller.com/</value>\r\n  </data>\r\n  <data name=\"GithubLink\" xml:space=\"preserve\">\r\n    <value>https://github.com/Klocman/Bulk-Crap-Uninstaller</value>\r\n  </data>\r\n  <data name=\"control.fastforward\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\control.fastforward.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"checkmarkpencil\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\checkmark.pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"filter\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\filter.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"check\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"TranslateLink\" xml:space=\"preserve\">\r\n    <value>https://github.com/Klocman/Bulk-Crap-Uninstaller/blob/master/CONTRIBUTING.md</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Settings.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace BulkCrapUninstaller.Properties {\r\n    \r\n    \r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator\", \"17.14.0.0\")]\r\n    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {\r\n        \r\n        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));\r\n        \r\n        public static Settings Default {\r\n            get {\r\n                return defaultInstance;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool UninstallerListUseCheckboxes {\r\n            get {\r\n                return ((bool)(this[\"UninstallerListUseCheckboxes\"]));\r\n            }\r\n            set {\r\n                this[\"UninstallerListUseCheckboxes\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool UninstallerListUseGroups {\r\n            get {\r\n                return ((bool)(this[\"UninstallerListUseGroups\"]));\r\n            }\r\n            set {\r\n                this[\"UninstallerListUseGroups\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool FilterHideMicrosoft {\r\n            get {\r\n                return ((bool)(this[\"FilterHideMicrosoft\"]));\r\n            }\r\n            set {\r\n                this[\"FilterHideMicrosoft\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool AdvancedDisableProtection {\r\n            get {\r\n                return ((bool)(this[\"AdvancedDisableProtection\"]));\r\n            }\r\n            set {\r\n                this[\"AdvancedDisableProtection\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"0, 0\")]\r\n        public global::System.Drawing.Point WindowPosition {\r\n            get {\r\n                return ((global::System.Drawing.Point)(this[\"WindowPosition\"]));\r\n            }\r\n            set {\r\n                this[\"WindowPosition\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"0, 0\")]\r\n        public global::System.Drawing.Size WindowSize {\r\n            get {\r\n                return ((global::System.Drawing.Size)(this[\"WindowSize\"]));\r\n            }\r\n            set {\r\n                this[\"WindowSize\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool MiscFirstRun {\r\n            get {\r\n                return ((bool)(this[\"MiscFirstRun\"]));\r\n            }\r\n            set {\r\n                this[\"MiscFirstRun\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool AdvancedIntelligentUninstallerSorting {\r\n            get {\r\n                return ((bool)(this[\"AdvancedIntelligentUninstallerSorting\"]));\r\n            }\r\n            set {\r\n                this[\"AdvancedIntelligentUninstallerSorting\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"Normal\")]\r\n        public global::System.Windows.Forms.FormWindowState WindowState {\r\n            get {\r\n                return ((global::System.Windows.Forms.FormWindowState)(this[\"WindowState\"]));\r\n            }\r\n            set {\r\n                this[\"WindowState\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public string UninstallerListViewState {\r\n            get {\r\n                return ((string)(this[\"UninstallerListViewState\"]));\r\n            }\r\n            set {\r\n                this[\"UninstallerListViewState\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ToolbarsShowToolbar {\r\n            get {\r\n                return ((bool)(this[\"ToolbarsShowToolbar\"]));\r\n            }\r\n            set {\r\n                this[\"ToolbarsShowToolbar\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ToolbarsShowSettings {\r\n            get {\r\n                return ((bool)(this[\"ToolbarsShowSettings\"]));\r\n            }\r\n            set {\r\n                this[\"ToolbarsShowSettings\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool FilterShowSystemComponents {\r\n            get {\r\n                return ((bool)(this[\"FilterShowSystemComponents\"]));\r\n            }\r\n            set {\r\n                this[\"FilterShowSystemComponents\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool WindowUseSystemTheme {\r\n            get {\r\n                return ((bool)(this[\"WindowUseSystemTheme\"]));\r\n            }\r\n            set {\r\n                this[\"WindowUseSystemTheme\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool FilterShowProtected {\r\n            get {\r\n                return ((bool)(this[\"FilterShowProtected\"]));\r\n            }\r\n            set {\r\n                this[\"FilterShowProtected\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool FilterShowUpdates {\r\n            get {\r\n                return ((bool)(this[\"FilterShowUpdates\"]));\r\n            }\r\n            set {\r\n                this[\"FilterShowUpdates\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"Ask\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public global::Klocman.YesNoAsk MessagesRestorePoints {\r\n            get {\r\n                return ((global::Klocman.YesNoAsk)(this[\"MessagesRestorePoints\"]));\r\n            }\r\n            set {\r\n                this[\"MessagesRestorePoints\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool AdvancedSimulate {\r\n            get {\r\n                return ((bool)(this[\"AdvancedSimulate\"]));\r\n            }\r\n            set {\r\n                this[\"AdvancedSimulate\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public string MiscVersion {\r\n            get {\r\n                return ((string)(this[\"MiscVersion\"]));\r\n            }\r\n            set {\r\n                this[\"MiscVersion\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool Debug {\r\n            get {\r\n                return ((bool)(this[\"Debug\"]));\r\n            }\r\n            set {\r\n                this[\"Debug\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"Ask\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public global::Klocman.YesNoAsk MessagesRemoveJunk {\r\n            get {\r\n                return ((global::Klocman.YesNoAsk)(this[\"MessagesRemoveJunk\"]));\r\n            }\r\n            set {\r\n                this[\"MessagesRemoveJunk\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool MiscCheckForUpdates {\r\n            get {\r\n                return ((bool)(this[\"MiscCheckForUpdates\"]));\r\n            }\r\n            set {\r\n                this[\"MiscCheckForUpdates\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"Ask\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public global::Klocman.YesNoAsk BackupLeftovers {\r\n            get {\r\n                return ((global::Klocman.YesNoAsk)(this[\"BackupLeftovers\"]));\r\n            }\r\n            set {\r\n                this[\"BackupLeftovers\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool MessagesAskRemoveLoudItems {\r\n            get {\r\n                return ((bool)(this[\"MessagesAskRemoveLoudItems\"]));\r\n            }\r\n            set {\r\n                this[\"MessagesAskRemoveLoudItems\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool MiscFeedbackNagShown {\r\n            get {\r\n                return ((bool)(this[\"MiscFeedbackNagShown\"]));\r\n            }\r\n            set {\r\n                this[\"MiscFeedbackNagShown\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool MiscSendStatistics {\r\n            get {\r\n                return ((bool)(this[\"MiscSendStatistics\"]));\r\n            }\r\n            set {\r\n                this[\"MiscSendStatistics\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public string ExternalPreCommands {\r\n            get {\r\n                return ((string)(this[\"ExternalPreCommands\"]));\r\n            }\r\n            set {\r\n                this[\"ExternalPreCommands\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"../BleachBit/bleachbit_console.exe --clean system.tmp system.logs system.memory_d\" +\r\n            \"ump system.muicache system.prefetch system.recycle_bin\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public string ExternalPostCommands {\r\n            get {\r\n                return ((string)(this[\"ExternalPostCommands\"]));\r\n            }\r\n            set {\r\n                this[\"ExternalPostCommands\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ToolbarsShowStatusbar {\r\n            get {\r\n                return ((bool)(this[\"ToolbarsShowStatusbar\"]));\r\n            }\r\n            set {\r\n                this[\"ToolbarsShowStatusbar\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ExternalEnable {\r\n            get {\r\n                return ((bool)(this[\"ExternalEnable\"]));\r\n            }\r\n            set {\r\n                this[\"ExternalEnable\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public string Language {\r\n            get {\r\n                return ((string)(this[\"Language\"]));\r\n            }\r\n            set {\r\n                this[\"Language\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"0\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public ulong MiscUserId {\r\n            get {\r\n                return ((ulong)(this[\"MiscUserId\"]));\r\n            }\r\n            set {\r\n                this[\"MiscUserId\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool AdvancedTestCertificates {\r\n            get {\r\n                return ((bool)(this[\"AdvancedTestCertificates\"]));\r\n            }\r\n            set {\r\n                this[\"AdvancedTestCertificates\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool AdvancedTestInvalid {\r\n            get {\r\n                return ((bool)(this[\"AdvancedTestInvalid\"]));\r\n            }\r\n            set {\r\n                this[\"AdvancedTestInvalid\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool AdvancedDisplayOrphans {\r\n            get {\r\n                return ((bool)(this[\"AdvancedDisplayOrphans\"]));\r\n            }\r\n            set {\r\n                this[\"AdvancedDisplayOrphans\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"None\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public global::System.Windows.Forms.SortOrder UninstallerListSortOrder {\r\n            get {\r\n                return ((global::System.Windows.Forms.SortOrder)(this[\"UninstallerListSortOrder\"]));\r\n            }\r\n            set {\r\n                this[\"UninstallerListSortOrder\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"0\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public int UninstallerListSortColumn {\r\n            get {\r\n                return ((int)(this[\"UninstallerListSortColumn\"]));\r\n            }\r\n            set {\r\n                this[\"UninstallerListSortColumn\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool UninstallerListShowLegend {\r\n            get {\r\n                return ((bool)(this[\"UninstallerListShowLegend\"]));\r\n            }\r\n            set {\r\n                this[\"UninstallerListShowLegend\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public string FoldersCustomProgramDirs {\r\n            get {\r\n                return ((string)(this[\"FoldersCustomProgramDirs\"]));\r\n            }\r\n            set {\r\n                this[\"FoldersCustomProgramDirs\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool MiscAutoLoadDefaultList {\r\n            get {\r\n                return ((bool)(this[\"MiscAutoLoadDefaultList\"]));\r\n            }\r\n            set {\r\n                this[\"MiscAutoLoadDefaultList\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool MiscUserRatings {\r\n            get {\r\n                return ((bool)(this[\"MiscUserRatings\"]));\r\n            }\r\n            set {\r\n                this[\"MiscUserRatings\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"1990-01-01\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public global::System.DateTime MiscRatingCacheDate {\r\n            get {\r\n                return ((global::System.DateTime)(this[\"MiscRatingCacheDate\"]));\r\n            }\r\n            set {\r\n                this[\"MiscRatingCacheDate\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"10.00:00:00\")]\r\n        public global::System.TimeSpan _CacheUpdateRate {\r\n            get {\r\n                return ((global::System.TimeSpan)(this[\"_CacheUpdateRate\"]));\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool UninstallPreventShutdown {\r\n            get {\r\n                return ((bool)(this[\"UninstallPreventShutdown\"]));\r\n            }\r\n            set {\r\n                this[\"UninstallPreventShutdown\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool UninstallConcurrency {\r\n            get {\r\n                return ((bool)(this[\"UninstallConcurrency\"]));\r\n            }\r\n            set {\r\n                this[\"UninstallConcurrency\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"2\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public int UninstallConcurrentMaxCount {\r\n            get {\r\n                return ((int)(this[\"UninstallConcurrentMaxCount\"]));\r\n            }\r\n            set {\r\n                this[\"UninstallConcurrentMaxCount\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool UninstallConcurrentOneLoud {\r\n            get {\r\n                return ((bool)(this[\"UninstallConcurrentOneLoud\"]));\r\n            }\r\n            set {\r\n                this[\"UninstallConcurrentOneLoud\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool UninstallConcurrentDisableManualCollisionProtection {\r\n            get {\r\n                return ((bool)(this[\"UninstallConcurrentDisableManualCollisionProtection\"]));\r\n            }\r\n            set {\r\n                this[\"UninstallConcurrentDisableManualCollisionProtection\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool FilterShowStoreApps {\r\n            get {\r\n                return ((bool)(this[\"FilterShowStoreApps\"]));\r\n            }\r\n            set {\r\n                this[\"FilterShowStoreApps\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool QuietRetryFailedOnce {\r\n            get {\r\n                return ((bool)(this[\"QuietRetryFailedOnce\"]));\r\n            }\r\n            set {\r\n                this[\"QuietRetryFailedOnce\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool QuietAutoKillStuck {\r\n            get {\r\n                return ((bool)(this[\"QuietAutoKillStuck\"]));\r\n            }\r\n            set {\r\n                this[\"QuietAutoKillStuck\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool QuietAutomatization {\r\n            get {\r\n                return ((bool)(this[\"QuietAutomatization\"]));\r\n            }\r\n            set {\r\n                this[\"QuietAutomatization\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool QuietAutomatizationKillStuck {\r\n            get {\r\n                return ((bool)(this[\"QuietAutomatizationKillStuck\"]));\r\n            }\r\n            set {\r\n                this[\"QuietAutomatizationKillStuck\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool FilterShowWinFeatures {\r\n            get {\r\n                return ((bool)(this[\"FilterShowWinFeatures\"]));\r\n            }\r\n            set {\r\n                this[\"FilterShowWinFeatures\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool MessagesShowAllBadJunk {\r\n            get {\r\n                return ((bool)(this[\"MessagesShowAllBadJunk\"]));\r\n            }\r\n            set {\r\n                this[\"MessagesShowAllBadJunk\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool MiscFeedbackNagNeverShow {\r\n            get {\r\n                return ((bool)(this[\"MiscFeedbackNagNeverShow\"]));\r\n            }\r\n            set {\r\n                this[\"MiscFeedbackNagNeverShow\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ScanWinUpdates {\r\n            get {\r\n                return ((bool)(this[\"ScanWinUpdates\"]));\r\n            }\r\n            set {\r\n                this[\"ScanWinUpdates\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ScanWinFeatures {\r\n            get {\r\n                return ((bool)(this[\"ScanWinFeatures\"]));\r\n            }\r\n            set {\r\n                this[\"ScanWinFeatures\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ScanSteam {\r\n            get {\r\n                return ((bool)(this[\"ScanSteam\"]));\r\n            }\r\n            set {\r\n                this[\"ScanSteam\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ScanStoreApps {\r\n            get {\r\n                return ((bool)(this[\"ScanStoreApps\"]));\r\n            }\r\n            set {\r\n                this[\"ScanStoreApps\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool FoldersAutoDetect {\r\n            get {\r\n                return ((bool)(this[\"FoldersAutoDetect\"]));\r\n            }\r\n            set {\r\n                this[\"FoldersAutoDetect\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ScanDrives {\r\n            get {\r\n                return ((bool)(this[\"ScanDrives\"]));\r\n            }\r\n            set {\r\n                this[\"ScanDrives\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ScanRegistry {\r\n            get {\r\n                return ((bool)(this[\"ScanRegistry\"]));\r\n            }\r\n            set {\r\n                this[\"ScanRegistry\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ScanPreDefined {\r\n            get {\r\n                return ((bool)(this[\"ScanPreDefined\"]));\r\n            }\r\n            set {\r\n                this[\"ScanPreDefined\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"\")]\r\n        public string BackupLeftoversDirectory {\r\n            get {\r\n                return ((string)(this[\"BackupLeftoversDirectory\"]));\r\n            }\r\n            set {\r\n                this[\"BackupLeftoversDirectory\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ShowTreeMap {\r\n            get {\r\n                return ((bool)(this[\"ShowTreeMap\"]));\r\n            }\r\n            set {\r\n                this[\"ShowTreeMap\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool CacheCertificates {\r\n            get {\r\n                return ((bool)(this[\"CacheCertificates\"]));\r\n            }\r\n            set {\r\n                this[\"CacheCertificates\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool CacheAppInfo {\r\n            get {\r\n                return ((bool)(this[\"CacheAppInfo\"]));\r\n            }\r\n            set {\r\n                this[\"CacheAppInfo\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ScanChocolatey {\r\n            get {\r\n                return ((bool)(this[\"ScanChocolatey\"]));\r\n            }\r\n            set {\r\n                this[\"ScanChocolatey\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool QuietUseDaemon {\r\n            get {\r\n                return ((bool)(this[\"QuietUseDaemon\"]));\r\n            }\r\n            set {\r\n                this[\"QuietUseDaemon\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ScanOculus {\r\n            get {\r\n                return ((bool)(this[\"ScanOculus\"]));\r\n            }\r\n            set {\r\n                this[\"ScanOculus\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool AdvancedHighlightSpecial {\r\n            get {\r\n                return ((bool)(this[\"AdvancedHighlightSpecial\"]));\r\n            }\r\n            set {\r\n                this[\"AdvancedHighlightSpecial\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool FoldersScanRemovable {\r\n            get {\r\n                return ((bool)(this[\"FoldersScanRemovable\"]));\r\n            }\r\n            set {\r\n                this[\"FoldersScanRemovable\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool FilterShowTweaks {\r\n            get {\r\n                return ((bool)(this[\"FilterShowTweaks\"]));\r\n            }\r\n            set {\r\n                this[\"FilterShowTweaks\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool MiscColorblind {\r\n            get {\r\n                return ((bool)(this[\"MiscColorblind\"]));\r\n            }\r\n            set {\r\n                this[\"MiscColorblind\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool ScanScoop {\r\n            get {\r\n                return ((bool)(this[\"ScanScoop\"]));\r\n            }\r\n            set {\r\n                this[\"ScanScoop\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public bool WindowDpiAware {\r\n            get {\r\n                return ((bool)(this[\"WindowDpiAware\"]));\r\n            }\r\n            set {\r\n                this[\"WindowDpiAware\"] = value;\r\n            }\r\n        }\r\n        \r\n        [global::System.Configuration.UserScopedSettingAttribute()]\r\n        [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider.PortableSettingsProvider))]\r\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n        [global::System.Configuration.DefaultSettingValueAttribute(\"OpenProperties\")]\r\n        [global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]\r\n        public global::BulkCrapUninstaller.Forms.UninstallerListDoubleClickAction UninstallerListDoubleClickAction {\r\n            get {\r\n                return ((global::BulkCrapUninstaller.Forms.UninstallerListDoubleClickAction)(this[\"UninstallerListDoubleClickAction\"]));\r\n            }\r\n            set {\r\n                this[\"UninstallerListDoubleClickAction\"] = value;\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Settings.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing Klocman.Binding.Settings;\r\n\r\nnamespace BulkCrapUninstaller.Properties\r\n{\r\n    // This class allows you to handle specific events on the settings class:\r\n    //  The SettingChanging event is raised before a setting's value is changed.\r\n    //  The PropertyChanged event is raised after a setting's value is changed.\r\n    //  The SettingsLoaded event is raised after the setting values are loaded.\r\n    //  The SettingsSaving event is raised before the setting values are saved.\r\n    internal sealed partial class Settings\r\n    {\r\n        private SettingBinder<Settings> _settingManager;\r\n\r\n        public SettingBinder<Settings> SettingBinder\r\n            => _settingManager ?? (_settingManager = new SettingBinder<Settings>(this));\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstaller/Properties/Settings.settings",
    "content": "﻿<?xml version='1.0' encoding='utf-8'?>\r\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\" CurrentProfile=\"(Default)\" GeneratedClassNamespace=\"BulkCrapUninstaller.Properties\" GeneratedClassName=\"Settings\">\r\n  <Profiles />\r\n  <Settings>\r\n    <Setting Name=\"UninstallerListUseCheckboxes\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"UninstallerListUseGroups\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"FilterHideMicrosoft\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"AdvancedDisableProtection\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"WindowPosition\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Type=\"System.Drawing.Point\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">0, 0</Value>\r\n    </Setting>\r\n    <Setting Name=\"WindowSize\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Type=\"System.Drawing.Size\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">0, 0</Value>\r\n    </Setting>\r\n    <Setting Name=\"MiscFirstRun\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"AdvancedIntelligentUninstallerSorting\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"WindowState\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Type=\"System.Windows.Forms.FormWindowState\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">Normal</Value>\r\n    </Setting>\r\n    <Setting Name=\"UninstallerListViewState\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.String\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\" />\r\n    </Setting>\r\n    <Setting Name=\"ToolbarsShowToolbar\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"ToolbarsShowSettings\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"FilterShowSystemComponents\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"WindowUseSystemTheme\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"FilterShowProtected\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"FilterShowUpdates\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"MessagesRestorePoints\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"Klocman.YesNoAsk\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">Ask</Value>\r\n    </Setting>\r\n    <Setting Name=\"AdvancedSimulate\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"MiscVersion\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.String\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\" />\r\n    </Setting>\r\n    <Setting Name=\"Debug\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"MessagesRemoveJunk\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"Klocman.YesNoAsk\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">Ask</Value>\r\n    </Setting>\r\n    <Setting Name=\"MiscCheckForUpdates\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"BackupLeftovers\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"Klocman.YesNoAsk\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">Ask</Value>\r\n    </Setting>\r\n    <Setting Name=\"MessagesAskRemoveLoudItems\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"MiscFeedbackNagShown\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"MiscSendStatistics\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"ExternalPreCommands\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.String\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\" />\r\n    </Setting>\r\n    <Setting Name=\"ExternalPostCommands\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.String\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">../BleachBit/bleachbit_console.exe --clean system.tmp system.logs system.memory_dump system.muicache system.prefetch system.recycle_bin</Value>\r\n    </Setting>\r\n    <Setting Name=\"ToolbarsShowStatusbar\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"ExternalEnable\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"Language\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.String\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\" />\r\n    </Setting>\r\n    <Setting Name=\"MiscUserId\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.UInt64\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">0</Value>\r\n    </Setting>\r\n    <Setting Name=\"AdvancedTestCertificates\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"AdvancedTestInvalid\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"AdvancedDisplayOrphans\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"UninstallerListSortOrder\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Windows.Forms.SortOrder\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">None</Value>\r\n    </Setting>\r\n    <Setting Name=\"UninstallerListSortColumn\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Int32\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">0</Value>\r\n    </Setting>\r\n    <Setting Name=\"UninstallerListShowLegend\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"FoldersCustomProgramDirs\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.String\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\" />\r\n    </Setting>\r\n    <Setting Name=\"MiscAutoLoadDefaultList\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"MiscUserRatings\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"MiscRatingCacheDate\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.DateTime\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">1990-01-01</Value>\r\n    </Setting>\r\n    <Setting Name=\"_CacheUpdateRate\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.TimeSpan\" Scope=\"Application\">\r\n      <Value Profile=\"(Default)\">10.00:00:00</Value>\r\n    </Setting>\r\n    <Setting Name=\"UninstallPreventShutdown\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"UninstallConcurrency\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"UninstallConcurrentMaxCount\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Int32\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">2</Value>\r\n    </Setting>\r\n    <Setting Name=\"UninstallConcurrentOneLoud\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"UninstallConcurrentDisableManualCollisionProtection\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"FilterShowStoreApps\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"QuietRetryFailedOnce\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"QuietAutoKillStuck\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"QuietAutomatization\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"QuietAutomatizationKillStuck\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"FilterShowWinFeatures\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"MessagesShowAllBadJunk\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"MiscFeedbackNagNeverShow\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"ScanWinUpdates\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"ScanWinFeatures\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"ScanSteam\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"ScanStoreApps\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"FoldersAutoDetect\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"ScanDrives\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"ScanRegistry\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"ScanPreDefined\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"BackupLeftoversDirectory\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Type=\"System.String\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\" />\r\n    </Setting>\r\n    <Setting Name=\"ShowTreeMap\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"CacheCertificates\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"CacheAppInfo\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"ScanChocolatey\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"QuietUseDaemon\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"ScanOculus\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"AdvancedHighlightSpecial\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"FoldersScanRemovable\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"FilterShowTweaks\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"MiscColorblind\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">False</Value>\r\n    </Setting>\r\n    <Setting Name=\"ScanScoop\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"WindowDpiAware\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"System.Boolean\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">True</Value>\r\n    </Setting>\r\n    <Setting Name=\"UninstallerListDoubleClickAction\" Provider=\"PortableSettingsProvider.PortableSettingsProvider\" Roaming=\"true\" Type=\"BulkCrapUninstaller.Forms.UninstallerListDoubleClickAction\" Scope=\"User\">\r\n      <Value Profile=\"(Default)\">OpenProperties</Value>\r\n    </Setting>\r\n  </Settings>\r\n</SettingsFile>"
  },
  {
    "path": "source/BulkCrapUninstaller.sln",
    "content": "﻿\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 17\r\nVisualStudioVersion = 17.5.33424.131\r\nMinimumVisualStudioVersion = 10.0.40219.1\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"BulkCrapUninstaller\", \"BulkCrapUninstaller\\BulkCrapUninstaller.csproj\", \"{5086CDDE-5B1D-485B-AABC-A63C633579B6}\"\r\n\tProjectSection(ProjectDependencies) = postProject\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1} = {129CBF33-9E19-4D26-A601-5E8394907AE1}\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705} = {2E8CECA3-4872-439E-9A47-5304FB4BF705}\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7} = {319C4596-0EE6-4392-9D7B-F937794133C7}\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63} = {43022440-594D-437C-96C8-6AA24F6CEE63}\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06} = {5247BD39-5DEB-4F14-AF4B-9598A8544D06}\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25} = {52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116} = {9C818D14-22AE-46DB-B179-119069AE6116}\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5} = {DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7} = {FA4F2993-A7F5-4738-9FE1-81F34DB032A7}\r\n\tEndProjectSection\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"UninstallTools\", \"UninstallTools\\UninstallTools.csproj\", \"{87091C84-B671-4269-ABE4-D0F818AB201C}\"\r\n\tProjectSection(ProjectDependencies) = postProject\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5} = {DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}\r\n\tEndProjectSection\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Solution Items\", \"Solution Items\", \"{CF548671-BB38-48B1-9664-C737E971FC07}\"\r\n\tProjectSection(SolutionItems) = preProject\r\n\t\tapp.manifest = app.manifest\r\n\t\tDirectory.Build.props = Directory.Build.props\r\n\t\tGlobalAssemblyInfo.cs = GlobalAssemblyInfo.cs\r\n\t\tLicence.licenseheader = Licence.licenseheader\r\n\t\t..\\publish.bat = ..\\publish.bat\r\n\t\t..\\README.md = ..\\README.md\r\n\tEndProjectSection\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KlocTools\", \"KlocTools\\KlocTools.csproj\", \"{4F843421-01D4-48E8-B88B-CDF30DD671A4}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"BulkCrapUninstallerTests\", \"BulkCrapUninstallerTests\\BulkCrapUninstallerTests.csproj\", \"{C631EFBE-0463-417D-AEBE-A4BE3E660C43}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"StoreAppHelper\", \"StoreAppHelper\\StoreAppHelper.csproj\", \"{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"UninstallerAutomatizer\", \"UninstallerAutomatizer\\UninstallerAutomatizer.csproj\", \"{9C818D14-22AE-46DB-B179-119069AE6116}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"SteamHelper\", \"SteamHelper\\SteamHelper.csproj\", \"{43022440-594D-437C-96C8-6AA24F6CEE63}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"ObjectListView\", \"ObjectListView\\ObjectListView.csproj\", \"{18FEDA0C-D147-4286-B39A-01204808106A}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"WinUpdateHelper\", \"WinUpdateHelper\\WinUpdateHelper.csproj\", \"{5247BD39-5DEB-4F14-AF4B-9598A8544D06}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"UniversalUninstaller\", \"UniversalUninstaller\\UniversalUninstaller.csproj\", \"{129CBF33-9E19-4D26-A601-5E8394907AE1}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"PortableSettingsProvider\", \"PortableSettingsProvider\\PortableSettingsProvider.csproj\", \"{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"SimpleTreeMap\", \"SimpleTreeMap\\SimpleTreeMap.csproj\", \"{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"SimpleTreeMapTestApp\", \"SimpleTreeMapTests\\SimpleTreeMapTestApp.csproj\", \"{3F3D249F-885B-4AF5-B760-3900D077D66B}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"BCU-console\", \"BCU-console\\BCU-console.csproj\", \"{2E8CECA3-4872-439E-9A47-5304FB4BF705}\"\r\n\tProjectSection(ProjectDependencies) = postProject\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1} = {129CBF33-9E19-4D26-A601-5E8394907AE1}\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A} = {18FEDA0C-D147-4286-B39A-01204808106A}\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7} = {319C4596-0EE6-4392-9D7B-F937794133C7}\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63} = {43022440-594D-437C-96C8-6AA24F6CEE63}\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE} = {495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4} = {4F843421-01D4-48E8-B88B-CDF30DD671A4}\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06} = {5247BD39-5DEB-4F14-AF4B-9598A8544D06}\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25} = {52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116} = {9C818D14-22AE-46DB-B179-119069AE6116}\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930} = {B5F0E648-A6E8-4D63-842C-90562148A930}\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720} = {C28A3493-8FCA-4571-8F9E-27B8420C0720}\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5} = {DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7} = {FA4F2993-A7F5-4738-9FE1-81F34DB032A7}\r\n\tEndProjectSection\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"OculusHelper\", \"OculusHelper\\OculusHelper.csproj\", \"{319C4596-0EE6-4392-9D7B-F937794133C7}\"\r\nEndProject\r\nProject(\"{D954291E-2A0B-460D-934E-DC6B0785DB48}\") = \"HelperTools\", \"HelperTools\\HelperTools.shproj\", \"{73A9796D-334C-400C-87AC-1DFDD613266E}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"ScriptHelper\", \"ScriptHelper\\ScriptHelper.csproj\", \"{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"NetSettingBinder\", \"NetSettingBinder\\NetSettingBinder.csproj\", \"{C28A3493-8FCA-4571-8F9E-27B8420C0720}\"\r\nEndProject\r\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"NBug\", \"NBug_custom\\NBug.csproj\", \"{B5F0E648-A6E8-4D63-842C-90562148A930}\"\r\nEndProject\r\nProject(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"BCU-launcher\", \"BCU-launcher\\BCU-launcher.vcxproj\", \"{C54B5AFD-C079-4852-960E-906B8CEE0E07}\"\r\nEndProject\r\nGlobal\r\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\r\n\t\tDebug|Any CPU = Debug|Any CPU\r\n\t\tDebug|ARM64 = Debug|ARM64\r\n\t\tDebug|x64 = Debug|x64\r\n\t\tDebug|x86 = Debug|x86\r\n\t\tRelease|Any CPU = Release|Any CPU\r\n\t\tRelease|ARM64 = Release|ARM64\r\n\t\tRelease|x64 = Release|x64\r\n\t\tRelease|x86 = Release|x86\r\n\tEndGlobalSection\r\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Release|x64.Build.0 = Release|x64\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{5086CDDE-5B1D-485B-AABC-A63C633579B6}.Release|x86.Build.0 = Release|x86\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Release|x64.Build.0 = Release|x64\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{87091C84-B671-4269-ABE4-D0F818AB201C}.Release|x86.Build.0 = Release|x86\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Release|x64.Build.0 = Release|x64\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{4F843421-01D4-48E8-B88B-CDF30DD671A4}.Release|x86.Build.0 = Release|x86\r\n\t\t{C631EFBE-0463-417D-AEBE-A4BE3E660C43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{C631EFBE-0463-417D-AEBE-A4BE3E660C43}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{C631EFBE-0463-417D-AEBE-A4BE3E660C43}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{C631EFBE-0463-417D-AEBE-A4BE3E660C43}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{C631EFBE-0463-417D-AEBE-A4BE3E660C43}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{C631EFBE-0463-417D-AEBE-A4BE3E660C43}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{C631EFBE-0463-417D-AEBE-A4BE3E660C43}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{C631EFBE-0463-417D-AEBE-A4BE3E660C43}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{C631EFBE-0463-417D-AEBE-A4BE3E660C43}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{C631EFBE-0463-417D-AEBE-A4BE3E660C43}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{C631EFBE-0463-417D-AEBE-A4BE3E660C43}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Release|x64.Build.0 = Release|x64\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{DCA3F6AD-0A1A-4E14-894A-114CC9B3B3E5}.Release|x86.Build.0 = Release|x86\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Release|x64.Build.0 = Release|x64\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{9C818D14-22AE-46DB-B179-119069AE6116}.Release|x86.Build.0 = Release|x86\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Release|x64.Build.0 = Release|x64\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{43022440-594D-437C-96C8-6AA24F6CEE63}.Release|x86.Build.0 = Release|x86\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Release|x64.Build.0 = Release|x64\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{18FEDA0C-D147-4286-B39A-01204808106A}.Release|x86.Build.0 = Release|x86\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Release|x64.Build.0 = Release|x64\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{5247BD39-5DEB-4F14-AF4B-9598A8544D06}.Release|x86.Build.0 = Release|x86\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Release|x64.Build.0 = Release|x64\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{129CBF33-9E19-4D26-A601-5E8394907AE1}.Release|x86.Build.0 = Release|x86\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Release|x64.Build.0 = Release|x64\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{495A9EA6-B13C-48F9-A2E2-6667CECEBFDE}.Release|x86.Build.0 = Release|x86\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Release|x64.Build.0 = Release|x64\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{52FCBDB1-48D8-448D-B8CA-07F10AB3CA25}.Release|x86.Build.0 = Release|x86\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Release|x64.Build.0 = Release|x64\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{3F3D249F-885B-4AF5-B760-3900D077D66B}.Release|x86.Build.0 = Release|x86\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Release|x64.Build.0 = Release|x64\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{2E8CECA3-4872-439E-9A47-5304FB4BF705}.Release|x86.Build.0 = Release|x86\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Release|x64.Build.0 = Release|x64\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{319C4596-0EE6-4392-9D7B-F937794133C7}.Release|x86.Build.0 = Release|x86\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Release|x64.Build.0 = Release|x64\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{FA4F2993-A7F5-4738-9FE1-81F34DB032A7}.Release|x86.Build.0 = Release|x86\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Release|x64.Build.0 = Release|x64\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{C28A3493-8FCA-4571-8F9E-27B8420C0720}.Release|x86.Build.0 = Release|x86\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Debug|ARM64.ActiveCfg = Debug|ARM64\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Debug|ARM64.Build.0 = Debug|ARM64\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Debug|x64.ActiveCfg = Debug|x64\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Debug|x64.Build.0 = Debug|x64\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Release|ARM64.ActiveCfg = Release|ARM64\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Release|ARM64.Build.0 = Release|ARM64\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Release|x64.ActiveCfg = Release|x64\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Release|x64.Build.0 = Release|x64\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{B5F0E648-A6E8-4D63-842C-90562148A930}.Release|x86.Build.0 = Release|x86\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Debug|Any CPU.ActiveCfg = Debug|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Debug|ARM64.ActiveCfg = Debug|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Debug|ARM64.Build.0 = Debug|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Debug|x64.ActiveCfg = Debug|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Debug|x64.Build.0 = Debug|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Debug|x86.ActiveCfg = Debug|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Debug|x86.Build.0 = Debug|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Release|Any CPU.ActiveCfg = Release|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Release|ARM64.ActiveCfg = Release|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Release|ARM64.Build.0 = Release|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Release|x64.ActiveCfg = Release|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Release|x64.Build.0 = Release|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Release|x86.ActiveCfg = Release|Win32\r\n\t\t{C54B5AFD-C079-4852-960E-906B8CEE0E07}.Release|x86.Build.0 = Release|Win32\r\n\tEndGlobalSection\r\n\tGlobalSection(SolutionProperties) = preSolution\r\n\t\tHideSolutionNode = FALSE\r\n\tEndGlobalSection\r\n\tGlobalSection(ExtensibilityGlobals) = postSolution\r\n\t\tSolutionGuid = {6E45D37F-C2A8-4E8E-B8FE-19F1D8A5B010}\r\n\tEndGlobalSection\r\n\tGlobalSection(SharedMSBuildProjectFiles) = preSolution\r\n\t\tHelperTools\\HelperTools.projitems*{129cbf33-9e19-4d26-a601-5e8394907ae1}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{18feda0c-d147-4286-b39a-01204808106a}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{2e8ceca3-4872-439e-9a47-5304fb4bf705}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{319c4596-0ee6-4392-9d7b-f937794133c7}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{3f3d249f-885b-4af5-b760-3900d077d66b}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{43022440-594d-437c-96c8-6aa24f6cee63}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{495a9ea6-b13c-48f9-a2e2-6667cecebfde}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{4f843421-01d4-48e8-b88b-cdf30dd671a4}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{5086cdde-5b1d-485b-aabc-a63c633579b6}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{5247bd39-5deb-4f14-af4b-9598a8544d06}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{52fcbdb1-48d8-448d-b8ca-07f10ab3ca25}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{73a9796d-334c-400c-87ac-1dfdd613266e}*SharedItemsImports = 13\r\n\t\tHelperTools\\HelperTools.projitems*{87091c84-b671-4269-abe4-d0f818ab201c}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{9c818d14-22ae-46db-b179-119069ae6116}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{b5f0e648-a6e8-4d63-842c-90562148a930}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{c28a3493-8fca-4571-8f9e-27b8420c0720}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{c631efbe-0463-417d-aebe-a4be3e660c43}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{dca3f6ad-0a1a-4e14-894a-114cc9b3b3e5}*SharedItemsImports = 5\r\n\t\tHelperTools\\HelperTools.projitems*{fa4f2993-a7f5-4738-9fe1-81f34db032a7}*SharedItemsImports = 5\r\n\tEndGlobalSection\r\nEndGlobal\r\n"
  },
  {
    "path": "source/BulkCrapUninstallerTests/BulkCrapUninstallerTests.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\r\n  <PropertyGroup>\r\n    <OutputType>Library</OutputType>\r\n    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>\r\n\t\t<OutputPath>bin</OutputPath>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <ProjectReference Include=\"..\\BulkCrapUninstaller\\BulkCrapUninstaller.csproj\" />\r\n    <ProjectReference Include=\"..\\UninstallTools\\UninstallTools.csproj\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <PackageReference Include=\"Microsoft.NET.Test.Sdk\" Version=\"18.3.0\" />\r\n    <PackageReference Include=\"MSTest.TestAdapter\" Version=\"4.1.0\" />\r\n    <PackageReference Include=\"MSTest.TestFramework\" Version=\"4.1.0\" />\r\n  </ItemGroup>\r\n</Project>"
  },
  {
    "path": "source/BulkCrapUninstallerTests/DynamicStringArrayConverterTests.cs",
    "content": "using System;\nusing System.Text.Json;\nusing System.Text.Json.Serialization;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing UninstallTools.Factory.Json;\n\nnamespace BulkCrapUninstallerTests\n{\n    [TestClass]\n    public class DynamicStringArrayConverterTests\n    {\n        private static readonly JsonSerializerOptions Options = new()\n        {\n            Converters = { new DynamicStringArrayConverter() }\n        };\n\n        private static string[] Deserialize(string json)\n        {\n            return JsonSerializer.Deserialize<string[]>(json, Options);\n        }\n\n        // --- 0-dimension (bare string) ---\n\n        [TestMethod]\n        public void BareString_ReturnsSingleElementArray()\n        {\n            var result = Deserialize(\"\\\"foo\\\"\");\n            CollectionAssert.AreEqual(new[] { \"foo\" }, result);\n        }\n\n        // --- Flat arrays ---\n\n        [TestMethod]\n        public void FlatArray_ReturnsAllStrings()\n        {\n            var result = Deserialize(\"[\\\"a\\\", \\\"b\\\", \\\"c\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"a\", \"b\", \"c\" }, result);\n        }\n\n        [TestMethod]\n        public void EmptyArray_ReturnsEmpty()\n        {\n            var result = Deserialize(\"[]\");\n            CollectionAssert.AreEqual(Array.Empty<string>(), result);\n        }\n\n        [TestMethod]\n        public void SingleElementArray_ReturnsSingleElement()\n        {\n            var result = Deserialize(\"[\\\"a\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"a\" }, result);\n        }\n\n        // --- One-level nested arrays ---\n\n        [TestMethod]\n        public void NestedArray_TakesFirstStringOnly()\n        {\n            var result = Deserialize(\"[[\\\"a\\\", \\\"b\\\"], \\\"c\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"a\", \"c\" }, result);\n        }\n\n        [TestMethod]\n        public void MultipleNestedArrays_TakesFirstFromEach()\n        {\n            var result = Deserialize(\"[[\\\"a\\\", \\\"b\\\"], [\\\"c\\\", \\\"d\\\"]]\");\n            CollectionAssert.AreEqual(new[] { \"a\", \"c\" }, result);\n        }\n\n        [TestMethod]\n        public void EmptyNestedArray_IsSkipped()\n        {\n            var result = Deserialize(\"[[], \\\"c\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"c\" }, result);\n        }\n\n        [TestMethod]\n        public void AllEmptyNestedArrays_ReturnsEmpty()\n        {\n            var result = Deserialize(\"[[], []]\");\n            CollectionAssert.AreEqual(Array.Empty<string>(), result);\n        }\n\n        // --- Non-string tokens ---\n\n        [TestMethod]\n        public void NonStringFirstInNested_SkipsToFirstString()\n        {\n            var result = Deserialize(\"[[42, \\\"a\\\"], \\\"c\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"a\", \"c\" }, result);\n        }\n\n        [TestMethod]\n        public void NestedWithOnlyNonStrings_IsSkipped()\n        {\n            var result = Deserialize(\"[[42, true, null]]\");\n            CollectionAssert.AreEqual(Array.Empty<string>(), result);\n        }\n\n        [TestMethod]\n        public void NullAtTopLevel_IsSkipped()\n        {\n            var result = Deserialize(\"[null, \\\"a\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"a\" }, result);\n        }\n\n        [TestMethod]\n        public void NullInNestedArray_SkipsToFirstString()\n        {\n            var result = Deserialize(\"[[null, \\\"a\\\"]]\");\n            CollectionAssert.AreEqual(new[] { \"a\" }, result);\n        }\n\n        // --- Deep nesting ---\n\n        [TestMethod]\n        public void TwoDeepNesting_RecursivelyUnwraps()\n        {\n            var result = Deserialize(\"[[[\\\"a\\\"]]]\");\n            CollectionAssert.AreEqual(new[] { \"a\" }, result);\n        }\n\n        [TestMethod]\n        public void ThreeDeepNesting_RecursivelyUnwraps()\n        {\n            var result = Deserialize(\"[[[[\\\"a\\\"]]]]\");\n            CollectionAssert.AreEqual(new[] { \"a\" }, result);\n        }\n\n        [TestMethod]\n        public void DeeplyNestedEmpty_ReturnsEmpty()\n        {\n            var result = Deserialize(\"[[[[]]]]\");\n            CollectionAssert.AreEqual(Array.Empty<string>(), result);\n        }\n\n        [TestMethod]\n        public void EmptyThenNonEmptyInNested_FindsString()\n        {\n            var result = Deserialize(\"[[[], [\\\"x\\\"]], \\\"y\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"x\", \"y\" }, result);\n        }\n\n        // --- Mixed flat and nested ---\n\n        [TestMethod]\n        public void MixedFlatAndNested_CollectsAll()\n        {\n            var result = Deserialize(\"[\\\"a\\\", [\\\"b\\\"], [[\\\"c\\\"]], \\\"d\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"a\", \"b\", \"c\", \"d\" }, result);\n        }\n\n        // --- Objects ---\n\n        [TestMethod]\n        public void ObjectAtTopLevel_IsSkipped()\n        {\n            var result = Deserialize(\"[{\\\"k\\\":\\\"v\\\"}, \\\"a\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"a\" }, result);\n        }\n\n        [TestMethod]\n        public void ObjectInNestedArray_IsSkipped()\n        {\n            var result = Deserialize(\"[[{\\\"k\\\":\\\"v\\\"}, \\\"a\\\"]]\");\n            CollectionAssert.AreEqual(new[] { \"a\" }, result);\n        }\n\n        // --- Invalid root token ---\n\n        [TestMethod]\n        public void InvalidRootToken_ThrowsJsonException()\n        {\n            Assert.Throws<JsonException>(() => Deserialize(\"42\"));\n        }\n\n        [TestMethod]\n        public void RootObject_ThrowsJsonException()\n        {\n            Assert.Throws<JsonException>(() => Deserialize(\"{\\\"x\\\":1}\"));\n        }\n\n        [TestMethod]\n        public void RootNull_ReturnsNull()\n        {\n            var result = Deserialize(\"null\");\n            Assert.IsNull(result);\n        }\n\n        // --- Additional adversarial edge cases ---\n\n        [TestMethod]\n        public void EmptyStringPreserved_TopLevel()\n        {\n            var result = Deserialize(\"[\\\"\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"\" }, result);\n        }\n\n        [TestMethod]\n        public void EmptyStringPreserved_InNested()\n        {\n            var result = Deserialize(\"[[\\\"\\\", \\\"b\\\"]]\");\n            CollectionAssert.AreEqual(new[] { \"\" }, result);\n        }\n\n        [TestMethod]\n        public void BooleanAtTopLevel_IsSkipped()\n        {\n            var result = Deserialize(\"[true, false, \\\"a\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"a\" }, result);\n        }\n\n        [TestMethod]\n        public void NumberAtTopLevel_IsSkipped()\n        {\n            var result = Deserialize(\"[42, \\\"a\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"a\" }, result);\n        }\n\n        [TestMethod]\n        public void ScoopRealisticBinFormat()\n        {\n            // Scoop manifests: [\"app.exe\", [\"tool.exe\", \"alias\", \"--args\"]]\n            var result = Deserialize(\"[\\\"app.exe\\\", [\\\"tool.exe\\\", \\\"alias\\\", \\\"--args\\\"]]\");\n            CollectionAssert.AreEqual(new[] { \"app.exe\", \"tool.exe\" }, result);\n        }\n\n        [TestMethod]\n        public void NestedObjectFollowedByString()\n        {\n            var result = Deserialize(\"[[{\\\"x\\\":1}, \\\"after\\\"]]\");\n            CollectionAssert.AreEqual(new[] { \"after\" }, result);\n        }\n\n        [TestMethod]\n        public void RecursiveNullThenNestedString()\n        {\n            // ReadFirstString must continue past null recursive result\n            var result = Deserialize(\"[[[],  [\\\"x\\\"]], \\\"y\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"x\", \"y\" }, result);\n        }\n\n        [TestMethod]\n        public void AdjacentNestedWithEmptyBetween()\n        {\n            var result = Deserialize(\"[[\\\"a\\\"], [], [\\\"b\\\"]]\");\n            CollectionAssert.AreEqual(new[] { \"a\", \"b\" }, result);\n        }\n\n        [TestMethod]\n        public void NestedWithNonStringsThenDeeperString()\n        {\n            // ReadFirstString must skip 42, skip empty inner, then find \"x\" in deeper array\n            var result = Deserialize(\"[[42, [], [\\\"x\\\"]], \\\"y\\\"]\");\n            CollectionAssert.AreEqual(new[] { \"x\", \"y\" }, result);\n        }\n    }\n}\n"
  },
  {
    "path": "source/BulkCrapUninstallerTests/Functions/UninstallerRatingManagerTests.cs",
    "content": "﻿using System;\r\nusing System.IO;\r\nusing BulkCrapUninstaller;\r\nusing BulkCrapUninstaller.Functions.Ratings;\r\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\r\n\r\nnamespace BulkCrapUninstallerTests.Functions\r\n{\r\n    [TestClass]\r\n    public class UninstallerRatingManagerTests\r\n    {\r\n        private static readonly string[] TestEntryNames = {\"Test_1\", \"Test_2\", \"Test_3\", \"Test_4\"};\r\n        private UninstallerRatingManager _manager;\r\n        \r\n        [TestInitialize]\r\n        public void TestInitialize()\r\n        {\r\n            _manager = new UninstallerRatingManager(1);\r\n        }\r\n\r\n        [TestCleanup]\r\n        public void TestCleanup()\r\n        {\r\n            _manager?.ClearRatings();\r\n        }\r\n\r\n        [TestMethod]\r\n        public void RefreshStatsTest()\r\n        {\r\n            Assert.Inconclusive(\"Expensive, no need to always test\");\r\n\r\n            _manager.FetchRatings();\r\n            if (_manager.RemoteRatingCount == 0)\r\n                Assert.Fail();\r\n        }\r\n\r\n        [TestMethod]\r\n        public void GetRatingTest()\r\n        {\r\n            _manager.FetchRatings();\r\n            var rating = _manager.GetRating(TestEntryNames[0]);\r\n\r\n            if (rating.IsEmpty)\r\n                Assert.Fail();\r\n        }\r\n\r\n        [TestMethod]\r\n        public void SetMyRatingTest()\r\n        {\r\n            _manager.FetchRatings();\r\n\r\n            try\r\n            {\r\n                _manager.SetMyRating(null, UninstallerRating.Bad);\r\n                Assert.Fail();\r\n            }\r\n            catch (ArgumentNullException)\r\n            {\r\n            }\r\n            try\r\n            {\r\n                _manager.SetMyRating(TestEntryNames[0], UninstallerRating.Unknown);\r\n                Assert.Fail();\r\n            }\r\n            catch (ArgumentException)\r\n            {\r\n            }\r\n\r\n            _manager.SetMyRating(TestEntryNames[0], UninstallerRating.Good);\r\n            Assert.AreEqual((int) UninstallerRating.Good, _manager.GetRating(TestEntryNames[0]).MyRating);\r\n\r\n            var rating = _manager.GetRating(\"Test_SetMyRatingTest\");\r\n            var newRating = rating.MyRating == (int) UninstallerRating.Bad\r\n                ? UninstallerRating.Good\r\n                : UninstallerRating.Bad;\r\n            _manager.SetMyRating(\"Test_SetMyRatingTest\", newRating);\r\n            Assert.AreEqual((int) newRating, _manager.GetRating(\"Test_SetMyRatingTest\").MyRating);\r\n        }\r\n\r\n        [TestMethod]\r\n        public void SerializeDeserializeCasheTest()\r\n        {\r\n            _manager.FetchRatings();\r\n            var count = _manager.RemoteRatingCount + _manager.UserRatingCount;\r\n            if (count == 0)\r\n                Assert.Fail(\"No items received\");\r\n\r\n            var filename = Path.Combine(Program.AssemblyLocation.FullName, \"TestTempDir\");\r\n\r\n            var dir = new DirectoryInfo(filename);\r\n            dir.Create();\r\n            _manager.SerializeCache(dir);\r\n\r\n            TestCleanup();\r\n            TestInitialize();\r\n\r\n            _manager.DeserializeCache(dir);\r\n            Assert.AreEqual(count, _manager.RemoteRatingCount + _manager.UserRatingCount);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/BulkCrapUninstallerTests/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General Information about an assembly is controlled through the following \r\n// set of attributes. Change these attribute values to modify the information\r\n// associated with an assembly.\r\n[assembly: AssemblyTitle(\"BulkCrapUninstallerTests\")]\r\n[assembly: AssemblyDescription(\"\")]\r\n[assembly: AssemblyConfiguration(\"\")]\r\n[assembly: AssemblyCompany(\"\")]\r\n[assembly: AssemblyProduct(\"BulkCrapUninstallerTests\")]\r\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// Setting ComVisible to false makes the types in this assembly not visible \r\n// to COM components.  If you need to access a type in this assembly from \r\n// COM, set the ComVisible attribute to true on that type.\r\n[assembly: ComVisible(false)]\r\n\r\n// The following GUID is for the ID of the typelib if this project is exposed to COM\r\n[assembly: Guid(\"c631efbe-0463-417d-aebe-a4be3e660c43\")]\r\n\r\n// Version information for an assembly consists of the following four values:\r\n//\r\n//      Major Version\r\n//      Minor Version \r\n//      Build Number\r\n//      Revision\r\n//\r\n// You can specify all the values or you can default the Build and Revision Numbers \r\n// by using the '*' as shown below:\r\n// [assembly: AssemblyVersion(\"1.0.*\")]\r\n[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\r\n"
  },
  {
    "path": "source/Directory.Build.props",
    "content": "<Project>\n\t<PropertyGroup>\n\t\t<Version>6.1</Version>\n\n\t\t<Authors>https://github.com/Klocman/Bulk-Crap-Uninstaller</Authors>\n\t\t<Copyright>Copyright Apache-2.0 © 2026</Copyright>\n\n\t\t<Platforms>AnyCPU;x64;x86;ARM64</Platforms>\n\t\t<TargetFramework>net8.0-windows10.0.18362.0</TargetFramework>\n\t\t<TargetPlatformVersion>8.0</TargetPlatformVersion>\n\n\t\t<OutputPath>..\\..\\bin\\$(Configuration)\\$(Platform)\\</OutputPath>\n\t\t<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>\n\t\t<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>\n\n\t\t<Deterministic>true</Deterministic>\n\n\t\t<UseWindowsForms>true</UseWindowsForms>\n\t\t<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>\n\n\t\t<TargetZone>LocalIntranet</TargetZone>\n\t\t<GenerateManifests>false</GenerateManifests>\n\t\t<SignManifests>false</SignManifests>\n\n\t\t<ApplicationManifest>..\\app.manifest</ApplicationManifest>\n\n\t\t<DebugSymbols>true</DebugSymbols>\n\t\t<FileAlignment>512</FileAlignment>\n\t\t\n\t\t<UseAppHost>true</UseAppHost>\n\t\t<SelfContained>false</SelfContained>\n\t</PropertyGroup>\n\t\n\t<Import Project=\"HelperTools\\HelperTools.projitems\" Label=\"Shared\" />\n\n\t<PropertyGroup Condition=\" '$(Platform)' == 'AnyCPU' \">\n\t\t<RuntimeIdentifier></RuntimeIdentifier>\n\t</PropertyGroup>\n\t<PropertyGroup Condition=\"'$(Platform)'=='x86'\">\n\t\t<RuntimeIdentifier>win-x86</RuntimeIdentifier>\n\t</PropertyGroup>\n\t<PropertyGroup Condition=\"'$(Platform)'=='x64'\">\n\t\t<RuntimeIdentifier>win-x64</RuntimeIdentifier>\n\t</PropertyGroup>\n\t<PropertyGroup Condition=\"'$(Platform)'=='ARM64'\">\n\t\t<RuntimeIdentifier>win-arm64</RuntimeIdentifier>\n\t</PropertyGroup>\n\n\t<PropertyGroup Condition=\" '$(Configuration)' == 'Release' \">\n\t\t<!--<TreatWarningsAsErrors>true</TreatWarningsAsErrors>-->\n\t\t<DebugType>embedded</DebugType>\n\t</PropertyGroup>\n\n\t<PropertyGroup Condition=\"'$(Configuration)'=='Debug'\">\n\t\t<DebugType>full</DebugType>\n\t\t<CodeAnalysisRuleSet>ExtendedDesignGuidelineRules.ruleset</CodeAnalysisRuleSet>\n\t\t<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>\n\t</PropertyGroup>\n\t\n\t<ItemGroup>\n\t\t<Compile Include=\"..\\GlobalAssemblyInfo.cs\"/>\n\t\t<None Include=\"..\\Licence.licenseheader\">\n\t\t\t<Visible>False</Visible>\n\t\t</None>\n\t</ItemGroup>\n</Project>"
  },
  {
    "path": "source/GlobalAssemblyInfo.cs",
    "content": "﻿using System.Diagnostics.CodeAnalysis;\r\nusing System.Resources;\r\n\r\n[assembly: SuppressMessage(\"Interoperability\", \"CA1416:Validate platform compatibility\", Justification = \"Windows-only app\")]\r\n[assembly: SuppressMessage(\"Design\", \"CA1031:Do not catch general exception types\", Justification = \"Address properly at some point? Almost all of these get logged\")]\r\n\r\n[assembly: SuppressMessage(\"Style\", \"IDE0057:Use range operator\", Justification = \"Keep code portable\")]\r\n[assembly: SuppressMessage(\"Style\", \"IDE0063:Use simple 'using' statement\", Justification = \"Keep code portable\")]\r\n[assembly: SuppressMessage(\"Style\", \"IDE0090:Use 'new(...)'\", Justification = \"Keep code portable\")]\r\n[assembly: SuppressMessage(\"Style\", \"IDE0066:Convert switch statement to expression\", Justification = \"Keep code portable\")]\r\n\r\n[assembly: SuppressMessage(\"Performance\", \"CA1510:Use throw helper methods\", Justification = \"Keep code consistent with existing patterns\")]\r\n\r\n[assembly: NeutralResourcesLanguage(\"en\")]"
  },
  {
    "path": "source/HelperTools/HelperTools.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.IO;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing System.Text.RegularExpressions;\nusing Microsoft.Win32.Interop;\n\nnamespace Klocman\n{\n    internal static partial class HelperTools\n    {\n        public static void SetupEncoding()\n        {\n            try\n            {\n                Console.OutputEncoding = Encoding.Unicode;\n            }\n            catch (IOException)\n            {\n                /*Old .NET v4 without support for unicode output*/\n            }\n        }\n\n        [GeneratedRegex(@\"0x[\\d\\w]{8}\")] private static partial Regex HrefRegex();\n\n        /// <summary>\n        /// Try to extract the error code from an exception. The message is expected to contain a code in the format 0xXXXXXXXX\n        /// otherwise HResult is returned as-is instead.\n        /// </summary>\n        public static ResultWin32 ExtractHrefCode(Exception error)\n        {\n            if (error == null) throw new ArgumentNullException(nameof(error));\n            var code = ExtractHrefCode(error.Message);\n            if (code == ResultWin32.INVALID_ERROR_CODE) return (ResultWin32)error.HResult;\n            return code;\n        }\n        /// <summary>\n        /// Try to extract the error code from an error message. The message is expected to contain a code in the format 0xXXXXXXXX\n        /// where X is a hexadecimal digit. If the code is not found or is invalid, ResultWin32.INVALID_ERROR_CODE is returned.\n        /// </summary>\n        public static ResultWin32 ExtractHrefCode(string errorMessage)\n        {\n            if (errorMessage == null) throw new ArgumentNullException(nameof(errorMessage));\n            var errorCode = HrefRegex().Match(errorMessage).Captures.FirstOrDefault()?.Value;\n\n            if (string.IsNullOrEmpty(errorCode) || errorCode.Length < 8)\n                return ResultWin32.INVALID_ERROR_CODE;\n\n            int.TryParse(errorCode[2..], NumberStyles.HexNumber, CultureInfo.InvariantCulture,\n                out var errorNumber);\n\n            var code = (ResultWin32)errorNumber;\n            \n            return Enum.IsDefined(code) ? code : ResultWin32.INVALID_ERROR_CODE;\n        }\n\n        /// <summary>\n        ///     Convert object to PropertyName: Value format for writing it to console.\n        ///     Only public properties with getters are processed.\n        ///     Can be written directly with Console.WriteLine for an empty line after object.\n        /// </summary>\n        /// <param name=\"obj\">Object to convert to string</param>\n        /// <param name=\"provider\">Provider used for converting values to strings</param>\n        public static string ObjectToConsoleOutput(object obj, IFormatProvider provider = null)\n        {\n            if (obj == null) throw new ArgumentNullException(nameof(obj));\n            provider ??= CultureInfo.InvariantCulture;\n\n            var propInfos = obj.GetType()\n                .GetProperties(BindingFlags.Instance | BindingFlags.Public)\n                .Where(prop => prop.CanRead)\n                .ToDictionary(prop => prop.Name, prop => prop.GetValue(obj, null));\n            return KeyValueListToConsoleOutput(propInfos, provider);\n        }\n\n        public static string KeyValueListToConsoleOutput(ICollection<KeyValuePair<string, object>> propertyKeyValues,\n            IFormatProvider provider = null)\n        {\n            if (propertyKeyValues == null) throw new ArgumentNullException(nameof(propertyKeyValues));\n            provider ??= CultureInfo.InvariantCulture;\n\n            var maxLen = propertyKeyValues.Max(x => x.Key.Length) + 2;\n\n            var sb = new StringBuilder();\n\n            foreach (var prop in propertyKeyValues)\n            {\n                sb.Append(prop.Key);\n                sb.Append(':');\n                sb.Append(' ', maxLen - prop.Key.Length);\n\n                if (prop.Value is string s)\n                    sb.Append(s.Replace(\"\\r\\n\", \" \").Replace('\\n', ' ').Replace('\\r', ' '));\n                else if (prop.Value is IConvertible convertible)\n                    sb.Append(convertible.ToString(provider));\n                else\n                    sb.Append(prop.Value);\n\n                sb.AppendLine();\n            }\n\n            return sb.ToString();\n        }\n    }\n}"
  },
  {
    "path": "source/HelperTools/HelperTools.projitems",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>\n    <HasSharedItems>true</HasSharedItems>\n    <SharedGUID>73a9796d-334c-400c-87ac-1dfdd613266e</SharedGUID>\n  </PropertyGroup>\n  <PropertyGroup Label=\"Configuration\">\n    <Import_RootNamespace>Klocman</Import_RootNamespace>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"$(MSBuildThisFileDirectory)HelperTools.cs\" />\n    <Compile Include=\"$(MSBuildThisFileDirectory)LogWriter.cs\" />\n    <Compile Include=\"$(MSBuildThisFileDirectory)ResultWin32.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"$(MSBuildThisFileDirectory)ResultWin32Extensions.cs\" />\n  </ItemGroup>\n</Project>"
  },
  {
    "path": "source/HelperTools/HelperTools.shproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup Label=\"Globals\">\n    <ProjectGuid>73a9796d-334c-400c-87ac-1dfdd613266e</ProjectGuid>\n    <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)\\CodeSharing\\Microsoft.CodeSharing.Common.Default.props\" />\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)\\CodeSharing\\Microsoft.CodeSharing.Common.props\" />\n  <PropertyGroup />\n  <Import Project=\"HelperTools.projitems\" Label=\"Shared\" />\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)\\CodeSharing\\Microsoft.CodeSharing.CSharp.targets\" />\n</Project>\n"
  },
  {
    "path": "source/HelperTools/LogWriter.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Reflection;\nusing System.Text;\n\nnamespace Klocman\n{\n    internal sealed class LogWriter(string path) : StreamWriter(path, true, Encoding.UTF8)\n    {\n        private static LogWriter _currentLogger;\n\n        public static void WriteExceptionToLog(Exception ex)\n        {\n            if (ex == null) throw new ArgumentNullException(nameof(ex));\n            WriteMessageToLog(ex.ToString());\n        }\n\n        /// <summary>\n        /// Writes a message to the log file with a UTC timestamp.\n        /// </summary>\n        public static void WriteMessageToLog(string message)\n        {\n            if (message == null) throw new ArgumentNullException(nameof(message));\n\n            StreamWriter writer = _currentLogger;\n            try\n            {\n                var location = CreateLogFilenameForAssembly(Assembly.GetCallingAssembly());\n\n                if (writer == null || !writer.BaseStream.CanWrite)\n                    writer = new StreamWriter(location, true);\n\n                writer.Write(DateTime.UtcNow.ToLongTimeString());\n                writer.Write(\" - \");\n                writer.WriteLine(message);\n\n            }\n            catch (Exception ex)\n            {\n                Console.WriteLine(@\"Failed to write to log file:\\n\" + ex);\n            }\n            finally\n            {\n                if (writer != null && writer != _currentLogger)\n                    writer.Dispose();\n            }\n        }\n\n        private static string CreateLogFilenameForAssembly(Assembly assembly)\n        {\n            var location = assembly.Location;\n            if (location.EndsWith(\".exe\", StringComparison.OrdinalIgnoreCase) || location.EndsWith(\".dll\", StringComparison.OrdinalIgnoreCase))\n                location = location.Remove(location.Length - 4);\n            location += \".log\";\n            return location;\n        }\n\n        protected override void Dispose(bool disposing)\n        {\n            base.Dispose(disposing);\n            if (disposing)\n                Disposed = true;\n        }\n\n        private bool Disposed { get; set; }\n\n        /// <summary>\n        /// Start logging to a file reflecting the calling assembly name.\n        /// Hooks console out and error. Dispose before exiting.\n        /// If logging is already active, it will be restarted with the new calling assembly name.\n        /// </summary>\n        public static LogWriter StartLogging()\n        {\n            _currentLogger?.Dispose();\n\n            var location = CreateLogFilenameForAssembly(Assembly.GetCallingAssembly());\n            return _currentLogger = StartLogging(location);\n        }\n\n        /// <summary>\n        /// Start logging to a file.\n        /// Hooks console out and error. Dispose before exiting.\n        /// </summary>\n        private static LogWriter StartLogging(string logPath)\n        {\n            try\n            {\n                // Limit log size to 100 kb\n                var fileInfo = new FileInfo(logPath);\n                if (fileInfo.Exists && fileInfo.Length > 1024 * 100)\n                    fileInfo.Delete();\n\n                // Create new log writer\n                var logWriter = new LogWriter(logPath);\n\n                // Make sure we can write to the file\n                logWriter.WriteSeparator();\n                logWriter.WriteLine(\"Application startup\");\n                logWriter.Flush();\n\n                Console.SetOut(logWriter);\n                Console.SetError(logWriter);\n\n                Trace.Listeners.Add(new TextWriterTraceListener(logWriter));\n\n                return logWriter;\n            }\n            catch (Exception ex)\n            {\n                // Ignore logging errors\n                Console.WriteLine(ex);\n                return null;\n            }\n        }\n\n        public void WriteSeparator()\n        {\n            if (Disposed) return;\n            base.WriteLine(\"--------------------------------------------------\");\n        }\n\n        public override void WriteLine(string value)\n        {\n            if (Disposed) return;\n            value = DateTime.UtcNow.ToLongTimeString() + \" - \" + value;\n            base.WriteLine(value);\n            base.Flush();\n        }\n    }\n}"
  },
  {
    "path": "source/HelperTools/ResultWin32.cs",
    "content": "/*\n   Taken from https://www.pinvoke.net/default.aspx/Constants/WINERROR.html\n\n   It is documented that you should NOT use the pinvoke GetLastError() due to the fact that the runtime\n   makes it's own API calls without any notification to the application at all. And since most user-API calls\n   are made through a call setup with DllImportAttribute, the .NET framework has made available a method\n   that will record your call's ErrorCode until such time as you need to get it (although, most times, subsequent calls\n   to other API's that you make will overwrite the previous - read ahead to find out why). Use Marshal.GetLastWin32Error() to get the\n   last ErrorCode recorded by your most recent API call. You will also need to make sure you change SetLastError=true when you define\n   your Pinvoke signature, unless you purposely don't want it or don't care or need the lasterror preserved. If you have\n   questions on this remit to: http://www.paradisim.net in the FAQ forums or gabriel@paradisim.net.\n   With this said, you can still use the following code to identify the errorcode:\n*/\n\n/******************************************************************************/\n/*       _                                    */\n/*       \\`*-.                                */\n/*    )  _`-.                                 */\n/*       .  : `. .                                */\n/*       : _   '  \\                               */\n/*       ; *` _.   `*-._                              */\n/*       `-.-'      `-.                           */\n/*     ;       `       `.                         */\n/*     :.       .    \\                        */\n/*     . \\  .   :   .-'   .     NABU Project                  */\n/*     '  `+.;  ;  '      :     Microsoft.Win32.Interop Library       */\n/*     :  '  |    ;       ;-.   Copyright  2005, adontz          */\n/*     ; '   : :`-:     _.`* ;                        */\n/*      .*' /  .*' ; .*`- +'  `*'                         */\n/*      `*-*   `*-*  `*-*'                            */\n/*                                        */\n/******************************************************************************/\nusing System;\nusing System.Runtime;\nusing System.Runtime.InteropServices;\nusing System.Reflection;\n\nnamespace Microsoft.Win32.Interop\n{\n    internal enum ResultWin32\n    {\n        /// <summary>\n        /// Failed to parse the code\n        /// </summary>\n        INVALID_ERROR_CODE = -1,\n\n        /// <summary>\n        /// The operation completed successfully.\n        /// </summary>\n        ERROR_SUCCESS = 0,\n        /// <summary>\n        /// Incorrect function.\n        /// </summary>\n        ERROR_INVALID_FUNCTION = 1,\n        /// <summary>\n        /// The system cannot find the file specified.\n        /// </summary>\n        ERROR_FILE_NOT_FOUND = 2,\n        /// <summary>\n        /// The system cannot find the path specified.\n        /// </summary>\n        ERROR_PATH_NOT_FOUND = 3,\n        /// <summary>\n        /// The system cannot open the file.\n        /// </summary>\n        ERROR_TOO_MANY_OPEN_FILES = 4,\n        /// <summary>\n        /// Access is denied.\n        /// </summary>\n        ERROR_ACCESS_DENIED = 5,\n        /// <summary>\n        /// The handle is invalid.\n        /// </summary>\n        ERROR_INVALID_HANDLE = 6,\n        /// <summary>\n        /// The storage control blocks were destroyed.\n        /// </summary>\n        ERROR_ARENA_TRASHED = 7,\n        /// <summary>\n        /// Not enough storage is available to process this command.\n        /// </summary>\n        ERROR_NOT_ENOUGH_MEMORY = 8,\n        /// <summary>\n        /// The storage control block address is invalid.\n        /// </summary>\n        ERROR_INVALID_BLOCK = 9,\n        /// <summary>\n        /// The environment is incorrect.\n        /// </summary>\n        ERROR_BAD_ENVIRONMENT = 10,\n        /// <summary>\n        /// An attempt was made to load a program with an incorrect format.\n        /// </summary>\n        ERROR_BAD_FORMAT = 11,\n        /// <summary>\n        /// The access code is invalid.\n        /// </summary>\n        ERROR_INVALID_ACCESS = 12,\n        /// <summary>\n        /// The data is invalid.\n        /// </summary>\n        ERROR_INVALID_DATA = 13,\n        /// <summary>\n        /// Not enough storage is available to complete this operation.\n        /// </summary>\n        ERROR_OUTOFMEMORY = 14,\n        /// <summary>\n        /// The system cannot find the drive specified.\n        /// </summary>\n        ERROR_INVALID_DRIVE = 15,\n        /// <summary>\n        /// The directory cannot be removed.\n        /// </summary>\n        ERROR_CURRENT_DIRECTORY = 16,\n        /// <summary>\n        /// The system cannot move the file to a different disk drive.\n        /// </summary>\n        ERROR_NOT_SAME_DEVICE = 17,\n        /// <summary>\n        /// There are no more files.\n        /// </summary>\n        ERROR_NO_MORE_FILES = 18,\n        /// <summary>\n        /// The media is write protected.\n        /// </summary>\n        ERROR_WRITE_PROTECT = 19,\n        /// <summary>\n        /// The system cannot find the device specified.\n        /// </summary>\n        ERROR_BAD_UNIT = 20,\n        /// <summary>\n        /// The device is not ready.\n        /// </summary>\n        ERROR_NOT_READY = 21,\n        /// <summary>\n        /// The device does not recognize the command.\n        /// </summary>\n        ERROR_BAD_COMMAND = 22,\n        /// <summary>\n        /// Data error (cyclic redundancy check).\n        /// </summary>\n        ERROR_CRC = 23,\n        /// <summary>\n        /// The program issued a command but the command length is incorrect.\n        /// </summary>\n        ERROR_BAD_LENGTH = 24,\n        /// <summary>\n        /// The drive cannot locate a specific area or track on the disk.\n        /// </summary>\n        ERROR_SEEK = 25,\n        /// <summary>\n        /// The specified disk or diskette cannot be accessed.\n        /// </summary>\n        ERROR_NOT_DOS_DISK = 26,\n        /// <summary>\n        /// The drive cannot find the sector requested.\n        /// </summary>\n        ERROR_SECTOR_NOT_FOUND = 27,\n        /// <summary>\n        /// The printer is out of paper.\n        /// </summary>\n        ERROR_OUT_OF_PAPER = 28,\n        /// <summary>\n        /// The system cannot write to the specified device.\n        /// </summary>\n        ERROR_WRITE_FAULT = 29,\n        /// <summary>\n        /// The system cannot read from the specified device.\n        /// </summary>\n        ERROR_READ_FAULT = 30,\n        /// <summary>\n        /// A device attached to the system is not functioning.\n        /// </summary>\n        ERROR_GEN_FAILURE = 31,\n        /// <summary>\n        /// The process cannot access the file because it is being used by another process.\n        /// </summary>\n        ERROR_SHARING_VIOLATION = 32,\n        /// <summary>\n        /// The process cannot access the file because another process has locked a portion of the file.\n        /// </summary>\n        ERROR_LOCK_VIOLATION = 33,\n        /// <summary>\n        /// The wrong diskette is in the drive.\n        /// Insert %2 (Volume Serial Number: %3) into drive %1.\n        /// </summary>\n        ERROR_WRONG_DISK = 34,\n        /// <summary>\n        /// Too many files opened for sharing.\n        /// </summary>\n        ERROR_SHARING_BUFFER_EXCEEDED = 36,\n        /// <summary>\n        /// Reached the end of the file.\n        /// </summary>\n        ERROR_HANDLE_EOF = 38,\n        /// <summary>\n        /// The disk is full.\n        /// </summary>\n        ERROR_HANDLE_DISK_FULL = 39,\n        /// <summary>\n        /// The request is not supported.\n        /// </summary>\n        ERROR_NOT_SUPPORTED = 50,\n        /// <summary>\n        /// Windows cannot find the network path. Verify that the network path is correct and the destination computer is not busy or turned off. If Windows still cannot find the network path, contact your network administrator.\n        /// </summary>\n        ERROR_REM_NOT_LIST = 51,\n        /// <summary>\n        /// You were not connected because a duplicate name exists on the network. Go to System in Control Panel to change the computer name and try again.\n        /// </summary>\n        ERROR_DUP_NAME = 52,\n        /// <summary>\n        /// The network path was not found.\n        /// </summary>\n        ERROR_BAD_NETPATH = 53,\n        /// <summary>\n        /// The network is busy.\n        /// </summary>\n        ERROR_NETWORK_BUSY = 54,\n        /// <summary>\n        /// The specified network resource or device is no longer available.\n        /// </summary>\n        ERROR_DEV_NOT_EXIST = 55,\n        /// <summary>\n        /// The network BIOS command limit has been reached.\n        /// </summary>\n        ERROR_TOO_MANY_CMDS = 56,\n        /// <summary>\n        /// A network adapter hardware error occurred.\n        /// </summary>\n        ERROR_ADAP_HDW_ERR = 57,\n        /// <summary>\n        /// The specified server cannot perform the requested operation.\n        /// </summary>\n        ERROR_BAD_NET_RESP = 58,\n        /// <summary>\n        /// An unexpected network error occurred.\n        /// </summary>\n        ERROR_UNEXP_NET_ERR = 59,\n        /// <summary>\n        /// The remote adapter is not compatible.\n        /// </summary>\n        ERROR_BAD_REM_ADAP = 60,\n        /// <summary>\n        /// The printer queue is full.\n        /// </summary>\n        ERROR_PRINTQ_FULL = 61,\n        /// <summary>\n        /// Space to store the file waiting to be printed is not available on the server.\n        /// </summary>\n        ERROR_NO_SPOOL_SPACE = 62,\n        /// <summary>\n        /// Your file waiting to be printed was deleted.\n        /// </summary>\n        ERROR_PRINT_CANCELLED = 63,\n        /// <summary>\n        /// The specified network name is no longer available.\n        /// </summary>\n        ERROR_NETNAME_DELETED = 64,\n        /// <summary>\n        /// Network access is denied.\n        /// </summary>\n        ERROR_NETWORK_ACCESS_DENIED = 65,\n        /// <summary>\n        /// The network resource type is not correct.\n        /// </summary>\n        ERROR_BAD_DEV_TYPE = 66,\n        /// <summary>\n        /// The network name cannot be found.\n        /// </summary>\n        ERROR_BAD_NET_NAME = 67,\n        /// <summary>\n        /// The name limit for the local computer network adapter card was exceeded.\n        /// </summary>\n        ERROR_TOO_MANY_NAMES = 68,\n        /// <summary>\n        /// The network BIOS session limit was exceeded.\n        /// </summary>\n        ERROR_TOO_MANY_SESS = 69,\n        /// <summary>\n        /// The remote server has been paused or is in the process of being started.\n        /// </summary>\n        ERROR_SHARING_PAUSED = 70,\n        /// <summary>\n        /// No more connections can be made to this remote computer at this time because there are already as many connections as the computer can accept.\n        /// </summary>\n        ERROR_REQ_NOT_ACCEP = 71,\n        /// <summary>\n        /// The specified printer or disk device has been paused.\n        /// </summary>\n        ERROR_REDIR_PAUSED = 72,\n        /// <summary>\n        /// The file exists.\n        /// </summary>\n        ERROR_FILE_EXISTS = 80,\n        /// <summary>\n        /// The directory or file cannot be created.\n        /// </summary>\n        ERROR_CANNOT_MAKE = 82,\n        /// <summary>\n        /// Fail on INT 24.\n        /// </summary>\n        ERROR_FAIL_I24 = 83,\n        /// <summary>\n        /// Storage to process this request is not available.\n        /// </summary>\n        ERROR_OUT_OF_STRUCTURES = 84,\n        /// <summary>\n        /// The local device name is already in use.\n        /// </summary>\n        ERROR_ALREADY_ASSIGNED = 85,\n        /// <summary>\n        /// The specified network password is not correct.\n        /// </summary>\n        ERROR_INVALID_PASSWORD = 86,\n        /// <summary>\n        /// The parameter is incorrect.\n        /// </summary>\n        ERROR_INVALID_PARAMETER = 87,\n        /// <summary>\n        /// A write fault occurred on the network.\n        /// </summary>\n        ERROR_NET_WRITE_FAULT = 88,\n        /// <summary>\n        /// The system cannot start another process at this time.\n        /// </summary>\n        ERROR_NO_PROC_SLOTS = 89,\n        /// <summary>\n        /// Cannot create another system semaphore.\n        /// </summary>\n        ERROR_TOO_MANY_SEMAPHORES = 100,\n        /// <summary>\n        /// The exclusive semaphore is owned by another process.\n        /// </summary>\n        ERROR_EXCL_SEM_ALREADY_OWNED = 101,\n        /// <summary>\n        /// The semaphore is set and cannot be closed.\n        /// </summary>\n        ERROR_SEM_IS_SET = 102,\n        /// <summary>\n        /// The semaphore cannot be set again.\n        /// </summary>\n        ERROR_TOO_MANY_SEM_REQUESTS = 103,\n        /// <summary>\n        /// Cannot request exclusive semaphores at interrupt time.\n        /// </summary>\n        ERROR_INVALID_AT_INTERRUPT_TIME = 104,\n        /// <summary>\n        /// The previous ownership of this semaphore has ended.\n        /// </summary>\n        ERROR_SEM_OWNER_DIED = 105,\n        /// <summary>\n        /// Insert the diskette for drive %1.\n        /// </summary>\n        ERROR_SEM_USER_LIMIT = 106,\n        /// <summary>\n        /// The program stopped because an alternate diskette was not inserted.\n        /// </summary>\n        ERROR_DISK_CHANGE = 107,\n        /// <summary>\n        /// The disk is in use or locked by another process.\n        /// </summary>\n        ERROR_DRIVE_LOCKED = 108,\n        /// <summary>\n        /// The pipe has been ended.\n        /// </summary>\n        ERROR_BROKEN_PIPE = 109,\n        /// <summary>\n        /// The system cannot open the device or file specified.\n        /// </summary>\n        ERROR_OPEN_FAILED = 110,\n        /// <summary>\n        /// The file name is too long.\n        /// </summary>\n        ERROR_BUFFER_OVERFLOW = 111,\n        /// <summary>\n        /// There is not enough space on the disk.\n        /// </summary>\n        ERROR_DISK_FULL = 112,\n        /// <summary>\n        /// No more internal file identifiers available.\n        /// </summary>\n        ERROR_NO_MORE_SEARCH_HANDLES = 113,\n        /// <summary>\n        /// The target internal file identifier is incorrect.\n        /// </summary>\n        ERROR_INVALID_TARGET_HANDLE = 114,\n        /// <summary>\n        /// The IOCTL call made by the application program is not correct.\n        /// </summary>\n        ERROR_INVALID_CATEGORY = 117,\n        /// <summary>\n        /// The verify-on-write switch parameter value is not correct.\n        /// </summary>\n        ERROR_INVALID_VERIFY_SWITCH = 118,\n        /// <summary>\n        /// The system does not support the command requested.\n        /// </summary>\n        ERROR_BAD_DRIVER_LEVEL = 119,\n        /// <summary>\n        /// This function is not supported on this system.\n        /// </summary>\n        ERROR_CALL_NOT_IMPLEMENTED = 120,\n        /// <summary>\n        /// The semaphore timeout period has expired.\n        /// </summary>\n        ERROR_SEM_TIMEOUT = 121,\n        /// <summary>\n        /// The data area passed to a system call is too small.\n        /// </summary>\n        ERROR_INSUFFICIENT_BUFFER = 122,\n        /// <summary>\n        /// The filename, directory name, or volume label syntax is incorrect.\n        /// </summary>\n        ERROR_INVALID_NAME = 123,\n        /// <summary>\n        /// The system call level is not correct.\n        /// </summary>\n        ERROR_INVALID_LEVEL = 124,\n        /// <summary>\n        /// The disk has no volume label.\n        /// </summary>\n        ERROR_NO_VOLUME_LABEL = 125,\n        /// <summary>\n        /// The specified module could not be found.\n        /// </summary>\n        ERROR_MOD_NOT_FOUND = 126,\n        /// <summary>\n        /// The specified procedure could not be found.\n        /// </summary>\n        ERROR_PROC_NOT_FOUND = 127,\n        /// <summary>\n        /// There are no child processes to wait for.\n        /// </summary>\n        ERROR_WAIT_NO_CHILDREN = 128,\n        /// <summary>\n        /// The %1 application cannot be run in Win32 mode.\n        /// </summary>\n        ERROR_CHILD_NOT_COMPLETE = 129,\n        /// <summary>\n        /// Attempt to use a file handle to an open disk partition for an operation other than raw disk I/O.\n        /// </summary>\n        ERROR_DIRECT_ACCESS_HANDLE = 130,\n        /// <summary>\n        /// An attempt was made to move the file pointer before the beginning of the file.\n        /// </summary>\n        ERROR_NEGATIVE_SEEK = 131,\n        /// <summary>\n        /// The file pointer cannot be set on the specified device or file.\n        /// </summary>\n        ERROR_SEEK_ON_DEVICE = 132,\n        /// <summary>\n        /// A JOIN or SUBST command cannot be used for a drive that contains previously joined drives.\n        /// </summary>\n        ERROR_IS_JOIN_TARGET = 133,\n        /// <summary>\n        /// An attempt was made to use a JOIN or SUBST command on a drive that has already been joined.\n        /// </summary>\n        ERROR_IS_JOINED = 134,\n        /// <summary>\n        /// An attempt was made to use a JOIN or SUBST command on a drive that has already been substituted.\n        /// </summary>\n        ERROR_IS_SUBSTED = 135,\n        /// <summary>\n        /// The system tried to delete the JOIN of a drive that is not joined.\n        /// </summary>\n        ERROR_NOT_JOINED = 136,\n        /// <summary>\n        /// The system tried to delete the substitution of a drive that is not substituted.\n        /// </summary>\n        ERROR_NOT_SUBSTED = 137,\n        /// <summary>\n        /// The system tried to join a drive to a directory on a joined drive.\n        /// </summary>\n        ERROR_JOIN_TO_JOIN = 138,\n        /// <summary>\n        /// The system tried to substitute a drive to a directory on a substituted drive.\n        /// </summary>\n        ERROR_SUBST_TO_SUBST = 139,\n        /// <summary>\n        /// The system tried to join a drive to a directory on a substituted drive.\n        /// </summary>\n        ERROR_JOIN_TO_SUBST = 140,\n        /// <summary>\n        /// The system tried to SUBST a drive to a directory on a joined drive.\n        /// </summary>\n        ERROR_SUBST_TO_JOIN = 141,\n        /// <summary>\n        /// The system cannot perform a JOIN or SUBST at this time.\n        /// </summary>\n        ERROR_BUSY_DRIVE = 142,\n        /// <summary>\n        /// The system cannot join or substitute a drive to or for a directory on the same drive.\n        /// </summary>\n        ERROR_SAME_DRIVE = 143,\n        /// <summary>\n        /// The directory is not a subdirectory of the root directory.\n        /// </summary>\n        ERROR_DIR_NOT_ROOT = 144,\n        /// <summary>\n        /// The directory is not empty.\n        /// </summary>\n        ERROR_DIR_NOT_EMPTY = 145,\n        /// <summary>\n        /// The path specified is being used in a substitute.\n        /// </summary>\n        ERROR_IS_SUBST_PATH = 146,\n        /// <summary>\n        /// Not enough resources are available to process this command.\n        /// </summary>\n        ERROR_IS_JOIN_PATH = 147,\n        /// <summary>\n        /// The path specified cannot be used at this time.\n        /// </summary>\n        ERROR_PATH_BUSY = 148,\n        /// <summary>\n        /// An attempt was made to join or substitute a drive for which a directory on the drive is the target of a previous substitute.\n        /// </summary>\n        ERROR_IS_SUBST_TARGET = 149,\n        /// <summary>\n        /// System trace information was not specified in your CONFIG.SYS file, or tracing is disallowed.\n        /// </summary>\n        ERROR_SYSTEM_TRACE = 150,\n        /// <summary>\n        /// The number of specified semaphore events for DosMuxSemWait is not correct.\n        /// </summary>\n        ERROR_INVALID_EVENT_COUNT = 151,\n        /// <summary>\n        /// DosMuxSemWait did not execute, too many semaphores are already set.\n        /// </summary>\n        ERROR_TOO_MANY_MUXWAITERS = 152,\n        /// <summary>\n        /// The DosMuxSemWait list is not correct.\n        /// </summary>\n        ERROR_INVALID_LIST_FORMAT = 153,\n        /// <summary>\n        /// The volume label you entered exceeds the label character limit of the target file system.\n        /// </summary>\n        ERROR_LABEL_TOO_Int32 = 154,\n        /// <summary>\n        /// Cannot create another thread.\n        /// </summary>\n        ERROR_TOO_MANY_TCBS = 155,\n        /// <summary>\n        /// The recipient process has refused the signal.\n        /// </summary>\n        ERROR_SIGNAL_REFUSED = 156,\n        /// <summary>\n        /// The segment is already discarded and cannot be locked.\n        /// </summary>\n        ERROR_DISCARDED = 157,\n        /// <summary>\n        /// The segment is already unlocked.\n        /// </summary>\n        ERROR_NOT_LOCKED = 158,\n        /// <summary>\n        /// The address for the thread ID is not correct.\n        /// </summary>\n        ERROR_BAD_THREADID_ADDR = 159,\n        /// <summary>\n        /// One or more arguments are not correct.\n        /// </summary>\n        ERROR_BAD_ARGUMENTS = 160,\n        /// <summary>\n        /// The specified path is invalid.\n        /// </summary>\n        ERROR_BAD_PATHNAME = 161,\n        /// <summary>\n        /// A signal is already pending.\n        /// </summary>\n        ERROR_SIGNAL_PENDING = 162,\n        /// <summary>\n        /// No more threads can be created in the system.\n        /// </summary>\n        ERROR_MAX_THRDS_REACHED = 164,\n        /// <summary>\n        /// Unable to lock a region of a file.\n        /// </summary>\n        ERROR_LOCK_FAILED = 167,\n        /// <summary>\n        /// The requested resource is in use.\n        /// </summary>\n        ERROR_BUSY = 170,\n        /// <summary>\n        /// A lock request was not outstanding for the supplied cancel region.\n        /// </summary>\n        ERROR_CANCEL_VIOLATION = 173,\n        /// <summary>\n        /// The file system does not support atomic changes to the lock type.\n        /// </summary>\n        ERROR_ATOMIC_LOCKS_NOT_SUPPORTED = 174,\n        /// <summary>\n        /// The system detected a segment number that was not correct.\n        /// </summary>\n        ERROR_INVALID_SEGMENT_NUMBER = 180,\n        /// <summary>\n        /// The operating system cannot run %1.\n        /// </summary>\n        ERROR_INVALID_ORDINAL = 182,\n        /// <summary>\n        /// Cannot create a file when that file already exists.\n        /// </summary>\n        ERROR_ALREADY_EXISTS = 183,\n        /// <summary>\n        /// The flag passed is not correct.\n        /// </summary>\n        ERROR_INVALID_FLAG_NUMBER = 186,\n        /// <summary>\n        /// The specified system semaphore name was not found.\n        /// </summary>\n        ERROR_SEM_NOT_FOUND = 187,\n        /// <summary>\n        /// The operating system cannot run %1.\n        /// </summary>\n        ERROR_INVALID_STARTING_CODESEG = 188,\n        /// <summary>\n        /// The operating system cannot run %1.\n        /// </summary>\n        ERROR_INVALID_STACKSEG = 189,\n        /// <summary>\n        /// The operating system cannot run %1.\n        /// </summary>\n        ERROR_INVALID_MODULETYPE = 190,\n        /// <summary>\n        /// Cannot run %1 in Win32 mode.\n        /// </summary>\n        ERROR_INVALID_EXE_SIGNATURE = 191,\n        /// <summary>\n        /// The operating system cannot run %1.\n        /// </summary>\n        ERROR_EXE_MARKED_INVALID = 192,\n        /// <summary>\n        /// %1 is not a valid Win32 application.\n\n        /// </summary>\n        ERROR_BAD_EXE_FORMAT = 193,\n        /// <summary>\n        /// The operating system cannot run %1.\n        /// </summary>\n        ERROR_ITERATED_DATA_EXCEEDS_64k = 194,\n        /// <summary>\n        /// The operating system cannot run %1.\n        /// </summary>\n        ERROR_INVALID_MINALLOCSIZE = 195,\n        /// <summary>\n        /// The operating system cannot run this application program.\n        /// </summary>\n        ERROR_DYNLINK_FROM_INVALID_RING = 196,\n        /// <summary>\n        /// The operating system is not presently configured to run this application.\n        /// </summary>\n        ERROR_IOPL_NOT_ENABLED = 197,\n        /// <summary>\n        /// The operating system cannot run %1.\n        /// </summary>\n        ERROR_INVALID_SEGDPL = 198,\n        /// <summary>\n        /// The operating system cannot run this application program.\n        /// </summary>\n        ERROR_AUTODATASEG_EXCEEDS_64k = 199,\n        /// <summary>\n        /// The code segment cannot be greater than or equal to 64K.\n        /// </summary>\n        ERROR_RING2SEG_MUST_BE_MOVABLE = 200,\n        /// <summary>\n        /// The operating system cannot run %1.\n        /// </summary>\n        ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201,\n        /// <summary>\n        /// The operating system cannot run %1.\n        /// </summary>\n        ERROR_INFLOOP_IN_RELOC_CHAIN = 202,\n        /// <summary>\n        /// The system could not find the environment option that was entered.\n        /// </summary>\n        ERROR_ENVVAR_NOT_FOUND = 203,\n        /// <summary>\n        /// No process in the command subtree has a signal handler.\n        /// </summary>\n        ERROR_NO_SIGNAL_SENT = 205,\n        /// <summary>\n        /// The filename or extension is too long.\n        /// </summary>\n        ERROR_FILENAME_EXCED_RANGE = 206,\n        /// <summary>\n        /// The ring 2 stack is in use.\n        /// </summary>\n        ERROR_RING2_STACK_IN_USE = 207,\n        /// <summary>\n        /// The global filename characters, * or ?, are entered incorrectly or too many global filename characters are specified.\n        /// </summary>\n        ERROR_META_EXPANSION_TOO_Int32 = 208,\n        /// <summary>\n        /// The signal being posted is not correct.\n        /// </summary>\n        ERROR_INVALID_SIGNAL_NUMBER = 209,\n        /// <summary>\n        /// The signal handler cannot be set.\n        /// </summary>\n        ERROR_THREAD_1_INACTIVE = 210,\n        /// <summary>\n        /// The segment is locked and cannot be reallocated.\n        /// </summary>\n        ERROR_LOCKED = 212,\n        /// <summary>\n        /// Too many dynamic-link modules are attached to this program or dynamic-link module.\n        /// </summary>\n        ERROR_TOO_MANY_MODULES = 214,\n        /// <summary>\n        /// Cannot nest calls to LoadModule.\n        /// </summary>\n        ERROR_NESTING_NOT_ALLOWED = 215,\n        /// <summary>\n        /// The image file %1 is valid, but is for a machine type other than the current machine.\n        /// </summary>\n        ERROR_EXE_MACHINE_TYPE_MISMATCH = 216,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY = 217,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY = 218,\n        /// <summary>\n        /// The pipe state is invalid.\n        /// </summary>\n        ERROR_BAD_PIPE = 230,\n        /// <summary>\n        /// All pipe instances are busy.\n        /// </summary>\n        ERROR_PIPE_BUSY = 231,\n        /// <summary>\n        /// The pipe is being closed.\n        /// </summary>\n        ERROR_NO_DATA = 232,\n        /// <summary>\n        /// No process is on the other end of the pipe.\n        /// </summary>\n        ERROR_PIPE_NOT_CONNECTED = 233,\n        /// <summary>\n        /// More data is available.\n        /// </summary>\n        ERROR_MORE_DATA = 234,\n        /// <summary>\n        /// The session was canceled.\n        /// </summary>\n        ERROR_VC_DISCONNECTED = 240,\n        /// <summary>\n        /// The specified extended attribute name was invalid.\n        /// </summary>\n        ERROR_INVALID_EA_NAME = 254,\n        /// <summary>\n        /// The extended attributes are inconsistent.\n        /// </summary>\n        ERROR_EA_LIST_INCONSISTENT = 255,\n        /// <summary>\n        /// The wait operation timed out.\n        /// </summary>\n        WAIT_TIMEOUT = 258,\n        /// <summary>\n        /// No more data is available.\n        /// </summary>\n        ERROR_NO_MORE_ITEMS = 259,\n        /// <summary>\n        /// The copy functions cannot be used.\n        /// </summary>\n        ERROR_CANNOT_COPY = 266,\n        /// <summary>\n        /// The directory name is invalid.\n        /// </summary>\n        ERROR_DIRECTORY = 267,\n        /// <summary>\n        /// The extended attributes did not fit in the buffer.\n        /// </summary>\n        ERROR_EAS_DIDNT_FIT = 275,\n        /// <summary>\n        /// The extended attribute file on the mounted file system is corrupt.\n        /// </summary>\n        ERROR_EA_FILE_CORRUPT = 276,\n        /// <summary>\n        /// The extended attribute table file is full.\n        /// </summary>\n        ERROR_EA_TABLE_FULL = 277,\n        /// <summary>\n        /// The specified extended attribute handle is invalid.\n        /// </summary>\n        ERROR_INVALID_EA_HANDLE = 278,\n        /// <summary>\n        /// The mounted file system does not support extended attributes.\n        /// </summary>\n        ERROR_EAS_NOT_SUPPORTED = 282,\n        /// <summary>\n        /// Attempt to release mutex not owned by caller.\n        /// </summary>\n        ERROR_NOT_OWNER = 288,\n        /// <summary>\n        /// Too many posts were made to a semaphore.\n        /// </summary>\n        ERROR_TOO_MANY_POSTS = 298,\n        /// <summary>\n        /// Only part of a ReadProcessMemory or WriteProcessMemory request was completed.\n        /// </summary>\n        ERROR_PARTIAL_COPY = 299,\n        /// <summary>\n        /// The oplock request is denied.\n        /// </summary>\n        ERROR_OPLOCK_NOT_GRANTED = 300,\n        /// <summary>\n        /// An invalid oplock acknowledgment was received by the system.\n        /// </summary>\n        ERROR_INVALID_OPLOCK_PROTOCOL = 301,\n        /// <summary>\n        /// The volume is too fragmented to complete this operation.\n        /// </summary>\n        ERROR_DISK_TOO_FRAGMENTED = 302,\n        /// <summary>\n        /// The file cannot be opened because it is in the process of being deleted.\n        /// </summary>\n        ERROR_DELETE_PENDING = 303,\n        /// <summary>\n        /// The system cannot find message text for message number 0x%1 in the message file for %2.\n        /// </summary>\n        ERROR_MR_MID_NOT_FOUND = 317,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_SCOPE_NOT_FOUND = 318,\n        /// <summary>\n        /// Attempt to access invalid address.\n        /// </summary>\n        ERROR_INVALID_ADDRESS = 487,\n        /// <summary>\n        /// Arithmetic result exceeded 32 bits.\n        /// </summary>\n        ERROR_ARITHMETIC_OVERFLOW = 534,\n        /// <summary>\n        /// There is a process on other end of the pipe.\n        /// </summary>\n        ERROR_PIPE_CONNECTED = 535,\n        /// <summary>\n        /// Waiting for a process to open the other end of the pipe.\n        /// </summary>\n        ERROR_PIPE_LISTENING = 536,\n        /// <summary>\n        /// Access to the extended attribute was denied.\n        /// </summary>\n        ERROR_EA_ACCESS_DENIED = 994,\n        /// <summary>\n        /// The I/O operation has been aborted because of either a thread exit or an application request.\n        /// </summary>\n        ERROR_OPERATION_ABORTED = 995,\n        /// <summary>\n        /// Overlapped I/O event is not in a signaled state.\n        /// </summary>\n        ERROR_IO_INCOMPLETE = 996,\n        /// <summary>\n        /// Overlapped I/O operation is in progress.\n        /// </summary>\n        ERROR_IO_PENDING = 997,\n        /// <summary>\n        /// Invalid access to memory location.\n        /// </summary>\n        ERROR_NOACCESS = 998,\n        /// <summary>\n        /// Error performing inpage operation.\n        /// </summary>\n        ERROR_SWAPERROR = 999,\n        /// <summary>\n        /// Recursion too deep, the stack overflowed.\n        /// </summary>\n        ERROR_STACK_OVERFLOW = 1001,\n        /// <summary>\n        /// The window cannot act on the sent message.\n        /// </summary>\n        ERROR_INVALID_MESSAGE = 1002,\n        /// <summary>\n        /// Cannot complete this function.\n        /// </summary>\n        ERROR_CAN_NOT_COMPLETE = 1003,\n        /// <summary>\n        /// Invalid flags.\n        /// </summary>\n        ERROR_INVALID_FLAGS = 1004,\n        /// <summary>\n        /// The volume does not contain a recognized file system.\n        /// Please make sure that all required file system drivers are loaded and that the volume is not corrupted.\n        /// </summary>\n        ERROR_UNRECOGNIZED_VOLUME = 1005,\n        /// <summary>\n        /// The volume for a file has been externally altered so that the opened file is no longer valid.\n        /// </summary>\n        ERROR_FILE_INVALID = 1006,\n        /// <summary>\n        /// The requested operation cannot be performed in full-screen mode.\n        /// </summary>\n        ERROR_FULLSCREEN_MODE = 1007,\n        /// <summary>\n        /// An attempt was made to reference a token that does not exist.\n        /// </summary>\n        ERROR_NO_TOKEN = 1008,\n        /// <summary>\n        /// The configuration registry database is corrupt.\n        /// </summary>\n        ERROR_BADDB = 1009,\n        /// <summary>\n        /// The configuration registry key is invalid.\n        /// </summary>\n        ERROR_BADKEY = 1010,\n        /// <summary>\n        /// The configuration registry key could not be opened.\n        /// </summary>\n        ERROR_CANTOPEN = 1011,\n        /// <summary>\n        /// The configuration registry key could not be read.\n        /// </summary>\n        ERROR_CANTREAD = 1012,\n        /// <summary>\n        /// The configuration registry key could not be written.\n        /// </summary>\n        ERROR_CANTWRITE = 1013,\n        /// <summary>\n        /// One of the files in the registry database had to be recovered by use of a log or alternate copy. The recovery was successful.\n        /// </summary>\n        ERROR_REGISTRY_RECOVERED = 1014,\n        /// <summary>\n        /// The registry is corrupted. The structure of one of the files containing registry data is corrupted, or the system's memory image of the file is corrupted, or the file could not be recovered because the alternate copy or log was absent or corrupted.\n        /// </summary>\n        ERROR_REGISTRY_CORRUPT = 1015,\n        /// <summary>\n        /// An I/O operation initiated by the registry failed unrecoverably. The registry could not read in, or write out, or flush, one of the files that contain the system's image of the registry.\n        /// </summary>\n        ERROR_REGISTRY_IO_FAILED = 1016,\n        /// <summary>\n        /// The system has attempted to load or restore a file into the registry, but the specified file is not in a registry file format.\n        /// </summary>\n        ERROR_NOT_REGISTRY_FILE = 1017,\n        /// <summary>\n        /// Illegal operation attempted on a registry key that has been marked for deletion.\n        /// </summary>\n        ERROR_KEY_DELETED = 1018,\n        /// <summary>\n        /// System could not allocate the required space in a registry log.\n        /// </summary>\n        ERROR_NO_LOG_SPACE = 1019,\n        /// <summary>\n        /// Cannot create a symbolic link in a registry key that already has subkeys or values.\n        /// </summary>\n        ERROR_KEY_HAS_CHILDREN = 1020,\n        /// <summary>\n        /// Cannot create a stable subkey under a volatile parent key.\n        /// </summary>\n        ERROR_CHILD_MUST_BE_VOLATILE = 1021,\n        /// <summary>\n        /// A notify change request is being completed and the information is not being returned in the caller's buffer. The caller now needs to enumerate the files to find the changes.\n        /// </summary>\n        ERROR_NOTIFY_ENUM_DIR = 1022,\n        /// <summary>\n        /// A stop control has been sent to a service that other running services are dependent on.\n        /// </summary>\n        ERROR_DEPENDENT_SERVICES_RUNNING = 1051,\n        /// <summary>\n        /// The requested control is not valid for this service.\n        /// </summary>\n        ERROR_INVALID_SERVICE_CONTROL = 1052,\n        /// <summary>\n        /// The service did not respond to the start or control request in a timely fashion.\n        /// </summary>\n        ERROR_SERVICE_REQUEST_TIMEOUT = 1053,\n        /// <summary>\n        /// A thread could not be created for the service.\n        /// </summary>\n        ERROR_SERVICE_NO_THREAD = 1054,\n        /// <summary>\n        /// The service database is locked.\n        /// </summary>\n        ERROR_SERVICE_DATABASE_LOCKED = 1055,\n        /// <summary>\n        /// An instance of the service is already running.\n        /// </summary>\n        ERROR_SERVICE_ALREADY_RUNNING = 1056,\n        /// <summary>\n        /// The account name is invalid or does not exist, or the password is invalid for the account name specified.\n        /// </summary>\n        ERROR_INVALID_SERVICE_ACCOUNT = 1057,\n        /// <summary>\n        /// The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.\n        /// </summary>\n        ERROR_SERVICE_DISABLED = 1058,\n        /// <summary>\n        /// Circular service dependency was specified.\n        /// </summary>\n        ERROR_CIRCULAR_DEPENDENCY = 1059,\n        /// <summary>\n        /// The specified service does not exist as an installed service.\n        /// </summary>\n        ERROR_SERVICE_DOES_NOT_EXIST = 1060,\n        /// <summary>\n        /// The service cannot accept control messages at this time.\n        /// </summary>\n        ERROR_SERVICE_CANNOT_ACCEPT_CTRL = 1061,\n        /// <summary>\n        /// The service has not been started.\n        /// </summary>\n        ERROR_SERVICE_NOT_ACTIVE = 1062,\n        /// <summary>\n        /// The service process could not connect to the service controller.\n        /// </summary>\n        ERROR_FAILED_SERVICE_CONTROLLER_CONNECT = 1063,\n        /// <summary>\n        /// An exception occurred in the service when handling the control request.\n        /// </summary>\n        ERROR_EXCEPTION_IN_SERVICE = 1064,\n        /// <summary>\n        /// The database specified does not exist.\n        /// </summary>\n        ERROR_DATABASE_DOES_NOT_EXIST = 1065,\n        /// <summary>\n        /// The service has returned a service-specific error code.\n        /// </summary>\n        ERROR_SERVICE_SPECIFIC_ERROR = 1066,\n        /// <summary>\n        /// The process terminated unexpectedly.\n        /// </summary>\n        ERROR_PROCESS_ABORTED = 1067,\n        /// <summary>\n        /// The dependency service or group failed to start.\n        /// </summary>\n        ERROR_SERVICE_DEPENDENCY_FAIL = 1068,\n        /// <summary>\n        /// The service did not start due to a logon failure.\n        /// </summary>\n        ERROR_SERVICE_LOGON_FAILED = 1069,\n        /// <summary>\n        /// After starting, the service hung in a start-pending state.\n        /// </summary>\n        ERROR_SERVICE_START_HANG = 1070,\n        /// <summary>\n        /// The specified service database lock is invalid.\n        /// </summary>\n        ERROR_INVALID_SERVICE_LOCK = 1071,\n        /// <summary>\n        /// The specified service has been marked for deletion.\n        /// </summary>\n        ERROR_SERVICE_MARKED_FOR_DELETE = 1072,\n        /// <summary>\n        /// The specified service already exists.\n        /// </summary>\n        ERROR_SERVICE_EXISTS = 1073,\n        /// <summary>\n        /// The system is currently running with the last-known-good configuration.\n        /// </summary>\n        ERROR_ALREADY_RUNNING_LKG = 1074,\n        /// <summary>\n        /// The dependency service does not exist or has been marked for deletion.\n        /// </summary>\n        ERROR_SERVICE_DEPENDENCY_DELETED = 1075,\n        /// <summary>\n        /// The current boot has already been accepted for use as the last-known-good control set.\n        /// </summary>\n        ERROR_BOOT_ALREADY_ACCEPTED = 1076,\n        /// <summary>\n        /// No attempts to start the service have been made since the last boot.\n        /// </summary>\n        ERROR_SERVICE_NEVER_STARTED = 1077,\n        /// <summary>\n        /// The name is already in use as either a service name or a service display name.\n        /// </summary>\n        ERROR_DUPLICATE_SERVICE_NAME = 1078,\n        /// <summary>\n        /// The account specified for this service is different from the account specified for other services running in the same process.\n        /// </summary>\n        ERROR_DIFFERENT_SERVICE_ACCOUNT = 1079,\n        /// <summary>\n        /// Failure actions can only be set for Win32 services, not for drivers.\n        /// </summary>\n        ERROR_CANNOT_DETECT_DRIVER_FAILURE = 1080,\n        /// <summary>\n        /// This service runs in the same process as the service control manager.\n        /// Therefore, the service control manager cannot take action if this service's process terminates unexpectedly.\n        /// </summary>\n        ERROR_CANNOT_DETECT_PROCESS_ABORT = 1081,\n        /// <summary>\n        /// No recovery program has been configured for this service.\n        /// </summary>\n        ERROR_NO_RECOVERY_PROGRAM = 1082,\n        /// <summary>\n        /// The executable program that this service is configured to run in does not implement the service.\n        /// </summary>\n        ERROR_SERVICE_NOT_IN_EXE = 1083,\n        /// <summary>\n        /// This service cannot be started in Safe Mode\n        /// </summary>\n        ERROR_NOT_SAFEBOOT_SERVICE = 1084,\n        /// <summary>\n        /// The physical end of the tape has been reached.\n        /// </summary>\n        ERROR_END_OF_MEDIA = 1100,\n        /// <summary>\n        /// A tape access reached a filemark.\n        /// </summary>\n        ERROR_FILEMARK_DETECTED = 1101,\n        /// <summary>\n        /// The beginning of the tape or a partition was encountered.\n        /// </summary>\n        ERROR_BEGINNING_OF_MEDIA = 1102,\n        /// <summary>\n        /// A tape access reached the end of a set of files.\n        /// </summary>\n        ERROR_SETMARK_DETECTED = 1103,\n        /// <summary>\n        /// No more data is on the tape.\n        /// </summary>\n        ERROR_NO_DATA_DETECTED = 1104,\n        /// <summary>\n        /// Tape could not be partitioned.\n        /// </summary>\n        ERROR_PARTITION_FAILURE = 1105,\n        /// <summary>\n        /// When accessing a new tape of a multivolume partition, the current block size is incorrect.\n        /// </summary>\n        ERROR_INVALID_BLOCK_LENGTH = 1106,\n        /// <summary>\n        /// Tape partition information could not be found when loading a tape.\n        /// </summary>\n        ERROR_DEVICE_NOT_PARTITIONED = 1107,\n        /// <summary>\n        /// Unable to lock the media eject mechanism.\n        /// </summary>\n        ERROR_UNABLE_TO_LOCK_MEDIA = 1108,\n        /// <summary>\n        /// Unable to unload the media.\n        /// </summary>\n        ERROR_UNABLE_TO_UNLOAD_MEDIA = 1109,\n        /// <summary>\n        /// The media in the drive may have changed.\n        /// </summary>\n        ERROR_MEDIA_CHANGED = 1110,\n        /// <summary>\n        /// The I/O bus was reset.\n        /// </summary>\n        ERROR_BUS_RESET = 1111,\n        /// <summary>\n        /// No media in drive.\n        /// </summary>\n        ERROR_NO_MEDIA_IN_DRIVE = 1112,\n        /// <summary>\n        /// No mapping for the Unicode character exists in the target multi-byte code page.\n        /// </summary>\n        ERROR_NO_UNICODE_TRANSLATION = 1113,\n        /// <summary>\n        /// A dynamic link library (DLL) initialization routine failed.\n        /// </summary>\n        ERROR_DLL_INIT_FAILED = 1114,\n        /// <summary>\n        /// A system shutdown is in progress.\n        /// </summary>\n        ERROR_SHUTDOWN_IN_PROGRESS = 1115,\n        /// <summary>\n        /// Unable to abort the system shutdown because no shutdown was in progress.\n        /// </summary>\n        ERROR_NO_SHUTDOWN_IN_PROGRESS = 1116,\n        /// <summary>\n        /// The request could not be performed because of an I/O device error.\n        /// </summary>\n        ERROR_IO_DEVICE = 1117,\n        /// <summary>\n        /// No serial device was successfully initialized. The serial driver will unload.\n        /// </summary>\n        ERROR_SERIAL_NO_DEVICE = 1118,\n        /// <summary>\n        /// Unable to open a device that was sharing an interrupt request (IRQ) with other devices. At least one other device that uses that IRQ was already opened.\n        /// </summary>\n        ERROR_IRQ_BUSY = 1119,\n        /// <summary>\n        /// A serial I/O operation was completed by another write to the serial port.\n        /// (The IOCTL_SERIAL_XOFF_COUNTER reached zero.)\n        /// </summary>\n        ERROR_MORE_WRITES = 1120,\n        /// <summary>\n        /// A serial I/O operation completed because the timeout period expired.\n        /// (The IOCTL_SERIAL_XOFF_COUNTER did not reach zero.)\n        /// </summary>\n        ERROR_COUNTER_TIMEOUT = 1121,\n        /// <summary>\n        /// No ID address mark was found on the floppy disk.\n        /// </summary>\n        ERROR_FLOPPY_ID_MARK_NOT_FOUND = 1122,\n        /// <summary>\n        /// Mismatch between the floppy disk sector ID field and the floppy disk controller track address.\n        /// </summary>\n        ERROR_FLOPPY_WRONG_CYLINDER = 1123,\n        /// <summary>\n        /// The floppy disk controller reported an error that is not recognized by the floppy disk driver.\n        /// </summary>\n        ERROR_FLOPPY_UNKNOWN_ERROR = 1124,\n        /// <summary>\n        /// The floppy disk controller returned inconsistent results in its registers.\n        /// </summary>\n        ERROR_FLOPPY_BAD_REGISTERS = 1125,\n        /// <summary>\n        /// While accessing the hard disk, a recalibrate operation failed, even after retries.\n        /// </summary>\n        ERROR_DISK_RECALIBRATE_FAILED = 1126,\n        /// <summary>\n        /// While accessing the hard disk, a disk operation failed even after retries.\n        /// </summary>\n        ERROR_DISK_OPERATION_FAILED = 1127,\n        /// <summary>\n        /// While accessing the hard disk, a disk controller reset was needed, but even that failed.\n        /// </summary>\n        ERROR_DISK_RESET_FAILED = 1128,\n        /// <summary>\n        /// Physical end of tape encountered.\n        /// </summary>\n        ERROR_EOM_OVERFLOW = 1129,\n        /// <summary>\n        /// Not enough server storage is available to process this command.\n        /// </summary>\n        ERROR_NOT_ENOUGH_SERVER_MEMORY = 1130,\n        /// <summary>\n        /// A potential deadlock condition has been detected.\n        /// </summary>\n        ERROR_POSSIBLE_DEADLOCK = 1131,\n        /// <summary>\n        /// The base address or the file offset specified does not have the proper alignment.\n        /// </summary>\n        ERROR_MAPPED_ALIGNMENT = 1132,\n        /// <summary>\n        /// An attempt to change the system power state was vetoed by another application or driver.\n        /// </summary>\n        ERROR_SET_POWER_STATE_VETOED = 1140,\n        /// <summary>\n        /// The system BIOS failed an attempt to change the system power state.\n        /// </summary>\n        ERROR_SET_POWER_STATE_FAILED = 1141,\n        /// <summary>\n        /// An attempt was made to create more links on a file than the file system supports.\n        /// </summary>\n        ERROR_TOO_MANY_LINKS = 1142,\n        /// <summary>\n        /// The specified program requires a newer version of Windows.\n        /// </summary>\n        ERROR_OLD_WIN_VERSION = 1150,\n        /// <summary>\n        /// The specified program is not a Windows or MS-DOS program.\n        /// </summary>\n        ERROR_APP_WRONG_OS = 1151,\n        /// <summary>\n        /// Cannot start more than one instance of the specified program.\n        /// </summary>\n        ERROR_SINGLE_INSTANCE_APP = 1152,\n        /// <summary>\n        /// The specified program was written for an earlier version of Windows.\n        /// </summary>\n        ERROR_RMODE_APP = 1153,\n        /// <summary>\n        /// One of the library files needed to run this application is damaged.\n        /// </summary>\n        ERROR_INVALID_DLL = 1154,\n        /// <summary>\n        /// No application is associated with the specified file for this operation.\n        /// </summary>\n        ERROR_NO_ASSOCIATION = 1155,\n        /// <summary>\n        /// An error occurred in sending the command to the application.\n        /// </summary>\n        ERROR_DDE_FAIL = 1156,\n        /// <summary>\n        /// One of the library files needed to run this application cannot be found.\n        /// </summary>\n        ERROR_DLL_NOT_FOUND = 1157,\n        /// <summary>\n        /// The current process has used all of its system allowance of handles for Window Manager objects.\n        /// </summary>\n        ERROR_NO_MORE_USER_HANDLES = 1158,\n        /// <summary>\n        /// The message can be used only with synchronous operations.\n        /// </summary>\n        ERROR_MESSAGE_SYNC_ONLY = 1159,\n        /// <summary>\n        /// The indicated source element has no media.\n        /// </summary>\n        ERROR_SOURCE_ELEMENT_EMPTY = 1160,\n        /// <summary>\n        /// The indicated destination element already contains media.\n        /// </summary>\n        ERROR_DESTINATION_ELEMENT_FULL = 1161,\n        /// <summary>\n        /// The indicated element does not exist.\n        /// </summary>\n        ERROR_ILLEGAL_ELEMENT_ADDRESS = 1162,\n        /// <summary>\n        /// The indicated element is part of a magazine that is not present.\n        /// </summary>\n        ERROR_MAGAZINE_NOT_PRESENT = 1163,\n        /// <summary>\n        /// The indicated device requires reinitialization due to hardware errors.\n        /// </summary>\n        ERROR_DEVICE_REINITIALIZATION_NEEDED = 1164,\n        /// <summary>\n        /// The device has indicated that cleaning is required before further operations are attempted.\n        /// </summary>\n        ERROR_DEVICE_REQUIRES_CLEANING = 1165,\n        /// <summary>\n        /// The device has indicated that its door is open.\n        /// </summary>\n        ERROR_DEVICE_DOOR_OPEN = 1166,\n        /// <summary>\n        /// The device is not connected.\n        /// </summary>\n        ERROR_DEVICE_NOT_CONNECTED = 1167,\n        /// <summary>\n        /// Element not found.\n        /// </summary>\n        ERROR_NOT_FOUND = 1168,\n        /// <summary>\n        /// There was no match for the specified key in the index.\n        /// </summary>\n        ERROR_NO_MATCH = 1169,\n        /// <summary>\n        /// The property set specified does not exist on the object.\n        /// </summary>\n        ERROR_SET_NOT_FOUND = 1170,\n        /// <summary>\n        /// The point passed to GetMouseMovePoints is not in the buffer.\n        /// </summary>\n        ERROR_POINT_NOT_FOUND = 1171,\n        /// <summary>\n        /// The tracking (workstation) service is not running.\n        /// </summary>\n        ERROR_NO_TRACKING_SERVICE = 1172,\n        /// <summary>\n        /// The Volume ID could not be found.\n        /// </summary>\n        ERROR_NO_VOLUME_ID = 1173,\n        /// <summary>\n        /// Unable to remove the file to be replaced.\n        /// </summary>\n        ERROR_UNABLE_TO_REMOVE_REPLACED = 1175,\n        /// <summary>\n        /// Unable to move the replacement file to the file to be replaced. The file to be replaced has retained its original name.\n        /// </summary>\n        ERROR_UNABLE_TO_MOVE_REPLACEMENT = 1176,\n        /// <summary>\n        /// Unable to move the replacement file to the file to be replaced. The file to be replaced has been renamed using the backup name.\n        /// </summary>\n        ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 = 1177,\n        /// <summary>\n        /// The volume change journal is being deleted.\n        /// </summary>\n        ERROR_JOURNAL_DELETE_IN_PROGRESS = 1178,\n        /// <summary>\n        /// The volume change journal is not active.\n        /// </summary>\n        ERROR_JOURNAL_NOT_ACTIVE = 1179,\n        /// <summary>\n        /// A file was found, but it may not be the correct file.\n        /// </summary>\n        ERROR_POTENTIAL_FILE_FOUND = 1180,\n        /// <summary>\n        /// The journal entry has been deleted from the journal.\n        /// </summary>\n        ERROR_JOURNAL_ENTRY_DELETED = 1181,\n        /// <summary>\n        /// The specified device name is invalid.\n        /// </summary>\n        ERROR_BAD_DEVICE = 1200,\n        /// <summary>\n        /// The device is not currently connected but it is a remembered connection.\n        /// </summary>\n        ERROR_CONNECTION_UNAVAIL = 1201,\n        /// <summary>\n        /// The local device name has a remembered connection to another network resource.\n        /// </summary>\n        ERROR_DEVICE_ALREADY_REMEMBERED = 1202,\n        /// <summary>\n        /// No network provider accepted the given network path.\n        /// </summary>\n        ERROR_NO_NET_OR_BAD_PATH = 1203,\n        /// <summary>\n        /// The specified network provider name is invalid.\n        /// </summary>\n        ERROR_BAD_PROVIDER = 1204,\n        /// <summary>\n        /// Unable to open the network connection profile.\n        /// </summary>\n        ERROR_CANNOT_OPEN_PROFILE = 1205,\n        /// <summary>\n        /// The network connection profile is corrupted.\n        /// </summary>\n        ERROR_BAD_PROFILE = 1206,\n        /// <summary>\n        /// Cannot enumerate a noncontainer.\n        /// </summary>\n        ERROR_NOT_CONTAINER = 1207,\n        /// <summary>\n        /// An extended error has occurred.\n        /// </summary>\n        ERROR_EXTENDED_ERROR = 1208,\n        /// <summary>\n        /// The format of the specified group name is invalid.\n        /// </summary>\n        ERROR_INVALID_GROUPNAME = 1209,\n        /// <summary>\n        /// The format of the specified computer name is invalid.\n        /// </summary>\n        ERROR_INVALID_COMPUTERNAME = 1210,\n        /// <summary>\n        /// The format of the specified event name is invalid.\n        /// </summary>\n        ERROR_INVALID_EVENTNAME = 1211,\n        /// <summary>\n        /// The format of the specified domain name is invalid.\n        /// </summary>\n        ERROR_INVALID_DOMAINNAME = 1212,\n        /// <summary>\n        /// The format of the specified service name is invalid.\n        /// </summary>\n        ERROR_INVALID_SERVICENAME = 1213,\n        /// <summary>\n        /// The format of the specified network name is invalid.\n        /// </summary>\n        ERROR_INVALID_NETNAME = 1214,\n        /// <summary>\n        /// The format of the specified share name is invalid.\n        /// </summary>\n        ERROR_INVALID_SHARENAME = 1215,\n        /// <summary>\n        /// The format of the specified password is invalid.\n        /// </summary>\n        ERROR_INVALID_PASSUInt16NAME = 1216,\n        /// <summary>\n        /// The format of the specified message name is invalid.\n        /// </summary>\n        ERROR_INVALID_MESSAGENAME = 1217,\n        /// <summary>\n        /// The format of the specified message destination is invalid.\n        /// </summary>\n        ERROR_INVALID_MESSAGEDEST = 1218,\n        /// <summary>\n        /// Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed. Disconnect all previous connections to the server or shared resource and try again..\n        /// </summary>\n        ERROR_SESSION_CREDENTIAL_CONFLICT = 1219,\n        /// <summary>\n        /// An attempt was made to establish a session to a network server, but there are already too many sessions established to that server.\n        /// </summary>\n        ERROR_REMOTE_SESSION_LIMIT_EXCEEDED = 1220,\n        /// <summary>\n        /// The workgroup or domain name is already in use by another computer on the network.\n        /// </summary>\n        ERROR_DUP_DOMAINNAME = 1221,\n        /// <summary>\n        /// The network is not present or not started.\n        /// </summary>\n        ERROR_NO_NETWORK = 1222,\n        /// <summary>\n        /// The operation was canceled by the user.\n        /// </summary>\n        ERROR_CANCELLED = 1223,\n        /// <summary>\n        /// The requested operation cannot be performed on a file with a user-mapped section open.\n        /// </summary>\n        ERROR_USER_MAPPED_FILE = 1224,\n        /// <summary>\n        /// The remote system refused the network connection.\n        /// </summary>\n        ERROR_CONNECTION_REFUSED = 1225,\n        /// <summary>\n        /// The network connection was gracefully closed.\n        /// </summary>\n        ERROR_GRACEFUL_DISCONNECT = 1226,\n        /// <summary>\n        /// The network transport endpoint already has an address associated with it.\n        /// </summary>\n        ERROR_ADDRESS_ALREADY_ASSOCIATED = 1227,\n        /// <summary>\n        /// An address has not yet been associated with the network endpoint.\n        /// </summary>\n        ERROR_ADDRESS_NOT_ASSOCIATED = 1228,\n        /// <summary>\n        /// An operation was attempted on a nonexistent network connection.\n        /// </summary>\n        ERROR_CONNECTION_INVALID = 1229,\n        /// <summary>\n        /// An invalid operation was attempted on an active network connection.\n        /// </summary>\n        ERROR_CONNECTION_ACTIVE = 1230,\n        /// <summary>\n        /// The network location cannot be reached. For information about network troubleshooting, see Windows Help.\n        /// </summary>\n        ERROR_NETWORK_UNREACHABLE = 1231,\n        /// <summary>\n        /// The network location cannot be reached. For information about network troubleshooting, see Windows Help.\n        /// </summary>\n        ERROR_HOST_UNREACHABLE = 1232,\n        /// <summary>\n        /// The network location cannot be reached. For information about network troubleshooting, see Windows Help.\n        /// </summary>\n        ERROR_PROTOCOL_UNREACHABLE = 1233,\n        /// <summary>\n        /// No service is operating at the destination network endpoint on the remote system.\n        /// </summary>\n        ERROR_PORT_UNREACHABLE = 1234,\n        /// <summary>\n        /// The request was aborted.\n        /// </summary>\n        ERROR_REQUEST_ABORTED = 1235,\n        /// <summary>\n        /// The network connection was aborted by the local system.\n        /// </summary>\n        ERROR_CONNECTION_ABORTED = 1236,\n        /// <summary>\n        /// The operation could not be completed. A retry should be performed.\n        /// </summary>\n        ERROR_RETRY = 1237,\n        /// <summary>\n        /// A connection to the server could not be made because the limit on the number of concurrent connections for this account has been reached.\n        /// </summary>\n        ERROR_CONNECTION_COUNT_LIMIT = 1238,\n        /// <summary>\n        /// Attempting to log in during an unauthorized time of day for this account.\n        /// </summary>\n        ERROR_LOGIN_TIME_RESTRICTION = 1239,\n        /// <summary>\n        /// The account is not authorized to log in from this station.\n        /// </summary>\n        ERROR_LOGIN_WKSTA_RESTRICTION = 1240,\n        /// <summary>\n        /// The network address could not be used for the operation requested.\n        /// </summary>\n        ERROR_INCORRECT_ADDRESS = 1241,\n        /// <summary>\n        /// The service is already registered.\n        /// </summary>\n        ERROR_ALREADY_REGISTERED = 1242,\n        /// <summary>\n        /// The specified service does not exist.\n        /// </summary>\n        ERROR_SERVICE_NOT_FOUND = 1243,\n        /// <summary>\n        /// The operation being requested was not performed because the user has not been authenticated.\n        /// </summary>\n        ERROR_NOT_AUTHENTICATED = 1244,\n        /// <summary>\n        /// The operation being requested was not performed because the user has not logged on to the network.\n        /// The specified service does not exist.\n        /// </summary>\n        ERROR_NOT_LOGGED_ON = 1245,\n        /// <summary>\n        /// Continue with work in progress.\n        /// </summary>\n        ERROR_CONTINUE = 1246,\n        /// <summary>\n        /// An attempt was made to perform an initialization operation when initialization has already been completed.\n        /// </summary>\n        ERROR_ALREADY_INITIALIZED = 1247,\n        /// <summary>\n        /// No more local devices.\n        /// </summary>\n        ERROR_NO_MORE_DEVICES = 1248,\n        /// <summary>\n        /// The specified site does not exist.\n        /// </summary>\n        ERROR_NO_SUCH_SITE = 1249,\n        /// <summary>\n        /// A domain controller with the specified name already exists.\n        /// </summary>\n        ERROR_DOMAIN_CONTROLLER_EXISTS = 1250,\n        /// <summary>\n        /// This operation is supported only when you are connected to the server.\n        /// </summary>\n        ERROR_ONLY_IF_CONNECTED = 1251,\n        /// <summary>\n        /// The group policy framework should call the extension even if there are no changes.\n        /// </summary>\n        ERROR_OVERRIDE_NOCHANGES = 1252,\n        /// <summary>\n        /// The specified user does not have a valid profile.\n        /// </summary>\n        ERROR_BAD_USER_PROFILE = 1253,\n        /// <summary>\n        /// This operation is not supported on a Microsoft Small Business Server\n        /// </summary>\n        ERROR_NOT_SUPPORTED_ON_SBS = 1254,\n        /// <summary>\n        /// The server machine is shutting down.\n        /// </summary>\n        ERROR_SERVER_SHUTDOWN_IN_PROGRESS = 1255,\n        /// <summary>\n        /// The remote system is not available. For information about network troubleshooting, see Windows Help.\n        /// </summary>\n        ERROR_HOST_DOWN = 1256,\n        /// <summary>\n        /// The security identifier provided is not from an account domain.\n        /// </summary>\n        ERROR_NON_ACCOUNT_SID = 1257,\n        /// <summary>\n        /// The security identifier provided does not have a domain component.\n        /// </summary>\n        ERROR_NON_DOMAIN_SID = 1258,\n        /// <summary>\n        /// AppHelp dialog canceled thus preventing the application from starting.\n        /// </summary>\n        ERROR_APPHELP_BLOCK = 1259,\n        /// <summary>\n        /// Windows cannot open this program because it has been prevented by a software restriction policy. For more information, open Event Viewer or contact your system administrator.\n        /// </summary>\n        ERROR_ACCESS_DISABLED_BY_POLICY = 1260,\n        /// <summary>\n        /// A program attempt to use an invalid register value.  Normally caused by an uninitialized register. This error is Itanium specific.\n        /// </summary>\n        ERROR_REG_NAT_CONSUMPTION = 1261,\n        /// <summary>\n        /// The share is currently offline or does not exist.\n        /// </summary>\n        ERROR_CSCSHARE_OFFLINE = 1262,\n        /// <summary>\n        /// The kerberos protocol encountered an error while validating the\n        /// KDC certificate during smartcard logon.\n        /// </summary>\n        ERROR_PKINIT_FAILURE = 1263,\n        /// <summary>\n        /// The kerberos protocol encountered an error while attempting to utilize\n        /// the smartcard subsystem.\n        /// </summary>\n        ERROR_SMARTCARD_SUBSYSTEM_FAILURE = 1264,\n        /// <summary>\n        /// The system detected a possible attempt to compromise security. Please ensure that you can contact the server that authenticated you.\n        /// </summary>\n        ERROR_DOWNGRADE_DETECTED = 1265,\n        /// <summary>\n        /// The machine is locked and can not be shut down without the force option.\n        /// </summary>\n        ERROR_MACHINE_LOCKED = 1271,\n        /// <summary>\n        /// An application-defined callback gave invalid data when called.\n        /// </summary>\n        ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273,\n        /// <summary>\n        /// The group policy framework should call the extension in the synchronous foreground policy refresh.\n        /// </summary>\n        ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED = 1274,\n        /// <summary>\n        /// This driver has been blocked from loading\n        /// </summary>\n        ERROR_DRIVER_BLOCKED = 1275,\n        /// <summary>\n        /// A dynamic link library (DLL) referenced a module that was neither a DLL nor the process's executable image.\n        /// </summary>\n        ERROR_INVALID_IMPORT_OF_NON_DLL = 1276,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_ACCESS_DISABLED_WEBBLADE = 1277,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER = 1278,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_RECOVERY_FAILURE = 1279,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_ALREADY_FIBER = 1280,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_ALREADY_THREAD = 1281,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_STACK_BUFFER_OVERRUN = 1282,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_PARAMETER_QUOTA_EXCEEDED = 1283,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DEBUGGER_INACTIVE = 1284,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DELAY_LOAD_FAILED = 1285,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_VDM_DISALLOWED = 1286,\n        /// <summary>\n        /// Not all privileges referenced are assigned to the caller.\n        /// </summary>\n        ERROR_NOT_ALL_ASSIGNED = 1300,\n        /// <summary>\n        /// Some mapping between account names and security IDs was not done.\n        /// </summary>\n        ERROR_SOME_NOT_MAPPED = 1301,\n        /// <summary>\n        /// No system quota limits are specifically set for this account.\n        /// </summary>\n        ERROR_NO_QUOTAS_FOR_ACCOUNT = 1302,\n        /// <summary>\n        /// No encryption key is available. A well-known encryption key was returned.\n        /// </summary>\n        ERROR_LOCAL_USER_SESSION_KEY = 1303,\n        /// <summary>\n        /// The password is too complex to be converted to a LAN Manager password. The LAN Manager password returned is a NULL string.\n        /// </summary>\n        ERROR_NULL_LM_PASSUInt16 = 1304,\n        /// <summary>\n        /// The revision level is unknown.\n        /// </summary>\n        ERROR_UNKNOWN_REVISION = 1305,\n        /// <summary>\n        /// Indicates two revision levels are incompatible.\n        /// </summary>\n        ERROR_REVISION_MISMATCH = 1306,\n        /// <summary>\n        /// This security ID may not be assigned as the owner of this object.\n        /// </summary>\n        ERROR_INVALID_OWNER = 1307,\n        /// <summary>\n        /// This security ID may not be assigned as the primary group of an object.\n        /// </summary>\n        ERROR_INVALID_PRIMARY_GROUP = 1308,\n        /// <summary>\n        /// An attempt has been made to operate on an impersonation token by a thread that is not currently impersonating a client.\n        /// </summary>\n        ERROR_NO_IMPERSONATION_TOKEN = 1309,\n        /// <summary>\n        /// The group may not be disabled.\n        /// </summary>\n        ERROR_CANT_DISABLE_MANDATORY = 1310,\n        /// <summary>\n        /// There are currently no logon servers available to service the logon request.\n        /// </summary>\n        ERROR_NO_LOGON_SERVERS = 1311,\n        /// <summary>\n        /// A specified logon session does not exist. It may already have been terminated.\n        /// </summary>\n        ERROR_NO_SUCH_LOGON_SESSION = 1312,\n        /// <summary>\n        /// A specified privilege does not exist.\n        /// </summary>\n        ERROR_NO_SUCH_PRIVILEGE = 1313,\n        /// <summary>\n        /// A required privilege is not held by the client.\n        /// </summary>\n        ERROR_PRIVILEGE_NOT_HELD = 1314,\n        /// <summary>\n        /// The name provided is not a properly formed account name.\n        /// </summary>\n        ERROR_INVALID_ACCOUNT_NAME = 1315,\n        /// <summary>\n        /// The specified user already exists.\n        /// </summary>\n        ERROR_USER_EXISTS = 1316,\n        /// <summary>\n        /// The specified user does not exist.\n        /// </summary>\n        ERROR_NO_SUCH_USER = 1317,\n        /// <summary>\n        /// The specified group already exists.\n        /// </summary>\n        ERROR_GROUP_EXISTS = 1318,\n        /// <summary>\n        /// The specified group does not exist.\n        /// </summary>\n        ERROR_NO_SUCH_GROUP = 1319,\n        /// <summary>\n        /// Either the specified user account is already a member of the specified group, or the specified group cannot be deleted because it contains a member.\n        /// </summary>\n        ERROR_MEMBER_IN_GROUP = 1320,\n        /// <summary>\n        /// The specified user account is not a member of the specified group account.\n        /// </summary>\n        ERROR_MEMBER_NOT_IN_GROUP = 1321,\n        /// <summary>\n        /// The last remaining administration account cannot be disabled or deleted.\n        /// </summary>\n        ERROR_LAST_ADMIN = 1322,\n        /// <summary>\n        /// Unable to update the password. The value provided as the current password is incorrect.\n        /// </summary>\n        ERROR_WRONG_PASSWORD = 1323,\n        /// <summary>\n        /// Unable to update the password. The value provided for the new password contains values that are not allowed in passwords.\n        /// </summary>\n        ERROR_ILL_FORMED_PASSWORD = 1324,\n        /// <summary>\n        /// Unable to update the password. The value provided for the new password does not meet the length, complexity, or history requirement of the domain.\n        /// </summary>\n        ERROR_PASSWORD_RESTRICTION = 1325,\n        /// <summary>\n        /// Logon failure: unknown user name or bad password.\n        /// </summary>\n        ERROR_LOGON_FAILURE = 1326,\n        /// <summary>\n        /// Logon failure: user account restriction.  Possible reasons are blank passwords not allowed, logon hour restrictions, or a policy restriction has been enforced.\n        /// </summary>\n        ERROR_ACCOUNT_RESTRICTION = 1327,\n        /// <summary>\n        /// Logon failure: account logon time restriction violation.\n        /// </summary>\n        ERROR_INVALID_LOGON_HOURS = 1328,\n        /// <summary>\n        /// Logon failure: user not allowed to log on to this computer.\n        /// </summary>\n        ERROR_INVALID_WORKSTATION = 1329,\n        /// <summary>\n        /// Logon failure: the specified account password has expired.\n        /// </summary>\n        ERROR_PASSUInt16_EXPIRED = 1330,\n        /// <summary>\n        /// Logon failure: account currently disabled.\n        /// </summary>\n        ERROR_ACCOUNT_DISABLED = 1331,\n        /// <summary>\n        /// No mapping between account names and security IDs was done.\n        /// </summary>\n        ERROR_NONE_MAPPED = 1332,\n        /// <summary>\n        /// Too many local user identifiers (LUIDs) were requested at one time.\n        /// </summary>\n        ERROR_TOO_MANY_LUIDS_REQUESTED = 1333,\n        /// <summary>\n        /// No more local user identifiers (LUIDs) are available.\n        /// </summary>\n        ERROR_LUIDS_EXHAUSTED = 1334,\n        /// <summary>\n        /// The subauthority part of a security ID is invalid for this particular use.\n        /// </summary>\n        ERROR_INVALID_SUB_AUTHORITY = 1335,\n        /// <summary>\n        /// The access control list (ACL) structure is invalid.\n        /// </summary>\n        ERROR_INVALID_ACL = 1336,\n        /// <summary>\n        /// The security ID structure is invalid.\n        /// </summary>\n        ERROR_INVALID_SID = 1337,\n        /// <summary>\n        /// The security descriptor structure is invalid.\n        /// </summary>\n        ERROR_INVALID_SECURITY_DESCR = 1338,\n        /// <summary>\n        /// The inherited access control list (ACL) or access control entry (ACE) could not be built.\n        /// </summary>\n        ERROR_BAD_INHERITANCE_ACL = 1340,\n        /// <summary>\n        /// The server is currently disabled.\n        /// </summary>\n        ERROR_SERVER_DISABLED = 1341,\n        /// <summary>\n        /// The server is currently enabled.\n        /// </summary>\n        ERROR_SERVER_NOT_DISABLED = 1342,\n        /// <summary>\n        /// The value provided was an invalid value for an identifier authority.\n        /// </summary>\n        ERROR_INVALID_ID_AUTHORITY = 1343,\n        /// <summary>\n        /// No more memory is available for security information updates.\n        /// </summary>\n        ERROR_ALLOTTED_SPACE_EXCEEDED = 1344,\n        /// <summary>\n        /// The specified attributes are invalid, or incompatible with the attributes for the group as a whole.\n        /// </summary>\n        ERROR_INVALID_GROUP_ATTRIBUTES = 1345,\n        /// <summary>\n        /// Either a required impersonation level was not provided, or the provided impersonation level is invalid.\n        /// </summary>\n        ERROR_BAD_IMPERSONATION_LEVEL = 1346,\n        /// <summary>\n        /// Cannot open an anonymous level security token.\n        /// </summary>\n        ERROR_CANT_OPEN_ANONYMOUS = 1347,\n        /// <summary>\n        /// The validation information class requested was invalid.\n        /// </summary>\n        ERROR_BAD_VALIDATION_CLASS = 1348,\n        /// <summary>\n        /// The type of the token is inappropriate for its attempted use.\n        /// </summary>\n        ERROR_BAD_TOKEN_TYPE = 1349,\n        /// <summary>\n        /// Unable to perform a security operation on an object that has no associated security.\n        /// </summary>\n        ERROR_NO_SECURITY_ON_OBJECT = 1350,\n        /// <summary>\n        /// Configuration information could not be read from the domain controller, either because the machine is unavailable, or access has been denied.\n        /// </summary>\n        ERROR_CANT_ACCESS_DOMAIN_INFO = 1351,\n        /// <summary>\n        /// The security account manager (SAM) or local security authority (LSA) server was in the wrong state to perform the security operation.\n        /// </summary>\n        ERROR_INVALID_SERVER_STATE = 1352,\n        /// <summary>\n        /// The domain was in the wrong state to perform the security operation.\n        /// </summary>\n        ERROR_INVALID_DOMAIN_STATE = 1353,\n        /// <summary>\n        /// This operation is only allowed for the Primary Domain Controller of the domain.\n        /// </summary>\n        ERROR_INVALID_DOMAIN_ROLE = 1354,\n        /// <summary>\n        /// The specified domain either does not exist or could not be contacted.\n        /// </summary>\n        ERROR_NO_SUCH_DOMAIN = 1355,\n        /// <summary>\n        /// The specified domain already exists.\n        /// </summary>\n        ERROR_DOMAIN_EXISTS = 1356,\n        /// <summary>\n        /// An attempt was made to exceed the limit on the number of domains per server.\n        /// </summary>\n        ERROR_DOMAIN_LIMIT_EXCEEDED = 1357,\n        /// <summary>\n        /// Unable to complete the requested operation because of either a catastrophic media failure or a data structure corruption on the disk.\n        /// </summary>\n        ERROR_INTERNAL_DB_CORRUPTION = 1358,\n        /// <summary>\n        /// An internal error occurred.\n        /// </summary>\n        ERROR_INTERNAL_ERROR = 1359,\n        /// <summary>\n        /// Generic access types were contained in an access mask which should already be mapped to nongeneric types.\n        /// </summary>\n        ERROR_GENERIC_NOT_MAPPED = 1360,\n        /// <summary>\n        /// A security descriptor is not in the right format (absolute or self-relative).\n        /// </summary>\n        ERROR_BAD_DESCRIPTOR_FORMAT = 1361,\n        /// <summary>\n        /// The requested action is restricted for use by logon processes only. The calling process has not registered as a logon process.\n        /// </summary>\n        ERROR_NOT_LOGON_PROCESS = 1362,\n        /// <summary>\n        /// Cannot start a new logon session with an ID that is already in use.\n        /// </summary>\n        ERROR_LOGON_SESSION_EXISTS = 1363,\n        /// <summary>\n        /// A specified authentication package is unknown.\n        /// </summary>\n        ERROR_NO_SUCH_PACKAGE = 1364,\n        /// <summary>\n        /// The logon session is not in a state that is consistent with the requested operation.\n        /// </summary>\n        ERROR_BAD_LOGON_SESSION_STATE = 1365,\n        /// <summary>\n        /// The logon session ID is already in use.\n        /// </summary>\n        ERROR_LOGON_SESSION_COLLISION = 1366,\n        /// <summary>\n        /// A logon request contained an invalid logon type value.\n        /// </summary>\n        ERROR_INVALID_LOGON_TYPE = 1367,\n        /// <summary>\n        /// Unable to impersonate using a named pipe until data has been read from that pipe.\n        /// </summary>\n        ERROR_CANNOT_IMPERSONATE = 1368,\n        /// <summary>\n        /// The transaction state of a registry subtree is incompatible with the requested operation.\n        /// </summary>\n        ERROR_RXACT_INVALID_STATE = 1369,\n        /// <summary>\n        /// An internal security database corruption has been encountered.\n        /// </summary>\n        ERROR_RXACT_COMMIT_FAILURE = 1370,\n        /// <summary>\n        /// Cannot perform this operation on built-in accounts.\n        /// </summary>\n        ERROR_SPECIAL_ACCOUNT = 1371,\n        /// <summary>\n        /// Cannot perform this operation on this built-in special group.\n        /// </summary>\n        ERROR_SPECIAL_GROUP = 1372,\n        /// <summary>\n        /// Cannot perform this operation on this built-in special user.\n        /// </summary>\n        ERROR_SPECIAL_USER = 1373,\n        /// <summary>\n        /// The user cannot be removed from a group because the group is currently the user's primary group.\n        /// </summary>\n        ERROR_MEMBERS_PRIMARY_GROUP = 1374,\n        /// <summary>\n        /// The token is already in use as a primary token.\n        /// </summary>\n        ERROR_TOKEN_ALREADY_IN_USE = 1375,\n        /// <summary>\n        /// The specified local group does not exist.\n        /// </summary>\n        ERROR_NO_SUCH_ALIAS = 1376,\n        /// <summary>\n        /// The specified account name is not a member of the local group.\n        /// </summary>\n        ERROR_MEMBER_NOT_IN_ALIAS = 1377,\n        /// <summary>\n        /// The specified account name is already a member of the local group.\n        /// </summary>\n        ERROR_MEMBER_IN_ALIAS = 1378,\n        /// <summary>\n        /// The specified local group already exists.\n        /// </summary>\n        ERROR_ALIAS_EXISTS = 1379,\n        /// <summary>\n        /// Logon failure: the user has not been granted the requested logon type at this computer.\n        /// </summary>\n        ERROR_LOGON_NOT_GRANTED = 1380,\n        /// <summary>\n        /// The maximum number of secrets that may be stored in a single system has been exceeded.\n        /// </summary>\n        ERROR_TOO_MANY_SECRETS = 1381,\n        /// <summary>\n        /// The length of a secret exceeds the maximum length allowed.\n        /// </summary>\n        ERROR_SECRET_TOO_Int32 = 1382,\n        /// <summary>\n        /// The local security authority database contains an internal inconsistency.\n        /// </summary>\n        ERROR_INTERNAL_DB_ERROR = 1383,\n        /// <summary>\n        /// During a logon attempt, the user's security context accumulated too many security IDs.\n        /// </summary>\n        ERROR_TOO_MANY_CONTEXT_IDS = 1384,\n        /// <summary>\n        /// Logon failure: the user has not been granted the requested logon type at this computer.\n        /// </summary>\n        ERROR_LOGON_TYPE_NOT_GRANTED = 1385,\n        /// <summary>\n        /// A cross-encrypted password is necessary to change a user password.\n        /// </summary>\n        ERROR_NT_CROSS_ENCRYPTION_REQUIRED = 1386,\n        /// <summary>\n        /// A member could not be added to or removed from the local group because the member does not exist.\n        /// </summary>\n        ERROR_NO_SUCH_MEMBER = 1387,\n        /// <summary>\n        /// A new member could not be added to a local group because the member has the wrong account type.\n        /// </summary>\n        ERROR_INVALID_MEMBER = 1388,\n        /// <summary>\n        /// Too many security IDs have been specified.\n        /// </summary>\n        ERROR_TOO_MANY_SIDS = 1389,\n        /// <summary>\n        /// A cross-encrypted password is necessary to change this user password.\n        /// </summary>\n        ERROR_LM_CROSS_ENCRYPTION_REQUIRED = 1390,\n        /// <summary>\n        /// Indicates an ACL contains no inheritable components.\n        /// </summary>\n        ERROR_NO_INHERITANCE = 1391,\n        /// <summary>\n        /// The file or directory is corrupted and unreadable.\n        /// </summary>\n        ERROR_FILE_CORRUPT = 1392,\n        /// <summary>\n        /// The disk structure is corrupted and unreadable.\n        /// </summary>\n        ERROR_DISK_CORRUPT = 1393,\n        /// <summary>\n        /// There is no user session key for the specified logon session.\n        /// </summary>\n        ERROR_NO_USER_SESSION_KEY = 1394,\n        /// <summary>\n        /// The service being accessed is licensed for a particular number of connections.\n        /// No more connections can be made to the service at this time because there are already as many connections as the service can accept.\n        /// </summary>\n        ERROR_LICENSE_QUOTA_EXCEEDED = 1395,\n        /// <summary>\n        /// Logon Failure: The target account name is incorrect.\n        /// </summary>\n        ERROR_WRONG_TARGET_NAME = 1396,\n        /// <summary>\n        /// Mutual Authentication failed. The server's password is out of date at the domain controller.\n        /// </summary>\n        ERROR_MUTUAL_AUTH_FAILED = 1397,\n        /// <summary>\n        /// There is a time and/or date difference between the client and server.\n        /// </summary>\n        ERROR_TIME_SKEW = 1398,\n        /// <summary>\n        /// This operation can not be performed on the current domain.\n        /// </summary>\n        ERROR_CURRENT_DOMAIN_NOT_ALLOWED = 1399,\n        /// <summary>\n        /// Invalid window handle.\n        /// </summary>\n        ERROR_INVALID_WINDOW_HANDLE = 1400,\n        /// <summary>\n        /// Invalid menu handle.\n        /// </summary>\n        ERROR_INVALID_MENU_HANDLE = 1401,\n        /// <summary>\n        /// Invalid cursor handle.\n        /// </summary>\n        ERROR_INVALID_CURSOR_HANDLE = 1402,\n        /// <summary>\n        /// Invalid accelerator table handle.\n        /// </summary>\n        ERROR_INVALID_ACCEL_HANDLE = 1403,\n        /// <summary>\n        /// Invalid hook handle.\n        /// </summary>\n        ERROR_INVALID_HOOK_HANDLE = 1404,\n        /// <summary>\n        /// Invalid handle to a multiple-window position structure.\n        /// </summary>\n        ERROR_INVALID_DWP_HANDLE = 1405,\n        /// <summary>\n        /// Cannot create a top-level child window.\n        /// </summary>\n        ERROR_TLW_WITH_WSCHILD = 1406,\n        /// <summary>\n        /// Cannot find window class.\n        /// </summary>\n        ERROR_CANNOT_FIND_WND_CLASS = 1407,\n        /// <summary>\n        /// Invalid window, it belongs to other thread.\n        /// </summary>\n        ERROR_WINDOW_OF_OTHER_THREAD = 1408,\n        /// <summary>\n        /// Hot key is already registered.\n        /// </summary>\n        ERROR_HOTKEY_ALREADY_REGISTERED = 1409,\n        /// <summary>\n        /// Class already exists.\n        /// </summary>\n        ERROR_CLASS_ALREADY_EXISTS = 1410,\n        /// <summary>\n        /// Class does not exist.\n        /// </summary>\n        ERROR_CLASS_DOES_NOT_EXIST = 1411,\n        /// <summary>\n        /// Class still has open windows.\n        /// </summary>\n        ERROR_CLASS_HAS_WINDOWS = 1412,\n        /// <summary>\n        /// Invalid index.\n        /// </summary>\n        ERROR_INVALID_INDEX = 1413,\n        /// <summary>\n        /// Invalid icon handle.\n        /// </summary>\n        ERROR_INVALID_ICON_HANDLE = 1414,\n        /// <summary>\n        /// Using private DIALOG window words.\n        /// </summary>\n        ERROR_PRIVATE_DIALOG_INDEX = 1415,\n        /// <summary>\n        /// The list box identifier was not found.\n        /// </summary>\n        ERROR_LISTBOX_ID_NOT_FOUND = 1416,\n        /// <summary>\n        /// No wildcards were found.\n        /// </summary>\n        ERROR_NO_WILDCARD_CHARACTERS = 1417,\n        /// <summary>\n        /// Thread does not have a clipboard open.\n        /// </summary>\n        ERROR_CLIPBOARD_NOT_OPEN = 1418,\n        /// <summary>\n        /// Hot key is not registered.\n        /// </summary>\n        ERROR_HOTKEY_NOT_REGISTERED = 1419,\n        /// <summary>\n        /// The window is not a valid dialog window.\n        /// </summary>\n        ERROR_WINDOW_NOT_DIALOG = 1420,\n        /// <summary>\n        /// Control ID not found.\n        /// </summary>\n        ERROR_CONTROL_ID_NOT_FOUND = 1421,\n        /// <summary>\n        /// Invalid message for a combo box because it does not have an edit control.\n        /// </summary>\n        ERROR_INVALID_COMBOBOX_MESSAGE = 1422,\n        /// <summary>\n        /// The window is not a combo box.\n        /// </summary>\n        ERROR_WINDOW_NOT_COMBOBOX = 1423,\n        /// <summary>\n        /// Height must be less than 256.\n        /// </summary>\n        ERROR_INVALID_EDIT_HEIGHT = 1424,\n        /// <summary>\n        /// Invalid device context (DC) handle.\n        /// </summary>\n        ERROR_DC_NOT_FOUND = 1425,\n        /// <summary>\n        /// Invalid hook procedure type.\n        /// </summary>\n        ERROR_INVALID_HOOK_FILTER = 1426,\n        /// <summary>\n        /// Invalid hook procedure.\n        /// </summary>\n        ERROR_INVALID_FILTER_PROC = 1427,\n        /// <summary>\n        /// Cannot set nonlocal hook without a module handle.\n        /// </summary>\n        ERROR_HOOK_NEEDS_HMOD = 1428,\n        /// <summary>\n        /// This hook procedure can only be set globally.\n        /// </summary>\n        ERROR_GLOBAL_ONLY_HOOK = 1429,\n        /// <summary>\n        /// The journal hook procedure is already installed.\n        /// </summary>\n        ERROR_JOURNAL_HOOK_SET = 1430,\n        /// <summary>\n        /// The hook procedure is not installed.\n        /// </summary>\n        ERROR_HOOK_NOT_INSTALLED = 1431,\n        /// <summary>\n        /// Invalid message for single-selection list box.\n        /// </summary>\n        ERROR_INVALID_LB_MESSAGE = 1432,\n        /// <summary>\n        /// LB_SETCOUNT sent to non-lazy list box.\n        /// </summary>\n        ERROR_SETCOUNT_ON_BAD_LB = 1433,\n        /// <summary>\n        /// This list box does not support tab stops.\n        /// </summary>\n        ERROR_LB_WITHOUT_TABSTOPS = 1434,\n        /// <summary>\n        /// Cannot destroy object created by another thread.\n        /// </summary>\n        ERROR_DESTROY_OBJECT_OF_OTHER_THREAD = 1435,\n        /// <summary>\n        /// Child windows cannot have menus.\n        /// </summary>\n        ERROR_CHILD_WINDOW_MENU = 1436,\n        /// <summary>\n        /// The window does not have a system menu.\n        /// </summary>\n        ERROR_NO_SYSTEM_MENU = 1437,\n        /// <summary>\n        /// Invalid message box style.\n        /// </summary>\n        ERROR_INVALID_MSGBOX_STYLE = 1438,\n        /// <summary>\n        /// Invalid system-wide (SPI_*) parameter.\n        /// </summary>\n        ERROR_INVALID_SPI_VALUE = 1439,\n        /// <summary>\n        /// Screen already locked.\n        /// </summary>\n        ERROR_SCREEN_ALREADY_LOCKED = 1440,\n        /// <summary>\n        /// All handles to windows in a multiple-window position structure must have the same parent.\n        /// </summary>\n        ERROR_HWNDS_HAVE_DIFF_PARENT = 1441,\n        /// <summary>\n        /// The window is not a child window.\n        /// </summary>\n        ERROR_NOT_CHILD_WINDOW = 1442,\n        /// <summary>\n        /// Invalid GW_* command.\n        /// </summary>\n        ERROR_INVALID_GW_COMMAND = 1443,\n        /// <summary>\n        /// Invalid thread identifier.\n        /// </summary>\n        ERROR_INVALID_THREAD_ID = 1444,\n        /// <summary>\n        /// Cannot process a message from a window that is not a multiple document interface (MDI) window.\n        /// </summary>\n        ERROR_NON_MDICHILD_WINDOW = 1445,\n        /// <summary>\n        /// Popup menu already active.\n        /// </summary>\n        ERROR_POPUP_ALREADY_ACTIVE = 1446,\n        /// <summary>\n        /// The window does not have scroll bars.\n        /// </summary>\n        ERROR_NO_SCROLLBARS = 1447,\n        /// <summary>\n        /// Scroll bar range cannot be greater than MAXLONG.\n        /// </summary>\n        ERROR_INVALID_SCROLLBAR_RANGE = 1448,\n        /// <summary>\n        /// Cannot show or remove the window in the way specified.\n        /// </summary>\n        ERROR_INVALID_SHOWWIN_COMMAND = 1449,\n        /// <summary>\n        /// Insufficient system resources exist to complete the requested service.\n        /// </summary>\n        ERROR_NO_SYSTEM_RESOURCES = 1450,\n        /// <summary>\n        /// Insufficient system resources exist to complete the requested service.\n        /// </summary>\n        ERROR_NONPAGED_SYSTEM_RESOURCES = 1451,\n        /// <summary>\n        /// Insufficient system resources exist to complete the requested service.\n        /// </summary>\n        ERROR_PAGED_SYSTEM_RESOURCES = 1452,\n        /// <summary>\n        /// Insufficient quota to complete the requested service.\n        /// </summary>\n        ERROR_WORKING_SET_QUOTA = 1453,\n        /// <summary>\n        /// Insufficient quota to complete the requested service.\n        /// </summary>\n        ERROR_PAGEFILE_QUOTA = 1454,\n        /// <summary>\n        /// The paging file is too small for this operation to complete.\n        /// </summary>\n        ERROR_COMMITMENT_LIMIT = 1455,\n        /// <summary>\n        /// A menu item was not found.\n        /// </summary>\n        ERROR_MENU_ITEM_NOT_FOUND = 1456,\n        /// <summary>\n        /// Invalid keyboard layout handle.\n        /// </summary>\n        ERROR_INVALID_KEYBOARD_HANDLE = 1457,\n        /// <summary>\n        /// Hook type not allowed.\n        /// </summary>\n        ERROR_HOOK_TYPE_NOT_ALLOWED = 1458,\n        /// <summary>\n        /// This operation requires an interactive window station.\n        /// </summary>\n        ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION = 1459,\n        /// <summary>\n        /// This operation returned because the timeout period expired.\n        /// </summary>\n        ERROR_TIMEOUT = 1460,\n        /// <summary>\n        /// Invalid monitor handle.\n        /// </summary>\n        ERROR_INVALID_MONITOR_HANDLE = 1461,\n        /// <summary>\n        /// The event log file is corrupted.\n        /// </summary>\n        ERROR_EVENTLOG_FILE_CORRUPT = 1500,\n        /// <summary>\n        /// No event log file could be opened, so the event logging service did not start.\n        /// </summary>\n        ERROR_EVENTLOG_CANT_START = 1501,\n        /// <summary>\n        /// The event log file is full.\n        /// </summary>\n        ERROR_LOG_FILE_FULL = 1502,\n        /// <summary>\n        /// The event log file has changed between read operations.\n        /// </summary>\n        ERROR_EVENTLOG_FILE_CHANGED = 1503,\n        /// <summary>\n        /// The Windows Installer Service could not be accessed. This can occur if you are running Windows in safe mode, or if the Windows Installer is not correctly installed. Contact your support personnel for assistance.\n        /// </summary>\n        ERROR_INSTALL_SERVICE_FAILURE = 1601,\n        /// <summary>\n        /// User cancelled installation.\n        /// </summary>\n        ERROR_INSTALL_USEREXIT = 1602,\n        /// <summary>\n        /// Fatal error during installation.\n        /// </summary>\n        ERROR_INSTALL_FAILURE = 1603,\n        /// <summary>\n        /// Installation suspended, incomplete.\n        /// </summary>\n        ERROR_INSTALL_SUSPEND = 1604,\n        /// <summary>\n        /// This action is only valid for products that are currently installed.\n        /// </summary>\n        ERROR_UNKNOWN_PRODUCT = 1605,\n        /// <summary>\n        /// Feature ID not registered.\n        /// </summary>\n        ERROR_UNKNOWN_FEATURE = 1606,\n        /// <summary>\n        /// Component ID not registered.\n        /// </summary>\n        ERROR_UNKNOWN_COMPONENT = 1607,\n        /// <summary>\n        /// Unknown property.\n        /// </summary>\n        ERROR_UNKNOWN_PROPERTY = 1608,\n        /// <summary>\n        /// Handle is in an invalid state.\n        /// </summary>\n        ERROR_INVALID_HANDLE_STATE = 1609,\n        /// <summary>\n        /// The configuration data for this product is corrupt.  Contact your support personnel.\n        /// </summary>\n        ERROR_BAD_CONFIGURATION = 1610,\n        /// <summary>\n        /// Component qualifier not present.\n        /// </summary>\n        ERROR_INDEX_ABSENT = 1611,\n        /// <summary>\n        /// The installation source for this product is not available.  Verify that the source exists and that you can access it.\n        /// </summary>\n        ERROR_INSTALL_SOURCE_ABSENT = 1612,\n        /// <summary>\n        /// This installation package cannot be installed by the Windows Installer service.  You must install a Windows service pack that contains a newer version of the Windows Installer service.\n        /// </summary>\n        ERROR_INSTALL_PACKAGE_VERSION = 1613,\n        /// <summary>\n        /// Product is uninstalled.\n        /// </summary>\n        ERROR_PRODUCT_UNINSTALLED = 1614,\n        /// <summary>\n        /// SQL query syntax invalid or unsupported.\n        /// </summary>\n        ERROR_BAD_QUERY_SYNTAX = 1615,\n        /// <summary>\n        /// Record field does not exist.\n        /// </summary>\n        ERROR_INVALID_FIELD = 1616,\n        /// <summary>\n        /// The device has been removed.\n        /// </summary>\n        ERROR_DEVICE_REMOVED = 1617,\n        /// <summary>\n        /// Another installation is already in progress.  Complete that installation before proceeding with this install.\n        /// </summary>\n        ERROR_INSTALL_ALREADY_RUNNING = 1618,\n        /// <summary>\n        /// This installation package could not be opened.  Verify that the package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer package.\n        /// </summary>\n        ERROR_INSTALL_PACKAGE_OPEN_FAILED = 1619,\n        /// <summary>\n        /// This installation package could not be opened.  Contact the application vendor to verify that this is a valid Windows Installer package.\n        /// </summary>\n        ERROR_INSTALL_PACKAGE_INVALID = 1620,\n        /// <summary>\n        /// There was an error starting the Windows Installer service user interface.  Contact your support personnel.\n        /// </summary>\n        ERROR_INSTALL_UI_FAILURE = 1621,\n        /// <summary>\n        /// Error opening installation log file. Verify that the specified log file location exists and that you can write to it.\n        /// </summary>\n        ERROR_INSTALL_LOG_FAILURE = 1622,\n        /// <summary>\n        /// The language of this installation package is not supported by your system.\n        /// </summary>\n        ERROR_INSTALL_LANGUAGE_UNSUPPORTED = 1623,\n        /// <summary>\n        /// Error applying transforms.  Verify that the specified transform paths are valid.\n        /// </summary>\n        ERROR_INSTALL_TRANSFORM_FAILURE = 1624,\n        /// <summary>\n        /// This installation is forbidden by system policy.  Contact your system administrator.\n        /// </summary>\n        ERROR_INSTALL_PACKAGE_REJECTED = 1625,\n        /// <summary>\n        /// Function could not be executed.\n        /// </summary>\n        ERROR_FUNCTION_NOT_CALLED = 1626,\n        /// <summary>\n        /// Function failed during execution.\n        /// </summary>\n        ERROR_FUNCTION_FAILED = 1627,\n        /// <summary>\n        /// Invalid or unknown table specified.\n        /// </summary>\n        ERROR_INVALID_TABLE = 1628,\n        /// <summary>\n        /// Data supplied is of wrong type.\n        /// </summary>\n        ERROR_DATATYPE_MISMATCH = 1629,\n        /// <summary>\n        /// Data of this type is not supported.\n        /// </summary>\n        ERROR_UNSUPPORTED_TYPE = 1630,\n        /// <summary>\n        /// The Windows Installer service failed to start.  Contact your support personnel.\n        /// </summary>\n        ERROR_CREATE_FAILED = 1631,\n        /// <summary>\n        /// The Temp folder is on a drive that is full or is inaccessible. Free up space on the drive or verify that you have write permission on the Temp folder.\n        /// </summary>\n        ERROR_INSTALL_TEMP_UNWRITABLE = 1632,\n        /// <summary>\n        /// This installation package is not supported by this processor type. Contact your product vendor.\n        /// </summary>\n        ERROR_INSTALL_PLATFORM_UNSUPPORTED = 1633,\n        /// <summary>\n        /// Component not used on this computer.\n        /// </summary>\n        ERROR_INSTALL_NOTUSED = 1634,\n        /// <summary>\n        /// This patch package could not be opened.  Verify that the patch package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer patch package.\n        /// </summary>\n        ERROR_PATCH_PACKAGE_OPEN_FAILED = 1635,\n        /// <summary>\n        /// This patch package could not be opened.  Contact the application vendor to verify that this is a valid Windows Installer patch package.\n        /// </summary>\n        ERROR_PATCH_PACKAGE_INVALID = 1636,\n        /// <summary>\n        /// This patch package cannot be processed by the Windows Installer service.  You must install a Windows service pack that contains a newer version of the Windows Installer service.\n        /// </summary>\n        ERROR_PATCH_PACKAGE_UNSUPPORTED = 1637,\n        /// <summary>\n        /// Another version of this product is already installed.  Installation of this version cannot continue.  To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.\n        /// </summary>\n        ERROR_PRODUCT_VERSION = 1638,\n        /// <summary>\n        /// Invalid command line argument.  Consult the Windows Installer SDK for detailed command line help.\n        /// </summary>\n        ERROR_INVALID_COMMAND_LINE = 1639,\n        /// <summary>\n        /// Only administrators have permission to add, remove, or configure server software during a Terminal services remote session. If you want to install or configure software on the server, contact your network administrator.\n        /// </summary>\n        ERROR_INSTALL_REMOTE_DISALLOWED = 1640,\n        /// <summary>\n        /// The requested operation completed successfully.  The system will be restarted so the changes can take effect.\n        /// </summary>\n        ERROR_SUCCESS_REBOOT_INITIATED = 1641,\n        /// <summary>\n        /// The upgrade patch cannot be installed by the Windows Installer service because the program to be upgraded may be missing, or the upgrade patch may update a different version of the program. Verify that the program to be upgraded exists on your computer an\n        /// d that you have the correct upgrade patch.\n        /// </summary>\n        ERROR_PATCH_TARGET_NOT_FOUND = 1642,\n        /// <summary>\n        /// The patch package is not permitted by software restriction policy.\n        /// </summary>\n        ERROR_PATCH_PACKAGE_REJECTED = 1643,\n        /// <summary>\n        /// One or more customizations are not permitted by software restriction policy.\n        /// </summary>\n        ERROR_INSTALL_TRANSFORM_REJECTED = 1644,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_INSTALL_REMOTE_PROHIBITED = 1645,\n        /// <summary>\n        /// The string binding is invalid.\n        /// </summary>\n        RPC_S_INVALID_STRING_BINDING = 1700,\n        /// <summary>\n        /// The binding handle is not the correct type.\n        /// </summary>\n        RPC_S_WRONG_KIND_OF_BINDING = 1701,\n        /// <summary>\n        /// The binding handle is invalid.\n        /// </summary>\n        RPC_S_INVALID_BINDING = 1702,\n        /// <summary>\n        /// The RPC protocol sequence is not supported.\n        /// </summary>\n        RPC_S_PROTSEQ_NOT_SUPPORTED = 1703,\n        /// <summary>\n        /// The RPC protocol sequence is invalid.\n        /// </summary>\n        RPC_S_INVALID_RPC_PROTSEQ = 1704,\n        /// <summary>\n        /// The string universal unique identifier (UUID) is invalid.\n        /// </summary>\n        RPC_S_INVALID_STRING_UUID = 1705,\n        /// <summary>\n        /// The endpoint format is invalid.\n        /// </summary>\n        RPC_S_INVALID_ENDPOINT_FORMAT = 1706,\n        /// <summary>\n        /// The network address is invalid.\n        /// </summary>\n        RPC_S_INVALID_NET_ADDR = 1707,\n        /// <summary>\n        /// No endpoint was found.\n        /// </summary>\n        RPC_S_NO_ENDPOINT_FOUND = 1708,\n        /// <summary>\n        /// The timeout value is invalid.\n        /// </summary>\n        RPC_S_INVALID_TIMEOUT = 1709,\n        /// <summary>\n        /// The object universal unique identifier (UUID) was not found.\n        /// </summary>\n        RPC_S_OBJECT_NOT_FOUND = 1710,\n        /// <summary>\n        /// The object universal unique identifier (UUID) has already been registered.\n        /// </summary>\n        RPC_S_ALREADY_REGISTERED = 1711,\n        /// <summary>\n        /// The type universal unique identifier (UUID) has already been registered.\n        /// </summary>\n        RPC_S_TYPE_ALREADY_REGISTERED = 1712,\n        /// <summary>\n        /// The RPC server is already listening.\n        /// </summary>\n        RPC_S_ALREADY_LISTENING = 1713,\n        /// <summary>\n        /// No protocol sequences have been registered.\n        /// </summary>\n        RPC_S_NO_PROTSEQS_REGISTERED = 1714,\n        /// <summary>\n        /// The RPC server is not listening.\n        /// </summary>\n        RPC_S_NOT_LISTENING = 1715,\n        /// <summary>\n        /// The manager type is unknown.\n        /// </summary>\n        RPC_S_UNKNOWN_MGR_TYPE = 1716,\n        /// <summary>\n        /// The interface is unknown.\n        /// </summary>\n        RPC_S_UNKNOWN_IF = 1717,\n        /// <summary>\n        /// There are no bindings.\n        /// </summary>\n        RPC_S_NO_BINDINGS = 1718,\n        /// <summary>\n        /// There are no protocol sequences.\n        /// </summary>\n        RPC_S_NO_PROTSEQS = 1719,\n        /// <summary>\n        /// The endpoint cannot be created.\n        /// </summary>\n        RPC_S_CANT_CREATE_ENDPOINT = 1720,\n        /// <summary>\n        /// Not enough resources are available to complete this operation.\n        /// </summary>\n        RPC_S_OUT_OF_RESOURCES = 1721,\n        /// <summary>\n        /// The RPC server is unavailable.\n        /// </summary>\n        RPC_S_SERVER_UNAVAILABLE = 1722,\n        /// <summary>\n        /// The RPC server is too busy to complete this operation.\n        /// </summary>\n        RPC_S_SERVER_TOO_BUSY = 1723,\n        /// <summary>\n        /// The network options are invalid.\n        /// </summary>\n        RPC_S_INVALID_NETWORK_OPTIONS = 1724,\n        /// <summary>\n        /// There are no remote procedure calls active on this thread.\n        /// </summary>\n        RPC_S_NO_CALL_ACTIVE = 1725,\n        /// <summary>\n        /// The remote procedure call failed.\n        /// </summary>\n        RPC_S_CALL_FAILED = 1726,\n        /// <summary>\n        /// The remote procedure call failed and did not execute.\n        /// </summary>\n        RPC_S_CALL_FAILED_DNE = 1727,\n        /// <summary>\n        /// A remote procedure call (RPC) protocol error occurred.\n        /// </summary>\n        RPC_S_PROTOCOL_ERROR = 1728,\n        /// <summary>\n        /// The transfer syntax is not supported by the RPC server.\n        /// </summary>\n        RPC_S_UNSUPPORTED_TRANS_SYN = 1730,\n        /// <summary>\n        /// The universal unique identifier (UUID) type is not supported.\n        /// </summary>\n        RPC_S_UNSUPPORTED_TYPE = 1732,\n        /// <summary>\n        /// The tag is invalid.\n        /// </summary>\n        RPC_S_INVALID_TAG = 1733,\n        /// <summary>\n        /// The array bounds are invalid.\n        /// </summary>\n        RPC_S_INVALID_BOUND = 1734,\n        /// <summary>\n        /// The binding does not contain an entry name.\n        /// </summary>\n        RPC_S_NO_ENTRY_NAME = 1735,\n        /// <summary>\n        /// The name syntax is invalid.\n        /// </summary>\n        RPC_S_INVALID_NAME_SYNTAX = 1736,\n        /// <summary>\n        /// The name syntax is not supported.\n        /// </summary>\n        RPC_S_UNSUPPORTED_NAME_SYNTAX = 1737,\n        /// <summary>\n        /// No network address is available to use to construct a universal unique identifier (UUID).\n        /// </summary>\n        RPC_S_UUID_NO_ADDRESS = 1739,\n        /// <summary>\n        /// The endpoint is a duplicate.\n        /// </summary>\n        RPC_S_DUPLICATE_ENDPOINT = 1740,\n        /// <summary>\n        /// The authentication type is unknown.\n        /// </summary>\n        RPC_S_UNKNOWN_AUTHN_TYPE = 1741,\n        /// <summary>\n        /// The maximum number of calls is too small.\n        /// </summary>\n        RPC_S_MAX_CALLS_TOO_SMALL = 1742,\n        /// <summary>\n        /// The string is too long.\n        /// </summary>\n        RPC_S_STRING_TOO_Int32 = 1743,\n        /// <summary>\n        /// The RPC protocol sequence was not found.\n        /// </summary>\n        RPC_S_PROTSEQ_NOT_FOUND = 1744,\n        /// <summary>\n        /// The procedure number is out of range.\n        /// </summary>\n        RPC_S_PROCNUM_OUT_OF_RANGE = 1745,\n        /// <summary>\n        /// The binding does not contain any authentication information.\n        /// </summary>\n        RPC_S_BINDING_HAS_NO_AUTH = 1746,\n        /// <summary>\n        /// The authentication service is unknown.\n        /// </summary>\n        RPC_S_UNKNOWN_AUTHN_SERVICE = 1747,\n        /// <summary>\n        /// The authentication level is unknown.\n        /// </summary>\n        RPC_S_UNKNOWN_AUTHN_LEVEL = 1748,\n        /// <summary>\n        /// The security context is invalid.\n        /// </summary>\n        RPC_S_INVALID_AUTH_IDENTITY = 1749,\n        /// <summary>\n        /// The authorization service is unknown.\n        /// </summary>\n        RPC_S_UNKNOWN_AUTHZ_SERVICE = 1750,\n        /// <summary>\n        /// The entry is invalid.\n        /// </summary>\n        EPT_S_INVALID_ENTRY = 1751,\n        /// <summary>\n        /// The server endpoint cannot perform the operation.\n        /// </summary>\n        EPT_S_CANT_PERFORM_OP = 1752,\n        /// <summary>\n        /// There are no more endpoints available from the endpoint mapper.\n        /// </summary>\n        EPT_S_NOT_REGISTERED = 1753,\n        /// <summary>\n        /// No interfaces have been exported.\n        /// </summary>\n        RPC_S_NOTHING_TO_EXPORT = 1754,\n        /// <summary>\n        /// The entry name is incomplete.\n        /// </summary>\n        RPC_S_INCOMPLETE_NAME = 1755,\n        /// <summary>\n        /// The version option is invalid.\n        /// </summary>\n        RPC_S_INVALID_VERS_OPTION = 1756,\n        /// <summary>\n        /// There are no more members.\n        /// </summary>\n        RPC_S_NO_MORE_MEMBERS = 1757,\n        /// <summary>\n        /// There is nothing to unexport.\n        /// </summary>\n        RPC_S_NOT_ALL_OBJS_UNEXPORTED = 1758,\n        /// <summary>\n        /// The interface was not found.\n        /// </summary>\n        RPC_S_INTERFACE_NOT_FOUND = 1759,\n        /// <summary>\n        /// The entry already exists.\n        /// </summary>\n        RPC_S_ENTRY_ALREADY_EXISTS = 1760,\n        /// <summary>\n        /// The entry is not found.\n        /// </summary>\n        RPC_S_ENTRY_NOT_FOUND = 1761,\n        /// <summary>\n        /// The name service is unavailable.\n        /// </summary>\n        RPC_S_NAME_SERVICE_UNAVAILABLE = 1762,\n        /// <summary>\n        /// The network address family is invalid.\n        /// </summary>\n        RPC_S_INVALID_NAF_ID = 1763,\n        /// <summary>\n        /// The requested operation is not supported.\n        /// </summary>\n        RPC_S_CANNOT_SUPPORT = 1764,\n        /// <summary>\n        /// No security context is available to allow impersonation.\n        /// </summary>\n        RPC_S_NO_CONTEXT_AVAILABLE = 1765,\n        /// <summary>\n        /// An internal error occurred in a remote procedure call (RPC).\n        /// </summary>\n        RPC_S_INTERNAL_ERROR = 1766,\n        /// <summary>\n        /// The RPC server attempted an integer division by zero.\n        /// </summary>\n        RPC_S_ZERO_DIVIDE = 1767,\n        /// <summary>\n        /// An addressing error occurred in the RPC server.\n        /// </summary>\n        RPC_S_ADDRESS_ERROR = 1768,\n        /// <summary>\n        /// A floating-point operation at the RPC server caused a division by zero.\n        /// </summary>\n        RPC_S_FP_DIV_ZERO = 1769,\n        /// <summary>\n        /// A floating-point underflow occurred at the RPC server.\n        /// </summary>\n        RPC_S_FP_UNDERFLOW = 1770,\n        /// <summary>\n        /// A floating-point overflow occurred at the RPC server.\n        /// </summary>\n        RPC_S_FP_OVERFLOW = 1771,\n        /// <summary>\n        /// The list of RPC servers available for the binding of auto handles has been exhausted.\n        /// </summary>\n        RPC_X_NO_MORE_ENTRIES = 1772,\n        /// <summary>\n        /// Unable to open the character translation table file.\n        /// </summary>\n        RPC_X_SS_CHAR_TRANS_OPEN_FAIL = 1773,\n        /// <summary>\n        /// The file containing the character translation table has fewer than 512 bytes.\n        /// </summary>\n        RPC_X_SS_CHAR_TRANS_Int16_FILE = 1774,\n        /// <summary>\n        /// A null context handle was passed from the client to the host during a remote procedure call.\n        /// </summary>\n        RPC_X_SS_IN_NULL_CONTEXT = 1775,\n        /// <summary>\n        /// The context handle changed during a remote procedure call.\n        /// </summary>\n        RPC_X_SS_CONTEXT_DAMAGED = 1777,\n        /// <summary>\n        /// The binding handles passed to a remote procedure call do not match.\n        /// </summary>\n        RPC_X_SS_HANDLES_MISMATCH = 1778,\n        /// <summary>\n        /// The stub is unable to get the remote procedure call handle.\n        /// </summary>\n        RPC_X_SS_CANNOT_GET_CALL_HANDLE = 1779,\n        /// <summary>\n        /// A null reference pointer was passed to the stub.\n        /// </summary>\n        RPC_X_NULL_REF_POINTER = 1780,\n        /// <summary>\n        /// The enumeration value is out of range.\n        /// </summary>\n        RPC_X_ENUM_VALUE_OUT_OF_RANGE = 1781,\n        /// <summary>\n        /// The byte count is too small.\n        /// </summary>\n        RPC_X_BYTE_COUNT_TOO_SMALL = 1782,\n        /// <summary>\n        /// The stub received bad data.\n        /// </summary>\n        RPC_X_BAD_STUB_DATA = 1783,\n        /// <summary>\n        /// The supplied user buffer is not valid for the requested operation.\n        /// </summary>\n        ERROR_INVALID_USER_BUFFER = 1784,\n        /// <summary>\n        /// The disk media is not recognized. It may not be formatted.\n        /// </summary>\n        ERROR_UNRECOGNIZED_MEDIA = 1785,\n        /// <summary>\n        /// The workstation does not have a trust secret.\n        /// </summary>\n        ERROR_NO_TRUST_LSA_SECRET = 1786,\n        /// <summary>\n        /// The security database on the server does not have a computer account for this workstation trust relationship.\n        /// </summary>\n        ERROR_NO_TRUST_SAM_ACCOUNT = 1787,\n        /// <summary>\n        /// The trust relationship between the primary domain and the trusted domain failed.\n        /// </summary>\n        ERROR_TRUSTED_DOMAIN_FAILURE = 1788,\n        /// <summary>\n        /// The trust relationship between this workstation and the primary domain failed.\n        /// </summary>\n        ERROR_TRUSTED_RELATIONSHIP_FAILURE = 1789,\n        /// <summary>\n        /// The network logon failed.\n        /// </summary>\n        ERROR_TRUST_FAILURE = 1790,\n        /// <summary>\n        /// A remote procedure call is already in progress for this thread.\n        /// </summary>\n        RPC_S_CALL_IN_PROGRESS = 1791,\n        /// <summary>\n        /// An attempt was made to logon, but the network logon service was not started.\n        /// </summary>\n        ERROR_NETLOGON_NOT_STARTED = 1792,\n        /// <summary>\n        /// The user's account has expired.\n        /// </summary>\n        ERROR_ACCOUNT_EXPIRED = 1793,\n        /// <summary>\n        /// The redirector is in use and cannot be unloaded.\n        /// </summary>\n        ERROR_REDIRECTOR_HAS_OPEN_HANDLES = 1794,\n        /// <summary>\n        /// The specified printer driver is already installed.\n        /// </summary>\n        ERROR_PRINTER_DRIVER_ALREADY_INSTALLED = 1795,\n        /// <summary>\n        /// The specified port is unknown.\n        /// </summary>\n        ERROR_UNKNOWN_PORT = 1796,\n        /// <summary>\n        /// The printer driver is unknown.\n        /// </summary>\n        ERROR_UNKNOWN_PRINTER_DRIVER = 1797,\n        /// <summary>\n        /// The print processor is unknown.\n        /// </summary>\n        ERROR_UNKNOWN_PRINTPROCESSOR = 1798,\n        /// <summary>\n        /// The specified separator file is invalid.\n        /// </summary>\n        ERROR_INVALID_SEPARATOR_FILE = 1799,\n        /// <summary>\n        /// The specified priority is invalid.\n        /// </summary>\n        ERROR_INVALID_PRIORITY = 1800,\n        /// <summary>\n        /// The printer name is invalid.\n        /// </summary>\n        ERROR_INVALID_PRINTER_NAME = 1801,\n        /// <summary>\n        /// The printer already exists.\n        /// </summary>\n        ERROR_PRINTER_ALREADY_EXISTS = 1802,\n        /// <summary>\n        /// The printer command is invalid.\n        /// </summary>\n        ERROR_INVALID_PRINTER_COMMAND = 1803,\n        /// <summary>\n        /// The specified datatype is invalid.\n        /// </summary>\n        ERROR_INVALID_DATATYPE = 1804,\n        /// <summary>\n        /// The environment specified is invalid.\n        /// </summary>\n        ERROR_INVALID_ENVIRONMENT = 1805,\n        /// <summary>\n        /// There are no more bindings.\n        /// </summary>\n        RPC_S_NO_MORE_BINDINGS = 1806,\n        /// <summary>\n        /// The account used is an interdomain trust account. Use your global user account or local user account to access this server.\n        /// </summary>\n        ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = 1807,\n        /// <summary>\n        /// The account used is a computer account. Use your global user account or local user account to access this server.\n        /// </summary>\n        ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT = 1808,\n        /// <summary>\n        /// The account used is a server trust account. Use your global user account or local user account to access this server.\n        /// </summary>\n        ERROR_NOLOGON_SERVER_TRUST_ACCOUNT = 1809,\n        /// <summary>\n        /// The name or security ID (SID) of the domain specified is inconsistent with the trust information for that domain.\n        /// </summary>\n        ERROR_DOMAIN_TRUST_INCONSISTENT = 1810,\n        /// <summary>\n        /// The server is in use and cannot be unloaded.\n        /// </summary>\n        ERROR_SERVER_HAS_OPEN_HANDLES = 1811,\n        /// <summary>\n        /// The specified image file did not contain a resource section.\n        /// </summary>\n        ERROR_RESOURCE_DATA_NOT_FOUND = 1812,\n        /// <summary>\n        /// The specified resource type cannot be found in the image file.\n        /// </summary>\n        ERROR_RESOURCE_TYPE_NOT_FOUND = 1813,\n        /// <summary>\n        /// The specified resource name cannot be found in the image file.\n        /// </summary>\n        ERROR_RESOURCE_NAME_NOT_FOUND = 1814,\n        /// <summary>\n        /// The specified resource language ID cannot be found in the image file.\n        /// </summary>\n        ERROR_RESOURCE_LANG_NOT_FOUND = 1815,\n        /// <summary>\n        /// Not enough quota is available to process this command.\n        /// </summary>\n        ERROR_NOT_ENOUGH_QUOTA = 1816,\n        /// <summary>\n        /// No interfaces have been registered.\n        /// </summary>\n        RPC_S_NO_INTERFACES = 1817,\n        /// <summary>\n        /// The remote procedure call was cancelled.\n        /// </summary>\n        RPC_S_CALL_CANCELLED = 1818,\n        /// <summary>\n        /// The binding handle does not contain all required information.\n        /// </summary>\n        RPC_S_BINDING_INCOMPLETE = 1819,\n        /// <summary>\n        /// A communications failure occurred during a remote procedure call.\n        /// </summary>\n        RPC_S_COMM_FAILURE = 1820,\n        /// <summary>\n        /// The requested authentication level is not supported.\n        /// </summary>\n        RPC_S_UNSUPPORTED_AUTHN_LEVEL = 1821,\n        /// <summary>\n        /// No principal name registered.\n        /// </summary>\n        RPC_S_NO_PRINC_NAME = 1822,\n        /// <summary>\n        /// The error specified is not a valid Windows RPC error code.\n        /// </summary>\n        RPC_S_NOT_RPC_ERROR = 1823,\n        /// <summary>\n        /// A UUID that is valid only on this computer has been allocated.\n        /// </summary>\n        RPC_S_UUID_LOCAL_ONLY = 1824,\n        /// <summary>\n        /// A security package specific error occurred.\n        /// </summary>\n        RPC_S_SEC_PKG_ERROR = 1825,\n        /// <summary>\n        /// Thread is not canceled.\n        /// </summary>\n        RPC_S_NOT_CANCELLED = 1826,\n        /// <summary>\n        /// Invalid operation on the encoding/decoding handle.\n        /// </summary>\n        RPC_X_INVALID_ES_ACTION = 1827,\n        /// <summary>\n        /// Incompatible version of the serializing package.\n        /// </summary>\n        RPC_X_WRONG_ES_VERSION = 1828,\n        /// <summary>\n        /// Incompatible version of the RPC stub.\n        /// </summary>\n        RPC_X_WRONG_STUB_VERSION = 1829,\n        /// <summary>\n        /// The RPC pipe object is invalid or corrupted.\n        /// </summary>\n        RPC_X_INVALID_PIPE_OBJECT = 1830,\n        /// <summary>\n        /// An invalid operation was attempted on an RPC pipe object.\n        /// </summary>\n        RPC_X_WRONG_PIPE_ORDER = 1831,\n        /// <summary>\n        /// Unsupported RPC pipe version.\n        /// </summary>\n        RPC_X_WRONG_PIPE_VERSION = 1832,\n        /// <summary>\n        /// The group member was not found.\n        /// </summary>\n        RPC_S_GROUP_MEMBER_NOT_FOUND = 1898,\n        /// <summary>\n        /// The endpoint mapper database entry could not be created.\n        /// </summary>\n        EPT_S_CANT_CREATE = 1899,\n        /// <summary>\n        /// The object universal unique identifier (UUID) is the nil UUID.\n        /// </summary>\n        RPC_S_INVALID_OBJECT = 1900,\n        /// <summary>\n        /// The specified time is invalid.\n        /// </summary>\n        ERROR_INVALID_TIME = 1901,\n        /// <summary>\n        /// The specified form name is invalid.\n        /// </summary>\n        ERROR_INVALID_FORM_NAME = 1902,\n        /// <summary>\n        /// The specified form size is invalid.\n        /// </summary>\n        ERROR_INVALID_FORM_SIZE = 1903,\n        /// <summary>\n        /// The specified printer handle is already being waited on\n        /// </summary>\n        ERROR_ALREADY_WAITING = 1904,\n        /// <summary>\n        /// The specified printer has been deleted.\n        /// </summary>\n        ERROR_PRINTER_DELETED = 1905,\n        /// <summary>\n        /// The state of the printer is invalid.\n        /// </summary>\n        ERROR_INVALID_PRINTER_STATE = 1906,\n        /// <summary>\n        /// The user's password must be changed before logging on the first time.\n        /// </summary>\n        ERROR_PASSUInt16_MUST_CHANGE = 1907,\n        /// <summary>\n        /// Could not find the domain controller for this domain.\n        /// </summary>\n        ERROR_DOMAIN_CONTROLLER_NOT_FOUND = 1908,\n        /// <summary>\n        /// The referenced account is currently locked out and may not be logged on to.\n        /// </summary>\n        ERROR_ACCOUNT_LOCKED_OUT = 1909,\n        /// <summary>\n        /// The object exporter specified was not found.\n        /// </summary>\n        OR_INVALID_OXID = 1910,\n        /// <summary>\n        /// The object specified was not found.\n        /// </summary>\n        OR_INVALID_OID = 1911,\n        /// <summary>\n        /// The object resolver set specified was not found.\n        /// </summary>\n        OR_INVALID_SET = 1912,\n        /// <summary>\n        /// Some data remains to be sent in the request buffer.\n        /// </summary>\n        RPC_S_SEND_INCOMPLETE = 1913,\n        /// <summary>\n        /// Invalid asynchronous remote procedure call handle.\n        /// </summary>\n        RPC_S_INVALID_ASYNC_HANDLE = 1914,\n        /// <summary>\n        /// Invalid asynchronous RPC call handle for this operation.\n        /// </summary>\n        RPC_S_INVALID_ASYNC_CALL = 1915,\n        /// <summary>\n        /// The RPC pipe object has already been closed.\n        /// </summary>\n        RPC_X_PIPE_CLOSED = 1916,\n        /// <summary>\n        /// The RPC call completed before all pipes were processed.\n        /// </summary>\n        RPC_X_PIPE_DISCIPLINE_ERROR = 1917,\n        /// <summary>\n        /// No more data is available from the RPC pipe.\n        /// </summary>\n        RPC_X_PIPE_EMPTY = 1918,\n        /// <summary>\n        /// No site name is available for this machine.\n        /// </summary>\n        ERROR_NO_SITENAME = 1919,\n        /// <summary>\n        /// The file can not be accessed by the system.\n        /// </summary>\n        ERROR_CANT_ACCESS_FILE = 1920,\n        /// <summary>\n        /// The name of the file cannot be resolved by the system.\n        /// </summary>\n        ERROR_CANT_RESOLVE_FILENAME = 1921,\n        /// <summary>\n        /// The entry is not of the expected type.\n        /// </summary>\n        RPC_S_ENTRY_TYPE_MISMATCH = 1922,\n        /// <summary>\n        /// Not all object UUIDs could be exported to the specified entry.\n        /// </summary>\n        RPC_S_NOT_ALL_OBJS_EXPORTED = 1923,\n        /// <summary>\n        /// Interface could not be exported to the specified entry.\n        /// </summary>\n        RPC_S_INTERFACE_NOT_EXPORTED = 1924,\n        /// <summary>\n        /// The specified profile entry could not be added.\n        /// </summary>\n        RPC_S_PROFILE_NOT_ADDED = 1925,\n        /// <summary>\n        /// The specified profile element could not be added.\n        /// </summary>\n        RPC_S_PRF_ELT_NOT_ADDED = 1926,\n        /// <summary>\n        /// The specified profile element could not be removed.\n        /// </summary>\n        RPC_S_PRF_ELT_NOT_REMOVED = 1927,\n        /// <summary>\n        /// The group element could not be added.\n        /// </summary>\n        RPC_S_GRP_ELT_NOT_ADDED = 1928,\n        /// <summary>\n        /// The group element could not be removed.\n        /// </summary>\n        RPC_S_GRP_ELT_NOT_REMOVED = 1929,\n        /// <summary>\n        /// The printer driver is not compatible with a policy enabled on your computer that blocks NT 4.0 drivers.\n        /// </summary>\n        ERROR_KM_DRIVER_BLOCKED = 1930,\n        /// <summary>\n        /// The context has expired and can no longer be used.\n        /// </summary>\n        ERROR_CONTEXT_EXPIRED = 1931,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_PER_USER_TRUST_QUOTA_EXCEEDED = 1932,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED = 1933,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED = 1934,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_AUTHENTICATION_FIREWALL_FAILED = 1935,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED = 1936,\n        /// <summary>\n        /// The pixel format is invalid.\n        /// </summary>\n        ERROR_INVALID_PIXEL_FORMAT = 2000,\n        /// <summary>\n        /// The specified driver is invalid.\n        /// </summary>\n        ERROR_BAD_DRIVER = 2001,\n        /// <summary>\n        /// The window style or class attribute is invalid for this operation.\n        /// </summary>\n        ERROR_INVALID_WINDOW_STYLE = 2002,\n        /// <summary>\n        /// The requested metafile operation is not supported.\n        /// </summary>\n        ERROR_METAFILE_NOT_SUPPORTED = 2003,\n        /// <summary>\n        /// The requested transformation operation is not supported.\n        /// </summary>\n        ERROR_TRANSFORM_NOT_SUPPORTED = 2004,\n        /// <summary>\n        /// The requested clipping operation is not supported.\n        /// </summary>\n        ERROR_CLIPPING_NOT_SUPPORTED = 2005,\n        /// <summary>\n        /// The specified color management module is invalid.\n        /// </summary>\n        ERROR_INVALID_CMM = 2010,\n        /// <summary>\n        /// The specified color profile is invalid.\n        /// </summary>\n        ERROR_INVALID_PROFILE = 2011,\n        /// <summary>\n        /// The specified tag was not found.\n        /// </summary>\n        ERROR_TAG_NOT_FOUND = 2012,\n        /// <summary>\n        /// A required tag is not present.\n        /// </summary>\n        ERROR_TAG_NOT_PRESENT = 2013,\n        /// <summary>\n        /// The specified tag is already present.\n        /// </summary>\n        ERROR_DUPLICATE_TAG = 2014,\n        /// <summary>\n        /// The specified color profile is not associated with any device.\n        /// </summary>\n        ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE = 2015,\n        /// <summary>\n        /// The specified color profile was not found.\n        /// </summary>\n        ERROR_PROFILE_NOT_FOUND = 2016,\n        /// <summary>\n        /// The specified color space is invalid.\n        /// </summary>\n        ERROR_INVALID_COLORSPACE = 2017,\n        /// <summary>\n        /// Image Color Management is not enabled.\n        /// </summary>\n        ERROR_ICM_NOT_ENABLED = 2018,\n        /// <summary>\n        /// There was an error while deleting the color transform.\n        /// </summary>\n        ERROR_DELETING_ICM_XFORM = 2019,\n        /// <summary>\n        /// The specified color transform is invalid.\n        /// </summary>\n        ERROR_INVALID_TRANSFORM = 2020,\n        /// <summary>\n        /// The specified transform does not match the bitmap's color space.\n        /// </summary>\n        ERROR_COLORSPACE_MISMATCH = 2021,\n        /// <summary>\n        /// The specified named color index is not present in the profile.\n        /// </summary>\n        ERROR_INVALID_COLORINDEX = 2022,\n        /// <summary>\n        /// The network connection was made successfully, but the user had to be prompted for a password other than the one originally specified.\n        /// </summary>\n        ERROR_CONNECTED_OTHER_PASSUInt16 = 2108,\n        /// <summary>\n        /// The network connection was made successfully using default credentials.\n        /// </summary>\n        ERROR_CONNECTED_OTHER_PASSUInt16_DEFAULT = 2109,\n        /// <summary>\n        /// The specified username is invalid.\n        /// </summary>\n        ERROR_BAD_USERNAME = 2202,\n        /// <summary>\n        /// This network connection does not exist.\n        /// </summary>\n        ERROR_NOT_CONNECTED = 2250,\n        /// <summary>\n        /// This network connection has files open or requests pending.\n        /// </summary>\n        ERROR_OPEN_FILES = 2401,\n        /// <summary>\n        /// Active connections still exist.\n        /// </summary>\n        ERROR_ACTIVE_CONNECTIONS = 2402,\n        /// <summary>\n        /// The device is in use by an active process and cannot be disconnected.\n        /// </summary>\n        ERROR_DEVICE_IN_USE = 2404,\n        /// <summary>\n        /// The specified print monitor is unknown.\n        /// </summary>\n        ERROR_UNKNOWN_PRINT_MONITOR = 3000,\n        /// <summary>\n        /// The specified printer driver is currently in use.\n        /// </summary>\n        ERROR_PRINTER_DRIVER_IN_USE = 3001,\n        /// <summary>\n        /// The spool file was not found.\n        /// </summary>\n        ERROR_SPOOL_FILE_NOT_FOUND = 3002,\n        /// <summary>\n        /// A StartDocPrinter call was not issued.\n        /// </summary>\n        ERROR_SPL_NO_STARTDOC = 3003,\n        /// <summary>\n        /// An AddJob call was not issued.\n        /// </summary>\n        ERROR_SPL_NO_ADDJOB = 3004,\n        /// <summary>\n        /// The specified print processor has already been installed.\n        /// </summary>\n        ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED = 3005,\n        /// <summary>\n        /// The specified print monitor has already been installed.\n        /// </summary>\n        ERROR_PRINT_MONITOR_ALREADY_INSTALLED = 3006,\n        /// <summary>\n        /// The specified print monitor does not have the required functions.\n        /// </summary>\n        ERROR_INVALID_PRINT_MONITOR = 3007,\n        /// <summary>\n        /// The specified print monitor is currently in use.\n        /// </summary>\n        ERROR_PRINT_MONITOR_IN_USE = 3008,\n        /// <summary>\n        /// The requested operation is not allowed when there are jobs queued to the printer.\n        /// </summary>\n        ERROR_PRINTER_HAS_JOBS_QUEUED = 3009,\n        /// <summary>\n        /// The requested operation is successful. Changes will not be effective until the system is rebooted.\n        /// </summary>\n        ERROR_SUCCESS_REBOOT_REQUIRED = 3010,\n        /// <summary>\n        /// The requested operation is successful. Changes will not be effective until the service is restarted.\n        /// </summary>\n        ERROR_SUCCESS_RESTART_REQUIRED = 3011,\n        /// <summary>\n        /// No printers were found.\n        /// </summary>\n        ERROR_PRINTER_NOT_FOUND = 3012,\n        /// <summary>\n        /// The printer driver is known to be unreliable.\n        /// </summary>\n        ERROR_PRINTER_DRIVER_WARNED = 3013,\n        /// <summary>\n        /// The printer driver is known to harm the system.\n        /// </summary>\n        ERROR_PRINTER_DRIVER_BLOCKED = 3014,\n        /// <summary>\n        /// WINS encountered an error while processing the command.\n        /// </summary>\n        ERROR_WINS_INTERNAL = 4000,\n        /// <summary>\n        /// The local WINS can not be deleted.\n        /// </summary>\n        ERROR_CAN_NOT_DEL_LOCAL_WINS = 4001,\n        /// <summary>\n        /// The importation from the file failed.\n        /// </summary>\n        ERROR_STATIC_INIT = 4002,\n        /// <summary>\n        /// The backup failed. Was a full backup done before?\n        /// </summary>\n        ERROR_INC_BACKUP = 4003,\n        /// <summary>\n        /// The backup failed. Check the directory to which you are backing the database.\n        /// </summary>\n        ERROR_FULL_BACKUP = 4004,\n        /// <summary>\n        /// The name does not exist in the WINS database.\n        /// </summary>\n        ERROR_REC_NON_EXISTENT = 4005,\n        /// <summary>\n        /// Replication with a nonconfigured partner is not allowed.\n        /// </summary>\n        ERROR_RPL_NOT_ALLOWED = 4006,\n        /// <summary>\n        /// The DHCP client has obtained an IP address that is already in use on the network. The local interface will be disabled until the DHCP client can obtain a new address.\n        /// </summary>\n        ERROR_DHCP_ADDRESS_CONFLICT = 4100,\n        /// <summary>\n        /// The GUID passed was not recognized as valid by a WMI data provider.\n        /// </summary>\n        ERROR_WMI_GUID_NOT_FOUND = 4200,\n        /// <summary>\n        /// The instance name passed was not recognized as valid by a WMI data provider.\n        /// </summary>\n        ERROR_WMI_INSTANCE_NOT_FOUND = 4201,\n        /// <summary>\n        /// The data item ID passed was not recognized as valid by a WMI data provider.\n        /// </summary>\n        ERROR_WMI_ITEMID_NOT_FOUND = 4202,\n        /// <summary>\n        /// The WMI request could not be completed and should be retried.\n        /// </summary>\n        ERROR_WMI_TRY_AGAIN = 4203,\n        /// <summary>\n        /// The WMI data provider could not be located.\n        /// </summary>\n        ERROR_WMI_DP_NOT_FOUND = 4204,\n        /// <summary>\n        /// The WMI data provider references an instance set that has not been registered.\n        /// </summary>\n        ERROR_WMI_UNRESOLVED_INSTANCE_REF = 4205,\n        /// <summary>\n        /// The WMI data block or event notification has already been enabled.\n        /// </summary>\n        ERROR_WMI_ALREADY_ENABLED = 4206,\n        /// <summary>\n        /// The WMI data block is no longer available.\n        /// </summary>\n        ERROR_WMI_GUID_DISCONNECTED = 4207,\n        /// <summary>\n        /// The WMI data service is not available.\n        /// </summary>\n        ERROR_WMI_SERVER_UNAVAILABLE = 4208,\n        /// <summary>\n        /// The WMI data provider failed to carry out the request.\n        /// </summary>\n        ERROR_WMI_DP_FAILED = 4209,\n        /// <summary>\n        /// The WMI MOF information is not valid.\n        /// </summary>\n        ERROR_WMI_INVALID_MOF = 4210,\n        /// <summary>\n        /// The WMI registration information is not valid.\n        /// </summary>\n        ERROR_WMI_INVALID_REGINFO = 4211,\n        /// <summary>\n        /// The WMI data block or event notification has already been disabled.\n        /// </summary>\n        ERROR_WMI_ALREADY_DISABLED = 4212,\n        /// <summary>\n        /// The WMI data item or data block is read only.\n        /// </summary>\n        ERROR_WMI_READ_ONLY = 4213,\n        /// <summary>\n        /// The WMI data item or data block could not be changed.\n        /// </summary>\n        ERROR_WMI_SET_FAILURE = 4214,\n        /// <summary>\n        /// The media identifier does not represent a valid medium.\n        /// </summary>\n        ERROR_INVALID_MEDIA = 4300,\n        /// <summary>\n        /// The library identifier does not represent a valid library.\n        /// </summary>\n        ERROR_INVALID_LIBRARY = 4301,\n        /// <summary>\n        /// The media pool identifier does not represent a valid media pool.\n        /// </summary>\n        ERROR_INVALID_MEDIA_POOL = 4302,\n        /// <summary>\n        /// The drive and medium are not compatible or exist in different libraries.\n        /// </summary>\n        ERROR_DRIVE_MEDIA_MISMATCH = 4303,\n        /// <summary>\n        /// The medium currently exists in an offline library and must be online to perform this operation.\n        /// </summary>\n        ERROR_MEDIA_OFFLINE = 4304,\n        /// <summary>\n        /// The operation cannot be performed on an offline library.\n        /// </summary>\n        ERROR_LIBRARY_OFFLINE = 4305,\n        /// <summary>\n        /// The library, drive, or media pool is empty.\n        /// </summary>\n        ERROR_EMPTY = 4306,\n        /// <summary>\n        /// The library, drive, or media pool must be empty to perform this operation.\n        /// </summary>\n        ERROR_NOT_EMPTY = 4307,\n        /// <summary>\n        /// No media is currently available in this media pool or library.\n        /// </summary>\n        ERROR_MEDIA_UNAVAILABLE = 4308,\n        /// <summary>\n        /// A resource required for this operation is disabled.\n        /// </summary>\n        ERROR_RESOURCE_DISABLED = 4309,\n        /// <summary>\n        /// The media identifier does not represent a valid cleaner.\n        /// </summary>\n        ERROR_INVALID_CLEANER = 4310,\n        /// <summary>\n        /// The drive cannot be cleaned or does not support cleaning.\n        /// </summary>\n        ERROR_UNABLE_TO_CLEAN = 4311,\n        /// <summary>\n        /// The object identifier does not represent a valid object.\n        /// </summary>\n        ERROR_OBJECT_NOT_FOUND = 4312,\n        /// <summary>\n        /// Unable to read from or write to the database.\n        /// </summary>\n        ERROR_DATABASE_FAILURE = 4313,\n        /// <summary>\n        /// The database is full.\n        /// </summary>\n        ERROR_DATABASE_FULL = 4314,\n        /// <summary>\n        /// The medium is not compatible with the device or media pool.\n        /// </summary>\n        ERROR_MEDIA_INCOMPATIBLE = 4315,\n        /// <summary>\n        /// The resource required for this operation does not exist.\n        /// </summary>\n        ERROR_RESOURCE_NOT_PRESENT = 4316,\n        /// <summary>\n        /// The operation identifier is not valid.\n        /// </summary>\n        ERROR_INVALID_OPERATION = 4317,\n        /// <summary>\n        /// The media is not mounted or ready for use.\n        /// </summary>\n        ERROR_MEDIA_NOT_AVAILABLE = 4318,\n        /// <summary>\n        /// The device is not ready for use.\n        /// </summary>\n        ERROR_DEVICE_NOT_AVAILABLE = 4319,\n        /// <summary>\n        /// The operator or administrator has refused the request.\n        /// </summary>\n        ERROR_REQUEST_REFUSED = 4320,\n        /// <summary>\n        /// The drive identifier does not represent a valid drive.\n        /// </summary>\n        ERROR_INVALID_DRIVE_OBJECT = 4321,\n        /// <summary>\n        /// Library is full.  No slot is available for use.\n        /// </summary>\n        ERROR_LIBRARY_FULL = 4322,\n        /// <summary>\n        /// The transport cannot access the medium.\n        /// </summary>\n        ERROR_MEDIUM_NOT_ACCESSIBLE = 4323,\n        /// <summary>\n        /// Unable to load the medium into the drive.\n        /// </summary>\n        ERROR_UNABLE_TO_LOAD_MEDIUM = 4324,\n        /// <summary>\n        /// Unable to retrieve the drive status.\n        /// </summary>\n        ERROR_UNABLE_TO_INVENTORY_DRIVE = 4325,\n        /// <summary>\n        /// Unable to retrieve the slot status.\n        /// </summary>\n        ERROR_UNABLE_TO_INVENTORY_SLOT = 4326,\n        /// <summary>\n        /// Unable to retrieve status about the transport.\n        /// </summary>\n        ERROR_UNABLE_TO_INVENTORY_TRANSPORT = 4327,\n        /// <summary>\n        /// Cannot use the transport because it is already in use.\n        /// </summary>\n        ERROR_TRANSPORT_FULL = 4328,\n        /// <summary>\n        /// Unable to open or close the inject/eject port.\n        /// </summary>\n        ERROR_CONTROLLING_IEPORT = 4329,\n        /// <summary>\n        /// Unable to eject the medium because it is in a drive.\n        /// </summary>\n        ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA = 4330,\n        /// <summary>\n        /// A cleaner slot is already reserved.\n        /// </summary>\n        ERROR_CLEANER_SLOT_SET = 4331,\n        /// <summary>\n        /// A cleaner slot is not reserved.\n        /// </summary>\n        ERROR_CLEANER_SLOT_NOT_SET = 4332,\n        /// <summary>\n        /// The cleaner cartridge has performed the maximum number of drive cleanings.\n        /// </summary>\n        ERROR_CLEANER_CARTRIDGE_SPENT = 4333,\n        /// <summary>\n        /// Unexpected on-medium identifier.\n        /// </summary>\n        ERROR_UNEXPECTED_OMID = 4334,\n        /// <summary>\n        /// The last remaining item in this group or resource cannot be deleted.\n        /// </summary>\n        ERROR_CANT_DELETE_LAST_ITEM = 4335,\n        /// <summary>\n        /// The message provided exceeds the maximum size allowed for this parameter.\n        /// </summary>\n        ERROR_MESSAGE_EXCEEDS_MAX_SIZE = 4336,\n        /// <summary>\n        /// The volume contains system or paging files.\n        /// </summary>\n        ERROR_VOLUME_CONTAINS_SYS_FILES = 4337,\n        /// <summary>\n        /// The media type cannot be removed from this library since at least one drive in the library reports it can support this media type.\n        /// </summary>\n        ERROR_INDIGENOUS_TYPE = 4338,\n        /// <summary>\n        /// This offline media cannot be mounted on this system since no enabled drives are present which can be used.\n        /// </summary>\n        ERROR_NO_SUPPORTING_DRIVES = 4339,\n        /// <summary>\n        /// A cleaner cartridge is present in the tape library.\n        /// </summary>\n        ERROR_CLEANER_CARTRIDGE_INSTALLED = 4340,\n        /// <summary>\n        /// The remote storage service was not able to recall the file.\n        /// </summary>\n        ERROR_FILE_OFFLINE = 4350,\n        /// <summary>\n        /// The remote storage service is not operational at this time.\n        /// </summary>\n        ERROR_REMOTE_STORAGE_NOT_ACTIVE = 4351,\n        /// <summary>\n        /// The remote storage service encountered a media error.\n        /// </summary>\n        ERROR_REMOTE_STORAGE_MEDIA_ERROR = 4352,\n        /// <summary>\n        /// The file or directory is not a reparse point.\n        /// </summary>\n        ERROR_NOT_A_REPARSE_POINT = 4390,\n        /// <summary>\n        /// The reparse point attribute cannot be set because it conflicts with an existing attribute.\n        /// </summary>\n        ERROR_REPARSE_ATTRIBUTE_CONFLICT = 4391,\n        /// <summary>\n        /// The data present in the reparse point buffer is invalid.\n        /// </summary>\n        ERROR_INVALID_REPARSE_DATA = 4392,\n        /// <summary>\n        /// The tag present in the reparse point buffer is invalid.\n        /// </summary>\n        ERROR_REPARSE_TAG_INVALID = 4393,\n        /// <summary>\n        /// There is a mismatch between the tag specified in the request and the tag present in the reparse point.\n        /// </summary>\n        ERROR_REPARSE_TAG_MISMATCH = 4394,\n        /// <summary>\n        /// Single Instance Storage is not available on this volume.\n        /// </summary>\n        ERROR_VOLUME_NOT_SIS_ENABLED = 4500,\n        /// <summary>\n        /// The cluster resource cannot be moved to another group because other resources are dependent on it.\n        /// </summary>\n        ERROR_DEPENDENT_RESOURCE_EXISTS = 5001,\n        /// <summary>\n        /// The cluster resource dependency cannot be found.\n        /// </summary>\n        ERROR_DEPENDENCY_NOT_FOUND = 5002,\n        /// <summary>\n        /// The cluster resource cannot be made dependent on the specified resource because it is already dependent.\n        /// </summary>\n        ERROR_DEPENDENCY_ALREADY_EXISTS = 5003,\n        /// <summary>\n        /// The cluster resource is not online.\n        /// </summary>\n        ERROR_RESOURCE_NOT_ONLINE = 5004,\n        /// <summary>\n        /// A cluster node is not available for this operation.\n        /// </summary>\n        ERROR_HOST_NODE_NOT_AVAILABLE = 5005,\n        /// <summary>\n        /// The cluster resource is not available.\n        /// </summary>\n        ERROR_RESOURCE_NOT_AVAILABLE = 5006,\n        /// <summary>\n        /// The cluster resource could not be found.\n        /// </summary>\n        ERROR_RESOURCE_NOT_FOUND = 5007,\n        /// <summary>\n        /// The cluster is being shut down.\n        /// </summary>\n        ERROR_SHUTDOWN_CLUSTER = 5008,\n        /// <summary>\n        /// A cluster node cannot be evicted from the cluster unless the node is down or it is the last node.\n        /// </summary>\n        ERROR_CANT_EVICT_ACTIVE_NODE = 5009,\n        /// <summary>\n        /// The object already exists.\n        /// </summary>\n        ERROR_OBJECT_ALREADY_EXISTS = 5010,\n        /// <summary>\n        /// The object is already in the list.\n        /// </summary>\n        ERROR_OBJECT_IN_LIST = 5011,\n        /// <summary>\n        /// The cluster group is not available for any new requests.\n        /// </summary>\n        ERROR_GROUP_NOT_AVAILABLE = 5012,\n        /// <summary>\n        /// The cluster group could not be found.\n        /// </summary>\n        ERROR_GROUP_NOT_FOUND = 5013,\n        /// <summary>\n        /// The operation could not be completed because the cluster group is not online.\n        /// </summary>\n        ERROR_GROUP_NOT_ONLINE = 5014,\n        /// <summary>\n        /// The cluster node is not the owner of the resource.\n        /// </summary>\n        ERROR_HOST_NODE_NOT_RESOURCE_OWNER = 5015,\n        /// <summary>\n        /// The cluster node is not the owner of the group.\n        /// </summary>\n        ERROR_HOST_NODE_NOT_GROUP_OWNER = 5016,\n        /// <summary>\n        /// The cluster resource could not be created in the specified resource monitor.\n        /// </summary>\n        ERROR_RESMON_CREATE_FAILED = 5017,\n        /// <summary>\n        /// The cluster resource could not be brought online by the resource monitor.\n        /// </summary>\n        ERROR_RESMON_ONLINE_FAILED = 5018,\n        /// <summary>\n        /// The operation could not be completed because the cluster resource is online.\n        /// </summary>\n        ERROR_RESOURCE_ONLINE = 5019,\n        /// <summary>\n        /// The cluster resource could not be deleted or brought offline because it is the quorum resource.\n        /// </summary>\n        ERROR_QUORUM_RESOURCE = 5020,\n        /// <summary>\n        /// The cluster could not make the specified resource a quorum resource because it is not capable of being a quorum resource.\n        /// </summary>\n        ERROR_NOT_QUORUM_CAPABLE = 5021,\n        /// <summary>\n        /// The cluster software is shutting down.\n        /// </summary>\n        ERROR_CLUSTER_SHUTTING_DOWN = 5022,\n        /// <summary>\n        /// The group or resource is not in the correct state to perform the requested operation.\n        /// </summary>\n        ERROR_INVALID_STATE = 5023,\n        /// <summary>\n        /// The properties were stored but not all changes will take effect until the next time the resource is brought online.\n        /// </summary>\n        ERROR_RESOURCE_PROPERTIES_STORED = 5024,\n        /// <summary>\n        /// The cluster could not make the specified resource a quorum resource because it does not belong to a shared storage class.\n        /// </summary>\n        ERROR_NOT_QUORUM_CLASS = 5025,\n        /// <summary>\n        /// The cluster resource could not be deleted since it is a core resource.\n        /// </summary>\n        ERROR_CORE_RESOURCE = 5026,\n        /// <summary>\n        /// The quorum resource failed to come online.\n        /// </summary>\n        ERROR_QUORUM_RESOURCE_ONLINE_FAILED = 5027,\n        /// <summary>\n        /// The quorum log could not be created or mounted successfully.\n        /// </summary>\n        ERROR_QUORUMLOG_OPEN_FAILED = 5028,\n        /// <summary>\n        /// The cluster log is corrupt.\n        /// </summary>\n        ERROR_CLUSTERLOG_CORRUPT = 5029,\n        /// <summary>\n        /// The record could not be written to the cluster log since it exceeds the maximum size.\n        /// </summary>\n        ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE = 5030,\n        /// <summary>\n        /// The cluster log exceeds its maximum size.\n        /// </summary>\n        ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE = 5031,\n        /// <summary>\n        /// No checkpoint record was found in the cluster log.\n        /// </summary>\n        ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND = 5032,\n        /// <summary>\n        /// The minimum required disk space needed for logging is not available.\n        /// </summary>\n        ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE = 5033,\n        /// <summary>\n        /// The cluster node failed to take control of the quorum resource because the resource is owned by another active node.\n        /// </summary>\n        ERROR_QUORUM_OWNER_ALIVE = 5034,\n        /// <summary>\n        /// A cluster network is not available for this operation.\n        /// </summary>\n        ERROR_NETWORK_NOT_AVAILABLE = 5035,\n        /// <summary>\n        /// A cluster node is not available for this operation.\n        /// </summary>\n        ERROR_NODE_NOT_AVAILABLE = 5036,\n        /// <summary>\n        /// All cluster nodes must be running to perform this operation.\n        /// </summary>\n        ERROR_ALL_NODES_NOT_AVAILABLE = 5037,\n        /// <summary>\n        /// A cluster resource failed.\n        /// </summary>\n        ERROR_RESOURCE_FAILED = 5038,\n        /// <summary>\n        /// The cluster node is not valid.\n        /// </summary>\n        ERROR_CLUSTER_INVALID_NODE = 5039,\n        /// <summary>\n        /// The cluster node already exists.\n        /// </summary>\n        ERROR_CLUSTER_NODE_EXISTS = 5040,\n        /// <summary>\n        /// A node is in the process of joining the cluster.\n        /// </summary>\n        ERROR_CLUSTER_JOIN_IN_PROGRESS = 5041,\n        /// <summary>\n        /// The cluster node was not found.\n        /// </summary>\n        ERROR_CLUSTER_NODE_NOT_FOUND = 5042,\n        /// <summary>\n        /// The cluster local node information was not found.\n        /// </summary>\n        ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND = 5043,\n        /// <summary>\n        /// The cluster network already exists.\n        /// </summary>\n        ERROR_CLUSTER_NETWORK_EXISTS = 5044,\n        /// <summary>\n        /// The cluster network was not found.\n        /// </summary>\n        ERROR_CLUSTER_NETWORK_NOT_FOUND = 5045,\n        /// <summary>\n        /// The cluster network interface already exists.\n        /// </summary>\n        ERROR_CLUSTER_NETINTERFACE_EXISTS = 5046,\n        /// <summary>\n        /// The cluster network interface was not found.\n        /// </summary>\n        ERROR_CLUSTER_NETINTERFACE_NOT_FOUND = 5047,\n        /// <summary>\n        /// The cluster request is not valid for this object.\n        /// </summary>\n        ERROR_CLUSTER_INVALID_REQUEST = 5048,\n        /// <summary>\n        /// The cluster network provider is not valid.\n        /// </summary>\n        ERROR_CLUSTER_INVALID_NETWORK_PROVIDER = 5049,\n        /// <summary>\n        /// The cluster node is down.\n        /// </summary>\n        ERROR_CLUSTER_NODE_DOWN = 5050,\n        /// <summary>\n        /// The cluster node is not reachable.\n        /// </summary>\n        ERROR_CLUSTER_NODE_UNREACHABLE = 5051,\n        /// <summary>\n        /// The cluster node is not a member of the cluster.\n        /// </summary>\n        ERROR_CLUSTER_NODE_NOT_MEMBER = 5052,\n        /// <summary>\n        /// A cluster join operation is not in progress.\n        /// </summary>\n        ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS = 5053,\n        /// <summary>\n        /// The cluster network is not valid.\n        /// </summary>\n        ERROR_CLUSTER_INVALID_NETWORK = 5054,\n        /// <summary>\n        /// The cluster node is up.\n        /// </summary>\n        ERROR_CLUSTER_NODE_UP = 5056,\n        /// <summary>\n        /// The cluster IP address is already in use.\n        /// </summary>\n        ERROR_CLUSTER_IPADDR_IN_USE = 5057,\n        /// <summary>\n        /// The cluster node is not paused.\n        /// </summary>\n        ERROR_CLUSTER_NODE_NOT_PAUSED = 5058,\n        /// <summary>\n        /// No cluster security context is available.\n        /// </summary>\n        ERROR_CLUSTER_NO_SECURITY_CONTEXT = 5059,\n        /// <summary>\n        /// The cluster network is not configured for internal cluster communication.\n        /// </summary>\n        ERROR_CLUSTER_NETWORK_NOT_INTERNAL = 5060,\n        /// <summary>\n        /// The cluster node is already up.\n        /// </summary>\n        ERROR_CLUSTER_NODE_ALREADY_UP = 5061,\n        /// <summary>\n        /// The cluster node is already down.\n        /// </summary>\n        ERROR_CLUSTER_NODE_ALREADY_DOWN = 5062,\n        /// <summary>\n        /// The cluster network is already online.\n        /// </summary>\n        ERROR_CLUSTER_NETWORK_ALREADY_ONLINE = 5063,\n        /// <summary>\n        /// The cluster network is already offline.\n        /// </summary>\n        ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE = 5064,\n        /// <summary>\n        /// The cluster node is already a member of the cluster.\n        /// </summary>\n        ERROR_CLUSTER_NODE_ALREADY_MEMBER = 5065,\n        /// <summary>\n        /// The cluster network is the only one configured for internal cluster communication between two or more active cluster nodes. The internal communication capability cannot be removed from the network.\n        /// </summary>\n        ERROR_CLUSTER_LAST_INTERNAL_NETWORK = 5066,\n        /// <summary>\n        /// One or more cluster resources depend on the network to provide service to clients. The client access capability cannot be removed from the network.\n        /// </summary>\n        ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS = 5067,\n        /// <summary>\n        /// This operation cannot be performed on the cluster resource as it the quorum resource. You may not bring the quorum resource offline or modify its possible owners list.\n        /// </summary>\n        ERROR_INVALID_OPERATION_ON_QUORUM = 5068,\n        /// <summary>\n        /// The cluster quorum resource is not allowed to have any dependencies.\n        /// </summary>\n        ERROR_DEPENDENCY_NOT_ALLOWED = 5069,\n        /// <summary>\n        /// The cluster node is paused.\n        /// </summary>\n        ERROR_CLUSTER_NODE_PAUSED = 5070,\n        /// <summary>\n        /// The cluster resource cannot be brought online. The owner node cannot run this resource.\n        /// </summary>\n        ERROR_NODE_CANT_HOST_RESOURCE = 5071,\n        /// <summary>\n        /// The cluster node is not ready to perform the requested operation.\n        /// </summary>\n        ERROR_CLUSTER_NODE_NOT_READY = 5072,\n        /// <summary>\n        /// The cluster node is shutting down.\n        /// </summary>\n        ERROR_CLUSTER_NODE_SHUTTING_DOWN = 5073,\n        /// <summary>\n        /// The cluster join operation was aborted.\n        /// </summary>\n        ERROR_CLUSTER_JOIN_ABORTED = 5074,\n        /// <summary>\n        /// The cluster join operation failed due to incompatible software versions between the joining node and its sponsor.\n        /// </summary>\n        ERROR_CLUSTER_INCOMPATIBLE_VERSIONS = 5075,\n        /// <summary>\n        /// This resource cannot be created because the cluster has reached the limit on the number of resources it can monitor.\n        /// </summary>\n        ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED = 5076,\n        /// <summary>\n        /// The system configuration changed during the cluster join or form operation. The join or form operation was aborted.\n        /// </summary>\n        ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED = 5077,\n        /// <summary>\n        /// The specified resource type was not found.\n        /// </summary>\n        ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND = 5078,\n        /// <summary>\n        /// The specified node does not support a resource of this type.  This may be due to version inconsistencies or due to the absence of the resource DLL on this node.\n        /// </summary>\n        ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED = 5079,\n        /// <summary>\n        /// The specified resource name is not supported by this resource DLL. This may be due to a bad (or changed) name supplied to the resource DLL.\n        /// </summary>\n        ERROR_CLUSTER_RESNAME_NOT_FOUND = 5080,\n        /// <summary>\n        /// No authentication package could be registered with the RPC server.\n        /// </summary>\n        ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED = 5081,\n        /// <summary>\n        /// You cannot bring the group online because the owner of the group is not in the preferred list for the group. To change the owner node for the group, move the group.\n        /// </summary>\n        ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST = 5082,\n        /// <summary>\n        /// The join operation failed because the cluster database sequence number has changed or is incompatible with the locker node. This may happen during a join operation if the cluster database was changing during the join.\n        /// </summary>\n        ERROR_CLUSTER_DATABASE_SEQMISMATCH = 5083,\n        /// <summary>\n        /// The resource monitor will not allow the fail operation to be performed while the resource is in its current state. This may happen if the resource is in a pending state.\n        /// </summary>\n        ERROR_RESMON_INVALID_STATE = 5084,\n        /// <summary>\n        /// A non locker code got a request to reserve the lock for making global updates.\n        /// </summary>\n        ERROR_CLUSTER_GUM_NOT_LOCKER = 5085,\n        /// <summary>\n        /// The quorum disk could not be located by the cluster service.\n        /// </summary>\n        ERROR_QUORUM_DISK_NOT_FOUND = 5086,\n        /// <summary>\n        /// The backed up cluster database is possibly corrupt.\n        /// </summary>\n        ERROR_DATABASE_BACKUP_CORRUPT = 5087,\n        /// <summary>\n        /// A DFS root already exists in this cluster node.\n        /// </summary>\n        ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT = 5088,\n        /// <summary>\n        /// An attempt to modify a resource property failed because it conflicts with another existing property.\n        /// </summary>\n        ERROR_RESOURCE_PROPERTY_UNCHANGEABLE = 5089,\n        /// <summary>\n        /// An operation was attempted that is incompatible with the current membership state of the node.\n        /// </summary>\n        ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE = 5890,\n        /// <summary>\n        /// The quorum resource does not contain the quorum log.\n        /// </summary>\n        ERROR_CLUSTER_QUORUMLOG_NOT_FOUND = 5891,\n        /// <summary>\n        /// The membership engine requested shutdown of the cluster service on this node.\n        /// </summary>\n        ERROR_CLUSTER_MEMBERSHIP_HALT = 5892,\n        /// <summary>\n        /// The join operation failed because the cluster instance ID of the joining node does not match the cluster instance ID of the sponsor node.\n        /// </summary>\n        ERROR_CLUSTER_INSTANCE_ID_MISMATCH = 5893,\n        /// <summary>\n        /// A matching network for the specified IP address could not be found. Please also specify a subnet mask and a cluster network.\n        /// </summary>\n        ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP = 5894,\n        /// <summary>\n        /// The actual data type of the property did not match the expected data type of the property.\n        /// </summary>\n        ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH = 5895,\n        /// <summary>\n        /// The cluster node was evicted from the cluster successfully, but the node was not cleaned up.  Extended status information explaining why the node was not cleaned up is available.\n        /// </summary>\n        ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP = 5896,\n        /// <summary>\n        /// Two or more parameter values specified for a resource's properties are in conflict.\n        /// </summary>\n        ERROR_CLUSTER_PARAMETER_MISMATCH = 5897,\n        /// <summary>\n        /// This computer cannot be made a member of a cluster.\n        /// </summary>\n        ERROR_NODE_CANNOT_BE_CLUSTERED = 5898,\n        /// <summary>\n        /// This computer cannot be made a member of a cluster because it does not have the correct version of Windows installed.\n        /// </summary>\n        ERROR_CLUSTER_WRONG_OS_VERSION = 5899,\n        /// <summary>\n        /// A cluster cannot be created with the specified cluster name because that cluster name is already in use. Specify a different name for the cluster.\n        /// </summary>\n        ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME = 5900,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_CLUSCFG_ALREADY_COMMITTED = 5901,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_CLUSCFG_ROLLBACK_FAILED = 5902,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT = 5903,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_CLUSTER_OLD_VERSION = 5904,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME = 5905,\n        /// <summary>\n        /// The specified file could not be encrypted.\n        /// </summary>\n        ERROR_ENCRYPTION_FAILED = 6000,\n        /// <summary>\n        /// The specified file could not be decrypted.\n        /// </summary>\n        ERROR_DECRYPTION_FAILED = 6001,\n        /// <summary>\n        /// The specified file is encrypted and the user does not have the ability to decrypt it.\n        /// </summary>\n        ERROR_FILE_ENCRYPTED = 6002,\n        /// <summary>\n        /// There is no valid encryption recovery policy configured for this system.\n        /// </summary>\n        ERROR_NO_RECOVERY_POLICY = 6003,\n        /// <summary>\n        /// The required encryption driver is not loaded for this system.\n        /// </summary>\n        ERROR_NO_EFS = 6004,\n        /// <summary>\n        /// The file was encrypted with a different encryption driver than is currently loaded.\n        /// </summary>\n        ERROR_WRONG_EFS = 6005,\n        /// <summary>\n        /// There are no EFS keys defined for the user.\n        /// </summary>\n        ERROR_NO_USER_KEYS = 6006,\n        /// <summary>\n        /// The specified file is not encrypted.\n        /// </summary>\n        ERROR_FILE_NOT_ENCRYPTED = 6007,\n        /// <summary>\n        /// The specified file is not in the defined EFS export format.\n        /// </summary>\n        ERROR_NOT_EXPORT_FORMAT = 6008,\n        /// <summary>\n        /// The specified file is read only.\n        /// </summary>\n        ERROR_FILE_READ_ONLY = 6009,\n        /// <summary>\n        /// The directory has been disabled for encryption.\n        /// </summary>\n        ERROR_DIR_EFS_DISALLOWED = 6010,\n        /// <summary>\n        /// The server is not trusted for remote encryption operation.\n        /// </summary>\n        ERROR_EFS_SERVER_NOT_TRUSTED = 6011,\n        /// <summary>\n        /// Recovery policy configured for this system contains invalid recovery certificate.\n        /// </summary>\n        ERROR_BAD_RECOVERY_POLICY = 6012,\n        /// <summary>\n        /// The encryption algorithm used on the source file needs a bigger key buffer than the one on the destination file.\n        /// </summary>\n        ERROR_EFS_ALG_BLOB_TOO_BIG = 6013,\n        /// <summary>\n        /// The disk partition does not support file encryption.\n        /// </summary>\n        ERROR_VOLUME_NOT_SUPPORT_EFS = 6014,\n        /// <summary>\n        /// This machine is disabled for file encryption.\n        /// </summary>\n        ERROR_EFS_DISABLED = 6015,\n        /// <summary>\n        /// A newer system is required to decrypt this encrypted file.\n        /// </summary>\n        ERROR_EFS_VERSION_NOT_SUPPORT = 6016,\n        /// <summary>\n        /// The list of servers for this workgroup is not currently available\n        /// </summary>\n        ERROR_NO_BROWSER_SERVERS_FOUND = 6118,\n        /// <summary>\n        /// The Task Scheduler service must be configured to run in the System account to function properly.  Individual tasks may be configured to run in other accounts.\n        /// </summary>\n        SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200,\n        /// <summary>\n        /// The specified session name is invalid.\n        /// </summary>\n        ERROR_CTX_WINSTATION_NAME_INVALID = 7001,\n        /// <summary>\n        /// The specified protocol driver is invalid.\n        /// </summary>\n        ERROR_CTX_INVALID_PD = 7002,\n        /// <summary>\n        /// The specified protocol driver was not found in the system path.\n        /// </summary>\n        ERROR_CTX_PD_NOT_FOUND = 7003,\n        /// <summary>\n        /// The specified terminal connection driver was not found in the system path.\n        /// </summary>\n        ERROR_CTX_WD_NOT_FOUND = 7004,\n        /// <summary>\n        /// A registry key for event logging could not be created for this session.\n        /// </summary>\n        ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY = 7005,\n        /// <summary>\n        /// A service with the same name already exists on the system.\n        /// </summary>\n        ERROR_CTX_SERVICE_NAME_COLLISION = 7006,\n        /// <summary>\n        /// A close operation is pending on the session.\n        /// </summary>\n        ERROR_CTX_CLOSE_PENDING = 7007,\n        /// <summary>\n        /// There are no free output buffers available.\n        /// </summary>\n        ERROR_CTX_NO_OUTBUF = 7008,\n        /// <summary>\n        /// The MODEM.INF file was not found.\n        /// </summary>\n        ERROR_CTX_MODEM_INF_NOT_FOUND = 7009,\n        /// <summary>\n        /// The modem name was not found in MODEM.INF.\n        /// </summary>\n        ERROR_CTX_INVALID_MODEMNAME = 7010,\n        /// <summary>\n        /// The modem did not accept the command sent to it. Verify that the configured modem name matches the attached modem.\n        /// </summary>\n        ERROR_CTX_MODEM_RESPONSE_ERROR = 7011,\n        /// <summary>\n        /// The modem did not respond to the command sent to it. Verify that the modem is properly cabled and powered on.\n        /// </summary>\n        ERROR_CTX_MODEM_RESPONSE_TIMEOUT = 7012,\n        /// <summary>\n        /// Carrier detect has failed or carrier has been dropped due to disconnect.\n        /// </summary>\n        ERROR_CTX_MODEM_RESPONSE_NO_CARRIER = 7013,\n        /// <summary>\n        /// Dial tone not detected within the required time. Verify that the phone cable is properly attached and functional.\n        /// </summary>\n        ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE = 7014,\n        /// <summary>\n        /// Busy signal detected at remote site on callback.\n        /// </summary>\n        ERROR_CTX_MODEM_RESPONSE_BUSY = 7015,\n        /// <summary>\n        /// Voice detected at remote site on callback.\n        /// </summary>\n        ERROR_CTX_MODEM_RESPONSE_VOICE = 7016,\n        /// <summary>\n        /// Transport driver error\n        /// </summary>\n        ERROR_CTX_TD_ERROR = 7017,\n        /// <summary>\n        /// The specified session cannot be found.\n        /// </summary>\n        ERROR_CTX_WINSTATION_NOT_FOUND = 7022,\n        /// <summary>\n        /// The specified session name is already in use.\n        /// </summary>\n        ERROR_CTX_WINSTATION_ALREADY_EXISTS = 7023,\n        /// <summary>\n        /// The requested operation cannot be completed because the terminal connection is currently busy processing a connect, disconnect, reset, or delete operation.\n        /// </summary>\n        ERROR_CTX_WINSTATION_BUSY = 7024,\n        /// <summary>\n        /// An attempt has been made to connect to a session whose video mode is not supported by the current client.\n        /// </summary>\n        ERROR_CTX_BAD_VIDEO_MODE = 7025,\n        /// <summary>\n        /// The application attempted to enable DOS graphics mode.\n        /// DOS graphics mode is not supported.\n        /// </summary>\n        ERROR_CTX_GRAPHICS_INVALID = 7035,\n        /// <summary>\n        /// Your interactive logon privilege has been disabled.\n        /// Please contact your administrator.\n        /// </summary>\n        ERROR_CTX_LOGON_DISABLED = 7037,\n        /// <summary>\n        /// The requested operation can be performed only on the system console.\n        /// This is most often the result of a driver or system DLL requiring direct console access.\n        /// </summary>\n        ERROR_CTX_NOT_CONSOLE = 7038,\n        /// <summary>\n        /// The client failed to respond to the server connect message.\n        /// </summary>\n        ERROR_CTX_CLIENT_QUERY_TIMEOUT = 7040,\n        /// <summary>\n        /// Disconnecting the console session is not supported.\n        /// </summary>\n        ERROR_CTX_CONSOLE_DISCONNECT = 7041,\n        /// <summary>\n        /// Reconnecting a disconnected session to the console is not supported.\n        /// </summary>\n        ERROR_CTX_CONSOLE_CONNECT = 7042,\n        /// <summary>\n        /// The request to control another session remotely was denied.\n        /// </summary>\n        ERROR_CTX_SHADOW_DENIED = 7044,\n        /// <summary>\n        /// The requested session access is denied.\n        /// </summary>\n        ERROR_CTX_WINSTATION_ACCESS_DENIED = 7045,\n        /// <summary>\n        /// The specified terminal connection driver is invalid.\n        /// </summary>\n        ERROR_CTX_INVALID_WD = 7049,\n        /// <summary>\n        /// The requested session cannot be controlled remotely.\n        /// This may be because the session is disconnected or does not currently have a user logged on.\n        /// </summary>\n        ERROR_CTX_SHADOW_INVALID = 7050,\n        /// <summary>\n        /// The requested session is not configured to allow remote control.\n        /// </summary>\n        ERROR_CTX_SHADOW_DISABLED = 7051,\n        /// <summary>\n        /// Your request to connect to this Terminal Server has been rejected. Your Terminal Server client license number is currently being used by another user.\n        /// Please call your system administrator to obtain a unique license number.\n        /// </summary>\n        ERROR_CTX_CLIENT_LICENSE_IN_USE = 7052,\n        /// <summary>\n        /// Your request to connect to this Terminal Server has been rejected. Your Terminal Server client license number has not been entered for this copy of the Terminal Server client.\n        /// Please contact your system administrator.\n        /// </summary>\n        ERROR_CTX_CLIENT_LICENSE_NOT_SET = 7053,\n        /// <summary>\n        /// The system has reached its licensed logon limit.\n        /// Please try again later.\n        /// </summary>\n        ERROR_CTX_LICENSE_NOT_AVAILABLE = 7054,\n        /// <summary>\n        /// The client you are using is not licensed to use this system.  Your logon request is denied.\n        /// </summary>\n        ERROR_CTX_LICENSE_CLIENT_INVALID = 7055,\n        /// <summary>\n        /// The system license has expired.  Your logon request is denied.\n        /// </summary>\n        ERROR_CTX_LICENSE_EXPIRED = 7056,\n        /// <summary>\n        /// Remote control could not be terminated because the specified session is not currently being remotely controlled.\n        /// </summary>\n        ERROR_CTX_SHADOW_NOT_RUNNING = 7057,\n        /// <summary>\n        /// The remote control of the console was terminated because the display mode was changed. Changing the display mode in a remote control session is not supported.\n        /// </summary>\n        ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE = 7058,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_ACTIVATION_COUNT_EXCEEDED = 7059,\n        /// <summary>\n        /// The file replication service API was called incorrectly.\n        /// </summary>\n        FRS_ERR_INVALID_API_SEQUENCE = 8001,\n        /// <summary>\n        /// The file replication service cannot be started.\n        /// </summary>\n        FRS_ERR_STARTING_SERVICE = 8002,\n        /// <summary>\n        /// The file replication service cannot be stopped.\n        /// </summary>\n        FRS_ERR_STOPPING_SERVICE = 8003,\n        /// <summary>\n        /// The file replication service API terminated the request.\n        /// The event log may have more information.\n        /// </summary>\n        FRS_ERR_INTERNAL_API = 8004,\n        /// <summary>\n        /// The file replication service terminated the request.\n        /// The event log may have more information.\n        /// </summary>\n        FRS_ERR_INTERNAL = 8005,\n        /// <summary>\n        /// The file replication service cannot be contacted.\n        /// The event log may have more information.\n        /// </summary>\n        FRS_ERR_SERVICE_COMM = 8006,\n        /// <summary>\n        /// The file replication service cannot satisfy the request because the user has insufficient privileges.\n        /// The event log may have more information.\n        /// </summary>\n        FRS_ERR_INSUFFICIENT_PRIV = 8007,\n        /// <summary>\n        /// The file replication service cannot satisfy the request because authenticated RPC is not available.\n        /// The event log may have more information.\n        /// </summary>\n        FRS_ERR_AUTHENTICATION = 8008,\n        /// <summary>\n        /// The file replication service cannot satisfy the request because the user has insufficient privileges on the domain controller.\n        /// The event log may have more information.\n        /// </summary>\n        FRS_ERR_PARENT_INSUFFICIENT_PRIV = 8009,\n        /// <summary>\n        /// The file replication service cannot satisfy the request because authenticated RPC is not available on the domain controller.\n        /// The event log may have more information.\n        /// </summary>\n        FRS_ERR_PARENT_AUTHENTICATION = 8010,\n        /// <summary>\n        /// The file replication service cannot communicate with the file replication service on the domain controller.\n        /// The event log may have more information.\n        /// </summary>\n        FRS_ERR_CHILD_TO_PARENT_COMM = 8011,\n        /// <summary>\n        /// The file replication service on the domain controller cannot communicate with the file replication service on this computer.\n        /// The event log may have more information.\n        /// </summary>\n        FRS_ERR_PARENT_TO_CHILD_COMM = 8012,\n        /// <summary>\n        /// The file replication service cannot populate the system volume because of an internal error.\n        /// The event log may have more information.\n        /// </summary>\n        FRS_ERR_SYSVOL_POPULATE = 8013,\n        /// <summary>\n        /// The file replication service cannot populate the system volume because of an internal timeout.\n        /// The event log may have more information.\n        /// </summary>\n        FRS_ERR_SYSVOL_POPULATE_TIMEOUT = 8014,\n        /// <summary>\n        /// The file replication service cannot process the request. The system volume is busy with a previous request.\n        /// </summary>\n        FRS_ERR_SYSVOL_IS_BUSY = 8015,\n        /// <summary>\n        /// The file replication service cannot stop replicating the system volume because of an internal error.\n        /// The event log may have more information.\n        /// </summary>\n        FRS_ERR_SYSVOL_DEMOTE = 8016,\n        /// <summary>\n        /// The file replication service detected an invalid parameter.\n        /// </summary>\n        FRS_ERR_INVALID_SERVICE_PARAMETER = 8017,\n        /// <summary>\n        /// An error occurred while installing the directory service. For more information, see the event log.\n        /// </summary>\n        ERROR_DS_NOT_INSTALLED = 8200,\n        /// <summary>\n        /// The directory service evaluated group memberships locally.\n        /// </summary>\n        ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY = 8201,\n        /// <summary>\n        /// The specified directory service attribute or value does not exist.\n        /// </summary>\n        ERROR_DS_NO_ATTRIBUTE_OR_VALUE = 8202,\n        /// <summary>\n        /// The attribute syntax specified to the directory service is invalid.\n        /// </summary>\n        ERROR_DS_INVALID_ATTRIBUTE_SYNTAX = 8203,\n        /// <summary>\n        /// The attribute type specified to the directory service is not defined.\n        /// </summary>\n        ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED = 8204,\n        /// <summary>\n        /// The specified directory service attribute or value already exists.\n        /// </summary>\n        ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS = 8205,\n        /// <summary>\n        /// The directory service is busy.\n        /// </summary>\n        ERROR_DS_BUSY = 8206,\n        /// <summary>\n        /// The directory service is unavailable.\n        /// </summary>\n        ERROR_DS_UNAVAILABLE = 8207,\n        /// <summary>\n        /// The directory service was unable to allocate a relative identifier.\n        /// </summary>\n        ERROR_DS_NO_RIDS_ALLOCATED = 8208,\n        /// <summary>\n        /// The directory service has exhausted the pool of relative identifiers.\n        /// </summary>\n        ERROR_DS_NO_MORE_RIDS = 8209,\n        /// <summary>\n        /// The requested operation could not be performed because the directory service is not the master for that type of operation.\n        /// </summary>\n        ERROR_DS_INCORRECT_ROLE_OWNER = 8210,\n        /// <summary>\n        /// The directory service was unable to initialize the subsystem that allocates relative identifiers.\n        /// </summary>\n        ERROR_DS_RIDMGR_INIT_ERROR = 8211,\n        /// <summary>\n        /// The requested operation did not satisfy one or more constraints associated with the class of the object.\n        /// </summary>\n        ERROR_DS_OBJ_CLASS_VIOLATION = 8212,\n        /// <summary>\n        /// The directory service can perform the requested operation only on a leaf object.\n        /// </summary>\n        ERROR_DS_CANT_ON_NON_LEAF = 8213,\n        /// <summary>\n        /// The directory service cannot perform the requested operation on the RDN attribute of an object.\n        /// </summary>\n        ERROR_DS_CANT_ON_RDN = 8214,\n        /// <summary>\n        /// The directory service detected an attempt to modify the object class of an object.\n        /// </summary>\n        ERROR_DS_CANT_MOD_OBJ_CLASS = 8215,\n        /// <summary>\n        /// The requested cross-domain move operation could not be performed.\n        /// </summary>\n        ERROR_DS_CROSS_DOM_MOVE_ERROR = 8216,\n        /// <summary>\n        /// Unable to contact the global catalog server.\n        /// </summary>\n        ERROR_DS_GC_NOT_AVAILABLE = 8217,\n        /// <summary>\n        /// The policy object is shared and can only be modified at the root.\n        /// </summary>\n        ERROR_SHARED_POLICY = 8218,\n        /// <summary>\n        /// The policy object does not exist.\n        /// </summary>\n        ERROR_POLICY_OBJECT_NOT_FOUND = 8219,\n        /// <summary>\n        /// The requested policy information is only in the directory service.\n        /// </summary>\n        ERROR_POLICY_ONLY_IN_DS = 8220,\n        /// <summary>\n        /// A domain controller promotion is currently active.\n        /// </summary>\n        ERROR_PROMOTION_ACTIVE = 8221,\n        /// <summary>\n        /// A domain controller promotion is not currently active\n        /// </summary>\n        ERROR_NO_PROMOTION_ACTIVE = 8222,\n        /// <summary>\n        /// An operations error occurred.\n        /// </summary>\n        ERROR_DS_OPERATIONS_ERROR = 8224,\n        /// <summary>\n        /// A protocol error occurred.\n        /// </summary>\n        ERROR_DS_PROTOCOL_ERROR = 8225,\n        /// <summary>\n        /// The time limit for this request was exceeded.\n        /// </summary>\n        ERROR_DS_TIMELIMIT_EXCEEDED = 8226,\n        /// <summary>\n        /// The size limit for this request was exceeded.\n        /// </summary>\n        ERROR_DS_SIZELIMIT_EXCEEDED = 8227,\n        /// <summary>\n        /// The administrative limit for this request was exceeded.\n        /// </summary>\n        ERROR_DS_ADMIN_LIMIT_EXCEEDED = 8228,\n        /// <summary>\n        /// The compare response was false.\n        /// </summary>\n        ERROR_DS_COMPARE_FALSE = 8229,\n        /// <summary>\n        /// The compare response was true.\n        /// </summary>\n        ERROR_DS_COMPARE_TRUE = 8230,\n        /// <summary>\n        /// The requested authentication method is not supported by the server.\n        /// </summary>\n        ERROR_DS_AUTH_METHOD_NOT_SUPPORTED = 8231,\n        /// <summary>\n        /// A more secure authentication method is required for this server.\n        /// </summary>\n        ERROR_DS_STRONG_AUTH_REQUIRED = 8232,\n        /// <summary>\n        /// Inappropriate authentication.\n        /// </summary>\n        ERROR_DS_INAPPROPRIATE_AUTH = 8233,\n        /// <summary>\n        /// The authentication mechanism is unknown.\n        /// </summary>\n        ERROR_DS_AUTH_UNKNOWN = 8234,\n        /// <summary>\n        /// A referral was returned from the server.\n        /// </summary>\n        ERROR_DS_REFERRAL = 8235,\n        /// <summary>\n        /// The server does not support the requested critical extension.\n        /// </summary>\n        ERROR_DS_UNAVAILABLE_CRIT_EXTENSION = 8236,\n        /// <summary>\n        /// This request requires a secure connection.\n        /// </summary>\n        ERROR_DS_CONFIDENTIALITY_REQUIRED = 8237,\n        /// <summary>\n        /// Inappropriate matching.\n        /// </summary>\n        ERROR_DS_INAPPROPRIATE_MATCHING = 8238,\n        /// <summary>\n        /// A constraint violation occurred.\n        /// </summary>\n        ERROR_DS_CONSTRAINT_VIOLATION = 8239,\n        /// <summary>\n        /// There is no such object on the server.\n        /// </summary>\n        ERROR_DS_NO_SUCH_OBJECT = 8240,\n        /// <summary>\n        /// There is an alias problem.\n        /// </summary>\n        ERROR_DS_ALIAS_PROBLEM = 8241,\n        /// <summary>\n        /// An invalid dn syntax has been specified.\n        /// </summary>\n        ERROR_DS_INVALID_DN_SYNTAX = 8242,\n        /// <summary>\n        /// The object is a leaf object.\n        /// </summary>\n        ERROR_DS_IS_LEAF = 8243,\n        /// <summary>\n        /// There is an alias dereferencing problem.\n        /// </summary>\n        ERROR_DS_ALIAS_DEREF_PROBLEM = 8244,\n        /// <summary>\n        /// The server is unwilling to process the request.\n        /// </summary>\n        ERROR_DS_UNWILLING_TO_PERFORM = 8245,\n        /// <summary>\n        /// A loop has been detected.\n        /// </summary>\n        ERROR_DS_LOOP_DETECT = 8246,\n        /// <summary>\n        /// There is a naming violation.\n        /// </summary>\n        ERROR_DS_NAMING_VIOLATION = 8247,\n        /// <summary>\n        /// The result set is too large.\n        /// </summary>\n        ERROR_DS_OBJECT_RESULTS_TOO_LARGE = 8248,\n        /// <summary>\n        /// The operation affects multiple DSAs\n        /// </summary>\n        ERROR_DS_AFFECTS_MULTIPLE_DSAS = 8249,\n        /// <summary>\n        /// The server is not operational.\n        /// </summary>\n        ERROR_DS_SERVER_DOWN = 8250,\n        /// <summary>\n        /// A local error has occurred.\n        /// </summary>\n        ERROR_DS_LOCAL_ERROR = 8251,\n        /// <summary>\n        /// An encoding error has occurred.\n        /// </summary>\n        ERROR_DS_ENCODING_ERROR = 8252,\n        /// <summary>\n        /// A decoding error has occurred.\n        /// </summary>\n        ERROR_DS_DECODING_ERROR = 8253,\n        /// <summary>\n        /// The search filter cannot be recognized.\n        /// </summary>\n        ERROR_DS_FILTER_UNKNOWN = 8254,\n        /// <summary>\n        /// One or more parameters are illegal.\n        /// </summary>\n        ERROR_DS_PARAM_ERROR = 8255,\n        /// <summary>\n        /// The specified method is not supported.\n        /// </summary>\n        ERROR_DS_NOT_SUPPORTED = 8256,\n        /// <summary>\n        /// No results were returned.\n        /// </summary>\n        ERROR_DS_NO_RESULTS_RETURNED = 8257,\n        /// <summary>\n        /// The specified control is not supported by the server.\n        /// </summary>\n        ERROR_DS_CONTROL_NOT_FOUND = 8258,\n        /// <summary>\n        /// A referral loop was detected by the client.\n        /// </summary>\n        ERROR_DS_CLIENT_LOOP = 8259,\n        /// <summary>\n        /// The preset referral limit was exceeded.\n        /// </summary>\n        ERROR_DS_REFERRAL_LIMIT_EXCEEDED = 8260,\n        /// <summary>\n        /// The search requires a SORT control.\n        /// </summary>\n        ERROR_DS_SORT_CONTROL_MISSING = 8261,\n        /// <summary>\n        /// The search results exceed the offset range specified.\n        /// </summary>\n        ERROR_DS_OFFSET_RANGE_ERROR = 8262,\n        /// <summary>\n        /// The root object must be the head of a naming context. The root object cannot have an instantiated parent.\n        /// </summary>\n        ERROR_DS_ROOT_MUST_BE_NC = 8301,\n        /// <summary>\n        /// The add replica operation cannot be performed. The naming context must be writable in order to create the replica.\n        /// </summary>\n        ERROR_DS_ADD_REPLICA_INHIBITED = 8302,\n        /// <summary>\n        /// A reference to an attribute that is not defined in the schema occurred.\n        /// </summary>\n        ERROR_DS_ATT_NOT_DEF_IN_SCHEMA = 8303,\n        /// <summary>\n        /// The maximum size of an object has been exceeded.\n        /// </summary>\n        ERROR_DS_MAX_OBJ_SIZE_EXCEEDED = 8304,\n        /// <summary>\n        /// An attempt was made to add an object to the directory with a name that is already in use.\n        /// </summary>\n        ERROR_DS_OBJ_STRING_NAME_EXISTS = 8305,\n        /// <summary>\n        /// An attempt was made to add an object of a class that does not have an RDN defined in the schema.\n        /// </summary>\n        ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA = 8306,\n        /// <summary>\n        /// An attempt was made to add an object using an RDN that is not the RDN defined in the schema.\n        /// </summary>\n        ERROR_DS_RDN_DOESNT_MATCH_SCHEMA = 8307,\n        /// <summary>\n        /// None of the requested attributes were found on the objects.\n        /// </summary>\n        ERROR_DS_NO_REQUESTED_ATTS_FOUND = 8308,\n        /// <summary>\n        /// The user buffer is too small.\n        /// </summary>\n        ERROR_DS_USER_BUFFER_TO_SMALL = 8309,\n        /// <summary>\n        /// The attribute specified in the operation is not present on the object.\n        /// </summary>\n        ERROR_DS_ATT_IS_NOT_ON_OBJ = 8310,\n        /// <summary>\n        /// Illegal modify operation. Some aspect of the modification is not permitted.\n        /// </summary>\n        ERROR_DS_ILLEGAL_MOD_OPERATION = 8311,\n        /// <summary>\n        /// The specified object is too large.\n        /// </summary>\n        ERROR_DS_OBJ_TOO_LARGE = 8312,\n        /// <summary>\n        /// The specified instance type is not valid.\n        /// </summary>\n        ERROR_DS_BAD_INSTANCE_TYPE = 8313,\n        /// <summary>\n        /// The operation must be performed at a master DSA.\n        /// </summary>\n        ERROR_DS_MASTERDSA_REQUIRED = 8314,\n        /// <summary>\n        /// The object class attribute must be specified.\n        /// </summary>\n        ERROR_DS_OBJECT_CLASS_REQUIRED = 8315,\n        /// <summary>\n        /// A required attribute is missing.\n        /// </summary>\n        ERROR_DS_MISSING_REQUIRED_ATT = 8316,\n        /// <summary>\n        /// An attempt was made to modify an object to include an attribute that is not legal for its class.\n        /// </summary>\n        ERROR_DS_ATT_NOT_DEF_FOR_CLASS = 8317,\n        /// <summary>\n        /// The specified attribute is already present on the object.\n        /// </summary>\n        ERROR_DS_ATT_ALREADY_EXISTS = 8318,\n        /// <summary>\n        /// The specified attribute is not present, or has no values.\n        /// </summary>\n        ERROR_DS_CANT_ADD_ATT_VALUES = 8320,\n        /// <summary>\n        /// Mutliple values were specified for an attribute that can have only one value.\n        /// </summary>\n        ERROR_DS_SINGLE_VALUE_CONSTRAINT = 8321,\n        /// <summary>\n        /// A value for the attribute was not in the acceptable range of values.\n        /// </summary>\n        ERROR_DS_RANGE_CONSTRAINT = 8322,\n        /// <summary>\n        /// The specified value already exists.\n        /// </summary>\n        ERROR_DS_ATT_VAL_ALREADY_EXISTS = 8323,\n        /// <summary>\n        /// The attribute cannot be removed because it is not present on the object.\n        /// </summary>\n        ERROR_DS_CANT_REM_MISSING_ATT = 8324,\n        /// <summary>\n        /// The attribute value cannot be removed because it is not present on the object.\n        /// </summary>\n        ERROR_DS_CANT_REM_MISSING_ATT_VAL = 8325,\n        /// <summary>\n        /// The specified root object cannot be a subref.\n        /// </summary>\n        ERROR_DS_ROOT_CANT_BE_SUBREF = 8326,\n        /// <summary>\n        /// Chaining is not permitted.\n        /// </summary>\n        ERROR_DS_NO_CHAINING = 8327,\n        /// <summary>\n        /// Chained evaluation is not permitted.\n        /// </summary>\n        ERROR_DS_NO_CHAINED_EVAL = 8328,\n        /// <summary>\n        /// The operation could not be performed because the object's parent is either uninstantiated or deleted.\n        /// </summary>\n        ERROR_DS_NO_PARENT_OBJECT = 8329,\n        /// <summary>\n        /// Having a parent that is an alias is not permitted. Aliases are leaf objects.\n        /// </summary>\n        ERROR_DS_PARENT_IS_AN_ALIAS = 8330,\n        /// <summary>\n        /// The object and parent must be of the same type, either both masters or both replicas.\n        /// </summary>\n        ERROR_DS_CANT_MIX_MASTER_AND_REPS = 8331,\n        /// <summary>\n        /// The operation cannot be performed because child objects exist. This operation can only be performed on a leaf object.\n        /// </summary>\n        ERROR_DS_CHILDREN_EXIST = 8332,\n        /// <summary>\n        /// Directory object not found.\n        /// </summary>\n        ERROR_DS_OBJ_NOT_FOUND = 8333,\n        /// <summary>\n        /// The aliased object is missing.\n        /// </summary>\n        ERROR_DS_ALIASED_OBJ_MISSING = 8334,\n        /// <summary>\n        /// The object name has bad syntax.\n        /// </summary>\n        ERROR_DS_BAD_NAME_SYNTAX = 8335,\n        /// <summary>\n        /// It is not permitted for an alias to refer to another alias.\n        /// </summary>\n        ERROR_DS_ALIAS_POINTS_TO_ALIAS = 8336,\n        /// <summary>\n        /// The alias cannot be dereferenced.\n        /// </summary>\n        ERROR_DS_CANT_DEREF_ALIAS = 8337,\n        /// <summary>\n        /// The operation is out of scope.\n        /// </summary>\n        ERROR_DS_OUT_OF_SCOPE = 8338,\n        /// <summary>\n        /// The operation cannot continue because the object is in the process of being removed.\n        /// </summary>\n        ERROR_DS_OBJECT_BEING_REMOVED = 8339,\n        /// <summary>\n        /// The DSA object cannot be deleted.\n        /// </summary>\n        ERROR_DS_CANT_DELETE_DSA_OBJ = 8340,\n        /// <summary>\n        /// A directory service error has occurred.\n        /// </summary>\n        ERROR_DS_GENERIC_ERROR = 8341,\n        /// <summary>\n        /// The operation can only be performed on an internal master DSA object.\n        /// </summary>\n        ERROR_DS_DSA_MUST_BE_INT_MASTER = 8342,\n        /// <summary>\n        /// The object must be of class DSA.\n        /// </summary>\n        ERROR_DS_CLASS_NOT_DSA = 8343,\n        /// <summary>\n        /// Insufficient access rights to perform the operation.\n        /// </summary>\n        ERROR_DS_INSUFF_ACCESS_RIGHTS = 8344,\n        /// <summary>\n        /// The object cannot be added because the parent is not on the list of possible superiors.\n        /// </summary>\n        ERROR_DS_ILLEGAL_SUPERIOR = 8345,\n        /// <summary>\n        /// Access to the attribute is not permitted because the attribute is owned by the Security Accounts Manager (SAM).\n        /// </summary>\n        ERROR_DS_ATTRIBUTE_OWNED_BY_SAM = 8346,\n        /// <summary>\n        /// The name has too many parts.\n        /// </summary>\n        ERROR_DS_NAME_TOO_MANY_PARTS = 8347,\n        /// <summary>\n        /// The name is too long.\n        /// </summary>\n        ERROR_DS_NAME_TOO_Int32 = 8348,\n        /// <summary>\n        /// The name value is too long.\n        /// </summary>\n        ERROR_DS_NAME_VALUE_TOO_Int32 = 8349,\n        /// <summary>\n        /// The directory service encountered an error parsing a name.\n        /// </summary>\n        ERROR_DS_NAME_UNPARSEABLE = 8350,\n        /// <summary>\n        /// The directory service cannot get the attribute type for a name.\n        /// </summary>\n        ERROR_DS_NAME_TYPE_UNKNOWN = 8351,\n        /// <summary>\n        /// The name does not identify an object, the name identifies a phantom.\n        /// </summary>\n        ERROR_DS_NOT_AN_OBJECT = 8352,\n        /// <summary>\n        /// The security descriptor is too short.\n        /// </summary>\n        ERROR_DS_SEC_DESC_TOO_Int16 = 8353,\n        /// <summary>\n        /// The security descriptor is invalid.\n        /// </summary>\n        ERROR_DS_SEC_DESC_INVALID = 8354,\n        /// <summary>\n        /// Failed to create name for deleted object.\n        /// </summary>\n        ERROR_DS_NO_DELETED_NAME = 8355,\n        /// <summary>\n        /// The parent of a new subref must exist.\n        /// </summary>\n        ERROR_DS_SUBREF_MUST_HAVE_PARENT = 8356,\n        /// <summary>\n        /// The object must be a naming context.\n        /// </summary>\n        ERROR_DS_NCNAME_MUST_BE_NC = 8357,\n        /// <summary>\n        /// It is not permitted to add an attribute which is owned by the system.\n        /// </summary>\n        ERROR_DS_CANT_ADD_SYSTEM_ONLY = 8358,\n        /// <summary>\n        /// The class of the object must be structural, you cannot instantiate an abstract class.\n        /// </summary>\n        ERROR_DS_CLASS_MUST_BE_CONCRETE = 8359,\n        /// <summary>\n        /// The schema object could not be found.\n        /// </summary>\n        ERROR_DS_INVALID_DMD = 8360,\n        /// <summary>\n        /// A local object with this GUID (dead or alive) already exists.\n        /// </summary>\n        ERROR_DS_OBJ_GUID_EXISTS = 8361,\n        /// <summary>\n        /// The operation cannot be performed on a back link.\n        /// </summary>\n        ERROR_DS_NOT_ON_BACKLINK = 8362,\n        /// <summary>\n        /// The cross reference for the specified naming context could not be found.\n        /// </summary>\n        ERROR_DS_NO_CROSSREF_FOR_NC = 8363,\n        /// <summary>\n        /// The operation could not be performed because the directory service is shutting down.\n        /// </summary>\n        ERROR_DS_SHUTTING_DOWN = 8364,\n        /// <summary>\n        /// The directory service request is invalid.\n        /// </summary>\n        ERROR_DS_UNKNOWN_OPERATION = 8365,\n        /// <summary>\n        /// The role owner attribute could not be read.\n        /// </summary>\n        ERROR_DS_INVALID_ROLE_OWNER = 8366,\n        /// <summary>\n        /// The requested FSMO operation failed. The current FSMO holder could not be contacted.\n        /// </summary>\n        ERROR_DS_COULDNT_CONTACT_FSMO = 8367,\n        /// <summary>\n        /// Modification of a DN across a naming context is not permitted.\n        /// </summary>\n        ERROR_DS_CROSS_NC_DN_RENAME = 8368,\n        /// <summary>\n        /// The attribute cannot be modified because it is owned by the system.\n        /// </summary>\n        ERROR_DS_CANT_MOD_SYSTEM_ONLY = 8369,\n        /// <summary>\n        /// Only the replicator can perform this function.\n        /// </summary>\n        ERROR_DS_REPLICATOR_ONLY = 8370,\n        /// <summary>\n        /// The specified class is not defined.\n        /// </summary>\n        ERROR_DS_OBJ_CLASS_NOT_DEFINED = 8371,\n        /// <summary>\n        /// The specified class is not a subclass.\n        /// </summary>\n        ERROR_DS_OBJ_CLASS_NOT_SUBCLASS = 8372,\n        /// <summary>\n        /// The name reference is invalid.\n        /// </summary>\n        ERROR_DS_NAME_REFERENCE_INVALID = 8373,\n        /// <summary>\n        /// A cross reference already exists.\n        /// </summary>\n        ERROR_DS_CROSS_REF_EXISTS = 8374,\n        /// <summary>\n        /// It is not permitted to delete a master cross reference.\n        /// </summary>\n        ERROR_DS_CANT_DEL_MASTER_CROSSREF = 8375,\n        /// <summary>\n        /// Subtree notifications are only supported on NC heads.\n        /// </summary>\n        ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD = 8376,\n        /// <summary>\n        /// Notification filter is too complex.\n        /// </summary>\n        ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX = 8377,\n        /// <summary>\n        /// Schema update failed: duplicate RDN.\n        /// </summary>\n        ERROR_DS_DUP_RDN = 8378,\n        /// <summary>\n        /// Schema update failed: duplicate OID.\n        /// </summary>\n        ERROR_DS_DUP_OID = 8379,\n        /// <summary>\n        /// Schema update failed: duplicate MAPI identifier.\n        /// </summary>\n        ERROR_DS_DUP_MAPI_ID = 8380,\n        /// <summary>\n        /// Schema update failed: duplicate schema-id GUID.\n        /// </summary>\n        ERROR_DS_DUP_SCHEMA_ID_GUID = 8381,\n        /// <summary>\n        /// Schema update failed: duplicate LDAP display name.\n        /// </summary>\n        ERROR_DS_DUP_LDAP_DISPLAY_NAME = 8382,\n        /// <summary>\n        /// Schema update failed: range-lower less than range upper.\n        /// </summary>\n        ERROR_DS_SEMANTIC_ATT_TEST = 8383,\n        /// <summary>\n        /// Schema update failed: syntax mismatch.\n        /// </summary>\n        ERROR_DS_SYNTAX_MISMATCH = 8384,\n        /// <summary>\n        /// Schema deletion failed: attribute is used in must-contain.\n        /// </summary>\n        ERROR_DS_EXISTS_IN_MUST_HAVE = 8385,\n        /// <summary>\n        /// Schema deletion failed: attribute is used in may-contain.\n        /// </summary>\n        ERROR_DS_EXISTS_IN_MAY_HAVE = 8386,\n        /// <summary>\n        /// Schema update failed: attribute in may-contain does not exist.\n        /// </summary>\n        ERROR_DS_NONEXISTENT_MAY_HAVE = 8387,\n        /// <summary>\n        /// Schema update failed: attribute in must-contain does not exist.\n        /// </summary>\n        ERROR_DS_NONEXISTENT_MUST_HAVE = 8388,\n        /// <summary>\n        /// Schema update failed: class in aux-class list does not exist or is not an auxiliary class.\n        /// </summary>\n        ERROR_DS_AUX_CLS_TEST_FAIL = 8389,\n        /// <summary>\n        /// Schema update failed: class in poss-superiors does not exist.\n        /// </summary>\n        ERROR_DS_NONEXISTENT_POSS_SUP = 8390,\n        /// <summary>\n        /// Schema update failed: class in subclassof list does not exist or does not satisfy hierarchy rules.\n        /// </summary>\n        ERROR_DS_SUB_CLS_TEST_FAIL = 8391,\n        /// <summary>\n        /// Schema update failed: Rdn-Att-Id has wrong syntax.\n        /// </summary>\n        ERROR_DS_BAD_RDN_ATT_ID_SYNTAX = 8392,\n        /// <summary>\n        /// Schema deletion failed: class is used as auxiliary class.\n        /// </summary>\n        ERROR_DS_EXISTS_IN_AUX_CLS = 8393,\n        /// <summary>\n        /// Schema deletion failed: class is used as sub class.\n        /// </summary>\n        ERROR_DS_EXISTS_IN_SUB_CLS = 8394,\n        /// <summary>\n        /// Schema deletion failed: class is used as poss superior.\n        /// </summary>\n        ERROR_DS_EXISTS_IN_POSS_SUP = 8395,\n        /// <summary>\n        /// Schema update failed in recalculating validation cache.\n        /// </summary>\n        ERROR_DS_RECALCSCHEMA_FAILED = 8396,\n        /// <summary>\n        /// The tree deletion is not finished.  The request must be made again to continue deleting the tree.\n        /// </summary>\n        ERROR_DS_TREE_DELETE_NOT_FINISHED = 8397,\n        /// <summary>\n        /// The requested delete operation could not be performed.\n        /// </summary>\n        ERROR_DS_CANT_DELETE = 8398,\n        /// <summary>\n        /// Cannot read the governs class identifier for the schema record.\n        /// </summary>\n        ERROR_DS_ATT_SCHEMA_REQ_ID = 8399,\n        /// <summary>\n        /// The attribute schema has bad syntax.\n        /// </summary>\n        ERROR_DS_BAD_ATT_SCHEMA_SYNTAX = 8400,\n        /// <summary>\n        /// The attribute could not be cached.\n        /// </summary>\n        ERROR_DS_CANT_CACHE_ATT = 8401,\n        /// <summary>\n        /// The class could not be cached.\n        /// </summary>\n        ERROR_DS_CANT_CACHE_CLASS = 8402,\n        /// <summary>\n        /// The attribute could not be removed from the cache.\n        /// </summary>\n        ERROR_DS_CANT_REMOVE_ATT_CACHE = 8403,\n        /// <summary>\n        /// The class could not be removed from the cache.\n        /// </summary>\n        ERROR_DS_CANT_REMOVE_CLASS_CACHE = 8404,\n        /// <summary>\n        /// The distinguished name attribute could not be read.\n        /// </summary>\n        ERROR_DS_CANT_RETRIEVE_DN = 8405,\n        /// <summary>\n        /// A required subref is missing.\n        /// </summary>\n        ERROR_DS_MISSING_SUPREF = 8406,\n        /// <summary>\n        /// The instance type attribute could not be retrieved.\n        /// </summary>\n        ERROR_DS_CANT_RETRIEVE_INSTANCE = 8407,\n        /// <summary>\n        /// An internal error has occurred.\n        /// </summary>\n        ERROR_DS_CODE_INCONSISTENCY = 8408,\n        /// <summary>\n        /// A database error has occurred.\n        /// </summary>\n        ERROR_DS_DATABASE_ERROR = 8409,\n        /// <summary>\n        /// The attribute GOVERNSID is missing.\n        /// </summary>\n        ERROR_DS_GOVERNSID_MISSING = 8410,\n        /// <summary>\n        /// An expected attribute is missing.\n        /// </summary>\n        ERROR_DS_MISSING_EXPECTED_ATT = 8411,\n        /// <summary>\n        /// The specified naming context is missing a cross reference.\n        /// </summary>\n        ERROR_DS_NCNAME_MISSING_CR_REF = 8412,\n        /// <summary>\n        /// A security checking error has occurred.\n        /// </summary>\n        ERROR_DS_SECURITY_CHECKING_ERROR = 8413,\n        /// <summary>\n        /// The schema is not loaded.\n        /// </summary>\n        ERROR_DS_SCHEMA_NOT_LOADED = 8414,\n        /// <summary>\n        /// Schema allocation failed. Please check if the machine is running low on memory.\n        /// </summary>\n        ERROR_DS_SCHEMA_ALLOC_FAILED = 8415,\n        /// <summary>\n        /// Failed to obtain the required syntax for the attribute schema.\n        /// </summary>\n        ERROR_DS_ATT_SCHEMA_REQ_SYNTAX = 8416,\n        /// <summary>\n        /// The global catalog verification failed. The global catalog is not available or does not support the operation. Some part of the directory is currently not available.\n        /// </summary>\n        ERROR_DS_GCVERIFY_ERROR = 8417,\n        /// <summary>\n        /// The replication operation failed because of a schema mismatch between the servers involved.\n        /// </summary>\n        ERROR_DS_DRA_SCHEMA_MISMATCH = 8418,\n        /// <summary>\n        /// The DSA object could not be found.\n        /// </summary>\n        ERROR_DS_CANT_FIND_DSA_OBJ = 8419,\n        /// <summary>\n        /// The naming context could not be found.\n        /// </summary>\n        ERROR_DS_CANT_FIND_EXPECTED_NC = 8420,\n        /// <summary>\n        /// The naming context could not be found in the cache.\n        /// </summary>\n        ERROR_DS_CANT_FIND_NC_IN_CACHE = 8421,\n        /// <summary>\n        /// The child object could not be retrieved.\n        /// </summary>\n        ERROR_DS_CANT_RETRIEVE_CHILD = 8422,\n        /// <summary>\n        /// The modification was not permitted for security reasons.\n        /// </summary>\n        ERROR_DS_SECURITY_ILLEGAL_MODIFY = 8423,\n        /// <summary>\n        /// The operation cannot replace the hidden record.\n        /// </summary>\n        ERROR_DS_CANT_REPLACE_HIDDEN_REC = 8424,\n        /// <summary>\n        /// The hierarchy file is invalid.\n        /// </summary>\n        ERROR_DS_BAD_HIERARCHY_FILE = 8425,\n        /// <summary>\n        /// The attempt to build the hierarchy table failed.\n        /// </summary>\n        ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED = 8426,\n        /// <summary>\n        /// The directory configuration parameter is missing from the registry.\n        /// </summary>\n        ERROR_DS_CONFIG_PARAM_MISSING = 8427,\n        /// <summary>\n        /// The attempt to count the address book indices failed.\n        /// </summary>\n        ERROR_DS_COUNTING_AB_INDICES_FAILED = 8428,\n        /// <summary>\n        /// The allocation of the hierarchy table failed.\n        /// </summary>\n        ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED = 8429,\n        /// <summary>\n        /// The directory service encountered an internal failure.\n        /// </summary>\n        ERROR_DS_INTERNAL_FAILURE = 8430,\n        /// <summary>\n        /// The directory service encountered an unknown failure.\n        /// </summary>\n        ERROR_DS_UNKNOWN_ERROR = 8431,\n        /// <summary>\n        /// A root object requires a class of 'top'.\n        /// </summary>\n        ERROR_DS_ROOT_REQUIRES_CLASS_TOP = 8432,\n        /// <summary>\n        /// This directory server is shutting down, and cannot take ownership of new floating single-master operation roles.\n        /// </summary>\n        ERROR_DS_REFUSING_FSMO_ROLES = 8433,\n        /// <summary>\n        /// The directory service is missing mandatory configuration information, and is unable to determine the ownership of floating single-master operation roles.\n        /// </summary>\n        ERROR_DS_MISSING_FSMO_SETTINGS = 8434,\n        /// <summary>\n        /// The directory service was unable to transfer ownership of one or more floating single-master operation roles to other servers.\n        /// </summary>\n        ERROR_DS_UNABLE_TO_SURRENDER_ROLES = 8435,\n        /// <summary>\n        /// The replication operation failed.\n        /// </summary>\n        ERROR_DS_DRA_GENERIC = 8436,\n        /// <summary>\n        /// An invalid parameter was specified for this replication operation.\n        /// </summary>\n        ERROR_DS_DRA_INVALID_PARAMETER = 8437,\n        /// <summary>\n        /// The directory service is too busy to complete the replication operation at this time.\n        /// </summary>\n        ERROR_DS_DRA_BUSY = 8438,\n        /// <summary>\n        /// The distinguished name specified for this replication operation is invalid.\n        /// </summary>\n        ERROR_DS_DRA_BAD_DN = 8439,\n        /// <summary>\n        /// The naming context specified for this replication operation is invalid.\n        /// </summary>\n        ERROR_DS_DRA_BAD_NC = 8440,\n        /// <summary>\n        /// The distinguished name specified for this replication operation already exists.\n        /// </summary>\n        ERROR_DS_DRA_DN_EXISTS = 8441,\n        /// <summary>\n        /// The replication system encountered an internal error.\n        /// </summary>\n        ERROR_DS_DRA_INTERNAL_ERROR = 8442,\n        /// <summary>\n        /// The replication operation encountered a database inconsistency.\n        /// </summary>\n        ERROR_DS_DRA_INCONSISTENT_DIT = 8443,\n        /// <summary>\n        /// The server specified for this replication operation could not be contacted.\n        /// </summary>\n        ERROR_DS_DRA_CONNECTION_FAILED = 8444,\n        /// <summary>\n        /// The replication operation encountered an object with an invalid instance type.\n        /// </summary>\n        ERROR_DS_DRA_BAD_INSTANCE_TYPE = 8445,\n        /// <summary>\n        /// The replication operation failed to allocate memory.\n        /// </summary>\n        ERROR_DS_DRA_OUT_OF_MEM = 8446,\n        /// <summary>\n        /// The replication operation encountered an error with the mail system.\n        /// </summary>\n        ERROR_DS_DRA_MAIL_PROBLEM = 8447,\n        /// <summary>\n        /// The replication reference information for the target server already exists.\n        /// </summary>\n        ERROR_DS_DRA_REF_ALREADY_EXISTS = 8448,\n        /// <summary>\n        /// The replication reference information for the target server does not exist.\n        /// </summary>\n        ERROR_DS_DRA_REF_NOT_FOUND = 8449,\n        /// <summary>\n        /// The naming context cannot be removed because it is replicated to another server.\n        /// </summary>\n        ERROR_DS_DRA_OBJ_IS_REP_SOURCE = 8450,\n        /// <summary>\n        /// The replication operation encountered a database error.\n        /// </summary>\n        ERROR_DS_DRA_DB_ERROR = 8451,\n        /// <summary>\n        /// The naming context is in the process of being removed or is not replicated from the specified server.\n        /// </summary>\n        ERROR_DS_DRA_NO_REPLICA = 8452,\n        /// <summary>\n        /// Replication access was denied.\n        /// </summary>\n        ERROR_DS_DRA_ACCESS_DENIED = 8453,\n        /// <summary>\n        /// The requested operation is not supported by this version of the directory service.\n        /// </summary>\n        ERROR_DS_DRA_NOT_SUPPORTED = 8454,\n        /// <summary>\n        /// The replication remote procedure call was cancelled.\n        /// </summary>\n        ERROR_DS_DRA_RPC_CANCELLED = 8455,\n        /// <summary>\n        /// The source server is currently rejecting replication requests.\n        /// </summary>\n        ERROR_DS_DRA_SOURCE_DISABLED = 8456,\n        /// <summary>\n        /// The destination server is currently rejecting replication requests.\n        /// </summary>\n        ERROR_DS_DRA_SINK_DISABLED = 8457,\n        /// <summary>\n        /// The replication operation failed due to a collision of object names.\n        /// </summary>\n        ERROR_DS_DRA_NAME_COLLISION = 8458,\n        /// <summary>\n        /// The replication source has been reinstalled.\n        /// </summary>\n        ERROR_DS_DRA_SOURCE_REINSTALLED = 8459,\n        /// <summary>\n        /// The replication operation failed because a required parent object is missing.\n        /// </summary>\n        ERROR_DS_DRA_MISSING_PARENT = 8460,\n        /// <summary>\n        /// The replication operation was preempted.\n        /// </summary>\n        ERROR_DS_DRA_PREEMPTED = 8461,\n        /// <summary>\n        /// The replication synchronization attempt was abandoned because of a lack of updates.\n        /// </summary>\n        ERROR_DS_DRA_ABANDON_SYNC = 8462,\n        /// <summary>\n        /// The replication operation was terminated because the system is shutting down.\n        /// </summary>\n        ERROR_DS_DRA_SHUTDOWN = 8463,\n        /// <summary>\n        /// The replication synchronization attempt failed as the destination partial attribute set is not a subset of source partial attribute set.\n        /// </summary>\n        ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET = 8464,\n        /// <summary>\n        /// The replication synchronization attempt failed because a master replica attempted to sync from a partial replica.\n        /// </summary>\n        ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA = 8465,\n        /// <summary>\n        /// The server specified for this replication operation was contacted, but that server was unable to contact an additional server needed to complete the operation.\n        /// </summary>\n        ERROR_DS_DRA_EXTN_CONNECTION_FAILED = 8466,\n        /// <summary>\n        /// The version of the Active Directory schema of the source forest is not compatible with the version of Active Directory on this computer.  You must upgrade the operating system on a domain controller in the source forest before this computer can be added as a domain controller to that forest.\n        /// </summary>\n        ERROR_DS_INSTALL_SCHEMA_MISMATCH = 8467,\n        /// <summary>\n        /// Schema update failed: An attribute with the same link identifier already exists.\n        /// </summary>\n        ERROR_DS_DUP_LINK_ID = 8468,\n        /// <summary>\n        /// Name translation: Generic processing error.\n        /// </summary>\n        ERROR_DS_NAME_ERROR_RESOLVING = 8469,\n        /// <summary>\n        /// Name translation: Could not find the name or insufficient right to see name.\n        /// </summary>\n        ERROR_DS_NAME_ERROR_NOT_FOUND = 8470,\n        /// <summary>\n        /// Name translation: Input name mapped to more than one output name.\n        /// </summary>\n        ERROR_DS_NAME_ERROR_NOT_UNIQUE = 8471,\n        /// <summary>\n        /// Name translation: Input name found, but not the associated output format.\n        /// </summary>\n        ERROR_DS_NAME_ERROR_NO_MAPPING = 8472,\n        /// <summary>\n        /// Name translation: Unable to resolve completely, only the domain was found.\n        /// </summary>\n        ERROR_DS_NAME_ERROR_DOMAIN_ONLY = 8473,\n        /// <summary>\n        /// Name translation: Unable to perform purely syntactical mapping at the client without going out to the wire.\n        /// </summary>\n        ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING = 8474,\n        /// <summary>\n        /// Modification of a constructed att is not allowed.\n        /// </summary>\n        ERROR_DS_CONSTRUCTED_ATT_MOD = 8475,\n        /// <summary>\n        /// The OM-Object-Class specified is incorrect for an attribute with the specified syntax.\n        /// </summary>\n        ERROR_DS_WRONG_OM_OBJ_CLASS = 8476,\n        /// <summary>\n        /// The replication request has been posted, waiting for reply.\n        /// </summary>\n        ERROR_DS_DRA_REPL_PENDING = 8477,\n        /// <summary>\n        /// The requested operation requires a directory service, and none was available.\n        /// </summary>\n        ERROR_DS_DS_REQUIRED = 8478,\n        /// <summary>\n        /// The LDAP display name of the class or attribute contains non-ASCII characters.\n        /// </summary>\n        ERROR_DS_INVALID_LDAP_DISPLAY_NAME = 8479,\n        /// <summary>\n        /// The requested search operation is only supported for base searches.\n        /// </summary>\n        ERROR_DS_NON_BASE_SEARCH = 8480,\n        /// <summary>\n        /// The search failed to retrieve attributes from the database.\n        /// </summary>\n        ERROR_DS_CANT_RETRIEVE_ATTS = 8481,\n        /// <summary>\n        /// The schema update operation tried to add a backward link attribute that has no corresponding forward link.\n        /// </summary>\n        ERROR_DS_BACKLINK_WITHOUT_LINK = 8482,\n        /// <summary>\n        /// Source and destination of a cross-domain move do not agree on the object's epoch number.  Either source or destination does not have the latest version of the object.\n        /// </summary>\n        ERROR_DS_EPOCH_MISMATCH = 8483,\n        /// <summary>\n        /// Source and destination of a cross-domain move do not agree on the object's current name.  Either source or destination does not have the latest version of the object.\n        /// </summary>\n        ERROR_DS_SRC_NAME_MISMATCH = 8484,\n        /// <summary>\n        /// Source and destination for the cross-domain move operation are identical.  Caller should use local move operation instead of cross-domain move operation.\n        /// </summary>\n        ERROR_DS_SRC_AND_DST_NC_IDENTICAL = 8485,\n        /// <summary>\n        /// Source and destination for a cross-domain move are not in agreement on the naming contexts in the forest.  Either source or destination does not have the latest version of the Partitions container.\n        /// </summary>\n        ERROR_DS_DST_NC_MISMATCH = 8486,\n        /// <summary>\n        /// Destination of a cross-domain move is not authoritative for the destination naming context.\n        /// </summary>\n        ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC = 8487,\n        /// <summary>\n        /// Source and destination of a cross-domain move do not agree on the identity of the source object.  Either source or destination does not have the latest version of the source object.\n        /// </summary>\n        ERROR_DS_SRC_GUID_MISMATCH = 8488,\n        /// <summary>\n        /// Object being moved across-domains is already known to be deleted by the destination server.  The source server does not have the latest version of the source object.\n        /// </summary>\n        ERROR_DS_CANT_MOVE_DELETED_OBJECT = 8489,\n        /// <summary>\n        /// Another operation which requires exclusive access to the PDC FSMO is already in progress.\n        /// </summary>\n        ERROR_DS_PDC_OPERATION_IN_PROGRESS = 8490,\n        /// <summary>\n        /// A cross-domain move operation failed such that two versions of the moved object exist - one each in the source and destination domains.  The destination object needs to be removed to restore the system to a consistent state.\n        /// </summary>\n        ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD = 8491,\n        /// <summary>\n        /// This object may not be moved across domain boundaries either because cross-domain moves for this class are disallowed, or the object has some special characteristics, eg: trust account or restricted RID, which prevent its move.\n        /// </summary>\n        ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION = 8492,\n        /// <summary>\n        /// Can't move objects with memberships across domain boundaries as once moved, this would violate the membership conditions of the account group.  Remove the object from any account group memberships and retry.\n        /// </summary>\n        ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS = 8493,\n        /// <summary>\n        /// A naming context head must be the immediate child of another naming context head, not of an interior node.\n        /// </summary>\n        ERROR_DS_NC_MUST_HAVE_NC_PARENT = 8494,\n        /// <summary>\n        /// The directory cannot validate the proposed naming context name because it does not hold a replica of the naming context above the proposed naming context.  Please ensure that the domain naming master role is held by a server that is configured as a global catalog server, and that the server is up to date with its replication partners. (Applies only to Windows 2000 Domain Naming masters)\n        /// </summary>\n        ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE = 8495,\n        /// <summary>\n        /// Destination domain must be in native mode.\n        /// </summary>\n        ERROR_DS_DST_DOMAIN_NOT_NATIVE = 8496,\n        /// <summary>\n        /// The operation can not be performed because the server does not have an infrastructure container in the domain of interest.\n        /// </summary>\n        ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER = 8497,\n        /// <summary>\n        /// Cross-domain move of non-empty account groups is not allowed.\n        /// </summary>\n        ERROR_DS_CANT_MOVE_ACCOUNT_GROUP = 8498,\n        /// <summary>\n        /// Cross-domain move of non-empty resource groups is not allowed.\n        /// </summary>\n        ERROR_DS_CANT_MOVE_RESOURCE_GROUP = 8499,\n        /// <summary>\n        /// The search flags for the attribute are invalid. The ANR bit is valid only on attributes of Unicode or Teletex strings.\n        /// </summary>\n        ERROR_DS_INVALID_SEARCH_FLAG = 8500,\n        /// <summary>\n        /// Tree deletions starting at an object which has an NC head as a descendant are not allowed.\n        /// </summary>\n        ERROR_DS_NO_TREE_DELETE_ABOVE_NC = 8501,\n        /// <summary>\n        /// The directory service failed to lock a tree in preparation for a tree deletion because the tree was in use.\n        /// </summary>\n        ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE = 8502,\n        /// <summary>\n        /// The directory service failed to identify the list of objects to delete while attempting a tree deletion.\n        /// </summary>\n        ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE = 8503,\n        /// <summary>\n        /// Security Accounts Manager initialization failed because of the following error: %1.\n        /// Error Status: 0x%2. Click OK to shut down the system and reboot into Directory Services Restore Mode. Check the event log for detailed information.\n        /// </summary>\n        ERROR_DS_SAM_INIT_FAILURE = 8504,\n        /// <summary>\n        /// Only an administrator can modify the membership list of an administrative group.\n        /// </summary>\n        ERROR_DS_SENSITIVE_GROUP_VIOLATION = 8505,\n        /// <summary>\n        /// Cannot change the primary group ID of a domain controller account.\n        /// </summary>\n        ERROR_DS_CANT_MOD_PRIMARYGROUPID = 8506,\n        /// <summary>\n        /// An attempt is made to modify the base schema.\n        /// </summary>\n        ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD = 8507,\n        /// <summary>\n        /// Adding a new mandatory attribute to an existing class, deleting a mandatory attribute from an existing class, or adding an optional attribute to the special class Top that is not a backlink attribute (directly or through inheritance, for example, by adding or deleting an auxiliary class) is not allowed.\n        /// </summary>\n        ERROR_DS_NONSAFE_SCHEMA_CHANGE = 8508,\n        /// <summary>\n        /// Schema update is not allowed on this DC because the DC is not the schema FSMO Role Owner.\n        /// </summary>\n        ERROR_DS_SCHEMA_UPDATE_DISALLOWED = 8509,\n        /// <summary>\n        /// An object of this class cannot be created under the schema container. You can only create attribute-schema and class-schema objects under the schema container.\n        /// </summary>\n        ERROR_DS_CANT_CREATE_UNDER_SCHEMA = 8510,\n        /// <summary>\n        /// The replica/child install failed to get the objectVersion attribute on the schema container on the source DC. Either the attribute is missing on the schema container or the credentials supplied do not have permission to read it.\n        /// </summary>\n        ERROR_DS_INSTALL_NO_SRC_SCH_VERSION = 8511,\n        /// <summary>\n        /// The replica/child install failed to read the objectVersion attribute in the SCHEMA section of the file schema.ini in the system32 directory.\n        /// </summary>\n        ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE = 8512,\n        /// <summary>\n        /// The specified group type is invalid.\n        /// </summary>\n        ERROR_DS_INVALID_GROUP_TYPE = 8513,\n        /// <summary>\n        /// You cannot nest global groups in a mixed domain if the group is security-enabled.\n        /// </summary>\n        ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN = 8514,\n        /// <summary>\n        /// You cannot nest local groups in a mixed domain if the group is security-enabled.\n        /// </summary>\n        ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN = 8515,\n        /// <summary>\n        /// A global group cannot have a local group as a member.\n        /// </summary>\n        ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER = 8516,\n        /// <summary>\n        /// A global group cannot have a universal group as a member.\n        /// </summary>\n        ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER = 8517,\n        /// <summary>\n        /// A universal group cannot have a local group as a member.\n        /// </summary>\n        ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER = 8518,\n        /// <summary>\n        /// A global group cannot have a cross-domain member.\n        /// </summary>\n        ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER = 8519,\n        /// <summary>\n        /// A local group cannot have another cross domain local group as a member.\n        /// </summary>\n        ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER = 8520,\n        /// <summary>\n        /// A group with primary members cannot change to a security-disabled group.\n        /// </summary>\n        ERROR_DS_HAVE_PRIMARY_MEMBERS = 8521,\n        /// <summary>\n        /// The schema cache load failed to convert the string default SD on a class-schema object.\n        /// </summary>\n        ERROR_DS_STRING_SD_CONVERSION_FAILED = 8522,\n        /// <summary>\n        /// Only DSAs configured to be Global Catalog servers should be allowed to hold the Domain Naming Master FSMO role. (Applies only to Windows 2000 servers)\n        /// </summary>\n        ERROR_DS_NAMING_MASTER_GC = 8523,\n        /// <summary>\n        /// The DSA operation is unable to proceed because of a DNS lookup failure.\n        /// </summary>\n        ERROR_DS_DNS_LOOKUP_FAILURE = 8524,\n        /// <summary>\n        /// While processing a change to the DNS Host Name for an object, the Service Principal Name values could not be kept in sync.\n        /// </summary>\n        ERROR_DS_COULDNT_UPDATE_SPNS = 8525,\n        /// <summary>\n        /// The Security Descriptor attribute could not be read.\n        /// </summary>\n        ERROR_DS_CANT_RETRIEVE_SD = 8526,\n        /// <summary>\n        /// The object requested was not found, but an object with that key was found.\n        /// </summary>\n        ERROR_DS_KEY_NOT_UNIQUE = 8527,\n        /// <summary>\n        /// The syntax of the linked attribute being added is incorrect. Forward links can only have syntax 2.5.5.1, 2.5.5.7, and 2.5.5.14, and backlinks can only have syntax 2.5.5.1\n        /// </summary>\n        ERROR_DS_WRONG_LINKED_ATT_SYNTAX = 8528,\n        /// <summary>\n        /// Security Account Manager needs to get the boot password.\n        /// </summary>\n        ERROR_DS_SAM_NEED_BOOTKEY_PASSUInt16 = 8529,\n        /// <summary>\n        /// Security Account Manager needs to get the boot key from floppy disk.\n        /// </summary>\n        ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY = 8530,\n        /// <summary>\n        /// Directory Service cannot start.\n        /// </summary>\n        ERROR_DS_CANT_START = 8531,\n        /// <summary>\n        /// Directory Services could not start.\n        /// </summary>\n        ERROR_DS_INIT_FAILURE = 8532,\n        /// <summary>\n        /// The connection between client and server requires packet privacy or better.\n        /// </summary>\n        ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION = 8533,\n        /// <summary>\n        /// The source domain may not be in the same forest as destination.\n        /// </summary>\n        ERROR_DS_SOURCE_DOMAIN_IN_FOREST = 8534,\n        /// <summary>\n        /// The destination domain must be in the forest.\n        /// </summary>\n        ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST = 8535,\n        /// <summary>\n        /// The operation requires that destination domain auditing be enabled.\n        /// </summary>\n        ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED = 8536,\n        /// <summary>\n        /// The operation couldn't locate a DC for the source domain.\n        /// </summary>\n        ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN = 8537,\n        /// <summary>\n        /// The source object must be a group or user.\n        /// </summary>\n        ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER = 8538,\n        /// <summary>\n        /// The source object's SID already exists in destination forest.\n        /// </summary>\n        ERROR_DS_SRC_SID_EXISTS_IN_FOREST = 8539,\n        /// <summary>\n        /// The source and destination object must be of the same type.\n        /// </summary>\n        ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH = 8540,\n        /// <summary>\n        /// Security Accounts Manager initialization failed because of the following error: %1.\n        /// Error Status: 0x%2. Click OK to shut down the system and reboot into Safe Mode. Check the event log for detailed information.\n        /// </summary>\n        ERROR_SAM_INIT_FAILURE = 8541,\n        /// <summary>\n        /// Schema information could not be included in the replication request.\n        /// </summary>\n        ERROR_DS_DRA_SCHEMA_INFO_SHIP = 8542,\n        /// <summary>\n        /// The replication operation could not be completed due to a schema incompatibility.\n        /// </summary>\n        ERROR_DS_DRA_SCHEMA_CONFLICT = 8543,\n        /// <summary>\n        /// The replication operation could not be completed due to a previous schema incompatibility.\n        /// </summary>\n        ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT = 8544,\n        /// <summary>\n        /// The replication update could not be applied because either the source or the destination has not yet received information regarding a recent cross-domain move operation.\n        /// </summary>\n        ERROR_DS_DRA_OBJ_NC_MISMATCH = 8545,\n        /// <summary>\n        /// The requested domain could not be deleted because there exist domain controllers that still host this domain.\n        /// </summary>\n        ERROR_DS_NC_STILL_HAS_DSAS = 8546,\n        /// <summary>\n        /// The requested operation can be performed only on a global catalog server.\n        /// </summary>\n        ERROR_DS_GC_REQUIRED = 8547,\n        /// <summary>\n        /// A local group can only be a member of other local groups in the same domain.\n        /// </summary>\n        ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY = 8548,\n        /// <summary>\n        /// Foreign security principals cannot be members of universal groups.\n        /// </summary>\n        ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS = 8549,\n        /// <summary>\n        /// The attribute is not allowed to be replicated to the GC because of security reasons.\n        /// </summary>\n        ERROR_DS_CANT_ADD_TO_GC = 8550,\n        /// <summary>\n        /// The checkpoint with the PDC could not be taken because there too many modifications being processed currently.\n        /// </summary>\n        ERROR_DS_NO_CHECKPOINT_WITH_PDC = 8551,\n        /// <summary>\n        /// The operation requires that source domain auditing be enabled.\n        /// </summary>\n        ERROR_DS_SOURCE_AUDITING_NOT_ENABLED = 8552,\n        /// <summary>\n        /// Security principal objects can only be created inside domain naming contexts.\n        /// </summary>\n        ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC = 8553,\n        /// <summary>\n        /// A Service Principal Name (SPN) could not be constructed because the provided hostname is not in the necessary format.\n        /// </summary>\n        ERROR_DS_INVALID_NAME_FOR_SPN = 8554,\n        /// <summary>\n        /// A Filter was passed that uses constructed attributes.\n        /// </summary>\n        ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS = 8555,\n        /// <summary>\n        /// The unicodePwd attribute value must be enclosed in double quotes.\n        /// </summary>\n        ERROR_DS_UNICODEPWD_NOT_IN_QUOTES = 8556,\n        /// <summary>\n        /// Your computer could not be joined to the domain. You have exceeded the maximum number of computer accounts you are allowed to create in this domain. Contact your system administrator to have this limit reset or increased.\n        /// </summary>\n        ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED = 8557,\n        /// <summary>\n        /// For security reasons, the operation must be run on the destination DC.\n        /// </summary>\n        ERROR_DS_MUST_BE_RUN_ON_DST_DC = 8558,\n        /// <summary>\n        /// For security reasons, the source DC must be NT4SP4 or greater.\n        /// </summary>\n        ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER = 8559,\n        /// <summary>\n        /// Critical Directory Service System objects cannot be deleted during tree delete operations.  The tree delete may have been partially performed.\n        /// </summary>\n        ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ = 8560,\n        /// <summary>\n        /// Directory Services could not start because of the following error: %1.\n        /// Error Status: 0x%2. Please click OK to shutdown the system. You can use the recovery console to diagnose the system further.\n        /// </summary>\n        ERROR_DS_INIT_FAILURE_CONSOLE = 8561,\n        /// <summary>\n        /// Security Accounts Manager initialization failed because of the following error: %1.\n        /// Error Status: 0x%2. Please click OK to shutdown the system. You can use the recovery console to diagnose the system further.\n        /// </summary>\n        ERROR_DS_SAM_INIT_FAILURE_CONSOLE = 8562,\n        /// <summary>\n        /// This version of Windows is too old to support the current directory forest behavior.  You must upgrade the operating system on this server before it can become a domain controller in this forest.\n        /// </summary>\n        ERROR_DS_FOREST_VERSION_TOO_HIGH = 8563,\n        /// <summary>\n        /// This version of Windows is too old to support the current domain behavior.  You must upgrade the operating system on this server before it can become a domain controller in this domain.\n        /// </summary>\n        ERROR_DS_DOMAIN_VERSION_TOO_HIGH = 8564,\n        /// <summary>\n        /// This version of Windows no longer supports the behavior version in use in this directory forest.  You must advance the forest behavior version before this server can become a domain controller in the forest.\n        /// </summary>\n        ERROR_DS_FOREST_VERSION_TOO_LOW = 8565,\n        /// <summary>\n        /// This version of Windows no longer supports the behavior version in use in this domain.  You must advance the domain behavior version before this server can become a domain controller in the domain.\n        /// </summary>\n        ERROR_DS_DOMAIN_VERSION_TOO_LOW = 8566,\n        /// <summary>\n        /// The version of Windows is incompatible with the behavior version of the domain or forest.\n        /// </summary>\n        ERROR_DS_INCOMPATIBLE_VERSION = 8567,\n        /// <summary>\n        /// The behavior version cannot be increased to the requested value because Domain Controllers still exist with versions lower than the requested value.\n        /// </summary>\n        ERROR_DS_LOW_DSA_VERSION = 8568,\n        /// <summary>\n        /// The behavior version value cannot be increased while the domain is still in mixed domain mode.  You must first change the domain to native mode before increasing the behavior version.\n        /// </summary>\n        ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN = 8569,\n        /// <summary>\n        /// The sort order requested is not supported.\n        /// </summary>\n        ERROR_DS_NOT_SUPPORTED_SORT_ORDER = 8570,\n        /// <summary>\n        /// Found an object with a non unique name.\n        /// </summary>\n        ERROR_DS_NAME_NOT_UNIQUE = 8571,\n        /// <summary>\n        /// The machine account was created pre-NT4.  The account needs to be recreated.\n        /// </summary>\n        ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 = 8572,\n        /// <summary>\n        /// The database is out of version store.\n        /// </summary>\n        ERROR_DS_OUT_OF_VERSION_STORE = 8573,\n        /// <summary>\n        /// Unable to continue operation because multiple conflicting controls were used.\n        /// </summary>\n        ERROR_DS_INCOMPATIBLE_CONTROLS_USED = 8574,\n        /// <summary>\n        /// Unable to find a valid security descriptor reference domain for this partition.\n        /// </summary>\n        ERROR_DS_NO_REF_DOMAIN = 8575,\n        /// <summary>\n        /// Schema update failed: The link identifier is reserved.\n        /// </summary>\n        ERROR_DS_RESERVED_LINK_ID = 8576,\n        /// <summary>\n        /// Schema update failed: There are no link identifiers available.\n        /// </summary>\n        ERROR_DS_LINK_ID_NOT_AVAILABLE = 8577,\n        /// <summary>\n        /// A account group can not have a universal group as a member.\n        /// </summary>\n        ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER = 8578,\n        /// <summary>\n        /// Rename or move operations on naming context heads or read-only objects are not allowed.\n        /// </summary>\n        ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE = 8579,\n        /// <summary>\n        /// Move operations on objects in the schema naming context are not allowed.\n        /// </summary>\n        ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC = 8580,\n        /// <summary>\n        /// A system flag has been set on the object and does not allow the object to be moved or renamed.\n        /// </summary>\n        ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG = 8581,\n        /// <summary>\n        /// This object is not allowed to change its grandparent container. Moves are not forbidden on this object, but are restricted to sibling containers.\n        /// </summary>\n        ERROR_DS_MODIFYDN_WRONG_GRANDPARENT = 8582,\n        /// <summary>\n        /// Unable to resolve completely, a referral to another forest is generated.\n        /// </summary>\n        ERROR_DS_NAME_ERROR_TRUST_REFERRAL = 8583,\n        /// <summary>\n        /// The requested action is not supported on standard server.\n        /// </summary>\n        ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER = 8584,\n        /// <summary>\n        /// Could not access a partition of the Active Directory located on a remote server.  Make sure at least one server is running for the partition in question.\n        /// </summary>\n        ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD = 8585,\n        /// <summary>\n        /// The directory cannot validate the proposed naming context (or partition) name because it does not hold a replica nor can it contact a replica of the naming context above the proposed naming context.  Please ensure that the parent naming context is properly registered in DNS, and at least one replica of this naming context is reachable by the Domain Naming master.\n        /// </summary>\n        ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 = 8586,\n        /// <summary>\n        /// The thread limit for this request was exceeded.\n        /// </summary>\n        ERROR_DS_THREAD_LIMIT_EXCEEDED = 8587,\n        /// <summary>\n        /// The Global catalog server is not in the closest site.\n        /// </summary>\n        ERROR_DS_NOT_CLOSEST = 8588,\n        /// <summary>\n        /// The DS cannot derive a service principal name (SPN) with which to mutually authenticate the target server because the corresponding server object in the local DS database has no serverReference attribute.\n        /// </summary>\n        ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF = 8589,\n        /// <summary>\n        /// The Directory Service failed to enter single user mode.\n        /// </summary>\n        ERROR_DS_SINGLE_USER_MODE_FAILED = 8590,\n        /// <summary>\n        /// The Directory Service cannot parse the script because of a syntax error.\n        /// </summary>\n        ERROR_DS_NTDSCRIPT_SYNTAX_ERROR = 8591,\n        /// <summary>\n        /// The Directory Service cannot process the script because of an error.\n        /// </summary>\n        ERROR_DS_NTDSCRIPT_PROCESS_ERROR = 8592,\n        /// <summary>\n        /// The directory service cannot perform the requested operation because the servers\n        /// involved are of different replication epochs (which is usually related to a\n        /// domain rename that is in progress).\n        /// </summary>\n        ERROR_DS_DIFFERENT_REPL_EPOCHS = 8593,\n        /// <summary>\n        /// The directory service binding must be renegotiated due to a change in the server\n        /// extensions information.\n        /// </summary>\n        ERROR_DS_DRS_EXTENSIONS_CHANGED = 8594,\n        /// <summary>\n        /// Operation not allowed on a disabled cross ref.\n        /// </summary>\n        ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR = 8595,\n        /// <summary>\n        /// Schema update failed: No values for msDS-IntId are available.\n        /// </summary>\n        ERROR_DS_NO_MSDS_INTID = 8596,\n        /// <summary>\n        /// Schema update failed: Duplicate msDS-INtId. Retry the operation.\n        /// </summary>\n        ERROR_DS_DUP_MSDS_INTID = 8597,\n        /// <summary>\n        /// Schema deletion failed: attribute is used in rDNAttID.\n        /// </summary>\n        ERROR_DS_EXISTS_IN_RDNATTID = 8598,\n        /// <summary>\n        /// The directory service failed to authorize the request.\n        /// </summary>\n        ERROR_DS_AUTHORIZATION_FAILED = 8599,\n        /// <summary>\n        /// The Directory Service cannot process the script because it is invalid.\n        /// </summary>\n        ERROR_DS_INVALID_SCRIPT = 8600,\n        /// <summary>\n        /// The remote create cross reference operation failed on the Domain Naming Master FSMO.  The operation's error is in the extended data.\n        /// </summary>\n        ERROR_DS_REMOTE_CROSSREF_OP_FAILED = 8601,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_CROSS_REF_BUSY = 8602,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN = 8603,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC = 8604,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_DUPLICATE_ID_FOUND = 8605,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT = 8606,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_GROUP_CONVERSION_ERROR = 8607,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_CANT_MOVE_APP_BASIC_GROUP = 8608,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_CANT_MOVE_APP_QUERY_GROUP = 8609,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_ROLE_NOT_VERIFIED = 8610,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL = 8611,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_DOMAIN_RENAME_IN_PROGRESS = 8612,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_EXISTING_AD_CHILD_NC = 8613,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_REPL_LIFETIME_EXCEEDED = 8614,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER = 8615,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ERROR_DS_LDAP_SEND_QUEUE_FULL = 8616,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_RESPONSE_CODES_BASE = 9000,\n        /// <summary>\n        /// DNS server unable to interpret format.\n        /// </summary>\n        DNS_ERROR_RCODE_FORMAT_ERROR = 9001,\n        /// <summary>\n        /// DNS server failure.\n        /// </summary>\n        DNS_ERROR_RCODE_SERVER_FAILURE = 9002,\n        /// <summary>\n        /// DNS name does not exist.\n        /// </summary>\n        DNS_ERROR_RCODE_NAME_ERROR = 9003,\n        /// <summary>\n        /// DNS request not supported by name server.\n        /// </summary>\n        DNS_ERROR_RCODE_NOT_IMPLEMENTED = 9004,\n        /// <summary>\n        /// DNS operation refused.\n        /// </summary>\n        DNS_ERROR_RCODE_REFUSED = 9005,\n        /// <summary>\n        /// DNS name that ought not exist, does exist.\n        /// </summary>\n        DNS_ERROR_RCODE_YXDOMAIN = 9006,\n        /// <summary>\n        /// DNS RR set that ought not exist, does exist.\n        /// </summary>\n        DNS_ERROR_RCODE_YXRRSET = 9007,\n        /// <summary>\n        /// DNS RR set that ought to exist, does not exist.\n        /// </summary>\n        DNS_ERROR_RCODE_NXRRSET = 9008,\n        /// <summary>\n        /// DNS server not authoritative for zone.\n        /// </summary>\n        DNS_ERROR_RCODE_NOTAUTH = 9009,\n        /// <summary>\n        /// DNS name in update or prereq is not in zone.\n        /// </summary>\n        DNS_ERROR_RCODE_NOTZONE = 9010,\n        /// <summary>\n        /// DNS signature failed to verify.\n        /// </summary>\n        DNS_ERROR_RCODE_BADSIG = 9016,\n        /// <summary>\n        /// DNS bad key.\n        /// </summary>\n        DNS_ERROR_RCODE_BADKEY = 9017,\n        /// <summary>\n        /// DNS signature validity expired.\n        /// </summary>\n        DNS_ERROR_RCODE_BADTIME = 9018,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_PACKET_FMT_BASE = 9500,\n        /// <summary>\n        /// No records found for given DNS query.\n        /// </summary>\n        DNS_INFO_NO_RECORDS = 9501,\n        /// <summary>\n        /// Bad DNS packet.\n        /// </summary>\n        DNS_ERROR_BAD_PACKET = 9502,\n        /// <summary>\n        /// No DNS packet.\n        /// </summary>\n        DNS_ERROR_NO_PACKET = 9503,\n        /// <summary>\n        /// DNS error, check rcode.\n        /// </summary>\n        DNS_ERROR_RCODE = 9504,\n        /// <summary>\n        /// Unsecured DNS packet.\n        /// </summary>\n        DNS_ERROR_UNSECURE_PACKET = 9505,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_NO_MEMORY = ERROR_OUTOFMEMORY,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_INVALID_NAME = ERROR_INVALID_NAME,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_INVALID_DATA = ERROR_INVALID_DATA,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_GENERAL_API_BASE = 9550,\n        /// <summary>\n        /// Invalid DNS type.\n        /// </summary>\n        DNS_ERROR_INVALID_TYPE = 9551,\n        /// <summary>\n        /// Invalid IP address.\n        /// </summary>\n        DNS_ERROR_INVALID_IP_ADDRESS = 9552,\n        /// <summary>\n        /// Invalid property.\n        /// </summary>\n        DNS_ERROR_INVALID_PROPERTY = 9553,\n        /// <summary>\n        /// Try DNS operation again later.\n        /// </summary>\n        DNS_ERROR_TRY_AGAIN_LATER = 9554,\n        /// <summary>\n        /// Record for given name and type is not unique.\n        /// </summary>\n        DNS_ERROR_NOT_UNIQUE = 9555,\n        /// <summary>\n        /// DNS name does not comply with RFC specifications.\n        /// </summary>\n        DNS_ERROR_NON_RFC_NAME = 9556,\n        /// <summary>\n        /// DNS name is a fully-qualified DNS name.\n        /// </summary>\n        DNS_STATUS_FQDN = 9557,\n        /// <summary>\n        /// DNS name is dotted (multi-label).\n        /// </summary>\n        DNS_STATUS_DOTTED_NAME = 9558,\n        /// <summary>\n        /// DNS name is a single-part name.\n        /// </summary>\n        DNS_STATUS_SINGLE_PART_NAME = 9559,\n        /// <summary>\n        /// DNS name contains an invalid character.\n        /// </summary>\n        DNS_ERROR_INVALID_NAME_CHAR = 9560,\n        /// <summary>\n        /// DNS name is entirely numeric.\n        /// </summary>\n        DNS_ERROR_NUMERIC_NAME = 9561,\n        /// <summary>\n        /// The operation requested is not permitted on a DNS root server.\n        /// </summary>\n        DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER = 9562,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION = 9563,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_CANNOT_FIND_ROOT_HINTS = 9564,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_INCONSISTENT_ROOT_HINTS = 9565,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_ZONE_BASE = 9600,\n        /// <summary>\n        /// DNS zone does not exist.\n        /// </summary>\n        DNS_ERROR_ZONE_DOES_NOT_EXIST = 9601,\n        /// <summary>\n        /// DNS zone information not available.\n        /// </summary>\n        DNS_ERROR_NO_ZONE_INFO = 9602,\n        /// <summary>\n        /// Invalid operation for DNS zone.\n        /// </summary>\n        DNS_ERROR_INVALID_ZONE_OPERATION = 9603,\n        /// <summary>\n        /// Invalid DNS zone configuration.\n        /// </summary>\n        DNS_ERROR_ZONE_CONFIGURATION_ERROR = 9604,\n        /// <summary>\n        /// DNS zone has no start of authority (SOA) record.\n        /// </summary>\n        DNS_ERROR_ZONE_HAS_NO_SOA_RECORD = 9605,\n        /// <summary>\n        /// DNS zone has no Name Server (NS) record.\n        /// </summary>\n        DNS_ERROR_ZONE_HAS_NO_NS_RECORDS = 9606,\n        /// <summary>\n        /// DNS zone is locked.\n        /// </summary>\n        DNS_ERROR_ZONE_LOCKED = 9607,\n        /// <summary>\n        /// DNS zone creation failed.\n        /// </summary>\n        DNS_ERROR_ZONE_CREATION_FAILED = 9608,\n        /// <summary>\n        /// DNS zone already exists.\n        /// </summary>\n        DNS_ERROR_ZONE_ALREADY_EXISTS = 9609,\n        /// <summary>\n        /// DNS automatic zone already exists.\n        /// </summary>\n        DNS_ERROR_AUTOZONE_ALREADY_EXISTS = 9610,\n        /// <summary>\n        /// Invalid DNS zone type.\n        /// </summary>\n        DNS_ERROR_INVALID_ZONE_TYPE = 9611,\n        /// <summary>\n        /// Secondary DNS zone requires master IP address.\n        /// </summary>\n        DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP = 9612,\n        /// <summary>\n        /// DNS zone not secondary.\n        /// </summary>\n        DNS_ERROR_ZONE_NOT_SECONDARY = 9613,\n        /// <summary>\n        /// Need secondary IP address.\n        /// </summary>\n        DNS_ERROR_NEED_SECONDARY_ADDRESSES = 9614,\n        /// <summary>\n        /// WINS initialization failed.\n        /// </summary>\n        DNS_ERROR_WINS_INIT_FAILED = 9615,\n        /// <summary>\n        /// Need WINS servers.\n        /// </summary>\n        DNS_ERROR_NEED_WINS_SERVERS = 9616,\n        /// <summary>\n        /// NBTSTAT initialization call failed.\n        /// </summary>\n        DNS_ERROR_NBSTAT_INIT_FAILED = 9617,\n        /// <summary>\n        /// Invalid delete of start of authority (SOA)\n        /// </summary>\n        DNS_ERROR_SOA_DELETE_INVALID = 9618,\n        /// <summary>\n        /// A conditional forwarding zone already exists for that name.\n        /// </summary>\n        DNS_ERROR_FORWARDER_ALREADY_EXISTS = 9619,\n        /// <summary>\n        /// This zone must be configured with one or more master DNS server IP addresses.\n        /// </summary>\n        DNS_ERROR_ZONE_REQUIRES_MASTER_IP = 9620,\n        /// <summary>\n        /// The operation cannot be performed because this zone is shutdown.\n        /// </summary>\n        DNS_ERROR_ZONE_IS_SHUTDOWN = 9621,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_DATAFILE_BASE = 9650,\n        /// <summary>\n        /// Primary DNS zone requires datafile.\n        /// </summary>\n        DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651,\n        /// <summary>\n        /// Invalid datafile name for DNS zone.\n        /// </summary>\n        DNS_ERROR_INVALID_DATAFILE_NAME = 9652,\n        /// <summary>\n        /// Failed to open datafile for DNS zone.\n        /// </summary>\n        DNS_ERROR_DATAFILE_OPEN_FAILURE = 9653,\n        /// <summary>\n        /// Failed to write datafile for DNS zone.\n        /// </summary>\n        DNS_ERROR_FILE_WRITEBACK_FAILED = 9654,\n        /// <summary>\n        /// Failure while reading datafile for DNS zone.\n        /// </summary>\n        DNS_ERROR_DATAFILE_PARSING = 9655,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_DATABASE_BASE = 9700,\n        /// <summary>\n        /// DNS record does not exist.\n        /// </summary>\n        DNS_ERROR_RECORD_DOES_NOT_EXIST = 9701,\n        /// <summary>\n        /// DNS record format error.\n        /// </summary>\n        DNS_ERROR_RECORD_FORMAT = 9702,\n        /// <summary>\n        /// Node creation failure in DNS.\n        /// </summary>\n        DNS_ERROR_NODE_CREATION_FAILED = 9703,\n        /// <summary>\n        /// Unknown DNS record type.\n        /// </summary>\n        DNS_ERROR_UNKNOWN_RECORD_TYPE = 9704,\n        /// <summary>\n        /// DNS record timed out.\n        /// </summary>\n        DNS_ERROR_RECORD_TIMED_OUT = 9705,\n        /// <summary>\n        /// Name not in DNS zone.\n        /// </summary>\n        DNS_ERROR_NAME_NOT_IN_ZONE = 9706,\n        /// <summary>\n        /// CNAME loop detected.\n        /// </summary>\n        DNS_ERROR_CNAME_LOOP = 9707,\n        /// <summary>\n        /// Node is a CNAME DNS record.\n        /// </summary>\n        DNS_ERROR_NODE_IS_CNAME = 9708,\n        /// <summary>\n        /// A CNAME record already exists for given name.\n        /// </summary>\n        DNS_ERROR_CNAME_COLLISION = 9709,\n        /// <summary>\n        /// Record only at DNS zone root.\n        /// </summary>\n        DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT = 9710,\n        /// <summary>\n        /// DNS record already exists.\n        /// </summary>\n        DNS_ERROR_RECORD_ALREADY_EXISTS = 9711,\n        /// <summary>\n        /// Secondary DNS zone data error.\n        /// </summary>\n        DNS_ERROR_SECONDARY_DATA = 9712,\n        /// <summary>\n        /// Could not create DNS cache data.\n        /// </summary>\n        DNS_ERROR_NO_CREATE_CACHE_DATA = 9713,\n        /// <summary>\n        /// DNS name does not exist.\n        /// </summary>\n        DNS_ERROR_NAME_DOES_NOT_EXIST = 9714,\n        /// <summary>\n        /// Could not create pointer (PTR) record.\n        /// </summary>\n        DNS_WARNING_PTR_CREATE_FAILED = 9715,\n        /// <summary>\n        /// DNS domain was undeleted.\n        /// </summary>\n        DNS_WARNING_DOMAIN_UNDELETED = 9716,\n        /// <summary>\n        /// The directory service is unavailable.\n        /// </summary>\n        DNS_ERROR_DS_UNAVAILABLE = 9717,\n        /// <summary>\n        /// DNS zone already exists in the directory service.\n        /// </summary>\n        DNS_ERROR_DS_ZONE_ALREADY_EXISTS = 9718,\n        /// <summary>\n        /// DNS server not creating or reading the boot file for the directory service integrated DNS zone.\n        /// </summary>\n        DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE = 9719,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_OPERATION_BASE = 9750,\n        /// <summary>\n        /// DNS AXFR (zone transfer) complete.\n        /// </summary>\n        DNS_INFO_AXFR_COMPLETE = 9751,\n        /// <summary>\n        /// DNS zone transfer failed.\n        /// </summary>\n        DNS_ERROR_AXFR = 9752,\n        /// <summary>\n        /// Added local WINS server.\n        /// </summary>\n        DNS_INFO_ADDED_LOCAL_WINS = 9753,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_SECURE_BASE = 9800,\n        /// <summary>\n        /// Secure update call needs to continue update request.\n        /// </summary>\n        DNS_STATUS_CONTINUE_NEEDED = 9801,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_SETUP_BASE = 9850,\n        /// <summary>\n        /// TCP/IP network protocol not installed.\n        /// </summary>\n        DNS_ERROR_NO_TCPIP = 9851,\n        /// <summary>\n        /// No DNS servers configured for local system.\n        /// </summary>\n        DNS_ERROR_NO_DNS_SERVERS = 9852,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_DP_BASE = 9900,\n        /// <summary>\n        /// The specified directory partition does not exist.\n        /// </summary>\n        DNS_ERROR_DP_DOES_NOT_EXIST = 9901,\n        /// <summary>\n        /// The specified directory partition already exists.\n        /// </summary>\n        DNS_ERROR_DP_ALREADY_EXISTS = 9902,\n        /// <summary>\n        /// The DS is not enlisted in the specified directory partition.\n        /// </summary>\n        DNS_ERROR_DP_NOT_ENLISTED = 9903,\n        /// <summary>\n        /// The DS is already enlisted in the specified directory partition.\n        /// </summary>\n        DNS_ERROR_DP_ALREADY_ENLISTED = 9904,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DNS_ERROR_DP_NOT_AVAILABLE = 9905,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        WSABASEERR = 10000,\n        /// <summary>\n        /// A blocking operation was interrupted by a call to WSACancelBlockingCall.\n        /// </summary>\n        WSAEINTR = 10004,\n        /// <summary>\n        /// The file handle supplied is not valid.\n        /// </summary>\n        WSAEBADF = 10009,\n        /// <summary>\n        /// An attempt was made to access a socket in a way forbidden by its access permissions.\n        /// </summary>\n        WSAEACCES = 10013,\n        /// <summary>\n        /// The system detected an invalid pointer address in attempting to use a pointer argument in a call.\n        /// </summary>\n        WSAEFAULT = 10014,\n        /// <summary>\n        /// An invalid argument was supplied.\n        /// </summary>\n        WSAEINVAL = 10022,\n        /// <summary>\n        /// Too many open sockets.\n        /// </summary>\n        WSAEMFILE = 10024,\n        /// <summary>\n        /// A non-blocking socket operation could not be completed immediately.\n        /// </summary>\n        WSAEWOULDBLOCK = 10035,\n        /// <summary>\n        /// A blocking operation is currently executing.\n        /// </summary>\n        WSAEINPROGRESS = 10036,\n        /// <summary>\n        /// An operation was attempted on a non-blocking socket that already had an operation in progress.\n        /// </summary>\n        WSAEALREADY = 10037,\n        /// <summary>\n        /// An operation was attempted on something that is not a socket.\n        /// </summary>\n        WSAENOTSOCK = 10038,\n        /// <summary>\n        /// A required address was omitted from an operation on a socket.\n        /// </summary>\n        WSAEDESTADDRREQ = 10039,\n        /// <summary>\n        /// A message sent on a datagram socket was larger than the internal message buffer or some other network limit, or the buffer used to receive a datagram into was smaller than the datagram itself.\n        /// </summary>\n        WSAEMSGSIZE = 10040,\n        /// <summary>\n        /// A protocol was specified in the socket function call that does not support the semantics of the socket type requested.\n        /// </summary>\n        WSAEPROTOTYPE = 10041,\n        /// <summary>\n        /// An unknown, invalid, or unsupported option or level was specified in a getsockopt or setsockopt call.\n        /// </summary>\n        WSAENOPROTOOPT = 10042,\n        /// <summary>\n        /// The requested protocol has not been configured into the system, or no implementation for it exists.\n        /// </summary>\n        WSAEPROTONOSUPPORT = 10043,\n        /// <summary>\n        /// The support for the specified socket type does not exist in this address family.\n        /// </summary>\n        WSAESOCKTNOSUPPORT = 10044,\n        /// <summary>\n        /// The attempted operation is not supported for the type of object referenced.\n        /// </summary>\n        WSAEOPNOTSUPP = 10045,\n        /// <summary>\n        /// The protocol family has not been configured into the system or no implementation for it exists.\n        /// </summary>\n        WSAEPFNOSUPPORT = 10046,\n        /// <summary>\n        /// An address incompatible with the requested protocol was used.\n        /// </summary>\n        WSAEAFNOSUPPORT = 10047,\n        /// <summary>\n        /// Only one usage of each socket address (protocol/network address/port) is normally permitted.\n        /// </summary>\n        WSAEADDRINUSE = 10048,\n        /// <summary>\n        /// The requested address is not valid in its context.\n        /// </summary>\n        WSAEADDRNOTAVAIL = 10049,\n        /// <summary>\n        /// A socket operation encountered a dead network.\n        /// </summary>\n        WSAENETDOWN = 10050,\n        /// <summary>\n        /// A socket operation was attempted to an unreachable network.\n        /// </summary>\n        WSAENETUNREACH = 10051,\n        /// <summary>\n        /// The connection has been broken due to keep-alive activity detecting a failure while the operation was in progress.\n        /// </summary>\n        WSAENETRESET = 10052,\n        /// <summary>\n        /// An established connection was aborted by the software in your host machine.\n        /// </summary>\n        WSAECONNABORTED = 10053,\n        /// <summary>\n        /// An existing connection was forcibly closed by the remote host.\n        /// </summary>\n        WSAECONNRESET = 10054,\n        /// <summary>\n        /// An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.\n        /// </summary>\n        WSAENOBUFS = 10055,\n        /// <summary>\n        /// A connect request was made on an already connected socket.\n        /// </summary>\n        WSAEISCONN = 10056,\n        /// <summary>\n        /// A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied.\n        /// </summary>\n        WSAENOTCONN = 10057,\n        /// <summary>\n        /// A request to send or receive data was disallowed because the socket had already been shut down in that direction with a previous shutdown call.\n        /// </summary>\n        WSAESHUTDOWN = 10058,\n        /// <summary>\n        /// Too many references to some kernel object.\n        /// </summary>\n        WSAETOOMANYREFS = 10059,\n        /// <summary>\n        /// A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.\n        /// </summary>\n        WSAETIMEDOUT = 10060,\n        /// <summary>\n        /// No connection could be made because the target machine actively refused it.\n        /// </summary>\n        WSAECONNREFUSED = 10061,\n        /// <summary>\n        /// Cannot translate name.\n        /// </summary>\n        WSAELOOP = 10062,\n        /// <summary>\n        /// Name component or name was too long.\n        /// </summary>\n        WSAENAMETOOInt32 = 10063,\n        /// <summary>\n        /// A socket operation failed because the destination host was down.\n        /// </summary>\n        WSAEHOSTDOWN = 10064,\n        /// <summary>\n        /// A socket operation was attempted to an unreachable host.\n        /// </summary>\n        WSAEHOSTUNREACH = 10065,\n        /// <summary>\n        /// Cannot remove a directory that is not empty.\n        /// </summary>\n        WSAENOTEMPTY = 10066,\n        /// <summary>\n        /// A Windows Sockets implementation may have a limit on the number of applications that may use it simultaneously.\n        /// </summary>\n        WSAEPROCLIM = 10067,\n        /// <summary>\n        /// Ran out of quota.\n        /// </summary>\n        WSAEUSERS = 10068,\n        /// <summary>\n        /// Ran out of disk quota.\n        /// </summary>\n        WSAEDQUOT = 10069,\n        /// <summary>\n        /// File handle reference is no longer available.\n        /// </summary>\n        WSAESTALE = 10070,\n        /// <summary>\n        /// Item is not available locally.\n        /// </summary>\n        WSAEREMOTE = 10071,\n        /// <summary>\n        /// WSAStartup cannot function at this time because the underlying system it uses to provide network services is currently unavailable.\n        /// </summary>\n        WSASYSNOTREADY = 10091,\n        /// <summary>\n        /// The Windows Sockets version requested is not supported.\n        /// </summary>\n        WSAVERNOTSUPPORTED = 10092,\n        /// <summary>\n        /// Either the application has not called WSAStartup, or WSAStartup failed.\n        /// </summary>\n        WSANOTINITIALISED = 10093,\n        /// <summary>\n        /// Returned by WSARecv or WSARecvFrom to indicate the remote party has initiated a graceful shutdown sequence.\n        /// </summary>\n        WSAEDISCON = 10101,\n        /// <summary>\n        /// No more results can be returned by WSALookupServiceNext.\n        /// </summary>\n        WSAENOMORE = 10102,\n        /// <summary>\n        /// A call to WSALookupServiceEnd was made while this call was still processing. The call has been canceled.\n        /// </summary>\n        WSAECANCELLED = 10103,\n        /// <summary>\n        /// The procedure call table is invalid.\n        /// </summary>\n        WSAEINVALIDPROCTABLE = 10104,\n        /// <summary>\n        /// The requested service provider is invalid.\n        /// </summary>\n        WSAEINVALIDPROVIDER = 10105,\n        /// <summary>\n        /// The requested service provider could not be loaded or initialized.\n        /// </summary>\n        WSAEPROVIDERFAILEDINIT = 10106,\n        /// <summary>\n        /// A system call that should never fail has failed.\n        /// </summary>\n        WSASYSCALLFAILURE = 10107,\n        /// <summary>\n        /// No such service is known. The service cannot be found in the specified name space.\n        /// </summary>\n        WSASERVICE_NOT_FOUND = 10108,\n        /// <summary>\n        /// The specified class was not found.\n        /// </summary>\n        WSATYPE_NOT_FOUND = 10109,\n        /// <summary>\n        /// No more results can be returned by WSALookupServiceNext.\n        /// </summary>\n        WSA_E_NO_MORE = 10110,\n        /// <summary>\n        /// A call to WSALookupServiceEnd was made while this call was still processing. The call has been canceled.\n        /// </summary>\n        WSA_E_CANCELLED = 10111,\n        /// <summary>\n        /// A database query failed because it was actively refused.\n        /// </summary>\n        WSAEREFUSED = 10112,\n        /// <summary>\n        /// No such host is known.\n        /// </summary>\n        WSAHOST_NOT_FOUND = 11001,\n        /// <summary>\n        /// This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server.\n        /// </summary>\n        WSATRY_AGAIN = 11002,\n        /// <summary>\n        /// A non-recoverable error occurred during a database lookup.\n        /// </summary>\n        WSANO_RECOVERY = 11003,\n        /// <summary>\n        /// The requested name is valid and was found in the database, but it does not have the correct associated data being resolved for.\n        /// </summary>\n        WSANO_DATA = 11004,\n        /// <summary>\n        /// At least one reserve has arrived.\n        /// </summary>\n        WSA_QOS_RECEIVERS = 11005,\n        /// <summary>\n        /// At least one path has arrived.\n        /// </summary>\n        WSA_QOS_SENDERS = 11006,\n        /// <summary>\n        /// There are no senders.\n        /// </summary>\n        WSA_QOS_NO_SENDERS = 11007,\n        /// <summary>\n        /// There are no receivers.\n        /// </summary>\n        WSA_QOS_NO_RECEIVERS = 11008,\n        /// <summary>\n        /// Reserve has been confirmed.\n        /// </summary>\n        WSA_QOS_REQUEST_CONFIRMED = 11009,\n        /// <summary>\n        /// Error due to lack of resources.\n        /// </summary>\n        WSA_QOS_ADMISSION_FAILURE = 11010,\n        /// <summary>\n        /// Rejected for administrative reasons - bad credentials.\n        /// </summary>\n        WSA_QOS_POLICY_FAILURE = 11011,\n        /// <summary>\n        /// Unknown or conflicting style.\n        /// </summary>\n        WSA_QOS_BAD_STYLE = 11012,\n        /// <summary>\n        /// Problem with some part of the filterspec or providerspecific buffer in general.\n        /// </summary>\n        WSA_QOS_BAD_OBJECT = 11013,\n        /// <summary>\n        /// Problem with some part of the flowspec.\n        /// </summary>\n        WSA_QOS_TRAFFIC_CTRL_ERROR = 11014,\n        /// <summary>\n        /// General QOS error.\n        /// </summary>\n        WSA_QOS_GENERIC_ERROR = 11015,\n        /// <summary>\n        /// An invalid or unrecognized service type was found in the flowspec.\n        /// </summary>\n        WSA_QOS_ESERVICETYPE = 11016,\n        /// <summary>\n        /// An invalid or inconsistent flowspec was found in the QOS structure.\n        /// </summary>\n        WSA_QOS_EFLOWSPEC = 11017,\n        /// <summary>\n        /// Invalid QOS provider-specific buffer.\n        /// </summary>\n        WSA_QOS_EPROVSPECBUF = 11018,\n        /// <summary>\n        /// An invalid QOS filter style was used.\n        /// </summary>\n        WSA_QOS_EFILTERSTYLE = 11019,\n        /// <summary>\n        /// An invalid QOS filter type was used.\n        /// </summary>\n        WSA_QOS_EFILTERTYPE = 11020,\n        /// <summary>\n        /// An incorrect number of QOS FILTERSPECs were specified in the FLOWDESCRIPTOR.\n        /// </summary>\n        WSA_QOS_EFILTERCOUNT = 11021,\n        /// <summary>\n        /// An object with an invalid ObjectLength field was specified in the QOS provider-specific buffer.\n        /// </summary>\n        WSA_QOS_EOBJLENGTH = 11022,\n        /// <summary>\n        /// An incorrect number of flow descriptors was specified in the QOS structure.\n        /// </summary>\n        WSA_QOS_EFLOWCOUNT = 11023,\n        /// <summary>\n        /// An unrecognized object was found in the QOS provider-specific buffer.\n        /// </summary>\n        WSA_QOS_EUNKOWNPSOBJ = 11024,\n        /// <summary>\n        /// An invalid policy object was found in the QOS provider-specific buffer.\n        /// </summary>\n        WSA_QOS_EPOLICYOBJ = 11025,\n        /// <summary>\n        /// An invalid QOS flow descriptor was found in the flow descriptor list.\n        /// </summary>\n        WSA_QOS_EFLOWDESC = 11026,\n        /// <summary>\n        /// An invalid or inconsistent flowspec was found in the QOS provider specific buffer.\n        /// </summary>\n        WSA_QOS_EPSFLOWSPEC = 11027,\n        /// <summary>\n        /// An invalid FILTERSPEC was found in the QOS provider-specific buffer.\n        /// </summary>\n        WSA_QOS_EPSFILTERSPEC = 11028,\n        /// <summary>\n        /// An invalid shape discard mode object was found in the QOS provider specific buffer.\n        /// </summary>\n        WSA_QOS_ESDMODEOBJ = 11029,\n        /// <summary>\n        /// An invalid shaping rate object was found in the QOS provider-specific buffer.\n        /// </summary>\n        WSA_QOS_ESHAPERATEOBJ = 11030,\n        /// <summary>\n        /// A reserved policy element was found in the QOS provider-specific buffer.\n        /// </summary>\n        WSA_QOS_RESERVED_PETYPE = 11031,\n        /// <summary>\n        /// The requested section was not present in the activation context.\n        /// </summary>\n        ERROR_SXS_SECTION_NOT_FOUND = 14000,\n        /// <summary>\n        /// This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.\n        /// </summary>\n        ERROR_SXS_CANT_GEN_ACTCTX = 14001,\n        /// <summary>\n        /// The application binding data format is invalid.\n        /// </summary>\n        ERROR_SXS_INVALID_ACTCTXDATA_FORMAT = 14002,\n        /// <summary>\n        /// The referenced assembly is not installed on your system.\n        /// </summary>\n        ERROR_SXS_ASSEMBLY_NOT_FOUND = 14003,\n        /// <summary>\n        /// The manifest file does not begin with the required tag and format information.\n        /// </summary>\n        ERROR_SXS_MANIFEST_FORMAT_ERROR = 14004,\n        /// <summary>\n        /// The manifest file contains one or more syntax errors.\n        /// </summary>\n        ERROR_SXS_MANIFEST_PARSE_ERROR = 14005,\n        /// <summary>\n        /// The application attempted to activate a disabled activation context.\n        /// </summary>\n        ERROR_SXS_ACTIVATION_CONTEXT_DISABLED = 14006,\n        /// <summary>\n        /// The requested lookup key was not found in any active activation context.\n        /// </summary>\n        ERROR_SXS_KEY_NOT_FOUND = 14007,\n        /// <summary>\n        /// A component version required by the application conflicts with another component version already active.\n        /// </summary>\n        ERROR_SXS_VERSION_CONFLICT = 14008,\n        /// <summary>\n        /// The type requested activation context section does not match the query API used.\n        /// </summary>\n        ERROR_SXS_WRONG_SECTION_TYPE = 14009,\n        /// <summary>\n        /// Lack of system resources has required isolated activation to be disabled for the current thread of execution.\n        /// </summary>\n        ERROR_SXS_THREAD_QUERIES_DISABLED = 14010,\n        /// <summary>\n        /// An attempt to set the process default activation context failed because the process default activation context was already set.\n        /// </summary>\n        ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET = 14011,\n        /// <summary>\n        /// The encoding group identifier specified is not recognized.\n        /// </summary>\n        ERROR_SXS_UNKNOWN_ENCODING_GROUP = 14012,\n        /// <summary>\n        /// The encoding requested is not recognized.\n        /// </summary>\n        ERROR_SXS_UNKNOWN_ENCODING = 14013,\n        /// <summary>\n        /// The manifest contains a reference to an invalid URI.\n        /// </summary>\n        ERROR_SXS_INVALID_XML_NAMESPACE_URI = 14014,\n        /// <summary>\n        /// The application manifest contains a reference to a dependent assembly which is not installed\n        /// </summary>\n        ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED = 14015,\n        /// <summary>\n        /// The manifest for an assembly used by the application has a reference to a dependent assembly which is not installed\n        /// </summary>\n        ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED = 14016,\n        /// <summary>\n        /// The manifest contains an attribute for the assembly identity which is not valid.\n        /// </summary>\n        ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE = 14017,\n        /// <summary>\n        /// The manifest is missing the required default namespace specification on the assembly element.\n        /// </summary>\n        ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE = 14018,\n        /// <summary>\n        /// The manifest has a default namespace specified on the assembly element but its value is not \"urn:schemas-microsoft-com:asm.v1\".\n        /// </summary>\n        ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE = 14019,\n        /// <summary>\n        /// The private manifest probed has crossed reparse-point-associated path\n        /// </summary>\n        ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT = 14020,\n        /// <summary>\n        /// Two or more components referenced directly or indirectly by the application manifest have files by the same name.\n        /// </summary>\n        ERROR_SXS_DUPLICATE_DLL_NAME = 14021,\n        /// <summary>\n        /// Two or more components referenced directly or indirectly by the application manifest have window classes with the same name.\n        /// </summary>\n        ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME = 14022,\n        /// <summary>\n        /// Two or more components referenced directly or indirectly by the application manifest have the same COM server CLSIDs.\n        /// </summary>\n        ERROR_SXS_DUPLICATE_CLSID = 14023,\n        /// <summary>\n        /// Two or more components referenced directly or indirectly by the application manifest have proxies for the same COM interface IIDs.\n        /// </summary>\n        ERROR_SXS_DUPLICATE_IID = 14024,\n        /// <summary>\n        /// Two or more components referenced directly or indirectly by the application manifest have the same COM type library TLBIDs.\n        /// </summary>\n        ERROR_SXS_DUPLICATE_TLBID = 14025,\n        /// <summary>\n        /// Two or more components referenced directly or indirectly by the application manifest have the same COM ProgIDs.\n        /// </summary>\n        ERROR_SXS_DUPLICATE_PROGID = 14026,\n        /// <summary>\n        /// Two or more components referenced directly or indirectly by the application manifest are different versions of the same component which is not permitted.\n        /// </summary>\n        ERROR_SXS_DUPLICATE_ASSEMBLY_NAME = 14027,\n        /// <summary>\n        /// A component's file does not match the verification information present in the\n        /// component manifest.\n        /// </summary>\n        ERROR_SXS_FILE_HASH_MISMATCH = 14028,\n        /// <summary>\n        /// The policy manifest contains one or more syntax errors.\n        /// </summary>\n        ERROR_SXS_POLICY_PARSE_ERROR = 14029,\n        /// <summary>\n        /// Manifest Parse Error : A string literal was expected, but no opening quote character was found.\n        /// </summary>\n        ERROR_SXS_XML_E_MISSINGQUOTE = 14030,\n        /// <summary>\n        /// Manifest Parse Error : Incorrect syntax was used in a comment.\n        /// </summary>\n        ERROR_SXS_XML_E_COMMENTSYNTAX = 14031,\n        /// <summary>\n        /// Manifest Parse Error : A name was started with an invalid character.\n        /// </summary>\n        ERROR_SXS_XML_E_BADSTARTNAMECHAR = 14032,\n        /// <summary>\n        /// Manifest Parse Error : A name contained an invalid character.\n        /// </summary>\n        ERROR_SXS_XML_E_BADNAMECHAR = 14033,\n        /// <summary>\n        /// Manifest Parse Error : A string literal contained an invalid character.\n        /// </summary>\n        ERROR_SXS_XML_E_BADCHARINSTRING = 14034,\n        /// <summary>\n        /// Manifest Parse Error : Invalid syntax for an xml declaration.\n        /// </summary>\n        ERROR_SXS_XML_E_XMLDECLSYNTAX = 14035,\n        /// <summary>\n        /// Manifest Parse Error : An Invalid character was found in text content.\n        /// </summary>\n        ERROR_SXS_XML_E_BADCHARDATA = 14036,\n        /// <summary>\n        /// Manifest Parse Error : Required white space was missing.\n        /// </summary>\n        ERROR_SXS_XML_E_MISSINGWHITESPACE = 14037,\n        /// <summary>\n        /// Manifest Parse Error : The character '>' was expected.\n        /// </summary>\n        ERROR_SXS_XML_E_EXPECTINGTAGEND = 14038,\n        /// <summary>\n        /// Manifest Parse Error : A semi colon character was expected.\n        /// </summary>\n        ERROR_SXS_XML_E_MISSINGSEMICOLON = 14039,\n        /// <summary>\n        /// Manifest Parse Error : Unbalanced parentheses.\n        /// </summary>\n        ERROR_SXS_XML_E_UNBALANCEDPAREN = 14040,\n        /// <summary>\n        /// Manifest Parse Error : Internal error.\n        /// </summary>\n        ERROR_SXS_XML_E_INTERNALERROR = 14041,\n        /// <summary>\n        /// Manifest Parse Error : Whitespace is not allowed at this location.\n        /// </summary>\n        ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE = 14042,\n        /// <summary>\n        /// Manifest Parse Error : End of file reached in invalid state for current encoding.\n        /// </summary>\n        ERROR_SXS_XML_E_INCOMPLETE_ENCODING = 14043,\n        /// <summary>\n        /// Manifest Parse Error : Missing parenthesis.\n        /// </summary>\n        ERROR_SXS_XML_E_MISSING_PAREN = 14044,\n        /// <summary>\n        /// Manifest Parse Error : A single or double closing quote character (\\' or \\\") is missing.\n        /// </summary>\n        ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE = 14045,\n        /// <summary>\n        /// Manifest Parse Error : Multiple colons are not allowed in a name.\n        /// </summary>\n        ERROR_SXS_XML_E_MULTIPLE_COLONS = 14046,\n        /// <summary>\n        /// Manifest Parse Error : Invalid character for decimal digit.\n        /// </summary>\n        ERROR_SXS_XML_E_INVALID_DECIMAL = 14047,\n        /// <summary>\n        /// Manifest Parse Error : Invalid character for hexidecimal digit.\n        /// </summary>\n        ERROR_SXS_XML_E_INVALID_HEXIDECIMAL = 14048,\n        /// <summary>\n        /// Manifest Parse Error : Invalid unicode character value for this platform.\n        /// </summary>\n        ERROR_SXS_XML_E_INVALID_UNICODE = 14049,\n        /// <summary>\n        /// Manifest Parse Error : Expecting whitespace or '?'.\n        /// </summary>\n        ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK = 14050,\n        /// <summary>\n        /// Manifest Parse Error : End tag was not expected at this location.\n        /// </summary>\n        ERROR_SXS_XML_E_UNEXPECTEDENDTAG = 14051,\n        /// <summary>\n        /// Manifest Parse Error : The following tags were not closed: %1.\n        /// </summary>\n        ERROR_SXS_XML_E_UNCLOSEDTAG = 14052,\n        /// <summary>\n        /// Manifest Parse Error : Duplicate attribute.\n        /// </summary>\n        ERROR_SXS_XML_E_DUPLICATEATTRIBUTE = 14053,\n        /// <summary>\n        /// Manifest Parse Error : Only one top level element is allowed in an XML document.\n        /// </summary>\n        ERROR_SXS_XML_E_MULTIPLEROOTS = 14054,\n        /// <summary>\n        /// Manifest Parse Error : Invalid at the top level of the document.\n        /// </summary>\n        ERROR_SXS_XML_E_INVALIDATROOTLEVEL = 14055,\n        /// <summary>\n        /// Manifest Parse Error : Invalid xml declaration.\n        /// </summary>\n        ERROR_SXS_XML_E_BADXMLDECL = 14056,\n        /// <summary>\n        /// Manifest Parse Error : XML document must have a top level element.\n        /// </summary>\n        ERROR_SXS_XML_E_MISSINGROOT = 14057,\n        /// <summary>\n        /// Manifest Parse Error : Unexpected end of file.\n        /// </summary>\n        ERROR_SXS_XML_E_UNEXPECTEDEOF = 14058,\n        /// <summary>\n        /// Manifest Parse Error : Parameter entities cannot be used inside markup declarations in an internal subset.\n        /// </summary>\n        ERROR_SXS_XML_E_BADPEREFINSUBSET = 14059,\n        /// <summary>\n        /// Manifest Parse Error : Element was not closed.\n        /// </summary>\n        ERROR_SXS_XML_E_UNCLOSEDSTARTTAG = 14060,\n        /// <summary>\n        /// Manifest Parse Error : End element was missing the character '>'.\n        /// </summary>\n        ERROR_SXS_XML_E_UNCLOSEDENDTAG = 14061,\n        /// <summary>\n        /// Manifest Parse Error : A string literal was not closed.\n        /// </summary>\n        ERROR_SXS_XML_E_UNCLOSEDSTRING = 14062,\n        /// <summary>\n        /// Manifest Parse Error : A comment was not closed.\n        /// </summary>\n        ERROR_SXS_XML_E_UNCLOSEDCOMMENT = 14063,\n        /// <summary>\n        /// Manifest Parse Error : A declaration was not closed.\n        /// </summary>\n        ERROR_SXS_XML_E_UNCLOSEDDECL = 14064,\n        /// <summary>\n        /// Manifest Parse Error : A CDATA section was not closed.\n        /// </summary>\n        ERROR_SXS_XML_E_UNCLOSEDCDATA = 14065,\n        /// <summary>\n        /// Manifest Parse Error : The namespace prefix is not allowed to start with the reserved string \"xml\".\n        /// </summary>\n        ERROR_SXS_XML_E_RESERVEDNAMESPACE = 14066,\n        /// <summary>\n        /// Manifest Parse Error : System does not support the specified encoding.\n        /// </summary>\n        ERROR_SXS_XML_E_INVALIDENCODING = 14067,\n        /// <summary>\n        /// Manifest Parse Error : Switch from current encoding to specified encoding not supported.\n        /// </summary>\n        ERROR_SXS_XML_E_INVALIDSWITCH = 14068,\n        /// <summary>\n        /// Manifest Parse Error : The name 'xml' is reserved and must be lower case.\n        /// </summary>\n        ERROR_SXS_XML_E_BADXMLCASE = 14069,\n        /// <summary>\n        /// Manifest Parse Error : The standalone attribute must have the value 'yes' or 'no'.\n        /// </summary>\n        ERROR_SXS_XML_E_INVALID_STANDALONE = 14070,\n        /// <summary>\n        /// Manifest Parse Error : The standalone attribute cannot be used in external entities.\n        /// </summary>\n        ERROR_SXS_XML_E_UNEXPECTED_STANDALONE = 14071,\n        /// <summary>\n        /// Manifest Parse Error : Invalid version number.\n        /// </summary>\n        ERROR_SXS_XML_E_INVALID_VERSION = 14072,\n        /// <summary>\n        /// Manifest Parse Error : Missing equals sign between attribute and attribute value.\n        /// </summary>\n        ERROR_SXS_XML_E_MISSINGEQUALS = 14073,\n        /// <summary>\n        /// Assembly Protection Error : Unable to recover the specified assembly.\n        /// </summary>\n        ERROR_SXS_PROTECTION_RECOVERY_FAILED = 14074,\n        /// <summary>\n        /// Assembly Protection Error : The public key for an assembly was too short to be allowed.\n        /// </summary>\n        ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_Int16 = 14075,\n        /// <summary>\n        /// Assembly Protection Error : The catalog for an assembly is not valid, or does not match the assembly's manifest.\n        /// </summary>\n        ERROR_SXS_PROTECTION_CATALOG_NOT_VALID = 14076,\n        /// <summary>\n        /// An HRESULT could not be translated to a corresponding Win32 error code.\n        /// </summary>\n        ERROR_SXS_UNTRANSLATABLE_HRESULT = 14077,\n        /// <summary>\n        /// Assembly Protection Error : The catalog for an assembly is missing.\n        /// </summary>\n        ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING = 14078,\n        /// <summary>\n        /// The supplied assembly identity is missing one or more attributes which must be present in this context.\n        /// </summary>\n        ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE = 14079,\n        /// <summary>\n        /// The supplied assembly identity has one or more attribute names that contain characters not permitted in XML names.\n        /// </summary>\n        ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME = 14080,\n        /// <summary>\n        /// The specified quick mode policy already exists.\n        /// </summary>\n        ERROR_IPSEC_QM_POLICY_EXISTS = 13000,\n        /// <summary>\n        /// The specified quick mode policy was not found.\n        /// </summary>\n        ERROR_IPSEC_QM_POLICY_NOT_FOUND = 13001,\n        /// <summary>\n        /// The specified quick mode policy is being used.\n        /// </summary>\n        ERROR_IPSEC_QM_POLICY_IN_USE = 13002,\n        /// <summary>\n        /// The specified main mode policy already exists.\n        /// </summary>\n        ERROR_IPSEC_MM_POLICY_EXISTS = 13003,\n        /// <summary>\n        /// The specified main mode policy was not found\n        /// </summary>\n        ERROR_IPSEC_MM_POLICY_NOT_FOUND = 13004,\n        /// <summary>\n        /// The specified main mode policy is being used.\n        /// </summary>\n        ERROR_IPSEC_MM_POLICY_IN_USE = 13005,\n        /// <summary>\n        /// The specified main mode filter already exists.\n        /// </summary>\n        ERROR_IPSEC_MM_FILTER_EXISTS = 13006,\n        /// <summary>\n        /// The specified main mode filter was not found.\n        /// </summary>\n        ERROR_IPSEC_MM_FILTER_NOT_FOUND = 13007,\n        /// <summary>\n        /// The specified transport mode filter already exists.\n        /// </summary>\n        ERROR_IPSEC_TRANSPORT_FILTER_EXISTS = 13008,\n        /// <summary>\n        /// The specified transport mode filter does not exist.\n        /// </summary>\n        ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND = 13009,\n        /// <summary>\n        /// The specified main mode authentication list exists.\n        /// </summary>\n        ERROR_IPSEC_MM_AUTH_EXISTS = 13010,\n        /// <summary>\n        /// The specified main mode authentication list was not found.\n        /// </summary>\n        ERROR_IPSEC_MM_AUTH_NOT_FOUND = 13011,\n        /// <summary>\n        /// The specified quick mode policy is being used.\n        /// </summary>\n        ERROR_IPSEC_MM_AUTH_IN_USE = 13012,\n        /// <summary>\n        /// The specified main mode policy was not found.\n        /// </summary>\n        ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND = 13013,\n        /// <summary>\n        /// The specified quick mode policy was not found\n        /// </summary>\n        ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND = 13014,\n        /// <summary>\n        /// The manifest file contains one or more syntax errors.\n        /// </summary>\n        ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND = 13015,\n        /// <summary>\n        /// The application attempted to activate a disabled activation context.\n        /// </summary>\n        ERROR_IPSEC_TUNNEL_FILTER_EXISTS = 13016,\n        /// <summary>\n        /// The requested lookup key was not found in any active activation context.\n        /// </summary>\n        ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND = 13017,\n        /// <summary>\n        /// The Main Mode filter is pending deletion.\n        /// </summary>\n        ERROR_IPSEC_MM_FILTER_PENDING_DELETION = 13018,\n        /// <summary>\n        /// The transport filter is pending deletion.\n        /// </summary>\n        ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION = 13019,\n        /// <summary>\n        /// The tunnel filter is pending deletion.\n        /// </summary>\n        ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION = 13020,\n        /// <summary>\n        /// The Main Mode policy is pending deletion.\n        /// </summary>\n        ERROR_IPSEC_MM_POLICY_PENDING_DELETION = 13021,\n        /// <summary>\n        /// The Main Mode authentication bundle is pending deletion.\n        /// </summary>\n        ERROR_IPSEC_MM_AUTH_PENDING_DELETION = 13022,\n        /// <summary>\n        /// The Quick Mode policy is pending deletion.\n        /// </summary>\n        ERROR_IPSEC_QM_POLICY_PENDING_DELETION = 13023,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        WARNING_IPSEC_MM_POLICY_PRUNED = 13024,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        WARNING_IPSEC_QM_POLICY_PRUNED = 13025,\n        /// <summary>\n        /// ERROR_IPSEC_IKE_NEG_STATUS_BEGIN\n        /// </summary>\n        ERROR_IPSEC_IKE_NEG_STATUS_BEGIN = 13800,\n        /// <summary>\n        /// IKE authentication credentials are unacceptable\n        /// </summary>\n        ERROR_IPSEC_IKE_AUTH_FAIL = 13801,\n        /// <summary>\n        /// IKE security attributes are unacceptable\n        /// </summary>\n        ERROR_IPSEC_IKE_ATTRIB_FAIL = 13802,\n        /// <summary>\n        /// IKE Negotiation in progress\n        /// </summary>\n        ERROR_IPSEC_IKE_NEGOTIATION_PENDING = 13803,\n        /// <summary>\n        /// General processing error\n        /// </summary>\n        ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR = 13804,\n        /// <summary>\n        /// Negotiation timed out\n        /// </summary>\n        ERROR_IPSEC_IKE_TIMED_OUT = 13805,\n        /// <summary>\n        /// IKE failed to find valid machine certificate\n        /// </summary>\n        ERROR_IPSEC_IKE_NO_CERT = 13806,\n        /// <summary>\n        /// IKE SA deleted by peer before establishment completed\n        /// </summary>\n        ERROR_IPSEC_IKE_SA_DELETED = 13807,\n        /// <summary>\n        /// IKE SA deleted before establishment completed\n        /// </summary>\n        ERROR_IPSEC_IKE_SA_REAPED = 13808,\n        /// <summary>\n        /// Negotiation request sat in Queue too long\n        /// </summary>\n        ERROR_IPSEC_IKE_MM_ACQUIRE_DROP = 13809,\n        /// <summary>\n        /// Negotiation request sat in Queue too long\n        /// </summary>\n        ERROR_IPSEC_IKE_QM_ACQUIRE_DROP = 13810,\n        /// <summary>\n        /// Negotiation request sat in Queue too long\n        /// </summary>\n        ERROR_IPSEC_IKE_QUEUE_DROP_MM = 13811,\n        /// <summary>\n        /// Negotiation request sat in Queue too long\n        /// </summary>\n        ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM = 13812,\n        /// <summary>\n        /// No response from peer\n        /// </summary>\n        ERROR_IPSEC_IKE_DROP_NO_RESPONSE = 13813,\n        /// <summary>\n        /// Negotiation took too long\n        /// </summary>\n        ERROR_IPSEC_IKE_MM_DELAY_DROP = 13814,\n        /// <summary>\n        /// Negotiation took too long\n        /// </summary>\n        ERROR_IPSEC_IKE_QM_DELAY_DROP = 13815,\n        /// <summary>\n        /// Unknown error occurred\n        /// </summary>\n        ERROR_IPSEC_IKE_ERROR = 13816,\n        /// <summary>\n        /// Certificate Revocation Check failed\n        /// </summary>\n        ERROR_IPSEC_IKE_CRL_FAILED = 13817,\n        /// <summary>\n        /// Invalid certificate key usage\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_KEY_USAGE = 13818,\n        /// <summary>\n        /// Invalid certificate type\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_CERT_TYPE = 13819,\n        /// <summary>\n        /// No private key associated with machine certificate\n        /// </summary>\n        ERROR_IPSEC_IKE_NO_PRIVATE_KEY = 13820,\n        /// <summary>\n        /// Failure in Diffie-Helman computation\n        /// </summary>\n        ERROR_IPSEC_IKE_DH_FAIL = 13822,\n        /// <summary>\n        /// Invalid header\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_HEADER = 13824,\n        /// <summary>\n        /// No policy configured\n        /// </summary>\n        ERROR_IPSEC_IKE_NO_POLICY = 13825,\n        /// <summary>\n        /// Failed to verify signature\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_SIGNATURE = 13826,\n        /// <summary>\n        /// Failed to authenticate using kerberos\n        /// </summary>\n        ERROR_IPSEC_IKE_KERBEROS_ERROR = 13827,\n        /// <summary>\n        /// Peer's certificate did not have a public key\n        /// </summary>\n        ERROR_IPSEC_IKE_NO_PUBLIC_KEY = 13828,\n        /// <summary>\n        /// Error processing error payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR = 13829,\n        /// <summary>\n        /// Error processing SA payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_SA = 13830,\n        /// <summary>\n        /// Error processing Proposal payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_PROP = 13831,\n        /// <summary>\n        /// Error processing Transform payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_TRANS = 13832,\n        /// <summary>\n        /// Error processing KE payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_KE = 13833,\n        /// <summary>\n        /// Error processing ID payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_ID = 13834,\n        /// <summary>\n        /// Error processing Cert payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_CERT = 13835,\n        /// <summary>\n        /// Error processing Certificate Request payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ = 13836,\n        /// <summary>\n        /// Error processing Hash payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_HASH = 13837,\n        /// <summary>\n        /// Error processing Signature payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_SIG = 13838,\n        /// <summary>\n        /// Error processing Nonce payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_NONCE = 13839,\n        /// <summary>\n        /// Error processing Notify payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY = 13840,\n        /// <summary>\n        /// Error processing Delete Payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_DELETE = 13841,\n        /// <summary>\n        /// Error processing VendorId payload\n        /// </summary>\n        ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR = 13842,\n        /// <summary>\n        /// Invalid payload received\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_PAYLOAD = 13843,\n        /// <summary>\n        /// Soft SA loaded\n        /// </summary>\n        ERROR_IPSEC_IKE_LOAD_SOFT_SA = 13844,\n        /// <summary>\n        /// Soft SA torn down\n        /// </summary>\n        ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN = 13845,\n        /// <summary>\n        /// Invalid cookie received.\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_COOKIE = 13846,\n        /// <summary>\n        /// Peer failed to send valid machine certificate\n        /// </summary>\n        ERROR_IPSEC_IKE_NO_PEER_CERT = 13847,\n        /// <summary>\n        /// Certification Revocation check of peer's certificate failed\n        /// </summary>\n        ERROR_IPSEC_IKE_PEER_CRL_FAILED = 13848,\n        /// <summary>\n        /// New policy invalidated SAs formed with old policy\n        /// </summary>\n        ERROR_IPSEC_IKE_POLICY_CHANGE = 13849,\n        /// <summary>\n        /// There is no available Main Mode IKE policy.\n        /// </summary>\n        ERROR_IPSEC_IKE_NO_MM_POLICY = 13850,\n        /// <summary>\n        /// Failed to enabled TCB privilege.\n        /// </summary>\n        ERROR_IPSEC_IKE_NOTCBPRIV = 13851,\n        /// <summary>\n        /// Failed to load SECURITY.DLL.\n        /// </summary>\n        ERROR_IPSEC_IKE_SECLOADFAIL = 13852,\n        /// <summary>\n        /// Failed to obtain security function table dispatch address from SSPI.\n        /// </summary>\n        ERROR_IPSEC_IKE_FAILSSPINIT = 13853,\n        /// <summary>\n        /// Failed to query Kerberos package to obtain max token size.\n        /// </summary>\n        ERROR_IPSEC_IKE_FAILQUERYSSP = 13854,\n        /// <summary>\n        /// Failed to obtain Kerberos server credentials for ISAKMP/ERROR_IPSEC_IKE service.  Kerberos authentication will not function.  The most likely reason for this is lack of domain membership.  This is normal if your computer is a member of a workgroup.\n        /// </summary>\n        ERROR_IPSEC_IKE_SRVACQFAIL = 13855,\n        /// <summary>\n        /// Failed to determine SSPI principal name for ISAKMP/ERROR_IPSEC_IKE service (QueryCredentialsAttributes).\n        /// </summary>\n        ERROR_IPSEC_IKE_SRVQUERYCRED = 13856,\n        /// <summary>\n        /// Failed to obtain new SPI for the inbound SA from Ipsec driver.  The most common cause for this is that the driver does not have the correct filter.  Check your policy to verify the filters.\n        /// </summary>\n        ERROR_IPSEC_IKE_GETSPIFAIL = 13857,\n        /// <summary>\n        /// Given filter is invalid\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_FILTER = 13858,\n        /// <summary>\n        /// Memory allocation failed.\n        /// </summary>\n        ERROR_IPSEC_IKE_OUT_OF_MEMORY = 13859,\n        /// <summary>\n        /// Failed to add Security Association to IPSec Driver.  The most common cause for this is if the IKE negotiation took too long to complete.  If the problem persists, reduce the load on the faulting machine.\n        /// </summary>\n        ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED = 13860,\n        /// <summary>\n        /// Invalid policy\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_POLICY = 13861,\n        /// <summary>\n        /// Invalid DOI\n        /// </summary>\n        ERROR_IPSEC_IKE_UNKNOWN_DOI = 13862,\n        /// <summary>\n        /// Invalid situation\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_SITUATION = 13863,\n        /// <summary>\n        /// Diffie-Hellman failure\n        /// </summary>\n        ERROR_IPSEC_IKE_DH_FAILURE = 13864,\n        /// <summary>\n        /// Invalid Diffie-Hellman group\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_GROUP = 13865,\n        /// <summary>\n        /// Error encrypting payload\n        /// </summary>\n        ERROR_IPSEC_IKE_ENCRYPT = 13866,\n        /// <summary>\n        /// Error decrypting payload\n        /// </summary>\n        ERROR_IPSEC_IKE_DECRYPT = 13867,\n        /// <summary>\n        /// Policy match error\n        /// </summary>\n        ERROR_IPSEC_IKE_POLICY_MATCH = 13868,\n        /// <summary>\n        /// Unsupported ID\n        /// </summary>\n        ERROR_IPSEC_IKE_UNSUPPORTED_ID = 13869,\n        /// <summary>\n        /// Hash verification failed\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_HASH = 13870,\n        /// <summary>\n        /// Invalid hash algorithm\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_HASH_ALG = 13871,\n        /// <summary>\n        /// Invalid hash size\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_HASH_SIZE = 13872,\n        /// <summary>\n        /// Invalid encryption algorithm\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG = 13873,\n        /// <summary>\n        /// Invalid authentication algorithm\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_AUTH_ALG = 13874,\n        /// <summary>\n        /// Invalid certificate signature\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_SIG = 13875,\n        /// <summary>\n        /// Load failed\n        /// </summary>\n        ERROR_IPSEC_IKE_LOAD_FAILED = 13876,\n        /// <summary>\n        /// Deleted via RPC call\n        /// </summary>\n        ERROR_IPSEC_IKE_RPC_DELETE = 13877,\n        /// <summary>\n        /// Temporary state created to perform reinit. This is not a real failure.\n        /// </summary>\n        ERROR_IPSEC_IKE_BENIGN_REINIT = 13878,\n        /// <summary>\n        /// The lifetime value received in the Responder Lifetime Notify is below the Windows 2000 configured minimum value.  Please fix the policy on the peer machine.\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY = 13879,\n        /// <summary>\n        /// Key length in certificate is too small for configured security requirements.\n        /// </summary>\n        ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881,\n        /// <summary>\n        /// Max number of established MM SAs to peer exceeded.\n        /// </summary>\n        ERROR_IPSEC_IKE_MM_LIMIT = 13882,\n        /// <summary>\n        /// IKE received a policy that disables negotiation.\n        /// </summary>\n        ERROR_IPSEC_IKE_NEGOTIATION_DISABLED = 13883,\n        /// <summary>\n        /// ERROR_IPSEC_IKE_NEG_STATUS_END\n        /// </summary>\n        ERROR_IPSEC_IKE_NEG_STATUS_END = 13884,\n    }\n\n    /// <summary>\n    /// COM error codes. Negative value is failure, positive is success.\n    /// </summary>\n    internal enum ResultCom\n    {\n        /// <summary>\n        /// Not implemented\n        /// </summary>\n        E_NOTIMPL = (int)(0x80000001 - 0x100000000),\n        /// <summary>\n        /// Ran out of memory\n        /// </summary>\n        E_OUTOFMEMORY = (int)(0x80000002 - 0x100000000),\n        /// <summary>\n        /// One or more arguments are invalid\n        /// </summary>\n        E_INVALIDARG = (int)(0x80000003 - 0x100000000),\n        /// <summary>\n        /// No such interface supported\n        /// </summary>\n        E_NOINTERFACE = (int)(0x80000004 - 0x100000000),\n        /// <summary>\n        /// Invalid pointer\n        /// </summary>\n        E_POINTER = (int)(0x80000005 - 0x100000000),\n        /// <summary>\n        /// Invalid handle\n        /// </summary>\n        E_HANDLE = (int)(0x80000006 - 0x100000000),\n        /// <summary>\n        /// Operation aborted\n        /// </summary>\n        E_ABORT = (int)(0x80000007 - 0x100000000),\n        /// <summary>\n        /// Unspecified error\n        /// </summary>\n        E_FAIL = (int)(0x80000008 - 0x100000000),\n        /// <summary>\n        /// General access denied error\n        /// </summary>\n        E_ACCESSDENIED = (int)(0x80000009 - 0x100000000),\n        /// <summary>\n        /// The data necessary to complete this operation is not yet available.\n        /// </summary>\n        E_PENDING = (int)(0x8000000A - 0x100000000),\n        /// <summary>\n        /// Thread local storage failure\n        /// </summary>\n        CO_E_INIT_TLS = (int)(0x80004006 - 0x100000000),\n        /// <summary>\n        /// Get shared memory allocator failure\n        /// </summary>\n        CO_E_INIT_SHARED_ALLOCATOR = (int)(0x80004007 - 0x100000000),\n        /// <summary>\n        /// Get memory allocator failure\n        /// </summary>\n        CO_E_INIT_MEMORY_ALLOCATOR = (int)(0x80004008 - 0x100000000),\n        /// <summary>\n        /// Unable to initialize class cache\n        /// </summary>\n        CO_E_INIT_CLASS_CACHE = (int)(0x80004009 - 0x100000000),\n        /// <summary>\n        /// Unable to initialize RPC services\n        /// </summary>\n        CO_E_INIT_RPC_CHANNEL = (int)(0x8000400A - 0x100000000),\n        /// <summary>\n        /// Cannot set thread local storage channel control\n        /// </summary>\n        CO_E_INIT_TLS_SET_CHANNEL_CONTROL = (int)(0x8000400B - 0x100000000),\n        /// <summary>\n        /// Could not allocate thread local storage channel control\n        /// </summary>\n        CO_E_INIT_TLS_CHANNEL_CONTROL = (int)(0x8000400C - 0x100000000),\n        /// <summary>\n        /// The user supplied memory allocator is unacceptable\n        /// </summary>\n        CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = (int)(0x8000400D - 0x100000000),\n        /// <summary>\n        /// The OLE service mutex already exists\n        /// </summary>\n        CO_E_INIT_SCM_MUTEX_EXISTS = (int)(0x8000400E - 0x100000000),\n        /// <summary>\n        /// The OLE service file mapping already exists\n        /// </summary>\n        CO_E_INIT_SCM_FILE_MAPPING_EXISTS = (int)(0x8000400F - 0x100000000),\n        /// <summary>\n        /// Unable to map view of file for OLE service\n        /// </summary>\n        CO_E_INIT_SCM_MAP_VIEW_OF_FILE = (int)(0x80004010 - 0x100000000),\n        /// <summary>\n        /// Failure attempting to launch OLE service\n        /// </summary>\n        CO_E_INIT_SCM_EXEC_FAILURE = (int)(0x80004011 - 0x100000000),\n        /// <summary>\n        /// There was an attempt to call CoInitialize a second time while single threaded\n        /// </summary>\n        CO_E_INIT_ONLY_SINGLE_THREADED = (int)(0x80004012 - 0x100000000),\n        /// <summary>\n        /// A Remote activation was necessary but was not allowed\n        /// </summary>\n        CO_E_CANT_REMOTE = (int)(0x80004013 - 0x100000000),\n        /// <summary>\n        /// A Remote activation was necessary but the server name provided was invalid\n        /// </summary>\n        CO_E_BAD_SERVER_NAME = (int)(0x80004014 - 0x100000000),\n        /// <summary>\n        /// The class is configured to run as a security id different from the caller\n        /// </summary>\n        CO_E_WRONG_SERVER_IDENTITY = (int)(0x80004015 - 0x100000000),\n        /// <summary>\n        /// Use of Ole1 services requiring DDE windows is disabled\n        /// </summary>\n        CO_E_OLE1DDE_DISABLED = (int)(0x80004016 - 0x100000000),\n        /// <summary>\n        /// A RunAs specification must be <domain name>\\<user name> or simply <user name>\n        /// </summary>\n        CO_E_RUNAS_SYNTAX = (int)(0x80004017 - 0x100000000),\n        /// <summary>\n        /// The server process could not be started.  The pathname may be incorrect.\n        /// </summary>\n        CO_E_CREATEPROCESS_FAILURE = (int)(0x80004018 - 0x100000000),\n        /// <summary>\n        /// The server process could not be started as the configured identity.  The pathname may be incorrect or unavailable.\n        /// </summary>\n        CO_E_RUNAS_CREATEPROCESS_FAILURE = (int)(0x80004019 - 0x100000000),\n        /// <summary>\n        /// The server process could not be started because the configured identity is incorrect.  Check the username and password.\n        /// </summary>\n        CO_E_RUNAS_LOGON_FAILURE = (int)(0x8000401A - 0x100000000),\n        /// <summary>\n        /// The client is not allowed to launch this server.\n        /// </summary>\n        CO_E_LAUNCH_PERMSSION_DENIED = (int)(0x8000401B - 0x100000000),\n        /// <summary>\n        /// The service providing this server could not be started.\n        /// </summary>\n        CO_E_START_SERVICE_FAILURE = (int)(0x8000401C - 0x100000000),\n        /// <summary>\n        /// This computer was unable to communicate with the computer providing the server.\n        /// </summary>\n        CO_E_REMOTE_COMMUNICATION_FAILURE = (int)(0x8000401D - 0x100000000),\n        /// <summary>\n        /// The server did not respond after being launched.\n        /// </summary>\n        CO_E_SERVER_START_TIMEOUT = (int)(0x8000401E - 0x100000000),\n        /// <summary>\n        /// The registration information for this server is inconsistent or incomplete.\n        /// </summary>\n        CO_E_CLSREG_INCONSISTENT = (int)(0x8000401F - 0x100000000),\n        /// <summary>\n        /// The registration information for this interface is inconsistent or incomplete.\n        /// </summary>\n        CO_E_IIDREG_INCONSISTENT = (int)(0x80004020 - 0x100000000),\n        /// <summary>\n        /// The operation attempted is not supported.\n        /// </summary>\n        CO_E_NOT_SUPPORTED = (int)(0x80004021 - 0x100000000),\n        /// <summary>\n        /// A dll must be loaded.\n        /// </summary>\n        CO_E_RELOAD_DLL = (int)(0x80004022 - 0x100000000),\n        /// <summary>\n        /// A Microsoft Software Installer error was encountered.\n        /// </summary>\n        CO_E_MSI_ERROR = (int)(0x80004023 - 0x100000000),\n        /// <summary>\n        /// The specified activation could not occur in the client context as specified.\n        /// </summary>\n        CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT = (int)(0x80004024 - 0x100000000),\n        /// <summary>\n        /// Activations on the server are paused.\n        /// </summary>\n        CO_E_SERVER_PAUSED = (int)(0x80004025 - 0x100000000),\n        /// <summary>\n        /// Activations on the server are not paused.\n        /// </summary>\n        CO_E_SERVER_NOT_PAUSED = (int)(0x80004026 - 0x100000000),\n        /// <summary>\n        /// The component or application containing the component has been disabled.\n        /// </summary>\n        CO_E_CLASS_DISABLED = (int)(0x80004027 - 0x100000000),\n        /// <summary>\n        /// The common language runtime is not available\n        /// </summary>\n        CO_E_CLRNOTAVAILABLE = (int)(0x80004028 - 0x100000000),\n        /// <summary>\n        /// The thread-pool rejected the submitted asynchronous work.\n        /// </summary>\n        CO_E_ASYNC_WORK_REJECTED = (int)(0x80004029 - 0x100000000),\n        /// <summary>\n        /// The server started, but did not finish initializing in a timely fashion.\n        /// </summary>\n        CO_E_SERVER_INIT_TIMEOUT = (int)(0x8000402A - 0x100000000),\n        /// <summary>\n        /// Unable to complete the call since there is no COM+ security context inside IObjectControl.Activate.\n        /// </summary>\n        CO_E_NO_SECCTX_IN_ACTIVATE = (int)(0x8000402B - 0x100000000),\n        /// <summary>\n        /// The provided tracker configuration is invalid\n        /// </summary>\n        CO_E_TRACKER_CONFIG = (int)(0x80004030 - 0x100000000),\n        /// <summary>\n        /// The provided thread pool configuration is invalid\n        /// </summary>\n        CO_E_THREADPOOL_CONFIG = (int)(0x80004031 - 0x100000000),\n        /// <summary>\n        /// The provided side-by-side configuration is invalid\n        /// </summary>\n        CO_E_SXS_CONFIG = (int)(0x80004032 - 0x100000000),\n        /// <summary>\n        /// The server principal name (SPN) obtained during security negotiation is malformed.\n        /// </summary>\n        CO_E_MALFORMED_SPN = (int)(0x80004033 - 0x100000000),\n        /// <summary>\n        /// The operation completed successfully.\n        /// </summary>\n        S_OK = 0x00000000,\n        /// <summary>\n        /// Incorrect function.\n        /// </summary>\n        S_FALSE = 0x00000001,\n        /// <summary>\n        /// Invalid OLEVERB structure\n        /// </summary>\n        OLE_E_FIRST = (int)(0x80040000 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        OLE_E_LAST = (int)(0x800400FF - 0x100000000),\n        /// <summary>\n        /// Use the registry database to provide the requested information\n        /// </summary>\n        OLE_S_FIRST = 0x00040000,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        OLE_S_LAST = 0x000400FF,\n        /// <summary>\n        /// Invalid OLEVERB structure\n        /// </summary>\n        OLE_E_OLEVERB = (int)(0x80040000 - 0x100000000),\n        /// <summary>\n        /// Invalid advise flags\n        /// </summary>\n        OLE_E_ADVF = (int)(0x80040001 - 0x100000000),\n        /// <summary>\n        /// Can't enumerate any more, because the associated data is missing\n        /// </summary>\n        OLE_E_ENUM_NOMORE = (int)(0x80040002 - 0x100000000),\n        /// <summary>\n        /// This implementation doesn't take advises\n        /// </summary>\n        OLE_E_ADVISENOTSUPPORTED = (int)(0x80040003 - 0x100000000),\n        /// <summary>\n        /// There is no connection for this connection ID\n        /// </summary>\n        OLE_E_NOCONNECTION = (int)(0x80040004 - 0x100000000),\n        /// <summary>\n        /// Need to run the object to perform this operation\n        /// </summary>\n        OLE_E_NOTRUNNING = (int)(0x80040005 - 0x100000000),\n        /// <summary>\n        /// There is no cache to operate on\n        /// </summary>\n        OLE_E_NOCACHE = (int)(0x80040006 - 0x100000000),\n        /// <summary>\n        /// Uninitialized object\n        /// </summary>\n        OLE_E_BLANK = (int)(0x80040007 - 0x100000000),\n        /// <summary>\n        /// Linked object's source class has changed\n        /// </summary>\n        OLE_E_CLASSDIFF = (int)(0x80040008 - 0x100000000),\n        /// <summary>\n        /// Not able to get the moniker of the object\n        /// </summary>\n        OLE_E_CANT_GETMONIKER = (int)(0x80040009 - 0x100000000),\n        /// <summary>\n        /// Not able to bind to the source\n        /// </summary>\n        OLE_E_CANT_BINDTOSOURCE = (int)(0x8004000A - 0x100000000),\n        /// <summary>\n        /// Object is static, operation not allowed\n        /// </summary>\n        OLE_E_STATIC = (int)(0x8004000B - 0x100000000),\n        /// <summary>\n        /// User canceled out of save dialog\n        /// </summary>\n        OLE_E_PROMPTSAVECANCELLED = (int)(0x8004000C - 0x100000000),\n        /// <summary>\n        /// Invalid rectangle\n        /// </summary>\n        OLE_E_INVALIDRECT = (int)(0x8004000D - 0x100000000),\n        /// <summary>\n        /// compobj.dll is too old for the ole2.dll initialized\n        /// </summary>\n        OLE_E_WRONGCOMPOBJ = (int)(0x8004000E - 0x100000000),\n        /// <summary>\n        /// Invalid window handle\n        /// </summary>\n        OLE_E_INVALIDHWND = (int)(0x8004000F - 0x100000000),\n        /// <summary>\n        /// Object is not in any of the inplace active states\n        /// </summary>\n        OLE_E_NOT_INPLACEACTIVE = (int)(0x80040010 - 0x100000000),\n        /// <summary>\n        /// Not able to convert object\n        /// </summary>\n        OLE_E_CANTCONVERT = (int)(0x80040011 - 0x100000000),\n        /// <summary>\n        /// Not able to perform the operation because object is not given storage yet\n        /// </summary>\n        OLE_E_NOSTORAGE = (int)(0x80040012 - 0x100000000),\n        /// <summary>\n        /// Invalid FORMATETC structure\n        /// </summary>\n        DV_E_FORMATETC = (int)(0x80040064 - 0x100000000),\n        /// <summary>\n        /// Invalid DVTARGETDEVICE structure\n        /// </summary>\n        DV_E_DVTARGETDEVICE = (int)(0x80040065 - 0x100000000),\n        /// <summary>\n        /// Invalid STDGMEDIUM structure\n        /// </summary>\n        DV_E_STGMEDIUM = (int)(0x80040066 - 0x100000000),\n        /// <summary>\n        /// Invalid STATDATA structure\n        /// </summary>\n        DV_E_STATDATA = (int)(0x80040067 - 0x100000000),\n        /// <summary>\n        /// Invalid lindex\n        /// </summary>\n        DV_E_LINDEX = (int)(0x80040068 - 0x100000000),\n        /// <summary>\n        /// Invalid tymed\n        /// </summary>\n        DV_E_TYMED = (int)(0x80040069 - 0x100000000),\n        /// <summary>\n        /// Invalid clipboard format\n        /// </summary>\n        DV_E_CLIPFORMAT = (int)(0x8004006A - 0x100000000),\n        /// <summary>\n        /// Invalid aspect(s)\n        /// </summary>\n        DV_E_DVASPECT = (int)(0x8004006B - 0x100000000),\n        /// <summary>\n        /// tdSize parameter of the DVTARGETDEVICE structure is invalid\n        /// </summary>\n        DV_E_DVTARGETDEVICE_SIZE = (int)(0x8004006C - 0x100000000),\n        /// <summary>\n        /// Object doesn't support IViewObject interface\n        /// </summary>\n        DV_E_NOIVIEWOBJECT = (int)(0x8004006D - 0x100000000),\n        /// <summary>\n        /// Trying to revoke a drop target that has not been registered\n        /// </summary>\n        DRAGDROP_E_FIRST = (int)(0x80040100 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DRAGDROP_E_LAST = (int)(0x8004010F - 0x100000000),\n        /// <summary>\n        /// Successful drop took place\n        /// </summary>\n        DRAGDROP_S_FIRST = 0x00040100,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DRAGDROP_S_LAST = 0x0004010F,\n        /// <summary>\n        /// Trying to revoke a drop target that has not been registered\n        /// </summary>\n        DRAGDROP_E_NOTREGISTERED = (int)(0x80040100 - 0x100000000),\n        /// <summary>\n        /// This window has already been registered as a drop target\n        /// </summary>\n        DRAGDROP_E_ALREADYREGISTERED = (int)(0x80040101 - 0x100000000),\n        /// <summary>\n        /// Invalid window handle\n        /// </summary>\n        DRAGDROP_E_INVALIDHWND = (int)(0x80040102 - 0x100000000),\n        /// <summary>\n        /// Class does not support aggregation (or class object is remote)\n        /// </summary>\n        CLASSFACTORY_E_FIRST = (int)(0x80040110 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CLASSFACTORY_E_LAST = (int)(0x8004011F - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CLASSFACTORY_S_FIRST = 0x00040110,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CLASSFACTORY_S_LAST = 0x0004011F,\n        /// <summary>\n        /// Class does not support aggregation (or class object is remote)\n        /// </summary>\n        CLASS_E_NOAGGREGATION = (int)(0x80040110 - 0x100000000),\n        /// <summary>\n        /// ClassFactory cannot supply requested class\n        /// </summary>\n        CLASS_E_CLASSNOTAVAILABLE = (int)(0x80040111 - 0x100000000),\n        /// <summary>\n        /// Class is not licensed for use\n        /// </summary>\n        CLASS_E_NOTLICENSED = (int)(0x80040112 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        MARSHAL_E_FIRST = (int)(0x80040120 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        MARSHAL_E_LAST = (int)(0x8004012F - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        MARSHAL_S_FIRST = 0x00040120,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        MARSHAL_S_LAST = 0x0004012F,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DATA_E_FIRST = (int)(0x80040130 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DATA_E_LAST = (int)(0x8004013F - 0x100000000),\n        /// <summary>\n        /// Data has same FORMATETC\n        /// </summary>\n        DATA_S_FIRST = 0x00040130,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        DATA_S_LAST = 0x0004013F,\n        /// <summary>\n        /// Error drawing view\n        /// </summary>\n        VIEW_E_FIRST = (int)(0x80040140 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        VIEW_E_LAST = (int)(0x8004014F - 0x100000000),\n        /// <summary>\n        /// View is already frozen\n        /// </summary>\n        VIEW_S_FIRST = 0x00040140,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        VIEW_S_LAST = 0x0004014F,\n        /// <summary>\n        /// Error drawing view\n        /// </summary>\n        VIEW_E_DRAW = (int)(0x80040140 - 0x100000000),\n        /// <summary>\n        /// Could not read key from registry\n        /// </summary>\n        REGDB_E_FIRST = (int)(0x80040150 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        REGDB_E_LAST = (int)(0x8004015F - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        REGDB_S_FIRST = 0x00040150,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        REGDB_S_LAST = 0x0004015F,\n        /// <summary>\n        /// Could not read key from registry\n        /// </summary>\n        REGDB_E_READREGDB = (int)(0x80040150 - 0x100000000),\n        /// <summary>\n        /// Could not write key to registry\n        /// </summary>\n        REGDB_E_WRITEREGDB = (int)(0x80040151 - 0x100000000),\n        /// <summary>\n        /// Could not find the key in the registry\n        /// </summary>\n        REGDB_E_KEYMISSING = (int)(0x80040152 - 0x100000000),\n        /// <summary>\n        /// Invalid value for registry\n        /// </summary>\n        REGDB_E_INVALIDVALUE = (int)(0x80040153 - 0x100000000),\n        /// <summary>\n        /// Class not registered\n        /// </summary>\n        REGDB_E_CLASSNOTREG = (int)(0x80040154 - 0x100000000),\n        /// <summary>\n        /// Interface not registered\n        /// </summary>\n        REGDB_E_IIDNOTREG = (int)(0x80040155 - 0x100000000),\n        /// <summary>\n        /// Threading model entry is not valid\n        /// </summary>\n        REGDB_E_BADTHREADINGMODEL = (int)(0x80040156 - 0x100000000),\n        /// <summary>\n        /// CATID does not exist\n        /// </summary>\n        CAT_E_FIRST = (int)(0x80040160 - 0x100000000),\n        /// <summary>\n        /// Description not found\n        /// </summary>\n        CAT_E_LAST = (int)(0x80040161 - 0x100000000),\n        /// <summary>\n        /// CATID does not exist\n        /// </summary>\n        CAT_E_CATIDNOEXIST = (int)(0x80040160 - 0x100000000),\n        /// <summary>\n        /// Description not found\n        /// </summary>\n        CAT_E_NODESCRIPTION = (int)(0x80040161 - 0x100000000),\n        /// <summary>\n        /// No package in the software installation data in the Active Directory meets this criteria.\n        /// </summary>\n        CS_E_FIRST = (int)(0x80040164 - 0x100000000),\n        /// <summary>\n        /// An error occurred in the software installation data in the Active Directory.\n        /// </summary>\n        CS_E_LAST = (int)(0x8004016F - 0x100000000),\n        /// <summary>\n        /// No package in the software installation data in the Active Directory meets this criteria.\n        /// </summary>\n        CS_E_PACKAGE_NOTFOUND = (int)(0x80040164 - 0x100000000),\n        /// <summary>\n        /// Deleting this will break the referential integrity of the software installation data in the Active Directory.\n        /// </summary>\n        CS_E_NOT_DELETABLE = (int)(0x80040165 - 0x100000000),\n        /// <summary>\n        /// The CLSID was not found in the software installation data in the Active Directory.\n        /// </summary>\n        CS_E_CLASS_NOTFOUND = (int)(0x80040166 - 0x100000000),\n        /// <summary>\n        /// The software installation data in the Active Directory is corrupt.\n        /// </summary>\n        CS_E_INVALID_VERSION = (int)(0x80040167 - 0x100000000),\n        /// <summary>\n        /// There is no software installation data in the Active Directory.\n        /// </summary>\n        CS_E_NO_CLASSSTORE = (int)(0x80040168 - 0x100000000),\n        /// <summary>\n        /// There is no software installation data object in the Active Directory.\n        /// </summary>\n        CS_E_OBJECT_NOTFOUND = (int)(0x80040169 - 0x100000000),\n        /// <summary>\n        /// The software installation data object in the Active Directory already exists.\n        /// </summary>\n        CS_E_OBJECT_ALREADY_EXISTS = (int)(0x8004016A - 0x100000000),\n        /// <summary>\n        /// The path to the software installation data in the Active Directory is not correct.\n        /// </summary>\n        CS_E_INVALID_PATH = (int)(0x8004016B - 0x100000000),\n        /// <summary>\n        /// A network error interrupted the operation.\n        /// </summary>\n        CS_E_NETWORK_ERROR = (int)(0x8004016C - 0x100000000),\n        /// <summary>\n        /// The size of this object exceeds the maximum size set by the Administrator.\n        /// </summary>\n        CS_E_ADMIN_LIMIT_EXCEEDED = (int)(0x8004016D - 0x100000000),\n        /// <summary>\n        /// The schema for the software installation data in the Active Directory does not match the required schema.\n        /// </summary>\n        CS_E_SCHEMA_MISMATCH = (int)(0x8004016E - 0x100000000),\n        /// <summary>\n        /// An error occurred in the software installation data in the Active Directory.\n        /// </summary>\n        CS_E_INTERNAL_ERROR = (int)(0x8004016F - 0x100000000),\n        /// <summary>\n        /// Cache not updated\n        /// </summary>\n        CACHE_E_FIRST = (int)(0x80040170 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CACHE_E_LAST = (int)(0x8004017F - 0x100000000),\n        /// <summary>\n        /// FORMATETC not supported\n        /// </summary>\n        CACHE_S_FIRST = 0x00040170,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CACHE_S_LAST = 0x0004017F,\n        /// <summary>\n        /// Cache not updated\n        /// </summary>\n        CACHE_E_NOCACHE_UPDATED = (int)(0x80040170 - 0x100000000),\n        /// <summary>\n        /// No verbs for OLE object\n        /// </summary>\n        OLEOBJ_E_FIRST = (int)(0x80040180 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        OLEOBJ_E_LAST = (int)(0x8004018F - 0x100000000),\n        /// <summary>\n        /// Invalid verb for OLE object\n        /// </summary>\n        OLEOBJ_S_FIRST = 0x00040180,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        OLEOBJ_S_LAST = 0x0004018F,\n        /// <summary>\n        /// No verbs for OLE object\n        /// </summary>\n        OLEOBJ_E_NOVERBS = (int)(0x80040180 - 0x100000000),\n        /// <summary>\n        /// Invalid verb for OLE object\n        /// </summary>\n        OLEOBJ_E_INVALIDVERB = (int)(0x80040181 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CLIENTSITE_E_FIRST = (int)(0x80040190 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CLIENTSITE_E_LAST = (int)(0x8004019F - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CLIENTSITE_S_FIRST = 0x00040190,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CLIENTSITE_S_LAST = 0x0004019F,\n        /// <summary>\n        /// Undo is not available\n        /// </summary>\n        INPLACE_E_NOTUNDOABLE = (int)(0x800401A0 - 0x100000000),\n        /// <summary>\n        /// Space for tools is not available\n        /// </summary>\n        INPLACE_E_NOTOOLSPACE = (int)(0x800401A1 - 0x100000000),\n        /// <summary>\n        /// Undo is not available\n        /// </summary>\n        INPLACE_E_FIRST = (int)(0x800401A0 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        INPLACE_E_LAST = (int)(0x800401AF - 0x100000000),\n        /// <summary>\n        /// Message is too long, some of it had to be truncated before displaying\n        /// </summary>\n        INPLACE_S_FIRST = 0x000401A0,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        INPLACE_S_LAST = 0x000401AF,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ENUM_E_FIRST = (int)(0x800401B0 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ENUM_E_LAST = (int)(0x800401BF - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ENUM_S_FIRST = 0x000401B0,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        ENUM_S_LAST = 0x000401BF,\n        /// <summary>\n        /// OLESTREAM Get method failed\n        /// </summary>\n        CONVERT10_E_FIRST = (int)(0x800401C0 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CONVERT10_E_LAST = (int)(0x800401CF - 0x100000000),\n        /// <summary>\n        /// Unable to convert OLESTREAM to IStorage\n        /// </summary>\n        CONVERT10_S_FIRST = 0x000401C0,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CONVERT10_S_LAST = 0x000401CF,\n        /// <summary>\n        /// OLESTREAM Get method failed\n        /// </summary>\n        CONVERT10_E_OLESTREAM_GET = (int)(0x800401C0 - 0x100000000),\n        /// <summary>\n        /// OLESTREAM Put method failed\n        /// </summary>\n        CONVERT10_E_OLESTREAM_PUT = (int)(0x800401C1 - 0x100000000),\n        /// <summary>\n        /// Contents of the OLESTREAM not in correct format\n        /// </summary>\n        CONVERT10_E_OLESTREAM_FMT = (int)(0x800401C2 - 0x100000000),\n        /// <summary>\n        /// There was an error in a Windows GDI call while converting the bitmap to a DIB\n        /// </summary>\n        CONVERT10_E_OLESTREAM_BITMAP_TO_DIB = (int)(0x800401C3 - 0x100000000),\n        /// <summary>\n        /// Contents of the IStorage not in correct format\n        /// </summary>\n        CONVERT10_E_STG_FMT = (int)(0x800401C4 - 0x100000000),\n        /// <summary>\n        /// Contents of IStorage is missing one of the standard streams\n        /// </summary>\n        CONVERT10_E_STG_NO_STD_STREAM = (int)(0x800401C5 - 0x100000000),\n        /// <summary>\n        /// There was an error in a Windows GDI call while converting the DIB to a bitmap.\n        /// </summary>\n        CONVERT10_E_STG_DIB_TO_BITMAP = (int)(0x800401C6 - 0x100000000),\n        /// <summary>\n        /// OpenClipboard Failed\n        /// </summary>\n        CLIPBRD_E_FIRST = (int)(0x800401D0 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CLIPBRD_E_LAST = (int)(0x800401DF - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CLIPBRD_S_FIRST = 0x000401D0,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CLIPBRD_S_LAST = 0x000401DF,\n        /// <summary>\n        /// OpenClipboard Failed\n        /// </summary>\n        CLIPBRD_E_CANT_OPEN = (int)(0x800401D0 - 0x100000000),\n        /// <summary>\n        /// EmptyClipboard Failed\n        /// </summary>\n        CLIPBRD_E_CANT_EMPTY = (int)(0x800401D1 - 0x100000000),\n        /// <summary>\n        /// SetClipboard Failed\n        /// </summary>\n        CLIPBRD_E_CANT_SET = (int)(0x800401D2 - 0x100000000),\n        /// <summary>\n        /// Data on clipboard is invalid\n        /// </summary>\n        CLIPBRD_E_BAD_DATA = (int)(0x800401D3 - 0x100000000),\n        /// <summary>\n        /// CloseClipboard Failed\n        /// </summary>\n        CLIPBRD_E_CANT_CLOSE = (int)(0x800401D4 - 0x100000000),\n        /// <summary>\n        /// Moniker needs to be connected manually\n        /// </summary>\n        MK_E_FIRST = (int)(0x800401E0 - 0x100000000),\n        /// <summary>\n        /// Moniker could not be enumerated\n        /// </summary>\n        MK_E_LAST = (int)(0x800401EF - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        MK_S_FIRST = 0x000401E0,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        MK_S_LAST = 0x000401EF,\n        /// <summary>\n        /// Moniker needs to be connected manually\n        /// </summary>\n        MK_E_CONNECTMANUALLY = (int)(0x800401E0 - 0x100000000),\n        /// <summary>\n        /// Operation exceeded deadline\n        /// </summary>\n        MK_E_EXCEEDEDDEADLINE = (int)(0x800401E1 - 0x100000000),\n        /// <summary>\n        /// Moniker needs to be generic\n        /// </summary>\n        MK_E_NEEDGENERIC = (int)(0x800401E2 - 0x100000000),\n        /// <summary>\n        /// Operation unavailable\n        /// </summary>\n        MK_E_UNAVAILABLE = (int)(0x800401E3 - 0x100000000),\n        /// <summary>\n        /// Invalid syntax\n        /// </summary>\n        MK_E_SYNTAX = (int)(0x800401E4 - 0x100000000),\n        /// <summary>\n        /// No object for moniker\n        /// </summary>\n        MK_E_NOOBJECT = (int)(0x800401E5 - 0x100000000),\n        /// <summary>\n        /// Bad extension for file\n        /// </summary>\n        MK_E_INVALIDEXTENSION = (int)(0x800401E6 - 0x100000000),\n        /// <summary>\n        /// Intermediate operation failed\n        /// </summary>\n        MK_E_INTERMEDIATEINTERFACENOTSUPPORTED = (int)(0x800401E7 - 0x100000000),\n        /// <summary>\n        /// Moniker is not bindable\n        /// </summary>\n        MK_E_NOTBINDABLE = (int)(0x800401E8 - 0x100000000),\n        /// <summary>\n        /// Moniker is not bound\n        /// </summary>\n        MK_E_NOTBOUND = (int)(0x800401E9 - 0x100000000),\n        /// <summary>\n        /// Moniker cannot open file\n        /// </summary>\n        MK_E_CANTOPENFILE = (int)(0x800401EA - 0x100000000),\n        /// <summary>\n        /// User input required for operation to succeed\n        /// </summary>\n        MK_E_MUSTBOTHERUSER = (int)(0x800401EB - 0x100000000),\n        /// <summary>\n        /// Moniker class has no inverse\n        /// </summary>\n        MK_E_NOINVERSE = (int)(0x800401EC - 0x100000000),\n        /// <summary>\n        /// Moniker does not refer to storage\n        /// </summary>\n        MK_E_NOSTORAGE = (int)(0x800401ED - 0x100000000),\n        /// <summary>\n        /// No common prefix\n        /// </summary>\n        MK_E_NOPREFIX = (int)(0x800401EE - 0x100000000),\n        /// <summary>\n        /// Moniker could not be enumerated\n        /// </summary>\n        MK_E_ENUMERATION_FAILED = (int)(0x800401EF - 0x100000000),\n        /// <summary>\n        /// CoInitialize has not been called.\n        /// </summary>\n        CO_E_FIRST = (int)(0x800401F0 - 0x100000000),\n        /// <summary>\n        /// Object has been released\n        /// </summary>\n        CO_E_LAST = (int)(0x800401FF - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CO_S_FIRST = 0x000401F0,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CO_S_LAST = 0x000401FF,\n        /// <summary>\n        /// CoInitialize has not been called.\n        /// </summary>\n        CO_E_NOTINITIALIZED = (int)(0x800401F0 - 0x100000000),\n        /// <summary>\n        /// CoInitialize has already been called.\n        /// </summary>\n        CO_E_ALREADYINITIALIZED = (int)(0x800401F1 - 0x100000000),\n        /// <summary>\n        /// Class of object cannot be determined\n        /// </summary>\n        CO_E_CANTDETERMINECLASS = (int)(0x800401F2 - 0x100000000),\n        /// <summary>\n        /// Invalid class string\n        /// </summary>\n        CO_E_CLASSSTRING = (int)(0x800401F3 - 0x100000000),\n        /// <summary>\n        /// Invalid interface string\n        /// </summary>\n        CO_E_IIDSTRING = (int)(0x800401F4 - 0x100000000),\n        /// <summary>\n        /// Application not found\n        /// </summary>\n        CO_E_APPNOTFOUND = (int)(0x800401F5 - 0x100000000),\n        /// <summary>\n        /// Application cannot be run more than once\n        /// </summary>\n        CO_E_APPSINGLEUSE = (int)(0x800401F6 - 0x100000000),\n        /// <summary>\n        /// Some error in application program\n        /// </summary>\n        CO_E_ERRORINAPP = (int)(0x800401F7 - 0x100000000),\n        /// <summary>\n        /// DLL for class not found\n        /// </summary>\n        CO_E_DLLNOTFOUND = (int)(0x800401F8 - 0x100000000),\n        /// <summary>\n        /// Error in the DLL\n        /// </summary>\n        CO_E_ERRORINDLL = (int)(0x800401F9 - 0x100000000),\n        /// <summary>\n        /// Wrong OS or OS version for application\n        /// </summary>\n        CO_E_WRONGOSFORAPP = (int)(0x800401FA - 0x100000000),\n        /// <summary>\n        /// Object is not registered\n        /// </summary>\n        CO_E_OBJNOTREG = (int)(0x800401FB - 0x100000000),\n        /// <summary>\n        /// Object is already registered\n        /// </summary>\n        CO_E_OBJISREG = (int)(0x800401FC - 0x100000000),\n        /// <summary>\n        /// Object is not connected to server\n        /// </summary>\n        CO_E_OBJNOTCONNECTED = (int)(0x800401FD - 0x100000000),\n        /// <summary>\n        /// Application was launched but it didn't register a class factory\n        /// </summary>\n        CO_E_APPDIDNTREG = (int)(0x800401FE - 0x100000000),\n        /// <summary>\n        /// Object has been released\n        /// </summary>\n        CO_E_RELEASED = (int)(0x800401FF - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        EVENT_E_FIRST = (int)(0x80040200 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        EVENT_E_LAST = (int)(0x8004021F - 0x100000000),\n        /// <summary>\n        /// An event was able to invoke some but not all of the subscribers\n        /// </summary>\n        EVENT_S_FIRST = 0x00040200,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        EVENT_S_LAST = 0x0004021F,\n        /// <summary>\n        /// An event was able to invoke some but not all of the subscribers\n        /// </summary>\n        EVENT_S_SOME_SUBSCRIBERS_FAILED = 0x00040200,\n        /// <summary>\n        /// An event was unable to invoke any of the subscribers\n        /// </summary>\n        EVENT_E_ALL_SUBSCRIBERS_FAILED = (int)(0x80040201 - 0x100000000),\n        /// <summary>\n        /// An event was delivered but there were no subscribers\n        /// </summary>\n        EVENT_S_NOSUBSCRIBERS = 0x00040202,\n        /// <summary>\n        /// A syntax error occurred trying to evaluate a query string\n        /// </summary>\n        EVENT_E_QUERYSYNTAX = (int)(0x80040203 - 0x100000000),\n        /// <summary>\n        /// An invalid field name was used in a query string\n        /// </summary>\n        EVENT_E_QUERYFIELD = (int)(0x80040204 - 0x100000000),\n        /// <summary>\n        /// An unexpected exception was raised\n        /// </summary>\n        EVENT_E_INTERNALEXCEPTION = (int)(0x80040205 - 0x100000000),\n        /// <summary>\n        /// An unexpected internal error was detected\n        /// </summary>\n        EVENT_E_INTERNALERROR = (int)(0x80040206 - 0x100000000),\n        /// <summary>\n        /// The owner SID on a per-user subscription doesn't exist\n        /// </summary>\n        EVENT_E_INVALID_PER_USER_SID = (int)(0x80040207 - 0x100000000),\n        /// <summary>\n        /// A user-supplied component or subscriber raised an exception\n        /// </summary>\n        EVENT_E_USER_EXCEPTION = (int)(0x80040208 - 0x100000000),\n        /// <summary>\n        /// An interface has too many methods to fire events from\n        /// </summary>\n        EVENT_E_TOO_MANY_METHODS = (int)(0x80040209 - 0x100000000),\n        /// <summary>\n        /// A subscription cannot be stored unless its event class already exists\n        /// </summary>\n        EVENT_E_MISSING_EVENTCLASS = (int)(0x8004020A - 0x100000000),\n        /// <summary>\n        /// Not all the objects requested could be removed\n        /// </summary>\n        EVENT_E_NOT_ALL_REMOVED = (int)(0x8004020B - 0x100000000),\n        /// <summary>\n        /// COM+ is required for this operation, but is not installed\n        /// </summary>\n        EVENT_E_COMPLUS_NOT_INSTALLED = (int)(0x8004020C - 0x100000000),\n        /// <summary>\n        /// Cannot modify or delete an object that was not added using the COM+ Admin SDK\n        /// </summary>\n        EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT = (int)(0x8004020D - 0x100000000),\n        /// <summary>\n        /// Cannot modify or delete an object that was added using the COM+ Admin SDK\n        /// </summary>\n        EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT = (int)(0x8004020E - 0x100000000),\n        /// <summary>\n        /// The event class for this subscription is in an invalid partition\n        /// </summary>\n        EVENT_E_INVALID_EVENT_CLASS_PARTITION = (int)(0x8004020F - 0x100000000),\n        /// <summary>\n        /// The owner of the PerUser subscription is not logged on to the system specified\n        /// </summary>\n        EVENT_E_PER_USER_SID_NOT_LOGGED_ON = (int)(0x80040210 - 0x100000000),\n        /// <summary>\n        /// Another single phase resource manager has already been enlisted in this transaction.\n        /// </summary>\n        XACT_E_FIRST = (int)(0x8004D000 - 0x100000000),\n        /// <summary>\n        /// The local transaction has aborted.\n        /// </summary>\n        XACT_E_LAST = (int)(0x8004D029 - 0x100000000),\n        /// <summary>\n        /// An asynchronous operation was specified. The operation has begun, but its outcome is not known yet.\n        /// </summary>\n        XACT_S_FIRST = 0x0004D000,\n        /// <summary>\n        /// The resource manager has requested to be the coordinator (last resource manager) for the transaction.\n        /// </summary>\n        XACT_S_LAST = 0x0004D010,\n        /// <summary>\n        /// Another single phase resource manager has already been enlisted in this transaction.\n        /// </summary>\n        XACT_E_ALREADYOTHERSINGLEPHASE = (int)(0x8004D000 - 0x100000000),\n        /// <summary>\n        /// A retaining commit or abort is not supported\n        /// </summary>\n        XACT_E_CANTRETAIN = (int)(0x8004D001 - 0x100000000),\n        /// <summary>\n        /// The transaction failed to commit for an unknown reason. The transaction was aborted.\n        /// </summary>\n        XACT_E_COMMITFAILED = (int)(0x8004D002 - 0x100000000),\n        /// <summary>\n        /// Cannot call commit on this transaction object because the calling application did not initiate the transaction.\n        /// </summary>\n        XACT_E_COMMITPREVENTED = (int)(0x8004D003 - 0x100000000),\n        /// <summary>\n        /// Instead of committing, the resource heuristically aborted.\n        /// </summary>\n        XACT_E_HEURISTICABORT = (int)(0x8004D004 - 0x100000000),\n        /// <summary>\n        /// Instead of aborting, the resource heuristically committed.\n        /// </summary>\n        XACT_E_HEURISTICCOMMIT = (int)(0x8004D005 - 0x100000000),\n        /// <summary>\n        /// Some of the states of the resource were committed while others were aborted, likely because of heuristic decisions.\n        /// </summary>\n        XACT_E_HEURISTICDAMAGE = (int)(0x8004D006 - 0x100000000),\n        /// <summary>\n        /// Some of the states of the resource may have been committed while others may have been aborted, likely because of heuristic decisions.\n        /// </summary>\n        XACT_E_HEURISTICDANGER = (int)(0x8004D007 - 0x100000000),\n        /// <summary>\n        /// The requested isolation level is not valid or supported.\n        /// </summary>\n        XACT_E_ISOLATIONLEVEL = (int)(0x8004D008 - 0x100000000),\n        /// <summary>\n        /// The transaction manager doesn't support an asynchronous operation for this method.\n        /// </summary>\n        XACT_E_NOASYNC = (int)(0x8004D009 - 0x100000000),\n        /// <summary>\n        /// Unable to enlist in the transaction.\n        /// </summary>\n        XACT_E_NOENLIST = (int)(0x8004D00A - 0x100000000),\n        /// <summary>\n        /// The requested semantics of retention of isolation across retaining commit and abort boundaries cannot be supported by this transaction implementation, or isoFlags was not equal to zero.\n        /// </summary>\n        XACT_E_NOISORETAIN = (int)(0x8004D00B - 0x100000000),\n        /// <summary>\n        /// There is no resource presently associated with this enlistment\n        /// </summary>\n        XACT_E_NORESOURCE = (int)(0x8004D00C - 0x100000000),\n        /// <summary>\n        /// The transaction failed to commit due to the failure of optimistic concurrency control in at least one of the resource managers.\n        /// </summary>\n        XACT_E_NOTCURRENT = (int)(0x8004D00D - 0x100000000),\n        /// <summary>\n        /// The transaction has already been implicitly or explicitly committed or aborted\n        /// </summary>\n        XACT_E_NOTRANSACTION = (int)(0x8004D00E - 0x100000000),\n        /// <summary>\n        /// An invalid combination of flags was specified\n        /// </summary>\n        XACT_E_NOTSUPPORTED = (int)(0x8004D00F - 0x100000000),\n        /// <summary>\n        /// The resource manager id is not associated with this transaction or the transaction manager.\n        /// </summary>\n        XACT_E_UNKNOWNRMGRID = (int)(0x8004D010 - 0x100000000),\n        /// <summary>\n        /// This method was called in the wrong state\n        /// </summary>\n        XACT_E_WRONGSTATE = (int)(0x8004D011 - 0x100000000),\n        /// <summary>\n        /// The indicated unit of work does not match the unit of work expected by the resource manager.\n        /// </summary>\n        XACT_E_WRONGUOW = (int)(0x8004D012 - 0x100000000),\n        /// <summary>\n        /// An enlistment in a transaction already exists.\n        /// </summary>\n        XACT_E_XTIONEXISTS = (int)(0x8004D013 - 0x100000000),\n        /// <summary>\n        /// An import object for the transaction could not be found.\n        /// </summary>\n        XACT_E_NOIMPORTOBJECT = (int)(0x8004D014 - 0x100000000),\n        /// <summary>\n        /// The transaction cookie is invalid.\n        /// </summary>\n        XACT_E_INVALIDCOOKIE = (int)(0x8004D015 - 0x100000000),\n        /// <summary>\n        /// The transaction status is in doubt. A communication failure occurred, or a transaction manager or resource manager has failed\n        /// </summary>\n        XACT_E_INDOUBT = (int)(0x8004D016 - 0x100000000),\n        /// <summary>\n        /// A time-out was specified, but time-outs are not supported.\n        /// </summary>\n        XACT_E_NOTIMEOUT = (int)(0x8004D017 - 0x100000000),\n        /// <summary>\n        /// The requested operation is already in progress for the transaction.\n        /// </summary>\n        XACT_E_ALREADYINPROGRESS = (int)(0x8004D018 - 0x100000000),\n        /// <summary>\n        /// The transaction has already been aborted.\n        /// </summary>\n        XACT_E_ABORTED = (int)(0x8004D019 - 0x100000000),\n        /// <summary>\n        /// The Transaction Manager returned a log full error.\n        /// </summary>\n        XACT_E_LOGFULL = (int)(0x8004D01A - 0x100000000),\n        /// <summary>\n        /// The Transaction Manager is not available.\n        /// </summary>\n        XACT_E_TMNOTAVAILABLE = (int)(0x8004D01B - 0x100000000),\n        /// <summary>\n        /// A connection with the transaction manager was lost.\n        /// </summary>\n        XACT_E_CONNECTION_DOWN = (int)(0x8004D01C - 0x100000000),\n        /// <summary>\n        /// A request to establish a connection with the transaction manager was denied.\n        /// </summary>\n        XACT_E_CONNECTION_DENIED = (int)(0x8004D01D - 0x100000000),\n        /// <summary>\n        /// Resource manager reenlistment to determine transaction status timed out.\n        /// </summary>\n        XACT_E_REENLISTTIMEOUT = (int)(0x8004D01E - 0x100000000),\n        /// <summary>\n        /// This transaction manager failed to establish a connection with another TIP transaction manager.\n        /// </summary>\n        XACT_E_TIP_CONNECT_FAILED = (int)(0x8004D01F - 0x100000000),\n        /// <summary>\n        /// This transaction manager encountered a protocol error with another TIP transaction manager.\n        /// </summary>\n        XACT_E_TIP_PROTOCOL_ERROR = (int)(0x8004D020 - 0x100000000),\n        /// <summary>\n        /// This transaction manager could not propagate a transaction from another TIP transaction manager.\n        /// </summary>\n        XACT_E_TIP_PULL_FAILED = (int)(0x8004D021 - 0x100000000),\n        /// <summary>\n        /// The Transaction Manager on the destination machine is not available.\n        /// </summary>\n        XACT_E_DEST_TMNOTAVAILABLE = (int)(0x8004D022 - 0x100000000),\n        /// <summary>\n        /// The Transaction Manager has disabled its support for TIP.\n        /// </summary>\n        XACT_E_TIP_DISABLED = (int)(0x8004D023 - 0x100000000),\n        /// <summary>\n        /// The transaction manager has disabled its support for remote/network transactions.\n        /// </summary>\n        XACT_E_NETWORK_TX_DISABLED = (int)(0x8004D024 - 0x100000000),\n        /// <summary>\n        /// The partner transaction manager has disabled its support for remote/network transactions.\n        /// </summary>\n        XACT_E_PARTNER_NETWORK_TX_DISABLED = (int)(0x8004D025 - 0x100000000),\n        /// <summary>\n        /// The transaction manager has disabled its support for XA transactions.\n        /// </summary>\n        XACT_E_XA_TX_DISABLED = (int)(0x8004D026 - 0x100000000),\n        /// <summary>\n        /// MSDTC was unable to read its configuration information.\n        /// </summary>\n        XACT_E_UNABLE_TO_READ_DTC_CONFIG = (int)(0x8004D027 - 0x100000000),\n        /// <summary>\n        /// MSDTC was unable to load the dtc proxy dll.\n        /// </summary>\n        XACT_E_UNABLE_TO_LOAD_DTC_PROXY = (int)(0x8004D028 - 0x100000000),\n        /// <summary>\n        /// The local transaction has aborted.\n        /// </summary>\n        XACT_E_ABORTING = (int)(0x8004D029 - 0x100000000),\n        /// <summary>\n        /// XACT_E_CLERKNOTFOUND\n        /// </summary>\n        XACT_E_CLERKNOTFOUND = (int)(0x8004D080 - 0x100000000),\n        /// <summary>\n        /// XACT_E_CLERKEXISTS\n        /// </summary>\n        XACT_E_CLERKEXISTS = (int)(0x8004D081 - 0x100000000),\n        /// <summary>\n        /// XACT_E_RECOVERYINPROGRESS\n        /// </summary>\n        XACT_E_RECOVERYINPROGRESS = (int)(0x8004D082 - 0x100000000),\n        /// <summary>\n        /// XACT_E_TRANSACTIONCLOSED\n        /// </summary>\n        XACT_E_TRANSACTIONCLOSED = (int)(0x8004D083 - 0x100000000),\n        /// <summary>\n        /// XACT_E_INVALIDLSN\n        /// </summary>\n        XACT_E_INVALIDLSN = (int)(0x8004D084 - 0x100000000),\n        /// <summary>\n        /// XACT_E_REPLAYREQUEST\n        /// </summary>\n        XACT_E_REPLAYREQUEST = (int)(0x8004D085 - 0x100000000),\n        /// <summary>\n        /// An asynchronous operation was specified. The operation has begun, but its outcome is not known yet.\n        /// </summary>\n        XACT_S_ASYNC = 0x0004D000,\n        /// <summary>\n        /// XACT_S_DEFECT\n        /// </summary>\n        XACT_S_DEFECT = 0x0004D001,\n        /// <summary>\n        /// The method call succeeded because the transaction was read-only.\n        /// </summary>\n        XACT_S_READONLY = 0x0004D002,\n        /// <summary>\n        /// The transaction was successfully aborted. However, this is a coordinated transaction, and some number of enlisted resources were aborted outright because they could not support abort-retaining semantics\n        /// </summary>\n        XACT_S_SOMENORETAIN = 0x0004D003,\n        /// <summary>\n        /// No changes were made during this call, but the sink wants another chance to look if any other sinks make further changes.\n        /// </summary>\n        XACT_S_OKINFORM = 0x0004D004,\n        /// <summary>\n        /// The sink is content and wishes the transaction to proceed. Changes were made to one or more resources during this call.\n        /// </summary>\n        XACT_S_MADECHANGESCONTENT = 0x0004D005,\n        /// <summary>\n        /// The sink is for the moment and wishes the transaction to proceed, but if other changes are made following this return by other event sinks then this sink wants another chance to look\n        /// </summary>\n        XACT_S_MADECHANGESINFORM = 0x0004D006,\n        /// <summary>\n        /// The transaction was successfully aborted. However, the abort was non-retaining.\n        /// </summary>\n        XACT_S_ALLNORETAIN = 0x0004D007,\n        /// <summary>\n        /// An abort operation was already in progress.\n        /// </summary>\n        XACT_S_ABORTING = 0x0004D008,\n        /// <summary>\n        /// The resource manager has performed a single-phase commit of the transaction.\n        /// </summary>\n        XACT_S_SINGLEPHASE = 0x0004D009,\n        /// <summary>\n        /// The local transaction has not aborted.\n        /// </summary>\n        XACT_S_LOCALLY_OK = 0x0004D00A,\n        /// <summary>\n        /// The resource manager has requested to be the coordinator (last resource manager) for the transaction.\n        /// </summary>\n        XACT_S_LASTRESOURCEMANAGER = 0x0004D010,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CONTEXT_E_FIRST = (int)(0x8004E000 - 0x100000000),\n        /// <summary>\n        /// The TxIsolation Level property for the COM+ component being created is stronger than the TxIsolationLevel for the \"root\" component for the transaction.  The creation failed.\n        /// </summary>\n        CONTEXT_E_LAST = (int)(0x8004E02F - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CONTEXT_S_FIRST = 0x0004E000,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CONTEXT_S_LAST = 0x0004E02F,\n        /// <summary>\n        /// The root transaction wanted to commit, but transaction aborted\n        /// </summary>\n        CONTEXT_E_ABORTED = (int)(0x8004E002 - 0x100000000),\n        /// <summary>\n        /// You made a method call on a COM+ component that has a transaction that has already aborted or in the process of aborting.\n        /// </summary>\n        CONTEXT_E_ABORTING = (int)(0x8004E003 - 0x100000000),\n        /// <summary>\n        /// There is no MTS object context\n        /// </summary>\n        CONTEXT_E_NOCONTEXT = (int)(0x8004E004 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CONTEXT_E_WOULD_DEADLOCK = (int)(0x8004E005 - 0x100000000),\n        /// <summary>\n        /// The component is configured to use synchronization and a thread has timed out waiting to enter the context.\n        /// </summary>\n        CONTEXT_E_SYNCH_TIMEOUT = (int)(0x8004E006 - 0x100000000),\n        /// <summary>\n        /// You made a method call on a COM+ component that has a transaction that has already committed or aborted.\n        /// </summary>\n        CONTEXT_E_OLDREF = (int)(0x8004E007 - 0x100000000),\n        /// <summary>\n        /// The specified role was not configured for the application\n        /// </summary>\n        CONTEXT_E_ROLENOTFOUND = (int)(0x8004E00C - 0x100000000),\n        /// <summary>\n        /// COM+ was unable to talk to the Microsoft Distributed Transaction Coordinator\n        /// </summary>\n        CONTEXT_E_TMNOTAVAILABLE = (int)(0x8004E00F - 0x100000000),\n        /// <summary>\n        /// An unexpected error occurred during COM+ Activation.\n        /// </summary>\n        CO_E_ACTIVATIONFAILED = (int)(0x8004E021 - 0x100000000),\n        /// <summary>\n        /// COM+ Activation failed. Check the event log for more information\n        /// </summary>\n        CO_E_ACTIVATIONFAILED_EVENTLOGGED = (int)(0x8004E022 - 0x100000000),\n        /// <summary>\n        /// COM+ Activation failed due to a catalog or configuration error.\n        /// </summary>\n        CO_E_ACTIVATIONFAILED_CATALOGERROR = (int)(0x8004E023 - 0x100000000),\n        /// <summary>\n        /// COM+ activation failed because the activation could not be completed in the specified amount of time.\n        /// </summary>\n        CO_E_ACTIVATIONFAILED_TIMEOUT = (int)(0x8004E024 - 0x100000000),\n        /// <summary>\n        /// COM+ Activation failed because an initialization function failed.  Check the event log for more information.\n        /// </summary>\n        CO_E_INITIALIZATIONFAILED = (int)(0x8004E025 - 0x100000000),\n        /// <summary>\n        /// The requested operation requires that JIT be in the current context and it is not\n        /// </summary>\n        CONTEXT_E_NOJIT = (int)(0x8004E026 - 0x100000000),\n        /// <summary>\n        /// The requested operation requires that the current context have a Transaction, and it does not\n        /// </summary>\n        CONTEXT_E_NOTRANSACTION = (int)(0x8004E027 - 0x100000000),\n        /// <summary>\n        /// The components threading model has changed after install into a COM+ Application.  Please re-install component.\n        /// </summary>\n        CO_E_THREADINGMODEL_CHANGED = (int)(0x8004E028 - 0x100000000),\n        /// <summary>\n        /// IIS intrinsics not available.  Start your work with IIS.\n        /// </summary>\n        CO_E_NOIISINTRINSICS = (int)(0x8004E029 - 0x100000000),\n        /// <summary>\n        /// An attempt to write a cookie failed.\n        /// </summary>\n        CO_E_NOCOOKIES = (int)(0x8004E02A - 0x100000000),\n        /// <summary>\n        /// An attempt to use a database generated a database specific error.\n        /// </summary>\n        CO_E_DBERROR = (int)(0x8004E02B - 0x100000000),\n        /// <summary>\n        /// The COM+ component you created must use object pooling to work.\n        /// </summary>\n        CO_E_NOTPOOLED = (int)(0x8004E02C - 0x100000000),\n        /// <summary>\n        /// The COM+ component you created must use object construction to work correctly.\n        /// </summary>\n        CO_E_NOTCONSTRUCTED = (int)(0x8004E02D - 0x100000000),\n        /// <summary>\n        /// The COM+ component requires synchronization, and it is not configured for it.\n        /// </summary>\n        CO_E_NOSYNCHRONIZATION = (int)(0x8004E02E - 0x100000000),\n        /// <summary>\n        /// The TxIsolation Level property for the COM+ component being created is stronger than the TxIsolationLevel for the \"root\" component for the transaction.  The creation failed.\n        /// </summary>\n        CO_E_ISOLEVELMISMATCH = (int)(0x8004E02F - 0x100000000),\n        /// <summary>\n        /// Use the registry database to provide the requested information\n        /// </summary>\n        OLE_S_USEREG = 0x00040000,\n        /// <summary>\n        /// Success, but static\n        /// </summary>\n        OLE_S_STATIC = 0x00040001,\n        /// <summary>\n        /// Macintosh clipboard format\n        /// </summary>\n        OLE_S_MAC_CLIPFORMAT = 0x00040002,\n        /// <summary>\n        /// Successful drop took place\n        /// </summary>\n        DRAGDROP_S_DROP = 0x00040100,\n        /// <summary>\n        /// Drag-drop operation canceled\n        /// </summary>\n        DRAGDROP_S_CANCEL = 0x00040101,\n        /// <summary>\n        /// Use the default cursor\n        /// </summary>\n        DRAGDROP_S_USEDEFAULTCURSORS = 0x00040102,\n        /// <summary>\n        /// Data has same FORMATETC\n        /// </summary>\n        DATA_S_SAMEFORMATETC = 0x00040130,\n        /// <summary>\n        /// View is already frozen\n        /// </summary>\n        VIEW_S_ALREADY_FROZEN = 0x00040140,\n        /// <summary>\n        /// FORMATETC not supported\n        /// </summary>\n        CACHE_S_FORMATETC_NOTSUPPORTED = 0x00040170,\n        /// <summary>\n        /// Same cache\n        /// </summary>\n        CACHE_S_SAMECACHE = 0x00040171,\n        /// <summary>\n        /// Some cache(s) not updated\n        /// </summary>\n        CACHE_S_SOMECACHES_NOTUPDATED = 0x00040172,\n        /// <summary>\n        /// Invalid verb for OLE object\n        /// </summary>\n        OLEOBJ_S_INVALIDVERB = 0x00040180,\n        /// <summary>\n        /// Verb number is valid but verb cannot be done now\n        /// </summary>\n        OLEOBJ_S_CANNOT_DOVERB_NOW = 0x00040181,\n        /// <summary>\n        /// Invalid window handle passed\n        /// </summary>\n        OLEOBJ_S_INVALIDHWND = 0x00040182,\n        /// <summary>\n        /// Message is too long, some of it had to be truncated before displaying\n        /// </summary>\n        INPLACE_S_TRUNCATED = 0x000401A0,\n        /// <summary>\n        /// Unable to convert OLESTREAM to IStorage\n        /// </summary>\n        CONVERT10_S_NO_PRESENTATION = 0x000401C0,\n        /// <summary>\n        /// Moniker reduced to itself\n        /// </summary>\n        MK_S_REDUCED_TO_SELF = 0x000401E2,\n        /// <summary>\n        /// Common prefix is this moniker\n        /// </summary>\n        MK_S_ME = 0x000401E4,\n        /// <summary>\n        /// Common prefix is input moniker\n        /// </summary>\n        MK_S_HIM = 0x000401E5,\n        /// <summary>\n        /// Common prefix is both monikers\n        /// </summary>\n        MK_S_US = 0x000401E6,\n        /// <summary>\n        /// Moniker is already registered in running object table\n        /// </summary>\n        MK_S_MONIKERALREADYREGISTERED = 0x000401E7,\n        /// <summary>\n        /// The task is ready to run at its next scheduled time.\n        /// </summary>\n        SCHED_S_TASK_READY = 0x00041300,\n        /// <summary>\n        /// The task is currently running.\n        /// </summary>\n        SCHED_S_TASK_RUNNING = 0x00041301,\n        /// <summary>\n        /// The task will not run at the scheduled times because it has been disabled.\n        /// </summary>\n        SCHED_S_TASK_DISABLED = 0x00041302,\n        /// <summary>\n        /// The task has not yet run.\n        /// </summary>\n        SCHED_S_TASK_HAS_NOT_RUN = 0x00041303,\n        /// <summary>\n        /// There are no more runs scheduled for this task.\n        /// </summary>\n        SCHED_S_TASK_NO_MORE_RUNS = 0x00041304,\n        /// <summary>\n        /// One or more of the properties that are needed to run this task on a schedule have not been set.\n        /// </summary>\n        SCHED_S_TASK_NOT_SCHEDULED = 0x00041305,\n        /// <summary>\n        /// The last run of the task was terminated by the user.\n        /// </summary>\n        SCHED_S_TASK_TERMINATED = 0x00041306,\n        /// <summary>\n        /// Either the task has no triggers or the existing triggers are disabled or not set.\n        /// </summary>\n        SCHED_S_TASK_NO_VALID_TRIGGERS = 0x00041307,\n        /// <summary>\n        /// Event triggers don't have set run times.\n        /// </summary>\n        SCHED_S_EVENT_TRIGGER = 0x00041308,\n        /// <summary>\n        /// Trigger not found.\n        /// </summary>\n        SCHED_E_TRIGGER_NOT_FOUND = (int)(0x80041309 - 0x100000000),\n        /// <summary>\n        /// One or more of the properties that are needed to run this task have not been set.\n        /// </summary>\n        SCHED_E_TASK_NOT_READY = (int)(0x8004130A - 0x100000000),\n        /// <summary>\n        /// There is no running instance of the task to terminate.\n        /// </summary>\n        SCHED_E_TASK_NOT_RUNNING = (int)(0x8004130B - 0x100000000),\n        /// <summary>\n        /// The Task Scheduler Service is not installed on this computer.\n        /// </summary>\n        SCHED_E_SERVICE_NOT_INSTALLED = (int)(0x8004130C - 0x100000000),\n        /// <summary>\n        /// The task object could not be opened.\n        /// </summary>\n        SCHED_E_CANNOT_OPEN_TASK = (int)(0x8004130D - 0x100000000),\n        /// <summary>\n        /// The object is either an invalid task object or is not a task object.\n        /// </summary>\n        SCHED_E_INVALID_TASK = (int)(0x8004130E - 0x100000000),\n        /// <summary>\n        /// No account information could be found in the Task Scheduler security database for the task indicated.\n        /// </summary>\n        SCHED_E_ACCOUNT_INFORMATION_NOT_SET = (int)(0x8004130F - 0x100000000),\n        /// <summary>\n        /// Unable to establish existence of the account specified.\n        /// </summary>\n        SCHED_E_ACCOUNT_NAME_NOT_FOUND = (int)(0x80041310 - 0x100000000),\n        /// <summary>\n        /// Corruption was detected in the Task Scheduler security database, the database has been reset.\n        /// </summary>\n        SCHED_E_ACCOUNT_DBASE_CORRUPT = (int)(0x80041311 - 0x100000000),\n        /// <summary>\n        /// Task Scheduler security services are available only on Windows NT.\n        /// </summary>\n        SCHED_E_NO_SECURITY_SERVICES = (int)(0x80041312 - 0x100000000),\n        /// <summary>\n        /// The task object version is either unsupported or invalid.\n        /// </summary>\n        SCHED_E_UNKNOWN_OBJECT_VERSION = (int)(0x80041313 - 0x100000000),\n        /// <summary>\n        /// The task has been configured with an unsupported combination of account settings and run time options.\n        /// </summary>\n        SCHED_E_UNSUPPORTED_ACCOUNT_OPTION = (int)(0x80041314 - 0x100000000),\n        /// <summary>\n        /// The Task Scheduler Service is not running.\n        /// </summary>\n        SCHED_E_SERVICE_NOT_RUNNING = (int)(0x80041315 - 0x100000000),\n        /// <summary>\n        /// Attempt to create a class object failed\n        /// </summary>\n        CO_E_CLASS_CREATE_FAILED = (int)(0x80080001 - 0x100000000),\n        /// <summary>\n        /// OLE service could not bind object\n        /// </summary>\n        CO_E_SCM_ERROR = (int)(0x80080002 - 0x100000000),\n        /// <summary>\n        /// RPC communication failed with OLE service\n        /// </summary>\n        CO_E_SCM_RPC_FAILURE = (int)(0x80080003 - 0x100000000),\n        /// <summary>\n        /// Bad path to object\n        /// </summary>\n        CO_E_BAD_PATH = (int)(0x80080004 - 0x100000000),\n        /// <summary>\n        /// Server execution failed\n        /// </summary>\n        CO_E_SERVER_EXEC_FAILURE = (int)(0x80080005 - 0x100000000),\n        /// <summary>\n        /// OLE service could not communicate with the object server\n        /// </summary>\n        CO_E_OBJSRV_RPC_FAILURE = (int)(0x80080006 - 0x100000000),\n        /// <summary>\n        /// Moniker path could not be normalized\n        /// </summary>\n        MK_E_NO_NORMALIZED = (int)(0x80080007 - 0x100000000),\n        /// <summary>\n        /// Object server is stopping when OLE service contacts it\n        /// </summary>\n        CO_E_SERVER_STOPPING = (int)(0x80080008 - 0x100000000),\n        /// <summary>\n        /// An invalid root block pointer was specified\n        /// </summary>\n        MEM_E_INVALID_ROOT = (int)(0x80080009 - 0x100000000),\n        /// <summary>\n        /// An allocation chain contained an invalid link pointer\n        /// </summary>\n        MEM_E_INVALID_LINK = (int)(0x80080010 - 0x100000000),\n        /// <summary>\n        /// The requested allocation size was too large\n        /// </summary>\n        MEM_E_INVALID_SIZE = (int)(0x80080011 - 0x100000000),\n        /// <summary>\n        /// Not all the requested interfaces were available\n        /// </summary>\n        CO_S_NOTALLINTERFACES = 0x00080012,\n        /// <summary>\n        /// The specified machine name was not found in the cache.\n        /// </summary>\n        CO_S_MACHINENAMENOTFOUND = 0x00080013,\n        /// <summary>\n        /// Unknown interface.\n        /// </summary>\n        DISP_E_UNKNOWNINTERFACE = (int)(0x80020001 - 0x100000000),\n        /// <summary>\n        /// Member not found.\n        /// </summary>\n        DISP_E_MEMBERNOTFOUND = (int)(0x80020003 - 0x100000000),\n        /// <summary>\n        /// Parameter not found.\n        /// </summary>\n        DISP_E_PARAMNOTFOUND = (int)(0x80020004 - 0x100000000),\n        /// <summary>\n        /// Type mismatch.\n        /// </summary>\n        DISP_E_TYPEMISMATCH = (int)(0x80020005 - 0x100000000),\n        /// <summary>\n        /// Unknown name.\n        /// </summary>\n        DISP_E_UNKNOWNNAME = (int)(0x80020006 - 0x100000000),\n        /// <summary>\n        /// No named arguments.\n        /// </summary>\n        DISP_E_NONAMEDARGS = (int)(0x80020007 - 0x100000000),\n        /// <summary>\n        /// Bad variable type.\n        /// </summary>\n        DISP_E_BADVARTYPE = (int)(0x80020008 - 0x100000000),\n        /// <summary>\n        /// Exception occurred.\n        /// </summary>\n        DISP_E_EXCEPTION = (int)(0x80020009 - 0x100000000),\n        /// <summary>\n        /// Out of present range.\n        /// </summary>\n        DISP_E_OVERFLOW = (int)(0x8002000A - 0x100000000),\n        /// <summary>\n        /// Invalid index.\n        /// </summary>\n        DISP_E_BADINDEX = (int)(0x8002000B - 0x100000000),\n        /// <summary>\n        /// Unknown language.\n        /// </summary>\n        DISP_E_UNKNOWNLCID = (int)(0x8002000C - 0x100000000),\n        /// <summary>\n        /// Memory is locked.\n        /// </summary>\n        DISP_E_ARRAYISLOCKED = (int)(0x8002000D - 0x100000000),\n        /// <summary>\n        /// Invalid number of parameters.\n        /// </summary>\n        DISP_E_BADPARAMCOUNT = (int)(0x8002000E - 0x100000000),\n        /// <summary>\n        /// Parameter not optional.\n        /// </summary>\n        DISP_E_PARAMNOTOPTIONAL = (int)(0x8002000F - 0x100000000),\n        /// <summary>\n        /// Invalid callee.\n        /// </summary>\n        DISP_E_BADCALLEE = (int)(0x80020010 - 0x100000000),\n        /// <summary>\n        /// Does not support a collection.\n        /// </summary>\n        DISP_E_NOTACOLLECTION = (int)(0x80020011 - 0x100000000),\n        /// <summary>\n        /// Division by zero.\n        /// </summary>\n        DISP_E_DIVBYZERO = (int)(0x80020012 - 0x100000000),\n        /// <summary>\n        /// Buffer too small\n        /// </summary>\n        DISP_E_BUFFERTOOSMALL = (int)(0x80020013 - 0x100000000),\n        /// <summary>\n        /// Buffer too small.\n        /// </summary>\n        TYPE_E_BUFFERTOOSMALL = (int)(0x80028016 - 0x100000000),\n        /// <summary>\n        /// Field name not defined in the record.\n        /// </summary>\n        TYPE_E_FIELDNOTFOUND = (int)(0x80028017 - 0x100000000),\n        /// <summary>\n        /// Old format or invalid type library.\n        /// </summary>\n        TYPE_E_INVDATAREAD = (int)(0x80028018 - 0x100000000),\n        /// <summary>\n        /// Old format or invalid type library.\n        /// </summary>\n        TYPE_E_UNSUPFORMAT = (int)(0x80028019 - 0x100000000),\n        /// <summary>\n        /// Error accessing the OLE registry.\n        /// </summary>\n        TYPE_E_REGISTRYACCESS = (int)(0x8002801C - 0x100000000),\n        /// <summary>\n        /// Library not registered.\n        /// </summary>\n        TYPE_E_LIBNOTREGISTERED = (int)(0x8002801D - 0x100000000),\n        /// <summary>\n        /// Bound to unknown type.\n        /// </summary>\n        TYPE_E_UNDEFINEDTYPE = (int)(0x80028027 - 0x100000000),\n        /// <summary>\n        /// Qualified name disallowed.\n        /// </summary>\n        TYPE_E_QUALIFIEDNAMEDISALLOWED = (int)(0x80028028 - 0x100000000),\n        /// <summary>\n        /// Invalid forward reference, or reference to uncompiled type.\n        /// </summary>\n        TYPE_E_INVALIDSTATE = (int)(0x80028029 - 0x100000000),\n        /// <summary>\n        /// Type mismatch.\n        /// </summary>\n        TYPE_E_WRONGTYPEKIND = (int)(0x8002802A - 0x100000000),\n        /// <summary>\n        /// Element not found.\n        /// </summary>\n        TYPE_E_ELEMENTNOTFOUND = (int)(0x8002802B - 0x100000000),\n        /// <summary>\n        /// Ambiguous name.\n        /// </summary>\n        TYPE_E_AMBIGUOUSNAME = (int)(0x8002802C - 0x100000000),\n        /// <summary>\n        /// Name already exists in the library.\n        /// </summary>\n        TYPE_E_NAMECONFLICT = (int)(0x8002802D - 0x100000000),\n        /// <summary>\n        /// Unknown LCID.\n        /// </summary>\n        TYPE_E_UNKNOWNLCID = (int)(0x8002802E - 0x100000000),\n        /// <summary>\n        /// Function not defined in specified DLL.\n        /// </summary>\n        TYPE_E_DLLFUNCTIONNOTFOUND = (int)(0x8002802F - 0x100000000),\n        /// <summary>\n        /// Wrong module kind for the operation.\n        /// </summary>\n        TYPE_E_BADMODULEKIND = (int)(0x800288BD - 0x100000000),\n        /// <summary>\n        /// Size may not exceed 64K.\n        /// </summary>\n        TYPE_E_SIZETOOBIG = (int)(0x800288C5 - 0x100000000),\n        /// <summary>\n        /// Duplicate ID in inheritance hierarchy.\n        /// </summary>\n        TYPE_E_DUPLICATEID = (int)(0x800288C6 - 0x100000000),\n        /// <summary>\n        /// Incorrect inheritance depth in standard OLE hmember.\n        /// </summary>\n        TYPE_E_INVALIDID = (int)(0x800288CF - 0x100000000),\n        /// <summary>\n        /// Type mismatch.\n        /// </summary>\n        TYPE_E_TYPEMISMATCH = (int)(0x80028CA0 - 0x100000000),\n        /// <summary>\n        /// Invalid number of arguments.\n        /// </summary>\n        TYPE_E_OUTOFBOUNDS = (int)(0x80028CA1 - 0x100000000),\n        /// <summary>\n        /// I/O Error.\n        /// </summary>\n        TYPE_E_IOERROR = (int)(0x80028CA2 - 0x100000000),\n        /// <summary>\n        /// Error creating unique tmp file.\n        /// </summary>\n        TYPE_E_CANTCREATETMPFILE = (int)(0x80028CA3 - 0x100000000),\n        /// <summary>\n        /// Error loading type library/DLL.\n        /// </summary>\n        TYPE_E_CANTLOADLIBRARY = (int)(0x80029C4A - 0x100000000),\n        /// <summary>\n        /// Inconsistent property functions.\n        /// </summary>\n        TYPE_E_INCONSISTENTPROPFUNCS = (int)(0x80029C83 - 0x100000000),\n        /// <summary>\n        /// Circular dependency between types/modules.\n        /// </summary>\n        TYPE_E_CIRCULARTYPE = (int)(0x80029C84 - 0x100000000),\n        /// <summary>\n        /// Unable to perform requested operation.\n        /// </summary>\n        STG_E_INVALIDFUNCTION = (int)(0x80030001 - 0x100000000),\n        /// <summary>\n        /// %1 could not be found.\n        /// </summary>\n        STG_E_FILENOTFOUND = (int)(0x80030002 - 0x100000000),\n        /// <summary>\n        /// The path %1 could not be found.\n        /// </summary>\n        STG_E_PATHNOTFOUND = (int)(0x80030003 - 0x100000000),\n        /// <summary>\n        /// There are insufficient resources to open another file.\n        /// </summary>\n        STG_E_TOOMANYOPENFILES = (int)(0x80030004 - 0x100000000),\n        /// <summary>\n        /// Access Denied.\n        /// </summary>\n        STG_E_ACCESSDENIED = (int)(0x80030005 - 0x100000000),\n        /// <summary>\n        /// Attempted an operation on an invalid object.\n        /// </summary>\n        STG_E_INVALIDHANDLE = (int)(0x80030006 - 0x100000000),\n        /// <summary>\n        /// There is insufficient memory available to complete operation.\n        /// </summary>\n        STG_E_INSUFFICIENTMEMORY = (int)(0x80030008 - 0x100000000),\n        /// <summary>\n        /// Invalid pointer error.\n        /// </summary>\n        STG_E_INVALIDPOINTER = (int)(0x80030009 - 0x100000000),\n        /// <summary>\n        /// There are no more entries to return.\n        /// </summary>\n        STG_E_NOMOREFILES = (int)(0x80030012 - 0x100000000),\n        /// <summary>\n        /// Disk is write-protected.\n        /// </summary>\n        STG_E_DISKISWRITEPROTECTED = (int)(0x80030013 - 0x100000000),\n        /// <summary>\n        /// An error occurred during a seek operation.\n        /// </summary>\n        STG_E_SEEKERROR = (int)(0x80030019 - 0x100000000),\n        /// <summary>\n        /// A disk error occurred during a write operation.\n        /// </summary>\n        STG_E_WRITEFAULT = (int)(0x8003001D - 0x100000000),\n        /// <summary>\n        /// A disk error occurred during a read operation.\n        /// </summary>\n        STG_E_READFAULT = (int)(0x8003001E - 0x100000000),\n        /// <summary>\n        /// A share violation has occurred.\n        /// </summary>\n        STG_E_SHAREVIOLATION = (int)(0x80030020 - 0x100000000),\n        /// <summary>\n        /// A lock violation has occurred.\n        /// </summary>\n        STG_E_LOCKVIOLATION = (int)(0x80030021 - 0x100000000),\n        /// <summary>\n        /// %1 already exists.\n        /// </summary>\n        STG_E_FILEALREADYEXISTS = (int)(0x80030050 - 0x100000000),\n        /// <summary>\n        /// Invalid parameter error.\n        /// </summary>\n        STG_E_INVALIDPARAMETER = (int)(0x80030057 - 0x100000000),\n        /// <summary>\n        /// There is insufficient disk space to complete operation.\n        /// </summary>\n        STG_E_MEDIUMFULL = (int)(0x80030070 - 0x100000000),\n        /// <summary>\n        /// Illegal write of non-simple property to simple property set.\n        /// </summary>\n        STG_E_PROPSETMISMATCHED = (int)(0x800300F0 - 0x100000000),\n        /// <summary>\n        /// An API call exited abnormally.\n        /// </summary>\n        STG_E_ABNORMALAPIEXIT = (int)(0x800300FA - 0x100000000),\n        /// <summary>\n        /// The file %1 is not a valid compound file.\n        /// </summary>\n        STG_E_INVALIDHEADER = (int)(0x800300FB - 0x100000000),\n        /// <summary>\n        /// The name %1 is not valid.\n        /// </summary>\n        STG_E_INVALIDNAME = (int)(0x800300FC - 0x100000000),\n        /// <summary>\n        /// An unexpected error occurred.\n        /// </summary>\n        STG_E_UNKNOWN = (int)(0x800300FD - 0x100000000),\n        /// <summary>\n        /// That function is not implemented.\n        /// </summary>\n        STG_E_UNIMPLEMENTEDFUNCTION = (int)(0x800300FE - 0x100000000),\n        /// <summary>\n        /// Invalid flag error.\n        /// </summary>\n        STG_E_INVALIDFLAG = (int)(0x800300FF - 0x100000000),\n        /// <summary>\n        /// Attempted to use an object that is busy.\n        /// </summary>\n        STG_E_INUSE = (int)(0x80030100 - 0x100000000),\n        /// <summary>\n        /// The storage has been changed since the last commit.\n        /// </summary>\n        STG_E_NOTCURRENT = (int)(0x80030101 - 0x100000000),\n        /// <summary>\n        /// Attempted to use an object that has ceased to exist.\n        /// </summary>\n        STG_E_REVERTED = (int)(0x80030102 - 0x100000000),\n        /// <summary>\n        /// Can't save.\n        /// </summary>\n        STG_E_CANTSAVE = (int)(0x80030103 - 0x100000000),\n        /// <summary>\n        /// The compound file %1 was produced with an incompatible version of storage.\n        /// </summary>\n        STG_E_OLDFORMAT = (int)(0x80030104 - 0x100000000),\n        /// <summary>\n        /// The compound file %1 was produced with a newer version of storage.\n        /// </summary>\n        STG_E_OLDDLL = (int)(0x80030105 - 0x100000000),\n        /// <summary>\n        /// Share.exe or equivalent is required for operation.\n        /// </summary>\n        STG_E_SHAREREQUIRED = (int)(0x80030106 - 0x100000000),\n        /// <summary>\n        /// Illegal operation called on non-file based storage.\n        /// </summary>\n        STG_E_NOTFILEBASEDSTORAGE = (int)(0x80030107 - 0x100000000),\n        /// <summary>\n        /// Illegal operation called on object with extant marshallings.\n        /// </summary>\n        STG_E_EXTANTMARSHALLINGS = (int)(0x80030108 - 0x100000000),\n        /// <summary>\n        /// The docfile has been corrupted.\n        /// </summary>\n        STG_E_DOCFILECORRUPT = (int)(0x80030109 - 0x100000000),\n        /// <summary>\n        /// OLE32.DLL has been loaded at the wrong address.\n        /// </summary>\n        STG_E_BADBASEADDRESS = (int)(0x80030110 - 0x100000000),\n        /// <summary>\n        /// The compound file is too large for the current implementation\n        /// </summary>\n        STG_E_DOCFILETOOLARGE = (int)(0x80030111 - 0x100000000),\n        /// <summary>\n        /// The compound file was not created with the STGM_SIMPLE flag\n        /// </summary>\n        STG_E_NOTSIMPLEFORMAT = (int)(0x80030112 - 0x100000000),\n        /// <summary>\n        /// The file download was aborted abnormally.  The file is incomplete.\n        /// </summary>\n        STG_E_INCOMPLETE = (int)(0x80030201 - 0x100000000),\n        /// <summary>\n        /// The file download has been terminated.\n        /// </summary>\n        STG_E_TERMINATED = (int)(0x80030202 - 0x100000000),\n        /// <summary>\n        /// The underlying file was converted to compound file format.\n        /// </summary>\n        STG_S_CONVERTED = 0x00030200,\n        /// <summary>\n        /// The storage operation should block until more data is available.\n        /// </summary>\n        STG_S_BLOCK = 0x00030201,\n        /// <summary>\n        /// The storage operation should retry immediately.\n        /// </summary>\n        STG_S_RETRYNOW = 0x00030202,\n        /// <summary>\n        /// The notified event sink will not influence the storage operation.\n        /// </summary>\n        STG_S_MONITORING = 0x00030203,\n        /// <summary>\n        /// Multiple opens prevent consolidated. (commit succeeded).\n        /// </summary>\n        STG_S_MULTIPLEOPENS = 0x00030204,\n        /// <summary>\n        /// Consolidation of the storage file failed. (commit succeeded).\n        /// </summary>\n        STG_S_CONSOLIDATIONFAILED = 0x00030205,\n        /// <summary>\n        /// Consolidation of the storage file is inappropriate. (commit succeeded).\n        /// </summary>\n        STG_S_CANNOTCONSOLIDATE = 0x00030206,\n        /// <summary>\n        /// Generic Copy Protection Error.\n        /// </summary>\n        STG_E_STATUS_COPY_PROTECTION_FAILURE = (int)(0x80030305 - 0x100000000),\n        /// <summary>\n        /// Copy Protection Error - DVD CSS Authentication failed.\n        /// </summary>\n        STG_E_CSS_AUTHENTICATION_FAILURE = (int)(0x80030306 - 0x100000000),\n        /// <summary>\n        /// Copy Protection Error - The given sector does not have a valid CSS key.\n        /// </summary>\n        STG_E_CSS_KEY_NOT_PRESENT = (int)(0x80030307 - 0x100000000),\n        /// <summary>\n        /// Copy Protection Error - DVD session key not established.\n        /// </summary>\n        STG_E_CSS_KEY_NOT_ESTABLISHED = (int)(0x80030308 - 0x100000000),\n        /// <summary>\n        /// Copy Protection Error - The read failed because the sector is encrypted.\n        /// </summary>\n        STG_E_CSS_SCRAMBLED_SECTOR = (int)(0x80030309 - 0x100000000),\n        /// <summary>\n        /// Copy Protection Error - The current DVD's region does not correspond to the region setting of the drive.\n        /// </summary>\n        STG_E_CSS_REGION_MISMATCH = (int)(0x8003030A - 0x100000000),\n        /// <summary>\n        /// Copy Protection Error - The drive's region setting may be permanent or the number of user resets has been exhausted.\n        /// </summary>\n        STG_E_RESETS_EXHAUSTED = (int)(0x8003030B - 0x100000000),\n        /// <summary>\n        /// Call was rejected by callee.\n        /// </summary>\n        RPC_E_CALL_REJECTED = (int)(0x80010001 - 0x100000000),\n        /// <summary>\n        /// Call was canceled by the message filter.\n        /// </summary>\n        RPC_E_CALL_CANCELED = (int)(0x80010002 - 0x100000000),\n        /// <summary>\n        /// The caller is dispatching an intertask SendMessage call and cannot call out via PostMessage.\n        /// </summary>\n        RPC_E_CANTPOST_INSENDCALL = (int)(0x80010003 - 0x100000000),\n        /// <summary>\n        /// The caller is dispatching an asynchronous call and cannot make an outgoing call on behalf of this call.\n        /// </summary>\n        RPC_E_CANTCALLOUT_INASYNCCALL = (int)(0x80010004 - 0x100000000),\n        /// <summary>\n        /// It is illegal to call out while inside message filter.\n        /// </summary>\n        RPC_E_CANTCALLOUT_INEXTERNALCALL = (int)(0x80010005 - 0x100000000),\n        /// <summary>\n        /// The connection terminated or is in a bogus state and cannot be used any more. Other connections are still valid.\n        /// </summary>\n        RPC_E_CONNECTION_TERMINATED = (int)(0x80010006 - 0x100000000),\n        /// <summary>\n        /// The callee (server [not server application]) is not available and disappeared, all connections are invalid. The call may have executed.\n        /// </summary>\n        RPC_E_SERVER_DIED = (int)(0x80010007 - 0x100000000),\n        /// <summary>\n        /// The caller (client) disappeared while the callee (server) was processing a call.\n        /// </summary>\n        RPC_E_CLIENT_DIED = (int)(0x80010008 - 0x100000000),\n        /// <summary>\n        /// The data packet with the marshalled parameter data is incorrect.\n        /// </summary>\n        RPC_E_INVALID_DATAPACKET = (int)(0x80010009 - 0x100000000),\n        /// <summary>\n        /// The call was not transmitted properly, the message queue was full and was not emptied after yielding.\n        /// </summary>\n        RPC_E_CANTTRANSMIT_CALL = (int)(0x8001000A - 0x100000000),\n        /// <summary>\n        /// The client (caller) cannot marshall the parameter data - low memory, etc.\n        /// </summary>\n        RPC_E_CLIENT_CANTMARSHAL_DATA = (int)(0x8001000B - 0x100000000),\n        /// <summary>\n        /// The client (caller) cannot unmarshall the return data - low memory, etc.\n        /// </summary>\n        RPC_E_CLIENT_CANTUNMARSHAL_DATA = (int)(0x8001000C - 0x100000000),\n        /// <summary>\n        /// The server (callee) cannot marshall the return data - low memory, etc.\n        /// </summary>\n        RPC_E_SERVER_CANTMARSHAL_DATA = (int)(0x8001000D - 0x100000000),\n        /// <summary>\n        /// The server (callee) cannot unmarshall the parameter data - low memory, etc.\n        /// </summary>\n        RPC_E_SERVER_CANTUNMARSHAL_DATA = (int)(0x8001000E - 0x100000000),\n        /// <summary>\n        /// Received data is invalid, could be server or client data.\n        /// </summary>\n        RPC_E_INVALID_DATA = (int)(0x8001000F - 0x100000000),\n        /// <summary>\n        /// A particular parameter is invalid and cannot be (un)marshalled.\n        /// </summary>\n        RPC_E_INVALID_PARAMETER = (int)(0x80010010 - 0x100000000),\n        /// <summary>\n        /// There is no second outgoing call on same channel in DDE conversation.\n        /// </summary>\n        RPC_E_CANTCALLOUT_AGAIN = (int)(0x80010011 - 0x100000000),\n        /// <summary>\n        /// The callee (server [not server application]) is not available and disappeared, all connections are invalid. The call did not execute.\n        /// </summary>\n        RPC_E_SERVER_DIED_DNE = (int)(0x80010012 - 0x100000000),\n        /// <summary>\n        /// System call failed.\n        /// </summary>\n        RPC_E_SYS_CALL_FAILED = (int)(0x80010100 - 0x100000000),\n        /// <summary>\n        /// Could not allocate some required resource (memory, events, ...)\n        /// </summary>\n        RPC_E_OUT_OF_RESOURCES = (int)(0x80010101 - 0x100000000),\n        /// <summary>\n        /// Attempted to make calls on more than one thread in single threaded mode.\n        /// </summary>\n        RPC_E_ATTEMPTED_MULTITHREAD = (int)(0x80010102 - 0x100000000),\n        /// <summary>\n        /// The requested interface is not registered on the server object.\n        /// </summary>\n        RPC_E_NOT_REGISTERED = (int)(0x80010103 - 0x100000000),\n        /// <summary>\n        /// RPC could not call the server or could not return the results of calling the server.\n        /// </summary>\n        RPC_E_FAULT = (int)(0x80010104 - 0x100000000),\n        /// <summary>\n        /// The server threw an exception.\n        /// </summary>\n        RPC_E_SERVERFAULT = (int)(0x80010105 - 0x100000000),\n        /// <summary>\n        /// Cannot change thread mode after it is set.\n        /// </summary>\n        RPC_E_CHANGED_MODE = (int)(0x80010106 - 0x100000000),\n        /// <summary>\n        /// The method called does not exist on the server.\n        /// </summary>\n        RPC_E_INVALIDMETHOD = (int)(0x80010107 - 0x100000000),\n        /// <summary>\n        /// The object invoked has disconnected from its clients.\n        /// </summary>\n        RPC_E_DISCONNECTED = (int)(0x80010108 - 0x100000000),\n        /// <summary>\n        /// The object invoked chose not to process the call now.  Try again later.\n        /// </summary>\n        RPC_E_RETRY = (int)(0x80010109 - 0x100000000),\n        /// <summary>\n        /// The message filter indicated that the application is busy.\n        /// </summary>\n        RPC_E_SERVERCALL_RETRYLATER = (int)(0x8001010A - 0x100000000),\n        /// <summary>\n        /// The message filter rejected the call.\n        /// </summary>\n        RPC_E_SERVERCALL_REJECTED = (int)(0x8001010B - 0x100000000),\n        /// <summary>\n        /// A call control interfaces was called with invalid data.\n        /// </summary>\n        RPC_E_INVALID_CALLDATA = (int)(0x8001010C - 0x100000000),\n        /// <summary>\n        /// An outgoing call cannot be made since the application is dispatching an input-synchronous call.\n        /// </summary>\n        RPC_E_CANTCALLOUT_ININPUTSYNCCALL = (int)(0x8001010D - 0x100000000),\n        /// <summary>\n        /// The application called an interface that was marshalled for a different thread.\n        /// </summary>\n        RPC_E_WRONG_THREAD = (int)(0x8001010E - 0x100000000),\n        /// <summary>\n        /// CoInitialize has not been called on the current thread.\n        /// </summary>\n        RPC_E_THREAD_NOT_INIT = (int)(0x8001010F - 0x100000000),\n        /// <summary>\n        /// The version of OLE on the client and server machines does not match.\n        /// </summary>\n        RPC_E_VERSION_MISMATCH = (int)(0x80010110 - 0x100000000),\n        /// <summary>\n        /// OLE received a packet with an invalid header.\n        /// </summary>\n        RPC_E_INVALID_HEADER = (int)(0x80010111 - 0x100000000),\n        /// <summary>\n        /// OLE received a packet with an invalid extension.\n        /// </summary>\n        RPC_E_INVALID_EXTENSION = (int)(0x80010112 - 0x100000000),\n        /// <summary>\n        /// The requested object or interface does not exist.\n        /// </summary>\n        RPC_E_INVALID_IPID = (int)(0x80010113 - 0x100000000),\n        /// <summary>\n        /// The requested object does not exist.\n        /// </summary>\n        RPC_E_INVALID_OBJECT = (int)(0x80010114 - 0x100000000),\n        /// <summary>\n        /// OLE has sent a request and is waiting for a reply.\n        /// </summary>\n        RPC_S_CALLPENDING = (int)(0x80010115 - 0x100000000),\n        /// <summary>\n        /// OLE is waiting before retrying a request.\n        /// </summary>\n        RPC_S_WAITONTIMER = (int)(0x80010116 - 0x100000000),\n        /// <summary>\n        /// Call context cannot be accessed after call completed.\n        /// </summary>\n        RPC_E_CALL_COMPLETE = (int)(0x80010117 - 0x100000000),\n        /// <summary>\n        /// Impersonate on unsecure calls is not supported.\n        /// </summary>\n        RPC_E_UNSECURE_CALL = (int)(0x80010118 - 0x100000000),\n        /// <summary>\n        /// Security must be initialized before any interfaces are marshalled or unmarshalled. It cannot be changed once initialized.\n        /// </summary>\n        RPC_E_TOO_LATE = (int)(0x80010119 - 0x100000000),\n        /// <summary>\n        /// No security packages are installed on this machine or the user is not logged on or there are no compatible security packages between the client and server.\n        /// </summary>\n        RPC_E_NO_GOOD_SECURITY_PACKAGES = (int)(0x8001011A - 0x100000000),\n        /// <summary>\n        /// Access is denied.\n        /// </summary>\n        RPC_E_ACCESS_DENIED = (int)(0x8001011B - 0x100000000),\n        /// <summary>\n        /// Remote calls are not allowed for this process.\n        /// </summary>\n        RPC_E_REMOTE_DISABLED = (int)(0x8001011C - 0x100000000),\n        /// <summary>\n        /// The marshaled interface data packet (OBJREF) has an invalid or unknown format.\n        /// </summary>\n        RPC_E_INVALID_OBJREF = (int)(0x8001011D - 0x100000000),\n        /// <summary>\n        /// No context is associated with this call. This happens for some custom marshalled calls and on the client side of the call.\n        /// </summary>\n        RPC_E_NO_CONTEXT = (int)(0x8001011E - 0x100000000),\n        /// <summary>\n        /// This operation returned because the timeout period expired.\n        /// </summary>\n        RPC_E_TIMEOUT = (int)(0x8001011F - 0x100000000),\n        /// <summary>\n        /// There are no synchronize objects to wait on.\n        /// </summary>\n        RPC_E_NO_SYNC = (int)(0x80010120 - 0x100000000),\n        /// <summary>\n        /// Full subject issuer chain SSL principal name expected from the server.\n        /// </summary>\n        RPC_E_FULLSIC_REQUIRED = (int)(0x80010121 - 0x100000000),\n        /// <summary>\n        /// Principal name is not a valid MSSTD name.\n        /// </summary>\n        RPC_E_INVALID_STD_NAME = (int)(0x80010122 - 0x100000000),\n        /// <summary>\n        /// Unable to impersonate DCOM client\n        /// </summary>\n        CO_E_FAILEDTOIMPERSONATE = (int)(0x80010123 - 0x100000000),\n        /// <summary>\n        /// Unable to obtain server's security context\n        /// </summary>\n        CO_E_FAILEDTOGETSECCTX = (int)(0x80010124 - 0x100000000),\n        /// <summary>\n        /// Unable to open the access token of the current thread\n        /// </summary>\n        CO_E_FAILEDTOOPENTHREADTOKEN = (int)(0x80010125 - 0x100000000),\n        /// <summary>\n        /// Unable to obtain user info from an access token\n        /// </summary>\n        CO_E_FAILEDTOGETTOKENINFO = (int)(0x80010126 - 0x100000000),\n        /// <summary>\n        /// The client who called IAccessControl::IsAccessPermitted was not the trustee provided to the method\n        /// </summary>\n        CO_E_TRUSTEEDOESNTMATCHCLIENT = (int)(0x80010127 - 0x100000000),\n        /// <summary>\n        /// Unable to obtain the client's security blanket\n        /// </summary>\n        CO_E_FAILEDTOQUERYCLIENTBLANKET = (int)(0x80010128 - 0x100000000),\n        /// <summary>\n        /// Unable to set a discretionary ACL into a security descriptor\n        /// </summary>\n        CO_E_FAILEDTOSETDACL = (int)(0x80010129 - 0x100000000),\n        /// <summary>\n        /// The system function, AccessCheck, returned false\n        /// </summary>\n        CO_E_ACCESSCHECKFAILED = (int)(0x8001012A - 0x100000000),\n        /// <summary>\n        /// Either NetAccessDel or NetAccessAdd returned an error code.\n        /// </summary>\n        CO_E_NETACCESSAPIFAILED = (int)(0x8001012B - 0x100000000),\n        /// <summary>\n        /// One of the trustee strings provided by the user did not conform to the <Domain>\\<Name> syntax and it was not the \"*\" string\n        /// </summary>\n        CO_E_WRONGTRUSTEENAMESYNTAX = (int)(0x8001012C - 0x100000000),\n        /// <summary>\n        /// One of the security identifiers provided by the user was invalid\n        /// </summary>\n        CO_E_INVALIDSID = (int)(0x8001012D - 0x100000000),\n        /// <summary>\n        /// Unable to convert a wide character trustee string to a multibyte trustee string\n        /// </summary>\n        CO_E_CONVERSIONFAILED = (int)(0x8001012E - 0x100000000),\n        /// <summary>\n        /// Unable to find a security identifier that corresponds to a trustee string provided by the user\n        /// </summary>\n        CO_E_NOMATCHINGSIDFOUND = (int)(0x8001012F - 0x100000000),\n        /// <summary>\n        /// The system function, LookupAccountSID, failed\n        /// </summary>\n        CO_E_LOOKUPACCSIDFAILED = (int)(0x80010130 - 0x100000000),\n        /// <summary>\n        /// Unable to find a trustee name that corresponds to a security identifier provided by the user\n        /// </summary>\n        CO_E_NOMATCHINGNAMEFOUND = (int)(0x80010131 - 0x100000000),\n        /// <summary>\n        /// The system function, LookupAccountName, failed\n        /// </summary>\n        CO_E_LOOKUPACCNAMEFAILED = (int)(0x80010132 - 0x100000000),\n        /// <summary>\n        /// Unable to set or reset a serialization handle\n        /// </summary>\n        CO_E_SETSERLHNDLFAILED = (int)(0x80010133 - 0x100000000),\n        /// <summary>\n        /// Unable to obtain the Windows directory\n        /// </summary>\n        CO_E_FAILEDTOGETWINDIR = (int)(0x80010134 - 0x100000000),\n        /// <summary>\n        /// Path too long\n        /// </summary>\n        CO_E_PATHTOOInt32 = (int)(0x80010135 - 0x100000000),\n        /// <summary>\n        /// Unable to generate a uuid.\n        /// </summary>\n        CO_E_FAILEDTOGENUUID = (int)(0x80010136 - 0x100000000),\n        /// <summary>\n        /// Unable to create file\n        /// </summary>\n        CO_E_FAILEDTOCREATEFILE = (int)(0x80010137 - 0x100000000),\n        /// <summary>\n        /// Unable to close a serialization handle or a file handle.\n        /// </summary>\n        CO_E_FAILEDTOCLOSEHANDLE = (int)(0x80010138 - 0x100000000),\n        /// <summary>\n        /// The number of ACEs in an ACL exceeds the system limit.\n        /// </summary>\n        CO_E_EXCEEDSYSACLLIMIT = (int)(0x80010139 - 0x100000000),\n        /// <summary>\n        /// Not all the DENY_ACCESS ACEs are arranged in front of the GRANT_ACCESS ACEs in the stream.\n        /// </summary>\n        CO_E_ACESINWRONGORDER = (int)(0x8001013A - 0x100000000),\n        /// <summary>\n        /// The version of ACL format in the stream is not supported by this implementation of IAccessControl\n        /// </summary>\n        CO_E_INCOMPATIBLESTREAMVERSION = (int)(0x8001013B - 0x100000000),\n        /// <summary>\n        /// Unable to open the access token of the server process\n        /// </summary>\n        CO_E_FAILEDTOOPENPROCESSTOKEN = (int)(0x8001013C - 0x100000000),\n        /// <summary>\n        /// Unable to decode the ACL in the stream provided by the user\n        /// </summary>\n        CO_E_DECODEFAILED = (int)(0x8001013D - 0x100000000),\n        /// <summary>\n        /// The COM IAccessControl object is not initialized\n        /// </summary>\n        CO_E_ACNOTINITIALIZED = (int)(0x8001013F - 0x100000000),\n        /// <summary>\n        /// Call Cancellation is disabled\n        /// </summary>\n        CO_E_CANCEL_DISABLED = (int)(0x80010140 - 0x100000000),\n        /// <summary>\n        /// An internal error occurred.\n        /// </summary>\n        RPC_E_UNEXPECTED = (int)(0x8001FFFF - 0x100000000),\n        /// <summary>\n        /// The specified event is currently not being audited.\n        /// </summary>\n        ERROR_AUDITING_DISABLED = (int)(0xC0090001 - 0x100000000),\n        /// <summary>\n        /// The SID filtering operation removed all SIDs.\n        /// </summary>\n        ERROR_ALL_SIDS_FILTERED = (int)(0xC0090002 - 0x100000000),\n        /// <summary>\n        /// Bad UID.\n        /// </summary>\n        NTE_BAD_UID = (int)(0x80090001 - 0x100000000),\n        /// <summary>\n        /// Bad Hash.\n        /// </summary>\n        NTE_BAD_HASH = (int)(0x80090002 - 0x100000000),\n        /// <summary>\n        /// Bad Key.\n        /// </summary>\n        NTE_BAD_KEY = (int)(0x80090003 - 0x100000000),\n        /// <summary>\n        /// Bad Length.\n        /// </summary>\n        NTE_BAD_LEN = (int)(0x80090004 - 0x100000000),\n        /// <summary>\n        /// Bad Data.\n        /// </summary>\n        NTE_BAD_DATA = (int)(0x80090005 - 0x100000000),\n        /// <summary>\n        /// Invalid Signature.\n        /// </summary>\n        NTE_BAD_SIGNATURE = (int)(0x80090006 - 0x100000000),\n        /// <summary>\n        /// Bad Version of provider.\n        /// </summary>\n        NTE_BAD_VER = (int)(0x80090007 - 0x100000000),\n        /// <summary>\n        /// Invalid algorithm specified.\n        /// </summary>\n        NTE_BAD_ALGID = (int)(0x80090008 - 0x100000000),\n        /// <summary>\n        /// Invalid flags specified.\n        /// </summary>\n        NTE_BAD_FLAGS = (int)(0x80090009 - 0x100000000),\n        /// <summary>\n        /// Invalid type specified.\n        /// </summary>\n        NTE_BAD_TYPE = (int)(0x8009000A - 0x100000000),\n        /// <summary>\n        /// Key not valid for use in specified state.\n        /// </summary>\n        NTE_BAD_KEY_STATE = (int)(0x8009000B - 0x100000000),\n        /// <summary>\n        /// Hash not valid for use in specified state.\n        /// </summary>\n        NTE_BAD_HASH_STATE = (int)(0x8009000C - 0x100000000),\n        /// <summary>\n        /// Key does not exist.\n        /// </summary>\n        NTE_NO_KEY = (int)(0x8009000D - 0x100000000),\n        /// <summary>\n        /// Insufficient memory available for the operation.\n        /// </summary>\n        NTE_NO_MEMORY = (int)(0x8009000E - 0x100000000),\n        /// <summary>\n        /// Object already exists.\n        /// </summary>\n        NTE_EXISTS = (int)(0x8009000F - 0x100000000),\n        /// <summary>\n        /// Access denied.\n        /// </summary>\n        NTE_PERM = (int)(0x80090010 - 0x100000000),\n        /// <summary>\n        /// Object was not found.\n        /// </summary>\n        NTE_NOT_FOUND = (int)(0x80090011 - 0x100000000),\n        /// <summary>\n        /// Data already encrypted.\n        /// </summary>\n        NTE_DOUBLE_ENCRYPT = (int)(0x80090012 - 0x100000000),\n        /// <summary>\n        /// Invalid provider specified.\n        /// </summary>\n        NTE_BAD_PROVIDER = (int)(0x80090013 - 0x100000000),\n        /// <summary>\n        /// Invalid provider type specified.\n        /// </summary>\n        NTE_BAD_PROV_TYPE = (int)(0x80090014 - 0x100000000),\n        /// <summary>\n        /// Provider's public key is invalid.\n        /// </summary>\n        NTE_BAD_PUBLIC_KEY = (int)(0x80090015 - 0x100000000),\n        /// <summary>\n        /// Keyset does not exist\n        /// </summary>\n        NTE_BAD_KEYSET = (int)(0x80090016 - 0x100000000),\n        /// <summary>\n        /// Provider type not defined.\n        /// </summary>\n        NTE_PROV_TYPE_NOT_DEF = (int)(0x80090017 - 0x100000000),\n        /// <summary>\n        /// Provider type as registered is invalid.\n        /// </summary>\n        NTE_PROV_TYPE_ENTRY_BAD = (int)(0x80090018 - 0x100000000),\n        /// <summary>\n        /// The keyset is not defined.\n        /// </summary>\n        NTE_KEYSET_NOT_DEF = (int)(0x80090019 - 0x100000000),\n        /// <summary>\n        /// Keyset as registered is invalid.\n        /// </summary>\n        NTE_KEYSET_ENTRY_BAD = (int)(0x8009001A - 0x100000000),\n        /// <summary>\n        /// Provider type does not match registered value.\n        /// </summary>\n        NTE_PROV_TYPE_NO_MATCH = (int)(0x8009001B - 0x100000000),\n        /// <summary>\n        /// The digital signature file is corrupt.\n        /// </summary>\n        NTE_SIGNATURE_FILE_BAD = (int)(0x8009001C - 0x100000000),\n        /// <summary>\n        /// Provider DLL failed to initialize correctly.\n        /// </summary>\n        NTE_PROVIDER_DLL_FAIL = (int)(0x8009001D - 0x100000000),\n        /// <summary>\n        /// Provider DLL could not be found.\n        /// </summary>\n        NTE_PROV_DLL_NOT_FOUND = (int)(0x8009001E - 0x100000000),\n        /// <summary>\n        /// The Keyset parameter is invalid.\n        /// </summary>\n        NTE_BAD_KEYSET_PARAM = (int)(0x8009001F - 0x100000000),\n        /// <summary>\n        /// An internal error occurred.\n        /// </summary>\n        NTE_FAIL = (int)(0x80090020 - 0x100000000),\n        /// <summary>\n        /// A base error occurred.\n        /// </summary>\n        NTE_SYS_ERR = (int)(0x80090021 - 0x100000000),\n        /// <summary>\n        /// Provider could not perform the action since the context was acquired as silent.\n        /// </summary>\n        NTE_SILENT_CONTEXT = (int)(0x80090022 - 0x100000000),\n        /// <summary>\n        /// The security token does not have storage space available for an additional container.\n        /// </summary>\n        NTE_TOKEN_KEYSET_STORAGE_FULL = (int)(0x80090023 - 0x100000000),\n        /// <summary>\n        /// The profile for the user is a temporary profile.\n        /// </summary>\n        NTE_TEMPORARY_PROFILE = (int)(0x80090024 - 0x100000000),\n        /// <summary>\n        /// The key parameters could not be set because the CSP uses fixed parameters.\n        /// </summary>\n        NTE_FIXEDPARAMETER = (int)(0x80090025 - 0x100000000),\n        /// <summary>\n        /// Not enough memory is available to complete this request\n        /// </summary>\n        SEC_E_INSUFFICIENT_MEMORY = (int)(0x80090300 - 0x100000000),\n        /// <summary>\n        /// The handle specified is invalid\n        /// </summary>\n        SEC_E_INVALID_HANDLE = (int)(0x80090301 - 0x100000000),\n        /// <summary>\n        /// The function requested is not supported\n        /// </summary>\n        SEC_E_UNSUPPORTED_FUNCTION = (int)(0x80090302 - 0x100000000),\n        /// <summary>\n        /// The specified target is unknown or unreachable\n        /// </summary>\n        SEC_E_TARGET_UNKNOWN = (int)(0x80090303 - 0x100000000),\n        /// <summary>\n        /// The Local Security Authority cannot be contacted\n        /// </summary>\n        SEC_E_INTERNAL_ERROR = (int)(0x80090304 - 0x100000000),\n        /// <summary>\n        /// The requested security package does not exist\n        /// </summary>\n        SEC_E_SECPKG_NOT_FOUND = (int)(0x80090305 - 0x100000000),\n        /// <summary>\n        /// The caller is not the owner of the desired credentials\n        /// </summary>\n        SEC_E_NOT_OWNER = (int)(0x80090306 - 0x100000000),\n        /// <summary>\n        /// The security package failed to initialize, and cannot be installed\n        /// </summary>\n        SEC_E_CANNOT_INSTALL = (int)(0x80090307 - 0x100000000),\n        /// <summary>\n        /// The token supplied to the function is invalid\n        /// </summary>\n        SEC_E_INVALID_TOKEN = (int)(0x80090308 - 0x100000000),\n        /// <summary>\n        /// The security package is not able to marshall the logon buffer, so the logon attempt has failed\n        /// </summary>\n        SEC_E_CANNOT_PACK = (int)(0x80090309 - 0x100000000),\n        /// <summary>\n        /// The per-message Quality of Protection is not supported by the security package\n        /// </summary>\n        SEC_E_QOP_NOT_SUPPORTED = (int)(0x8009030A - 0x100000000),\n        /// <summary>\n        /// The security context does not allow impersonation of the client\n        /// </summary>\n        SEC_E_NO_IMPERSONATION = (int)(0x8009030B - 0x100000000),\n        /// <summary>\n        /// The logon attempt failed\n        /// </summary>\n        SEC_E_LOGON_DENIED = (int)(0x8009030C - 0x100000000),\n        /// <summary>\n        /// The credentials supplied to the package were not recognized\n        /// </summary>\n        SEC_E_UNKNOWN_CREDENTIALS = (int)(0x8009030D - 0x100000000),\n        /// <summary>\n        /// No credentials are available in the security package\n        /// </summary>\n        SEC_E_NO_CREDENTIALS = (int)(0x8009030E - 0x100000000),\n        /// <summary>\n        /// The message or signature supplied for verification has been altered\n        /// </summary>\n        SEC_E_MESSAGE_ALTERED = (int)(0x8009030F - 0x100000000),\n        /// <summary>\n        /// The message supplied for verification is out of sequence\n        /// </summary>\n        SEC_E_OUT_OF_SEQUENCE = (int)(0x80090310 - 0x100000000),\n        /// <summary>\n        /// No authority could be contacted for authentication.\n        /// </summary>\n        SEC_E_NO_AUTHENTICATING_AUTHORITY = (int)(0x80090311 - 0x100000000),\n        /// <summary>\n        /// The function completed successfully, but must be called again to complete the context\n        /// </summary>\n        SEC_I_CONTINUE_NEEDED = 0x00090312,\n        /// <summary>\n        /// The function completed successfully, but CompleteToken must be called\n        /// </summary>\n        SEC_I_COMPLETE_NEEDED = 0x00090313,\n        /// <summary>\n        /// The function completed successfully, but both CompleteToken and this function must be called to complete the context\n        /// </summary>\n        SEC_I_COMPLETE_AND_CONTINUE = 0x00090314,\n        /// <summary>\n        /// The logon was completed, but no network authority was available. The logon was made using locally known information\n        /// </summary>\n        SEC_I_LOCAL_LOGON = 0x00090315,\n        /// <summary>\n        /// The requested security package does not exist\n        /// </summary>\n        SEC_E_BAD_PKGID = (int)(0x80090316 - 0x100000000),\n        /// <summary>\n        /// The context has expired and can no longer be used.\n        /// </summary>\n        SEC_E_CONTEXT_EXPIRED = (int)(0x80090317 - 0x100000000),\n        /// <summary>\n        /// The context has expired and can no longer be used.\n        /// </summary>\n        SEC_I_CONTEXT_EXPIRED = 0x00090317,\n        /// <summary>\n        /// The supplied message is incomplete.  The signature was not verified.\n        /// </summary>\n        SEC_E_INCOMPLETE_MESSAGE = (int)(0x80090318 - 0x100000000),\n        /// <summary>\n        /// The credentials supplied were not complete, and could not be verified. The context could not be initialized.\n        /// </summary>\n        SEC_E_INCOMPLETE_CREDENTIALS = (int)(0x80090320 - 0x100000000),\n        /// <summary>\n        /// The buffers supplied to a function was too small.\n        /// </summary>\n        SEC_E_BUFFER_TOO_SMALL = (int)(0x80090321 - 0x100000000),\n        /// <summary>\n        /// The credentials supplied were not complete, and could not be verified. Additional information can be returned from the context.\n        /// </summary>\n        SEC_I_INCOMPLETE_CREDENTIALS = 0x00090320,\n        /// <summary>\n        /// The context data must be renegotiated with the peer.\n        /// </summary>\n        SEC_I_RENEGOTIATE = 0x00090321,\n        /// <summary>\n        /// The target principal name is incorrect.\n        /// </summary>\n        SEC_E_WRONG_PRINCIPAL = (int)(0x80090322 - 0x100000000),\n        /// <summary>\n        /// There is no LSA mode context associated with this context.\n        /// </summary>\n        SEC_I_NO_LSA_CONTEXT = 0x00090323,\n        /// <summary>\n        /// The clocks on the client and server machines are skewed.\n        /// </summary>\n        SEC_E_TIME_SKEW = (int)(0x80090324 - 0x100000000),\n        /// <summary>\n        /// The certificate chain was issued by an authority that is not trusted.\n        /// </summary>\n        SEC_E_UNTRUSTED_ROOT = (int)(0x80090325 - 0x100000000),\n        /// <summary>\n        /// The message received was unexpected or badly formatted.\n        /// </summary>\n        SEC_E_ILLEGAL_MESSAGE = (int)(0x80090326 - 0x100000000),\n        /// <summary>\n        /// An unknown error occurred while processing the certificate.\n        /// </summary>\n        SEC_E_CERT_UNKNOWN = (int)(0x80090327 - 0x100000000),\n        /// <summary>\n        /// The received certificate has expired.\n        /// </summary>\n        SEC_E_CERT_EXPIRED = (int)(0x80090328 - 0x100000000),\n        /// <summary>\n        /// The specified data could not be encrypted.\n        /// </summary>\n        SEC_E_ENCRYPT_FAILURE = (int)(0x80090329 - 0x100000000),\n        /// <summary>\n        /// The specified data could not be decrypted.\n        /// </summary>\n        SEC_E_DECRYPT_FAILURE = (int)(0x80090330 - 0x100000000),\n        /// <summary>\n        /// The client and server cannot communicate, because they do not possess a common algorithm.\n        /// </summary>\n        SEC_E_ALGORITHM_MISMATCH = (int)(0x80090331 - 0x100000000),\n        /// <summary>\n        /// The security context could not be established due to a failure in the requested quality of service (e.g. mutual authentication or delegation).\n        /// </summary>\n        SEC_E_SECURITY_QOS_FAILED = (int)(0x80090332 - 0x100000000),\n        /// <summary>\n        /// A security context was deleted before the context was completed.  This is considered a logon failure.\n        /// </summary>\n        SEC_E_UNFINISHED_CONTEXT_DELETED = (int)(0x80090333 - 0x100000000),\n        /// <summary>\n        /// The client is trying to negotiate a context and the server requires user-to-user but didn't send a TGT reply.\n        /// </summary>\n        SEC_E_NO_TGT_REPLY = (int)(0x80090334 - 0x100000000),\n        /// <summary>\n        /// Unable to accomplish the requested task because the local machine does not have any IP addresses.\n        /// </summary>\n        SEC_E_NO_IP_ADDRESSES = (int)(0x80090335 - 0x100000000),\n        /// <summary>\n        /// The supplied credential handle does not match the credential associated with the security context.\n        /// </summary>\n        SEC_E_WRONG_CREDENTIAL_HANDLE = (int)(0x80090336 - 0x100000000),\n        /// <summary>\n        /// The crypto system or checksum function is invalid because a required function is unavailable.\n        /// </summary>\n        SEC_E_CRYPTO_SYSTEM_INVALID = (int)(0x80090337 - 0x100000000),\n        /// <summary>\n        /// The number of maximum ticket referrals has been exceeded.\n        /// </summary>\n        SEC_E_MAX_REFERRALS_EXCEEDED = (int)(0x80090338 - 0x100000000),\n        /// <summary>\n        /// The local machine must be a Kerberos KDC (domain controller) and it is not.\n        /// </summary>\n        SEC_E_MUST_BE_KDC = (int)(0x80090339 - 0x100000000),\n        /// <summary>\n        /// The other end of the security negotiation is requires strong crypto but it is not supported on the local machine.\n        /// </summary>\n        SEC_E_STRONG_CRYPTO_NOT_SUPPORTED = (int)(0x8009033A - 0x100000000),\n        /// <summary>\n        /// The KDC reply contained more than one principal name.\n        /// </summary>\n        SEC_E_TOO_MANY_PRINCIPALS = (int)(0x8009033B - 0x100000000),\n        /// <summary>\n        /// Expected to find PA data for a hint of what etype to use, but it was not found.\n        /// </summary>\n        SEC_E_NO_PA_DATA = (int)(0x8009033C - 0x100000000),\n        /// <summary>\n        /// The client cert name does not matches the user name or the KDC name is incorrect.\n        /// </summary>\n        SEC_E_PKINIT_NAME_MISMATCH = (int)(0x8009033D - 0x100000000),\n        /// <summary>\n        /// Smartcard logon is required and was not used.\n        /// </summary>\n        SEC_E_SMARTCARD_LOGON_REQUIRED = (int)(0x8009033E - 0x100000000),\n        /// <summary>\n        /// A system shutdown is in progress.\n        /// </summary>\n        SEC_E_SHUTDOWN_IN_PROGRESS = (int)(0x8009033F - 0x100000000),\n        /// <summary>\n        /// An invalid request was sent to the KDC.\n        /// </summary>\n        SEC_E_KDC_INVALID_REQUEST = (int)(0x80090340 - 0x100000000),\n        /// <summary>\n        /// The KDC was unable to generate a referral for the service requested.\n        /// </summary>\n        SEC_E_KDC_UNABLE_TO_REFER = (int)(0x80090341 - 0x100000000),\n        /// <summary>\n        /// The encryption type requested is not supported by the KDC.\n        /// </summary>\n        SEC_E_KDC_UNKNOWN_ETYPE = (int)(0x80090342 - 0x100000000),\n        /// <summary>\n        /// An unsupported preauthentication mechanism was presented to the kerberos package.\n        /// </summary>\n        SEC_E_UNSUPPORTED_PREAUTH = (int)(0x80090343 - 0x100000000),\n        /// <summary>\n        /// The requested operation requires delegation to be enabled on the machine.\n        /// </summary>\n        SEC_E_DELEGATION_REQUIRED = (int)(0x80090345 - 0x100000000),\n        /// <summary>\n        /// Client's supplied SSPI channel bindings were incorrect.\n        /// </summary>\n        SEC_E_BAD_BINDINGS = (int)(0x80090346 - 0x100000000),\n        /// <summary>\n        /// The received certificate was mapped to multiple accounts.\n        /// </summary>\n        SEC_E_MULTIPLE_ACCOUNTS = (int)(0x80090347 - 0x100000000),\n        /// <summary>\n        /// SEC_E_NO_KERB_KEY\n        /// </summary>\n        SEC_E_NO_KERB_KEY = (int)(0x80090348 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        SEC_E_CERT_WRONG_USAGE = (int)(0x80090349 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        SEC_E_DOWNGRADE_DETECTED = (int)(0x80090350 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        SEC_E_SMARTCARD_CERT_REVOKED = (int)(0x80090351 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        SEC_E_ISSUING_CA_UNTRUSTED = (int)(0x80090352 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        SEC_E_REVOCATION_OFFLINE_C = (int)(0x80090353 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        SEC_E_PKINIT_CLIENT_FAILURE = (int)(0x80090354 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        SEC_E_SMARTCARD_CERT_EXPIRED = (int)(0x80090355 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        SEC_E_NO_S4U_PROT_SUPPORT = (int)(0x80090356 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        SEC_E_CROSSREALM_DELEGATION_FAILURE = (int)(0x80090357 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        SEC_E_NO_SPM = SEC_E_INTERNAL_ERROR,\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        SEC_E_NOT_SUPPORTED = SEC_E_UNSUPPORTED_FUNCTION,\n        /// <summary>\n        /// An error occurred while performing an operation on a cryptographic message.\n        /// </summary>\n        CRYPT_E_MSG_ERROR = (int)(0x80091001 - 0x100000000),\n        /// <summary>\n        /// Unknown cryptographic algorithm.\n        /// </summary>\n        CRYPT_E_UNKNOWN_ALGO = (int)(0x80091002 - 0x100000000),\n        /// <summary>\n        /// The object identifier is poorly formatted.\n        /// </summary>\n        CRYPT_E_OID_FORMAT = (int)(0x80091003 - 0x100000000),\n        /// <summary>\n        /// Invalid cryptographic message type.\n        /// </summary>\n        CRYPT_E_INVALID_MSG_TYPE = (int)(0x80091004 - 0x100000000),\n        /// <summary>\n        /// Unexpected cryptographic message encoding.\n        /// </summary>\n        CRYPT_E_UNEXPECTED_ENCODING = (int)(0x80091005 - 0x100000000),\n        /// <summary>\n        /// The cryptographic message does not contain an expected authenticated attribute.\n        /// </summary>\n        CRYPT_E_AUTH_ATTR_MISSING = (int)(0x80091006 - 0x100000000),\n        /// <summary>\n        /// The hash value is not correct.\n        /// </summary>\n        CRYPT_E_HASH_VALUE = (int)(0x80091007 - 0x100000000),\n        /// <summary>\n        /// The index value is not valid.\n        /// </summary>\n        CRYPT_E_INVALID_INDEX = (int)(0x80091008 - 0x100000000),\n        /// <summary>\n        /// The content of the cryptographic message has already been decrypted.\n        /// </summary>\n        CRYPT_E_ALREADY_DECRYPTED = (int)(0x80091009 - 0x100000000),\n        /// <summary>\n        /// The content of the cryptographic message has not been decrypted yet.\n        /// </summary>\n        CRYPT_E_NOT_DECRYPTED = (int)(0x8009100A - 0x100000000),\n        /// <summary>\n        /// The enveloped-data message does not contain the specified recipient.\n        /// </summary>\n        CRYPT_E_RECIPIENT_NOT_FOUND = (int)(0x8009100B - 0x100000000),\n        /// <summary>\n        /// Invalid control type.\n        /// </summary>\n        CRYPT_E_CONTROL_TYPE = (int)(0x8009100C - 0x100000000),\n        /// <summary>\n        /// Invalid issuer and/or serial number.\n        /// </summary>\n        CRYPT_E_ISSUER_SERIALNUMBER = (int)(0x8009100D - 0x100000000),\n        /// <summary>\n        /// Cannot find the original signer.\n        /// </summary>\n        CRYPT_E_SIGNER_NOT_FOUND = (int)(0x8009100E - 0x100000000),\n        /// <summary>\n        /// The cryptographic message does not contain all of the requested attributes.\n        /// </summary>\n        CRYPT_E_ATTRIBUTES_MISSING = (int)(0x8009100F - 0x100000000),\n        /// <summary>\n        /// The streamed cryptographic message is not ready to return data.\n        /// </summary>\n        CRYPT_E_STREAM_MSG_NOT_READY = (int)(0x80091010 - 0x100000000),\n        /// <summary>\n        /// The streamed cryptographic message requires more data to complete the decode operation.\n        /// </summary>\n        CRYPT_E_STREAM_INSUFFICIENT_DATA = (int)(0x80091011 - 0x100000000),\n        /// <summary>\n        /// The protected data needs to be re-protected.\n        /// </summary>\n        CRYPT_I_NEW_PROTECTION_REQUIRED = 0x00091012,\n        /// <summary>\n        /// The length specified for the output data was insufficient.\n        /// </summary>\n        CRYPT_E_BAD_LEN = (int)(0x80092001 - 0x100000000),\n        /// <summary>\n        /// An error occurred during encode or decode operation.\n        /// </summary>\n        CRYPT_E_BAD_ENCODE = (int)(0x80092002 - 0x100000000),\n        /// <summary>\n        /// An error occurred while reading or writing to a file.\n        /// </summary>\n        CRYPT_E_FILE_ERROR = (int)(0x80092003 - 0x100000000),\n        /// <summary>\n        /// Cannot find object or property.\n        /// </summary>\n        CRYPT_E_NOT_FOUND = (int)(0x80092004 - 0x100000000),\n        /// <summary>\n        /// The object or property already exists.\n        /// </summary>\n        CRYPT_E_EXISTS = (int)(0x80092005 - 0x100000000),\n        /// <summary>\n        /// No provider was specified for the store or object.\n        /// </summary>\n        CRYPT_E_NO_PROVIDER = (int)(0x80092006 - 0x100000000),\n        /// <summary>\n        /// The specified certificate is self signed.\n        /// </summary>\n        CRYPT_E_SELF_SIGNED = (int)(0x80092007 - 0x100000000),\n        /// <summary>\n        /// The previous certificate or CRL context was deleted.\n        /// </summary>\n        CRYPT_E_DELETED_PREV = (int)(0x80092008 - 0x100000000),\n        /// <summary>\n        /// Cannot find the requested object.\n        /// </summary>\n        CRYPT_E_NO_MATCH = (int)(0x80092009 - 0x100000000),\n        /// <summary>\n        /// The certificate does not have a property that references a private key.\n        /// </summary>\n        CRYPT_E_UNEXPECTED_MSG_TYPE = (int)(0x8009200A - 0x100000000),\n        /// <summary>\n        /// Cannot find the certificate and private key for decryption.\n        /// </summary>\n        CRYPT_E_NO_KEY_PROPERTY = (int)(0x8009200B - 0x100000000),\n        /// <summary>\n        /// Cannot find the certificate and private key to use for decryption.\n        /// </summary>\n        CRYPT_E_NO_DECRYPT_CERT = (int)(0x8009200C - 0x100000000),\n        /// <summary>\n        /// Not a cryptographic message or the cryptographic message is not formatted correctly.\n        /// </summary>\n        CRYPT_E_BAD_MSG = (int)(0x8009200D - 0x100000000),\n        /// <summary>\n        /// The signed cryptographic message does not have a signer for the specified signer index.\n        /// </summary>\n        CRYPT_E_NO_SIGNER = (int)(0x8009200E - 0x100000000),\n        /// <summary>\n        /// Final closure is pending until additional frees or closes.\n        /// </summary>\n        CRYPT_E_PENDING_CLOSE = (int)(0x8009200F - 0x100000000),\n        /// <summary>\n        /// The certificate is revoked.\n        /// </summary>\n        CRYPT_E_REVOKED = (int)(0x80092010 - 0x100000000),\n        /// <summary>\n        /// No Dll or exported function was found to verify revocation.\n        /// </summary>\n        CRYPT_E_NO_REVOCATION_DLL = (int)(0x80092011 - 0x100000000),\n        /// <summary>\n        /// The revocation function was unable to check revocation for the certificate.\n        /// </summary>\n        CRYPT_E_NO_REVOCATION_CHECK = (int)(0x80092012 - 0x100000000),\n        /// <summary>\n        /// The revocation function was unable to check revocation because the revocation server was offline.\n        /// </summary>\n        CRYPT_E_REVOCATION_OFFLINE = (int)(0x80092013 - 0x100000000),\n        /// <summary>\n        /// The certificate is not in the revocation server's database.\n        /// </summary>\n        CRYPT_E_NOT_IN_REVOCATION_DATABASE = (int)(0x80092014 - 0x100000000),\n        /// <summary>\n        /// The string contains a non-numeric character.\n        /// </summary>\n        CRYPT_E_INVALID_NUMERIC_STRING = (int)(0x80092020 - 0x100000000),\n        /// <summary>\n        /// The string contains a non-printable character.\n        /// </summary>\n        CRYPT_E_INVALID_PRINTABLE_STRING = (int)(0x80092021 - 0x100000000),\n        /// <summary>\n        /// The string contains a character not in the 7 bit ASCII character set.\n        /// </summary>\n        CRYPT_E_INVALID_IA5_STRING = (int)(0x80092022 - 0x100000000),\n        /// <summary>\n        /// The string contains an invalid X500 name attribute key, oid, value or delimiter.\n        /// </summary>\n        CRYPT_E_INVALID_X500_STRING = (int)(0x80092023 - 0x100000000),\n        /// <summary>\n        /// The dwValueType for the CERT_NAME_VALUE is not one of the character strings.  Most likely it is either a CERT_RDN_ENCODED_BLOB or CERT_TDN_OCTED_STRING.\n        /// </summary>\n        CRYPT_E_NOT_CHAR_STRING = (int)(0x80092024 - 0x100000000),\n        /// <summary>\n        /// The Put operation can not continue.  The file needs to be resized.  However, there is already a signature present.  A complete signing operation must be done.\n        /// </summary>\n        CRYPT_E_FILERESIZED = (int)(0x80092025 - 0x100000000),\n        /// <summary>\n        /// The cryptographic operation failed due to a local security option setting.\n        /// </summary>\n        CRYPT_E_SECURITY_SETTINGS = (int)(0x80092026 - 0x100000000),\n        /// <summary>\n        /// No DLL or exported function was found to verify subject usage.\n        /// </summary>\n        CRYPT_E_NO_VERIFY_USAGE_DLL = (int)(0x80092027 - 0x100000000),\n        /// <summary>\n        /// The called function was unable to do a usage check on the subject.\n        /// </summary>\n        CRYPT_E_NO_VERIFY_USAGE_CHECK = (int)(0x80092028 - 0x100000000),\n        /// <summary>\n        /// Since the server was offline, the called function was unable to complete the usage check.\n        /// </summary>\n        CRYPT_E_VERIFY_USAGE_OFFLINE = (int)(0x80092029 - 0x100000000),\n        /// <summary>\n        /// The subject was not found in a Certificate Trust List (CTL).\n        /// </summary>\n        CRYPT_E_NOT_IN_CTL = (int)(0x8009202A - 0x100000000),\n        /// <summary>\n        /// None of the signers of the cryptographic message or certificate trust list is trusted.\n        /// </summary>\n        CRYPT_E_NO_TRUSTED_SIGNER = (int)(0x8009202B - 0x100000000),\n        /// <summary>\n        /// The public key's algorithm parameters are missing.\n        /// </summary>\n        CRYPT_E_MISSING_PUBKEY_PARA = (int)(0x8009202C - 0x100000000),\n        /// <summary>\n        /// OSS Certificate encode/decode error code base\n        ///\n        /// See asn1code.h for a definition of the OSS runtime errors. The OSS\n        /// error values are offset by CRYPT_E_OSS_ERROR.\n        /// </summary>\n        CRYPT_E_OSS_ERROR = (int)(0x80093000 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Output Buffer is too small.\n        /// </summary>\n        OSS_MORE_BUF = (int)(0x80093001 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Signed integer is encoded as a unsigned integer.\n        /// </summary>\n        OSS_NEGATIVE_UINTEGER = (int)(0x80093002 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Unknown ASN.1 data type.\n        /// </summary>\n        OSS_PDU_RANGE = (int)(0x80093003 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Output buffer is too small, the decoded data has been truncated.\n        /// </summary>\n        OSS_MORE_INPUT = (int)(0x80093004 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Invalid data.\n        /// </summary>\n        OSS_DATA_ERROR = (int)(0x80093005 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Invalid argument.\n        /// </summary>\n        OSS_BAD_ARG = (int)(0x80093006 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Encode/Decode version mismatch.\n        /// </summary>\n        OSS_BAD_VERSION = (int)(0x80093007 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Out of memory.\n        /// </summary>\n        OSS_OUT_MEMORY = (int)(0x80093008 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Encode/Decode Error.\n        /// </summary>\n        OSS_PDU_MISMATCH = (int)(0x80093009 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Internal Error.\n        /// </summary>\n        OSS_LIMITED = (int)(0x8009300A - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Invalid data.\n        /// </summary>\n        OSS_BAD_PTR = (int)(0x8009300B - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Invalid data.\n        /// </summary>\n        OSS_BAD_TIME = (int)(0x8009300C - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Unsupported BER indefinite-length encoding.\n        /// </summary>\n        OSS_INDEFINITE_NOT_SUPPORTED = (int)(0x8009300D - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Access violation.\n        /// </summary>\n        OSS_MEM_ERROR = (int)(0x8009300E - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Invalid data.\n        /// </summary>\n        OSS_BAD_TABLE = (int)(0x8009300F - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Invalid data.\n        /// </summary>\n        OSS_TOO_Int32 = (int)(0x80093010 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Invalid data.\n        /// </summary>\n        OSS_CONSTRAINT_VIOLATED = (int)(0x80093011 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Internal Error.\n        /// </summary>\n        OSS_FATAL_ERROR = (int)(0x80093012 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Multi-threading conflict.\n        /// </summary>\n        OSS_ACCESS_SERIALIZATION_ERROR = (int)(0x80093013 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Invalid data.\n        /// </summary>\n        OSS_NULL_TBL = (int)(0x80093014 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Invalid data.\n        /// </summary>\n        OSS_NULL_FCN = (int)(0x80093015 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Invalid data.\n        /// </summary>\n        OSS_BAD_ENCRULES = (int)(0x80093016 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Encode/Decode function not implemented.\n        /// </summary>\n        OSS_UNAVAIL_ENCRULES = (int)(0x80093017 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Trace file error.\n        /// </summary>\n        OSS_CANT_OPEN_TRACE_WINDOW = (int)(0x80093018 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Function not implemented.\n        /// </summary>\n        OSS_UNIMPLEMENTED = (int)(0x80093019 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_OID_DLL_NOT_LINKED = (int)(0x8009301A - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Trace file error.\n        /// </summary>\n        OSS_CANT_OPEN_TRACE_FILE = (int)(0x8009301B - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Trace file error.\n        /// </summary>\n        OSS_TRACE_FILE_ALREADY_OPEN = (int)(0x8009301C - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Invalid data.\n        /// </summary>\n        OSS_TABLE_MISMATCH = (int)(0x8009301D - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Invalid data.\n        /// </summary>\n        OSS_TYPE_NOT_SUPPORTED = (int)(0x8009301E - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_REAL_DLL_NOT_LINKED = (int)(0x8009301F - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_REAL_CODE_NOT_LINKED = (int)(0x80093020 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_OUT_OF_RANGE = (int)(0x80093021 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_COPIER_DLL_NOT_LINKED = (int)(0x80093022 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_CONSTRAINT_DLL_NOT_LINKED = (int)(0x80093023 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_COMPARATOR_DLL_NOT_LINKED = (int)(0x80093024 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_COMPARATOR_CODE_NOT_LINKED = (int)(0x80093025 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_MEM_MGR_DLL_NOT_LINKED = (int)(0x80093026 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_PDV_DLL_NOT_LINKED = (int)(0x80093027 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_PDV_CODE_NOT_LINKED = (int)(0x80093028 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_API_DLL_NOT_LINKED = (int)(0x80093029 - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_BERDER_DLL_NOT_LINKED = (int)(0x8009302A - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_PER_DLL_NOT_LINKED = (int)(0x8009302B - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Program link error.\n        /// </summary>\n        OSS_OPEN_TYPE_ERROR = (int)(0x8009302C - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: System resource error.\n        /// </summary>\n        OSS_MUTEX_NOT_CREATED = (int)(0x8009302D - 0x100000000),\n        /// <summary>\n        /// OSS ASN.1 Error: Trace file error.\n        /// </summary>\n        OSS_CANT_CLOSE_TRACE_FILE = (int)(0x8009302E - 0x100000000),\n        /// <summary>\n        /// ASN1 Certificate encode/decode error code base.\n        ///\n        /// The ASN1 error values are offset by CRYPT_E_ASN1_ERROR.\n        /// </summary>\n        CRYPT_E_ASN1_ERROR = (int)(0x80093100 - 0x100000000),\n        /// <summary>\n        /// ASN1 internal encode or decode error.\n        /// </summary>\n        CRYPT_E_ASN1_INTERNAL = (int)(0x80093101 - 0x100000000),\n        /// <summary>\n        /// ASN1 unexpected end of data.\n        /// </summary>\n        CRYPT_E_ASN1_EOD = (int)(0x80093102 - 0x100000000),\n        /// <summary>\n        /// ASN1 corrupted data.\n        /// </summary>\n        CRYPT_E_ASN1_CORRUPT = (int)(0x80093103 - 0x100000000),\n        /// <summary>\n        /// ASN1 value too large.\n        /// </summary>\n        CRYPT_E_ASN1_LARGE = (int)(0x80093104 - 0x100000000),\n        /// <summary>\n        /// ASN1 constraint violated.\n        /// </summary>\n        CRYPT_E_ASN1_CONSTRAINT = (int)(0x80093105 - 0x100000000),\n        /// <summary>\n        /// ASN1 out of memory.\n        /// </summary>\n        CRYPT_E_ASN1_MEMORY = (int)(0x80093106 - 0x100000000),\n        /// <summary>\n        /// ASN1 buffer overflow.\n        /// </summary>\n        CRYPT_E_ASN1_OVERFLOW = (int)(0x80093107 - 0x100000000),\n        /// <summary>\n        /// ASN1 function not supported for this PDU.\n        /// </summary>\n        CRYPT_E_ASN1_BADPDU = (int)(0x80093108 - 0x100000000),\n        /// <summary>\n        /// ASN1 bad arguments to function call.\n        /// </summary>\n        CRYPT_E_ASN1_BADARGS = (int)(0x80093109 - 0x100000000),\n        /// <summary>\n        /// ASN1 bad real value.\n        /// </summary>\n        CRYPT_E_ASN1_BADREAL = (int)(0x8009310A - 0x100000000),\n        /// <summary>\n        /// ASN1 bad tag value met.\n        /// </summary>\n        CRYPT_E_ASN1_BADTAG = (int)(0x8009310B - 0x100000000),\n        /// <summary>\n        /// ASN1 bad choice value.\n        /// </summary>\n        CRYPT_E_ASN1_CHOICE = (int)(0x8009310C - 0x100000000),\n        /// <summary>\n        /// ASN1 bad encoding rule.\n        /// </summary>\n        CRYPT_E_ASN1_RULE = (int)(0x8009310D - 0x100000000),\n        /// <summary>\n        /// ASN1 bad unicode (UTF8).\n        /// </summary>\n        CRYPT_E_ASN1_UTF8 = (int)(0x8009310E - 0x100000000),\n        /// <summary>\n        /// ASN1 bad PDU type.\n        /// </summary>\n        CRYPT_E_ASN1_PDU_TYPE = (int)(0x80093133 - 0x100000000),\n        /// <summary>\n        /// ASN1 not yet implemented.\n        /// </summary>\n        CRYPT_E_ASN1_NYI = (int)(0x80093134 - 0x100000000),\n        /// <summary>\n        /// ASN1 skipped unknown extension(s).\n        /// </summary>\n        CRYPT_E_ASN1_EXTENDED = (int)(0x80093201 - 0x100000000),\n        /// <summary>\n        /// ASN1 end of data expected\n        /// </summary>\n        CRYPT_E_ASN1_NOEOD = (int)(0x80093202 - 0x100000000),\n        /// <summary>\n        /// The request subject name is invalid or too long.\n        /// </summary>\n        CERTSRV_E_BAD_REQUESTSUBJECT = (int)(0x80094001 - 0x100000000),\n        /// <summary>\n        /// The request does not exist.\n        /// </summary>\n        CERTSRV_E_NO_REQUEST = (int)(0x80094002 - 0x100000000),\n        /// <summary>\n        /// The request's current status does not allow this operation.\n        /// </summary>\n        CERTSRV_E_BAD_REQUESTSTATUS = (int)(0x80094003 - 0x100000000),\n        /// <summary>\n        /// The requested property value is empty.\n        /// </summary>\n        CERTSRV_E_PROPERTY_EMPTY = (int)(0x80094004 - 0x100000000),\n        /// <summary>\n        /// The certification authority's certificate contains invalid data.\n        /// </summary>\n        CERTSRV_E_INVALID_CA_CERTIFICATE = (int)(0x80094005 - 0x100000000),\n        /// <summary>\n        /// Certificate service has been suspended for a database restore operation.\n        /// </summary>\n        CERTSRV_E_SERVER_SUSPENDED = (int)(0x80094006 - 0x100000000),\n        /// <summary>\n        /// The certificate contains an encoded length that is potentially incompatible with older enrollment software.\n        /// </summary>\n        CERTSRV_E_ENCODING_LENGTH = (int)(0x80094007 - 0x100000000),\n        /// <summary>\n        /// The operation is denied. The user has multiple roles assigned and the certification authority is configured to enforce role separation.\n        /// </summary>\n        CERTSRV_E_ROLECONFLICT = (int)(0x80094008 - 0x100000000),\n        /// <summary>\n        /// The operation is denied. It can only be performed by a certificate manager that is allowed to manage certificates for the current requester.\n        /// </summary>\n        CERTSRV_E_RESTRICTEDOFFICER = (int)(0x80094009 - 0x100000000),\n        /// <summary>\n        /// Cannot archive private key.  The certification authority is not configured for key archival.\n        /// </summary>\n        CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED = (int)(0x8009400A - 0x100000000),\n        /// <summary>\n        /// Cannot archive private key.  The certification authority could not verify one or more key recovery certificates.\n        /// </summary>\n        CERTSRV_E_NO_VALID_KRA = (int)(0x8009400B - 0x100000000),\n        /// <summary>\n        /// The request is incorrectly formatted.  The encrypted private key must be in an unauthenticated attribute in an outermost signature.\n        /// </summary>\n        CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL = (int)(0x8009400C - 0x100000000),\n        /// <summary>\n        /// At least one security principal must have the permission to manage this CA.\n        /// </summary>\n        CERTSRV_E_NO_CAADMIN_DEFINED = (int)(0x8009400D - 0x100000000),\n        /// <summary>\n        /// The request contains an invalid renewal certificate attribute.\n        /// </summary>\n        CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE = (int)(0x8009400E - 0x100000000),\n        /// <summary>\n        /// An attempt was made to open a Certification Authority database session, but there are already too many active sessions.  The server may need to be configured to allow additional sessions.\n        /// </summary>\n        CERTSRV_E_NO_DB_SESSIONS = (int)(0x8009400F - 0x100000000),\n        /// <summary>\n        /// A memory reference caused a data alignment fault.\n        /// </summary>\n        CERTSRV_E_ALIGNMENT_FAULT = (int)(0x80094010 - 0x100000000),\n        /// <summary>\n        /// The permissions on this certification authority do not allow the current user to enroll for certificates.\n        /// </summary>\n        CERTSRV_E_ENROLL_DENIED = (int)(0x80094011 - 0x100000000),\n        /// <summary>\n        /// The permissions on the certificate template do not allow the current user to enroll for this type of certificate.\n        /// </summary>\n        CERTSRV_E_TEMPLATE_DENIED = (int)(0x80094012 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE = (int)(0x80094013 - 0x100000000),\n        /// <summary>\n        /// The requested certificate template is not supported by this CA.\n        /// </summary>\n        CERTSRV_E_UNSUPPORTED_CERT_TYPE = (int)(0x80094800 - 0x100000000),\n        /// <summary>\n        /// The request contains no certificate template information.\n        /// </summary>\n        CERTSRV_E_NO_CERT_TYPE = (int)(0x80094801 - 0x100000000),\n        /// <summary>\n        /// The request contains conflicting template information.\n        /// </summary>\n        CERTSRV_E_TEMPLATE_CONFLICT = (int)(0x80094802 - 0x100000000),\n        /// <summary>\n        /// The request is missing a required Subject Alternate name extension.\n        /// </summary>\n        CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED = (int)(0x80094803 - 0x100000000),\n        /// <summary>\n        /// The request is missing a required private key for archival by the server.\n        /// </summary>\n        CERTSRV_E_ARCHIVED_KEY_REQUIRED = (int)(0x80094804 - 0x100000000),\n        /// <summary>\n        /// The request is missing a required SMIME capabilities extension.\n        /// </summary>\n        CERTSRV_E_SMIME_REQUIRED = (int)(0x80094805 - 0x100000000),\n        /// <summary>\n        /// The request was made on behalf of a subject other than the caller.  The certificate template must be configured to require at least one signature to authorize the request.\n        /// </summary>\n        CERTSRV_E_BAD_RENEWAL_SUBJECT = (int)(0x80094806 - 0x100000000),\n        /// <summary>\n        /// The request template version is newer than the supported template version.\n        /// </summary>\n        CERTSRV_E_BAD_TEMPLATE_VERSION = (int)(0x80094807 - 0x100000000),\n        /// <summary>\n        /// The template is missing a required signature policy attribute.\n        /// </summary>\n        CERTSRV_E_TEMPLATE_POLICY_REQUIRED = (int)(0x80094808 - 0x100000000),\n        /// <summary>\n        /// The request is missing required signature policy information.\n        /// </summary>\n        CERTSRV_E_SIGNATURE_POLICY_REQUIRED = (int)(0x80094809 - 0x100000000),\n        /// <summary>\n        /// The request is missing one or more required signatures.\n        /// </summary>\n        CERTSRV_E_SIGNATURE_COUNT = (int)(0x8009480A - 0x100000000),\n        /// <summary>\n        /// One or more signatures did not include the required application or issuance policies.  The request is missing one or more required valid signatures.\n        /// </summary>\n        CERTSRV_E_SIGNATURE_REJECTED = (int)(0x8009480B - 0x100000000),\n        /// <summary>\n        /// The request is missing one or more required signature issuance policies.\n        /// </summary>\n        CERTSRV_E_ISSUANCE_POLICY_REQUIRED = (int)(0x8009480C - 0x100000000),\n        /// <summary>\n        /// The UPN is unavailable and cannot be added to the Subject Alternate name.\n        /// </summary>\n        CERTSRV_E_SUBJECT_UPN_REQUIRED = (int)(0x8009480D - 0x100000000),\n        /// <summary>\n        /// The Active Directory GUID is unavailable and cannot be added to the Subject Alternate name.\n        /// </summary>\n        CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED = (int)(0x8009480E - 0x100000000),\n        /// <summary>\n        /// The DNS name is unavailable and cannot be added to the Subject Alternate name.\n        /// </summary>\n        CERTSRV_E_SUBJECT_DNS_REQUIRED = (int)(0x8009480F - 0x100000000),\n        /// <summary>\n        /// The request includes a private key for archival by the server, but key archival is not enabled for the specified certificate template.\n        /// </summary>\n        CERTSRV_E_ARCHIVED_KEY_UNEXPECTED = (int)(0x80094810 - 0x100000000),\n        /// <summary>\n        /// The public key does not meet the minimum size required by the specified certificate template.\n        /// </summary>\n        CERTSRV_E_KEY_LENGTH = (int)(0x80094811 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CERTSRV_E_SUBJECT_EMAIL_REQUIRED = (int)(0x80094812 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CERTSRV_E_UNKNOWN_CERT_TYPE = (int)(0x80094813 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        CERTSRV_E_CERT_TYPE_OVERLAP = (int)(0x80094814 - 0x100000000),\n        /// <summary>\n        /// The key is not exportable.\n        /// </summary>\n        XENROLL_E_KEY_NOT_EXPORTABLE = (int)(0x80095000 - 0x100000000),\n        /// <summary>\n        /// You cannot add the root CA certificate into your local store.\n        /// </summary>\n        XENROLL_E_CANNOT_ADD_ROOT_CERT = (int)(0x80095001 - 0x100000000),\n        /// <summary>\n        /// The key archival hash attribute was not found in the response.\n        /// </summary>\n        XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND = (int)(0x80095002 - 0x100000000),\n        /// <summary>\n        /// An unexpetced key archival hash attribute was found in the response.\n        /// </summary>\n        XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH = (int)(0x80095003 - 0x100000000),\n        /// <summary>\n        /// There is a key archival hash mismatch between the request and the response.\n        /// </summary>\n        XENROLL_E_RESPONSE_KA_HASH_MISMATCH = (int)(0x80095004 - 0x100000000),\n        /// <summary>\n        /// Signing certificate cannot include SMIME extension.\n        /// </summary>\n        XENROLL_E_KEYSPEC_SMIME_MISMATCH = (int)(0x80095005 - 0x100000000),\n        /// <summary>\n        /// A system-level error occurred while verifying trust.\n        /// </summary>\n        TRUST_E_SYSTEM_ERROR = (int)(0x80096001 - 0x100000000),\n        /// <summary>\n        /// The certificate for the signer of the message is invalid or not found.\n        /// </summary>\n        TRUST_E_NO_SIGNER_CERT = (int)(0x80096002 - 0x100000000),\n        /// <summary>\n        /// One of the counter signatures was invalid.\n        /// </summary>\n        TRUST_E_COUNTER_SIGNER = (int)(0x80096003 - 0x100000000),\n        /// <summary>\n        /// The signature of the certificate can not be verified.\n        /// </summary>\n        TRUST_E_CERT_SIGNATURE = (int)(0x80096004 - 0x100000000),\n        /// <summary>\n        /// The timestamp signature and/or certificate could not be verified or is malformed.\n        /// </summary>\n        TRUST_E_TIME_STAMP = (int)(0x80096005 - 0x100000000),\n        /// <summary>\n        /// The digital signature of the object did not verify.\n        /// </summary>\n        TRUST_E_BAD_DIGEST = (int)(0x80096010 - 0x100000000),\n        /// <summary>\n        /// A certificate's basic constraint extension has not been observed.\n        /// </summary>\n        TRUST_E_BASIC_CONSTRAINTS = (int)(0x80096019 - 0x100000000),\n        /// <summary>\n        /// The certificate does not meet or contain the Authenticode financial extensions.\n        /// </summary>\n        TRUST_E_FINANCIAL_CRITERIA = (int)(0x8009601E - 0x100000000),\n        /// <summary>\n        /// Tried to reference a part of the file outside the proper range.\n        /// </summary>\n        MSSIPOTF_E_OUTOFMEMRANGE = (int)(0x80097001 - 0x100000000),\n        /// <summary>\n        /// Could not retrieve an object from the file.\n        /// </summary>\n        MSSIPOTF_E_CANTGETOBJECT = (int)(0x80097002 - 0x100000000),\n        /// <summary>\n        /// Could not find the head table in the file.\n        /// </summary>\n        MSSIPOTF_E_NOHEADTABLE = (int)(0x80097003 - 0x100000000),\n        /// <summary>\n        /// The magic number in the head table is incorrect.\n        /// </summary>\n        MSSIPOTF_E_BAD_MAGICNUMBER = (int)(0x80097004 - 0x100000000),\n        /// <summary>\n        /// The offset table has incorrect values.\n        /// </summary>\n        MSSIPOTF_E_BAD_OFFSET_TABLE = (int)(0x80097005 - 0x100000000),\n        /// <summary>\n        /// Duplicate table tags or tags out of alphabetical order.\n        /// </summary>\n        MSSIPOTF_E_TABLE_TAGORDER = (int)(0x80097006 - 0x100000000),\n        /// <summary>\n        /// A table does not start on a long word boundary.\n        /// </summary>\n        MSSIPOTF_E_TABLE_Int32UInt16 = (int)(0x80097007 - 0x100000000),\n        /// <summary>\n        /// First table does not appear after header information.\n        /// </summary>\n        MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT = (int)(0x80097008 - 0x100000000),\n        /// <summary>\n        /// Two or more tables overlap.\n        /// </summary>\n        MSSIPOTF_E_TABLES_OVERLAP = (int)(0x80097009 - 0x100000000),\n        /// <summary>\n        /// Too many pad bytes between tables or pad bytes are not 0.\n        /// </summary>\n        MSSIPOTF_E_TABLE_PADBYTES = (int)(0x8009700A - 0x100000000),\n        /// <summary>\n        /// File is too small to contain the last table.\n        /// </summary>\n        MSSIPOTF_E_FILETOOSMALL = (int)(0x8009700B - 0x100000000),\n        /// <summary>\n        /// A table checksum is incorrect.\n        /// </summary>\n        MSSIPOTF_E_TABLE_CHECKSUM = (int)(0x8009700C - 0x100000000),\n        /// <summary>\n        /// The file checksum is incorrect.\n        /// </summary>\n        MSSIPOTF_E_FILE_CHECKSUM = (int)(0x8009700D - 0x100000000),\n        /// <summary>\n        /// The signature does not have the correct attributes for the policy.\n        /// </summary>\n        MSSIPOTF_E_FAILED_POLICY = (int)(0x80097010 - 0x100000000),\n        /// <summary>\n        /// The file did not pass the hints check.\n        /// </summary>\n        MSSIPOTF_E_FAILED_HINTS_CHECK = (int)(0x80097011 - 0x100000000),\n        /// <summary>\n        /// The file is not an OpenType file.\n        /// </summary>\n        MSSIPOTF_E_NOT_OPENTYPE = (int)(0x80097012 - 0x100000000),\n        /// <summary>\n        /// Failed on a file operation (open, map, read, write).\n        /// </summary>\n        MSSIPOTF_E_FILE = (int)(0x80097013 - 0x100000000),\n        /// <summary>\n        /// A call to a CryptoAPI function failed.\n        /// </summary>\n        MSSIPOTF_E_CRYPT = (int)(0x80097014 - 0x100000000),\n        /// <summary>\n        /// There is a bad version number in the file.\n        /// </summary>\n        MSSIPOTF_E_BADVERSION = (int)(0x80097015 - 0x100000000),\n        /// <summary>\n        /// The structure of the DSIG table is incorrect.\n        /// </summary>\n        MSSIPOTF_E_DSIG_STRUCTURE = (int)(0x80097016 - 0x100000000),\n        /// <summary>\n        /// A check failed in a partially constant table.\n        /// </summary>\n        MSSIPOTF_E_PCONST_CHECK = (int)(0x80097017 - 0x100000000),\n        /// <summary>\n        /// Some kind of structural error.\n        /// </summary>\n        MSSIPOTF_E_STRUCTURE = (int)(0x80097018 - 0x100000000),\n        /// <summary>\n        /// The operation completed successfully.\n        /// </summary>\n        NTE_OP_OK = 0,\n        /// <summary>\n        /// Unknown trust provider.\n        /// </summary>\n        TRUST_E_PROVIDER_UNKNOWN = (int)(0x800B0001 - 0x100000000),\n        /// <summary>\n        /// The trust verification action specified is not supported by the specified trust provider.\n        /// </summary>\n        TRUST_E_ACTION_UNKNOWN = (int)(0x800B0002 - 0x100000000),\n        /// <summary>\n        /// The form specified for the subject is not one supported or known by the specified trust provider.\n        /// </summary>\n        TRUST_E_SUBJECT_FORM_UNKNOWN = (int)(0x800B0003 - 0x100000000),\n        /// <summary>\n        /// The subject is not trusted for the specified action.\n        /// </summary>\n        TRUST_E_SUBJECT_NOT_TRUSTED = (int)(0x800B0004 - 0x100000000),\n        /// <summary>\n        /// Error due to problem in ASN.1 encoding process.\n        /// </summary>\n        DIGSIG_E_ENCODE = (int)(0x800B0005 - 0x100000000),\n        /// <summary>\n        /// Error due to problem in ASN.1 decoding process.\n        /// </summary>\n        DIGSIG_E_DECODE = (int)(0x800B0006 - 0x100000000),\n        /// <summary>\n        /// Reading / writing Extensions where Attributes are appropriate, and visa versa.\n        /// </summary>\n        DIGSIG_E_EXTENSIBILITY = (int)(0x800B0007 - 0x100000000),\n        /// <summary>\n        /// Unspecified cryptographic failure.\n        /// </summary>\n        DIGSIG_E_CRYPTO = (int)(0x800B0008 - 0x100000000),\n        /// <summary>\n        /// The size of the data could not be determined.\n        /// </summary>\n        PERSIST_E_SIZEDEFINITE = (int)(0x800B0009 - 0x100000000),\n        /// <summary>\n        /// The size of the indefinite-sized data could not be determined.\n        /// </summary>\n        PERSIST_E_SIZEINDEFINITE = (int)(0x800B000A - 0x100000000),\n        /// <summary>\n        /// This object does not read and write self-sizing data.\n        /// </summary>\n        PERSIST_E_NOTSELFSIZING = (int)(0x800B000B - 0x100000000),\n        /// <summary>\n        /// No signature was present in the subject.\n        /// </summary>\n        TRUST_E_NOSIGNATURE = (int)(0x800B0100 - 0x100000000),\n        /// <summary>\n        /// A required certificate is not within its validity period when verifying against the current system clock or the timestamp in the signed file.\n        /// </summary>\n        CERT_E_EXPIRED = (int)(0x800B0101 - 0x100000000),\n        /// <summary>\n        /// The validity periods of the certification chain do not nest correctly.\n        /// </summary>\n        CERT_E_VALIDITYPERIODNESTING = (int)(0x800B0102 - 0x100000000),\n        /// <summary>\n        /// A certificate that can only be used as an end-entity is being used as a CA or visa versa.\n        /// </summary>\n        CERT_E_ROLE = (int)(0x800B0103 - 0x100000000),\n        /// <summary>\n        /// A path length constraint in the certification chain has been violated.\n        /// </summary>\n        CERT_E_PATHLENCONST = (int)(0x800B0104 - 0x100000000),\n        /// <summary>\n        /// A certificate contains an unknown extension that is marked 'critical'.\n        /// </summary>\n        CERT_E_CRITICAL = (int)(0x800B0105 - 0x100000000),\n        /// <summary>\n        /// A certificate being used for a purpose other than the ones specified by its CA.\n        /// </summary>\n        CERT_E_PURPOSE = (int)(0x800B0106 - 0x100000000),\n        /// <summary>\n        /// A parent of a given certificate in fact did not issue that child certificate.\n        /// </summary>\n        CERT_E_ISSUERCHAINING = (int)(0x800B0107 - 0x100000000),\n        /// <summary>\n        /// A certificate is missing or has an empty value for an important field, such as a subject or issuer name.\n        /// </summary>\n        CERT_E_MALFORMED = (int)(0x800B0108 - 0x100000000),\n        /// <summary>\n        /// A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.\n        /// </summary>\n        CERT_E_UNTRUSTEDROOT = (int)(0x800B0109 - 0x100000000),\n        /// <summary>\n        /// An internal certificate chaining error has occurred.\n        /// </summary>\n        CERT_E_CHAINING = (int)(0x800B010A - 0x100000000),\n        /// <summary>\n        /// Generic trust failure.\n        /// </summary>\n        TRUST_E_FAIL = (int)(0x800B010B - 0x100000000),\n        /// <summary>\n        /// A certificate was explicitly revoked by its issuer.\n        /// </summary>\n        CERT_E_REVOKED = (int)(0x800B010C - 0x100000000),\n        /// <summary>\n        /// The certification path terminates with the test root which is not trusted with the current policy settings.\n        /// </summary>\n        CERT_E_UNTRUSTEDTESTROOT = (int)(0x800B010D - 0x100000000),\n        /// <summary>\n        /// The revocation process could not continue - the certificate(s) could not be checked.\n        /// </summary>\n        CERT_E_REVOCATION_FAILURE = (int)(0x800B010E - 0x100000000),\n        /// <summary>\n        /// The certificate's CN name does not match the passed value.\n        /// </summary>\n        CERT_E_CN_NO_MATCH = (int)(0x800B010F - 0x100000000),\n        /// <summary>\n        /// The certificate is not valid for the requested usage.\n        /// </summary>\n        CERT_E_WRONG_USAGE = (int)(0x800B0110 - 0x100000000),\n        /// <summary>\n        /// The certificate was explicitly marked as untrusted by the user.\n        /// </summary>\n        TRUST_E_EXPLICIT_DISTRUST = (int)(0x800B0111 - 0x100000000),\n        /// <summary>\n        /// A certification chain processed correctly, but one of the CA certificates is not trusted by the policy provider.\n        /// </summary>\n        CERT_E_UNTRUSTEDCA = (int)(0x800B0112 - 0x100000000),\n        /// <summary>\n        /// The certificate has invalid policy.\n        /// </summary>\n        CERT_E_INVALID_POLICY = (int)(0x800B0113 - 0x100000000),\n        /// <summary>\n        /// The certificate has an invalid name. The name is not included in the permitted list or is explicitly excluded.\n        /// </summary>\n        CERT_E_INVALID_NAME = (int)(0x800B0114 - 0x100000000),\n        /// <summary>\n        /// A non-empty line was encountered in the INF before the start of a section.\n        /// </summary>\n        SPAPI_E_EXPECTED_SECTION_NAME = (int)(0x800F0000 - 0x100000000),\n        /// <summary>\n        /// A section name marker in the INF is not complete, or does not exist on a line by itself.\n        /// </summary>\n        SPAPI_E_BAD_SECTION_NAME_LINE = (int)(0x800F0001 - 0x100000000),\n        /// <summary>\n        /// An INF section was encountered whose name exceeds the maximum section name length.\n        /// </summary>\n        SPAPI_E_SECTION_NAME_TOO_Int32 = (int)(0x800F0002 - 0x100000000),\n        /// <summary>\n        /// The syntax of the INF is invalid.\n        /// </summary>\n        SPAPI_E_GENERAL_SYNTAX = (int)(0x800F0003 - 0x100000000),\n        /// <summary>\n        /// The style of the INF is different than what was requested.\n        /// </summary>\n        SPAPI_E_WRONG_INF_STYLE = (int)(0x800F0100 - 0x100000000),\n        /// <summary>\n        /// The required section was not found in the INF.\n        /// </summary>\n        SPAPI_E_SECTION_NOT_FOUND = (int)(0x800F0101 - 0x100000000),\n        /// <summary>\n        /// The required line was not found in the INF.\n        /// </summary>\n        SPAPI_E_LINE_NOT_FOUND = (int)(0x800F0102 - 0x100000000),\n        /// <summary>\n        /// The files affected by the installation of this file queue have not been backed up for uninstall.\n        /// </summary>\n        SPAPI_E_NO_BACKUP = (int)(0x800F0103 - 0x100000000),\n        /// <summary>\n        /// The INF or the device information set or element does not have an associated install class.\n        /// </summary>\n        SPAPI_E_NO_ASSOCIATED_CLASS = (int)(0x800F0200 - 0x100000000),\n        /// <summary>\n        /// The INF or the device information set or element does not match the specified install class.\n        /// </summary>\n        SPAPI_E_CLASS_MISMATCH = (int)(0x800F0201 - 0x100000000),\n        /// <summary>\n        /// An existing device was found that is a duplicate of the device being manually installed.\n        /// </summary>\n        SPAPI_E_DUPLICATE_FOUND = (int)(0x800F0202 - 0x100000000),\n        /// <summary>\n        /// There is no driver selected for the device information set or element.\n        /// </summary>\n        SPAPI_E_NO_DRIVER_SELECTED = (int)(0x800F0203 - 0x100000000),\n        /// <summary>\n        /// The requested device registry key does not exist.\n        /// </summary>\n        SPAPI_E_KEY_DOES_NOT_EXIST = (int)(0x800F0204 - 0x100000000),\n        /// <summary>\n        /// The device instance name is invalid.\n        /// </summary>\n        SPAPI_E_INVALID_DEVINST_NAME = (int)(0x800F0205 - 0x100000000),\n        /// <summary>\n        /// The install class is not present or is invalid.\n        /// </summary>\n        SPAPI_E_INVALID_CLASS = (int)(0x800F0206 - 0x100000000),\n        /// <summary>\n        /// The device instance cannot be created because it already exists.\n        /// </summary>\n        SPAPI_E_DEVINST_ALREADY_EXISTS = (int)(0x800F0207 - 0x100000000),\n        /// <summary>\n        /// The operation cannot be performed on a device information element that has not been registered.\n        /// </summary>\n        SPAPI_E_DEVINFO_NOT_REGISTERED = (int)(0x800F0208 - 0x100000000),\n        /// <summary>\n        /// The device property code is invalid.\n        /// </summary>\n        SPAPI_E_INVALID_REG_PROPERTY = (int)(0x800F0209 - 0x100000000),\n        /// <summary>\n        /// The INF from which a driver list is to be built does not exist.\n        /// </summary>\n        SPAPI_E_NO_INF = (int)(0x800F020A - 0x100000000),\n        /// <summary>\n        /// The device instance does not exist in the hardware tree.\n        /// </summary>\n        SPAPI_E_NO_SUCH_DEVINST = (int)(0x800F020B - 0x100000000),\n        /// <summary>\n        /// The icon representing this install class cannot be loaded.\n        /// </summary>\n        SPAPI_E_CANT_LOAD_CLASS_ICON = (int)(0x800F020C - 0x100000000),\n        /// <summary>\n        /// The class installer registry entry is invalid.\n        /// </summary>\n        SPAPI_E_INVALID_CLASS_INSTALLER = (int)(0x800F020D - 0x100000000),\n        /// <summary>\n        /// The class installer has indicated that the default action should be performed for this installation request.\n        /// </summary>\n        SPAPI_E_DI_DO_DEFAULT = (int)(0x800F020E - 0x100000000),\n        /// <summary>\n        /// The operation does not require any files to be copied.\n        /// </summary>\n        SPAPI_E_DI_NOFILECOPY = (int)(0x800F020F - 0x100000000),\n        /// <summary>\n        /// The specified hardware profile does not exist.\n        /// </summary>\n        SPAPI_E_INVALID_HWPROFILE = (int)(0x800F0210 - 0x100000000),\n        /// <summary>\n        /// There is no device information element currently selected for this device information set.\n        /// </summary>\n        SPAPI_E_NO_DEVICE_SELECTED = (int)(0x800F0211 - 0x100000000),\n        /// <summary>\n        /// The operation cannot be performed because the device information set is locked.\n        /// </summary>\n        SPAPI_E_DEVINFO_LIST_LOCKED = (int)(0x800F0212 - 0x100000000),\n        /// <summary>\n        /// The operation cannot be performed because the device information element is locked.\n        /// </summary>\n        SPAPI_E_DEVINFO_DATA_LOCKED = (int)(0x800F0213 - 0x100000000),\n        /// <summary>\n        /// The specified path does not contain any applicable device INFs.\n        /// </summary>\n        SPAPI_E_DI_BAD_PATH = (int)(0x800F0214 - 0x100000000),\n        /// <summary>\n        /// No class installer parameters have been set for the device information set or element.\n        /// </summary>\n        SPAPI_E_NO_CLASSINSTALL_PARAMS = (int)(0x800F0215 - 0x100000000),\n        /// <summary>\n        /// The operation cannot be performed because the file queue is locked.\n        /// </summary>\n        SPAPI_E_FILEQUEUE_LOCKED = (int)(0x800F0216 - 0x100000000),\n        /// <summary>\n        /// A service installation section in this INF is invalid.\n        /// </summary>\n        SPAPI_E_BAD_SERVICE_INSTALLSECT = (int)(0x800F0217 - 0x100000000),\n        /// <summary>\n        /// There is no class driver list for the device information element.\n        /// </summary>\n        SPAPI_E_NO_CLASS_DRIVER_LIST = (int)(0x800F0218 - 0x100000000),\n        /// <summary>\n        /// The installation failed because a function driver was not specified for this device instance.\n        /// </summary>\n        SPAPI_E_NO_ASSOCIATED_SERVICE = (int)(0x800F0219 - 0x100000000),\n        /// <summary>\n        /// There is presently no default device interface designated for this interface class.\n        /// </summary>\n        SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE = (int)(0x800F021A - 0x100000000),\n        /// <summary>\n        /// The operation cannot be performed because the device interface is currently active.\n        /// </summary>\n        SPAPI_E_DEVICE_INTERFACE_ACTIVE = (int)(0x800F021B - 0x100000000),\n        /// <summary>\n        /// The operation cannot be performed because the device interface has been removed from the system.\n        /// </summary>\n        SPAPI_E_DEVICE_INTERFACE_REMOVED = (int)(0x800F021C - 0x100000000),\n        /// <summary>\n        /// An interface installation section in this INF is invalid.\n        /// </summary>\n        SPAPI_E_BAD_INTERFACE_INSTALLSECT = (int)(0x800F021D - 0x100000000),\n        /// <summary>\n        /// This interface class does not exist in the system.\n        /// </summary>\n        SPAPI_E_NO_SUCH_INTERFACE_CLASS = (int)(0x800F021E - 0x100000000),\n        /// <summary>\n        /// The reference string supplied for this interface device is invalid.\n        /// </summary>\n        SPAPI_E_INVALID_REFERENCE_STRING = (int)(0x800F021F - 0x100000000),\n        /// <summary>\n        /// The specified machine name does not conform to UNC naming conventions.\n        /// </summary>\n        SPAPI_E_INVALID_MACHINENAME = (int)(0x800F0220 - 0x100000000),\n        /// <summary>\n        /// A general remote communication error occurred.\n        /// </summary>\n        SPAPI_E_REMOTE_COMM_FAILURE = (int)(0x800F0221 - 0x100000000),\n        /// <summary>\n        /// The machine selected for remote communication is not available at this time.\n        /// </summary>\n        SPAPI_E_MACHINE_UNAVAILABLE = (int)(0x800F0222 - 0x100000000),\n        /// <summary>\n        /// The Plug and Play service is not available on the remote machine.\n        /// </summary>\n        SPAPI_E_NO_CONFIGMGR_SERVICES = (int)(0x800F0223 - 0x100000000),\n        /// <summary>\n        /// The property page provider registry entry is invalid.\n        /// </summary>\n        SPAPI_E_INVALID_PROPPAGE_PROVIDER = (int)(0x800F0224 - 0x100000000),\n        /// <summary>\n        /// The requested device interface is not present in the system.\n        /// </summary>\n        SPAPI_E_NO_SUCH_DEVICE_INTERFACE = (int)(0x800F0225 - 0x100000000),\n        /// <summary>\n        /// The device's co-installer has additional work to perform after installation is complete.\n        /// </summary>\n        SPAPI_E_DI_POSTPROCESSING_REQUIRED = (int)(0x800F0226 - 0x100000000),\n        /// <summary>\n        /// The device's co-installer is invalid.\n        /// </summary>\n        SPAPI_E_INVALID_COINSTALLER = (int)(0x800F0227 - 0x100000000),\n        /// <summary>\n        /// There are no compatible drivers for this device.\n        /// </summary>\n        SPAPI_E_NO_COMPAT_DRIVERS = (int)(0x800F0228 - 0x100000000),\n        /// <summary>\n        /// There is no icon that represents this device or device type.\n        /// </summary>\n        SPAPI_E_NO_DEVICE_ICON = (int)(0x800F0229 - 0x100000000),\n        /// <summary>\n        /// A logical configuration specified in this INF is invalid.\n        /// </summary>\n        SPAPI_E_INVALID_INF_LOGCONFIG = (int)(0x800F022A - 0x100000000),\n        /// <summary>\n        /// The class installer has denied the request to install or upgrade this device.\n        /// </summary>\n        SPAPI_E_DI_DONT_INSTALL = (int)(0x800F022B - 0x100000000),\n        /// <summary>\n        /// One of the filter drivers installed for this device is invalid.\n        /// </summary>\n        SPAPI_E_INVALID_FILTER_DRIVER = (int)(0x800F022C - 0x100000000),\n        /// <summary>\n        /// The driver selected for this device does not support Windows XP.\n        /// </summary>\n        SPAPI_E_NON_WINDOWS_NT_DRIVER = (int)(0x800F022D - 0x100000000),\n        /// <summary>\n        /// The driver selected for this device does not support Windows.\n        /// </summary>\n        SPAPI_E_NON_WINDOWS_DRIVER = (int)(0x800F022E - 0x100000000),\n        /// <summary>\n        /// The third-party INF does not contain digital signature information.\n        /// </summary>\n        SPAPI_E_NO_CATALOG_FOR_OEM_INF = (int)(0x800F022F - 0x100000000),\n        /// <summary>\n        /// An invalid attempt was made to use a device installation file queue for verification of digital signatures relative to other platforms.\n        /// </summary>\n        SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE = (int)(0x800F0230 - 0x100000000),\n        /// <summary>\n        /// The device cannot be disabled.\n        /// </summary>\n        SPAPI_E_NOT_DISABLEABLE = (int)(0x800F0231 - 0x100000000),\n        /// <summary>\n        /// The device could not be dynamically removed.\n        /// </summary>\n        SPAPI_E_CANT_REMOVE_DEVINST = (int)(0x800F0232 - 0x100000000),\n        /// <summary>\n        /// Cannot copy to specified target.\n        /// </summary>\n        SPAPI_E_INVALID_TARGET = (int)(0x800F0233 - 0x100000000),\n        /// <summary>\n        /// Driver is not intended for this platform.\n        /// </summary>\n        SPAPI_E_DRIVER_NONNATIVE = (int)(0x800F0234 - 0x100000000),\n        /// <summary>\n        /// Operation not allowed in WOW64.\n        /// </summary>\n        SPAPI_E_IN_WOW64 = (int)(0x800F0235 - 0x100000000),\n        /// <summary>\n        /// The operation involving unsigned file copying was rolled back, so that a system restore point could be set.\n        /// </summary>\n        SPAPI_E_SET_SYSTEM_RESTORE_POINT = (int)(0x800F0236 - 0x100000000),\n        /// <summary>\n        /// An INF was copied into the Windows INF directory in an improper manner.\n        /// </summary>\n        SPAPI_E_INCORRECTLY_COPIED_INF = (int)(0x800F0237 - 0x100000000),\n        /// <summary>\n        /// The Security Configuration Editor (SCE) APIs have been disabled on this Embedded product.\n        /// </summary>\n        SPAPI_E_SCE_DISABLED = (int)(0x800F0238 - 0x100000000),\n        /// <summary>\n        /// No installed components were detected.\n        /// </summary>\n        SPAPI_E_ERROR_NOT_INSTALLED = (int)(0x800F1000 - 0x100000000),\n        /// <summary>\n        /// An internal consistency check failed.\n        /// </summary>\n        SCARD_F_INTERNAL_ERROR = (int)(0x80100001 - 0x100000000),\n        /// <summary>\n        /// The action was cancelled by an SCardCancel request.\n        /// </summary>\n        SCARD_E_CANCELLED = (int)(0x80100002 - 0x100000000),\n        /// <summary>\n        /// The supplied handle was invalid.\n        /// </summary>\n        SCARD_E_INVALID_HANDLE = (int)(0x80100003 - 0x100000000),\n        /// <summary>\n        /// One or more of the supplied parameters could not be properly interpreted.\n        /// </summary>\n        SCARD_E_INVALID_PARAMETER = (int)(0x80100004 - 0x100000000),\n        /// <summary>\n        /// Registry startup information is missing or invalid.\n        /// </summary>\n        SCARD_E_INVALID_TARGET = (int)(0x80100005 - 0x100000000),\n        /// <summary>\n        /// Not enough memory available to complete this command.\n        /// </summary>\n        SCARD_E_NO_MEMORY = (int)(0x80100006 - 0x100000000),\n        /// <summary>\n        /// An internal consistency timer has expired.\n        /// </summary>\n        SCARD_F_WAITED_TOO_Int32 = (int)(0x80100007 - 0x100000000),\n        /// <summary>\n        /// The data buffer to receive returned data is too small for the returned data.\n        /// </summary>\n        SCARD_E_INSUFFICIENT_BUFFER = (int)(0x80100008 - 0x100000000),\n        /// <summary>\n        /// The specified reader name is not recognized.\n        /// </summary>\n        SCARD_E_UNKNOWN_READER = (int)(0x80100009 - 0x100000000),\n        /// <summary>\n        /// The user-specified timeout value has expired.\n        /// </summary>\n        SCARD_E_TIMEOUT = (int)(0x8010000A - 0x100000000),\n        /// <summary>\n        /// The smart card cannot be accessed because of other connections outstanding.\n        /// </summary>\n        SCARD_E_SHARING_VIOLATION = (int)(0x8010000B - 0x100000000),\n        /// <summary>\n        /// The operation requires a Smart Card, but no Smart Card is currently in the device.\n        /// </summary>\n        SCARD_E_NO_SMARTCARD = (int)(0x8010000C - 0x100000000),\n        /// <summary>\n        /// The specified smart card name is not recognized.\n        /// </summary>\n        SCARD_E_UNKNOWN_CARD = (int)(0x8010000D - 0x100000000),\n        /// <summary>\n        /// The system could not dispose of the media in the requested manner.\n        /// </summary>\n        SCARD_E_CANT_DISPOSE = (int)(0x8010000E - 0x100000000),\n        /// <summary>\n        /// The requested protocols are incompatible with the protocol currently in use with the smart card.\n        /// </summary>\n        SCARD_E_PROTO_MISMATCH = (int)(0x8010000F - 0x100000000),\n        /// <summary>\n        /// The reader or smart card is not ready to accept commands.\n        /// </summary>\n        SCARD_E_NOT_READY = (int)(0x80100010 - 0x100000000),\n        /// <summary>\n        /// One or more of the supplied parameters values could not be properly interpreted.\n        /// </summary>\n        SCARD_E_INVALID_VALUE = (int)(0x80100011 - 0x100000000),\n        /// <summary>\n        /// The action was cancelled by the system, presumably to log off or shut down.\n        /// </summary>\n        SCARD_E_SYSTEM_CANCELLED = (int)(0x80100012 - 0x100000000),\n        /// <summary>\n        /// An internal communications error has been detected.\n        /// </summary>\n        SCARD_F_COMM_ERROR = (int)(0x80100013 - 0x100000000),\n        /// <summary>\n        /// An internal error has been detected, but the source is unknown.\n        /// </summary>\n        SCARD_F_UNKNOWN_ERROR = (int)(0x80100014 - 0x100000000),\n        /// <summary>\n        /// An ATR obtained from the registry is not a valid ATR string.\n        /// </summary>\n        SCARD_E_INVALID_ATR = (int)(0x80100015 - 0x100000000),\n        /// <summary>\n        /// An attempt was made to end a non-existent transaction.\n        /// </summary>\n        SCARD_E_NOT_TRANSACTED = (int)(0x80100016 - 0x100000000),\n        /// <summary>\n        /// The specified reader is not currently available for use.\n        /// </summary>\n        SCARD_E_READER_UNAVAILABLE = (int)(0x80100017 - 0x100000000),\n        /// <summary>\n        /// The operation has been aborted to allow the server application to exit.\n        /// </summary>\n        SCARD_P_SHUTDOWN = (int)(0x80100018 - 0x100000000),\n        /// <summary>\n        /// The PCI Receive buffer was too small.\n        /// </summary>\n        SCARD_E_PCI_TOO_SMALL = (int)(0x80100019 - 0x100000000),\n        /// <summary>\n        /// The reader driver does not meet minimal requirements for support.\n        /// </summary>\n        SCARD_E_READER_UNSUPPORTED = (int)(0x8010001A - 0x100000000),\n        /// <summary>\n        /// The reader driver did not produce a unique reader name.\n        /// </summary>\n        SCARD_E_DUPLICATE_READER = (int)(0x8010001B - 0x100000000),\n        /// <summary>\n        /// The smart card does not meet minimal requirements for support.\n        /// </summary>\n        SCARD_E_CARD_UNSUPPORTED = (int)(0x8010001C - 0x100000000),\n        /// <summary>\n        /// The Smart card resource manager is not running.\n        /// </summary>\n        SCARD_E_NO_SERVICE = (int)(0x8010001D - 0x100000000),\n        /// <summary>\n        /// The Smart card resource manager has shut down.\n        /// </summary>\n        SCARD_E_SERVICE_STOPPED = (int)(0x8010001E - 0x100000000),\n        /// <summary>\n        /// An unexpected card error has occurred.\n        /// </summary>\n        SCARD_E_UNEXPECTED = (int)(0x8010001F - 0x100000000),\n        /// <summary>\n        /// No Primary Provider can be found for the smart card.\n        /// </summary>\n        SCARD_E_ICC_INSTALLATION = (int)(0x80100020 - 0x100000000),\n        /// <summary>\n        /// The requested order of object creation is not supported.\n        /// </summary>\n        SCARD_E_ICC_CREATEORDER = (int)(0x80100021 - 0x100000000),\n        /// <summary>\n        /// This smart card does not support the requested feature.\n        /// </summary>\n        SCARD_E_UNSUPPORTED_FEATURE = (int)(0x80100022 - 0x100000000),\n        /// <summary>\n        /// The identified directory does not exist in the smart card.\n        /// </summary>\n        SCARD_E_DIR_NOT_FOUND = (int)(0x80100023 - 0x100000000),\n        /// <summary>\n        /// The identified file does not exist in the smart card.\n        /// </summary>\n        SCARD_E_FILE_NOT_FOUND = (int)(0x80100024 - 0x100000000),\n        /// <summary>\n        /// The supplied path does not represent a smart card directory.\n        /// </summary>\n        SCARD_E_NO_DIR = (int)(0x80100025 - 0x100000000),\n        /// <summary>\n        /// The supplied path does not represent a smart card file.\n        /// </summary>\n        SCARD_E_NO_FILE = (int)(0x80100026 - 0x100000000),\n        /// <summary>\n        /// Access is denied to this file.\n        /// </summary>\n        SCARD_E_NO_ACCESS = (int)(0x80100027 - 0x100000000),\n        /// <summary>\n        /// The smartcard does not have enough memory to store the information.\n        /// </summary>\n        SCARD_E_WRITE_TOO_MANY = (int)(0x80100028 - 0x100000000),\n        /// <summary>\n        /// There was an error trying to set the smart card file object pointer.\n        /// </summary>\n        SCARD_E_BAD_SEEK = (int)(0x80100029 - 0x100000000),\n        /// <summary>\n        /// The supplied PIN is incorrect.\n        /// </summary>\n        SCARD_E_INVALID_CHV = (int)(0x8010002A - 0x100000000),\n        /// <summary>\n        /// An unrecognized error code was returned from a layered component.\n        /// </summary>\n        SCARD_E_UNKNOWN_RES_MNG = (int)(0x8010002B - 0x100000000),\n        /// <summary>\n        /// The requested certificate does not exist.\n        /// </summary>\n        SCARD_E_NO_SUCH_CERTIFICATE = (int)(0x8010002C - 0x100000000),\n        /// <summary>\n        /// The requested certificate could not be obtained.\n        /// </summary>\n        SCARD_E_CERTIFICATE_UNAVAILABLE = (int)(0x8010002D - 0x100000000),\n        /// <summary>\n        /// Cannot find a smart card reader.\n        /// </summary>\n        SCARD_E_NO_READERS_AVAILABLE = (int)(0x8010002E - 0x100000000),\n        /// <summary>\n        /// A communications error with the smart card has been detected.  Retry the operation.\n        /// </summary>\n        SCARD_E_COMM_DATA_LOST = (int)(0x8010002F - 0x100000000),\n        /// <summary>\n        /// The requested key container does not exist on the smart card.\n        /// </summary>\n        SCARD_E_NO_KEY_CONTAINER = (int)(0x80100030 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        SCARD_E_SERVER_TOO_BUSY = (int)(0x80100031 - 0x100000000),\n        /// <summary>\n        /// The reader cannot communicate with the smart card, due to ATR configuration conflicts.\n        /// </summary>\n        SCARD_W_UNSUPPORTED_CARD = (int)(0x80100065 - 0x100000000),\n        /// <summary>\n        /// The smart card is not responding to a reset.\n        /// </summary>\n        SCARD_W_UNRESPONSIVE_CARD = (int)(0x80100066 - 0x100000000),\n        /// <summary>\n        /// Power has been removed from the smart card, so that further communication is not possible.\n        /// </summary>\n        SCARD_W_UNPOWERED_CARD = (int)(0x80100067 - 0x100000000),\n        /// <summary>\n        /// The smart card has been reset, so any shared state information is invalid.\n        /// </summary>\n        SCARD_W_RESET_CARD = (int)(0x80100068 - 0x100000000),\n        /// <summary>\n        /// The smart card has been removed, so that further communication is not possible.\n        /// </summary>\n        SCARD_W_REMOVED_CARD = (int)(0x80100069 - 0x100000000),\n        /// <summary>\n        /// Access was denied because of a security violation.\n        /// </summary>\n        SCARD_W_SECURITY_VIOLATION = (int)(0x8010006A - 0x100000000),\n        /// <summary>\n        /// The card cannot be accessed because the wrong PIN was presented.\n        /// </summary>\n        SCARD_W_WRONG_CHV = (int)(0x8010006B - 0x100000000),\n        /// <summary>\n        /// The card cannot be accessed because the maximum number of PIN entry attempts has been reached.\n        /// </summary>\n        SCARD_W_CHV_BLOCKED = (int)(0x8010006C - 0x100000000),\n        /// <summary>\n        /// The end of the smart card file has been reached.\n        /// </summary>\n        SCARD_W_EOF = (int)(0x8010006D - 0x100000000),\n        /// <summary>\n        /// The action was cancelled by the user.\n        /// </summary>\n        SCARD_W_CANCELLED_BY_USER = (int)(0x8010006E - 0x100000000),\n        /// <summary>\n        /// No PIN was presented to the smart card.\n        /// </summary>\n        SCARD_W_CARD_NOT_AUTHENTICATED = (int)(0x8010006F - 0x100000000),\n        /// <summary>\n        /// Errors occurred accessing one or more objects - the ErrorInfo collection may have more detail\n        /// </summary>\n        COMADMIN_E_OBJECTERRORS = (int)(0x80110401 - 0x100000000),\n        /// <summary>\n        /// One or more of the object's properties are missing or invalid\n        /// </summary>\n        COMADMIN_E_OBJECTINVALID = (int)(0x80110402 - 0x100000000),\n        /// <summary>\n        /// The object was not found in the catalog\n        /// </summary>\n        COMADMIN_E_KEYMISSING = (int)(0x80110403 - 0x100000000),\n        /// <summary>\n        /// The object is already registered\n        /// </summary>\n        COMADMIN_E_ALREADYINSTALLED = (int)(0x80110404 - 0x100000000),\n        /// <summary>\n        /// Error occurred writing to the application file\n        /// </summary>\n        COMADMIN_E_APP_FILE_WRITEFAIL = (int)(0x80110407 - 0x100000000),\n        /// <summary>\n        /// Error occurred reading the application file\n        /// </summary>\n        COMADMIN_E_APP_FILE_READFAIL = (int)(0x80110408 - 0x100000000),\n        /// <summary>\n        /// Invalid version number in application file\n        /// </summary>\n        COMADMIN_E_APP_FILE_VERSION = (int)(0x80110409 - 0x100000000),\n        /// <summary>\n        /// The file path is invalid\n        /// </summary>\n        COMADMIN_E_BADPATH = (int)(0x8011040A - 0x100000000),\n        /// <summary>\n        /// The application is already installed\n        /// </summary>\n        COMADMIN_E_APPLICATIONEXISTS = (int)(0x8011040B - 0x100000000),\n        /// <summary>\n        /// The role already exists\n        /// </summary>\n        COMADMIN_E_ROLEEXISTS = (int)(0x8011040C - 0x100000000),\n        /// <summary>\n        /// An error occurred copying the file\n        /// </summary>\n        COMADMIN_E_CANTCOPYFILE = (int)(0x8011040D - 0x100000000),\n        /// <summary>\n        /// One or more users are not valid\n        /// </summary>\n        COMADMIN_E_NOUSER = (int)(0x8011040F - 0x100000000),\n        /// <summary>\n        /// One or more users in the application file are not valid\n        /// </summary>\n        COMADMIN_E_INVALIDUSERIDS = (int)(0x80110410 - 0x100000000),\n        /// <summary>\n        /// The component's CLSID is missing or corrupt\n        /// </summary>\n        COMADMIN_E_NOREGISTRYCLSID = (int)(0x80110411 - 0x100000000),\n        /// <summary>\n        /// The component's progID is missing or corrupt\n        /// </summary>\n        COMADMIN_E_BADREGISTRYPROGID = (int)(0x80110412 - 0x100000000),\n        /// <summary>\n        /// Unable to set required authentication level for update request\n        /// </summary>\n        COMADMIN_E_AUTHENTICATIONLEVEL = (int)(0x80110413 - 0x100000000),\n        /// <summary>\n        /// The identity or password set on the application is not valid\n        /// </summary>\n        COMADMIN_E_USERPASSWDNOTVALID = (int)(0x80110414 - 0x100000000),\n        /// <summary>\n        /// Application file CLSIDs or IIDs do not match corresponding DLLs\n        /// </summary>\n        COMADMIN_E_CLSIDORIIDMISMATCH = (int)(0x80110418 - 0x100000000),\n        /// <summary>\n        /// Interface information is either missing or changed\n        /// </summary>\n        COMADMIN_E_REMOTEINTERFACE = (int)(0x80110419 - 0x100000000),\n        /// <summary>\n        /// DllRegisterServer failed on component install\n        /// </summary>\n        COMADMIN_E_DLLREGISTERSERVER = (int)(0x8011041A - 0x100000000),\n        /// <summary>\n        /// No server file share available\n        /// </summary>\n        COMADMIN_E_NOSERVERSHARE = (int)(0x8011041B - 0x100000000),\n        /// <summary>\n        /// DLL could not be loaded\n        /// </summary>\n        COMADMIN_E_DLLLOADFAILED = (int)(0x8011041D - 0x100000000),\n        /// <summary>\n        /// The registered TypeLib ID is not valid\n        /// </summary>\n        COMADMIN_E_BADREGISTRYLIBID = (int)(0x8011041E - 0x100000000),\n        /// <summary>\n        /// Application install directory not found\n        /// </summary>\n        COMADMIN_E_APPDIRNOTFOUND = (int)(0x8011041F - 0x100000000),\n        /// <summary>\n        /// Errors occurred while in the component registrar\n        /// </summary>\n        COMADMIN_E_REGISTRARFAILED = (int)(0x80110423 - 0x100000000),\n        /// <summary>\n        /// The file does not exist\n        /// </summary>\n        COMADMIN_E_COMPFILE_DOESNOTEXIST = (int)(0x80110424 - 0x100000000),\n        /// <summary>\n        /// The DLL could not be loaded\n        /// </summary>\n        COMADMIN_E_COMPFILE_LOADDLLFAIL = (int)(0x80110425 - 0x100000000),\n        /// <summary>\n        /// GetClassObject failed in the DLL\n        /// </summary>\n        COMADMIN_E_COMPFILE_GETCLASSOBJ = (int)(0x80110426 - 0x100000000),\n        /// <summary>\n        /// The DLL does not support the components listed in the TypeLib\n        /// </summary>\n        COMADMIN_E_COMPFILE_CLASSNOTAVAIL = (int)(0x80110427 - 0x100000000),\n        /// <summary>\n        /// The TypeLib could not be loaded\n        /// </summary>\n        COMADMIN_E_COMPFILE_BADTLB = (int)(0x80110428 - 0x100000000),\n        /// <summary>\n        /// The file does not contain components or component information\n        /// </summary>\n        COMADMIN_E_COMPFILE_NOTINSTALLABLE = (int)(0x80110429 - 0x100000000),\n        /// <summary>\n        /// Changes to this object and its sub-objects have been disabled\n        /// </summary>\n        COMADMIN_E_NOTCHANGEABLE = (int)(0x8011042A - 0x100000000),\n        /// <summary>\n        /// The delete function has been disabled for this object\n        /// </summary>\n        COMADMIN_E_NOTDELETEABLE = (int)(0x8011042B - 0x100000000),\n        /// <summary>\n        /// The server catalog version is not supported\n        /// </summary>\n        COMADMIN_E_SESSION = (int)(0x8011042C - 0x100000000),\n        /// <summary>\n        /// The component move was disallowed, because the source or destination application is either a system application or currently locked against changes\n        /// </summary>\n        COMADMIN_E_COMP_MOVE_LOCKED = (int)(0x8011042D - 0x100000000),\n        /// <summary>\n        /// The component move failed because the destination application no longer exists\n        /// </summary>\n        COMADMIN_E_COMP_MOVE_BAD_DEST = (int)(0x8011042E - 0x100000000),\n        /// <summary>\n        /// The system was unable to register the TypeLib\n        /// </summary>\n        COMADMIN_E_REGISTERTLB = (int)(0x80110430 - 0x100000000),\n        /// <summary>\n        /// This operation can not be performed on the system application\n        /// </summary>\n        COMADMIN_E_SYSTEMAPP = (int)(0x80110433 - 0x100000000),\n        /// <summary>\n        /// The component registrar referenced in this file is not available\n        /// </summary>\n        COMADMIN_E_COMPFILE_NOREGISTRAR = (int)(0x80110434 - 0x100000000),\n        /// <summary>\n        /// A component in the same DLL is already installed\n        /// </summary>\n        COMADMIN_E_COREQCOMPINSTALLED = (int)(0x80110435 - 0x100000000),\n        /// <summary>\n        /// The service is not installed\n        /// </summary>\n        COMADMIN_E_SERVICENOTINSTALLED = (int)(0x80110436 - 0x100000000),\n        /// <summary>\n        /// One or more property settings are either invalid or in conflict with each other\n        /// </summary>\n        COMADMIN_E_PROPERTYSAVEFAILED = (int)(0x80110437 - 0x100000000),\n        /// <summary>\n        /// The object you are attempting to add or rename already exists\n        /// </summary>\n        COMADMIN_E_OBJECTEXISTS = (int)(0x80110438 - 0x100000000),\n        /// <summary>\n        /// The component already exists\n        /// </summary>\n        COMADMIN_E_COMPONENTEXISTS = (int)(0x80110439 - 0x100000000),\n        /// <summary>\n        /// The registration file is corrupt\n        /// </summary>\n        COMADMIN_E_REGFILE_CORRUPT = (int)(0x8011043B - 0x100000000),\n        /// <summary>\n        /// The property value is too large\n        /// </summary>\n        COMADMIN_E_PROPERTY_OVERFLOW = (int)(0x8011043C - 0x100000000),\n        /// <summary>\n        /// Object was not found in registry\n        /// </summary>\n        COMADMIN_E_NOTINREGISTRY = (int)(0x8011043E - 0x100000000),\n        /// <summary>\n        /// This object is not poolable\n        /// </summary>\n        COMADMIN_E_OBJECTNOTPOOLABLE = (int)(0x8011043F - 0x100000000),\n        /// <summary>\n        /// A CLSID with the same GUID as the new application ID is already installed on this machine\n        /// </summary>\n        COMADMIN_E_APPLID_MATCHES_CLSID = (int)(0x80110446 - 0x100000000),\n        /// <summary>\n        /// A role assigned to a component, interface, or method did not exist in the application\n        /// </summary>\n        COMADMIN_E_ROLE_DOES_NOT_EXIST = (int)(0x80110447 - 0x100000000),\n        /// <summary>\n        /// You must have components in an application in order to start the application\n        /// </summary>\n        COMADMIN_E_START_APP_NEEDS_COMPONENTS = (int)(0x80110448 - 0x100000000),\n        /// <summary>\n        /// This operation is not enabled on this platform\n        /// </summary>\n        COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM = (int)(0x80110449 - 0x100000000),\n        /// <summary>\n        /// Application Proxy is not exportable\n        /// </summary>\n        COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY = (int)(0x8011044A - 0x100000000),\n        /// <summary>\n        /// Failed to start application because it is either a library application or an application proxy\n        /// </summary>\n        COMADMIN_E_CAN_NOT_START_APP = (int)(0x8011044B - 0x100000000),\n        /// <summary>\n        /// System application is not exportable\n        /// </summary>\n        COMADMIN_E_CAN_NOT_EXPORT_SYS_APP = (int)(0x8011044C - 0x100000000),\n        /// <summary>\n        /// Can not subscribe to this component (the component may have been imported)\n        /// </summary>\n        COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT = (int)(0x8011044D - 0x100000000),\n        /// <summary>\n        /// An event class cannot also be a subscriber component\n        /// </summary>\n        COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER = (int)(0x8011044E - 0x100000000),\n        /// <summary>\n        /// Library applications and application proxies are incompatible\n        /// </summary>\n        COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE = (int)(0x8011044F - 0x100000000),\n        /// <summary>\n        /// This function is valid for the base partition only\n        /// </summary>\n        COMADMIN_E_BASE_PARTITION_ONLY = (int)(0x80110450 - 0x100000000),\n        /// <summary>\n        /// You cannot start an application that has been disabled\n        /// </summary>\n        COMADMIN_E_START_APP_DISABLED = (int)(0x80110451 - 0x100000000),\n        /// <summary>\n        /// The specified partition name is already in use on this computer\n        /// </summary>\n        COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME = (int)(0x80110457 - 0x100000000),\n        /// <summary>\n        /// The specified partition name is invalid. Check that the name contains at least one visible character\n        /// </summary>\n        COMADMIN_E_CAT_INVALID_PARTITION_NAME = (int)(0x80110458 - 0x100000000),\n        /// <summary>\n        /// The partition cannot be deleted because it is the default partition for one or more users\n        /// </summary>\n        COMADMIN_E_CAT_PARTITION_IN_USE = (int)(0x80110459 - 0x100000000),\n        /// <summary>\n        /// The partition cannot be exported, because one or more components in the partition have the same file name\n        /// </summary>\n        COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES = (int)(0x8011045A - 0x100000000),\n        /// <summary>\n        /// Applications that contain one or more imported components cannot be installed into a non-base partition\n        /// </summary>\n        COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED = (int)(0x8011045B - 0x100000000),\n        /// <summary>\n        /// The application name is not unique and cannot be resolved to an application id\n        /// </summary>\n        COMADMIN_E_AMBIGUOUS_APPLICATION_NAME = (int)(0x8011045C - 0x100000000),\n        /// <summary>\n        /// The partition name is not unique and cannot be resolved to a partition id\n        /// </summary>\n        COMADMIN_E_AMBIGUOUS_PARTITION_NAME = (int)(0x8011045D - 0x100000000),\n        /// <summary>\n        /// The COM+ registry database has not been initialized\n        /// </summary>\n        COMADMIN_E_REGDB_NOTINITIALIZED = (int)(0x80110472 - 0x100000000),\n        /// <summary>\n        /// The COM+ registry database is not open\n        /// </summary>\n        COMADMIN_E_REGDB_NOTOPEN = (int)(0x80110473 - 0x100000000),\n        /// <summary>\n        /// The COM+ registry database detected a system error\n        /// </summary>\n        COMADMIN_E_REGDB_SYSTEMERR = (int)(0x80110474 - 0x100000000),\n        /// <summary>\n        /// The COM+ registry database is already running\n        /// </summary>\n        COMADMIN_E_REGDB_ALREADYRUNNING = (int)(0x80110475 - 0x100000000),\n        /// <summary>\n        /// This version of the COM+ registry database cannot be migrated\n        /// </summary>\n        COMADMIN_E_MIG_VERSIONNOTSUPPORTED = (int)(0x80110480 - 0x100000000),\n        /// <summary>\n        /// The schema version to be migrated could not be found in the COM+ registry database\n        /// </summary>\n        COMADMIN_E_MIG_SCHEMANOTFOUND = (int)(0x80110481 - 0x100000000),\n        /// <summary>\n        /// There was a type mismatch between binaries\n        /// </summary>\n        COMADMIN_E_CAT_BITNESSMISMATCH = (int)(0x80110482 - 0x100000000),\n        /// <summary>\n        /// A binary of unknown or invalid type was provided\n        /// </summary>\n        COMADMIN_E_CAT_UNACCEPTABLEBITNESS = (int)(0x80110483 - 0x100000000),\n        /// <summary>\n        /// There was a type mismatch between a binary and an application\n        /// </summary>\n        COMADMIN_E_CAT_WRONGAPPBITNESS = (int)(0x80110484 - 0x100000000),\n        /// <summary>\n        /// The application cannot be paused or resumed\n        /// </summary>\n        COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED = (int)(0x80110485 - 0x100000000),\n        /// <summary>\n        /// The COM+ Catalog Server threw an exception during execution\n        /// </summary>\n        COMADMIN_E_CAT_SERVERFAULT = (int)(0x80110486 - 0x100000000),\n        /// <summary>\n        /// Only COM+ Applications marked \"queued\" can be invoked using the \"queue\" moniker\n        /// </summary>\n        COMQC_E_APPLICATION_NOT_QUEUED = (int)(0x80110600 - 0x100000000),\n        /// <summary>\n        /// At least one interface must be marked \"queued\" in order to create a queued component instance with the \"queue\" moniker\n        /// </summary>\n        COMQC_E_NO_QUEUEABLE_INTERFACES = (int)(0x80110601 - 0x100000000),\n        /// <summary>\n        /// MSMQ is required for the requested operation and is not installed\n        /// </summary>\n        COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE = (int)(0x80110602 - 0x100000000),\n        /// <summary>\n        /// Unable to marshal an interface that does not support IPersistStream\n        /// </summary>\n        COMQC_E_NO_IPERSISTSTREAM = (int)(0x80110603 - 0x100000000),\n        /// <summary>\n        /// The message is improperly formatted or was damaged in transit\n        /// </summary>\n        COMQC_E_BAD_MESSAGE = (int)(0x80110604 - 0x100000000),\n        /// <summary>\n        /// An unauthenticated message was received by an application that accepts only authenticated messages\n        /// </summary>\n        COMQC_E_UNAUTHENTICATED = (int)(0x80110605 - 0x100000000),\n        /// <summary>\n        /// The message was requeued or moved by a user not in the \"QC Trusted User\" role\n        /// </summary>\n        COMQC_E_UNTRUSTED_ENQUEUER = (int)(0x80110606 - 0x100000000),\n        /// <summary>\n        /// Cannot create a duplicate resource of type Distributed Transaction Coordinator\n        /// </summary>\n        MSDTC_E_DUPLICATE_RESOURCE = (int)(0x80110701 - 0x100000000),\n        /// <summary>\n        /// One of the objects being inserted or updated does not belong to a valid parent collection\n        /// </summary>\n        COMADMIN_E_OBJECT_PARENT_MISSING = (int)(0x80110808 - 0x100000000),\n        /// <summary>\n        /// One of the specified objects cannot be found\n        /// </summary>\n        COMADMIN_E_OBJECT_DOES_NOT_EXIST = (int)(0x80110809 - 0x100000000),\n        /// <summary>\n        /// The specified application is not currently running\n        /// </summary>\n        COMADMIN_E_APP_NOT_RUNNING = (int)(0x8011080A - 0x100000000),\n        /// <summary>\n        /// The partition(s) specified are not valid.\n        /// </summary>\n        COMADMIN_E_INVALID_PARTITION = (int)(0x8011080B - 0x100000000),\n        /// <summary>\n        /// COM+ applications that run as NT service may not be pooled or recycled\n        /// </summary>\n        COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE = (int)(0x8011080D - 0x100000000),\n        /// <summary>\n        /// One or more users are already assigned to a local partition set.\n        /// </summary>\n        COMADMIN_E_USER_IN_SET = (int)(0x8011080E - 0x100000000),\n        /// <summary>\n        /// Library applications may not be recycled.\n        /// </summary>\n        COMADMIN_E_CANTRECYCLELIBRARYAPPS = (int)(0x8011080F - 0x100000000),\n        /// <summary>\n        /// Applications running as NT services may not be recycled.\n        /// </summary>\n        COMADMIN_E_CANTRECYCLESERVICEAPPS = (int)(0x80110811 - 0x100000000),\n        /// <summary>\n        /// The process has already been recycled.\n        /// </summary>\n        COMADMIN_E_PROCESSALREADYRECYCLED = (int)(0x80110812 - 0x100000000),\n        /// <summary>\n        /// A paused process may not be recycled.\n        /// </summary>\n        COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED = (int)(0x80110813 - 0x100000000),\n        /// <summary>\n        /// Library applications may not be NT services.\n        /// </summary>\n        COMADMIN_E_CANTMAKEINPROCSERVICE = (int)(0x80110814 - 0x100000000),\n        /// <summary>\n        /// The ProgID provided to the copy operation is invalid. The ProgID is in use by another registered CLSID.\n        /// </summary>\n        COMADMIN_E_PROGIDINUSEBYCLSID = (int)(0x80110815 - 0x100000000),\n        /// <summary>\n        /// The partition specified as default is not a member of the partition set.\n        /// </summary>\n        COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET = (int)(0x80110816 - 0x100000000),\n        /// <summary>\n        /// A recycled process may not be paused.\n        /// </summary>\n        COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED = (int)(0x80110817 - 0x100000000),\n        /// <summary>\n        /// Access to the specified partition is denied.\n        /// </summary>\n        COMADMIN_E_PARTITION_ACCESSDENIED = (int)(0x80110818 - 0x100000000),\n        /// <summary>\n        /// Only Application Files (*.MSI files) can be installed into partitions.\n        /// </summary>\n        COMADMIN_E_PARTITION_MSI_ONLY = (int)(0x80110819 - 0x100000000),\n        /// <summary>\n        /// Applications containing one or more legacy components may not be exported to 1.0 format.\n        /// </summary>\n        COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT = (int)(0x8011081A - 0x100000000),\n        /// <summary>\n        /// Legacy components may not exist in non-base partitions.\n        /// </summary>\n        COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS = (int)(0x8011081B - 0x100000000),\n        /// <summary>\n        /// A component cannot be moved (or copied) from the System Application, an application proxy or a non-changeable application\n        /// </summary>\n        COMADMIN_E_COMP_MOVE_SOURCE = (int)(0x8011081C - 0x100000000),\n        /// <summary>\n        /// A component cannot be moved (or copied) to the System Application, an application proxy or a non-changeable application\n        /// </summary>\n        COMADMIN_E_COMP_MOVE_DEST = (int)(0x8011081D - 0x100000000),\n        /// <summary>\n        /// A private component cannot be moved (or copied) to a library application or to the base partition\n        /// </summary>\n        COMADMIN_E_COMP_MOVE_PRIVATE = (int)(0x8011081E - 0x100000000),\n        /// <summary>\n        /// The Base Application Partition exists in all partition sets and cannot be removed.\n        /// </summary>\n        COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET = (int)(0x8011081F - 0x100000000),\n        /// <summary>\n        /// Alas, Event Class components cannot be aliased.\n        /// </summary>\n        COMADMIN_E_CANNOT_ALIAS_EVENTCLASS = (int)(0x80110820 - 0x100000000),\n        /// <summary>\n        /// Access is denied because the component is private.\n        /// </summary>\n        COMADMIN_E_PRIVATE_ACCESSDENIED = (int)(0x80110821 - 0x100000000),\n        /// <summary>\n        /// The specified SAFER level is invalid.\n        /// </summary>\n        COMADMIN_E_SAFERINVALID = (int)(0x80110822 - 0x100000000),\n        /// <summary>\n        /// The specified user cannot write to the system registry\n        /// </summary>\n        COMADMIN_E_REGISTRY_ACCESSDENIED = (int)(0x80110823 - 0x100000000),\n        /// <summary>\n        /// No information avialable.\n        /// </summary>\n        COMADMIN_E_PARTITIONS_DISABLED = (int)(0x80110824 - 0x100000000),\n        /// <summary>\n        /// Failed to open a file.\n        /// </summary>\n        NS_E_FILE_OPEN_FAILED = (int)(0xC00D001DL - 0x100000000),\n    }\n}\n/******************************************************************************/\n/*                END OF FILE                 */\n/******************************************************************************/"
  },
  {
    "path": "source/HelperTools/ResultWin32Extensions.cs",
    "content": "using System;\nusing System.IO;\nusing System.Runtime.InteropServices;\nusing System.Text;\n\nnamespace Microsoft.Win32.Interop\n{\n    internal static class ResultWin32Extensions\n    {\n        /// <summary>\n        /// Converts a ResultWin32 error code to an appropriate .Net Exception.\n        /// </summary>\n        /// <param name=\"errorCode\">The ResultWin32 error code to convert.</param>\n        /// <param name=\"additionalMessage\">An optional message to append to the exception message.</param>\n        /// <param name=\"getSystemMessage\">Whether to include the system message for the error code, if any.</param>\n        /// <returns>An Exception corresponding to the specified error code.</returns>\n        public static Exception ToException(this ResultWin32 errorCode, string additionalMessage = null, bool getSystemMessage = true)\n        {\n            var message = errorCode.ToString();\n\n            if (getSystemMessage)\n            {\n                var systemMessage = GetSystemMessage(errorCode);\n                if (!string.IsNullOrWhiteSpace(systemMessage))\n                    message += \" | \" + systemMessage;\n            }\n\n            if (!string.IsNullOrWhiteSpace(additionalMessage))\n                message += \" | \" + additionalMessage;\n\n            switch (errorCode)\n            {\n                case ResultWin32.ERROR_BAD_ENVIRONMENT:\n                case ResultWin32.ERROR_INVALID_FUNCTION:\n                    return new InvalidOperationException(message);\n\n                case ResultWin32.ERROR_INVALID_DATA:\n                    return new InvalidDataException(message);\n\n                case ResultWin32.ERROR_ACCESS_DENIED:\n                case ResultWin32.ERROR_NETWORK_ACCESS_DENIED:\n                    return new UnauthorizedAccessException();\n\n                case ResultWin32.ERROR_FILE_NOT_FOUND:\n                case ResultWin32.ERROR_PATH_NOT_FOUND:\n                    return new FileNotFoundException(message);\n\n                case ResultWin32.ERROR_NOT_ENOUGH_MEMORY:\n                case ResultWin32.ERROR_NOT_ENOUGH_SERVER_MEMORY:\n                    return new InsufficientMemoryException(message);\n\n                case ResultWin32.ERROR_INVALID_PARAMETER:\n                case ResultWin32.ERROR_DIRECTORY:\n                case ResultWin32.ERROR_UNKNOWN_PROPERTY:\n                case ResultWin32.ERROR_UNKNOWN_PRODUCT:\n                case ResultWin32.ERROR_UNKNOWN_FEATURE:\n                case ResultWin32.ERROR_UNKNOWN_COMPONENT:\n                    return new ArgumentException(message);\n\n                case ResultWin32.ERROR_INSTALL_USEREXIT:\n                    return new OperationCanceledException(message);\n\n                case ResultWin32.ERROR_CALL_NOT_IMPLEMENTED:\n                    return new NotImplementedException(message);\n\n                case ResultWin32.WAIT_TIMEOUT:\n                case ResultWin32.ERROR_SEM_TIMEOUT:\n                    return new TimeoutException(message);\n\n                default:\n                    return new IOException(message, (int)errorCode);\n            }\n        }\n\n        [DllImport(\"kernel32.dll\", SetLastError = true, CharSet = CharSet.Unicode, EntryPoint = \"FormatMessageW\")]\n        private static extern uint FormatMessage(uint dwFlags, IntPtr lpSource, uint dwMessageId, uint dwLanguageId, StringBuilder lpBuffer, uint nSize, IntPtr arguments);\n\n        /// <summary>\n        /// Retrieves the system error message associated with the specified Win32 error code, if any.\n        /// </summary>\n        /// <param name=\"errorCode\">The Win32 error code for which to obtain the system message.</param>\n        /// <returns>The corresponding system error message, or null if no message is found.</returns>\n        public static string GetSystemMessage(this ResultWin32 errorCode)\n        {\n            const uint FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200;\n            const uint FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000;\n\n            var buf = new StringBuilder(1024);\n            var formatCount = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,\n                                            IntPtr.Zero, (uint)errorCode, 0, buf, (uint)buf.Capacity, IntPtr.Zero);\n\n            return formatCount != 0 ? buf.ToString().Trim() : null;\n        }\n\n        /// <summary>\n        /// Determines whether the specified ResultCom value represents an error code.\n        /// </summary>\n        /// <param name=\"comCode\">The ResultCom value to evaluate.</param>\n        /// <returns>true if the value represents an error; otherwise, false.</returns>\n        public static bool IsError(this ResultCom comCode) => (int)comCode < 0;\n        /// <summary>\n        /// Determines whether the specified ResultCom value represents a success code.\n        /// </summary>\n        /// <param name=\"comCode\">The ResultCom value to evaluate.</param>\n        /// <returns>true if the value is greater than or equal to zero; otherwise, false.</returns>\n        public static bool IsSuccess(this ResultCom comCode) => (int)comCode >= 0;\n    }\n}"
  },
  {
    "path": "source/KlocTools/Collections/ObservedList.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace Klocman.Collections\n{\n    /// <summary>\n    ///     Generic list with an ListChanged event that fires whenever items get added or removed (not modified).\n    /// </summary>\n    //[Serializable]\n    public class ObservedList<T> : IList<T>\n    {\n        private readonly List<T> _itemList = new();\n        public virtual int Count => _itemList.Count;\n        public virtual bool IsReadOnly => false;\n\n        public virtual T this[int index]\n        {\n            get { return _itemList[index]; }\n            set { _itemList[index] = value; }\n        }\n\n        public virtual void Add(T item)\n        {\n            OnListChangedEvent();\n            _itemList.Add(item);\n        }\n\n        public virtual void Clear()\n        {\n            OnListChangedEvent();\n            _itemList.Clear();\n        }\n\n        public virtual bool Contains(T item)\n        {\n            return _itemList.Contains(item);\n        }\n\n        public virtual void CopyTo(T[] array, int arrayIndex)\n        {\n            _itemList.CopyTo(array, arrayIndex);\n        }\n\n        public virtual IEnumerator<T> GetEnumerator()\n        {\n            return _itemList.GetEnumerator();\n        }\n\n        IEnumerator IEnumerable.GetEnumerator()\n        {\n            return GetEnumerator();\n        }\n\n        public virtual int IndexOf(T item)\n        {\n            return _itemList.IndexOf(item);\n        }\n\n        public virtual void Insert(int index, T item)\n        {\n            OnListChangedEvent();\n            _itemList.Insert(index, item);\n        }\n\n        public virtual bool Remove(T item)\n        {\n            OnListChangedEvent();\n            return _itemList.Remove(item);\n        }\n\n        public virtual void RemoveAt(int index)\n        {\n            OnListChangedEvent();\n            _itemList.RemoveAt(index);\n        }\n\n        public event Action ListChanged;\n\n        public void AddRange(IEnumerable<T> items)\n        {\n            var enumerable = items as IList<T> ?? items.ToList();\n            if (!enumerable.Any())\n                return;\n\n            foreach (var item in enumerable)\n                _itemList.Add(item);\n\n            try\n            {\n                OnListChangedEvent();\n            }\n            catch (Exception)\n            {\n                // ignored\n            }\n        }\n\n        /// <exception cref=\"Exception\">A delegate callback throws an exception. </exception>\n        public void OnListChangedEvent()\n        {\n            var handler = ListChanged;\n            handler?.Invoke();\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/CommandLink.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Runtime.InteropServices;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    public sealed class CommandLink : Button\n    {\n        private const uint BCM_GETNOTE = 0x0000160A;\n        private const uint BCM_GETNOTELENGTH = 0x0000160B;\n        private const uint BCM_SETNOTE = 0x00001609;\n        private const uint BCM_SETSHIELD = 0x0000160C;\n        private const int BS_COMMANDLINK = 0x0000000E;\n        private bool _shield;\n\n        public CommandLink()\n        {\n            base.FlatStyle = FlatStyle.System;\n        }\n\n        // Prevent FlatStyle from changing\n        public new FlatStyle FlatStyle => base.FlatStyle;\n        protected override Size DefaultSize => new(180, 60);\n\n        [Category(\"Command Link\"),\n         Description(\"Gets or sets the note text of the command link.\"),\n         DefaultValue(\"\")]\n        public string Note\n        {\n            get { return GetNoteText(); }\n            set { SetNoteText(value); }\n        }\n\n        [Category(\"Command Link\"),\n         Description(\"Gets or sets the shield icon visibility of the command link.\"),\n         DefaultValue(false)]\n        public bool Shield\n        {\n            get { return _shield; }\n            set\n            {\n                _shield = value;\n                SendMessage(new HandleRef(this, Handle), BCM_SETSHIELD, IntPtr.Zero,\n                    _shield);\n            }\n        }\n\n        protected override CreateParams CreateParams\n        {\n            get\n            {\n                var cParams = base.CreateParams;\n                cParams.Style |= BS_COMMANDLINK;\n                return cParams;\n            }\n        }\n\n        [DllImport(\"user32.dll\", CharSet = CharSet.Unicode)]\n        private static extern int SendMessage(HandleRef hWnd,\n            uint Msg, ref int wParam, StringBuilder lParam);\n\n        [DllImport(\"user32.dll\", CharSet = CharSet.Unicode)]\n        private static extern int SendMessage(HandleRef hWnd,\n            uint Msg, IntPtr wParam, string lParam);\n\n        [DllImport(\"user32.dll\", CharSet = CharSet.Unicode)]\n        private static extern int SendMessage(HandleRef hWnd,\n            uint Msg, IntPtr wParam, bool lParam);\n\n        [DllImport(\"user32.dll\", CharSet = CharSet.Unicode)]\n        private static extern int SendMessage(HandleRef hWnd,\n            uint Msg, IntPtr wParam, IntPtr lParam);\n\n        private string GetNoteText()\n        {\n            var length = SendMessage(new HandleRef(this, Handle),\n                BCM_GETNOTELENGTH,\n                IntPtr.Zero, IntPtr.Zero) + 1;\n\n            var sb = new StringBuilder(length);\n\n            SendMessage(new HandleRef(this, Handle),\n                BCM_GETNOTE,\n                ref length, sb);\n\n            return sb.ToString();\n        }\n\n        private void SetNoteText(string value)\n        {\n            SendMessage(new HandleRef(this, Handle),\n                BCM_SETNOTE,\n                IntPtr.Zero, value);\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/ContentAlignmentBox.Designer.cs",
    "content": "﻿namespace Klocman.Controls\n{\n    partial class ContentAlignmentBox\n    {\n        /// <summary> \n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary> \n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Component Designer generated code\n\n        /// <summary> \n        /// Required method for Designer support - do not modify \n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();\n            this.checkBox9 = new System.Windows.Forms.CheckBox();\n            this.checkBox8 = new System.Windows.Forms.CheckBox();\n            this.checkBox7 = new System.Windows.Forms.CheckBox();\n            this.checkBox6 = new System.Windows.Forms.CheckBox();\n            this.checkBox5 = new System.Windows.Forms.CheckBox();\n            this.checkBox4 = new System.Windows.Forms.CheckBox();\n            this.checkBox3 = new System.Windows.Forms.CheckBox();\n            this.checkBox2 = new System.Windows.Forms.CheckBox();\n            this.checkBox1 = new System.Windows.Forms.CheckBox();\n            this.tableLayoutPanel2.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // tableLayoutPanel2\n            // \n            this.tableLayoutPanel2.ColumnCount = 3;\n            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));\n            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));\n            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));\n            this.tableLayoutPanel2.Controls.Add(this.checkBox9, 2, 2);\n            this.tableLayoutPanel2.Controls.Add(this.checkBox8, 1, 2);\n            this.tableLayoutPanel2.Controls.Add(this.checkBox7, 0, 2);\n            this.tableLayoutPanel2.Controls.Add(this.checkBox6, 2, 1);\n            this.tableLayoutPanel2.Controls.Add(this.checkBox5, 1, 1);\n            this.tableLayoutPanel2.Controls.Add(this.checkBox4, 0, 1);\n            this.tableLayoutPanel2.Controls.Add(this.checkBox3, 2, 0);\n            this.tableLayoutPanel2.Controls.Add(this.checkBox2, 1, 0);\n            this.tableLayoutPanel2.Controls.Add(this.checkBox1, 0, 0);\n            this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0);\n            this.tableLayoutPanel2.Name = \"tableLayoutPanel2\";\n            this.tableLayoutPanel2.RowCount = 3;\n            this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));\n            this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));\n            this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));\n            this.tableLayoutPanel2.Size = new System.Drawing.Size(78, 78);\n            this.tableLayoutPanel2.TabIndex = 0;\n            // \n            // checkBox9\n            // \n            this.checkBox9.AutoSize = true;\n            this.checkBox9.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.checkBox9.Location = new System.Drawing.Point(55, 55);\n            this.checkBox9.Name = \"checkBox9\";\n            this.checkBox9.Padding = new System.Windows.Forms.Padding(4);\n            this.checkBox9.Size = new System.Drawing.Size(20, 20);\n            this.checkBox9.TabIndex = 8;\n            this.checkBox9.UseVisualStyleBackColor = true;\n            this.checkBox9.CheckedChanged += new System.EventHandler(this.CheckedChanged);\n            // \n            // checkBox8\n            // \n            this.checkBox8.AutoSize = true;\n            this.checkBox8.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.checkBox8.Location = new System.Drawing.Point(29, 55);\n            this.checkBox8.Name = \"checkBox8\";\n            this.checkBox8.Padding = new System.Windows.Forms.Padding(4);\n            this.checkBox8.Size = new System.Drawing.Size(20, 20);\n            this.checkBox8.TabIndex = 7;\n            this.checkBox8.UseVisualStyleBackColor = true;\n            this.checkBox8.CheckedChanged += new System.EventHandler(this.CheckedChanged);\n            // \n            // checkBox7\n            // \n            this.checkBox7.AutoSize = true;\n            this.checkBox7.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.checkBox7.Location = new System.Drawing.Point(3, 55);\n            this.checkBox7.Name = \"checkBox7\";\n            this.checkBox7.Padding = new System.Windows.Forms.Padding(4);\n            this.checkBox7.Size = new System.Drawing.Size(20, 20);\n            this.checkBox7.TabIndex = 6;\n            this.checkBox7.UseVisualStyleBackColor = true;\n            this.checkBox7.CheckedChanged += new System.EventHandler(this.CheckedChanged);\n            // \n            // checkBox6\n            // \n            this.checkBox6.AutoSize = true;\n            this.checkBox6.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.checkBox6.Location = new System.Drawing.Point(55, 29);\n            this.checkBox6.Name = \"checkBox6\";\n            this.checkBox6.Padding = new System.Windows.Forms.Padding(4);\n            this.checkBox6.Size = new System.Drawing.Size(20, 20);\n            this.checkBox6.TabIndex = 5;\n            this.checkBox6.UseVisualStyleBackColor = true;\n            this.checkBox6.CheckedChanged += new System.EventHandler(this.CheckedChanged);\n            // \n            // checkBox5\n            // \n            this.checkBox5.AutoSize = true;\n            this.checkBox5.Checked = true;\n            this.checkBox5.CheckState = System.Windows.Forms.CheckState.Checked;\n            this.checkBox5.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.checkBox5.Location = new System.Drawing.Point(29, 29);\n            this.checkBox5.Name = \"checkBox5\";\n            this.checkBox5.Padding = new System.Windows.Forms.Padding(4);\n            this.checkBox5.Size = new System.Drawing.Size(20, 20);\n            this.checkBox5.TabIndex = 4;\n            this.checkBox5.UseVisualStyleBackColor = true;\n            this.checkBox5.CheckedChanged += new System.EventHandler(this.CheckedChanged);\n            // \n            // checkBox4\n            // \n            this.checkBox4.AutoSize = true;\n            this.checkBox4.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.checkBox4.Location = new System.Drawing.Point(3, 29);\n            this.checkBox4.Name = \"checkBox4\";\n            this.checkBox4.Padding = new System.Windows.Forms.Padding(4);\n            this.checkBox4.Size = new System.Drawing.Size(20, 20);\n            this.checkBox4.TabIndex = 3;\n            this.checkBox4.UseVisualStyleBackColor = true;\n            this.checkBox4.CheckedChanged += new System.EventHandler(this.CheckedChanged);\n            // \n            // checkBox3\n            // \n            this.checkBox3.AutoSize = true;\n            this.checkBox3.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.checkBox3.Location = new System.Drawing.Point(55, 3);\n            this.checkBox3.Name = \"checkBox3\";\n            this.checkBox3.Padding = new System.Windows.Forms.Padding(4);\n            this.checkBox3.Size = new System.Drawing.Size(20, 20);\n            this.checkBox3.TabIndex = 2;\n            this.checkBox3.UseVisualStyleBackColor = true;\n            this.checkBox3.CheckedChanged += new System.EventHandler(this.CheckedChanged);\n            // \n            // checkBox2\n            // \n            this.checkBox2.AutoSize = true;\n            this.checkBox2.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.checkBox2.Location = new System.Drawing.Point(29, 3);\n            this.checkBox2.Name = \"checkBox2\";\n            this.checkBox2.Padding = new System.Windows.Forms.Padding(4);\n            this.checkBox2.Size = new System.Drawing.Size(20, 20);\n            this.checkBox2.TabIndex = 1;\n            this.checkBox2.UseVisualStyleBackColor = true;\n            this.checkBox2.CheckedChanged += new System.EventHandler(this.CheckedChanged);\n            // \n            // checkBox1\n            // \n            this.checkBox1.AutoSize = true;\n            this.checkBox1.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.checkBox1.Location = new System.Drawing.Point(3, 3);\n            this.checkBox1.Name = \"checkBox1\";\n            this.checkBox1.Padding = new System.Windows.Forms.Padding(4);\n            this.checkBox1.Size = new System.Drawing.Size(20, 20);\n            this.checkBox1.TabIndex = 0;\n            this.checkBox1.UseVisualStyleBackColor = true;\n            this.checkBox1.CheckedChanged += new System.EventHandler(this.CheckedChanged);\n            // \n            // ContentAlignmentBox\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.Controls.Add(this.tableLayoutPanel2);\n            this.MaximumSize = new System.Drawing.Size(78, 78);\n            this.MinimumSize = new System.Drawing.Size(78, 78);\n            this.Name = \"ContentAlignmentBox\";\n            this.Size = new System.Drawing.Size(78, 78);\n            this.tableLayoutPanel2.ResumeLayout(false);\n            this.tableLayoutPanel2.PerformLayout();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;\n        private System.Windows.Forms.CheckBox checkBox9;\n        private System.Windows.Forms.CheckBox checkBox8;\n        private System.Windows.Forms.CheckBox checkBox7;\n        private System.Windows.Forms.CheckBox checkBox6;\n        private System.Windows.Forms.CheckBox checkBox5;\n        private System.Windows.Forms.CheckBox checkBox4;\n        private System.Windows.Forms.CheckBox checkBox3;\n        private System.Windows.Forms.CheckBox checkBox2;\n        private System.Windows.Forms.CheckBox checkBox1;\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Controls/ContentAlignmentBox.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Linq;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    public partial class ContentAlignmentBox : UserControl\n    {\n        private readonly IEnumerable<CheckBox> _checkBoxes;\n        private readonly object _lock = new();\n        private bool _suppress;\n\n        public ContentAlignmentBox()\n        {\n            InitializeComponent();\n            _checkBoxes = tableLayoutPanel2.Controls.Cast<Control>().OfType<CheckBox>();\n        }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public ContentAlignment SelectedContentAlignment\n        {\n            get\n            {\n                lock (_lock)\n                {\n                    var box = _checkBoxes.Single(x => x.Checked);\n                    if (box == checkBox1)\n                        return ContentAlignment.TopLeft;\n                    if (box == checkBox2)\n                        return ContentAlignment.TopCenter;\n                    if (box == checkBox3)\n                        return ContentAlignment.TopRight;\n                    if (box == checkBox4)\n                        return ContentAlignment.MiddleLeft;\n                    if (box == checkBox5)\n                        return ContentAlignment.MiddleCenter;\n                    if (box == checkBox6)\n                        return ContentAlignment.MiddleRight;\n                    if (box == checkBox7)\n                        return ContentAlignment.BottomLeft;\n                    if (box == checkBox8)\n                        return ContentAlignment.BottomCenter;\n                    if (box == checkBox9)\n                        return ContentAlignment.BottomRight;\n\n                    throw new InvalidOperationException();\n                }\n            }\n            set\n            {\n                lock (_lock)\n                {\n                    switch (value)\n                    {\n                        case ContentAlignment.TopLeft:\n                            checkBox1.Checked = true;\n                            break;\n                        case ContentAlignment.TopCenter:\n                            checkBox2.Checked = true;\n                            break;\n                        case ContentAlignment.TopRight:\n                            checkBox3.Checked = true;\n                            break;\n                        case ContentAlignment.MiddleLeft:\n                            checkBox4.Checked = true;\n                            break;\n                        case ContentAlignment.MiddleCenter:\n                            checkBox5.Checked = true;\n                            break;\n                        case ContentAlignment.MiddleRight:\n                            checkBox6.Checked = true;\n                            break;\n                        case ContentAlignment.BottomLeft:\n                            checkBox7.Checked = true;\n                            break;\n                        case ContentAlignment.BottomCenter:\n                            checkBox8.Checked = true;\n                            break;\n                        case ContentAlignment.BottomRight:\n                            checkBox9.Checked = true;\n                            break;\n\n                        default:\n                            throw new InvalidEnumArgumentException();\n                    }\n                }\n            }\n        }\n\n        public event EventHandler SelectedContentAlignmentChanged;\n\n        private void CheckedChanged(object sender, EventArgs e)\n        {\n            lock (_lock)\n            {\n                if (_suppress) return;\n                _suppress = true;\n\n                var box = (CheckBox) sender;\n                var changed = true;\n\n                if (box.Checked)\n                {\n                    foreach (var checkedBox in _checkBoxes.Where(x => x != box))\n                    {\n                        checkedBox.Checked = false;\n                    }\n                }\n                else if (_checkBoxes.All(x => !x.Checked))\n                {\n                    box.Checked = true;\n                    changed = false;\n                }\n\n                _suppress = false;\n\n                if (changed)\n                    SelectedContentAlignmentChanged?.Invoke(sender, e);\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/ContentAlignmentBox.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.Designer.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    partial class DirectorySelectBox\n    {\n        /// <summary> \n        /// Required designer variable.\n        /// </summary>\n        private IContainer components = null;\n\n        /// <summary> \n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Component Designer generated code\n\n        /// <summary> \n        /// Required method for Designer support - do not modify \n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            ComponentResourceManager resources = new ComponentResourceManager(typeof(DirectorySelectBox));\n            textBox1 = new TextBox();\n            button1 = new Button();\n            folderBrowserDialog = new FolderBrowserDialog();\n            panel1 = new Panel();\n            panel1.SuspendLayout();\n            SuspendLayout();\n            // \n            // textBox1\n            // \n            textBox1.AllowDrop = true;\n            resources.ApplyResources(textBox1, \"textBox1\");\n            textBox1.Name = \"textBox1\";\n            textBox1.DragDrop += OnDragDrop;\n            textBox1.DragEnter += OnDragEnter;\n            textBox1.Validating += textBox1_Validating;\n            // \n            // button1\n            // \n            button1.AllowDrop = true;\n            resources.ApplyResources(button1, \"button1\");\n            button1.Name = \"button1\";\n            button1.UseVisualStyleBackColor = true;\n            button1.Click += button1_Click;\n            button1.DragDrop += OnDragDrop;\n            button1.DragEnter += OnDragEnter;\n            // \n            // panel1\n            // \n            panel1.Controls.Add(textBox1);\n            resources.ApplyResources(panel1, \"panel1\");\n            panel1.Name = \"panel1\";\n            // \n            // DirectorySelectBox\n            // \n            resources.ApplyResources(this, \"$this\");\n            AutoScaleMode = AutoScaleMode.Font;\n            Controls.Add(panel1);\n            Controls.Add(button1);\n            Name = \"DirectorySelectBox\";\n            panel1.ResumeLayout(false);\n            panel1.PerformLayout();\n            ResumeLayout(false);\n            PerformLayout();\n\n        }\n\n        #endregion\n\n        private TextBox textBox1;\n        private Button button1;\n        private FolderBrowserDialog folderBrowserDialog;\n        private Panel panel1;\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.IO;\nusing System.Linq;\nusing System.Text.RegularExpressions;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    /// <summary>\n    ///     Path selection box with validation and filtering of the supplied path.\n    ///     Browsing to find desired file is possible with a dedicated button.\n    /// </summary>\n    public sealed partial class DirectorySelectBox : UserControl\n    {\n        #region Fields\n\n        private readonly Regex _r;\n\n        #endregion Fields\n\n        #region Constructors\n\n        public DirectorySelectBox()\n        {\n            InitializeComponent();\n\n            var regexSearch = new string(Path.GetInvalidPathChars());\n            _r = new Regex(string.Format(\"[{0}]\", Regex.Escape(regexSearch)));\n        }\n\n        #endregion Constructors\n\n        #region Properties\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public string DirectoryPath\n        {\n            get { return textBox1.Text; }\n            set\n            {\n                if (textBox1.Text != value)\n                {\n                    textBox1.Text = value;\n                    OnDirectoryPathChanged();\n                }\n            }\n        }\n\n        #endregion Properties\n\n        #region Events\n\n        public event EventHandler DirectoryPathChanged;\n\n        #endregion Events\n\n        #region Methods\n\n        private void button1_Click(object sender, EventArgs e)\n        {\n            folderBrowserDialog.ShowDialog();\n            DirectoryPath = folderBrowserDialog.SelectedPath;\n        }\n\n        private void OnDirectoryPathChanged()\n        {\n            DirectoryPathChanged?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void textBox1_Validating(object sender, CancelEventArgs e)\n        {\n            DirectoryPath = _r.Replace(DirectoryPath, string.Empty);\n            OnDirectoryPathChanged();\n        }\n\n        #endregion Methods\n\n        private void OnDragDrop(object sender, DragEventArgs e)\n        {\n            if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Link;\n        }\n\n        private void OnDragEnter(object sender, DragEventArgs e)\n        {\n            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);\n\n            var dir = files.FirstOrDefault(Directory.Exists);\n\n            if (!string.IsNullOrEmpty(dir))\n                DirectoryPath = dir;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Procházet ...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>blättern</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Explorar...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Parcourir...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Böngészés...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Sfoglia...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>参照...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Bladeren...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Przeglądaj...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Procurar...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Procurar...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals of this format is to allow a simple XML format\n    that is mostly human readable. The generation and parsing of the\n    various data types are done through the TypeConverter classes\n    associated with the data types.\n\n    Example:\n\n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n\n    There are any number of \"resheader\" rows that contain simple\n    name/value pairs.\n\n    Each data row contains a name, and value. The row also contains a\n    type or mimetype. Type corresponds to a .NET class that support\n    text/value conversion through the TypeConverter architecture.\n    Classes that don't support this are serialized and stored with the\n    mimetype set.\n\n    The mimetype is used for serialized objects, and tells the\n    ResXResourceReader how to depersist the object. This is currently not\n    extensible. For a given mimetype the value must be set accordingly:\n\n    Note - application/x-microsoft.net.object.binary.base64 is the format\n    that the ResXResourceWriter will generate, however the reader can\n    read any of the formats listed below.\n\n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array\n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"textBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Fill</value>\n  </data>\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\n  <data name=\"textBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>1, 1</value>\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"textBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"textBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>257, 23</value>\n  </data>\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"textBox1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"&gt;&gt;textBox1.Name\" xml:space=\"preserve\">\n    <value>textBox1</value>\n  </data>\n  <data name=\"&gt;&gt;textBox1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;textBox1.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;textBox1.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <data name=\"button1.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"button1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"button1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>267, 0</value>\n  </data>\n  <data name=\"button1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"button1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>88, 25</value>\n  </data>\n  <data name=\"button1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>1</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Browse...</value>\n  </data>\n  <data name=\"&gt;&gt;button1.Name\" xml:space=\"preserve\">\n    <value>button1</value>\n  </data>\n  <data name=\"&gt;&gt;button1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;button1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;button1.ZOrder\" xml:space=\"preserve\">\n    <value>1</value>\n  </data>\n  <metadata name=\"folderBrowserDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>17, 17</value>\n  </metadata>\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Fill</value>\n  </data>\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>0, 0</value>\n  </data>\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"panel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>1, 1, 9, 1</value>\n  </data>\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>267, 25</value>\n  </data>\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>2</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\n    <value>7, 15</value>\n  </data>\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"$this.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>116667, 25</value>\n  </data>\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>12, 25</value>\n  </data>\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>355, 25</value>\n  </data>\n  <data name=\"&gt;&gt;folderBrowserDialog.Name\" xml:space=\"preserve\">\n    <value>folderBrowserDialog</value>\n  </data>\n  <data name=\"&gt;&gt;folderBrowserDialog.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.FolderBrowserDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\n    <value>DirectorySelectBox</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Обзор...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Prebrskaj...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Bläddra...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Göz at...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Duyệt qua...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>浏览...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/DirectorySelectBox.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>瀏覽...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/EditableCheckedListView.Designer.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    partial class EditableCheckedListView\n    {\n        /// <summary> \n        /// Required designer variable.\n        /// </summary>\n        private IContainer components = null;\n\n        /// <summary> \n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Component Designer generated code\n\n        /// <summary> \n        /// Required method for Designer support - do not modify \n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.checkedListBox1 = new System.Windows.Forms.CheckedListBox();\n            this.buttonUpdate = new System.Windows.Forms.Button();\n            this.buttonRemove = new System.Windows.Forms.Button();\n            this.buttonAdd = new System.Windows.Forms.Button();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.checkedListBox1);\n            this.groupBox1.Controls.Add(this.buttonUpdate);\n            this.groupBox1.Controls.Add(this.buttonRemove);\n            this.groupBox1.Controls.Add(this.buttonAdd);\n            this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.groupBox1.Location = new System.Drawing.Point(0, 0);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(330, 277);\n            this.groupBox1.TabIndex = 0;\n            this.groupBox1.TabStop = false;\n            // \n            // checkedListBox1\n            // \n            this.checkedListBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) \n            | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n            this.checkedListBox1.CheckOnClick = true;\n            this.checkedListBox1.FormattingEnabled = true;\n            this.checkedListBox1.IntegralHeight = false;\n            this.checkedListBox1.Location = new System.Drawing.Point(7, 49);\n            this.checkedListBox1.Name = \"checkedListBox1\";\n            this.checkedListBox1.Size = new System.Drawing.Size(317, 222);\n            this.checkedListBox1.Sorted = true;\n            this.checkedListBox1.TabIndex = 3;\n            this.checkedListBox1.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.checkedListBox1_ItemCheck);\n            // \n            // buttonUpdate\n            // \n            this.buttonUpdate.Location = new System.Drawing.Point(72, 19);\n            this.buttonUpdate.Name = \"buttonUpdate\";\n            this.buttonUpdate.Size = new System.Drawing.Size(60, 23);\n            this.buttonUpdate.TabIndex = 1;\n            this.buttonUpdate.Text = \"Update\";\n            this.buttonUpdate.UseVisualStyleBackColor = true;\n            this.buttonUpdate.Click += new System.EventHandler(this.buttonUpdate_Click);\n            // \n            // buttonRemove\n            // \n            this.buttonRemove.Location = new System.Drawing.Point(138, 19);\n            this.buttonRemove.Name = \"buttonRemove\";\n            this.buttonRemove.Size = new System.Drawing.Size(60, 23);\n            this.buttonRemove.TabIndex = 2;\n            this.buttonRemove.Text = \"Remove\";\n            this.buttonRemove.UseVisualStyleBackColor = true;\n            this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);\n            // \n            // buttonAdd\n            // \n            this.buttonAdd.Location = new System.Drawing.Point(6, 19);\n            this.buttonAdd.Name = \"buttonAdd\";\n            this.buttonAdd.Size = new System.Drawing.Size(60, 23);\n            this.buttonAdd.TabIndex = 0;\n            this.buttonAdd.Text = \"Add\";\n            this.buttonAdd.UseVisualStyleBackColor = true;\n            this.buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click);\n            // \n            // EditableCheckedListView\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.Controls.Add(this.groupBox1);\n            this.Name = \"EditableCheckedListView\";\n            this.Size = new System.Drawing.Size(330, 277);\n            this.groupBox1.ResumeLayout(false);\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private GroupBox groupBox1;\n        private Button buttonUpdate;\n        private Button buttonRemove;\n        private Button buttonAdd;\n        private CheckedListBox checkedListBox1;\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Controls/EditableCheckedListView.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    public partial class EditableCheckedListView : UserControl\n    {\n        #region Delegates\n\n        public delegate string GetStringDelegate(string previous);\n\n        #endregion Delegates\n\n        #region Constructors\n\n        public EditableCheckedListView()\n        {\n            InitializeComponent();\n        }\n\n        #endregion Constructors\n\n        #region Events\n\n        public event Action<EditableCheckedListView> ListViewChanged;\n\n        #endregion Events\n\n        #region Properties\n\n        public IEnumerable<string> CheckedItems\n        {\n            get { return checkedListBox1.CheckedItems.Cast<string>(); }\n        }\n\n        public IEnumerable<string> Items\n        {\n            get { return checkedListBox1.Items.Cast<string>(); }\n        }\n\n        [Description(\"Sorting of the list box enabled/disabled\"),\n         Category(\"Behavior\")]\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public bool ListBoxSorted\n        {\n            get { return checkedListBox1.Sorted; }\n            set { checkedListBox1.Sorted = value; }\n        }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public GetStringDelegate StringGetter { get; set; }\n\n        [Description(\"Text shown in the title of this control\"),\n         Category(\"Appearance\")]\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public string Title\n        {\n            get { return groupBox1.Text; }\n            set { groupBox1.Text = value; }\n        }\n\n        #endregion Properties\n\n        #region Methods\n\n        public void AddRange(object[] items, object[] checkedItems)\n        {\n            foreach (var item in items)\n            {\n                checkedListBox1.Items.Add(item, checkedItems.Contains(item));\n            }\n            FireListViewChanged();\n        }\n\n        private void buttonAdd_Click(object sender, EventArgs e)\n        {\n            var output = GetString(null);\n            if (string.IsNullOrEmpty(output) || Items.Contains(output))\n                return;\n\n            checkedListBox1.Items.Add(output, true);\n            FireListViewChanged();\n        }\n\n        private void buttonRemove_Click(object sender, EventArgs e)\n        {\n            if (checkedListBox1.SelectedItem != null)\n            {\n                checkedListBox1.Items.Remove(checkedListBox1.SelectedItem);\n                FireListViewChanged();\n            }\n        }\n\n        private void buttonUpdate_Click(object sender, EventArgs e)\n        {\n            var output = GetString(checkedListBox1.SelectedItem as string);\n            if (string.IsNullOrEmpty(output) || Items.Contains(output))\n                return;\n\n            checkedListBox1.Items.Remove(checkedListBox1.SelectedItem);\n            checkedListBox1.Items.Add(output);\n            FireListViewChanged();\n        }\n\n        private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)\n        {\n            FireListViewChanged(); //TODO fires before change happens\n        }\n\n        private void FireListViewChanged()\n        {\n            if (ListViewChanged != null)\n                ListViewChanged(this);\n        }\n\n        private string GetString(string previous)\n        {\n            if (StringGetter != null)\n                return StringGetter(previous);\n            return null;\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/EditableCheckedListView.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/EditableListView.Designer.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    partial class EditableListView\n    {\n        /// <summary> \n        /// Required designer variable.\n        /// </summary>\n        private IContainer components = null;\n\n        /// <summary> \n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Component Designer generated code\n\n        /// <summary> \n        /// Required method for Designer support - do not modify \n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.groupBox1 = new System.Windows.Forms.GroupBox();\n            this.listBox = new System.Windows.Forms.ListBox();\n            this.buttonUpdate = new System.Windows.Forms.Button();\n            this.buttonRemove = new System.Windows.Forms.Button();\n            this.buttonAdd = new System.Windows.Forms.Button();\n            this.groupBox1.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // groupBox1\n            // \n            this.groupBox1.Controls.Add(this.listBox);\n            this.groupBox1.Controls.Add(this.buttonUpdate);\n            this.groupBox1.Controls.Add(this.buttonRemove);\n            this.groupBox1.Controls.Add(this.buttonAdd);\n            this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.groupBox1.Location = new System.Drawing.Point(0, 0);\n            this.groupBox1.Name = \"groupBox1\";\n            this.groupBox1.Size = new System.Drawing.Size(330, 277);\n            this.groupBox1.TabIndex = 9;\n            this.groupBox1.TabStop = false;\n            // \n            // listBox\n            // \n            this.listBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)\n                        | System.Windows.Forms.AnchorStyles.Left)\n                        | System.Windows.Forms.AnchorStyles.Right)));\n            this.listBox.FormattingEnabled = true;\n            this.listBox.HorizontalScrollbar = true;\n            this.listBox.IntegralHeight = false;\n            this.listBox.Location = new System.Drawing.Point(6, 48);\n            this.listBox.Name = \"listBox\";\n            this.listBox.Size = new System.Drawing.Size(318, 223);\n            this.listBox.TabIndex = 3;\n            // \n            // buttonUpdate\n            // \n            this.buttonUpdate.Location = new System.Drawing.Point(72, 19);\n            this.buttonUpdate.Name = \"buttonUpdate\";\n            this.buttonUpdate.Size = new System.Drawing.Size(60, 23);\n            this.buttonUpdate.TabIndex = 2;\n            this.buttonUpdate.Text = \"Update\";\n            this.buttonUpdate.UseVisualStyleBackColor = true;\n            this.buttonUpdate.Click += new System.EventHandler(this.buttonUpdate_Click);\n            // \n            // buttonRemove\n            // \n            this.buttonRemove.Location = new System.Drawing.Point(138, 19);\n            this.buttonRemove.Name = \"buttonRemove\";\n            this.buttonRemove.Size = new System.Drawing.Size(60, 23);\n            this.buttonRemove.TabIndex = 1;\n            this.buttonRemove.Text = \"Remove\";\n            this.buttonRemove.UseVisualStyleBackColor = true;\n            this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);\n            // \n            // buttonAdd\n            // \n            this.buttonAdd.Location = new System.Drawing.Point(6, 19);\n            this.buttonAdd.Name = \"buttonAdd\";\n            this.buttonAdd.Size = new System.Drawing.Size(60, 23);\n            this.buttonAdd.TabIndex = 0;\n            this.buttonAdd.Text = \"Add\";\n            this.buttonAdd.UseVisualStyleBackColor = true;\n            this.buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click);\n            // \n            // EditableListView\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.Controls.Add(this.groupBox1);\n            this.Name = \"EditableListView\";\n            this.Size = new System.Drawing.Size(330, 277);\n            this.groupBox1.ResumeLayout(false);\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private GroupBox groupBox1;\n        private ListBox listBox;\n        private Button buttonUpdate;\n        private Button buttonRemove;\n        private Button buttonAdd;\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Controls/EditableListView.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    public partial class EditableListView : UserControl\n    {\n        #region Delegates\n\n        public delegate string GetStringDelegate(string previous);\n\n        #endregion Delegates\n\n        #region Constructors\n\n        public EditableListView()\n        {\n            InitializeComponent();\n        }\n\n        #endregion Constructors\n\n        #region Events\n\n        public event Action<EditableListView> ListViewChanged;\n\n        #endregion Events\n\n        #region Properties\n\n        public IEnumerable<string> Items\n        {\n            get { return listBox.Items.Cast<string>(); }\n        }\n\n        [Description(\"Sorting of the list box enabled/disabled\"),\n         Category(\"Behavior\")]\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public bool ListBoxSorted\n        {\n            get { return listBox.Sorted; }\n            set { listBox.Sorted = value; }\n        }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public GetStringDelegate StringGetter { get; set; }\n\n        [Description(\"Text shown in the title of this control\"),\n         Category(\"Appearance\")]\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public string Title\n        {\n            get { return groupBox1.Text; }\n            set { groupBox1.Text = value; }\n        }\n\n        #endregion Properties\n\n        #region Methods\n\n        public void AddRange(object[] items)\n        {\n            listBox.Items.AddRange(items);\n            FireListViewChanged();\n        }\n\n        private void buttonAdd_Click(object sender, EventArgs e)\n        {\n            var output = GetString(null);\n            if (string.IsNullOrEmpty(output) || Items.Contains(output))\n                return;\n\n            listBox.Items.Add(output);\n            FireListViewChanged();\n        }\n\n        private void buttonRemove_Click(object sender, EventArgs e)\n        {\n            if (listBox.SelectedItem != null)\n            {\n                listBox.Items.Remove(listBox.SelectedItem);\n                FireListViewChanged();\n            }\n        }\n\n        private void buttonUpdate_Click(object sender, EventArgs e)\n        {\n            var output = GetString(listBox.SelectedItem as string);\n            if (string.IsNullOrEmpty(output) || Items.Contains(output))\n                return;\n\n            listBox.Items.Remove(listBox.SelectedItem);\n            listBox.Items.Add(output);\n            FireListViewChanged();\n        }\n\n        private void FireListViewChanged()\n        {\n            if (ListViewChanged != null)\n                ListViewChanged(this);\n        }\n\n        private string GetString(string previous)\n        {\n            if (StringGetter != null)\n                return StringGetter(previous);\n            return null;\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/EditableListView.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/FacebookButton.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing Klocman.Forms.Tools;\nusing System;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    public sealed class FacebookButton : Button\n    {\n        public FacebookButton()\n        {\n            Text = string.Empty;\n            BackgroundImage = Properties.Resources.facebookButton;\n            BackgroundImageLayout = ImageLayout.Stretch;\n\n            Size = new Size(23, 23);\n            base.FlatStyle = FlatStyle.Standard;\n\n            TabStop = false;\n\n            Click += FacebookButton_Click;\n        }\n\n        public new FlatStyle FlatStyle => base.FlatStyle;\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public string TargetSite { get; set; }\n\n        private void FacebookButton_Click(object sender, EventArgs e)\n        {\n            if (!string.IsNullOrEmpty(TargetSite))\n            {\n                PremadeDialogs.StartProcessSafely(@\"https://www.facebook.com/sharer/sharer.php?u=\" + TargetSite);\n            }\n            else\n            {\n                throw new InvalidOperationException(\"TargetSite is null or empty\");\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/FacebookStatusButton.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.Windows.Forms;\nusing Klocman.Forms.Tools;\n\nnamespace Klocman.Controls\n{\n    public sealed class FacebookStatusButton : ToolStripStatusLabel\n    {\n        public FacebookStatusButton()\n        {\n            Image = Properties.Resources.facebookButton;\n            DisplayStyle = ToolStripItemDisplayStyle.Image;\n            Click += FacebookStatusButton_Click;\n            IsLink = true;\n\n            Padding = new Padding(2, 0, 2, 0);\n        }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public string TargetSite { get; set; }\n\n        private void FacebookStatusButton_Click(object sender, EventArgs e)\n        {\n            if (!string.IsNullOrEmpty(TargetSite))\n            {\n                PremadeDialogs.StartProcessSafely(@\"https://www.facebook.com/sharer/sharer.php?u=\" + TargetSite);\n            }\n            else\n            {\n                throw new InvalidOperationException(\"TargetSite is null or empty\");\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/FixedFlowLayoutPanel.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Linq;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    public sealed class FixedFlowLayoutPanel : FlowLayoutPanel\n    {\n        protected override void OnPaint(PaintEventArgs e)\n        {\n            base.OnPaint(e);\n\n            if (AutoSize && Dock != DockStyle.None)\n            {\n                var newHeight = Controls.Cast<Control>().Sum(c => c.Height) + Padding.Top + Padding.Bottom;\n                if (Height != newHeight)\n                {\n                    Height = newHeight;\n                }\n            }\n        }\n\n        protected override void OnLayout(LayoutEventArgs levent)\n        {\n            base.OnLayout(levent);\n            \n            if (AutoSize && Dock != DockStyle.None)\n            {\n                var newHeight = Controls.Cast<Control>().Sum(c => c.Height) + Padding.Top + Padding.Bottom;\n                if (Height != newHeight)\n                {\n                    Height = newHeight;\n                }\n            }\n        }\n\n        private bool _autoSize;\n\n        public override bool AutoSize\n        {\n            get { return _autoSize; }\n            set { _autoSize = value; }\n        }\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Controls/LineSeparator.Designer.cs",
    "content": "﻿using System.ComponentModel;\n\nnamespace Klocman.Controls\n{\n    sealed partial class LineSeparator\n    {\n        /// <summary> \n        /// Required designer variable.\n        /// </summary>\n        private IContainer components = null;\n\n        /// <summary> \n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Component Designer generated code\n\n        /// <summary> \n        /// Required method for Designer support - do not modify \n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            components = new System.ComponentModel.Container();\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Controls/LineSeparator.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Drawing;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    public sealed partial class LineSeparator : UserControl\n    {\n        #region Constructors\n\n        public LineSeparator()\n        {\n            InitializeComponent();\n\n            Paint += LineSeparator_Paint;\n\n            MaximumSize = new Size(2000, 2);\n\n            MinimumSize = new Size(0, 2);\n\n            Width = 350;\n        }\n\n        #endregion Constructors\n\n        #region Methods\n\n        private void LineSeparator_Paint(object sender, PaintEventArgs e)\n        {\n            var g = e.Graphics;\n\n            g.DrawLine(Pens.DarkGray, new Point(0, 0), new Point(Width, 0));\n\n            g.DrawLine(Pens.White, new Point(0, 1), new Point(Width, 1));\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/LineSeparator.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PassThroughLabel.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    /// <summary>\n    ///     Label that doesn't capture any mouse events\n    /// </summary>\n    public sealed class PassThroughLabel : Label\n    {\n        #region Methods\n\n        //Pass through mouse events\n        protected override void WndProc(ref Message m)\n        {\n            const int WM_NCHITTEST = 0x0084;\n            const int HTTRANSPARENT = (-1);\n\n            if (m.Msg == WM_NCHITTEST)\n            {\n                m.Result = (IntPtr) HTTRANSPARENT;\n            }\n            else\n            {\n                base.WndProc(ref m);\n            }\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.Designer.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    partial class PathSelectBox\n    {\n        /// <summary> \n        /// Required designer variable.\n        /// </summary>\n        private IContainer components = null;\n\n        /// <summary> \n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Component Designer generated code\n\n        /// <summary> \n        /// Required method for Designer support - do not modify \n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            ComponentResourceManager resources = new ComponentResourceManager(typeof(PathSelectBox));\n            textBox1 = new TextBox();\n            button1 = new Button();\n            openFileDialog = new OpenFileDialog();\n            panel1 = new Panel();\n            panel1.SuspendLayout();\n            SuspendLayout();\n            // \n            // textBox1\n            // \n            textBox1.AllowDrop = true;\n            resources.ApplyResources(textBox1, \"textBox1\");\n            textBox1.Name = \"textBox1\";\n            textBox1.TextChanged += textBox1_Changed;\n            textBox1.DragDrop += OnDragDrop;\n            textBox1.DragEnter += OnDragEnter;\n            // \n            // button1\n            // \n            button1.AllowDrop = true;\n            resources.ApplyResources(button1, \"button1\");\n            button1.Name = \"button1\";\n            button1.UseVisualStyleBackColor = true;\n            button1.Click += button1_Click;\n            button1.DragDrop += OnDragDrop;\n            button1.DragEnter += OnDragEnter;\n            // \n            // openFileDialog\n            // \n            openFileDialog.FileOk += openFileDialog_FileOk;\n            // \n            // panel1\n            // \n            panel1.Controls.Add(textBox1);\n            resources.ApplyResources(panel1, \"panel1\");\n            panel1.Name = \"panel1\";\n            // \n            // PathSelectBox\n            // \n            resources.ApplyResources(this, \"$this\");\n            AutoScaleMode = AutoScaleMode.Font;\n            Controls.Add(panel1);\n            Controls.Add(button1);\n            Name = \"PathSelectBox\";\n            panel1.ResumeLayout(false);\n            panel1.PerformLayout();\n            ResumeLayout(false);\n            PerformLayout();\n\n        }\n\n        #endregion\n\n        private TextBox textBox1;\n        private Button button1;\n        private OpenFileDialog openFileDialog;\n        private Panel panel1;\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.IO;\nusing System.Linq;\nusing System.Text.RegularExpressions;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    /// <summary>\n    ///     Path selection box with validation and filtering of the supplied path.\n    ///     Browsing to find desired file is possible with a dedicated button.\n    /// </summary>\n    public sealed partial class PathSelectBox : UserControl\n    {\n        private readonly Regex _r;\n        \n        public PathSelectBox()\n        {\n            InitializeComponent();\n\n            var regexSearch = new string(Path.GetInvalidPathChars());\n            _r = new Regex($\"[{Regex.Escape(regexSearch)}]\");\n        }\n        \n        public event EventHandler FileNameChanged;\n        \n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public string FileName\n        {\n            get { return textBox1.Text; }\n            set\n            {\n                if (textBox1.Text != value)\n                {\n                    textBox1.Text = value;\n                    OnFileNameChanged();\n                }\n            }\n        }\n\n        [Category(\"Behavior\")]\n        [DefaultValue(\"\")]\n        public string Filter\n        {\n            get { return openFileDialog.Filter; }\n            set { openFileDialog.Filter = value; }\n        }\n\n        private void button1_Click(object sender, EventArgs e)\n        {\n            openFileDialog.ShowDialog();\n        }\n\n        private void OnFileNameChanged()\n        {\n            FileNameChanged?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void openFileDialog_FileOk(object sender, CancelEventArgs e)\n        {\n            textBox1.Text = openFileDialog.FileName;\n        }\n\n        private void textBox1_Changed(object sender, EventArgs e)\n        {\n            FileName = _r.Replace(FileName, string.Empty);\n            OnFileNameChanged();\n        }\n\n        private void OnDragDrop(object sender, DragEventArgs e)\n        {\n            if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Link;\n        }\n\n        private void OnDragEnter(object sender, DragEventArgs e)\n        {\n            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);\n\n            var dir = files.FirstOrDefault(File.Exists);\n\n            if (!string.IsNullOrEmpty(dir))\n                FileName = dir;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Procházet ...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>blättern</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Explorar...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Parcourir...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Tallózás...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Sfoglia...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>参照...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Bladeren...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Przeglądaj...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Procurar...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Procurar...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals of this format is to allow a simple XML format\n    that is mostly human readable. The generation and parsing of the\n    various data types are done through the TypeConverter classes\n    associated with the data types.\n\n    Example:\n\n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n\n    There are any number of \"resheader\" rows that contain simple\n    name/value pairs.\n\n    Each data row contains a name, and value. The row also contains a\n    type or mimetype. Type corresponds to a .NET class that support\n    text/value conversion through the TypeConverter architecture.\n    Classes that don't support this are serialized and stored with the\n    mimetype set.\n\n    The mimetype is used for serialized objects, and tells the\n    ResXResourceReader how to depersist the object. This is currently not\n    extensible. For a given mimetype the value must be set accordingly:\n\n    Note - application/x-microsoft.net.object.binary.base64 is the format\n    that the ResXResourceWriter will generate, however the reader can\n    read any of the formats listed below.\n\n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array\n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"textBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Fill</value>\n  </data>\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\n  <data name=\"textBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>1, 1</value>\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"textBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"textBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>266, 23</value>\n  </data>\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"textBox1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"&gt;&gt;textBox1.Name\" xml:space=\"preserve\">\n    <value>textBox1</value>\n  </data>\n  <data name=\"&gt;&gt;textBox1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;textBox1.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;textBox1.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <data name=\"button1.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"button1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"button1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>276, 0</value>\n  </data>\n  <data name=\"button1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"button1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>88, 25</value>\n  </data>\n  <data name=\"button1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>1</value>\n  </data>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Browse...</value>\n  </data>\n  <data name=\"&gt;&gt;button1.Name\" xml:space=\"preserve\">\n    <value>button1</value>\n  </data>\n  <data name=\"&gt;&gt;button1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;button1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;button1.ZOrder\" xml:space=\"preserve\">\n    <value>1</value>\n  </data>\n  <metadata name=\"openFileDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>17, 17</value>\n  </metadata>\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Fill</value>\n  </data>\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>0, 0</value>\n  </data>\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"panel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>1, 1, 9, 1</value>\n  </data>\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>276, 25</value>\n  </data>\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>2</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\n    <value>7, 15</value>\n  </data>\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"$this.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>116667, 25</value>\n  </data>\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>12, 25</value>\n  </data>\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>364, 25</value>\n  </data>\n  <data name=\"&gt;&gt;openFileDialog.Name\" xml:space=\"preserve\">\n    <value>openFileDialog</value>\n  </data>\n  <data name=\"&gt;&gt;openFileDialog.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\n    <value>PathSelectBox</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Обзор...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Prebrskaj...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Bläddra...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Göz at...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>Duyệt qua...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>浏览...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/PathSelectBox.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"button1.Text\" xml:space=\"preserve\">\n    <value>瀏覽...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.Designer.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    partial class SearchBox\n    {\n        /// <summary> \n        /// Required designer variable.\n        /// </summary>\n        private IContainer components = null;\n\n        /// <summary> \n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Component Designer generated code\n\n        /// <summary> \n        /// Required method for Designer support - do not modify \n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            ComponentResourceManager resources = new ComponentResourceManager(typeof(SearchBox));\n            filteringTextBox = new TextBox();\n            SuspendLayout();\n            // \n            // filteringTextBox\n            // \n            resources.ApplyResources(filteringTextBox, \"filteringTextBox\");\n            filteringTextBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;\n            filteringTextBox.AutoCompleteSource = AutoCompleteSource.CustomSource;\n            filteringTextBox.BackColor = System.Drawing.SystemColors.Window;\n            filteringTextBox.ForeColor = System.Drawing.SystemColors.GrayText;\n            filteringTextBox.Name = \"filteringTextBox\";\n            filteringTextBox.TextChanged += filteringTextBox_TextChanged;\n            filteringTextBox.Enter += filteringTextBox_Enter;\n            filteringTextBox.KeyDown += filteringTextBox_KeyDown;\n            filteringTextBox.KeyUp += filteringTextBox_KeyUp;\n            filteringTextBox.Leave += filteringTextBox_Leave;\n            // \n            // SearchBox\n            // \n            AutoScaleMode = AutoScaleMode.None;\n            resources.ApplyResources(this, \"$this\");\n            Controls.Add(filteringTextBox);\n            Name = \"SearchBox\";\n            ResumeLayout(false);\n            PerformLayout();\n\n        }\n\n        #endregion\n\n        private TextBox filteringTextBox;\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>بحث...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Windows.Forms;\n\nnamespace Klocman.Controls\n{\n    public partial class SearchBox : UserControl\n    {\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public Color InactiveSearchColor\n        {\n            get { return _inactiveSearchColor; }\n            set\n            {\n                _inactiveSearchColor = value;\n                UpdateFieldColor();\n            }\n        }\n\n        private void UpdateFieldColor()\n        {\n            if (filteringTextBox == null) return;\n\n            filteringTextBox.ForeColor = string.IsNullOrEmpty(SearchString) ? _inactiveSearchColor : _normalSearchColor;\n\n            filteringTextBox.BackColor = base.BackColor;\n        }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public BorderStyle SearchBoxBorderStyle\n        {\n            get { return filteringTextBox.BorderStyle; }\n            set { filteringTextBox.BorderStyle = value; }\n        }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public Color NormalSearchColor\n        {\n            get { return _normalSearchColor; }\n            set\n            {\n                _normalSearchColor = value;\n                UpdateFieldColor();\n            }\n        }\n\n        public override Color BackColor\n        {\n            get { return base.BackColor; }\n            set\n            {\n                base.BackColor = value;\n                UpdateFieldColor();\n            }\n        }\n\n        private static string _inactiveSearchText;\n        private Color _inactiveSearchColor;\n        private Color _normalSearchColor;\n\n        public SearchBox()\n        {\n            InactiveSearchColor = SystemColors.GrayText;\n            NormalSearchColor = SystemColors.WindowText;\n\n            InitializeComponent();\n            _inactiveSearchText = filteringTextBox.Text;\n        }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public AutoCompleteStringCollection AutoCompleteCustomSource\n        {\n            get { return filteringTextBox.AutoCompleteCustomSource; }\n            set { filteringTextBox.AutoCompleteCustomSource = value; }\n        }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\n        [Browsable(false)]\n        public string[] SearchParts\n        {\n            get\n            {\n                if (string.IsNullOrEmpty(filteringTextBox.Text) || filteringTextBox.Text.Equals(_inactiveSearchText))\n                    return new string[] { };\n                return filteringTextBox.Text.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);\n            }\n        }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\n        [Browsable(false)]\n        public string SearchString { get; private set; } = string.Empty;\n\n        public event EventHandler FocusSearchTarget;\n        public event EventHandler<SearchEventArgs> SearchTextChanged;\n\n        public void ClearSearchBox()\n        {\n            filteringTextBox.Text = _inactiveSearchText;\n            filteringTextBox.ForeColor = InactiveSearchColor;\n        }\n\n        private void filteringTextBox_Enter(object sender, EventArgs e)\n        {\n            FocusSearchBox();\n        }\n\n        private void filteringTextBox_KeyDown(object sender, KeyEventArgs e)\n        {\n            // Stop the Ding noise\n            switch (e.KeyCode)\n            {\n                case Keys.Escape:\n                    e.Handled = true;\n                    e.SuppressKeyPress = true;\n                    break;\n\n                default:\n                    break;\n            }\n        }\n\n        private void filteringTextBox_KeyUp(object sender, KeyEventArgs e)\n        {\n            e.Handled = true;\n            e.SuppressKeyPress = true;\n            switch (e.KeyCode)\n            {\n                case Keys.Escape:\n                    ClearSearchBox();\n                    OnFocusSearchTarget();\n                    break;\n\n                default:\n                    e.Handled = false;\n                    e.SuppressKeyPress = false;\n                    break;\n            }\n        }\n\n        private void filteringTextBox_Leave(object sender, EventArgs e)\n        {\n            if (string.IsNullOrEmpty(filteringTextBox.Text))\n                ClearSearchBox();\n        }\n\n        private void filteringTextBox_TextChanged(object sender, EventArgs e)\n        {\n            var text = filteringTextBox.Text;\n            if (_inactiveSearchText.Equals(text))\n                text = string.Empty;\n\n            if (!text.Equals(SearchString))\n            {\n                SearchString = text;\n                OnSearchTextChanged();\n            }\n        }\n\n        public void FocusSearchBox()\n        {\n            filteringTextBox.Focus();\n            filteringTextBox.ForeColor = NormalSearchColor;\n\n            if (_inactiveSearchText.Equals(filteringTextBox.Text))\n                filteringTextBox.Text = string.Empty;\n\n            filteringTextBox.SelectAll();\n        }\n\n        protected virtual void OnFocusSearchTarget()\n        {\n            if (FocusSearchTarget != null)\n                FocusSearchTarget(this, EventArgs.Empty);\n            else\n                Parent.Focus();\n        }\n\n        protected virtual void OnSearchTextChanged()\n        {\n            SearchTextChanged?.Invoke(this, new SearchEventArgs(this, SearchString));\n        }\n\n        public void Search(string searchString)\n        {\n            if (string.IsNullOrEmpty(searchString) || searchString.Equals(_inactiveSearchText))\n                ClearSearchBox();\n            else\n            {\n                filteringTextBox.Text = searchString;\n                filteringTextBox.ForeColor = NormalSearchColor;\n            }\n        }\n\n        public sealed class SearchEventArgs : EventArgs\n        {\n            public SearchEventArgs(SearchBox origin, string searchText)\n            {\n                Origin = origin;\n                SearchText = searchText;\n            }\n\n            public SearchBox Origin { get; }\n\n            public string SearchText { get; }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Hledat...</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>fr</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Suche...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Suchfeld</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Suchfeld</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>fr</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Buscar...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Cuadro de búsqueda</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Cuadro de búsqueda</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Chercher...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Boîte de recherche</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Boîte de recherche</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Keresés...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Keresőmező</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Keresőmező</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Cerca...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Box di ricerca</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Box di ricerca</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>検索...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>検索ボックス</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>検索ボックス</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Zoeken...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Zoekvenster</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Zoekvenster</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Wyszukiwarka</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Wyszukiwarka</value>\n  </data>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Szukaj...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Pesquisa...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Caixa de pesquisa</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Caixa de pesquisa</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Pesquisa...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals of this format is to allow a simple XML format\n    that is mostly human readable. The generation and parsing of the\n    various data types are done through the TypeConverter classes\n    associated with the data types.\n\n    Example:\n\n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n\n    There are any number of \"resheader\" rows that contain simple\n    name/value pairs.\n\n    Each data row contains a name, and value. The row also contains a\n    type or mimetype. Type corresponds to a .NET class that support\n    text/value conversion through the TypeConverter architecture.\n    Classes that don't support this are serialized and stored with the\n    mimetype set.\n\n    The mimetype is used for serialized objects, and tells the\n    ResXResourceReader how to depersist the object. This is currently not\n    extensible. For a given mimetype the value must be set accordingly:\n\n    Note - application/x-microsoft.net.object.binary.base64 is the format\n    that the ResXResourceWriter will generate, however the reader can\n    read any of the formats listed below.\n\n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array\n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Search box</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Search box</value>\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"filteringTextBox.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Top</value>\n  </data>\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\n  <data name=\"filteringTextBox.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>0, 0</value>\n  </data>\n  <data name=\"filteringTextBox.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>50, 23</value>\n  </data>\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"filteringTextBox.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>3</value>\n  </data>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Search...</value>\n  </data>\n  <data name=\"&gt;&gt;filteringTextBox.Name\" xml:space=\"preserve\">\n    <value>filteringTextBox</value>\n  </data>\n  <data name=\"&gt;&gt;filteringTextBox.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;filteringTextBox.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;filteringTextBox.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <data name=\"$this.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"$this.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\n    <value>GrowAndShrink</value>\n  </data>\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>50, 0</value>\n  </data>\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>50, 23</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\n    <value>SearchBox</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Поиск...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Строка поиска</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Строка поиска</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>fr</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Poišči...</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>fr</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Sök...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Sökruta</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Sökruta</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Ara...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Arama kutusu</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Arama kutusu</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>Tìm kiếm...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>Hộp tìm kiếm</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>Hộp tìm kiếm</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>搜索...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>搜索框</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>搜索框</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/SearchBox.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"filteringTextBox.Text\" xml:space=\"preserve\">\n    <value>尋找...</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleName\" xml:space=\"preserve\">\n    <value>搜尋欄</value>\n  </data>\n  <data name=\"filteringTextBox.AccessibleDescription\" xml:space=\"preserve\">\n    <value>搜尋欄</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/ToolStripNumberControl.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Windows.Forms;\nusing System.Windows.Forms.Design;\n\nnamespace Klocman.Controls\n{\n    [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ToolStrip)]\n    public sealed class ToolStripNumberControl : ToolStripControlHost\n    {\n        #region Constructors\n\n        public ToolStripNumberControl()\n            : base(new NumericUpDown())\n        {\n        }\n\n        #endregion Constructors\n\n        #region Properties\n\n        public NumericUpDown NumericUpDownControl\n        {\n            get { return Control as NumericUpDown; }\n        }\n\n        #endregion Properties\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/TwitterButton.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Windows.Forms;\nusing Klocman.Forms.Tools;\n\nnamespace Klocman.Controls\n{\n    public sealed class TwitterButton : Button\n    {\n        public TwitterButton()\n        {\n            Text = string.Empty;\n            BackgroundImage = Properties.Resources.twitterButton;\n            BackgroundImageLayout = ImageLayout.Stretch;\n\n            Size = new Size(23, 23);\n            base.FlatStyle = FlatStyle.Standard;\n\n            TabStop = false;\n\n            Click += TwitterButton_Click;\n        }\n\n        public new FlatStyle FlatStyle => base.FlatStyle;\n\n        /// <summary>\n        ///     Overwrite default message text. If set ignores TargetSite.\n        /// </summary>\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public string MessageText { get; set; }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public string TargetSite { get; set; }\n\n        private void TwitterButton_Click(object sender, EventArgs e)\n        {\n            if (!string.IsNullOrEmpty(MessageText))\n            {\n                PremadeDialogs.StartProcessSafely(@\"https://twitter.com/intent/tweet?text=\" +\n                                                MessageText.Replace(' ', '+'));\n            }\n            else if (!string.IsNullOrEmpty(TargetSite))\n            {\n                PremadeDialogs.StartProcessSafely(@\"https://twitter.com/intent/tweet?text=\" +\n                                                \"Check+out+this+cool+app+I+found!+\" + TargetSite);\n            }\n            else\n            {\n                throw new InvalidOperationException(\"TargetSite and MessageText are both null or empty\");\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/TwitterStatusButton.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.Windows.Forms;\nusing Klocman.Forms.Tools;\n\nnamespace Klocman.Controls\n{\n    public sealed class TwitterStatusButton : ToolStripStatusLabel\n    {\n        public TwitterStatusButton()\n        {\n            Image = Properties.Resources.twitterButton;\n            DisplayStyle = ToolStripItemDisplayStyle.Image;\n            Click += FacebookStatusButton_Click;\n            IsLink = true;\n\n            Padding = new Padding(2, 0, 2, 0);\n        }\n\n        /// <summary>\n        ///     Overwrite default message text. If set ignores TargetSite.\n        /// </summary>\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public string MessageText { get; set; }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public string TargetSite { get; set; }\n\n        private void FacebookStatusButton_Click(object sender, EventArgs e)\n        {\n            if (!string.IsNullOrEmpty(MessageText))\n            {\n                PremadeDialogs.StartProcessSafely(@\"https://twitter.com/intent/tweet?text=\" +\n                                                MessageText.Replace(' ', '+'));\n            }\n            else if (!string.IsNullOrEmpty(TargetSite))\n            {\n                PremadeDialogs.StartProcessSafely(@\"https://twitter.com/intent/tweet?text=\" +\n                                                \"Check+out+this+cool+app+I+found!+\" + TargetSite);\n            }\n            else\n            {\n                throw new InvalidOperationException(\"TargetSite and MessageText are both null or empty\");\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.Designer.cs",
    "content": "namespace Klocman.Controls\n{\n    partial class WindowTargeter\n    {\n        /// <summary> \n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary> \n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Component Designer generated code\n\n        /// <summary> \n        /// Required method for Designer support - do not modify \n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WindowTargeter));\n            label1 = new System.Windows.Forms.Label();\n            label2 = new System.Windows.Forms.Label();\n            label3 = new System.Windows.Forms.Label();\n            pictureBox1 = new System.Windows.Forms.PictureBox();\n            ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();\n            SuspendLayout();\n            // \n            // label1\n            // \n            label1.AutoEllipsis = true;\n            resources.ApplyResources(label1, \"label1\");\n            label1.Name = \"label1\";\n            // \n            // label2\n            // \n            label2.AutoEllipsis = true;\n            resources.ApplyResources(label2, \"label2\");\n            label2.Name = \"label2\";\n            // \n            // label3\n            // \n            label3.AutoEllipsis = true;\n            resources.ApplyResources(label3, \"label3\");\n            label3.Name = \"label3\";\n            // \n            // pictureBox1\n            // \n            resources.ApplyResources(pictureBox1, \"pictureBox1\");\n            pictureBox1.Image = Properties.Resources.centerline;\n            pictureBox1.Name = \"pictureBox1\";\n            pictureBox1.TabStop = false;\n            // \n            // WindowTargeter\n            // \n            resources.ApplyResources(this, \"$this\");\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            Controls.Add(label3);\n            Controls.Add(label2);\n            Controls.Add(label1);\n            Controls.Add(pictureBox1);\n            Name = \"WindowTargeter\";\n            ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();\n            ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.Label label2;\n        private System.Windows.Forms.Label label3;\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>انقر واسحب فوق نافذة لتحديدها</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.Windows.Forms;\nusing Klocman.Subsystems;\n\nnamespace Klocman.Controls\n{\n    public partial class WindowTargeter : UserControl\n    {\n        private readonly string _helpText;\n        private readonly WindowHoverSearcher _searcher;\n\n        public WindowTargeter()\n        {\n            InitializeComponent();\n\n            _helpText = label2.Text;\n\n            _searcher = new WindowHoverSearcher(pictureBox1);\n            _searcher.HoveredWindowChanged += SearcherOnHoveredWindowChanged;\n            _searcher.WindowSelected += SearcherOnWindowSelected;\n        }\n\n        public event EventHandler PickingStarted\n        {\n            add => _searcher.PickingStarted += value;\n            remove => _searcher.PickingStarted -= value;\n        }\n\n        public event EventHandler<WindowHoverEventArgs> HoveredWindowChanged\n        {\n            add { _searcher.HoveredWindowChanged += value; }\n            remove { _searcher.HoveredWindowChanged -= value; }\n        }\n\n        public event EventHandler<WindowHoverEventArgs> WindowSelected\n        {\n            add { _searcher.WindowSelected += value; }\n            remove { _searcher.WindowSelected -= value; }\n        }\n\n        private void SearcherOnWindowSelected(object sender, WindowHoverEventArgs windowHoverEventArgs)\n        {\n            label1.Text = string.Empty;\n            label2.Text = _helpText;\n            label3.Text = string.Empty;\n        }\n\n        private void SearcherOnHoveredWindowChanged(object sender, WindowHoverEventArgs windowHoverEventArgs)\n        {\n            label1.Text = windowHoverEventArgs.TargetWindow.WindowText;\n            label2.Text = windowHoverEventArgs.TargetWindow.WindowRect.ToString();\n            try\n            {\n                label3.Text = windowHoverEventArgs.TargetWindow.GetRunningProcess().MainModule?.FileName ?? \"---\";\n            }\n            catch (SystemException ex)\n            {\n                // Getting MainModule on a 64 bit process throws if BCU is running as 32 bit\n                label3.Text = ex.Message;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Klepněte a přetáhněte přes okno pro výběr</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Klicken und ziehen Sie über ein Fenster, um auszuwählen</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Pulse y arrastre sobre una ventana para selec.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Cliquer et faire glisser sur une fenêtre pour sélectionner</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Kattintson rá, és húzza át az ablakba a kiválasztottat</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Clicca e trascina su una finestra per selezionare</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>ウィンドウをクリック＆ドラッグして選択</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Klik en sleep over een venster om te selecteren</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Naciśnij i przeciągnij nad wybrane okno</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Clique e arraste sobre uma janela para selecionar</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Clicar e arrastar para uma janela para seleccionar</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals of this format is to allow a simple XML format\n    that is mostly human readable. The generation and parsing of the\n    various data types are done through the TypeConverter classes\n    associated with the data types.\n\n    Example:\n\n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n\n    There are any number of \"resheader\" rows that contain simple\n    name/value pairs.\n\n    Each data row contains a name, and value. The row also contains a\n    type or mimetype. Type corresponds to a .NET class that support\n    text/value conversion through the TypeConverter architecture.\n    Classes that don't support this are serialized and stored with the\n    mimetype set.\n\n    The mimetype is used for serialized objects, and tells the\n    ResXResourceReader how to depersist the object. This is currently not\n    extensible. For a given mimetype the value must be set accordingly:\n\n    Note - application/x-microsoft.net.object.binary.base64 is the format\n    that the ResXResourceWriter will generate, however the reader can\n    read any of the formats listed below.\n\n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array\n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"label1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Top</value>\n  </data>\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\n  <data name=\"label1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>74, 0</value>\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"label1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 0, 4, 0</value>\n  </data>\n  <data name=\"label1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>0, 7, 0, 0</value>\n  </data>\n  <data name=\"label1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>263, 29</value>\n  </data>\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"label1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>4</value>\n  </data>\n  <data name=\"&gt;&gt;label1.Name\" xml:space=\"preserve\">\n    <value>label1</value>\n  </data>\n  <data name=\"&gt;&gt;label1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;label1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;label1.ZOrder\" xml:space=\"preserve\">\n    <value>2</value>\n  </data>\n  <data name=\"label2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Top</value>\n  </data>\n  <data name=\"label2.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>74, 29</value>\n  </data>\n  <data name=\"label2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 0, 4, 0</value>\n  </data>\n  <data name=\"label2.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>18, 0</value>\n  </data>\n  <data name=\"label2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>0, 0, 0, 3</value>\n  </data>\n  <data name=\"label2.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>263, 22</value>\n  </data>\n  <data name=\"label2.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>5</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Click and drag over a window to select</value>\n  </data>\n  <data name=\"&gt;&gt;label2.Name\" xml:space=\"preserve\">\n    <value>label2</value>\n  </data>\n  <data name=\"&gt;&gt;label2.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;label2.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;label2.ZOrder\" xml:space=\"preserve\">\n    <value>1</value>\n  </data>\n  <data name=\"label3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Top</value>\n  </data>\n  <data name=\"label3.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>74, 51</value>\n  </data>\n  <data name=\"label3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 0, 4, 0</value>\n  </data>\n  <data name=\"label3.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>18, 0</value>\n  </data>\n  <data name=\"label3.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>263, 20</value>\n  </data>\n  <data name=\"label3.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>6</value>\n  </data>\n  <data name=\"&gt;&gt;label3.Name\" xml:space=\"preserve\">\n    <value>label3</value>\n  </data>\n  <data name=\"&gt;&gt;label3.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;label3.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;label3.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <data name=\"pictureBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Left</value>\n  </data>\n  <data name=\"pictureBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>0, 0</value>\n  </data>\n  <data name=\"pictureBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"pictureBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>74, 74</value>\n  </data>\n  <data name=\"pictureBox1.SizeMode\" type=\"System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms\">\n    <value>CenterImage</value>\n  </data>\n  <data name=\"pictureBox1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"&gt;&gt;pictureBox1.Name\" xml:space=\"preserve\">\n    <value>pictureBox1</value>\n  </data>\n  <data name=\"&gt;&gt;pictureBox1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;pictureBox1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;pictureBox1.ZOrder\" xml:space=\"preserve\">\n    <value>3</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\n    <value>7, 15</value>\n  </data>\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"$this.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>11666666, 74</value>\n  </data>\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>0, 74</value>\n  </data>\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>337, 74</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\n    <value>WindowTargeter</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Нажмите и перетащите на нужное окно</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Za izbor, kliknite in povlecite nad okno</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Klicka och dra över ett fönster för att välja</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Seçmek için bir pencerenin üzerine tıklayın ve sürükleyin</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Nhấp và kéo trên cửa sổ để chọn</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>在窗口上单击并拖动以选择</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Controls/WindowTargeter.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>在視窗上點擊並移動來選擇</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/DisplayMode.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nnamespace Klocman\n{\n    public enum DisplayMode\n    {\n        Closed,\n        Simple,\n        Advanced\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Events/CountingUpdateEventArgs.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\n\nnamespace Klocman.Events\n{\n    public class CountingUpdateEventArgs : EventArgs\n    {\n        public CountingUpdateEventArgs(int minimum, int maximum, int value)\n        {\n            if (minimum < 0 || maximum < 0)\n                throw new ArgumentException(\"min and max values can't be negative\");\n\n            Minimum = minimum;\n            Maximum = maximum;\n            Value = value;\n\n            IsValid = (value >= minimum) && (value <= maximum);\n            Finished = value == maximum;\n        }\n\n        /// <summary>\n        ///     Same as comparing value to the maximum (Value == Maximum)\n        /// </summary>\n        public bool Finished { get; private set; }\n\n        /// <summary>\n        ///     Returns false if the value is out of bounds ((value >= minimum) && (maximum >= value))\n        /// </summary>\n        public bool IsValid { get; }\n\n        public int Maximum { get; }\n        public int Minimum { get; private set; }\n        public object Tag { get; set; }\n        public int Value { get; }\n\n        /// <summary>\n        ///     Get the percentage of this task. 100% is only returned when Finished is true.\n        ///     If the values are invalid returns 0\n        /// </summary>\n        /// <returns></returns>\n        public int GetPercentage()\n        {\n            if (IsValid)\n                return (100*Value)/Maximum;\n            return 0;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Events/PropertyChangedEventArgs.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.ComponentModel;\n\nnamespace Klocman.Events\n{\n    /// <summary>\n    ///     Generic version of the System.ComponentModel.PropertyChangedEventArgs.\n    ///     It might not contain a valid propertyName\n    /// </summary>\n    public class PropertyChangedEventArgs<T> : PropertyChangedEventArgs\n    {\n        public PropertyChangedEventArgs(T newValue) : this(newValue, string.Empty)\n        {\n        }\n\n        public PropertyChangedEventArgs(T newValue, string propertyName) : base(propertyName)\n        {\n            NewValue = newValue;\n        }\n\n        public T NewValue { get; private set; }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/BooleanTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Windows.Forms;\nusing Klocman.Properties;\nusing Klocman.Resources;\n\nnamespace Klocman.Extensions\n{\n    public static class BooleanTools\n    {\n        /// <summary>\n        ///     Convert CheckState value to bool.\n        ///     CheckState.Checked returns true, everything else returns false.\n        /// </summary>\n        public static bool ToBool(this CheckState value)\n        {\n            return value == CheckState.Checked;\n        }\n\n        /// <summary>\n        ///     Convert boolean value to CheckState.Checked or CheckState.Unchecked.\n        /// </summary>\n        public static CheckState ToCheckState(this bool value)\n        {\n            return value ? CheckState.Checked : CheckState.Unchecked;\n        }\n\n        /// <summary>\n        ///     Convert nullable bool to CheckState, null being CheckState.Indeterminate.\n        /// </summary>\n        public static CheckState ToCheckState(this bool? value)\n        {\n            if (!value.HasValue)\n                return CheckState.Indeterminate;\n            return value.Value ? CheckState.Checked : CheckState.Unchecked;\n        }\n\n        /// <summary>\n        ///     Convert CheckState to nullable bool, CheckState.Indeterminate being null.\n        /// </summary>\n        public static bool? ToNullBool(this CheckState value)\n        {\n            if (value == CheckState.Indeterminate)\n                return null;\n            return value == CheckState.Checked;\n        }\n\n        /// <summary>\n        ///     Convert boolean value to string contained in Localisation.Yes and Localisation.No resources. Can be localised.\n        /// </summary>\n        public static string ToYesNo(this bool value)\n        {\n            return value ? Localisation.Yes : Localisation.No;\n        }\n\n        /// <summary>\n        ///     Convert nullable boolean value to string contained in\n        ///     Localisation.Yes, Localisation.No and CommonStrings.Unknown resources. Can be localised.\n        /// </summary>\n        public static string ToYesNo(this bool? value)\n        {\n            return value.HasValue ? value.Value.ToYesNo() : CommonStrings.Unknown;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/CheckBoxExtension.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Reflection;\nusing System.Windows.Forms;\n\nnamespace Klocman.Extensions\n{\n    public static class CheckBoxExtension\n    {\n        private static readonly FieldInfo CheckStateInfo = typeof (CheckBox).GetField(\"checkState\",\n            BindingFlags.NonPublic | BindingFlags.Instance);\n\n        /// <summary>\n        ///     Set the CheckState value, optionally not raising the CheckStateChanged event.\n        /// </summary>\n        /// <param name=\"check\">New state</param>\n        /// <param name=\"raiseEvent\">If true the CheckStateChanged event will not be raised. The control will still be invalidated.</param>\n        /// <param name=\"chBox\">Checkbox to access</param>\n        public static void SetCheckState(this CheckBox chBox, CheckState check, bool raiseEvent)\n        {\n            if (raiseEvent)\n            {\n                chBox.CheckState = check;\n            }\n            else\n            {\n                CheckStateInfo.SetValue(chBox, check);\n                chBox.Invalidate();\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/CollectionExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace Klocman.Extensions\n{\n    public static class CollectionExtensions\n    {\n        private static readonly Random R = new();\n        \n        /// <summary>\n        /// Wrap this object in an enumerable that returns this object once and finishes.\n        /// </summary>\n        public static IEnumerable<T> ToEnumerable<T>(this T obj)\n        {\n            return Enumerable.Repeat(obj, 1);\n        }\n\n        /// <summary>\n        /// Recursively select all subitems based on the selector.\n        /// </summary>\n        public static IEnumerable<T> SelectManyResursively<T>(this IEnumerable<T> enumerable, Func<T, IEnumerable<T>> subitemSelector)\n        {\n            return enumerable.SelectMany(\n                x => Enumerable.Repeat(x, 1)\n                .Concat(subitemSelector(x).SelectManyResursively(subitemSelector)));\n        }\n\n        /// <summary>\n        /// Move item at specified index to a new index\n        /// </summary>\n        public static void Move<T>(this IList<T> list, int oldIndex, int newIndex)\n        {\n            var item = list[oldIndex];\n            list.RemoveAt(oldIndex);\n            list.Insert(newIndex, item);\n        }\n\n        /// <summary>\n        /// Move item at specified index to index + 1. Does nothing if item is already last.\n        /// </summary>\n        public static void MoveUp<T>(this IList<T> list, int oldIndex)\n        {\n            if (list.Count - 1 > oldIndex)\n                list.Move(oldIndex, oldIndex + 1);\n        }\n\n        /// <summary>\n        /// Move item at specified index to index - 1. Does nothing if item is already first.\n        /// </summary>\n        public static void MoveDown<T>(this IList<T> list, int oldIndex)\n        {\n            if (oldIndex > 0)\n                list.Move(oldIndex, oldIndex - 1);\n        }\n\n        /// <summary>\n        /// Returns a read-only wrapper of this dictionary. \n        /// Attempts to modify this collection will throw InvalidOperationException.\n        /// </summary>\n        public static IDictionary<TKey, TValue> AsReadOnly<TKey, TValue>(this IDictionary<TKey, TValue> obj)\n        {\n            return new ReadOnlyDictionaryWrapper<TKey, TValue>(obj);\n        }\n\n        /// <summary>\n        ///     Usually faster than calling Count() and comparing, at worst it's about the same.\n        ///     It enumerates at most (count + 1) elements from the collection.\n        /// </summary>\n        /// <param name=\"collection\">Collection to count against</param>\n        /// <param name=\"count\">Count to compare to.</param>\n        public static bool CountEquals<T>(this IEnumerable<T> collection, int count)\n        {\n            if (collection is ICollection<T> col)\n                return col.Count == count;\n\n            using (var enumerator = collection.GetEnumerator())\n            {\n                var i = 0;\n                while (enumerator.MoveNext())\n                {\n                    i++;\n                    if (i > count)\n                        return false;\n                }\n                return i == count;\n            }\n        }\n\n        /// <summary>\n        /// Run distinct using the specified equality comparator\n        /// </summary>\n        public static IEnumerable<TSource> Distinct<TSource>(this IEnumerable<TSource> source,\n            Func<TSource, TSource, bool> equalityComparator)\n        {\n            var seenItems = new List<TSource>();\n            foreach (var item in source)\n            {\n                if (seenItems.Any(x => equalityComparator(item, x))) continue;\n\n                seenItems.Add(item);\n                yield return item;\n            }\n        }\n\n        /// <summary>\n        ///     Run the specified action on all members of the collection as they are enumerated.\n        ///     Action will be executed for each enumeration over the element (lazy evaluation).\n        /// </summary>\n        /// <typeparam name=\"T\">Type that is being iterated over</typeparam>\n        /// <param name=\"collection\">Base enumerable</param>\n        /// <param name=\"action\">Action to run on all of the enumerated members</param>\n        /// <returns>Enumerator</returns>\n        public static IEnumerable<T> DoForEach<T>(this IEnumerable<T> collection, Action<T> action)\n        {\n            foreach (var item in collection)\n            {\n                action(item);\n                yield return item;\n            }\n        }\n\n        /// <summary>\n        ///     Run the specified action on all members of the collection. The collection is enumerated in process.\n        /// </summary>\n        /// <typeparam name=\"T\">Type that is being iterated over</typeparam>\n        /// <param name=\"collection\">Base enumerable</param>\n        /// <param name=\"action\">Action to run on all of the members</param>\n        public static void ForEach<T>(this IEnumerable<T> collection, Action<T> action)\n        {\n            foreach (var item in collection)\n                action(item);\n        }\n\n        /// <summary>\n        ///     Get ID of the element. If the element is not in the array, returns -1 (indexof is not available)\n        /// </summary>\n        public static int GetPositionOfElement<T>(this T[] array, T element)\n        {\n            for (var i = 0; i < array.Length; i++)\n            {\n                if (EqualityComparer<T>.Default.Equals(array[i], element))\n                    return i;\n            }\n            return -1;\n        }\n\n        /// <summary>\n        ///     Returns random element from this sequence. If it is empty, returns default value of the type.\n        /// </summary>\n        public static T GetRandomElement<T>(this IEnumerable<T> items)\n        {\n            var list = items.ToList();\n            switch (list.Count)\n            {\n                case 0:\n                    return default(T);\n                case 1:\n                    return list[0];\n                default:\n                    return list[R.Next(0, list.Count)];\n            }\n        }\n\n        /// <summary>\n        ///     Remove all items that are contained in the supplied collection.\n        /// </summary>\n        /// <param name=\"collection\">Collection to remove items from</param>\n        /// <param name=\"items\">Collection with items to remove.</param>\n        public static void RemoveAll<T>(this IList<T> collection, IEnumerable<T> items)\n        {\n            foreach (var item in items)\n            {\n                if (collection.Contains(item))\n                    collection.Remove(item);\n            }\n        }\n\n        /// <summary>\n        ///     Remove all items for which the predicate returns true.\n        /// </summary>\n        /// <param name=\"collection\">Collection to remove items from</param>\n        /// <param name=\"predicate\">Predicate used to choose items to remove.</param>\n        public static void RemoveAll<T>(this IList<T> collection, Func<T, bool> predicate)\n        {\n            foreach (var item in collection.Where(predicate).ToArray())\n                collection.Remove(item);\n        }\n\n        /// <summary>\n        ///     Create a new sub array starting at specified index and spanning a number of positions.\n        /// </summary>\n        /// <param name=\"data\">Source array</param>\n        /// <param name=\"index\">Starting index.</param>\n        /// <param name=\"length\">How many items to take after the index (including the item at index).</param>\n        public static T[] SubArray<T>(this T[] data, int index, int length)\n        {\n            var result = new T[length];\n            Array.Copy(data, index, result, 0, length);\n            return result;\n        }\n\n        /// <summary>\n        /// Check if any element of the collection equals to the supplied string value.\n        /// </summary>\n        public static bool Contains(this IEnumerable<string> data, string value, StringComparison options)\n        {\n            return data.Any(x => x.Equals(value, options));\n        }\n        \n        /// <summary>\n        /// Rotate the collection to the left so that the item at startIndex becomes index 0. \n        /// Elements rotated to the left wrap around, so the number of elements stays the same. \n        /// </summary>\n        public static IEnumerable<T> Rotate<T>(this ICollection<T> targets, int startIndex)\n        {\n            return targets.Skip(startIndex).Concat(targets.Take(startIndex));\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/DictionaryExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Xml.Serialization;\nusing System.Collections;\nusing System.IO;\n\nnamespace Klocman.Extensions\n{\n    public static class DictionaryExtensions\n    {\n\n        public static void Serialize(this IDictionary dictionary, TextWriter writer)\n        {\n            var entries = new List<Entry>(from object key in dictionary.Keys select new Entry(key, dictionary[key]));\n\n            var serializer = new XmlSerializer(typeof(List<Entry>));\n            serializer.Serialize(writer, entries);\n        }\n\n        public static void Deserialize(this IDictionary dictionary, TextReader reader)\n        {\n            dictionary.Clear();\n            var serializer = new XmlSerializer(typeof(List<Entry>));\n            var list = (List<Entry>)serializer.Deserialize(reader);\n            if (list == null) throw new ArgumentException(@\"Reader didn't contain valid data\", nameof(reader));\n\n            foreach (var entry in list)\n            {\n                dictionary[entry.Key] = entry.Value;\n            }\n        }\n\n        private class Entry\n        {\n            public object Key;\n            public object Value;\n\n            public Entry()\n            {\n            }\n\n            public Entry(object key, object value)\n            {\n                Key = key;\n                Value = value;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Extensions/EnumerableExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\n\nnamespace Klocman.Extensions\n{\n    public static class EnumerableExtensions\n    {\n        /// <summary>\n        ///     Wraps the specified disposable in an using statement.\n        ///     Dispose is called on the current item when the next item is enumerated,\n        ///     at the end of the enumeration, and when an uncaught exception is thrown.\n        /// </summary>\n        /// <typeparam name=\"T\">Type of the base enumerable</typeparam>\n        /// <typeparam name=\"TDisp\">Type of the disposable class</typeparam>\n        /// <param name=\"baseEnumerable\">Base enumerable</param>\n        /// <param name=\"disposableGetter\">Lambda for getting the disposable</param>\n        public static IEnumerable<TDisp> Using<T, TDisp>(this IEnumerable<T> baseEnumerable,\n            Func<T, TDisp> disposableGetter) where TDisp : class, IDisposable\n        {\n            TDisp disposable = null;\n            try\n            {\n                foreach (var item in baseEnumerable)\n                {\n                    disposable?.Dispose();\n\n                    disposable = disposableGetter(item);\n                    yield return disposable;\n                }\n            }\n            finally\n            {\n                disposable?.Dispose();\n            }\n        }\n\n        /// <summary>\n        ///     Executes a lambda on each item as it is enumerated. Doesn't enumerate.\n        ///     WARNING: Will only run for the items that are enumerated. Enumerating twice will\n        ///     run the action twice.\n        /// </summary>\n        /// <typeparam name=\"T\"></typeparam>\n        /// <param name=\"baseEnumerable\">Base enumerable</param>\n        /// <param name=\"action\">Action to execute on each of the enumerated items.</param>\n        public static IEnumerable<T> Do<T>(this IEnumerable<T> baseEnumerable,\n            Action<T> action)\n        {\n            foreach (var item in baseEnumerable)\n            {\n                action(item);\n                yield return item;\n            }\n        }\n\n        /// <summary>\n        /// Select using the given action, but ignore exceptions and skip offending items.\n        /// </summary>\n        public static IEnumerable<TOut> Attempt<TIn, TOut>(this IEnumerable<TIn> baseEnumerable,\n            Func<TIn, TOut> action)\n        {\n            foreach (var item in baseEnumerable)\n            {\n                TOut output;\n                try\n                {\n                    output = action(item);\n                }\n                catch (Exception e)\n                {\n                    Console.Error.WriteLine(\"Attempt failed, skipping. Error: \" + e);\n                    continue;\n                }\n                yield return output;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/EventExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.Linq;\n\nnamespace Klocman.Extensions\n{\n    public static class EventExtensions\n    {\n        public static bool CancellableInvoke<T>(this EventHandler<T> handler, object sender, T eventArgs)\n            where T : CancelEventArgs\n        {\n            var cancel = false;\n\n            foreach (var tmp in handler.GetInvocationList().Cast<EventHandler<T>>())\n            {\n                tmp(sender, eventArgs);\n                if (eventArgs.Cancel)\n                {\n                    cancel = true;\n                    break;\n                }\n            }\n            return !cancel;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/FormsExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Linq;\nusing System.Reflection;\nusing System.Runtime.InteropServices;\nusing System.Windows.Forms;\n\nnamespace Klocman.Extensions\n{\n    public static class FormsExtensions\n    {\n        /// <summary>\n        ///     An application sends the WM_SETREDRAW message to a window to allow changes in that\n        ///     window to be redrawn or to prevent changes in that window from being redrawn.\n        /// </summary>\n        private const int WM_SETREDRAW = 11;\n\n        /// <summary>\n        ///     Suspends painting for the target control. Do NOT forget to call EndControlUpdate!!!\n        /// </summary>\n        /// <param name=\"control\">visual control</param>\n        public static void BeginControlUpdate(this Control control)\n        {\n            var msgSuspendUpdate = Message.Create(control.Handle, WM_SETREDRAW, IntPtr.Zero,\n                IntPtr.Zero);\n\n            var window = NativeWindow.FromHandle(control.Handle);\n            window.DefWndProc(ref msgSuspendUpdate);\n        }\n\n        /// <summary>\n        /// Show the form and make sure that it is at the top of the screen\n        /// </summary>\n        public static void ShowAndMoveToTop(this Form targetForm)\n        {\n            targetForm.WindowState = FormWindowState.Minimized;\n            targetForm.Show();\n            targetForm.WindowState = FormWindowState.Normal;\n        }\n\n        /// <summary>\n        ///     Move this form to be centered to the other. Same effect as setting FormStartPosition.CenterParent and using\n        ///     ShowDialog.\n        /// </summary>\n        /// <param name=\"thisForm\">Form that will be moved</param>\n        /// <param name=\"targetForm\">Form to be centered to.</param>\n        public static void CenterToForm(this Form thisForm, Form targetForm)\n        {\n            thisForm.StartPosition = FormStartPosition.Manual;\n            thisForm.Location = new Point(targetForm.Location.X + (targetForm.Width - thisForm.Width) / 2,\n                targetForm.Location.Y + (targetForm.Height - thisForm.Height) / 2);\n        }\n\n        /// <summary>\n        ///     Resumes painting for the target control. Intended to be called following a call to BeginControlUpdate()\n        /// </summary>\n        /// <param name=\"control\">visual control</param>\n        public static void EndControlUpdate(this Control control)\n        {\n            // Create a C \"true\" boolean as an IntPtr\n            var wparam = new IntPtr(1);\n            var msgResumeUpdate = Message.Create(control.Handle, WM_SETREDRAW, wparam,\n                IntPtr.Zero);\n\n            var window = NativeWindow.FromHandle(control.Handle);\n            window.DefWndProc(ref msgResumeUpdate);\n            control.Invalidate();\n            control.Refresh();\n        }\n\n        /// <summary>\n        ///     Get an enumerator that will get all child controls recursively. It will return contents of custom controls as well.\n        /// </summary>\n        /// <param name=\"control\">Control to get children of</param>\n        public static IEnumerable<Control> GetAllChildren(this Control control)\n        {\n            var controls = control.Controls.Cast<Control>().ToList();\n            return controls.SelectMany(GetAllChildren).Concat(controls);\n        }\n\n        /// <summary>\n        ///     Get an enumerator that will get all child controls recursively. It will return contents of custom controls as well.\n        /// </summary>\n        /// <param name=\"control\">Control to get children of</param>\n        /// <param name=\"predicate\">\n        ///     Predicate to filter the controls by. If a control is filtered its children will be filtered as\n        ///     well.\n        /// </param>\n        public static IEnumerable<Control> GetAllChildren(this Control control, Func<Control, bool> predicate)\n        {\n            var controls = control.Controls.Cast<Control>().Where(predicate).ToList();\n            return controls.SelectMany(ctrl => GetAllChildren(ctrl, predicate)).Concat(controls);\n        }\n\n        public static IEnumerable<Component> GetComponents(this Form form)\n        {\n            return\n                from field in\n                    form.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)\n                where typeof(Component).IsAssignableFrom(field.FieldType)\n                let component = (Component)field.GetValue(form)\n                where component != null\n                select component;\n        }\n\n        /// <summary>\n        ///     Recursively check if this form is a child of specified control.\n        ///     Will deadlock if you have a ring of parented controls (don't do that).\n        /// </summary>\n        /// <param name=\"c\">Child control</param>\n        /// <param name=\"parent\">Control to check against</param>\n        public static bool IsChildOf(this Control c, Control parent)\n        {\n            if (c == null) throw new NullReferenceException();\n            if (parent == null) throw new ArgumentNullException(nameof(parent));\n\n            while (true)\n            {\n                if (c.Parent == null) return false;\n                if (c.Parent == parent) return true;\n                c = c.Parent;\n            }\n        }\n\n        /// <summary>\n        ///     Safely invoke supplied action on this object. If this object is disposed, do nothing.\n        ///     If invoke is not required, supplied action is launched directly.\n        /// </summary>\n        /// <param name=\"obj\"></param>\n        /// <param name=\"action\">Action to invoke</param>\n        /// <exception cref=\"ArgumentNullException\">The value of 'action' and 'obj' cannot be null. </exception>\n        /// <exception cref=\"Exception\">A delegate callback throws an exception. </exception>\n        public static void SafeInvoke(this Control obj, Action action)\n        {\n            if (action == null)\n                throw new ArgumentNullException(nameof(action));\n            if (obj == null)\n                throw new ArgumentNullException(nameof(obj));\n\n            if (!obj.IsDisposed && !obj.Disposing)\n            {\n                if (obj.InvokeRequired)\n                {\n                    try\n                    {\n                        obj.Invoke(action);\n                    }\n                    catch (ObjectDisposedException) { }\n                    catch (InvalidOperationException) { }\n                    catch (InvalidAsynchronousStateException) { }\n                }\n                else\n                {\n                    action();\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Extend aero frame into the client area of the form by specified amounts.\n        /// </summary>\n        /// <param name=\"f\">Form to extend into</param>\n        /// <param name=\"insetMargins\">Amount of pixels to extend inwards</param>\n        /// <returns>True if operation succeeded, otherwise false.</returns>\n        public static bool ExtendAeroFrameInwards(this Form f, Padding insetMargins)\n        {\n            var margins = new NativeMethods.MARGINS\n            {\n                cxLeftWidth = insetMargins.Left,\n                cxRightWidth = insetMargins.Right,\n                cyTopHeight = insetMargins.Top,\n                cyBottomHeight = insetMargins.Bottom\n            };\n\n            var result = NativeMethods.DwmExtendFrameIntoClientArea(f.Handle, ref margins);\n            return result == 0;\n        }\n\n        /// <summary>\n        ///     Enable/disable hidden double buffered attribute using reflection.\n        ///     http://blogs.msdn.com/oldnewthing/archive/2006/01/03/508694.aspx\n        /// </summary>\n        public static void SetDoubleBuffered(this Control c, bool enabled)\n        {\n            if (SystemInformation.TerminalServerSession)\n                return;\n\n            var aProp = typeof(Control).GetProperty(\"DoubleBuffered\", BindingFlags.NonPublic | BindingFlags.Instance);\n\n            if (aProp != null)\n                aProp.SetValue(c, enabled, null);\n        }\n\n        /// <summary>\n        ///     Convert keycode to a string with a single letter/digit. Returns null if key is not between A and Z or is not a\n        ///     number.\n        /// </summary>\n        /// <param name=\"keyVal\"></param>\n        /// <returns></returns>\n        public static string ToLetterOrNumberString(this Keys keyVal)\n        {\n            string keyName = null;\n\n            if (keyVal >= Keys.A && keyVal <= Keys.Z)\n            {\n                keyName = keyVal.ToString();\n            }\n            else\n            {\n                var temp = keyVal.ToNumber();\n                if (temp >= 0)\n                    keyName = temp.ToString();\n            }\n            return keyName;\n        }\n\n        /// <summary>\n        ///     Convert keycode of a pressed number key to the actual number. Returns -1 if key is not a number.\n        /// </summary>\n        public static int ToNumber(this Keys keyVal)\n        {\n            var value = -1;\n            if (keyVal >= Keys.D0 && keyVal <= Keys.D9)\n            {\n                value = keyVal - Keys.D0;\n            }\n            else if (keyVal >= Keys.NumPad0 && keyVal <= Keys.NumPad9)\n            {\n                value = keyVal - Keys.NumPad0;\n            }\n            return value;\n        }\n\n        /// <summary>\n        ///     Get height of the form's titlebar.\n        /// </summary>\n        public static int GetBorderHeight(this Form f)\n        {\n            var screenRectangle = f.RectangleToScreen(f.ClientRectangle);\n            return screenRectangle.Top - f.Top;\n        }\n\n        /// <summary>\n        ///     Get width of the form's left border.\n        /// </summary>\n        public static int GetBorderWidth(this Form f)\n        {\n            var screenRectangle = f.RectangleToScreen(f.ClientRectangle);\n            return screenRectangle.Left - f.Left;\n        }\n\n        /// <summary>\n        ///     Move the form as close to the cursor as possible without going past the edges of current screen's working area.\n        /// </summary>\n        public static void MoveCloseToCursor(this Form form)\n        {\n            var screen = Screen.FromPoint(Control.MousePosition).WorkingArea;\n            var x = Math.Max(Math.Min(Control.MousePosition.X - form.Width / 2, screen.X + screen.Width - form.Width),\n                screen.X);\n            var y = Math.Max(Math.Min(Control.MousePosition.Y - form.Height / 2, screen.Y + screen.Height - form.Height),\n                screen.Y);\n            form.Location = new Point(x, y);\n        }\n\n        private static class NativeMethods\n        {\n            [DllImport(\"dwmapi.dll\")]\n            public static extern int DwmExtendFrameIntoClientArea(\n                IntPtr hWnd,\n                ref MARGINS pMarInset\n                );\n\n            [StructLayout(LayoutKind.Sequential)]\n            public struct MARGINS\n            {\n                public int cxLeftWidth;\n                public int cxRightWidth;\n                public int cyTopHeight;\n                public int cyBottomHeight;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/IconExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Drawing;\nusing System.Media;\n\nnamespace Klocman.Extensions\n{\n    public static class IconExtensions\n    {\n        /// <summary>\n        ///     Useful only with icons from the SystemIcons class. Plays sounds from the SystemSounds class.\n        /// </summary>\n        /// <param name=\"iconSet\"></param>\n        public static void PlayCorrespondingSystemSound(this Icon iconSet)\n        {\n            if (iconSet.Equals(SystemIcons.Error) || iconSet.Equals(SystemIcons.Hand))\n            {\n                SystemSounds.Hand.Play();\n            }\n            else if (iconSet.Equals(SystemIcons.Warning) || iconSet.Equals(SystemIcons.Exclamation))\n            {\n                SystemSounds.Exclamation.Play();\n            }\n            else if (iconSet.Equals(SystemIcons.Asterisk) || iconSet.Equals(SystemIcons.Application))\n            {\n                SystemSounds.Asterisk.Play();\n            }\n            else if (iconSet.Equals(SystemIcons.Question))\n            {\n                SystemSounds.Question.Play();\n            }\n            else if (iconSet.Equals(SystemIcons.Shield))\n            {\n                SystemSounds.Beep.Play();\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/IoExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\n\nnamespace Klocman.Extensions\n{\n    public static class IoExtensions\n    {\n        /// <summary>\n        ///     Get basic attributes of this file in a Name/Value format.\n        /// </summary>\n        /// <param name=\"file\">Base file</param>\n        /// <returns>Extended attributes of this file</returns>\n        public static IEnumerable<KeyValuePair<string, object>> GetAttributes(this FileInfo file)\n        {\n            if (file == null)\n                throw new ArgumentNullException(nameof(file));\n            if (!file.Exists)\n                throw new ArgumentException(@\"Requested file doesn't exist\", nameof(file));\n\n            var lq = from property in typeof (FileInfo).GetProperties()\n                select new KeyValuePair<string, object>(property.Name, property.GetValue(file, new object[] {}));\n\n            return lq;\n        }\n\n        /// <summary>\n        ///     Attempt to get DriveInfo of this directory's root partition.\n        /// </summary>\n        /// <param name=\"obj\"></param>\n        /// <returns>First drive matching the root name, null if no matches were found.</returns>\n        public static DriveInfo GetDriveInfo(this DirectoryInfo obj)\n        {\n            if (obj == null)\n                throw new ArgumentNullException(nameof(obj));\n\n            return DriveInfo.GetDrives().FirstOrDefault(x => obj.RootEquals(x.RootDirectory));\n        }\n\n        public static bool IsFileLocked(this FileInfo file)\n        {\n            FileStream stream = null;\n\n            try\n            {\n                stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);\n            }\n            catch (IOException)\n            {\n                // File is locked\n                return true;\n            }\n            finally\n            {\n                stream?.Close();\n            }\n\n            // File is not locked\n            return false;\n        }\n\n        /// <summary>\n        ///     Check if this drive is formatted with NTFS file system\n        /// </summary>\n        /// <param name=\"obj\"></param>\n        /// <returns></returns>\n        public static bool IsNtfs(this DriveInfo obj)\n        {\n            if (obj == null)\n                throw new ArgumentNullException(nameof(obj));\n\n            return obj.DriveFormat.Contains(\"NTFS\");\n        }\n\n        /// <summary>\n        ///     Compare roots of the selected directory paths.\n        ///     If any path is null, false is returned (even if both are null).\n        /// </summary>\n        /// <param name=\"obj\"></param>\n        /// <param name=\"target\">Path to compare root with</param>\n        /// <returns>True if roots are equal</returns>\n        public static bool RootEquals(this DirectoryInfo obj, DirectoryInfo target)\n        {\n            if (obj == null || target == null)\n                return false;\n\n            if (ReferenceEquals(obj, target))\n                return true;\n\n            return obj.Root.Name.Equals(target.Root.Name, StringComparison.CurrentCultureIgnoreCase);\n        }\n\n        /// <summary>\n        ///     Compare roots of the selected file paths.\n        ///     If any path is null, false is returned (even if both are null).\n        /// </summary>\n        /// <param name=\"obj\"></param>\n        /// <param name=\"target\">Path to compare root with</param>\n        /// <returns>True if roots are equal</returns>\n        public static bool RootEquals(this FileInfo obj, FileInfo target)\n        {\n            if (obj == null || target == null)\n                return false;\n\n            if (ReferenceEquals(obj, target))\n                return true;\n\n            return obj.Directory.RootEquals(target.Directory);\n        }\n        \n        public static string GetNameWithoutExtension(this FileSystemInfo obj)\n        {\n            return Path.GetFileNameWithoutExtension(obj.Name);\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/MiscExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\n\nnamespace Klocman.Extensions\n{\n    public static class MiscExtensions\n    {\n        // Buggy with signed enums\n        /*public static bool Contains(this Enum keys, Enum flag)\n        {\n            var keysVal = Convert.ToUInt64(keys);\n            var flagVal = Convert.ToUInt64(flag);\n\n            return (keysVal & flagVal) == flagVal;\n        }*/\n\n        /// <summary>\n        ///     Check if this struct is equal to the default value for this type.\n        /// </summary>\n        /// <typeparam name=\"T\"></typeparam>\n        /// <param name=\"value\"></param>\n        public static bool IsDefault<T>(this T value)\n            where T : struct\n        {\n            var isDefault = value.Equals(default(T));\n\n            return isDefault;\n        }\n\n        public static bool IsEmpty(this Guid obj)\n        {\n            return Guid.Empty.Equals(obj);\n        }\n\n        public static bool IsZeroOrNull(this Version obj)\n        {\n            return obj == null || obj.Equals(new Version(0, 0, 0, 0)) \n                || obj.Equals(new Version(0, 0, 0)) || obj.Equals(new Version(0, 0));\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/ParentProcessUtilities.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Runtime.InteropServices;\n\nnamespace Klocman.Extensions\n{\n    /// <summary>\n    /// A utility class to determine a process parent.\n    /// By Simon Mourier https://stackoverflow.com/a/3346055/4309247\n    /// </summary>\n    [StructLayout(LayoutKind.Sequential)]\n    public struct ParentProcessUtilities\n    {\n        // These members must match PROCESS_BASIC_INFORMATION\n        internal IntPtr Reserved1;\n        internal IntPtr PebBaseAddress;\n        internal IntPtr Reserved2_0;\n        internal IntPtr Reserved2_1;\n        internal IntPtr UniqueProcessId;\n        internal IntPtr InheritedFromUniqueProcessId;\n\n        [DllImport(\"ntdll.dll\")]\n        private static extern int NtQueryInformationProcess(IntPtr processHandle, int processInformationClass, ref ParentProcessUtilities processInformation, int processInformationLength, out int returnLength);\n\n        /// <summary>\n        /// Gets the parent process of the current process.\n        /// </summary>\n        /// <returns>An instance of the Process class.</returns>\n        public static Process GetParentProcess()\n        {\n            return GetParentProcess(Process.GetCurrentProcess().Handle);\n        }\n\n        /// <summary>\n        /// Gets the parent process of specified process.\n        /// </summary>\n        /// <param name=\"id\">The process id.</param>\n        /// <returns>An instance of the Process class.</returns>\n        public static Process GetParentProcess(int id)\n        {\n            Process process = Process.GetProcessById(id);\n            return GetParentProcess(process.Handle);\n        }\n\n        /// <summary>\n        /// Gets the parent process of a specified process.\n        /// </summary>\n        /// <param name=\"handle\">The process handle.</param>\n        /// <returns>An instance of the Process class.</returns>\n        public static Process GetParentProcess(IntPtr handle)\n        {\n            ParentProcessUtilities pbi = new ParentProcessUtilities();\n            int status = NtQueryInformationProcess(handle, 0, ref pbi, Marshal.SizeOf(pbi), out _);\n            if (status != 0)\n                throw new Win32Exception(status);\n\n            try\n            {\n                return Process.GetProcessById(pbi.InheritedFromUniqueProcessId.ToInt32());\n            }\n            catch (ArgumentException)\n            {\n                // not found\n                return null;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/ProcessExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Management;\nusing System.Text;\n\nnamespace Klocman.Extensions\n{\n    public static class ProcessExtensions\n    {\n        public static IEnumerable<Process> GetChildProcesses(this Process process)\n        {\n            if (process == null) throw new ArgumentNullException(nameof(process));\n\n            var results = new List<Process>();\n            try\n            {\n                var searchString = $\"Select * From Win32_Process Where ParentProcessID={process.Id}\";\n                using (var mos = new ManagementObjectSearcher(searchString))\n                {\n                    foreach (var mo in mos.Get())\n                    {\n                        //var mo = (ManagementObject) o;\n                        Process resultProcess = null;\n                        try\n                        {\n                            resultProcess = Process.GetProcessById(Convert.ToInt32(mo[\"ProcessID\"]));\n                        }\n                        catch (ArgumentException)\n                        {\n                            // Process exited by now\n                        }\n            \n                        if (resultProcess != null)\n                            results.Add(resultProcess);\n                    }\n                }\n            }\n            catch (Exception e1)\n            {\n               Console.WriteLine(@\"Failed to GetChildProcesses using ManagementObjectSearcher: \" + e1.Message);\n\n                try\n                {\n                    var allProcesses = Process.GetProcesses()\n                        .Attempt(proc => new { proc, parent = ParentProcessUtilities.GetParentProcess(proc.Handle) })\n                        .Where(x => x.parent != null)\n                        .ToList();\n\n                    var newChildren = allProcesses.Where(p => p.parent == process).Select(x => x.proc).ToList();\n                    while (newChildren.Any())\n                    {\n                        results.AddRange(newChildren);\n                        newChildren = allProcesses.Where(p => newChildren.Contains(p.parent)).Select(x => x.proc).ToList();\n                    }\n                }\n                catch (Exception e2)\n                {\n                    Console.WriteLine(@\"Failed to GetChildProcesses using ParentProcessUtilities: \" + e2);\n                }\n            }\n\n            return results.Distinct();\n        }\n\n        public static string GetCommandLine(this Process process)\n        {\n            if (process == null) throw new ArgumentNullException(nameof(process));\n            if (process.MainModule?.FileName == null) throw new ArgumentException(\"null MainModule\");\n\n            var commandLine = new StringBuilder(process.MainModule.FileName);\n\n            commandLine.Append(' ');\n            using (var searcher = new ManagementObjectSearcher(\"SELECT CommandLine FROM Win32_Process WHERE ProcessId = \" + process.Id))\n            {\n                foreach (var @object in searcher.Get())\n                {\n                    commandLine.Append(@object[\"CommandLine\"]);\n                    commandLine.Append(' ');\n                }\n            }\n\n            return commandLine.ToString();\n        }\n\n        /// <summary>\n        ///     Stop the proces and optionally all of its child processes immidiately. Only the main process can throw exceptions.\n        /// </summary>\n        public static void Kill(this Process pr, bool killChildren)\n        {\n            if (killChildren)\n            {\n                foreach (var cp in pr.GetChildProcesses())\n                {\n                    try\n                    {\n                        cp.Kill();\n                    }\n                    catch\n                    {\n                        // Ignore failures, the process probably ended\n                    }\n                }\n            }\n            pr.Kill();\n        }\n\n        public static Process Start(this ProcessStartInfo startInfo)\n        {\n            return Process.Start(startInfo);\n        }\n\n        /// <summary>\n        ///     Start a new process using Process.Start,\n        ///     but don't return until this process and all of its child processes end.\n        /// </summary>\n        /// <returns>Exit code returned by the main process</returns>\n        public static int StartAndWait(this ProcessStartInfo startInfo)\n        {\n            var uninstaller = Process.Start(startInfo);\n            if (uninstaller == null) return -1;\n            uninstaller.WaitForExit();\n            while (true)\n            {\n                var children = uninstaller.GetChildProcesses();\n                var processes = children as IList<Process> ?? children.ToList();\n                if (processes.Any())\n                    processes.First().WaitForExit(1000);\n                else\n                    break;\n            }\n            return uninstaller.ExitCode;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/ReadOnlyDictionaryWrapper.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\n\nnamespace Klocman.Extensions\n{\n    public sealed class ReadOnlyDictionaryWrapper<TKey, TValue> : IDictionary<TKey, TValue>\n    {\n        private readonly IDictionary<TKey, TValue> _baseDictionary;\n\n        public ReadOnlyDictionaryWrapper(IDictionary<TKey, TValue> baseDictionary)\n        {\n            _baseDictionary = baseDictionary;\n        }\n\n        public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()\n        {\n            return _baseDictionary.GetEnumerator();\n        }\n\n        IEnumerator IEnumerable.GetEnumerator()\n        {\n            return GetEnumerator();\n        }\n\n        public void Add(KeyValuePair<TKey, TValue> item)\n        {\n            throw new InvalidOperationException();\n        }\n\n        public void Clear()\n        {\n            throw new InvalidOperationException();\n        }\n\n        public bool Contains(KeyValuePair<TKey, TValue> item)\n        {\n            return _baseDictionary.Contains(item);\n        }\n\n        public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)\n        {\n            _baseDictionary.CopyTo(array, arrayIndex);\n        }\n\n        public bool Remove(KeyValuePair<TKey, TValue> item)\n        {\n            throw new InvalidOperationException();\n        }\n\n        public int Count => _baseDictionary.Count;\n        public bool IsReadOnly => true;\n        public bool ContainsKey(TKey key)\n        {\n            return _baseDictionary.ContainsKey(key);\n        }\n\n        public void Add(TKey key, TValue value)\n        {\n            throw new InvalidOperationException();\n        }\n\n        public bool Remove(TKey key)\n        {\n            throw new InvalidOperationException();\n        }\n\n        public bool TryGetValue(TKey key, out TValue value)\n        {\n            return _baseDictionary.TryGetValue(key, out value);\n        }\n\n        public TValue this[TKey key]\n        {\n            get { return _baseDictionary[key]; }\n            set { throw new InvalidOperationException(); }\n        }\n\n        public ICollection<TKey> Keys => _baseDictionary.Keys;\n        public ICollection<TValue> Values => _baseDictionary.Values;\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/RegistryKeyExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Microsoft.Win32;\n\nnamespace Klocman.Extensions\n{\n    public static class RegistryKeyExtensions\n    {\n        /// <summary>\n        ///     Get only the name of this key, instead of the whole path\n        /// </summary>\n        public static string GetKeyName(this RegistryKey obj)\n        {\n            return obj.Name.Substring(obj.Name.LastIndexOf('\\\\') + 1);\n        }\n\n        /// <summary>\n        ///     Lazily open and return all subkeys.\n        /// </summary>\n        public static IEnumerable<RegistryKey> GetSubKeys(this RegistryKey obj, bool writable)\n        {\n            if (obj == null)\n                throw new NullReferenceException();\n\n            return obj.GetSubKeyNames().Select(x => obj.OpenSubKey(x, writable));\n        }\n        \n        public static IEnumerable<string> TryGetValueNames(this RegistryKey key)\n        {\n            try\n            {\n                return key.GetValueNames();\n            }\n            catch (IOException)\n            {\n                return Enumerable.Empty<string>();\n            }\n        }\n\n        /// <summary>\n        /// Get the specified value as a string. If the value is a string, then it is trimmed up until the \n        /// first null character to avoid buggy GetValue returning data after the end of string.\n        /// </summary>\n        public static string GetStringSafe(this RegistryKey key, string valueName)\n        {\n            var v = key.GetValue(valueName, null, RegistryValueOptions.None)?.ToString();\n\n            if (string.IsNullOrEmpty(v)) return v;\n\n            // Handle strings written with invalid (too large) lengths\n            // https://blogs.msdn.microsoft.com/oldnewthing/20040824-00/?p=38063/\n            var ni = v.IndexOf('\\0');\n            if (ni >= 0)\n                v = v.Substring(0, ni);\n\n            // Strip any other invalid data\n            return v.SafeNormalize();\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/RichTextBoxExtensions.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Drawing;\nusing System.Windows.Forms;\n\nnamespace Klocman.Extensions\n{\n    public static class RichTextBoxExtensions\n    {\n        /// <summary>\n        ///     Append text in specified color to the end of the document without interrupting the user.\n        /// </summary>\n        /// <param name=\"box\">Box to append text to</param>\n        /// <param name=\"text\">Text to append.</param>\n        /// <param name=\"color\">Color of the appended text.</param>\n        public static void AppendText(this RichTextBox box, string text, Color color)\n        {\n            box.SuspendLayout();\n\n            // Backup current state\n            var start = box.SelectionStart;\n            var length = box.SelectionLength;\n            var prevColor = box.SelectionColor;\n\n            // Append the text\n            box.SelectionStart = box.TextLength;\n            box.SelectionLength = 0;\n            box.SelectionColor = color;\n            box.AppendText(text);\n\n            // Restore state\n            box.SelectionStart = start;\n            box.SelectionLength = length;\n            box.SelectionColor = prevColor;\n\n            box.ResumeLayout();\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/StreamExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.IO;\n\nnamespace Klocman.Extensions\n{\n    public static class StreamExtensions\n    {\n        /// <summary>\n        ///     Alternative to Net4 CopyTo\n        /// </summary>\n        /// <param name=\"source\"></param>\n        /// <param name=\"destination\"></param>\n        /// <returns></returns>\n        public static long CopyTo(this Stream source, Stream destination)\n        {\n            var buffer = new byte[2048];\n            int bytesRead;\n            long totalBytes = 0;\n            while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0)\n            {\n                destination.Write(buffer, 0, bytesRead);\n                totalBytes += bytesRead;\n            }\n            return totalBytes;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/StringExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Drawing;\nusing System.Globalization;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Text.RegularExpressions;\nusing Klocman.Tools;\n\nnamespace Klocman.Extensions\n{\n    public static class StringExtensions\n    {\n        /// <summary>\n        ///     Reverse the string using the specified pattern. The string is split into parts corresponding\n        ///     to the pattern's values, then each of the parts is reversed and finally they are joined back.\n        ///     Example: String(\"Tester\") Pattern(1,3,2) -> T est er -> T tse re -> Result(\"Ttsere\")\n        /// </summary>\n        /// <param name=\"value\">String to reverse</param>\n        /// <param name=\"pattern\">\n        ///     Pattern used to reverse the string.\n        ///     Warning: The pattern has to have identical total length to the length of the string.\n        /// </param>\n        public static string Reverse(this string value, int[] pattern)\n        {\n            if (value == null)\n                throw new NullReferenceException();\n            if (pattern == null)\n                throw new ArgumentNullException(nameof(pattern));\n            if (value.Length != pattern.Sum())\n                throw new ArgumentException(\n                    \"Pattern doesn't match the string. Sum of the pattern's parts has to have length equal to the length the string.\");\n\n            var returnString = new StringBuilder();\n\n            var index = 0;\n\n            // Iterate over the reversal pattern\n            foreach (var length in pattern)\n            {\n                // Reverse the sub-string and append it\n                returnString.Append(value.Substring(index, length).Reverse().ToArray());\n\n                // Increment our posistion in the string\n                index += length;\n            }\n\n            return returnString.ToString();\n        }\n\n        public static string ToHexString(this byte[] ba)\n        {\n            var hex = BitConverter.ToString(ba);\n            return hex.Replace(\"-\", \"\");\n        }\n\n        #region Methods\n\n        /// <summary>\n        ///     Split string on newlines\n        /// </summary>\n        public static string[] SplitNewlines(this string value, StringSplitOptions options)\n        {\n            return value.Split(new[] { \"\\r\\n\", \"\\n\" }, options);\n        }\n\n        /// <summary>\n        ///     Append supplied string to this string and return the result.\n        /// </summary>\n        public static string Append(this string value, string append)\n        {\n            return String.Concat(value, append); // value + append;\n        }\n\n        /// <summary>\n        ///     Append supplied strings to this string and return the result.\n        /// </summary>\n        public static string Append(this string value, params string[] append)\n        {\n            return String.Concat(value, String.Concat(append)); // value + append;\n        }\n\n        /// <summary>\n        ///     Append supplied string to the base string if expression is true and return the result.\n        /// </summary>\n        /// <param name=\"value\"></param>\n        /// <param name=\"expression\">Appension will happen only if expression is equal to true</param>\n        /// <param name=\"append\">Strings to append, if more than one is supplied they will be concetrated using string.Concat</param>\n        /// <returns>Base string with or without the appended extra string</returns>\n        public static string AppendIf(this string value, bool expression, params string[] append)\n        {\n            return expression ? String.Concat(value, String.Concat(append)) : value;\n        }\n\n        public static StringBuilder AppendIf(this StringBuilder value, bool expression, string append)\n        {\n            if (expression)\n                value.Append(append);\n            return value;\n        }\n\n        public static StringBuilder AppendIfFormat(this StringBuilder value, bool expression, string format,\n            params object[] args)\n        {\n            if (expression)\n                value.AppendFormat(format, args);\n            return value;\n        }\n\n        /// <exception cref=\"ArgumentException\">\n        ///     <paramref name=\"comparisonType\" /> is not a valid\n        ///     <see cref=\"T:System.StringComparison\" /> value.\n        /// </exception>\n        /// <exception cref=\"ArgumentNullException\">The value of 'value' cannot be null. </exception>\n        public static bool Contains(this string value, string str, StringComparison comparisonType)\n        {\n            if (value == null)\n                throw new ArgumentNullException(nameof(value));\n\n            return value.Contains(str, comparisonType);\n        }\n\n        /// <summary>\n        ///     Check if base string contains all of the supplied strings.\n        /// </summary>\n        /// <param name=\"s\"></param>\n        /// <param name=\"items\">Items to be compared to the base string</param>\n        /// <param name=\"comparisonType\">Rules of the comparison</param>\n        /// <returns>True if any of the items were found in the base string, else false</returns>\n        public static bool ContainsAll(this string s, IEnumerable<string> items, StringComparison comparisonType)\n        {\n            return items.All(item => s.Contains(item, comparisonType));\n        }\n\n        /// <summary>\n        ///     Check if base char array contains any of the supplied chars.\n        /// </summary>\n        /// <param name=\"s\"></param>\n        /// <param name=\"items\">Chars to be compared to the base array</param>\n        /// <returns>True if any of the items were found in the base string, else false</returns>\n        public static bool ContainsAny(this IEnumerable<char> s, IEnumerable<char> items)\n        {\n            return items.Any(s.Contains);\n        }\n\n        /// <summary>\n        ///     Check if base string contains any of the supplied strings.\n        /// </summary>\n        /// <param name=\"s\"></param>\n        /// <param name=\"items\">Items to be compared to the base string</param>\n        /// <param name=\"comparisonType\">Rules of the comparison</param>\n        /// <returns>True if any of the items were found in the base string, else false</returns>\n        public static bool ContainsAny(this string s, IEnumerable<string> items, StringComparison comparisonType)\n        {\n            return items.Any(item => s.Contains(item, comparisonType));\n        }\n\n        /// <summary>\n        ///     Check if base string starts with any of the supplied strings.\n        /// </summary>\n        /// <param name=\"s\"></param>\n        /// <param name=\"items\">Items to be compared to the base string</param>\n        /// <param name=\"comparisonType\">Rules of the comparison</param>\n        /// <returns>True if any of the items were found in the base string, else false</returns>\n        public static bool StartsWithAny(this string s, IEnumerable<string> items, StringComparison comparisonType)\n        {\n            return items.Any(item => s.StartsWith(item, comparisonType));\n        }\n\n        /// <summary>\n        ///     Remove any non-ascii characters and replace them with their ascii counterparts.\n        ///     Will remove most accents (for example ć -> c). IF no valid ASCII counterpart is found the char is replaced by \"?\"\n        /// </summary>\n        /// <returns>ASCII compliant string</returns>\n        public static string DownconvertToAscii(this string input)\n        {\n            var tempContentsUnicode = Encoding.GetEncoding(1251).GetBytes(input);\n            return Encoding.ASCII.GetString(tempContentsUnicode);\n        }\n\n        /// <summary>\n        ///     Trim this string from all whitespaces and ending pronounciations (eg. '.' ','),\n        ///     then remove any of the supplied items from the end of the resulting string.\n        ///     This method is greedy, it will remove the same item multiple times if possible.\n        ///     After every successful removal whitespaces and ending pronounciations are trimmed again.\n        /// </summary>\n        /// <param name=\"s\"></param>\n        /// <param name=\"trimmers\">Items to be trimmed from base string</param>\n        /// <param name=\"comparisonType\">How the items are compared to the base string</param>\n        /// <returns>Trimmed version of the base string</returns>\n        public static string ExtendedTrimEndAny(this string s, IEnumerable<string> trimmers,\n            StringComparison comparisonType)\n        {\n            if (String.IsNullOrEmpty(s))\n                return String.Empty;\n\n            var trimmerList = trimmers as IList<string> ?? trimmers.ToList();\n            var resultStr = s.Trim().Trim(',', '.', ' ');\n            var rerun = true;\n            while (rerun)\n            {\n                rerun = false;\n                foreach (var trimmer in trimmerList)\n                {\n                    if (!resultStr.EndsWith(trimmer, comparisonType)) continue;\n\n                    var cutNum = resultStr.Length - trimmer.Length;\n\n                    // Exit the loop quickly if resultStr contains only the trimmer. Also checks for negative lenght.\n                    if (cutNum <= 0)\n                        return String.Empty;\n\n                    resultStr = resultStr.Substring(0, cutNum);\n                    resultStr = resultStr.Trim().Trim(',', '.', ' ');\n                    rerun = true;\n                    break;\n                }\n            }\n            return resultStr;\n        }\n\n        /// <summary>\n        /// Trim all whitespace and specified strings from start and end of this string.\n        /// </summary>\n        public static string ExtendedTrim(this string s, IEnumerable<string> trimmers,\n            StringComparison comparisonType)\n        {\n            if (String.IsNullOrEmpty(s))\n                return String.Empty;\n\n            var trimmerList = trimmers as IList<string> ?? trimmers.ToList();\n            var resultStr = s.Trim();\n\n            bool rerun;\n            do\n            {\n                rerun = false;\n                foreach (var trimmer in trimmerList)\n                {\n                    if (resultStr.EndsWith(trimmer, comparisonType))\n                    {\n                        var cutNum = resultStr.Length - trimmer.Length;\n\n                        if (cutNum <= 0)\n                            return String.Empty;\n\n                        resultStr = resultStr.Substring(0, cutNum).Trim();\n                        rerun = true;\n                    }\n\n                    if (resultStr.StartsWith(trimmer, comparisonType))\n                    {\n                        var cutNum = resultStr.Length - trimmer.Length;\n\n                        if (cutNum <= 0)\n                            return String.Empty;\n\n                        resultStr = resultStr.Substring(trimmer.Length).Trim();\n                        rerun = true;\n                    }\n\n                    if (rerun)\n                        break;\n                }\n            }\n            while (rerun);\n\n            return resultStr;\n        }\n\n        /// <summary>\n        ///     Return index of first element found in this string.\n        /// </summary>\n        /// <param name=\"str\">Target string</param>\n        /// <param name=\"chars\">Chars to look for</param>\n        /// <param name=\"startIndex\">Index to start the search at</param>\n        /// <returns>Index of first found element or -1 if none were found</returns>\n        public static int IndexOfAny(this string str, IEnumerable<char> chars, int startIndex)\n        {\n            var result = -1;\n            foreach (var c in chars)\n            {\n                var i = str.IndexOf(c, startIndex);\n                if (i >= 0 && (i < result || result < 0))\n                    result = i;\n            }\n            return result;\n        }\n\n        /// <summary>\n        ///     Same as inverted string.IsNullOrEmpty\n        /// </summary>\n        /// <param name=\"input\"></param>\n        /// <returns></returns>\n        public static bool IsNotEmpty(this string input)\n        {\n            return !String.IsNullOrEmpty(input);\n        }\n\n        public static string RemoveInvalidPathChars(this string value)\n        {\n            if (value == null)\n                return String.Empty;\n            return StringTools.InvalidPathChars.Aggregate(value,\n                (current, str) => current.Replace(str.ToString(), String.Empty));\n        }\n\n        /// <summary>\n        ///     Remove all possible newline characters in a greedy way.\n        /// </summary>\n        public static string RemoveNewLines(this string value)\n        {\n            if (value == null)\n                return String.Empty;\n\n            return StringTools.NewLineChars.Aggregate(value, (current, str) => current.Replace(str, String.Empty));\n        }\n\n        /// <summary>\n        ///     Removes all non-word characters using Regex (^\\w).\n        /// </summary>\n        /// <returns>Stripped string</returns>\n        public static string RemoveSpecialCharacters(this string value)\n        {\n            if (value == null)\n                return String.Empty;\n            return Regex.Replace(value, @\"[^\\w ]\", String.Empty); //Path.GetInvalidFileNameChars()\n        }\n\n        /// <summary>\n        ///     Remove diacritics (accents) from a string (for example ć -> c)\n        /// </summary>\n        /// <returns>ASCII compliant string</returns>\n        public static string StripAccents(this string input)\n        {\n            var text = input.SafeNormalize(NormalizationForm.FormD);\n            var chars =\n                text.Where(c => CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark).ToArray();\n            return new string(chars).SafeNormalize(NormalizationForm.FormC);\n        }\n\n        /// <summary>\n        ///     Convert to - camelCase.\n        /// </summary>\n        public static string ToCamelCase(this string baseStr)\n        {\n            if (String.IsNullOrEmpty(baseStr))\n                return String.Empty;\n\n            baseStr = baseStr.ToPascalCase();\n            return baseStr.Substring(0, 1).ToLowerInvariant() + baseStr.Substring(1);\n        }\n\n        /// <summary>\n        ///     Convert to - Normal case\n        /// </summary>\n        public static string ToNormalCase(this string baseStr)\n        {\n            if (String.IsNullOrEmpty(baseStr))\n                return String.Empty;\n\n            baseStr = baseStr.ToTitleCase().ToLowerInvariant();\n\n            return baseStr.Substring(0, 1).ToUpperInvariant() + baseStr.Substring(1);\n        }\n\n        /// <summary>\n        ///     Convert to - PascalCase.\n        /// </summary>\n        public static string ToPascalCase(this string baseStr)\n        {\n            baseStr = baseStr?.Trim();\n            if (String.IsNullOrEmpty(baseStr))\n                return String.Empty;\n\n            if (!baseStr.Contains(\" \")) return baseStr;\n\n            baseStr = CultureInfo.GetCultureInfo(\"en-US\").TextInfo.ToTitleCase(baseStr);\n            return String.Join(String.Empty, baseStr.Split(new char[] { }, StringSplitOptions.RemoveEmptyEntries));\n        }\n\n        /// <summary>\n        ///     Calculate a StringFormat object from supplied ContentAlignment.\n        /// </summary>\n        public static StringFormat ToStringFormat(this ContentAlignment a)\n        {\n            var cFormat = new StringFormat();\n            var lNum = (int)Math.Log((double)a, 2);\n            cFormat.LineAlignment = (StringAlignment)(lNum / 4);\n            cFormat.Alignment = (StringAlignment)(lNum % 4);\n            cFormat.Trimming = StringTrimming.None;\n            return cFormat;\n        }\n\n        /// <summary>\n        ///     Convert to - Title Case\n        ///     Capitalize the first character and add a space before each capitalized letter (except the first character).\n        /// </summary>\n        public static string ToTitleCase(this string baseStr)\n        {\n            if (String.IsNullOrEmpty(baseStr))\n                return String.Empty;\n\n            const string pattern = @\"(?<=\\w)(?=[A-Z])\";\n            baseStr = Regex.Replace(baseStr.ToPascalCase(), pattern, \" \", RegexOptions.None);\n            return baseStr.Substring(0, 1).ToUpperInvariant() + baseStr.Substring(1);\n        }\n\n        /// <summary>\n        /// Safe version of normalize that doesn't crash on invalid code points in string.\n        /// Instead the points are replaced with question marks.\n        /// </summary>\n        public static string SafeNormalize(this string input, NormalizationForm normalizationForm = NormalizationForm.FormC)\n        {\n            try\n            {\n                return StringTools.ReplaceNonCharacters(input, '?').Normalize(normalizationForm);\n            }\n            catch (ArgumentException e)\n            {\n                throw new InvalidDataException(\"String contains invalid characters. Data: \" + Encoding.UTF32.GetBytes(input).ToHexString(), e);\n            }\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/TimeExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing Klocman.Properties;\n\nnamespace Klocman.Extensions\n{\n    public static class TimeExtensions\n    {\n        /// <summary>\n        ///     Get fuzzy time string as spoken at present moment when referring to this DateTime.\n        ///     For example 6 years ago, 3 months ago, Just now.\n        /// </summary>\n        public static string ToFuzzyTimeSinceString(this DateTime source)\n        {\n            return ToFuzzyTimeSinceString(source, DateTime.Now);\n        }\n\n        /// <summary>\n        ///     Get fuzzy time string as spoken at supplied time (now) when referring to this DateTime.\n        ///     For example 6 years ago, 3 months ago, Just now.\n        /// </summary>\n        /// <param name=\"past\">Point in time that happened in the past</param>\n        /// <param name=\"now\">From which point to speak about this DateTime</param>\n        public static string ToFuzzyTimeSinceString(this DateTime past, DateTime now)\n        {\n            var difference = now.Subtract(past);\n            var years = difference.Days/365; //no leap year accounting\n\n            if (years > 0)\n            {\n                if (years == 1)\n                    return Localisation.ToFuzzyTimeSinceString_Years_Single;\n                return string.Format(Localisation.ToFuzzyTimeSinceString_Years_Since, years);\n            }\n\n            var months = (difference.Days%365)/30; //naive guess at month size\n\n            if (months > 0)\n            {\n                if (months == 1)\n                    return Localisation.ToFuzzyTimeSinceString_Months_Single;\n                return string.Format(Localisation.ToFuzzyTimeSinceString_Months_Since, months);\n            }\n\n            if (difference.Days > 0)\n            {\n                if (difference.Days == 1)\n                    return Localisation.ToFuzzyTimeSinceString_Days_Single;\n                return string.Format(Localisation.ToFuzzyTimeSinceString_Days_Since, difference.Days);\n            }\n\n            if (difference.Hours > 0)\n            {\n                if (difference.Hours == 1)\n                    return Localisation.ToFuzzyTimeSinceString_Hours_Single;\n                return string.Format(Localisation.ToFuzzyTimeSinceString_Hours_Since, difference.Hours);\n            }\n\n            if (difference.Minutes > 0)\n            {\n                if (difference.Minutes == 1)\n                    return Localisation.ToFuzzyTimeSinceString_Minutes_Single;\n                return string.Format(Localisation.ToFuzzyTimeSinceString_Minutes_Since, difference.Minutes);\n            }\n\n            return Localisation.ToFuzzyTimeSinceString_JustNow;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Extensions/WebExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Specialized;\nusing System.Linq;\nusing System.Net;\nusing System.Text;\n\nnamespace Klocman.Extensions\n{\n    public static class WebExtensions\n    {\n        /// <summary>\n        /// http://stackoverflow.com/a/30049848/4309247\n        /// </summary>\n        public static Encoding GetEncodingFrom(NameValueCollection responseHeaders, Encoding defaultEncoding = null)\n        {\n            if (responseHeaders == null)\n                throw new ArgumentNullException(\"responseHeaders\");\n\n            //Note that key lookup is case-insensitive\n            var contentType = responseHeaders[\"Content-Type\"];\n            if (contentType == null)\n                return defaultEncoding;\n\n            var contentTypeParts = contentType.Split(';');\n            if (contentTypeParts.Length <= 1)\n                return defaultEncoding;\n\n            var charsetPart =\n                contentTypeParts.Skip(1).FirstOrDefault(\n                    p => p.TrimStart().StartsWith(\"charset\", StringComparison.InvariantCultureIgnoreCase));\n            if (charsetPart == null)\n                return defaultEncoding;\n\n            var charsetPartParts = charsetPart.Split('=');\n            if (charsetPartParts.Length != 2)\n                return defaultEncoding;\n\n            var charsetName = charsetPartParts[1].Trim();\n            if (charsetName == \"\")\n                return defaultEncoding;\n\n            try\n            {\n                return Encoding.GetEncoding(charsetName);\n            }\n            catch (ArgumentException ex)\n            {\n                throw new InvalidOperationException(\"The server returned data in an unknown encoding: \" + charsetName, ex);\n            }\n        }\n\n        public static string DownloadStringAwareOfEncoding(this WebClient webClient, Uri uri)\n        {\n            var rawData = webClient.DownloadData(uri);\n            var encoding = GetEncodingFrom(webClient.ResponseHeaders, Encoding.UTF8);\n            return encoding.GetString(rawData);\n        }\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Extensions/XmlExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.IO;\nusing System.Text;\nusing System.Xml;\nusing System.Xml.Linq;\nusing System.Xml.Serialization;\n\nnamespace Klocman.Extensions\n{\n    public static class XmlExtensions\n    {\n        /// <summary>\n        ///     Get element with supplied name. If the element doesn't exist crate it.\n        /// </summary>\n        public static XElement GetOrCreateElement(this XElement baseElement, XName name)\n        {\n            var element = baseElement.Element(name);\n            if (element == null)\n            {\n                element = new XElement(name);\n                baseElement.Add(element);\n            }\n            return element;\n        }\n\n        public static string Serialize(this XmlSerializer serializer, object value, bool indent = false)\n        {\n            if (value == null) return null;\n\n            var settings = new XmlWriterSettings\n            {\n                // no BOM in a .NET string\n                Encoding = new UnicodeEncoding(false, false),\n                Indent = indent,\n                OmitXmlDeclaration = true\n            };\n\n            using (var textWriter = new StringWriter())\n            {\n                using (var xmlWriter = XmlWriter.Create(textWriter, settings))\n                {\n                    serializer.Serialize(xmlWriter, value);\n                }\n                return textWriter.ToString();\n            }\n        }\n\n        public static object Deserialize(this XmlSerializer serializer, string xml)\n        {\n            if (string.IsNullOrEmpty(xml)) return null;\n\n            var settings = new XmlReaderSettings();\n\n            using (var textReader = new StringReader(xml))\n            {\n                using (var xmlReader = XmlReader.Create(textReader, settings))\n                {\n                    return serializer.Deserialize(xmlReader);\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/CmbBasicSettings.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Drawing;\nusing System.Windows.Forms;\n\nnamespace Klocman.Forms\n{\n    public sealed class CmbBasicSettings\n    {\n        public CmbBasicSettings(string title, string largeHeading, string smallExplanation, Icon iconSet,\n            string rightButton)\n            : this(title, largeHeading, smallExplanation, iconSet, null, null,\n                rightButton)\n        {\n        }\n\n        public CmbBasicSettings(string title, string largeHeading, string smallExplanation, Icon iconSet,\n            string middleButton, string rightButton)\n            : this(title, largeHeading, smallExplanation, iconSet, null, middleButton,\n                rightButton)\n        {\n        }\n\n        /*\n        public CustomMessageBoxBasicSettings(string title, string largeHeading, string smallExplanation, Icon iconSet,\n            string leftButton, string middleButton, string rightButton):this(title, largeHeading, smallExplanation, iconSet, leftButton, middleButton, rightButton){}\n\n        public CustomMessageBoxBasicSettings(string title, string largeHeading, string smallExplanation, Image iconSet,\n            string rightButton):this(title, largeHeading, smallExplanation, iconSet, null, null,\n                rightButton) { }\n\n        public CustomMessageBoxBasicSettings(string title, string largeHeading, string smallExplanation, Image iconSet,\n            string middleButton, string rightButton):this(title, largeHeading, smallExplanation, iconSet, null, middleButton,\n                rightButton) { }\n        */\n\n        /// <summary>\n        ///     Create a special dialog in the style of Windows XP or Vista. A dialog has a custom icon, an optional large\n        ///     title in the form, body text, window text, and one or two custom-labeled buttons.\n        /// </summary>\n        /// <param name=\"title\">This string will be displayed in the system window frame.</param>\n        /// <param name=\"largeHeading\">This is the first string to appear in the dialog. It will be most prominent.</param>\n        /// <param name=\"smallExplanation\">\n        ///     This string appears either under the big string, or is null, which means it is\n        ///     not displayed at all.\n        /// </param>\n        /// <param name=\"leftButton\">\n        ///     This is the left button, typically the \"accept\" button--label it with an\n        ///     action verb (or \"OK\").\n        /// </param>\n        /// <param name=\"middleButton\"></param>\n        /// <param name=\"rightButton\">The right button--typically \"Cancel\", but could be \"No\".</param>\n        /// <param name=\"iconSet\">An image to be displayed on the left side of the dialog. Should be 32 x 32 pixels.</param>\n        public CmbBasicSettings(string title, string largeHeading, string smallExplanation, Icon iconSet,\n            string leftButton, string middleButton, string rightButton)\n        {\n            Title = title;\n            LargeHeading = largeHeading;\n            SmallExplanation = smallExplanation;\n            LeftButton = leftButton;\n            MiddleButton = middleButton;\n            RightButton = rightButton;\n            IconSet = iconSet;\n\n            StartPosition = FormStartPosition.CenterParent;\n            AlwaysOnTop = false;\n        }\n\n        public bool AlwaysOnTop { get; set; }\n        //public Image IconSet { get; private set; }\n        public Icon IconSet { get; }\n        public string LargeHeading { get; }\n        public string LeftButton { get; }\n        public string MiddleButton { get; }\n        public string RightButton { get; }\n        public string SmallExplanation { get; }\n        //public Form Parent { get; set; }\n        public FormStartPosition StartPosition { get; set; }\n        public string Title { get; }\n        public Icon WindowIcon { get; set; }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/CmbCheckboxSettings.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nnamespace Klocman.Forms\n{\n    public sealed class CmbCheckboxSettings\n    {\n        public CmbCheckboxSettings(string text)\n            : this(text, false)\n        {\n        }\n\n        public CmbCheckboxSettings(string text, bool initialState)\n        {\n            Text = text;\n            InitialState = initialState;\n            Result = null;\n        }\n\n        public bool DisableLeftButton { get; set; }\n        public bool DisableMiddleButton { get; set; }\n        public bool DisableRightButton { get; set; }\n        public bool InitialState { get; }\n\n        /// <summary>\n        ///     Resulting value of the checkbox. Null if not yet set.\n        /// </summary>\n        public bool? Result { get; internal set; }\n\n        public string Text { get; }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/CmbHyperlinkSettings.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\n\nnamespace Klocman.Forms\n{\n    public sealed class CmbHyperlinkSettings\n    {\n        public CmbHyperlinkSettings(string text, Action clickAction)\n        {\n            Text = text;\n            ClickAction = clickAction;\n        }\n\n        public Action ClickAction { get; private set; }\n        public string Text { get; private set; }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/CustomMessageBox.cs",
    "content": "﻿using System;\nusing System.Drawing;\nusing System.Linq;\nusing System.Windows.Forms;\nusing Klocman.Extensions;\nusing Klocman.Tools;\n\nnamespace Klocman.Forms\n{\n    public sealed partial class CustomMessageBox : Form\n    {\n        public enum PressedButton\n        {\n            None,\n            Right,\n            Middle,\n            Left\n        }\n\n        private readonly CmbCheckboxSettings _checkboxSettings;\n        private readonly Icon _overrideIcon;\n        private int _topWidth, _topHeigth;\n\n        private CustomMessageBox(CmbBasicSettings settings, CmbCheckboxSettings checkboxSettings)\n        {\n            Opacity = 0;\n\n            Result = PressedButton.None;\n            if (SystemFonts.MessageBoxFont != null)\n                Font = SystemFonts.MessageBoxFont;\n            ForeColor = SystemColors.WindowText;\n\n            InitializeComponent();\n\n            StartPosition = settings.StartPosition;\n\n            if (checkboxSettings != null)\n            {\n                _checkboxSettings = checkboxSettings;\n\n                if (checkboxSettings.Text.IsNotEmpty())\n                    checkBox1.Text = checkboxSettings.Text;\n                checkBox1.Checked = checkboxSettings.InitialState;\n                checkBox1.Visible = true;\n            }\n            else\n            {\n                checkBox1.Visible = false;\n            }\n\n            if (!string.IsNullOrEmpty(settings.SmallExplanation) && SystemFonts.MessageBoxFont != null)\n            {\n                if (SystemFonts.MessageBoxFont.FontFamily.Name == \"Segoe UI\"\n                    && SystemFonts.MessageBoxFont.FontFamily.IsStyleAvailable(FontStyle.Regular))\n                {\n                    // use the special, windows-vista font style if we are running vista (using Segoe UI).\n                    label1.ForeColor = Color.FromArgb(0, 51, 153); // [ColorTranslator.FromHtml(\"#003399\")]\n                    label1.Font = new Font(\"Segoe UI\", 12.0f, FontStyle.Regular, GraphicsUnit.Point);\n                }\n                else\n                {\n                    // might want to special case the old, MS Sans Serif font.\n                    // use the regular font but bold it for XP, etc.\n                    label1.Font = new Font(SystemFonts.MessageBoxFont.FontFamily.Name, 8.0f,\n                        FontStyle.Bold, GraphicsUnit.Point);\n                }\n            }\n\n            Text = settings.Title;\n            label1.Text = settings.LargeHeading;\n            label2.Text = string.IsNullOrEmpty(settings.SmallExplanation) ? string.Empty : settings.SmallExplanation;\n\n            if (!string.IsNullOrEmpty(settings.LeftButton))\n            {\n                // if we have the button, we are fine\n                buttonLeft.Text = settings.LeftButton;\n            }\n            else\n            {\n                // move settings to right button if we don't have the left button\n                AcceptButton = buttonMiddle;\n                buttonLeft.Visible = false;\n                panelLeft.Visible = false;\n            }\n\n            if (!string.IsNullOrEmpty(settings.MiddleButton))\n            {\n                // if we have the button, we are fine\n                buttonMiddle.Text = settings.MiddleButton;\n            }\n            else\n            {\n                // move settings to right button if we don't have the left button\n                AcceptButton = buttonRight;\n                buttonMiddle.Visible = false;\n                panelMiddle.Visible = false;\n            }\n\n            // this button must always be present\n            buttonRight.Text = settings.RightButton;\n\n            if (settings.IconSet != null)\n            {\n                try\n                {\n                    pictureBox1.Image = settings.IconSet.ToBitmap();\n                    settings.IconSet.PlayCorrespondingSystemSound();\n                }\n                catch (SystemException e)\n                {\n                    Console.WriteLine(e);\n                }\n            }\n\n            TopMost = settings.AlwaysOnTop;\n\n            _overrideIcon = settings.WindowIcon;\n        }\n\n        internal bool Checked => checkBox1.Checked;\n\n        public PressedButton Result { get; private set; }\n\n        private void buttonLeft_Click(object sender, EventArgs e)\n        {\n            Result = PressedButton.Left;\n            Close();\n        }\n\n        private void buttonMiddle_Click(object sender, EventArgs e)\n        {\n            Result = PressedButton.Middle;\n            Close();\n        }\n\n        private void buttonRight_Click(object sender, EventArgs e)\n        {\n            Result = PressedButton.Right;\n            Close();\n        }\n\n        private void checkBox1_CheckedChanged(object sender, EventArgs e)\n        {\n            if (_checkboxSettings != null)\n            {\n                var enable = !checkBox1.Checked;\n\n                if (_checkboxSettings.DisableRightButton)\n                    buttonRight.Enabled = enable;\n\n                if (_checkboxSettings.DisableMiddleButton)\n                    buttonMiddle.Enabled = enable;\n\n                if (_checkboxSettings.DisableLeftButton)\n                    buttonLeft.Enabled = enable;\n            }\n        }\n\n        private void CustomMessageBox_SizeChanged(object sender, EventArgs e)\n        {\n            // Needed to prevent the size from shrinking by itself\n            Width = _topWidth;\n            Height = _topHeigth;\n        }\n\n        private void flowLayoutPanel1_SizeChanged(object sender, EventArgs e)\n        {\n            SetHeight();\n            SetWidth();\n        }\n\n        protected override void OnShown(EventArgs e)\n        {\n            base.OnShown(e);\n\n            if (_overrideIcon != null)\n                Icon = _overrideIcon;\n            else if (ParentForm?.Icon != null)\n                Icon = ParentForm.Icon;\n            else\n            {\n                try\n                {\n                    Icon = ProcessTools.GetIconFromEntryExe();\n                }\n                catch\n                {\n                    /* Fall back to the default icon */\n                }\n            }\n\n            SetHeight();\n            SetWidth();\n\n            if (StartPosition == FormStartPosition.CenterParent && Owner != null && Owner.Visible)\n                this.CenterToForm(Owner);\n\n            Opacity = 1;\n        }\n\n        private void SetHeight()\n        {\n            var border = Height - ClientSize.Height;\n            _topHeigth = Math.Max(panelButtons.Location.Y + panelButtons.Height + border, _topHeigth);\n            Height = _topHeigth;\n        }\n\n        private void SetWidth()\n        {\n            var border = Width - ClientSize.Width;\n            var buttonWidth = panelButtons.Controls.Cast<Control>().Where(x => x.Visible).Sum(x => x.Width)\n                              + panelButtons.Padding.Left + panelButtons.Padding.Right + border;\n            _topWidth = Math.Max(buttonWidth, _topWidth);\n            Width = _topWidth;\n        }\n\n        public static CustomMessageBox Show(Form owner, CmbBasicSettings settings)\n        {\n            return Show(owner, settings, null);\n        }\n\n        public static CustomMessageBox Show(Form owner, CmbBasicSettings settings, CmbCheckboxSettings checkboxSettings)\n        {\n            if (owner.IsDisposed || owner.Disposing || !owner.Visible) owner = null;\n\n            var dialog = new CustomMessageBox(settings, checkboxSettings) { Owner = owner }; //, hyperlinkSettings))\n\n            dialog.Show(owner);\n\n            if (dialog.Result != PressedButton.None && checkboxSettings != null)\n                checkboxSettings.Result = dialog.Checked;\n\n            return dialog;\n        }\n\n        public static PressedButton ShowDialog(Form owner, CmbBasicSettings settings,\n            CmbCheckboxSettings checkboxSettings)\n        {\n            return ShowDialog(owner, settings, checkboxSettings, null);\n        }\n\n        public static PressedButton ShowDialog(Form owner, CmbBasicSettings settings,\n            CmbHyperlinkSettings hyperlinkSettings)\n        {\n            return ShowDialog(owner, settings, null, hyperlinkSettings);\n        }\n\n        public static PressedButton ShowDialog(Form owner, CmbBasicSettings settings)\n        {\n            var result = PressedButton.None;\n\n            void ShowDialogLocal() { result = ShowDialog(owner, settings, null, null); }\n\n            if (owner != null)\n                owner.SafeInvoke(ShowDialogLocal);\n            else\n                ShowDialogLocal();\n\n            return result;\n        }\n\n        public static PressedButton ShowDialog(Form owner, CmbBasicSettings settings,\n            CmbCheckboxSettings checkboxSettings,\n            CmbHyperlinkSettings hyperlinkSettings)\n        {\n            using (var dialog = new CustomMessageBox(settings, checkboxSettings)) //, hyperlinkSettings))\n            {\n                if (owner != null && !owner.IsDisposed && !owner.Disposing)\n                {\n                    if (owner.Visible)\n                    {\n                        dialog.Owner = owner;\n                        owner.Select();\n                        dialog.ShowDialog(owner);\n                    }\n                    else\n                    {\n                        dialog.CenterToForm(owner);\n                        dialog.ShowDialog();\n                    }\n                }\n                else\n                {\n                    dialog.StartPosition = FormStartPosition.CenterScreen;\n                    dialog.ShowDialog();\n                }\n\n                if (dialog.Result != PressedButton.None && checkboxSettings != null)\n                    checkboxSettings.Result = dialog.Checked;\n\n                return dialog.Result;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/CustomMessageBox.designer.cs",
    "content": "﻿namespace Klocman.Forms\n{\n    using System.ComponentModel;\n    using System.Windows.Forms;\n\n    sealed partial class CustomMessageBox\n    {\n        #region Fields\n\n        private Button buttonLeft;\n        private Button buttonMiddle;\n        private Button buttonRight;\n        private CheckBox checkBox1;\n\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private IContainer components = null;\n        private Label label1;\n        private Label label2;\n        private PictureBox pictureBox1;\n\n        #endregion Fields\n\n        #region Methods\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.label1 = new System.Windows.Forms.Label();\n            this.buttonRight = new System.Windows.Forms.Button();\n            this.buttonLeft = new System.Windows.Forms.Button();\n            this.label2 = new System.Windows.Forms.Label();\n            this.buttonMiddle = new System.Windows.Forms.Button();\n            this.checkBox1 = new System.Windows.Forms.CheckBox();\n            this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\n            this.panelButtons = new System.Windows.Forms.Panel();\n            this.panel1 = new System.Windows.Forms.Panel();\n            this.panelLeft = new System.Windows.Forms.Panel();\n            this.panelMiddle = new System.Windows.Forms.Panel();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            this.flowLayoutPanel1.SuspendLayout();\n            this.panelButtons.SuspendLayout();\n            this.SuspendLayout();\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.BackColor = System.Drawing.SystemColors.Window;\n            this.pictureBox1.Location = new System.Drawing.Point(25, 18);\n            this.pictureBox1.Margin = new System.Windows.Forms.Padding(3, 11, 8, 3);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(32, 32);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\n            this.pictureBox1.TabIndex = 0;\n            this.pictureBox1.TabStop = false;\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.flowLayoutPanel1.SetFlowBreak(this.label1, true);\n            this.label1.Location = new System.Drawing.Point(68, 0);\n            this.label1.Name = \"label1\";\n            this.label1.Padding = new System.Windows.Forms.Padding(0, 12, 0, 12);\n            this.label1.Size = new System.Drawing.Size(85, 37);\n            this.label1.TabIndex = 2;\n            this.label1.Text = \"Dialog message.\";\n            // \n            // buttonRight\n            // \n            this.buttonRight.AutoSize = true;\n            this.buttonRight.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;\n            this.buttonRight.DialogResult = System.Windows.Forms.DialogResult.Cancel;\n            this.buttonRight.Dock = System.Windows.Forms.DockStyle.Right;\n            this.buttonRight.Location = new System.Drawing.Point(338, 11);\n            this.buttonRight.MinimumSize = new System.Drawing.Size(75, 0);\n            this.buttonRight.Name = \"buttonRight\";\n            this.buttonRight.Size = new System.Drawing.Size(75, 24);\n            this.buttonRight.TabIndex = 2;\n            this.buttonRight.Text = \"Right\";\n            this.buttonRight.UseVisualStyleBackColor = true;\n            this.buttonRight.Click += new System.EventHandler(this.buttonRight_Click);\n            // \n            // buttonLeft\n            // \n            this.buttonLeft.AutoSize = true;\n            this.buttonLeft.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;\n            this.buttonLeft.DialogResult = System.Windows.Forms.DialogResult.OK;\n            this.buttonLeft.Dock = System.Windows.Forms.DockStyle.Right;\n            this.buttonLeft.Location = new System.Drawing.Point(168, 11);\n            this.buttonLeft.MinimumSize = new System.Drawing.Size(75, 0);\n            this.buttonLeft.Name = \"buttonLeft\";\n            this.buttonLeft.Size = new System.Drawing.Size(75, 24);\n            this.buttonLeft.TabIndex = 0;\n            this.buttonLeft.Text = \"Left\";\n            this.buttonLeft.UseVisualStyleBackColor = true;\n            this.buttonLeft.Click += new System.EventHandler(this.buttonLeft_Click);\n            // \n            // label2\n            // \n            this.label2.AutoSize = true;\n            this.flowLayoutPanel1.SetFlowBreak(this.label2, true);\n            this.label2.Location = new System.Drawing.Point(68, 37);\n            this.label2.Name = \"label2\";\n            this.label2.Padding = new System.Windows.Forms.Padding(5, 5, 5, 14);\n            this.label2.Size = new System.Drawing.Size(53, 32);\n            this.label2.TabIndex = 0;\n            this.label2.Text = \"Caption\";\n            // \n            // buttonMiddle\n            // \n            this.buttonMiddle.AutoSize = true;\n            this.buttonMiddle.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;\n            this.buttonMiddle.DialogResult = System.Windows.Forms.DialogResult.OK;\n            this.buttonMiddle.Dock = System.Windows.Forms.DockStyle.Right;\n            this.buttonMiddle.Location = new System.Drawing.Point(253, 11);\n            this.buttonMiddle.MinimumSize = new System.Drawing.Size(75, 0);\n            this.buttonMiddle.Name = \"buttonMiddle\";\n            this.buttonMiddle.Size = new System.Drawing.Size(75, 24);\n            this.buttonMiddle.TabIndex = 1;\n            this.buttonMiddle.Text = \"Middle\";\n            this.buttonMiddle.UseVisualStyleBackColor = true;\n            this.buttonMiddle.Click += new System.EventHandler(this.buttonMiddle_Click);\n            // \n            // checkBox1\n            // \n            this.checkBox1.AutoSize = true;\n            this.checkBox1.Dock = System.Windows.Forms.DockStyle.Left;\n            this.checkBox1.Location = new System.Drawing.Point(11, 11);\n            this.checkBox1.Name = \"checkBox1\";\n            this.checkBox1.Size = new System.Drawing.Size(112, 24);\n            this.checkBox1.TabIndex = 3;\n            this.checkBox1.Text = \"Remember choice\";\n            this.checkBox1.UseVisualStyleBackColor = true;\n            this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);\n            // \n            // flowLayoutPanel1\n            // \n            this.flowLayoutPanel1.AutoSize = true;\n            this.flowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;\n            this.flowLayoutPanel1.BackColor = System.Drawing.SystemColors.Window;\n            this.flowLayoutPanel1.Controls.Add(this.label1);\n            this.flowLayoutPanel1.Controls.Add(this.label2);\n            this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;\n            this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0);\n            this.flowLayoutPanel1.MinimumSize = new System.Drawing.Size(0, 65);\n            this.flowLayoutPanel1.Name = \"flowLayoutPanel1\";\n            this.flowLayoutPanel1.Padding = new System.Windows.Forms.Padding(65, 0, 0, 0);\n            this.flowLayoutPanel1.Size = new System.Drawing.Size(424, 69);\n            this.flowLayoutPanel1.TabIndex = 3;\n            this.flowLayoutPanel1.SizeChanged += new System.EventHandler(this.flowLayoutPanel1_SizeChanged);\n            // \n            // panelButtons\n            // \n            this.panelButtons.Controls.Add(this.panel1);\n            this.panelButtons.Controls.Add(this.buttonLeft);\n            this.panelButtons.Controls.Add(this.panelLeft);\n            this.panelButtons.Controls.Add(this.buttonMiddle);\n            this.panelButtons.Controls.Add(this.panelMiddle);\n            this.panelButtons.Controls.Add(this.buttonRight);\n            this.panelButtons.Controls.Add(this.checkBox1);\n            this.panelButtons.Dock = System.Windows.Forms.DockStyle.Top;\n            this.panelButtons.Location = new System.Drawing.Point(0, 69);\n            this.panelButtons.Name = \"panelButtons\";\n            this.panelButtons.Padding = new System.Windows.Forms.Padding(11);\n            this.panelButtons.Size = new System.Drawing.Size(424, 46);\n            this.panelButtons.TabIndex = 5;\n            // \n            // panel1\n            // \n            this.panel1.Dock = System.Windows.Forms.DockStyle.Right;\n            this.panel1.Location = new System.Drawing.Point(158, 11);\n            this.panel1.MaximumSize = new System.Drawing.Size(10, 11111111);\n            this.panel1.MinimumSize = new System.Drawing.Size(10, 0);\n            this.panel1.Name = \"panel1\";\n            this.panel1.Size = new System.Drawing.Size(10, 24);\n            this.panel1.TabIndex = 6;\n            // \n            // panelLeft\n            // \n            this.panelLeft.Dock = System.Windows.Forms.DockStyle.Right;\n            this.panelLeft.Location = new System.Drawing.Point(243, 11);\n            this.panelLeft.MaximumSize = new System.Drawing.Size(10, 11111111);\n            this.panelLeft.MinimumSize = new System.Drawing.Size(10, 0);\n            this.panelLeft.Name = \"panelLeft\";\n            this.panelLeft.Size = new System.Drawing.Size(10, 24);\n            this.panelLeft.TabIndex = 4;\n            // \n            // panelMiddle\n            // \n            this.panelMiddle.Dock = System.Windows.Forms.DockStyle.Right;\n            this.panelMiddle.Location = new System.Drawing.Point(328, 11);\n            this.panelMiddle.MaximumSize = new System.Drawing.Size(10, 11111111);\n            this.panelMiddle.MinimumSize = new System.Drawing.Size(10, 0);\n            this.panelMiddle.Name = \"panelMiddle\";\n            this.panelMiddle.Size = new System.Drawing.Size(10, 24);\n            this.panelMiddle.TabIndex = 5;\n            // \n            // CustomMessageBox\n            // \n            this.AcceptButton = this.buttonLeft;\n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.CancelButton = this.buttonRight;\n            this.ClientSize = new System.Drawing.Size(424, 347);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.panelButtons);\n            this.Controls.Add(this.flowLayoutPanel1);\n            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;\n            this.KeyPreview = true;\n            this.MaximizeBox = false;\n            this.MinimizeBox = false;\n            this.MinimumSize = new System.Drawing.Size(375, 171);\n            this.Name = \"CustomMessageBox\";\n            this.ShowIcon = false;\n            this.ShowInTaskbar = false;\n            this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;\n            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;\n            this.Text = \"Special Dialog\";\n            this.SizeChanged += new System.EventHandler(this.CustomMessageBox_SizeChanged);\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            this.flowLayoutPanel1.ResumeLayout(false);\n            this.flowLayoutPanel1.PerformLayout();\n            this.panelButtons.ResumeLayout(false);\n            this.panelButtons.PerformLayout();\n            this.ResumeLayout(false);\n            this.PerformLayout();\n\n        }\n\n        #endregion Methods\n        private FlowLayoutPanel flowLayoutPanel1;\n        private Panel panelButtons;\n        private Panel panelLeft;\n        private Panel panelMiddle;\n        private Panel panel1;\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/CustomMessageBox.resx",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/LoadingDialog.Designer.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Windows.Forms;\n\nnamespace Klocman.Forms\n{\n    sealed partial class LoadingDialog\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            progressBar = new ProgressBar();\n            label1 = new Label();\n            panel1 = new Panel();\n            progressBar2 = new ProgressBar();\n            label2 = new Label();\n            panel1.SuspendLayout();\n            SuspendLayout();\n            // \n            // progressBar\n            // \n            progressBar.Dock = DockStyle.Top;\n            progressBar.Location = new System.Drawing.Point(7, 28);\n            progressBar.Margin = new Padding(4, 3, 4, 3);\n            progressBar.Name = \"progressBar\";\n            progressBar.Size = new System.Drawing.Size(392, 24);\n            progressBar.Style = ProgressBarStyle.Marquee;\n            progressBar.TabIndex = 0;\n            progressBar.Value = 100;\n            // \n            // label1\n            // \n            label1.AutoEllipsis = true;\n            label1.AutoSize = true;\n            label1.Dock = DockStyle.Top;\n            label1.Location = new System.Drawing.Point(7, 7);\n            label1.Margin = new Padding(4, 0, 4, 0);\n            label1.Name = \"label1\";\n            label1.Padding = new Padding(0, 0, 0, 6);\n            label1.Size = new System.Drawing.Size(59, 21);\n            label1.TabIndex = 1;\n            label1.Text = \"Loading...\";\n            // \n            // panel1\n            // \n            panel1.AutoSize = true;\n            panel1.AutoSizeMode = AutoSizeMode.GrowAndShrink;\n            panel1.BorderStyle = BorderStyle.FixedSingle;\n            panel1.Controls.Add(progressBar2);\n            panel1.Controls.Add(label2);\n            panel1.Controls.Add(progressBar);\n            panel1.Controls.Add(label1);\n            panel1.Location = new System.Drawing.Point(0, 0);\n            panel1.Margin = new Padding(0);\n            panel1.MinimumSize = new System.Drawing.Size(408, 12);\n            panel1.Name = \"panel1\";\n            panel1.Padding = new Padding(7, 7, 7, 7);\n            panel1.Size = new System.Drawing.Size(408, 113);\n            panel1.TabIndex = 2;\n            panel1.Resize += panel1_Resize;\n            // \n            // progressBar2\n            // \n            progressBar2.Dock = DockStyle.Top;\n            progressBar2.Location = new System.Drawing.Point(7, 80);\n            progressBar2.Margin = new Padding(4, 3, 4, 3);\n            progressBar2.Name = \"progressBar2\";\n            progressBar2.Size = new System.Drawing.Size(392, 24);\n            progressBar2.Style = ProgressBarStyle.Marquee;\n            progressBar2.TabIndex = 2;\n            progressBar2.Value = 100;\n            progressBar2.Visible = false;\n            // \n            // label2\n            // \n            label2.AutoEllipsis = true;\n            label2.AutoSize = true;\n            label2.Dock = DockStyle.Top;\n            label2.Location = new System.Drawing.Point(7, 52);\n            label2.Margin = new Padding(4, 0, 4, 0);\n            label2.Name = \"label2\";\n            label2.Padding = new Padding(0, 7, 0, 6);\n            label2.Size = new System.Drawing.Size(59, 28);\n            label2.TabIndex = 3;\n            label2.Text = \"Loading...\";\n            label2.Visible = false;\n            // \n            // LoadingDialog\n            // \n            AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);\n            AutoScaleMode = AutoScaleMode.Font;\n            AutoSizeMode = AutoSizeMode.GrowAndShrink;\n            BackColor = System.Drawing.SystemColors.Control;\n            ClientSize = new System.Drawing.Size(464, 290);\n            ControlBox = false;\n            Controls.Add(panel1);\n            FormBorderStyle = FormBorderStyle.None;\n            Margin = new Padding(4, 3, 4, 3);\n            MaximizeBox = false;\n            MinimizeBox = false;\n            Name = \"LoadingDialog\";\n            ShowIcon = false;\n            ShowInTaskbar = false;\n            SizeGripStyle = SizeGripStyle.Hide;\n            StartPosition = FormStartPosition.CenterParent;\n            panel1.ResumeLayout(false);\n            panel1.PerformLayout();\n            ResumeLayout(false);\n            PerformLayout();\n\n        }\n\n        #endregion\n\n        private Label label1;\n        private Panel panel1;\n        private ProgressBar progressBar;\n        private ProgressBar progressBar2;\n        private Label label2;\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/LoadingDialog.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Threading;\nusing System.Windows.Forms;\nusing Klocman.Tools;\n\nnamespace Klocman.Forms\n{\n    public sealed partial class LoadingDialog : Form\n    {\n        private readonly Thread _workThread;\n        private readonly LoadingDialogInterface _controller;\n        private Point _offset;\n        private ContentAlignment _ownerAlignment;\n        private bool _startAutomatically;\n\n        internal LoadingDialog(string title, Action<LoadingDialogInterface> action)\n        {\n            InitializeComponent();\n\n            Text = title;\n            label1.Text = title;\n\n            UseWaitCursor = true;\n\n            _controller = new LoadingDialogInterface(this);\n\n            _workThread = new Thread(() =>\n            {\n                _controller.WaitTillDialogIsReady();\n                try\n                {\n                    action(_controller);\n                }\n                catch (Exception ex)\n                {\n                    Error = ex;\n                }\n\n                _controller.CloseDialog();\n            })\n            { Name = \"LoadingDialogThread - \" + title };\n        }\n\n        protected override CreateParams CreateParams\n        {\n            get\n            {\n                const int csDropshadow = 0x20000;\n                var cp = base.CreateParams;\n                cp.ClassStyle |= csDropshadow;\n                return cp;\n            }\n        }\n\n        public static Form DefaultOwner { get; set; }\n\n        public Exception Error { get; private set; }\n\n        internal ProgressBar ProgressBar => progressBar;\n        internal ProgressBar SubProgressBar => progressBar2;\n\n        /*public string StatusText\n        {\n            get { return label1.Text; }\n            set { label1.Text = value; }\n        }\n\n        internal string SubStatusText\n        {\n            get { return label2.Text; }\n            set { label2.Text = value; }\n        }*/\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        internal bool SubProgressVisible\n        {\n            get { return progressBar2.Visible; }\n            set\n            {\n                progressBar2.Visible = value;\n                label2.Visible = value;\n            }\n        }\n\n        internal Label StatusLabel => label1;\n        internal Label SubStatusLabel => label2;\n\n\n        protected override void OnLoad(EventArgs e)\n        {\n            base.OnLoad(e);\n\n            if (Owner?.Icon != null)\n                Icon = Owner.Icon;\n            else\n            {\n                try\n                {\n                    Icon = ProcessTools.GetIconFromEntryExe();\n                }\n                catch\n                {\n                    /* Fall back to the default icon */\n                }\n            }\n        }\n\n        protected override void OnShown(EventArgs e)\n        {\n            base.OnShown(e);\n\n            if (Owner != null)\n            {\n                Owner.Move += OwnerOnMove;\n                Owner.Resize += OwnerOnMove;\n\n                OwnerOnMove(this, e);\n            }\n\n            if (_startAutomatically)\n                StartWork();\n        }\n\n        protected override void OnClosing(CancelEventArgs e)\n        {\n            if (Owner != null)\n            {\n                Owner.Move -= OwnerOnMove;\n                Owner.Resize -= OwnerOnMove;\n            }\n\n            base.OnClosing(e);\n        }\n\n        protected override void OnFormClosed(FormClosedEventArgs e)\n        {\n            _controller.Abort = true;\n            base.OnFormClosed(e);\n        }\n\n        protected override void OnResize(EventArgs e)\n        {\n            base.OnResize(e);\n\n            OwnerOnMove(this, e);\n        }\n\n        private void OwnerOnMove(object sender, EventArgs eventArgs)\n        {\n            if (Owner == null) return;\n\n            var newPos = new Point();\n\n            switch (_ownerAlignment)\n            {\n                case ContentAlignment.MiddleLeft:\n                case ContentAlignment.MiddleCenter:\n                case ContentAlignment.MiddleRight:\n                    newPos.Y = Owner.Location.Y + Owner.Size.Height / 2 - Size.Height / 2;\n                    break;\n\n                case ContentAlignment.BottomLeft:\n                case ContentAlignment.BottomCenter:\n                case ContentAlignment.BottomRight:\n                    newPos.Y = Owner.Location.Y + Owner.Size.Height - Size.Height;\n                    break;\n\n                default:\n                    break;\n            }\n            switch (_ownerAlignment)\n            {\n                case ContentAlignment.TopCenter:\n                case ContentAlignment.MiddleCenter:\n                case ContentAlignment.BottomCenter:\n                    newPos.X = Owner.Location.X + Owner.Size.Width / 2 - Size.Width / 2;\n                    break;\n                case ContentAlignment.TopRight:\n                case ContentAlignment.MiddleRight:\n                case ContentAlignment.BottomRight:\n                    newPos.X = Owner.Location.X + Owner.Size.Width - Size.Width;\n                    break;\n\n                default:\n                    break;\n            }\n\n            newPos.X += _offset.X;\n            newPos.Y += _offset.Y;\n            Location = newPos;\n        }\n\n        /// <summary>\n        ///     Start the action on a separate thread and show a progress bar. When action completes the dialog is closed.\n        /// </summary>\n        /// <param name=\"owner\">Parent form</param>\n        /// <param name=\"title\">Title of the window</param>\n        /// <param name=\"action\">Action to perform while displaying the dialog</param>\n        /// <param name=\"offset\">Offset from the alignment point</param>\n        /// <param name=\"ownerAlignment\">Alignment point to the parent</param>\n        public static LoadingDialog Show(Form owner, string title, Action<LoadingDialogInterface> action,\n            Point offset = default(Point), ContentAlignment ownerAlignment = ContentAlignment.MiddleCenter)\n        {\n            if (owner == null) owner = DefaultOwner;\n            // Find the topmost form so clicking on forms above owner doesn't bring the loading form under the others\n            while (owner != null && owner.OwnedForms.Length > 0) owner = owner.OwnedForms[0];\n\n            var loadBar = new LoadingDialog(title, action)\n            {\n                _offset = offset,\n                _ownerAlignment = ownerAlignment,\n                Owner = owner,\n                StartPosition = FormStartPosition.Manual,\n                _startAutomatically = false,\n            };\n\n            loadBar.Show(loadBar.Owner);\n            return loadBar;\n        }\n\n        /// <summary>\n        ///     Start the action on a separate thread and show a progress bar.\n        /// </summary>\n        /// <param name=\"owner\">Parent form</param>\n        /// <param name=\"title\">Title of the window</param>\n        /// <param name=\"action\">Action to perform while displaying the dialog</param>\n        /// <param name=\"offset\">Offset from the alignment point</param>\n        /// <param name=\"ownerAlignment\">Alignment point to the parent</param>\n        public static Exception ShowDialog(Form owner, string title, Action<LoadingDialogInterface> action,\n            Point offset = default(Point), ContentAlignment ownerAlignment = ContentAlignment.MiddleCenter)\n        {\n            using (var loadBar = new LoadingDialog(title, action)\n            {\n                _offset = offset,\n                _ownerAlignment = ownerAlignment,\n                Owner = owner ?? DefaultOwner,\n                StartPosition = FormStartPosition.Manual,\n                _startAutomatically = true\n            })\n            {\n                loadBar.ShowDialog(loadBar.Owner);\n                return loadBar.Error;\n            }\n        }\n\n        public void StartWork()\n        {\n            _workThread.Start();\n        }\n\n        private void panel1_Resize(object sender, EventArgs e)\n        {\n            Size = panel1.Size;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/LoadingDialog.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals of this format is to allow a simple XML format\n    that is mostly human readable. The generation and parsing of the\n    various data types are done through the TypeConverter classes\n    associated with the data types.\n\n    Example:\n\n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n\n    There are any number of \"resheader\" rows that contain simple\n    name/value pairs.\n\n    Each data row contains a name, and value. The row also contains a\n    type or mimetype. Type corresponds to a .NET class that support\n    text/value conversion through the TypeConverter architecture.\n    Classes that don't support this are serialized and stored with the\n    mimetype set.\n\n    The mimetype is used for serialized objects, and tells the\n    ResXResourceReader how to depersist the object. This is currently not\n    extensible. For a given mimetype the value must be set accordingly:\n\n    Note - application/x-microsoft.net.object.binary.base64 is the format\n    that the ResXResourceWriter will generate, however the reader can\n    read any of the formats listed below.\n\n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array\n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/LoadingDialogInterface.cs",
    "content": "using System;\nusing System.Threading;\nusing System.Timers;\nusing System.Windows.Forms;\nusing Klocman.Extensions;\nusing Timer = System.Timers.Timer;\n\nnamespace Klocman.Forms\n{\n    [System.Diagnostics.CodeAnalysis.SuppressMessage(\"Design\", \"CA1001:Types that own disposable fields should be disposable\", Justification = \"<Pending>\")]\n    public sealed class LoadingDialogInterface\n    {\n        private readonly Timer _updateTimer;\n\n        private Action _lastProgressUpdate;\n        private Action _lastSubProgressUpdate;\n\n        internal LoadingDialogInterface(LoadingDialog dialog)\n        {\n            Dialog = dialog;\n            _updateTimer = new Timer\n            {\n                AutoReset = true,\n                Interval = 35,\n                SynchronizingObject = Dialog\n            };\n            _updateTimer.Elapsed += UpdateTimerOnElapsed;\n            _updateTimer.Start();\n            dialog.Disposed += (sender, args) => _updateTimer.Dispose();\n        }\n\n        private void UpdateTimerOnElapsed(object sender, ElapsedEventArgs elapsedEventArgs)\n        {\n            var p = Interlocked.Exchange(ref _lastProgressUpdate, null);\n            p?.Invoke();\n            p = Interlocked.Exchange(ref _lastSubProgressUpdate, null);\n            p?.Invoke();\n        }\n\n        public bool Abort { get; internal set; }\n\n        private LoadingDialog Dialog { get; }\n\n        public void CloseDialog()\n        {\n            _updateTimer.Dispose();\n            Dialog.SafeInvoke(() => { if (!Dialog.IsDisposed) Dialog.Close(); });\n        }\n\n        public void SetMaximum(int value)\n        {\n            SetMaximumInt(value, Dialog.ProgressBar);\n        }\n\n        private void SetMaximumInt(int value, ProgressBar targetBar)\n        {\n            Dialog.SafeInvoke(() =>\n            {\n                if (targetBar.Maximum == value) return;\n\n                if (value < targetBar.Minimum)\n                    targetBar.Style = ProgressBarStyle.Marquee;\n                else\n                {\n                    try\n                    {\n                        targetBar.Maximum = value;\n                    }\n                    catch\n                    {\n                        targetBar.Style = ProgressBarStyle.Marquee;\n                    }\n                }\n            });\n        }\n\n        public void SetMinimum(int value)\n        {\n            SetMinimumInt(value, Dialog.ProgressBar);\n        }\n\n        private void SetMinimumInt(int value, ProgressBar targetBar)\n        {\n            Dialog.SafeInvoke(() =>\n            {\n                try\n                {\n                    targetBar.Minimum = value;\n                }\n                catch\n                {\n                    targetBar.Style = ProgressBarStyle.Marquee;\n                }\n            });\n        }\n\n        /// <summary>\n        ///     Setting progress automatically changes the style from \"Unknown time\" (Marquee) to a normal progressbar.\n        ///     If the value is invalid the style goes back to Marquee\n        /// </summary>\n        public void SetProgress(int value, string description = null, bool forceNoAnimation = false)\n        {\n            _lastProgressUpdate = () => SetProgressInt(value, description, Dialog.ProgressBar, Dialog.StatusLabel, forceNoAnimation);\n        }\n\n        private void SetProgressInt(int value, string description, ProgressBar targetBar, Label targetLabel, bool forceNoAnimation)\n        {\n            if (description != null && targetLabel.Text != description)\n                targetLabel.Text = description;\n\n            try\n            {\n                if (targetBar.Value == value)\n                    return;\n\n                var min = targetBar.Minimum;\n                var max = targetBar.Maximum;\n                if (min >= max || min > value || value > max)\n                {\n                    targetBar.Style = ProgressBarStyle.Marquee;\n                }\n                else\n                {\n                    targetBar.Style = ProgressBarStyle.Blocks;\n\n                    if (value < min) value = min;\n                    else if (value > max) value = max;\n\n                    if (forceNoAnimation)\n                    {\n                        // Moving progress forward then back skips the animation\n                        if (value == max)\n                        {\n                            targetBar.Maximum = value + 1;\n                            targetBar.Value = value + 1;\n                            targetBar.Maximum = value;\n                        }\n                        else\n                        {\n                            targetBar.Value = value + 1;\n                        }\n                    }\n\n                    targetBar.Value = value;\n                }\n            }\n            catch\n            {\n                targetBar.Style = ProgressBarStyle.Marquee;\n            }\n        }\n\n        public void SetSubMaximum(int value)\n        {\n            SetMaximumInt(value, Dialog.SubProgressBar);\n        }\n\n        public void SetSubMinimum(int value)\n        {\n            SetMinimumInt(value, Dialog.SubProgressBar);\n        }\n\n        public void SetSubProgress(int value, string description, bool forceNoAnimation = false)\n        {\n            _lastSubProgressUpdate = () => SetProgressInt(value, description, Dialog.SubProgressBar, Dialog.SubStatusLabel, forceNoAnimation);\n        }\n\n        public void SetSubProgressVisible(bool visible)\n        {\n            Dialog.SafeInvoke(() => { Dialog.SubProgressVisible = visible; });\n        }\n\n        public void SetTitle(string newTitle)\n        {\n            Dialog.SafeInvoke(() => { Dialog.Text = newTitle; });\n        }\n\n        /// <summary>\n        ///     Block current thread until dialog is visible\n        /// </summary>\n        internal void WaitTillDialogIsReady()\n        {\n            var notReady = true;\n            while (notReady)\n            {\n                Dialog.SafeInvoke(() => notReady = !Dialog.Visible);\n                Thread.Sleep(10);\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/OverlaySplashScreen.Designer.cs",
    "content": "﻿namespace Klocman.Forms\n{\n    partial class OverlaySplashScreen\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.components = new System.ComponentModel.Container();\n            this.startupSplashPictureBox = new System.Windows.Forms.PictureBox();\n            this.timerFadeout = new System.Windows.Forms.Timer(this.components);\n            ((System.ComponentModel.ISupportInitialize)(this.startupSplashPictureBox)).BeginInit();\n            this.SuspendLayout();\n            // \n            // startupSplashPictureBox\n            // \n            this.startupSplashPictureBox.BackColor = System.Drawing.SystemColors.Window;\n            this.startupSplashPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;\n            this.startupSplashPictureBox.Image = global::Klocman.Properties.Resources.centerline;\n            this.startupSplashPictureBox.ImeMode = System.Windows.Forms.ImeMode.NoControl;\n            this.startupSplashPictureBox.Location = new System.Drawing.Point(0, 0);\n            this.startupSplashPictureBox.Name = \"startupSplashPictureBox\";\n            this.startupSplashPictureBox.Size = new System.Drawing.Size(284, 261);\n            this.startupSplashPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;\n            this.startupSplashPictureBox.TabIndex = 0;\n            this.startupSplashPictureBox.TabStop = false;\n            // \n            // timerFadeout\n            // \n            this.timerFadeout.Interval = 25;\n            this.timerFadeout.Tick += new System.EventHandler(this.timerFadeout_Tick);\n            // \n            // OverlaySplashScreen\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.BackColor = System.Drawing.SystemColors.Window;\n            this.ClientSize = new System.Drawing.Size(284, 261);\n            this.ControlBox = false;\n            this.Controls.Add(this.startupSplashPictureBox);\n            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;\n            this.MaximizeBox = false;\n            this.MinimizeBox = false;\n            this.Name = \"OverlaySplashScreen\";\n            this.ShowIcon = false;\n            this.ShowInTaskbar = false;\n            this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;\n            this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;\n            ((System.ComponentModel.ISupportInitialize)(this.startupSplashPictureBox)).EndInit();\n            this.ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.PictureBox startupSplashPictureBox;\n        private System.Windows.Forms.Timer timerFadeout;\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/OverlaySplashScreen.cs",
    "content": "﻿using System;\nusing System.Drawing;\nusing System.Windows.Forms;\n\nnamespace Klocman.Forms\n{\n    internal partial class OverlaySplashScreen : Form\n    {\n        private readonly Form _owner;\n        private bool _faded;\n\n        /// <summary>\n        ///     Create a new splash screen.\n        /// </summary>\n        /// <param name=\"owner\">Form over which the splas screen will be drawn</param>\n        /// <param name=\"shownImage\">Image that the splash is showing</param>\n        public OverlaySplashScreen(Form owner, Image shownImage) : this()\n        {\n            _owner = owner;\n            startupSplashPictureBox.Image = shownImage;\n            Icon = _owner.Icon;\n\n            Location = _owner.PointToScreen(Point.Empty);\n            Size = _owner.ClientSize;\n\n            _owner.Move += OnOwnerMove;\n            _owner.Resize += OnOwnerResize;\n            _owner.FormClosed += OnOwnerClosed;\n        }\n\n        private OverlaySplashScreen()\n        {\n            InitializeComponent();\n        }\n\n        /// <summary>\n        ///     Fade out the splash screen\n        /// </summary>\n        public void FadeOut()\n        {\n            if (_faded || IsDisposed) return;\n            _faded = true;\n            timerFadeout.Start();\n        }\n\n        protected override void OnClosed(EventArgs e)\n        {\n            _owner.Move -= OnOwnerMove;\n            _owner.Resize -= OnOwnerResize;\n            _owner.FormClosed -= OnOwnerClosed;\n        }\n\n        protected override void OnGotFocus(EventArgs e)\n        {\n            _owner.Focus();\n        }\n\n        private void OnOwnerClosed(object sender, FormClosedEventArgs args)\n        {\n            Close();\n        }\n\n        private void OnOwnerMove(object sender, EventArgs args)\n        {\n            Location = _owner.PointToScreen(Point.Empty);\n        }\n\n        private void OnOwnerResize(object sender, EventArgs e)\n        {\n            Size = _owner.ClientSize;\n        }\n\n        private void timerFadeout_Tick(object sender, EventArgs e)\n        {\n            var op = Math.Max(0, Opacity - 0.14);\n\n            if (Math.Abs(op) < 0.01)\n            {\n                timerFadeout.Stop();\n                Close();\n                Dispose();\n            }\n            else\n            {\n                Opacity = op;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/OverlaySplashScreen.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <metadata name=\"timerFadeout.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>17, 17</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.Designer.cs",
    "content": "﻿namespace Klocman.Forms\n{\n    partial class ProcessWaiter\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProcessWaiter));\n            processWaiterControl1 = new ProcessWaiterControl();\n            SuspendLayout();\n            // \n            // processWaiterControl1\n            // \n            resources.ApplyResources(processWaiterControl1, \"processWaiterControl1\");\n            processWaiterControl1.Name = \"processWaiterControl1\";\n            processWaiterControl1.ShowIgnoreAndCancel = true;\n            // \n            // ProcessWaiter\n            // \n            resources.ApplyResources(this, \"$this\");\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            ControlBox = false;\n            Controls.Add(processWaiterControl1);\n            MaximizeBox = false;\n            MinimizeBox = false;\n            Name = \"ProcessWaiter\";\n            ShowIcon = false;\n            ShowInTaskbar = false;\n            SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;\n            Shown += ProcessWaiter_Shown;\n            ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private ProcessWaiterControl processWaiterControl1;\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>انظار حتى انتهاء العمليات...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Windows.Forms;\n\nnamespace Klocman.Forms\n{\n    public partial class ProcessWaiter : Form\n    {\n        private ProcessWaiter()\n        {\n            InitializeComponent();\n\n            processWaiterControl1.AllProcessesClosed += ProcessWaiterControl1_AllProcessesClosed;\n            processWaiterControl1.CancelClicked += ProcessWaiterControl1_CancelClicked;\n        }\n\n        private void ProcessWaiterControl1_CancelClicked(object sender, EventArgs e)\n        {\n            DialogResult = DialogResult.Cancel;\n            Close();\n        }\n\n        private void ProcessWaiterControl1_AllProcessesClosed(object sender, EventArgs e)\n        {\n            DialogResult = DialogResult.OK;\n            Close();\n        }\n        \n        /// <summary>\n        ///     Returns flase if user cancels the operation.\n        /// </summary>\n        /// <param name=\"owner\"></param>\n        /// <param name=\"processIDs\">IDs of processes to check</param>\n        /// <param name=\"processChildren\">Check child processes as well</param>\n        /// <returns></returns>\n        public static bool ShowDialog(Form owner, int[] processIDs, bool processChildren)\n        {\n            using (var pw = new ProcessWaiter())\n            {\n                pw.Icon = owner.Icon;\n                pw.processWaiterControl1.Initialize(processIDs,processChildren);\n                return pw.ShowDialog(owner) == DialogResult.OK;\n            }\n        }\n        \n        private void ProcessWaiter_Shown(object sender, EventArgs e)\n        {\n            processWaiterControl1.StartUpdating();\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Čekání na ukončení procesu ...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Warte auf das Beenden der Prozesse...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Esperando procesos para salir...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>En attente de la sortie des processus...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Várakozás a folyamatok leállítására...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>In attesa che il processo sia concluso...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>プロセスの終了を待っています...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Wachten op het beëindigen van de processen...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Oczekiwanie na zamknięcie procesów...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Esperando processos para sair...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>À espera do término dos processos...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals of this format is to allow a simple XML format\n    that is mostly human readable. The generation and parsing of the\n    various data types are done through the TypeConverter classes\n    associated with the data types.\n\n    Example:\n\n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n\n    There are any number of \"resheader\" rows that contain simple\n    name/value pairs.\n\n    Each data row contains a name, and value. The row also contains a\n    type or mimetype. Type corresponds to a .NET class that support\n    text/value conversion through the TypeConverter architecture.\n    Classes that don't support this are serialized and stored with the\n    mimetype set.\n\n    The mimetype is used for serialized objects, and tells the\n    ResXResourceReader how to depersist the object. This is currently not\n    extensible. For a given mimetype the value must be set accordingly:\n\n    Note - application/x-microsoft.net.object.binary.base64 is the format\n    that the ResXResourceWriter will generate, however the reader can\n    read any of the formats listed below.\n\n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array\n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"processWaiterControl1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Fill</value>\n  </data>\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\n  <data name=\"processWaiterControl1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>7, 7</value>\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"processWaiterControl1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>5, 3, 5, 3</value>\n  </data>\n  <data name=\"processWaiterControl1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>7, 7, 7, 7</value>\n  </data>\n  <data name=\"processWaiterControl1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>502, 323</value>\n  </data>\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"processWaiterControl1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"&gt;&gt;processWaiterControl1.Name\" xml:space=\"preserve\">\n    <value>processWaiterControl1</value>\n  </data>\n  <data name=\"&gt;&gt;processWaiterControl1.Type\" xml:space=\"preserve\">\n    <value>Klocman.Forms.ProcessWaiterControl, KlocTools, Culture=neutral, PublicKeyToken=null</value>\n  </data>\n  <data name=\"&gt;&gt;processWaiterControl1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;processWaiterControl1.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\n    <value>7, 15</value>\n  </data>\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>516, 337</value>\n  </data>\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>7, 7, 7, 7</value>\n  </data>\n  <data name=\"$this.StartPosition\" type=\"System.Windows.Forms.FormStartPosition, System.Windows.Forms\">\n    <value>CenterParent</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Waiting for processes to exit...</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\n    <value>ProcessWaiter</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Дождитесь остановки процессов...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Čakanje na procese, za izhod...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Väntar på att processer ska avslutas...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Çıkmak için işlemler bekleniyor...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Chờ cho quá trình kết thúc...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>正在等待进程退出...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiter.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>正在等待程序退出...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.Designer.cs",
    "content": "﻿namespace Klocman.Forms\n{\n    partial class ProcessWaiterControl\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            _timer?.Dispose();\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProcessWaiterControl));\n            treeView1 = new System.Windows.Forms.TreeView();\n            label1 = new System.Windows.Forms.Label();\n            buttonCancel = new System.Windows.Forms.Button();\n            buttonIgnore = new System.Windows.Forms.Button();\n            buttonKillAll = new System.Windows.Forms.Button();\n            flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\n            panel1 = new System.Windows.Forms.Panel();\n            buttonKill = new System.Windows.Forms.Button();\n            panel3 = new System.Windows.Forms.Panel();\n            panel2c = new System.Windows.Forms.Panel();\n            panel4c = new System.Windows.Forms.Panel();\n            flowLayoutPanel1.SuspendLayout();\n            panel1.SuspendLayout();\n            SuspendLayout();\n            // \n            // treeView1\n            // \n            resources.ApplyResources(treeView1, \"treeView1\");\n            treeView1.Name = \"treeView1\";\n            treeView1.ShowNodeToolTips = true;\n            treeView1.AfterSelect += treeView1_AfterSelect;\n            // \n            // label1\n            // \n            resources.ApplyResources(label1, \"label1\");\n            label1.Name = \"label1\";\n            // \n            // buttonCancel\n            // \n            resources.ApplyResources(buttonCancel, \"buttonCancel\");\n            buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;\n            buttonCancel.Name = \"buttonCancel\";\n            buttonCancel.UseVisualStyleBackColor = true;\n            buttonCancel.Click += buttonCancel_Click;\n            // \n            // buttonIgnore\n            // \n            resources.ApplyResources(buttonIgnore, \"buttonIgnore\");\n            buttonIgnore.Name = \"buttonIgnore\";\n            buttonIgnore.UseVisualStyleBackColor = true;\n            buttonIgnore.Click += buttonIgnore_Click;\n            // \n            // buttonKillAll\n            // \n            resources.ApplyResources(buttonKillAll, \"buttonKillAll\");\n            buttonKillAll.Name = \"buttonKillAll\";\n            buttonKillAll.UseVisualStyleBackColor = true;\n            buttonKillAll.Click += buttonKillAll_Click;\n            // \n            // flowLayoutPanel1\n            // \n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\n            flowLayoutPanel1.Controls.Add(label1);\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\n            // \n            // panel1\n            // \n            panel1.Controls.Add(buttonKill);\n            panel1.Controls.Add(panel3);\n            panel1.Controls.Add(buttonKillAll);\n            panel1.Controls.Add(panel2c);\n            panel1.Controls.Add(buttonIgnore);\n            panel1.Controls.Add(panel4c);\n            panel1.Controls.Add(buttonCancel);\n            resources.ApplyResources(panel1, \"panel1\");\n            panel1.Name = \"panel1\";\n            // \n            // buttonKill\n            // \n            resources.ApplyResources(buttonKill, \"buttonKill\");\n            buttonKill.Name = \"buttonKill\";\n            buttonKill.UseVisualStyleBackColor = true;\n            buttonKill.Click += buttonKill_Click;\n            // \n            // panel3\n            // \n            resources.ApplyResources(panel3, \"panel3\");\n            panel3.Name = \"panel3\";\n            // \n            // panel2c\n            // \n            resources.ApplyResources(panel2c, \"panel2c\");\n            panel2c.Name = \"panel2c\";\n            // \n            // panel4c\n            // \n            resources.ApplyResources(panel4c, \"panel4c\");\n            panel4c.Name = \"panel4c\";\n            // \n            // ProcessWaiterControl\n            // \n            resources.ApplyResources(this, \"$this\");\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            Controls.Add(treeView1);\n            Controls.Add(panel1);\n            Controls.Add(flowLayoutPanel1);\n            Name = \"ProcessWaiterControl\";\n            flowLayoutPanel1.ResumeLayout(false);\n            flowLayoutPanel1.PerformLayout();\n            panel1.ResumeLayout(false);\n            panel1.PerformLayout();\n            ResumeLayout(false);\n            PerformLayout();\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.TreeView treeView1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.Button buttonCancel;\n        private System.Windows.Forms.Button buttonIgnore;\n        private System.Windows.Forms.Button buttonKillAll;\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;\n        private System.Windows.Forms.Panel panel1;\n        private System.Windows.Forms.Button buttonKill;\n        private System.Windows.Forms.Panel panel3;\n        private System.Windows.Forms.Panel panel2c;\n        private System.Windows.Forms.Panel panel4c;\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>قتل</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>قتل الكل</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>تجاهل</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>الغاء الامر</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>قد تستخدم العمليات التالية الملفات التي سيتم الغاء تثبيتها الان ، الرجاء اغلاقها قبل المتابعة. اذا قررت عدم اغلاقها ، فقد يفشل الغاء تثبيت بعض المواد او تسبب مشاكل. قد تفقد ايضا ايه بيانات غير محفوظه تم فتحها في تلك التطبيقات.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Drawing;\nusing System.Linq;\nusing System.Windows.Forms;\nusing Klocman.Forms.Tools;\nusing Klocman.Tools;\nusing Timer = System.Timers.Timer;\n\nnamespace Klocman.Forms\n{\n    public partial class ProcessWaiterControl : UserControl\n    {\n        private readonly Timer _timer = new(600);\n        private static readonly string DefaultImageKey = \"Default\";\n\n        public void Initialize(int[] processIDs, bool processChildren)\n        {\n            treeView1.ShowRootLines = processChildren;\n\n            SetNodes(processIDs, processChildren);\n        }\n\n        public bool ProcessesStillRunning => treeView1.Nodes.Count > 0;\n\n        public void StartUpdating()\n        {\n            _timer.Start();\n        }\n\n        public ProcessWaiterControl()\n        {\n            InitializeComponent();\n\n            _timer.Elapsed += updateTimer_Tick;\n            _timer.AutoReset = false;\n            _timer.SynchronizingObject = this;\n        }\n\n        private IEnumerable<Process> MainMonitoredProcesses\n        {\n            get { return treeView1.Nodes.Cast<TreeNode>().Select(x => x.Tag as Process); }\n        }\n\n        private void SetNodes(int[] processIDs, bool processChildren)\n        {\n            var results = new List<TreeNode>();\n            var il = new ImageList();\n            il.Images.Add(DefaultImageKey, SystemIcons.Application);\n            treeView1.ImageKey = DefaultImageKey;\n\n            foreach (var id in processIDs)\n            {\n                try\n                {\n                    var p = Process.GetProcessById(id);\n                    if (p.HasExited) continue;\n\n                    var mainPrName = string.IsNullOrEmpty(p.MainWindowTitle) ? p.ProcessName : p.MainWindowTitle;\n                    var node = new TreeNode(mainPrName)\n                    {\n                        SelectedImageKey = mainPrName,\n                        ImageKey = mainPrName,\n                        Tag = p\n                    };\n                    results.Add(node);\n\n                    try\n                    {\n                        var ico = DrawingTools.ExtractAssociatedIcon(p.MainModule!.FileName);\n                        if (ico != null) il.Images.Add(mainPrName, ico);\n                    }\n                    catch (Exception ex)\n                    {\n                        Console.WriteLine(ex);\n                    }\n\n                    if (!processChildren) continue;\n                    try\n                    {\n                        var children = ProcessTools.GetChildProcesses(id);\n                        node.Nodes.AddRange(children.Select(x =>\n                        {\n                            var pr = Process.GetProcessById(x);\n                            var name = string.IsNullOrEmpty(pr.MainWindowTitle)\n                                ? pr.ProcessName\n                                : pr.MainWindowTitle;\n                            return new TreeNode(name)\n                            {\n                                SelectedImageKey = mainPrName,\n                                ImageKey = mainPrName,\n                                Tag = pr\n                            };\n                        }).ToArray());\n                    }\n                    catch (Exception ex)\n                    {\n                        // Ignore, probably the process exited by now. The child nodes are not important\n                        Console.WriteLine(ex);\n                    }\n                }\n                catch (Exception ex)\n                {\n                    // Probably the main process exited, remove it from the task\n                    Console.WriteLine(ex);\n                }\n            }\n\n            treeView1.Nodes.Clear();\n            var prev = treeView1.ImageList;\n            treeView1.ImageList = il;\n            prev?.Dispose();\n\n            treeView1.Nodes.AddRange(results.ToArray());\n        }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public bool ShowIgnoreAndCancel\n        {\n            get\n            {\n                return buttonCancel.Enabled;\n            }\n            set\n            {\n                buttonIgnore.Enabled = value;\n                buttonIgnore.Visible = value;\n                buttonCancel.Enabled = value;\n                buttonCancel.Visible = value;\n                panel2c.Visible = value;\n                panel4c.Visible = value;\n            }\n        }\n\n        public event EventHandler AllProcessesClosed;\n        public event EventHandler CancelClicked;\n\n        private void buttonIgnore_Click(object sender, EventArgs e)\n        {\n            AllProcessesClosed?.Invoke(sender, e);\n        }\n\n        private void buttonKillAll_Click(object sender, EventArgs e)\n        {\n            // ask if sure and kill\n            if (!PremadeDialogs.KillRunningProcessesQuestion())\n                return;\n\n            foreach (var id in MainMonitoredProcesses)\n            {\n                try\n                {\n                    id.Kill(false);\n                }\n                catch (Exception ex)\n                {\n                    // Ignore, probably the process exited by now\n                    Console.WriteLine(ex);\n                }\n            }\n        }\n\n        private void updateTimer_Tick(object sender, EventArgs e)\n        {\n            foreach (var node in treeView1.Nodes.Cast<TreeNode>().ToArray())\n            {\n                try\n                {\n                    if (node.Tag is not Process pr || pr.HasExited)\n                    {\n                        treeView1.Nodes.Remove(node);\n                    }\n                    else\n                    {\n                        foreach (var subNode in node.Nodes.Cast<TreeNode>().ToArray())\n                        {\n                            try\n                            {\n                                if (subNode.Tag is not Process spr || spr.HasExited)\n                                    node.Nodes.Remove(subNode);\n                            }\n                            catch (Exception ex)\n                            {\n                                Console.WriteLine(ex);\n                                node.Nodes.Remove(subNode);\n                            }\n                        }\n                    }\n                }\n                catch (Exception ex)\n                {\n                    Console.WriteLine(ex);\n                    treeView1.Nodes.Remove(node);\n                }\n            }\n\n            if (treeView1.Nodes.Count <= 0)\n                AllProcessesClosed?.Invoke(sender, e);\n            else\n                _timer.Start();\n        }\n\n        private void buttonKill_Click(object sender, EventArgs e)\n        {\n            if (treeView1.SelectedNode?.Tag is not Process process) return;\n            try { process.Kill(); }\n            catch (Exception ex) { Console.WriteLine(ex); }\n        }\n\n        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)\n        {\n            buttonKill.Enabled = treeView1.SelectedNode != null;\n        }\n\n        private void buttonCancel_Click(object sender, EventArgs e)\n        {\n            CancelClicked?.Invoke(sender, e);\n        }\n\n        public void StopUpdating()\n        {\n            _timer.Stop();\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Ukončit</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Ukončit vše</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Ignorovat</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Zrušit</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Následující procesy by mohly používat soubory, které bude nyní možné odinstalovat, zavřete je prosím před pokračováním. Pokud se rozhodnete k neuzavření, odinstalování některých položek může dojít k selhání nebo způsobit problémy. Můžete také přijít o neuložená data otevřené v těchto aplikacích.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Beenden</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Alle beenden</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Ignorieren</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Abbrechen</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Die folgenden Prozesse verwenden möglicherweise Dateien, die jetzt deinstalliert werden sollen. Schließen Sie sie bitte bevor Sie fortfahren.\nWenn Sie sich entscheiden, sie nicht zu schließen, könnte die Deinstallation fehlschlagen oder Probleme verursachen.\nSie verlieren auch alle nicht gespeicherten Daten, die von diesen Anwendungen geöffnet sind.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Terminar</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Terminar todo</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Ignorar</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Los siguientes procesos podrían estar utilizando archivos que ahora se desinstalarán, por favor, ciérrelos antes de continuar. Si decide no cerrarlos, la desinstalación de algunos elementos podría fallar o causar problemas. También puede perder todos los datos no guardados abiertos en esas aplicaciones.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Tuer</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Tuer tout</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Ignorer</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Annuler</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Les processus suivants pourraient utiliser des fichiers qui vont maintenant être désinstallés ; veuillez les fermer avant de continuer. Si vous décidez de ne pas les fermer, la désinstallation de quelques éléments pourrait échouer ou causer des problèmes. Vous pourriez aussi perdre toute donnée non sauvegardée ouverte dans ces applications.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Leállítás</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Mindet leállít</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Kihagyás</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Mégse</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>A következő folyamatok lehet, hogy olyan fájlokat használnak, amelyek nem távolíthatók el addig, amíg ezeket nem zárja be. Ha úgy dönt, hogy mégsem zárja be ezeket, egyes elemek eltávolítása sikertelen lesz, vagy problémákat okozhat. Illetve a megnyitott alkalmazásokban adatvesztéssel járhat.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Termina</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Termina tutto</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Ignora</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Cancella</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>I seguenti processi potrebbero utilizzare file che saranno disinstallati, ti invitiamo a chiuderli prima di continuare. Se decidessi di non farlo la disinstallazione di alcuni elementi potrebbe fallire o causare problemi. Potresti perdere delle informazioni non salvate in uso in quelle applicazioni.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>終了</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>すべて終了</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>無視</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>以下のプロセスが現在アンインストールされるファイルを使用している可能性があります。続行する前に閉じてください。閉じない場合、一部のアイテムのアンインストールが失敗するか、問題を引き起こす可能性があります。また、これらのアプリケーションで開いている未保存のデータが失われることがあります。</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Beëindigen</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Alle beëindigen</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Negeren</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Annuleren</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>De volgende processen gebruiken mogelijk bestanden, die nu gede-installeerd moeten worden.\nSluit deze eerst voordat u verder gaat. Als u ervoor kiest deze niet te sluiten, kan de de-installatie mislukken of problemen veroorzaken. Daardoor verliest u ook alle niet opgeslagen gegevens, die door deze toepasssing(en) geopend zijn.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Zakończ</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Zakończ wszystkie</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Ignoruj</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Anuluj</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Następujące procesy mogą używać niektórych plików które zostaną teraz odinstalowane, i powinny zostać zamknięte przed  kontynuacją. Jeżeli nie zostaną zamknięte, dezinstalacja niektórych elementów może się nie powieść lub może sprawić problemy. Mogą także zostać utracone niezapisane dane otwarte w tych aplikacjach.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Terminar</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Finalizar tudo</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Ignorar</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Os seguintes processos podem estar usando arquivos que agora serão desinstalados, feche-os antes de continuar. Se você decidir não fechá-los, a desinstalação de alguns itens pode falhar ou causar problemas. Você também pode perder todos os dados não salvos abertos nesses aplicativos.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Terminar</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Acabar com tudo</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Ignorar</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Os seguintes processos podem estar a usar arquivos que não serão desinstalados; feche-os antes de continuar. Se decidir não os fechar, a desinstalação de alguns itens poderá falhar ou causar problemas. Também pode perder dados que não foram guardados, abertos nessas aplicações.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals of this format is to allow a simple XML format\n    that is mostly human readable. The generation and parsing of the\n    various data types are done through the TypeConverter classes\n    associated with the data types.\n\n    Example:\n\n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n\n    There are any number of \"resheader\" rows that contain simple\n    name/value pairs.\n\n    Each data row contains a name, and value. The row also contains a\n    type or mimetype. Type corresponds to a .NET class that support\n    text/value conversion through the TypeConverter architecture.\n    Classes that don't support this are serialized and stored with the\n    mimetype set.\n\n    The mimetype is used for serialized objects, and tells the\n    ResXResourceReader how to depersist the object. This is currently not\n    extensible. For a given mimetype the value must be set accordingly:\n\n    Note - application/x-microsoft.net.object.binary.base64 is the format\n    that the ResXResourceWriter will generate, however the reader can\n    read any of the formats listed below.\n\n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array\n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"treeView1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Fill</value>\n  </data>\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\n  <data name=\"treeView1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>0, 54</value>\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"treeView1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"treeView1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>617, 287</value>\n  </data>\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"treeView1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>1</value>\n  </data>\n  <data name=\"&gt;&gt;treeView1.Name\" xml:space=\"preserve\">\n    <value>treeView1</value>\n  </data>\n  <data name=\"&gt;&gt;treeView1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TreeView, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;treeView1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;treeView1.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <data name=\"label1.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"label1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>4, 0</value>\n  </data>\n  <data name=\"label1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 0, 4, 0</value>\n  </data>\n  <data name=\"label1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>605, 45</value>\n  </data>\n  <data name=\"label1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>The following processes might be using files that will now be uninstalled, please close them before continuing. If you decide not to close them, uninstallation of some items might fail or cause problems. You might also lose any unsaved data opened in those applications.</value>\n  </data>\n  <data name=\"&gt;&gt;label1.Name\" xml:space=\"preserve\">\n    <value>label1</value>\n  </data>\n  <data name=\"&gt;&gt;label1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;label1.Parent\" xml:space=\"preserve\">\n    <value>flowLayoutPanel1</value>\n  </data>\n  <data name=\"&gt;&gt;label1.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <data name=\"buttonCancel.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"buttonCancel.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"buttonCancel.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>527, 9</value>\n  </data>\n  <data name=\"buttonCancel.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"buttonCancel.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>88, 31</value>\n  </data>\n  <data name=\"buttonCancel.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>3</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Cancel</value>\n  </data>\n  <data name=\"&gt;&gt;buttonCancel.Name\" xml:space=\"preserve\">\n    <value>buttonCancel</value>\n  </data>\n  <data name=\"&gt;&gt;buttonCancel.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;buttonCancel.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;buttonCancel.ZOrder\" xml:space=\"preserve\">\n    <value>6</value>\n  </data>\n  <data name=\"buttonIgnore.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"buttonIgnore.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"buttonIgnore.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>427, 9</value>\n  </data>\n  <data name=\"buttonIgnore.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"buttonIgnore.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>88, 31</value>\n  </data>\n  <data name=\"buttonIgnore.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>2</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Ignore</value>\n  </data>\n  <data name=\"&gt;&gt;buttonIgnore.Name\" xml:space=\"preserve\">\n    <value>buttonIgnore</value>\n  </data>\n  <data name=\"&gt;&gt;buttonIgnore.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;buttonIgnore.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;buttonIgnore.ZOrder\" xml:space=\"preserve\">\n    <value>4</value>\n  </data>\n  <data name=\"buttonKillAll.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"buttonKillAll.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"buttonKillAll.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>296, 9</value>\n  </data>\n  <data name=\"buttonKillAll.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"buttonKillAll.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>119, 31</value>\n  </data>\n  <data name=\"buttonKillAll.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>1</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Kill all</value>\n  </data>\n  <data name=\"&gt;&gt;buttonKillAll.Name\" xml:space=\"preserve\">\n    <value>buttonKillAll</value>\n  </data>\n  <data name=\"&gt;&gt;buttonKillAll.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;buttonKillAll.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;buttonKillAll.ZOrder\" xml:space=\"preserve\">\n    <value>2</value>\n  </data>\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Top</value>\n  </data>\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>0, 0</value>\n  </data>\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"flowLayoutPanel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>0, 0, 0, 9</value>\n  </data>\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>617, 54</value>\n  </data>\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\n    <value>flowLayoutPanel1</value>\n  </data>\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\n    <value>2</value>\n  </data>\n  <data name=\"buttonKill.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"buttonKill.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"buttonKill.Enabled\" type=\"System.Boolean, mscorlib\">\n    <value>False</value>\n  </data>\n  <data name=\"buttonKill.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\n    <value>NoControl</value>\n  </data>\n  <data name=\"buttonKill.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>196, 9</value>\n  </data>\n  <data name=\"buttonKill.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"buttonKill.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>88, 31</value>\n  </data>\n  <data name=\"buttonKill.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Kill</value>\n  </data>\n  <data name=\"&gt;&gt;buttonKill.Name\" xml:space=\"preserve\">\n    <value>buttonKill</value>\n  </data>\n  <data name=\"&gt;&gt;buttonKill.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;buttonKill.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;buttonKill.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <data name=\"panel3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"panel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>284, 9</value>\n  </data>\n  <data name=\"panel3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"panel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>12, 31</value>\n  </data>\n  <data name=\"panel3.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>5</value>\n  </data>\n  <data name=\"&gt;&gt;panel3.Name\" xml:space=\"preserve\">\n    <value>panel3</value>\n  </data>\n  <data name=\"&gt;&gt;panel3.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;panel3.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;panel3.ZOrder\" xml:space=\"preserve\">\n    <value>1</value>\n  </data>\n  <data name=\"panel2c.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"panel2c.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>415, 9</value>\n  </data>\n  <data name=\"panel2c.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"panel2c.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>12, 31</value>\n  </data>\n  <data name=\"panel2c.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>4</value>\n  </data>\n  <data name=\"&gt;&gt;panel2c.Name\" xml:space=\"preserve\">\n    <value>panel2c</value>\n  </data>\n  <data name=\"&gt;&gt;panel2c.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;panel2c.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;panel2c.ZOrder\" xml:space=\"preserve\">\n    <value>3</value>\n  </data>\n  <data name=\"panel4c.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"panel4c.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>515, 9</value>\n  </data>\n  <data name=\"panel4c.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"panel4c.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>12, 31</value>\n  </data>\n  <data name=\"panel4c.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>6</value>\n  </data>\n  <data name=\"&gt;&gt;panel4c.Name\" xml:space=\"preserve\">\n    <value>panel4c</value>\n  </data>\n  <data name=\"&gt;&gt;panel4c.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;panel4c.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;panel4c.ZOrder\" xml:space=\"preserve\">\n    <value>5</value>\n  </data>\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Bottom</value>\n  </data>\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>0, 341</value>\n  </data>\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"panel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>2, 9, 2, 2</value>\n  </data>\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>617, 42</value>\n  </data>\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>2</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\n    <value>1</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\n    <value>7, 15</value>\n  </data>\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>617, 383</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\n    <value>ProcessWaiterControl</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Убить</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Убить все</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Игнор</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Отмена</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Следующие процессы могут использовать файлы, которые будут сейчас удалены, пожалуйста, закройте их перед продолжением. Если Вы решили не закрывать их, то удаление некоторых элементов может не произойти или вызвать проблемы. Также Вы можете потерять все несохранённые данные в этих приложениях.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Uniči</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Uniči vse</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Prezri</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Prekliči</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Naslednji procesi morda uporabljajo datoteke, ki bodo zdaj odstranjene. Prosimo, da jih zaprete preden nadaljujete. Če ste se odločili, da jih ne boste zaprli, odstranitev nekaterih vnosov lahko spodleti ali povzroči težave. Morda boste izgubili tudi vse neshranjene podatke, ki so odprti v teh aplikacijah.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Avsluta</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Avsluta alla</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Ignorera</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Avbryt</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Följande processer kan använda filer som nu kommer att avinstalleras, vänligen stäng dem innan du fortsätter. Om du bestämmer dig för att inte stänga dem, kan avinstallationen av vissa objekt misslyckas eller orsaka problem. Du kan också förlora eventuella osparade data som är öppna i dessa appar.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Zorla kapat</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Hepsini zorla kapat</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Yoksay</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>İptal</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Aşağıdaki işlemler şimdi kaldırılacak hala bazı dosyalar kullanıyor olabilir, lütfen devam etmeden önce bunları kapatın. Bunları kapatmamaya karar verirseniz, bazı öğelerin kaldırılması başarısız olabilir veya sorunlara neden olabilir. Ayrıca bu uygulamalarda açılan kaydedilmemiş verileri de kaybedebilirsiniz.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>Buộc dừng</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>Buộc dừng tất cả</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>Phớt lờ</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Huỷ</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Các quy trình sau đây có thể đang sử dụng các tệp sẽ được gỡ cài đặt, vui lòng đóng chúng trước khi tiếp tục. Nếu bạn quyết định không đóng chúng, việc gỡ cài đặt một số mục có thể không thành công hoặc gây ra sự cố. Bạn cũng có thể mất mọi dữ liệu chưa lưu được mở trong các ứng dụng đó.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>终止</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>全部终止</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>忽略</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>以下进程可能正在使用将要卸载的文件，请在继续之前关闭这些文件。如果你决定不关闭它们，则卸载某些项可能会失败或导致问题。你还可能丢失在这些应用程序中打开的任何未保存的数据。</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/ProcessWaiterControl.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"buttonKill.Text\" xml:space=\"preserve\">\n    <value>結束</value>\n  </data>\n  <data name=\"buttonKillAll.Text\" xml:space=\"preserve\">\n    <value>全部結束</value>\n  </data>\n  <data name=\"buttonIgnore.Text\" xml:space=\"preserve\">\n    <value>忽略</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>以下程序可能正在使用將要移除的檔案，請在繼續之前關閉這些檔案。如果你決定不關閉它們，則移除某些項目可能會失敗或導致問題。你還可能遺失這些應用程式中開啟的未儲存資料。</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/SplashScreen.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Windows.Forms;\nusing Klocman.Forms.Tools;\n\nnamespace Klocman.Forms\n{\n    /// <summary>\n    ///     A Windows 10 Store App styled splash screen. It will draw over form's client area and fade out when needed.\n    /// </summary>\n    public class SplashScreen : ReferencedComponent\n    {\n        private OverlaySplashScreen _splash;\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public Image SplashScreenImage { get; set; }\n\n        [DefaultValue(true)]\n        public bool AutomaticallyClose { get; set; } = true;\n\n        [System.Diagnostics.CodeAnalysis.SuppressMessage(\"Usage\", \"CA2213:Disposable fields should be disposed\", Justification = \"<Pending>\")]\n        private Form _ownerForm;\n\n        protected override void OnContainerControlChanged(object orig, EventArgs args)\n        {\n            _ownerForm = ContainerControl.FindForm();\n\n            if (_ownerForm != null)\n            {\n                _ownerForm.Load += OnLoad;\n                _ownerForm.Shown += OnShown;\n            }\n        }\n\n        public void CloseSplashScreen()\n        {\n            if (_splash == null || _splash.IsDisposed) return;\n\n            _splash.FadeOut();\n            \n            SetOwnerEnabled(true);\n        }\n\n        private void SetOwnerEnabled(bool enabled)\n        {\n            // Don't disable the entire main form to avoid it being unmovable\n            foreach (Control control in ContainerControl.Controls)\n                control.Enabled = enabled;\n        }\n\n        protected override void Dispose(bool disposing)\n        {\n            _splash?.Dispose();\n\n            base.Dispose(disposing);\n        }\n\n        private void OnLoad(object orig, EventArgs e)\n        {\n            _ownerForm.Opacity = 0;\n            _splash = new OverlaySplashScreen(_ownerForm, SplashScreenImage);\n            _splash.Disposed += (sender, args) => _splash = null;\n        }\n\n        private void OnShown(object orig, EventArgs e)\n        {\n            var canSplash = _splash != null && !_splash.IsDisposed;\n            if (canSplash)\n            {\n                SetOwnerEnabled(false);\n\n                _splash.Opacity = 0;\n                _splash.Show(ContainerControl);\n                _splash.Refresh();\n                _splash.Opacity = 1;\n            }\n\n            _ownerForm.Opacity = 1;\n\n            if(canSplash && AutomaticallyClose)\n                CloseSplashScreen();\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/StringEditBox.Designer.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Windows.Forms;\n\nnamespace Klocman.Forms\n{\n    partial class StringEditBox\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.button1 = new System.Windows.Forms.Button();\n            this.button2 = new System.Windows.Forms.Button();\n            this.label1 = new System.Windows.Forms.Label();\n            this.textBox1 = new System.Windows.Forms.TextBox();\n            this.SuspendLayout();\n            // \n            // button1\n            // \n            this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));\n            this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;\n            this.button1.Location = new System.Drawing.Point(67, 57);\n            this.button1.Name = \"button1\";\n            this.button1.Size = new System.Drawing.Size(75, 23);\n            this.button1.TabIndex = 2;\n            this.button1.Text = \"Apply\";\n            this.button1.UseVisualStyleBackColor = true;\n            // \n            // button2\n            // \n            this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));\n            this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel;\n            this.button2.Location = new System.Drawing.Point(148, 57);\n            this.button2.Name = \"button2\";\n            this.button2.Size = new System.Drawing.Size(75, 23);\n            this.button2.TabIndex = 3;\n            this.button2.Text = \"Cancel\";\n            this.button2.UseVisualStyleBackColor = true;\n            // \n            // label1\n            // \n            this.label1.AutoSize = true;\n            this.label1.Location = new System.Drawing.Point(12, 9);\n            this.label1.Name = \"label1\";\n            this.label1.Size = new System.Drawing.Size(60, 13);\n            this.label1.TabIndex = 0;\n            this.label1.Text = \"Description\";\n            // \n            // textBox1\n            // \n            this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n            this.textBox1.Location = new System.Drawing.Point(12, 28);\n            this.textBox1.Name = \"textBox1\";\n            this.textBox1.Size = new System.Drawing.Size(211, 20);\n            this.textBox1.TabIndex = 1;\n            // \n            // StringEditBox\n            // \n            this.AcceptButton = this.button1;\n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            this.CancelButton = this.button2;\n            this.ClientSize = new System.Drawing.Size(236, 92);\n            this.Controls.Add(this.textBox1);\n            this.Controls.Add(this.label1);\n            this.Controls.Add(this.button2);\n            this.Controls.Add(this.button1);\n            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;\n            this.Name = \"StringEditBox\";\n            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;\n            this.Text = \"StringEditBox\";\n            this.Shown += new System.EventHandler(this.StringEditBox_Shown);\n            this.ResumeLayout(false);\n            this.PerformLayout();\n\n        }\n\n        #endregion\n\n        private Button button1;\n        private Button button2;\n        private Label label1;\n        private TextBox textBox1;\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/StringEditBox.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Windows.Forms;\nusing Klocman.Tools;\n\nnamespace Klocman.Forms\n{\n    public partial class StringEditBox : Form\n    {\n        public StringEditBox()\n        {\n            InitializeComponent();\n        }\n\n        public static bool ShowDialog(string description, string title, string defaultText,\n            string acceptButton, string cancelButton, out string result)\n        {\n            using (var instance = new StringEditBox())\n            {\n                instance.button1.Text = acceptButton;\n                instance.button2.Text = cancelButton;\n                instance.label1.Text = description;\n                instance.Text = title;\n                instance.textBox1.Text = defaultText;\n\n                instance.textBox1.Focus();\n                var outVar = instance.ShowDialog();\n                result = instance.textBox1.Text;\n                return outVar != DialogResult.Cancel;\n            }\n        }\n\n        private void StringEditBox_Shown(object sender, EventArgs e)\n        {\n            if (ParentForm != null && ParentForm.Icon != null)\n                Icon = ParentForm.Icon;\n            else\n            {\n                try\n                {\n                    Icon = ProcessTools.GetIconFromEntryExe();\n                }\n                catch\n                {\n                    /* Fall back to the default icon */\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/StringEditBox.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace Klocman.Forms.Tools {\n    using System;\n    \n    \n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"4.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    public class Buttons {\n        \n        private static global::System.Resources.ResourceManager resourceMan;\n        \n        private static global::System.Globalization.CultureInfo resourceCulture;\n        \n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal Buttons() {\n        }\n        \n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        public static global::System.Resources.ResourceManager ResourceManager {\n            get {\n                if (object.ReferenceEquals(resourceMan, null)) {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"Klocman.Forms.Tools.Buttons\", typeof(Buttons).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n        \n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        public static global::System.Globalization.CultureInfo Culture {\n            get {\n                return resourceCulture;\n            }\n            set {\n                resourceCulture = value;\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add.\n        /// </summary>\n        public static string ButtonAdd {\n            get {\n                return ResourceManager.GetString(\"ButtonAdd\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cancel.\n        /// </summary>\n        public static string ButtonCancel {\n            get {\n                return ResourceManager.GetString(\"ButtonCancel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Clear.\n        /// </summary>\n        public static string ButtonClear {\n            get {\n                return ResourceManager.GetString(\"ButtonClear\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Close.\n        /// </summary>\n        public static string ButtonClose {\n            get {\n                return ResourceManager.GetString(\"ButtonClose\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Continue.\n        /// </summary>\n        public static string ButtonContinue {\n            get {\n                return ResourceManager.GetString(\"ButtonContinue\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copy.\n        /// </summary>\n        public static string ButtonCopy {\n            get {\n                return ResourceManager.GetString(\"ButtonCopy\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Create.\n        /// </summary>\n        public static string ButtonCreate {\n            get {\n                return ResourceManager.GetString(\"ButtonCreate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Details.\n        /// </summary>\n        public static string ButtonDetails {\n            get {\n                return ResourceManager.GetString(\"ButtonDetails\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don&apos;t create.\n        /// </summary>\n        public static string ButtonDontCreate {\n            get {\n                return ResourceManager.GetString(\"ButtonDontCreate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keep.\n        /// </summary>\n        public static string ButtonKeep {\n            get {\n                return ResourceManager.GetString(\"ButtonKeep\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No.\n        /// </summary>\n        public static string ButtonNo {\n            get {\n                return ResourceManager.GetString(\"ButtonNo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OK.\n        /// </summary>\n        public static string ButtonOk {\n            get {\n                return ResourceManager.GetString(\"ButtonOk\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overwrite.\n        /// </summary>\n        public static string ButtonOverwrite {\n            get {\n                return ResourceManager.GetString(\"ButtonOverwrite\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rate.\n        /// </summary>\n        public static string ButtonRate {\n            get {\n                return ResourceManager.GetString(\"ButtonRate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Remove.\n        /// </summary>\n        public static string ButtonRemove {\n            get {\n                return ResourceManager.GetString(\"ButtonRemove\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reset.\n        /// </summary>\n        public static string ButtonReset {\n            get {\n                return ResourceManager.GetString(\"ButtonReset\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Skip.\n        /// </summary>\n        public static string ButtonSkip {\n            get {\n                return ResourceManager.GetString(\"ButtonSkip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stop.\n        /// </summary>\n        public static string ButtonStop {\n            get {\n                return ResourceManager.GetString(\"ButtonStop\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Submit.\n        /// </summary>\n        public static string ButtonSubmit {\n            get {\n                return ResourceManager.GetString(\"ButtonSubmit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Terminate.\n        /// </summary>\n        public static string ButtonTerminate {\n            get {\n                return ResourceManager.GetString(\"ButtonTerminate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Uninstall.\n        /// </summary>\n        public static string ButtonUninstall {\n            get {\n                return ResourceManager.GetString(\"ButtonUninstall\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use loud.\n        /// </summary>\n        public static string ButtonUseLoud {\n            get {\n                return ResourceManager.GetString(\"ButtonUseLoud\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes.\n        /// </summary>\n        public static string ButtonYes {\n            get {\n                return ResourceManager.GetString(\"ButtonYes\", resourceCulture);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>اضافه</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>الغاء الامر</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>واضح</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>اغلاق</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>مواصله</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>نسخ</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>انشاء</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>لا تخلق</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>احتفظ</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>لا</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>موافق</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>كتابه</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>معدل</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>ازاله</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>اعاده</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>تخطي</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>توقف</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>ارسال</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>انهاء</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>الغاء التثبيت</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>استخدام بصوت عال</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>نعم</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>تفاصيل</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Přidat</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Zrušit</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Vymazat</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Zavřít</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Pokračovat</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Kopírovat</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Vytvořit</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Nevytvářet</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Zachovat</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Ne</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Přepsat</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Odstranit</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Obnovit</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Přeskočit</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Stop</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Odeslat</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Dokončit</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Odinstalovat</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Použít výchozí</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Ano</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Hodnotit</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Details</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Hinzufügen</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Abbrechen</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Löschen</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Schließen</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Weiter</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Erstellen</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Nicht erstellen</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Behalten</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Nein</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Überschreiben</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Entfernen</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Zurücksetzen</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Überspringen</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Stopp</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Senden</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Beenden</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Deinstallation</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Standard verwenden</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Ja</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Copy</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Bewerten</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Einzelheiten</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Agregar</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Limpiar</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Cerrar</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Continuar</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Copiar</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Crear</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>No crear</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Conservar</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>Ok</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Sobreescribir</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Puntuar</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Eliminar</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Reiniciar</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Omitir</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Detener</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Enviar</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Terminar</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Desinstalar</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Uso fuerte</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Si</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Detalles</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Ajouter</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Annuler</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Effacer</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Fermer</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Continuer</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Créer</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Ne pas créer</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Garder</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Non</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Écraser</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Supprimer</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Réinitialiser</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Passer</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Arrêter</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Soumettre</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Terminer</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Désinstaller</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Utiliser causant</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Oui</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Copier</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Noter</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Détails</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Hozzáad</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Mégse</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Kiürítés</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Bezárás</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Tovább</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Másolás</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Létrehozás</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Ne hozza létre</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Megtartás</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Nem</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Felülírás</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Értékelés</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Törlés</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Visszaállítás</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Kihagyás</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Leállítás</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Elküldés</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Befejezés</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Eltávolítás</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Normál</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Igen</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Részletek</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Aggiungi</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Cancella</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Pulisci</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Chiudi</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Continua</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Copia</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Crea</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Non creare</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Mantieni</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>Ok</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Sovrascrivi</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Valuta</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Rimuovi</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Resetta</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Salta</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Arresta</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Invia</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Termina</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Disinstalla</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Uso guidato</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Sì</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Dettagli</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>評価する</value>\n  </data>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>追加</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>クリア</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>閉じる</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>続ける</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>コピー</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>作成</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>作成しない</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>保持</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>いいえ</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>はい</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>上書き</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>削除</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>リセット</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>スキップ</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>停止</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>送信</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>終了する</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>アンインストール</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>騒音アンインストーラーを使う</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>はい</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>詳細</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Toevoegen</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Annuleren</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Verwijderen</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Sluiten</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Doorgaan</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Kopieer</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Creëer</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Niet creëren</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Behouden</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Nee</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Overschrijven</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Waarderen</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Verwijderen</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Terug zetten</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Overslaan</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Stop</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Indienen</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Afbreken</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>De-installeren</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Standaard gebruiken</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Ja</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Details</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Anuluj</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Wyczyść</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Zamknij</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Kontynuuj</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Utwórz</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Nie twórz</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Zatrzymaj</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Nie</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Nadpisz</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Usuń</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Resetuj</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Pomiń</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Zatrzymaj</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Wyślij</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Zakończ</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Odinstaluj</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Pozostaw</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Tak</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Kopiuj</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Oceń</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Szczegóły</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Adicionar</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Limpar</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Fechar</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Continuar</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Copiar</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Criar</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Não criar</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Manter</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Não</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Sobrescrever</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Classificar</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Remover</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Redefinir</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Pular</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Parar</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Enviar</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Finalizar</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Desinstalar</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Usar Primeiro Plano</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Sim</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Detalhes</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Adicionar</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Limpar</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Fechar</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Continuar</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Copiar</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Criar</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Não criar</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Guardar</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Não</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>Está bem</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Sobrescrever</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Classificar</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Remover</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Reiniciar</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Pular</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Parar</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Enviar</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Terminar</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Desinstalar</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Actuar</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Sim</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Pormenores</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Add</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Cancel</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Clear</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Close</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Continue</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Copy</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Create</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Don't create</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Keep</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Overwrite</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Rate</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Remove</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Reset</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Skip</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Stop</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Submit</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Terminate</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Uninstall</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Use loud</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Yes</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Details</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Добавить</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Отмена</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Очистить</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Закрыть</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Продолжить</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Копировать</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Создать</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Не создавать</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Сохранить</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Нет</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Переписать</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Оценить</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Удалить</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Сброс</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Пропустить</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Стоп</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Отправить</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Завершить</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Удалить</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>\"Громко\"</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Да</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Детали</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Prekliči</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Počisti</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Zapri</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Nadaljuj</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Kopiraj</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Ustvari</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Ne ustvari</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Obdrži</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Ne</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>Vredu</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Prepiši</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Oceni</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Odstrani</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Ponastavi</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Preskoči</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Ustavi</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Pošlji</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Prekini</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Odstrani</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Uporabi glasno</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Da</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Podrobno</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Lägg till</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Avbryta</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Rensa</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Stäng</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Fortsätt</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Kopiera</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Skapa</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Skapa inte</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Behåll</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Nej</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Skriv över</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Betygsätt</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Ta bort</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Återställ</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Hoppa över</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Stop</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Skicka in</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Avsluta</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Avinstallera</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Använd synlig</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Ja</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Detaljer</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Ekle</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>İptal</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Temizle</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Kapat</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Devam et</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Yapıştır</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Oluştur</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Oluşturma</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Sakla</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Hayır</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>Tamam</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Üzerine yaz</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Puanla</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Kaldır</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Sıfırla</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Süreci beklemeyi atla</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Dur</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Gönder</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>İşlemi sonlandır</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Kaldır</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Yüksek sesle kullan</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Evet</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Detaylar</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>Thêm</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>Huỷ</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>Dọn dẹp</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>Đóng</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>Tiếp tục</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>Sao chép</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>Tạo</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>Không tạo</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>Giữ lại</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>Không</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>Ghi đè</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>Đánh giá</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>Loại bỏ</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>Cài lại</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>Bỏ qua</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>Dừng</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>Gửi</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>Chấm dứt</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>Dùng chế độ ồn ào</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>Đúng</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>Chi tiết</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>添加</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>清除</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>继续</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>复制</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>创建</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>不要创建</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>保留</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>否</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>是</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>覆盖</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>评分</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>重置</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>跳过</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>停止</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>提交</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>终止</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>卸载</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>使用交互</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>是</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>详细信息</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/Buttons.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ButtonAdd\" xml:space=\"preserve\">\n    <value>新增</value>\n  </data>\n  <data name=\"ButtonCancel\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"ButtonClear\" xml:space=\"preserve\">\n    <value>清除</value>\n  </data>\n  <data name=\"ButtonClose\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"ButtonContinue\" xml:space=\"preserve\">\n    <value>繼續</value>\n  </data>\n  <data name=\"ButtonCopy\" xml:space=\"preserve\">\n    <value>複製</value>\n  </data>\n  <data name=\"ButtonCreate\" xml:space=\"preserve\">\n    <value>建立</value>\n  </data>\n  <data name=\"ButtonDontCreate\" xml:space=\"preserve\">\n    <value>不要建立</value>\n  </data>\n  <data name=\"ButtonKeep\" xml:space=\"preserve\">\n    <value>保留</value>\n  </data>\n  <data name=\"ButtonNo\" xml:space=\"preserve\">\n    <value>否</value>\n  </data>\n  <data name=\"ButtonOk\" xml:space=\"preserve\">\n    <value>是</value>\n  </data>\n  <data name=\"ButtonOverwrite\" xml:space=\"preserve\">\n    <value>覆寫</value>\n  </data>\n  <data name=\"ButtonRate\" xml:space=\"preserve\">\n    <value>評分</value>\n  </data>\n  <data name=\"ButtonRemove\" xml:space=\"preserve\">\n    <value>刪除</value>\n  </data>\n  <data name=\"ButtonReset\" xml:space=\"preserve\">\n    <value>重設</value>\n  </data>\n  <data name=\"ButtonSkip\" xml:space=\"preserve\">\n    <value>跳過</value>\n    <comment>Used as \"Skip waiting for process\"</comment>\n  </data>\n  <data name=\"ButtonStop\" xml:space=\"preserve\">\n    <value>停止</value>\n  </data>\n  <data name=\"ButtonSubmit\" xml:space=\"preserve\">\n    <value>上傳</value>\n  </data>\n  <data name=\"ButtonTerminate\" xml:space=\"preserve\">\n    <value>中止</value>\n    <comment>Used as \"Terminate process\"</comment>\n  </data>\n  <data name=\"ButtonUninstall\" xml:space=\"preserve\">\n    <value>移除</value>\n  </data>\n  <data name=\"ButtonUseLoud\" xml:space=\"preserve\">\n    <value>使用交互</value>\n  </data>\n  <data name=\"ButtonYes\" xml:space=\"preserve\">\n    <value>是</value>\n  </data>\n  <data name=\"ButtonDetails\" xml:space=\"preserve\">\n    <value>詳細訊息</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/Tools/ComboBoxWrapper.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\n\nnamespace Klocman.Forms.Tools\n{\n    public class ComboBoxWrapper<T>\n    {\n        public ComboBoxWrapper()\n        {\n        }\n\n        public ComboBoxWrapper(T wrappedObject)\n        {\n            WrappedObject = wrappedObject;\n        }\n\n        public ComboBoxWrapper(T wrappedObject, Func<T, string> toStringConverter) : this(wrappedObject)\n        {\n            ToStringConverter = toStringConverter;\n        }\n\n        public T WrappedObject { get; set; }\n        public Func<T, string> ToStringConverter { get; set; }\n\n        public override string ToString()\n        {\n            return ToStringConverter == null ? WrappedObject.ToString() : ToStringConverter(WrappedObject);\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/Tools/GlobalMouseMove.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Windows.Forms;\n\nnamespace Klocman.Forms.Tools\n{\n    public class GlobalMouseMove : IMessageFilter\n    {\n        private const int WM_MOUSEMOVE = 0x0200;\n\n        public bool PreFilterMessage(ref Message m)\n        {\n            if (m.Msg == WM_MOUSEMOVE)\n            {\n                MouseMove?.Invoke(this, EventArgs.Empty);\n            }\n            // Always allow message to continue to the next filter control\n            return false;\n        }\n\n        public event MouseMovedEvent MouseMove;\n\n        public void RegisterHandler()\n        {\n            Application.AddMessageFilter(this);\n        }\n\n        public void UnregisterEvent()\n        {\n            Application.RemoveMessageFilter(this);\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/Tools/MouseMovedEvent.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\n\nnamespace Klocman.Forms.Tools\n{\n    public delegate void MouseMovedEvent(object source, EventArgs args);\n}"
  },
  {
    "path": "source/KlocTools/Forms/Tools/PremadeDialogs.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Drawing;\nusing System.Reflection;\nusing System.Runtime.InteropServices;\nusing System.Text;\nusing System.Windows.Forms;\nusing Klocman.Extensions;\nusing Klocman.Properties;\nusing Klocman.Tools;\n\nnamespace Klocman.Forms.Tools\n{\n    public static class PremadeDialogs\n    {\n        public static Form DefaultOwner { get; set; }\n\n        public static Action<Exception> SendErrorAction { get; set; }\n\n        /// <summary>\n        ///     Attempt to run the specified command then catch and display any exceptions in a message box.\n        ///     True is returned if there were no exceptions thrown.\n        /// </summary>\n        public static bool StartProcessSafely(string command)\n        {\n            try\n            {\n                Process.Start(new ProcessStartInfo(command) { UseShellExecute = true });\n                return true;\n            }\n            catch (Win32Exception)\n            {\n                // Thrown then user cancels the unverified file execute dialog\n            }\n            catch (Exception ex)\n            {\n                GenericError(ex);\n            }\n            return false;\n        }\n\n        /// <summary>\n        ///     Attempt to run the specified command then catch and display any exceptions in a message box.\n        ///     True is returned if there were no exceptions thrown.\n        /// </summary>\n        public static bool StartProcessSafely(string command, string arguments)\n        {\n            try\n            {\n                Process.Start(new ProcessStartInfo(command, arguments) { UseShellExecute = true });\n                return true;\n            }\n            catch (Win32Exception)\n            {\n                // Thrown then user cancels the unverified file execute dialog\n            }\n            catch (Exception ex)\n            {\n                GenericError(ex);\n            }\n            return false;\n        }\n\n        /// <summary>\n        ///     Show a generic error message with supplied exception info. Shows all inner exceptions and stack traces as well as a\n        ///     copy button.\n        /// </summary>\n        public static void GenericError(Exception ex)\n        {\n            if (ex == null)\n                return;\n\n            Console.WriteLine(@\"Showing error message: \" + ex);\n\n            if (SendErrorAction != null)\n                SendErrorQuestion(ex);\n            else\n                GenericError(ex.Message, GetExceptionDetailString(ex));\n        }\n\n        private static string GetExceptionDetailString(Exception ex)\n        {\n            if (ex == null) return string.Empty;\n\n            var sb = new StringBuilder();\n            do\n            {\n                sb.Append(ex.GetType().FullName);\n                sb.AppendLine();\n                sb.Append(ex.Message);\n                sb.AppendLine();\n                sb.Append(ex.StackTrace);\n\n                if (ex.InnerException != null)\n                {\n                    sb.AppendLine();\n                    sb.AppendLine();\n                    sb.Append(Localisation.PremadeDialogs_GenericError_InnerExceptionTitle);\n                    sb.AppendLine();\n\n                    ex = ex.InnerException;\n                }\n                else\n                {\n                    ex = null;\n                }\n            } while (ex != null);\n\n            var details = sb.ToString();\n            return details;\n        }\n\n        public static bool KillRunningProcessesQuestion()\n        {\n            var result = false;\n\n            if (DefaultOwner != null)\n                DefaultOwner.SafeInvoke(() => result = KillRunningProcessesQuestionSafe());\n            else\n                result = KillRunningProcessesQuestionSafe();\n\n            return result;\n        }\n\n        /// <summary>\n        ///     Show a generic error message.\n        /// </summary>\n        public static void GenericError(string errorType, string additionalInfo = null)\n        {\n            if (string.IsNullOrEmpty(errorType))\n                return;\n\n            if (string.IsNullOrEmpty(additionalInfo))\n                additionalInfo = errorType;\n\n            var entryAsy = Assembly.GetEntryAssembly();\n            if (entryAsy != null)\n            {\n                entryAsy.ManifestModule.GetPEKind(out var peKind, out var machine);\n                var bits = ProcessTools.Is64BitProcess ? \"64bit\" : \"32bit\";\n                additionalInfo = $\"{entryAsy.FullName} | {peKind} | {machine} | {Environment.OSVersion} | {bits}\\n{additionalInfo}\";\n            }\n\n            if (DefaultOwner != null)\n                DefaultOwner.SafeInvoke(() => GenericErrorSafe(errorType, additionalInfo));\n            else\n                GenericErrorSafe(errorType, additionalInfo);\n        }\n\n        private static bool KillRunningProcessesQuestionSafe()\n        {\n            return CustomMessageBox.ShowDialog(DefaultOwner,\n                new CmbBasicSettings(Localisation.PremadeDialogs_KillRunningProcessesQuestion_Title,\n                    Localisation.PremadeDialogs_KillRunningProcessesQuestion_Message,\n                    Localisation.PremadeDialogs_KillRunningProcessesQuestion_Details\n                    , SystemIcons.Question, Buttons.ButtonOk, Buttons.ButtonCancel))\n                   == CustomMessageBox.PressedButton.Middle;\n        }\n\n        /// <summary>\n        ///     If user choses to send error information, SendErrorAction is called.\n        /// </summary>\n        private static void SendErrorQuestion(Exception ex)\n        {\n            switch (CustomMessageBox.ShowDialog(DefaultOwner,\n                new CmbBasicSettings(Localisation.PremadeDialogs_GenericError_Title,\n                    Localisation.PremadeDialogs_GenericError_Heading,\n                    string.Format(Localisation.PremadeDialogs_GenericError_Details, ex.Message), SystemIcons.Error,\n                    Buttons.ButtonSubmit, Buttons.ButtonCopy, Buttons.ButtonClose)))\n            {\n                case CustomMessageBox.PressedButton.Left:\n                    SendErrorAction.Invoke(ex);\n                    break;\n\n                case CustomMessageBox.PressedButton.Middle:\n                    var fullInfo = GetExceptionDetailString(ex);\n                    try\n                    {\n                        if (DefaultOwner != null)\n                            DefaultOwner.SafeInvoke(() => Clipboard.SetText(fullInfo));\n                        else\n                            Clipboard.SetText(fullInfo);\n                    }\n                    catch (ExternalException)\n                    {\n                    }\n                    break;\n            }\n        }\n\n        private static void GenericErrorSafe(string errorType, string fullInfo)\n        {\n            switch (CustomMessageBox.ShowDialog(DefaultOwner,\n                new CmbBasicSettings(Localisation.PremadeDialogs_GenericError_Title,\n                    Localisation.PremadeDialogs_GenericError_Heading,\n                    string.Format(Localisation.PremadeDialogs_GenericError_Details, errorType), SystemIcons.Error,\n                    Buttons.ButtonCopy, Buttons.ButtonDetails, Buttons.ButtonClose)))\n            {\n                case CustomMessageBox.PressedButton.Middle:\n                    GenericErrorExtendedSafe(fullInfo);\n                    break;\n\n                case CustomMessageBox.PressedButton.Left:\n                    try\n                    {\n                        if (DefaultOwner != null)\n                            DefaultOwner.SafeInvoke(() => Clipboard.SetText(fullInfo));\n                        else\n                            Clipboard.SetText(fullInfo);\n                    }\n                    catch (ExternalException)\n                    {\n                    }\n                    break;\n            }\n        }\n\n        private static void GenericErrorExtendedSafe(string fullInfo)\n        {\n            var trimmed = fullInfo.Length > 1000 ? fullInfo.Substring(0, 997) + \"...\" : fullInfo;\n\n            if (CustomMessageBox.ShowDialog(DefaultOwner,\n                new CmbBasicSettings(Localisation.PremadeDialogs_GenericError_Title,\n                    Localisation.PremadeDialogs_GenericErrorExtendedSafe_Heading, trimmed, SystemIcons.Error,\n                    Buttons.ButtonCopy, Buttons.ButtonClose)) == CustomMessageBox.PressedButton.Middle)\n            {\n                try\n                {\n                    if (DefaultOwner != null)\n                        DefaultOwner.SafeInvoke(() => Clipboard.SetText(fullInfo));\n                    else\n                        Clipboard.SetText(fullInfo);\n                }\n                catch (ExternalException)\n                {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/Tools/ReferencedComponent.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.ComponentModel.Design;\nusing System.Windows.Forms;\n\nnamespace Klocman.Forms.Tools\n{\n    public abstract class ReferencedComponent : Component \n    {\n        private ContainerControl _containerControl;\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public ContainerControl ContainerControl\n        {\n            get { return _containerControl; }\n            set\n            {\n                if (!DesignMode)\n                {\n                    if (_containerControl != null)\n                        throw new InvalidOperationException(\"ContainerControl can be set only once\");\n\n                    _containerControl = value;\n\n                    if (_containerControl.Visible)\n                        ContainerVisibleChanged(this, EventArgs.Empty);\n                    else\n                        _containerControl.VisibleChanged += ContainerVisibleChanged;\n                }\n                else\n                {\n                    _containerControl = value;\n                }\n\n                OnContainerControlChanged(this, EventArgs.Empty);\n            }\n        }\n\n        /// <summary>\n        ///     Automatically populate ContainerForm when added using designer\n        /// </summary>\n        public override ISite Site\n        {\n            get { return base.Site; }\n            set\n            {\n                base.Site = value;\n                if (value == null)\n                    return;\n\n                var host = value.GetService(typeof (IDesignerHost)) as IDesignerHost;\n                if (host?.RootComponent is ContainerControl control)\n                    ContainerControl = control;\n            }\n        }\n\n        private void ContainerVisibleChanged(object obj, EventArgs args)\n        {\n            if (!_containerControl.Visible) return;\n            _containerControl.VisibleChanged -= ContainerVisibleChanged;\n\n            OnContainerInitialized(obj, args);\n        }\n\n        protected virtual void OnContainerControlChanged(object obj, EventArgs args)\n        {\n        }\n\n        protected virtual void OnContainerInitialized(object obj, EventArgs args)\n        {\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/Tools/SingleColorTable.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Drawing;\nusing System.Windows.Forms;\n\nnamespace Klocman.Forms.Tools\n{\n    public class SingleColorTable : ProfessionalColorTable\n    {\n        public SingleColorTable(Color color)\n        {\n            SelectedColor = color;\n        }\n\n        public Color SelectedColor { get; set; }\n        public override Color ToolStripGradientBegin => SelectedColor;\n        public override Color ToolStripGradientMiddle => SelectedColor;\n        public override Color ToolStripGradientEnd => SelectedColor;\n        public override Color MenuStripGradientBegin => SelectedColor;\n        public override Color MenuStripGradientEnd => SelectedColor;\n        public override Color StatusStripGradientBegin => SelectedColor;\n        public override Color StatusStripGradientEnd => SelectedColor;\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/Tools/StandardSystemColorTable.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Drawing;\nusing System.Windows.Forms;\n\nnamespace Klocman.Forms.Tools\n{\n    //Add this to the bottom of your form. (After your class ends)\n    public class StandardSystemColorTable : ProfessionalColorTable\n    {\n        public override Color ToolStripGradientBegin => SystemColors.Control;\n        public override Color ToolStripGradientMiddle => SystemColors.Control;\n        public override Color ToolStripGradientEnd => SystemColors.Control;\n        public override Color MenuStripGradientBegin => SystemColors.MenuBar;\n        public override Color MenuStripGradientEnd => SystemColors.MenuBar;\n        public override Color StatusStripGradientBegin => SystemColors.MenuBar;\n        public override Color StatusStripGradientEnd => SystemColors.MenuBar;\n    }\n\n    //Add this to the bottom of your form. (After your class ends)\n}"
  },
  {
    "path": "source/KlocTools/Forms/Tools/WindowStyleController.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Windows.Forms;\nusing Klocman.Extensions;\n\nnamespace Klocman.Forms.Tools\n{\n    /// <summary>\n    ///     Allows easy acces to FlatStyle and ToolStripRenderMode properties of all child controls.\n    ///     It is possible to switch between System and Standard/ManagerRenderMode with one method call.\n    /// </summary>\n    public class WindowStyleController\n    {\n        private readonly Form _reference;\n        private readonly List<Action<bool>> _targets = new();\n\n        public WindowStyleController(Form parentForm)\n        {\n            _reference = parentForm;\n\n            var children = parentForm.GetAllChildren(CanBeChanged).Concat(parentForm.GetComponents().Where(CanBeChanged));\n\n            foreach (var item in children)\n            {\n                var type = item.GetType();\n                var property = type.GetProperty(\"FlatStyle\");\n                if (property != null)\n                {\n                    _targets.Add(x => property.SetValue(item, x ? FlatStyle.System : FlatStyle.Standard, null));\n                }\n                else\n                {\n                    property = type.GetProperty(\"RenderMode\");\n                    if (property != null)\n                    {\n                        _targets.Add(\n                            x =>\n                                property.SetValue(item,\n                                    x ? ToolStripRenderMode.System : ToolStripRenderMode.ManagerRenderMode, null));\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Switch between System (if true) and Standard/ManagerRenderMode (if false);\n        /// </summary>\n        /// <param name=\"useSystemStyle\">Use system style for all child controls.</param>\n        public void SetStyles(bool useSystemStyle)\n        {\n            _reference.SuspendLayout();\n            foreach (var child in _targets)\n            {\n                child(useSystemStyle);\n            }\n            _reference.ResumeLayout();\n        }\n\n        private static bool CanBeChanged(Component x)\n        {\n            var attrib =\n                x.GetType()\n                    .GetCustomAttributes(typeof (ControlStyleAttribute), true)\n                    .Cast<ControlStyleAttribute>()\n                    .FirstOrDefault();\n            return attrib == null || attrib.AllowStyleChange;\n        }\n\n        public class ControlStyleAttribute : Attribute\n        {\n            public ControlStyleAttribute(bool allowStyleChange)\n            {\n                AllowStyleChange = allowStyleChange;\n            }\n\n            public bool AllowStyleChange { get; }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.Designer.cs",
    "content": "﻿namespace Klocman.Forms\n{\n    partial class WindowTargeterDialog\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WindowTargeterDialog));\n            windowTargeter1 = new Klocman.Controls.WindowTargeter();\n            SuspendLayout();\n            // \n            // windowTargeter1\n            // \n            resources.ApplyResources(windowTargeter1, \"windowTargeter1\");\n            windowTargeter1.Name = \"windowTargeter1\";\n            // \n            // WindowTargeterDialog\n            // \n            resources.ApplyResources(this, \"$this\");\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            Controls.Add(windowTargeter1);\n            FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;\n            Name = \"WindowTargeterDialog\";\n            ResumeLayout(false);\n\n        }\n\n        #endregion\n\n        private Controls.WindowTargeter windowTargeter1;\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>ابحث عن نافذه...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Drawing;\nusing System.Windows.Forms;\nusing Klocman.Subsystems;\n\nnamespace Klocman.Forms\n{\n    public partial class WindowTargeterDialog : Form\n    {\n        private WindowHoverSearcher.WindowInfo _result;\n\n        private WindowTargeterDialog()\n        {\n            InitializeComponent();\n\n            windowTargeter1.WindowSelected += OnWindowSelected;\n        }\n\n        public static WindowHoverSearcher.WindowInfo ShowDialog(IWin32Window owner, bool useCursorPos)\n        {\n            using (var window = new WindowTargeterDialog())\n            {\n                if (useCursorPos)\n                {\n                    window.StartPosition = FormStartPosition.Manual;\n                    var targeterHalf = window.windowTargeter1.Height / 2;\n                    var offsetx = targeterHalf + 10;\n                    var offsety = targeterHalf + 30;\n                    window.Location = new Point(Cursor.Position.X - offsetx, Cursor.Position.Y - offsety);\n                }\n                else\n                {\n                    window.StartPosition = FormStartPosition.CenterParent;\n                }\n\n                return window.ShowDialog(owner) != DialogResult.OK ? null : window._result;\n            }\n        }\n\n        private void OnWindowSelected(object sender, WindowHoverEventArgs windowHoverEventArgs)\n        {\n            _result = windowHoverEventArgs.TargetWindow;\n            DialogResult = DialogResult.OK;\n            Close();\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Podívejte se na okno ...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Suche nach einem Fenster ...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Buscar una ventana...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Chercher une fenêtre...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Egy ablak megkeresése...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Cerca una finestra...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>ウィンドウを探す...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Zoeken met venster...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Szukaj okna...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Procure uma janela...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Procutrar uma janela...</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals of this format is to allow a simple XML format\n    that is mostly human readable. The generation and parsing of the\n    various data types are done through the TypeConverter classes\n    associated with the data types.\n\n    Example:\n\n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n\n    There are any number of \"resheader\" rows that contain simple\n    name/value pairs.\n\n    Each data row contains a name, and value. The row also contains a\n    type or mimetype. Type corresponds to a .NET class that support\n    text/value conversion through the TypeConverter architecture.\n    Classes that don't support this are serialized and stored with the\n    mimetype set.\n\n    The mimetype is used for serialized objects, and tells the\n    ResXResourceReader how to depersist the object. This is currently not\n    extensible. For a given mimetype the value must be set accordingly:\n\n    Note - application/x-microsoft.net.object.binary.base64 is the format\n    that the ResXResourceWriter will generate, however the reader can\n    read any of the formats listed below.\n\n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array\n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"windowTargeter1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Top</value>\n  </data>\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\n  <data name=\"windowTargeter1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>5, 5</value>\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"windowTargeter1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>5, 3, 5, 3</value>\n  </data>\n  <data name=\"windowTargeter1.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>11666666, 74</value>\n  </data>\n  <data name=\"windowTargeter1.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>0, 74</value>\n  </data>\n  <data name=\"windowTargeter1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>345, 74</value>\n  </data>\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"windowTargeter1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"&gt;&gt;windowTargeter1.Name\" xml:space=\"preserve\">\n    <value>windowTargeter1</value>\n  </data>\n  <data name=\"&gt;&gt;windowTargeter1.Type\" xml:space=\"preserve\">\n    <value>Klocman.Controls.WindowTargeter, KlocTools, Culture=neutral, PublicKeyToken=null</value>\n  </data>\n  <data name=\"&gt;&gt;windowTargeter1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;windowTargeter1.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\n    <value>7, 15</value>\n  </data>\n  <data name=\"$this.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"$this.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\n    <value>GrowAndShrink</value>\n  </data>\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>355, 118</value>\n  </data>\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"$this.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>371, 1153846055</value>\n  </data>\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>371, 86</value>\n  </data>\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>5, 5, 5, 5</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Look for a window...</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\n    <value>WindowTargeterDialog</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Выберите окно...</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Poglej za okno...</value>\n  </data>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Leta efter ett fönster...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Bir pencere ara...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Tìm kiếm cửa sổ...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>查找窗口...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Forms/WindowTargeterDialog.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>尋找視窗...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/IO/AdvancedFileInfo.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Diagnostics;\nusing System.IO;\nusing Klocman.Localising;\nusing Klocman.Properties;\n\nnamespace Klocman.IO\n{\n    /// <summary>\n    ///     Advanced file information\n    /// </summary>\n    public class AdvancedFileInfo\n    {\n        private readonly FileInfo _fileInfo;\n        private readonly FileVersionInfo _versionInfo;\n\n        private AdvancedFileInfo(FileInfo fileInfo, FileVersionInfo versionInfo)\n        {\n            _fileInfo = fileInfo;\n            _versionInfo = versionInfo;\n        }\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_CreationTime))]\n        public DateTime CreationTime\n        {\n            get { return _fileInfo.CreationTime; }\n            set { _fileInfo.CreationTime = value; }\n        }\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_LastAccessTime))]\n        public DateTime LastAccessTime\n        {\n            get { return _fileInfo.LastAccessTime; }\n            set { _fileInfo.LastAccessTime = value; }\n        }\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_LastWriteTime))]\n        public DateTime LastWriteTime\n        {\n            get { return _fileInfo.LastWriteTime; }\n            set { _fileInfo.LastWriteTime = value; }\n        }\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_Attributes))]\n        public FileAttributes Attributes\n        {\n            get { return _fileInfo.Attributes; }\n            set { _fileInfo.Attributes = value; }\n        }\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_IsReadOnly))]\n        public bool IsReadOnly\n        {\n            get { return _fileInfo.IsReadOnly; }\n            set { _fileInfo.IsReadOnly = value; }\n        }\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_FullName))]\n        public string FullName => _fileInfo.FullName;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_FileName))]\n        public string FileName => _fileInfo.Name;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_Size))]\n        public FileSize Size => FileSize.FromBytes(_fileInfo.Length);\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_Directory))]\n        public DirectoryInfo Directory => _fileInfo.Directory;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_Exists))]\n        public bool Exists => _fileInfo.Exists;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_Comments))]\n        public string Comments => _versionInfo?.Comments;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_CompanyName))]\n        public string CompanyName => _versionInfo?.CompanyName;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_FileDescription))]\n        public string FileDescription => _versionInfo?.FileDescription;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_FileVersion))]\n        public Version FileVersion => _versionInfo == null\n            ? null\n            : new Version(_versionInfo.FileMajorPart, _versionInfo.FileMinorPart, _versionInfo.FileBuildPart,\n                _versionInfo.FilePrivatePart);\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_InternalName))]\n        public string InternalName => _versionInfo?.InternalName;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_Language))]\n        public string Language => _versionInfo?.Language;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_LegalCopyright))]\n        public string LegalCopyright => _versionInfo?.LegalCopyright;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_LegalTrademarks))]\n        public string LegalTrademarks => _versionInfo?.LegalTrademarks;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_OriginalFilename))]\n        public string OriginalFilename => _versionInfo?.OriginalFilename;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_ProductName))]\n        public string ProductName => _versionInfo?.ProductName;\n\n        [LocalisedName(typeof (Localisation), nameof(Localisation.FileInfo_ProductVersion))]\n        public Version ProductVersion => _versionInfo == null\n            ? null\n            : new Version(_versionInfo.ProductMajorPart, _versionInfo.ProductMinorPart,\n                _versionInfo.ProductBuildPart, _versionInfo.ProductPrivatePart);\n\n        public static AdvancedFileInfo FromPath(string filePath)\n        {\n            FileVersionInfo fileVersionInfo;\n\n            try\n            {\n                fileVersionInfo = FileVersionInfo.GetVersionInfo(filePath);\n            }\n            catch\n            {\n                fileVersionInfo = null;\n            }\n\n            return new AdvancedFileInfo(new FileInfo(filePath), fileVersionInfo);\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/IO/Arguments.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Text;\nusing System.Text.RegularExpressions;\n\nnamespace Klocman.IO\n{\n    /// <summary>\n    /// Command Line Argument Parser\n    /// http://jake.ginnivan.net/c-sharp-argument-parser/\n    /// </summary>\n    public class Arguments\n    {\n        /// <summary>\n        /// Splits the command line. When main(string[] args) is used escaped quotes (ie a path \"c:\\folder\\\")\n        /// Will consume all the following command line arguments as the one argument. \n        /// This function ignores escaped quotes making handling paths much easier.\n        /// </summary>\n        /// <param name=\"commandLine\">The command line.</param>\n        /// <param name=\"removeMatchingQuotes\">If false, leave the quotes</param>\n        /// <returns></returns>\n        public static string[] SplitCommandLine(string commandLine, bool removeMatchingQuotes = true)\n        {\n            var translatedArguments = new StringBuilder(commandLine);\n            var escaped = false;\n            for (var i = 0; i < translatedArguments.Length; i++)\n            {\n                if (translatedArguments[i] == '\"')\n                {\n                    escaped = !escaped;\n                }\n                if (translatedArguments[i] == ' ' && !escaped)\n                {\n                    translatedArguments[i] = '\\n';\n                }\n            }\n\n            var toReturn = translatedArguments.ToString().Split(new[] { '\\n' }, StringSplitOptions.RemoveEmptyEntries);\n\n            if (removeMatchingQuotes)\n            {\n                for (var i = 0; i < toReturn.Length; i++)\n                {\n                    toReturn[i] = RemoveMatchingQuotes(toReturn[i]);\n                }\n            }\n\n            return toReturn;\n        }\n\n        public static string RemoveMatchingQuotes(string stringToTrim)\n        {\n            var firstQuoteIndex = stringToTrim.IndexOf('\"');\n            var lastQuoteIndex = stringToTrim.LastIndexOf('\"');\n            while (firstQuoteIndex != lastQuoteIndex)\n            {\n                stringToTrim = stringToTrim.Remove(firstQuoteIndex, 1);\n                stringToTrim = stringToTrim.Remove(lastQuoteIndex - 1, 1); //-1 because we've shifted the indicies left by one\n                firstQuoteIndex = stringToTrim.IndexOf('\"');\n                lastQuoteIndex = stringToTrim.LastIndexOf('\"');\n            }\n\n            return stringToTrim;\n        }\n\n        private readonly Dictionary<string, Collection<string>> _parameters;\n        private string _waitingParameter;\n\n        public Arguments(IEnumerable<string> arguments)\n        {\n            _parameters = new Dictionary<string, Collection<string>>();\n\n            //Splits on beginning of arguments ( - and -- and / )\n            //And on assignment operators ( = and : )\n            var argumentSplitter = new Regex(@\"^-{1,2}|^/|=|:\",\n                RegexOptions.IgnoreCase | RegexOptions.Compiled);\n\n            foreach (var argument in arguments)\n            {\n                var parts = argumentSplitter.Split(argument, 3);\n                switch (parts.Length)\n                {\n                    case 1:\n                        AddValueToWaitingArgument(parts[0]);\n                        break;\n                    case 2:\n                        AddWaitingArgumentAsFlag();\n\n                        //Because of the split index 0 will be a empty string\n                        _waitingParameter = parts[1];\n                        break;\n                    case 3:\n                        AddWaitingArgumentAsFlag();\n\n                        //Because of the split index 0 will be a empty string\n                        string valuesWithoutQuotes = RemoveMatchingQuotes(parts[2]);\n\n                        AddListValues(parts[1], valuesWithoutQuotes.Split(','));\n                        break;\n                }\n            }\n\n            AddWaitingArgumentAsFlag();\n        }\n\n        private void AddListValues(string argument, IEnumerable<string> values)\n        {\n            foreach (var listValue in values)\n            {\n                Add(argument, listValue);\n            }\n        }\n\n        private void AddWaitingArgumentAsFlag()\n        {\n            if (_waitingParameter == null) return;\n\n            AddSingle(_waitingParameter, \"true\");\n            _waitingParameter = null;\n        }\n\n        private void AddValueToWaitingArgument(string value)\n        {\n            if (_waitingParameter == null) return;\n\n            value = RemoveMatchingQuotes(value);\n\n            Add(_waitingParameter, value);\n            _waitingParameter = null;\n        }\n\n        /// <summary>\n        /// Gets the count.\n        /// </summary>\n        /// <value>The count.</value>\n        public int Count => _parameters.Count;\n\n        /// <summary>\n        /// Adds the specified argument.\n        /// </summary>\n        /// <param name=\"argument\">The argument.</param>\n        /// <param name=\"value\">The value.</param>\n        public void Add(string argument, string value)\n        {\n            if (!_parameters.ContainsKey(argument))\n                _parameters.Add(argument, new Collection<string>());\n\n            _parameters[argument].Add(value);\n        }\n\n        public void AddSingle(string argument, string value)\n        {\n            if (!_parameters.ContainsKey(argument))\n                _parameters.Add(argument, new Collection<string>());\n            else\n                throw new ArgumentException($\"Argument {argument} has already been defined\");\n\n            _parameters[argument].Add(value);\n        }\n\n        public void Remove(string argument)\n        {\n            if (_parameters.ContainsKey(argument))\n                _parameters.Remove(argument);\n        }\n\n        /// <summary>\n        /// Determines whether the specified argument is true.\n        /// </summary>\n        /// <param name=\"argument\">The argument.</param>\n        /// <returns>\n        ///     <c>true</c> if the specified argument is true; otherwise, <c>false</c>.\n        /// </returns>\n        public bool IsTrue(string argument)\n        {\n            AssertSingle(argument);\n\n            var arg = this[argument];\n\n            return arg != null && arg[0].Equals(\"true\", StringComparison.OrdinalIgnoreCase);\n        }\n\n        private void AssertSingle(string argument)\n        {\n            if (this[argument] != null && this[argument].Count > 1)\n                throw new ArgumentException($\"{argument} has been specified more than once, expecting single value\");\n        }\n\n        public string Single(string argument)\n        {\n            AssertSingle(argument);\n\n            //only return value if its NOT true, there is only a single item for that argument\n            //and the argument is defined\n            if (this[argument] != null && !IsTrue(argument))\n                return this[argument][0];\n\n            return null;\n        }\n\n        public bool Exists(string argument)\n        {\n            return (this[argument] != null && this[argument].Count > 0);\n        }\n\n        /// <summary>\n        /// Gets the <see cref=\"System.Collections.ObjectModel.Collection&lt;T&gt;\"/> with the specified parameter.\n        /// </summary>\n        /// <value></value>\n        public Collection<string> this[string parameter] => _parameters.ContainsKey(parameter) ? _parameters[parameter] : null;\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/IO/DismTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing Klocman.Native;\nusing Klocman.Tools;\n\nnamespace Klocman.IO\n{\n    public static class DismTools\n    {\n        public static readonly string DismFullPath = Path.Combine(WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_SYSTEM),\n            \"Dism.exe\");\n\n        private static bool? _dismIsAvailable;\n\n        public static bool DismIsAvailable\n        {\n            get\n            {\n                if (!_dismIsAvailable.HasValue)\n                {\n                    _dismIsAvailable = File.Exists(DismFullPath);\n                }\n                return _dismIsAvailable.Value;\n            }\n        }\n\n        /// <summary>\n        /// Get a list of feature names and their status (true for enabled)\n        /// </summary>\n        public static IEnumerable<KeyValuePair<string, bool>> GetWindowsFeatures()\n        {\n            var output = RunDismCommand(\"/english /format:list /online /get-features\");\n\n            var results = new List<KeyValuePair<string, bool>>();\n            string storedFeatureName = null;\n\n            foreach (var line in output.Split(StringTools.NewLineChars.ToArray(), StringSplitOptions.RemoveEmptyEntries))\n            {\n                if (line.StartsWith(\"Feature Name\", StringComparison.Ordinal))\n                {\n                    storedFeatureName = line.Substring(line.IndexOf(':') + 2);\n                }\n                else if (line.StartsWith(\"State\", StringComparison.Ordinal))\n                {\n                    if (storedFeatureName == null)\n                        throw new InvalidDataException(\"Dism output has invalid format\");\n\n                    var isEnabled = line.Substring(line.IndexOf(':') + 1)\n                        .TrimStart()\n                        .Equals(\"Enabled\", StringComparison.InvariantCultureIgnoreCase);\n                    results.Add(new KeyValuePair<string, bool>(storedFeatureName, isEnabled));\n                    storedFeatureName = null;\n                }\n            }\n\n            return results;\n        }\n\n        private static string RunDismCommand(string command)\n        {\n            var psi = new ProcessStartInfo(DismFullPath, command)\n            {\n                UseShellExecute = false,\n                RedirectStandardOutput = true,\n                RedirectStandardError = false,\n                CreateNoWindow = true,\n                StandardOutputEncoding = Encoding.GetEncoding(850)\n            };\n\n            var process = Process.Start(psi);\n\n            Debug.Assert(process != null);\n            var output = process.StandardOutput.ReadToEnd();\n\n            process.WaitForExit();\n\n            if (process.ExitCode != 0)\n            {\n                var code = process.ExitCode.ToString();\n                var index = output.IndexOf(code, StringComparison.InvariantCulture);\n                throw new IOException(\"Dism returned error code \" + code,\n                    new Exception(index > 0 ? output.Substring(index + code.Length).Trim() : output));\n            }\n            return output;\n        }\n\n        public static WindowsFeatureInfo GetFeatureInfo(string featureName)\n        {\n            var output = RunDismCommand(\"/english /format:list /online /get-featureinfo /featurename=\" +\n                                        '\\\"' + featureName + '\\\"');\n\n            return FromDismOutput(output);\n        }\n\n        public static string GetDismUninstallString(string featureName, bool silent)\n        {\n            return string.Format(\"Dism.exe /norestart {1}/online /disable-feature /featurename=\\\"{0}\\\"\",\n                featureName, silent ? \"/quiet \" : string.Empty);\n        }\n\n        private static WindowsFeatureInfo FromDismOutput(string output)\n        {\n            var result = new WindowsFeatureInfo();\n\n            foreach (var line in output\n                .Split(StringTools.NewLineChars.ToArray(), StringSplitOptions.RemoveEmptyEntries))\n            {\n                if (!line.Contains(':'))\n                    continue;\n\n                var data = line.Substring(line.IndexOf(':') + 1).TrimStart();\n\n                if (line.StartsWith(\"Feature Name\", StringComparison.Ordinal))\n                    result.FeatureName = data;\n                else if (line.StartsWith(\"State\", StringComparison.Ordinal))\n                    result.Enabled = data.Equals(\"Enabled\", StringComparison.InvariantCultureIgnoreCase);\n                else if (line.StartsWith(\"Display Name\", StringComparison.Ordinal))\n                    result.DisplayName = data;\n                else if (line.StartsWith(\"Restart Required\", StringComparison.Ordinal))\n                    result.RestartRequired = data;\n                else if (line.StartsWith(\"Description\", StringComparison.Ordinal))\n                    result.Description = data;\n            }\n\n            return string.IsNullOrEmpty(result.FeatureName) ? null : result;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/IO/FileSize.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Xml;\nusing System.Xml.Schema;\nusing System.Xml.Serialization;\nusing Klocman.Properties;\n\nnamespace Klocman.IO\n{\n    public struct FileSize : IXmlSerializable, IComparable<FileSize>, IEquatable<FileSize>, IComparable\n    {\n        public enum SizeRange\n        {\n            None = 0,\n            Kb,\n            Mb,\n            Gb,\n            Tb\n        }\n\n        public static FileSize SumFileSizes(IEnumerable<FileSize> sizes)\n        {\n            return FromKilobytes(sizes.Sum(x => x.GetKbSize()));\n        }\n\n        public static readonly FileSize Empty = new(0);\n        private long _sizeInKb;\n\n        public FileSize(long kiloBytes)\n        {\n            _sizeInKb = kiloBytes;\n        }\n\n        public static bool operator !=(FileSize a, FileSize b)\n        {\n            return !a.Equals(b);\n        }\n\n        public static FileSize operator +(FileSize a, FileSize b)\n        {\n            return new FileSize(a._sizeInKb + b._sizeInKb);\n        }\n\n        public static FileSize operator -(FileSize a, FileSize b)\n        {\n            return new FileSize(a._sizeInKb - b._sizeInKb);\n        }\n\n        public static bool operator ==(FileSize a, FileSize b)\n        {\n            return a.Equals(b);\n        }\n\n        public static FileSize FromBytes(long bytes)\n        {\n            if (bytes < 0)\n                bytes = 0;\n            return new FileSize(bytes / 1024);\n        }\n\n        public static FileSize FromKilobytes(long kiloBytes)\n        {\n            if (kiloBytes < 0)\n                kiloBytes = 0;\n\n            return new FileSize(kiloBytes);\n        }\n\n        public int CompareTo(object obj)\n        {\n            return obj is FileSize other ? CompareTo(other) : 0;\n        }\n\n        public override bool Equals(object obj)\n        {\n            return obj is FileSize other && Equals(other);\n        }\n\n        public override int GetHashCode()\n        {\n            return _sizeInKb.GetHashCode();\n        }\n\n        public int CompareTo(FileSize other)\n        {\n            return _sizeInKb.CompareTo(other._sizeInKb);\n        }\n\n        public bool Equals(FileSize other)\n        {\n            return _sizeInKb == other._sizeInKb;\n        }\n        \n        /// <summary>\n        ///     Empty items return long.MaxValue. For use in sorting\n        /// </summary>\n        public long GetKbSize(bool treatEmptyAsLargest = false)\n        {\n            if (treatEmptyAsLargest && _sizeInKb <= 0)\n                return long.MaxValue;\n            return _sizeInKb;\n        }\n\n        /// <summary>\n        ///     Returns string representation of the unif of this FileSize.\n        ///     (eg. Megabytes, Kilobytes)\n        /// </summary>\n        public string GetUnitName()\n        {\n            return GetUnitName(_sizeInKb);\n        }\n\n        /// <inheritdoc cref=\"GetUnitName()\"/>\n        public static string GetUnitName(long sizeInKb)\n        {\n            var tempSize = sizeInKb;\n            if (tempSize <= 0)\n                return string.Empty;\n\n            if (tempSize < 1000)\n                return Localisation.FileSize_KB_Long;\n\n            tempSize /= 1024;\n            if (tempSize < 1000)\n                return Localisation.FileSize_MB_Long;\n\n            tempSize /= 1024;\n            if (tempSize < 1000)\n                return Localisation.FileSize_GB_Long;\n\n            return Localisation.FileSize_TB_Long;\n        }\n\n        public float GetCompactSize(out SizeRange sizeRange)\n        {\n            sizeRange = SizeRange.None;\n\n            if (_sizeInKb <= 0)\n                return 0;\n\n            sizeRange = SizeRange.Kb;\n            var tempSize = (double)_sizeInKb;\n            if (tempSize < 1024)\n                return (float)tempSize;\n\n            sizeRange = SizeRange.Mb;\n            tempSize /= 1024;\n            if (tempSize < 1024)\n                return (float)tempSize;\n\n            sizeRange = SizeRange.Gb;\n            tempSize /= 1024;\n            if (tempSize < 1024)\n                return (float)tempSize;\n\n            sizeRange = SizeRange.Tb;\n            tempSize /= 1024;\n            return (float)tempSize;\n        }\n\n        /// <summary>\n        ///     Returns string representation of the filesize in format \"Number.Decimal ShortName\"\n        ///     (eg. 32,51 MB, 1021 KB)\n        /// </summary>\n        public override string ToString()\n        {\n            return ToString(false);\n        }\n\n        /// <summary>\n        ///     Returns string representation of the filesize in format \"Number.Decimal LongName\"\n        ///     (eg. 32,51 Megabytes, 1021 Kilobytes)\n        /// </summary>\n        public string ToString(bool longFormat)\n        {\n            var value = GetCompactSize(out var range);\n\n            if (range == SizeRange.None || value <= 0)\n                return string.Empty;\n\n            return string.Format(\"{0} {1}\", Math.Round(value, 2), GetRangeString(range, longFormat));\n        }\n\n        private static string GetRangeString(SizeRange range, bool longString)\n        {\n            if (range == SizeRange.None)\n                return string.Empty;\n\n            string rangeName;\n            switch (range)\n            {\n                case SizeRange.Tb:\n                    rangeName = longString ? Localisation.FileSize_TB_Long : Localisation.FileSize_TB_Short;\n                    break;\n                case SizeRange.Gb:\n                    rangeName = longString ? Localisation.FileSize_GB_Long : Localisation.FileSize_GB_Short;\n                    break;\n                case SizeRange.Mb:\n                    rangeName = longString ? Localisation.FileSize_MB_Long : Localisation.FileSize_MB_Short;\n                    break;\n                case SizeRange.Kb:\n                    rangeName = longString ? Localisation.FileSize_KB_Long : Localisation.FileSize_KB_Short;\n                    break;\n\n                default:\n                    throw new ArgumentOutOfRangeException(nameof(range), range, @\"Unknown range\");\n            }\n\n            return rangeName;\n        }\n\n\n        public XmlSchema GetSchema() { return null; }\n\n        public void ReadXml(XmlReader reader)\n        {\n            if (reader.MoveToContent() == XmlNodeType.Element)\n            {\n                reader.Read();\n                if (reader.HasValue)\n                {\n                    _sizeInKb = long.Parse(reader.Value);\n                    reader.Read();\n                }\n                reader.ReadEndElement();\n            }\n        }\n\n        public void WriteXml(XmlWriter writer)\n        {\n            writer.WriteValue(_sizeInKb);\n        }\n\n        public long GetRoundedKbSize()\n        {\n            var size = _sizeInKb;\n            if (size <= 0) return 0;\n            var result = 1;\n            while(size >= 1024)\n            {\n                size /= 1024;\n                result *= 1024;\n            }\n            return result;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/IO/MsiTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Concurrent;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Security.Cryptography.X509Certificates;\nusing System.Text;\nusing Klocman.Extensions;\nusing Klocman.Native;\nusing Klocman.Tools;\nusing Microsoft.Win32.Interop;\n\nnamespace Klocman.IO\n{\n    public static class MsiTools\n    {\n        private static readonly int[] GuidRegistryFormatPattern = { 8, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2 };\n\n        public static IEnumerable<Guid> MsiEnumProducts()\n        {\n            var sbProductCode = new StringBuilder(39);\n            var iIdx = 0;\n\n            while (MsiWrapper.MsiEnumProducts(iIdx++, sbProductCode) == 0)\n            {\n                var guidString = sbProductCode.ToString();\n                if (GuidTools.GuidTryParse(guidString, out var guid))\n                    yield return guid;\n                else\n                    Console.WriteLine($@\"Invalid MSI guid in MsiEnumProducts: {guidString}\");\n            }\n        }\n\n        public static string MsiGetProductInfo(Guid productCode, MsiWrapper.INSTALLPROPERTY property)\n        {\n            var propertyLen = 512;\n            var sbProperty = new StringBuilder(propertyLen);\n\n            var code = MsiWrapper.MsiGetProductInfo(productCode.ToString(\"B\"), property.PropertyName, sbProperty,\n                ref propertyLen);\n\n            //if (code != 0)\n            //    throw new System.IO.IOException(\"MsiGetProductInfo returned error code \" + code);\n\n            //If code is 0 prevent returning junk\n            return code != 0 ? null : sbProperty.ToString();\n        }\n\n        public static Guid ConvertBetweenUpgradeAndProductCode(Guid from)\n        {\n            return new Guid(from.ToString(\"N\").Reverse(GuidRegistryFormatPattern));\n        }\n\n        public static X509Certificate2 GetCertificate(Guid productCode)\n        {\n            var localPackage = MsiGetProductInfo(productCode, MsiWrapper.INSTALLPROPERTY.LOCALPACKAGE);\n\n            if (localPackage == null || !Path.IsPathRooted(localPackage) || !File.Exists(localPackage))\n                return null;\n\n            IntPtr certData;\n            uint pcb = 0;\n            var result = MsiWrapper.MsiGetFileSignatureInformation(localPackage, 0, out certData, null, ref pcb);\n\n            if (result == 0)\n                return new X509Certificate2(certData);\n\n            return null;\n        }\n\n        public static IEnumerable<string> GetAllComponents()\n        {\n            var lpComponentBuf = new StringBuilder(40);\n            for (var i = 0; ; i++)\n            {\n                var ret = (ResultWin32)MsiWrapper.MsiEnumComponents(i, lpComponentBuf);\n                if (ret == ResultWin32.ERROR_NO_MORE_ITEMS) break;\n                if (ret != 0) throw ret.ToException();\n                yield return lpComponentBuf.ToString();\n            }\n        }\n\n        /// <summary>\n        /// A list of files, folders, registry keys, and registry values associated with an MSI product.\n        /// </summary>\n        /// <param name=\"Filenames\">A list of full paths of files and folders.</param>\n        /// <param name=\"RegistryKeys\">A list of full paths of registry keys.</param>\n        /// <param name=\"RegistryValues\">A list of full paths of registry keys together with value names.</param>\n        public record MsiComponentPaths(IReadOnlyCollection<string> Filenames, IReadOnlyCollection<string> RegistryKeys, IReadOnlyCollection<KeyValuePair<string, string>> RegistryValues);\n\n        /// <summary>\n        /// Retrieves the raw installation path of a specified component, if available.\n        /// </summary>\n        /// <remarks>\n        /// The path can be either a file path or a registry path. If it's a reg path it starts with a number:\n        /// HKEY_CLASSES_ROOT 00\n        /// HKEY_CURRENT_USER 01\n        /// HKEY_LOCAL_MACHINE 02\n        /// HKEY_USERS 03\n        /// On 64-bit operating systems, a value of 20 is added to distinguish native 64bit keys from 32-bit keys that are placed in the Wow6432Node (02 -> 22).\n        /// If a registry path ends with \\ it is a registry key, otherwise it's a registry value.</remarks>\n        /// <param name=\"component\">The component identifier to look up.</param>\n        /// <returns>The installation path of the component if found; otherwise, null.</returns>\n        public static string GetInstalledComponentPathRaw(string component)\n        {\n            if (ComponentPathLookup.TryGetValue(component, out var value))\n                return value;\n            \n            InitLookups();\n\n            _reverseComponentLookup.TryGetValue(component, out var product);\n            if (!string.IsNullOrEmpty(product))\n            {\n                var lpPathBuf = new StringBuilder(512);\n                var pcchPathBuf = lpPathBuf.Capacity;\n                var state = MsiWrapper.MsiGetComponentPath(product, component, lpPathBuf, ref pcchPathBuf);\n                if (state == MsiWrapper.INSTALLSTATE.INSTALLSTATE_LOCAL) // TODO also include source?\n                {\n                    value = lpPathBuf.ToString();\n                    ComponentPathLookup[component] = value;\n                    return value;\n                }\n            }\n\n            ComponentPathLookup[component] = null;\n            return null;\n        }\n\n        public static MsiComponentPaths GetInstalledComponentPaths(Guid productCodeGuid)\n        {\n            InitLookups();\n\n            var productCode = productCodeGuid.ToString(\"B\");\n            if (!_componentLookup.Contains(productCode)) return null;\n\n            var filePaths = new HashSet<string>(StringComparer.OrdinalIgnoreCase);\n            var regKeyPaths = new HashSet<string>(StringComparer.OrdinalIgnoreCase);\n            var regValPaths = new HashSet<string>(StringComparer.OrdinalIgnoreCase);\n\n            var components = _componentLookup[productCode];\n            foreach (var component in components)\n            {\n                var path = GetInstalledComponentPathRaw(component);\n                if (!string.IsNullOrEmpty(path) && path.Length > 3) // Length of at least 4 will also exclude disk roots whenever they are included for some reason\n                {\n                    if (char.IsDigit(path[0]) && char.IsDigit(path[1]) && path[2] == ':')\n                    {\n                        // Convert to a valid registry path\n                        var hiveId = path[1] - '0';\n                        var hiveName = hiveId switch\n                        {\n                            0 => \"HKEY_CLASSES_ROOT\",\n                            1 => \"HKEY_CURRENT_USER\",\n                            2 => \"HKEY_LOCAL_MACHINE\",\n                            3 => \"HKEY_USERS\",\n#if RELEASE\n                            _ => hiveId.ToString()\n#else\n                                _ => throw new ArgumentOutOfRangeException(nameof(hiveId), hiveId, @\"Invalid hive\")\n#endif\n                        };\n                        path = hiveName + path[3..];\n\n                        // Deal with Wow6432Node redirection\n                        var isWow64 = ProcessTools.Is64BitProcess && path[0] == '0';\n                        if (isWow64 && !path.Contains(@\"\\Wow6432Node\\\", StringComparison.OrdinalIgnoreCase))\n                        {\n                            path = path.Replace(@\"HKEY_LOCAL_MACHINE\\Software\\\", @\"HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\\", StringComparison.OrdinalIgnoreCase)\n                                       // TODO: Might not be required? HKCR is virtualized and shows both 64 and 32 keys. Some 32bit apps might manage to put their keys in root too?\n                                       .Replace(@\"HKEY_CLASSES_ROOT\\\", @\"HKEY_CLASSES_ROOT\\Wow6432Node\\\", StringComparison.OrdinalIgnoreCase);\n                        }\n\n                        if (path.EndsWith('\\\\'))\n                            regKeyPaths.Add(path.TrimEnd('\\\\'));\n                        else\n                            regValPaths.Add(path);\n                    }\n                    else\n                    {\n                        filePaths.Add(path);\n                    }\n                }\n            }\n\n            var splitKeyValueNames = regValPaths.Select(x => new KeyValuePair<string, string>(Path.GetDirectoryName(x), Path.GetFileName(x))).ToArray();\n            return new MsiComponentPaths(filePaths, regKeyPaths, splitKeyValueNames);\n        }\n\n        private static ILookup<string, string> _componentLookup;\n        private static Dictionary<string, string> _reverseComponentLookup;\n        private static readonly ConcurrentDictionary<string, string> ComponentPathLookup = new();\n        public static void InitLookups()\n        {\n            lock (GuidRegistryFormatPattern)\n            {\n                if (_componentLookup != null) return;\n\n                var sw = Stopwatch.StartNew();\n\n                // TODO This is slow, on the order of ~8 seconds (4 with AsParallel) on an SSD. It could use caching of GetProductCode and _componentPathLookup\n                // 20% of time is spent in GetAllComponents, 80% in GetProductCode\n                _componentLookup = GetAllComponents()\n                                   .ToList().AsParallel() // Cuts total time by about 45%, ToList is critical\n                                   .ToLookup(GetProductCode, StringComparer.OrdinalIgnoreCase);\n\n                _reverseComponentLookup = _componentLookup\n                                          .Where(x => !string.IsNullOrEmpty(x.Key))\n                                          .SelectMany(x => x.Select(y => new { product = x.Key, component = y, }))\n                                          .ToDictionary(x => x.component, x => x.product);\n\n                Trace.WriteLine($\"[Performance] Built MSI component lookup in {sw.Elapsed.TotalSeconds:F2} seconds\");\n            }\n            return;\n\n            static string GetProductCode(string component)\n            {\n                var lpBuf39 = new StringBuilder(40);\n                var ret = MsiWrapper.MsiGetProductCode(component, lpBuf39);\n                return ret != 0 ? null : lpBuf39.ToString();\n            }\n        }\n\n        // TODO Use the lookups instead? Some products don't have any components though.\n        public static bool IsInstalled(Guid productCodeGuid)\n        {\n            var productCode = productCodeGuid.ToString(\"B\");\n            var state = MsiWrapper.MsiQueryProductState(productCode);\n            // https://learn.microsoft.com/en-us/windows/win32/api/msi/nf-msi-msiqueryproductstatea\n            // Default - installed for current user, Absent - installed for another user\n            return state is MsiWrapper.INSTALLSTATE.INSTALLSTATE_DEFAULT or MsiWrapper.INSTALLSTATE.INSTALLSTATE_ABSENT;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/IO/NetFrameworkTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Klocman.Extensions;\nusing Microsoft.Win32;\n\nnamespace Klocman.IO\n{\n    public static class NetFrameworkTools\n    {\n        public static string[] GetInstalledFrameworkVersions()\n        {\n            var results = new List<string>();\n\n            using (var ndpKey = Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\\"))\n            {\n                if (ndpKey != null)\n                {\n                    foreach (var netKeyName in ndpKey.GetSubKeyNames())\n                    {\n                        if (!netKeyName.StartsWith(\"v\", StringComparison.Ordinal)) continue;\n\n                        results.AddRange(GetNetFromKey(ndpKey, netKeyName));\n                    }\n                }\n            }\n\n            return results.ToArray();\n        }\n\n        private static IEnumerable<string> GetNetFromKey(RegistryKey ndpKey, string netKeyName)\n        {\n            using (var netKey = ndpKey.OpenSubKey(netKeyName, false))\n            {\n                if (netKey == null) yield break;\n\n                var valueNames = netKey.GetValueNames();\n                if (valueNames.Length == 0 || !valueNames.Contains(\"Install\"))\n                {\n                    var subKeyNames = netKey.GetSubKeyNames();\n                    if (subKeyNames.Contains(\"Full\"))\n                    {\n                        foreach (var result in GetNetFromKey(netKey, \"Full\"))\n                            yield return result + \" Full\";\n                    }\n                    if (subKeyNames.Contains(\"Client\"))\n                    {\n                        foreach (var result in GetNetFromKey(netKey, \"Client\"))\n                            yield return result + \" Client\";\n                    }\n                }\n                else if (netKey.GetValue(\"Install\", \"\")?.ToString() == \"1\")\n                {\n                    var versionStr = netKey.GetValue(\"Version\", \"\")?.ToString();\n                    if (string.IsNullOrEmpty(versionStr))\n                        versionStr = netKey.GetKeyName();\n                    yield return versionStr;\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/IO/SysRestore.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Management;\nusing System.Runtime.InteropServices;\nusing Microsoft.Win32;\n\nnamespace Klocman.IO\n{\n    /// <summary>\n    ///     Based on http://www.codeproject.com/Articles/38205/Creating-System-Restore-Points-using-PInvoke\n    ///     Updated for new Windows versions\n    /// </summary>\n    public static class SysRestore\n    {\n        // Type of restorations\n        public enum RestoreType\n        {\n            ApplicationInstall = 0, // Installing a new application\n            ApplicationUninstall = 1, // An application has been uninstalled\n            ModifySettings = 12, // An application has had features added or removed\n            CancelledOperation = 13, // An application needs to delete the restore point it created\n            Restore = 6, // System Restore\n            Checkpoint = 7, // Checkpoint\n            DeviceDriverInstall = 10, // Device driver has been installed\n            FirstRun = 11, // Program used for 1st time\n            BackupRecovery = 14 // Restoring a backup\n        }\n\n        private const short AccessibilitySetting = 3; /* not implemented */\n        private const short ApplicationRun = 5; /* not implemented */\n        // Windows XP only - used to prevent the restore points intertwined\n        private const short BeginNestedSystemChange = 102;\n        // Constants\n        private const short BeginSystemChange = 100; // Start of operation\n        private const short DesktopSetting = 2; /* not implemented */\n        private const short EndNestedSystemChange = 103;\n        private const short EndSystemChange = 101; // End of operation\n        private const short MaxDesc = 64;\n        private const short MaxDescW = 256;\n        private const short OeSetting = 4; /* not implemented */\n        private const short WindowsBoot = 9; /* not implemented */\n        private const short WindowsShutdown = 8; /* not implemented */\n\n        /// <summary>\n        ///     Attempts to cancel the creation of a restore point. \n        ///     Note: Due to Windows API limitations, the restore point will still appear in the restore point list,\n        ///     but will be marked as canceled for the application. It is not deleted.\n        /// </summary>\n        /// <param name=\"lSeqNum\">The restore sequence number</param>\n        /// <returns>The status of the call</returns>\n        public static int CancelRestore(long lSeqNum)\n        {\n            return EndOrCancelRestore(lSeqNum, RestoreType.CancelledOperation);\n        }\n\n        /// <summary>\n        ///     Ends system restore call\n        /// </summary>\n        public static int EndRestore(long lSeqNum)\n        {\n            return EndOrCancelRestore(lSeqNum, RestoreType.ApplicationUninstall);\n        }\n\n        private static int EndOrCancelRestore(long lSeqNum, RestoreType cancelType)\n        {\n            var rpInfo = new RestorePointInfo\n            {\n                dwEventType = EndSystemChange,\n                dwRestorePtType = (int)cancelType,\n                llSequenceNumber = lSeqNum\n            };\n            STATEMGRSTATUS rpStatus;\n\n            if (!SysRestoreAvailable())\n                return -1;\n\n            try\n            {\n                var result = SRSetRestorePointW(ref rpInfo, out rpStatus);\n                if (!result)\n                {\n                    var error = Marshal.GetLastWin32Error();\n                    throw new Exception($\"SRSetRestorePointW failed with error code: {error}\");\n                }\n            }\n            catch (Exception ex)\n            {\n                LogError(\"EndOrCancelRestore failed\", ex);\n                return -1;\n            }\n\n            return rpStatus.nStatus;\n        }\n\n        /// <summary>\n        ///     Starts system restore\n        /// </summary>\n        /// <param name=\"strDescription\">The description of the restore</param>\n        /// <param name=\"lSeqNum\">Returns the sequence number</param>\n        /// <param name=\"creationFrequency\">\n        ///     Under Win 8 or newer - Minimal amount of minutes since last restore point for this point to be created. \n        ///     0 to always create, number for amount of minutes, -1 for default behaviour (24 hours).\n        /// </param>\n        /// <returns>The status of call</returns>\n        /// <seealso>\n        ///     <cref>Use EndRestore() or CancelRestore() to end the system restore</cref>\n        /// </seealso>\n        public static int StartRestore(string strDescription, out long lSeqNum, int creationFrequency = -1)\n        {\n            if (strDescription == null) throw new ArgumentNullException(nameof(strDescription));\n\n            lSeqNum = 0;\n            if (!SysRestoreAvailable())\n                return -1;\n\n            if (creationFrequency >= 0)\n            {\n                try\n                {\n                    using var key = Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\", true);\n                    if (key == null)\n                        throw new InvalidOperationException(\"SystemRestore registry key not found.\");\n                    key.SetValue(\"SystemRestorePointCreationFrequency\", creationFrequency, RegistryValueKind.DWord);\n                }\n                catch (Exception ex)\n                {\n                    LogError(\"Failed to set SystemRestorePointCreationFrequency\", ex);\n                }\n            }\n\n            // Ensure description is under the max character limit\n            if (strDescription.Length > MaxDescW)\n                strDescription = strDescription.Substring(0, MaxDescW);\n\n            var rpInfo = new RestorePointInfo\n            {\n                dwEventType = BeginSystemChange,\n                dwRestorePtType = (int)RestoreType.ApplicationUninstall,\n                llSequenceNumber = 0,\n                szDescription = strDescription\n            };\n            STATEMGRSTATUS rpStatus;\n\n            try\n            {\n                bool result = SRSetRestorePointW(ref rpInfo, out rpStatus);\n                if (!result)\n                {\n                    var error = Marshal.GetLastWin32Error();\n                    throw new Exception($\"SRSetRestorePointW failed with error code: {error}\");\n                }\n            }\n            catch (Exception ex)\n            {\n                LogError(\"StartRestore failed\", ex);\n                return -1;\n            }\n\n            lSeqNum = rpStatus.llSequenceNumber;\n            return rpStatus.nStatus;\n        }\n\n        /// <summary>\n        /// Check if system restore is supported and enabled\n        /// </summary>\n        public static bool SysRestoreAvailable()\n        {\n            try\n            {\n                // Check if System Protection is enabled for the system drive (usually C:)\n                using var searcher = new ManagementObjectSearcher(\"root\\\\default\", \"SELECT * FROM SystemRestore\");\n                using var results = searcher.Get();\n                foreach (ManagementObject _ in results)\n                {\n                    // If we can enumerate, System Restore is available\n                    return true;\n                }\n            }\n            catch (Exception ex)\n            {\n                LogError(\"System Restore check failed\", ex);\n            }\n            return false;\n        }\n\n        private static void LogError(string message, Exception ex = null)\n        {\n            Console.WriteLine($@\"{message}{(ex != null ? \": \" + ex : string.Empty)}\");\n        }\n\n        [DllImport(\"srclient.dll\")]\n        [return: MarshalAs(UnmanagedType.Bool)]\n        private static extern bool SRSetRestorePointW(ref RestorePointInfo pRestorePtSpec,\n            out STATEMGRSTATUS pSMgrStatus);\n\n        /// <summary>\n        ///     Contains information used by the SRSetRestorePoint function\n        /// </summary>\n        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]\n        private struct RestorePointInfo\n        {\n            public int dwEventType; // The type of event\n            public int dwRestorePtType; // The type of restore point\n            public long llSequenceNumber; // The sequence number of the restore point\n            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MaxDescW + 1)] public string szDescription;\n\n            // The description to be displayed so the user can easily identify a restore point\n        }\n\n        /// <summary>\n        ///     Contains status information used by the SRSetRestorePoint function\n        /// </summary>\n        [StructLayout(LayoutKind.Sequential)]\n        private struct STATEMGRSTATUS\n        {\n            public int nStatus; // The status code\n            public long llSequenceNumber; // The sequence number of the restore point\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/IO/WindowsFeatureInfo.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Collections.Generic;\n\nnamespace Klocman.IO\n{\n    public class WindowsFeatureInfo\n    {\n        public WindowsFeatureInfo()\n        {\n            CustomProperties = new List<KeyValuePair<string, string>>();\n        }\n\n        public string FeatureName { get; set; }\n        public string DisplayName { get; set; }\n        public string Description { get; set; }\n        public string RestartRequired { get; set; }\n        public bool Enabled { get; set; }\n        public IList<KeyValuePair<string, string>> CustomProperties { get; private set; }\n    }\n}"
  },
  {
    "path": "source/KlocTools/IO/WmiQueries.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Management;\n\nnamespace Klocman.IO\n{\n    public static class WmiQueries\n    {\n        /// <summary>\n        /// Get information about enabled and disabled windows features. Works on Windows 7 and newer.\n        /// </summary>\n        public static ICollection<WindowsFeatureInfo> GetWindowsFeatures()\n        {\n            var features = new List<WindowsFeatureInfo>();\n\n            var searcher = new ManagementObjectSearcher(new ManagementScope(), \n                new ObjectQuery(\"select * from Win32_OptionalFeature\"), \n                new EnumerationOptions(null, TimeSpan.FromSeconds(35), 100, false, false, false, false, false, false, false));\n            using (var moc = searcher.Get())\n            {\n                var items = moc.Cast<ManagementObject>().ToList();\n                foreach (var managementObject in items)\n                {\n                    var featureInfo = new WindowsFeatureInfo();\n                    foreach (var property in managementObject.Properties)\n                    {\n                        if (property.Name == \"Caption\")\n                        {\n                            featureInfo.DisplayName = property.Value.ToString();\n                        }\n                        else if (property.Name == \"InstallState\")\n                        {\n                            var status = (uint)property.Value;\n                            if (status == 2)\n                                featureInfo.Enabled = false;\n                            else if (status == 1)\n                                featureInfo.Enabled = true;\n                            else\n                            {\n                                featureInfo.FeatureName = null;\n                                break;\n                            }\n                        }\n                        else if (property.Name == \"Name\")\n                        {\n                            featureInfo.FeatureName = property.Value.ToString();\n                        }\n                    }\n\n                    if (string.IsNullOrEmpty(featureInfo.FeatureName)) continue;\n\n                    features.Add(featureInfo);\n                }\n            }\n\n            return features;\n        }\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/KlocTools.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\t<PropertyGroup>\n\t\t<OutputType>Library</OutputType>\n\t\t<RootNamespace>Klocman</RootNamespace>\n\n\t\t<AssemblyTitle>Common utility methods</AssemblyTitle>\n\t</PropertyGroup>\n\t\n\t<ItemGroup>\n\t  <Compile Remove=\"Sorters\\ColumnSorter.cs\" />\n\t</ItemGroup>\n\n\t<ItemGroup>\n\t\t<PackageReference Include=\"System.Management\" Version=\"[8.*,9)\" />\n\t</ItemGroup>\n\n\t<ItemGroup>\n\t  <Compile Update=\"Properties\\Localisation.Designer.cs\">\n\t    <DesignTime>True</DesignTime>\n\t    <AutoGen>True</AutoGen>\n\t    <DependentUpon>Localisation.resx</DependentUpon>\n\t  </Compile>\n\t  <Compile Update=\"Properties\\Resources.Designer.cs\">\n\t    <DesignTime>True</DesignTime>\n\t    <AutoGen>True</AutoGen>\n\t    <DependentUpon>Resources.resx</DependentUpon>\n\t  </Compile>\n\t</ItemGroup>\n\n\t<ItemGroup>\n\t  <EmbeddedResource Update=\"Properties\\Localisation.resx\">\n\t    <Generator>PublicResXFileCodeGenerator</Generator>\n\t    <LastGenOutput>Localisation.Designer.cs</LastGenOutput>\n\t  </EmbeddedResource>\n\t  <EmbeddedResource Update=\"Properties\\Resources.resx\">\n\t    <Generator>PublicResXFileCodeGenerator</Generator>\n\t    <LastGenOutput>Resources.Designer.cs</LastGenOutput>\n\t  </EmbeddedResource>\n\t</ItemGroup>\n</Project>"
  },
  {
    "path": "source/KlocTools/Licence.licenseheader",
    "content": "﻿extensions: designer.cs generated.cs\nextensions: .cs .cpp .h\n/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nextensions: .aspx .ascx\n<%-- \n\tCopyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n\tApache License Version 2.0\n--%>\nextensions:  .xml .config .xsd\n<!--\n\tCopyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n\tApache License Version 2.0\n-->"
  },
  {
    "path": "source/KlocTools/Limited.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Globalization;\n\nnamespace Klocman\n{\n    /// <summary>\n    /// Wrapper for value types that forces them to be constrained within a specified range of values.\n    /// </summary>\n    /// <typeparam name=\"T\">Type of the wrapped value</typeparam>\n    public struct Limited<T> : IComparable, IFormattable, IConvertible, IComparable<T>, IEquatable<T>\n        where T : struct, IComparable, IFormattable, IConvertible, IComparable<T>, IEquatable<T>\n    {\n        T _value, _minimum, _maximum;\n\n        /// <summary>\n        /// Wrapped value, always equal to any of or in between Minimum and Maximum.\n        /// If ThrowOutOfRange if false and the value is assigned out of this range, it is trimmed.\n        /// Otherwise an exception is thrown.\n        /// </summary>\n        public T Value\n        {\n            get { return _value; }\n            set\n            {\n                _value = GetLimitedValue(value, Minimum, Maximum, ThrowOutOfRange);\n            }\n        }\n\n        private static Tvalue GetLimitedValue<Tvalue>(Tvalue value, Tvalue min, Tvalue max, bool throwOutOfRange)\n            where Tvalue : IComparable<Tvalue>\n        {\n            if (value.CompareTo(max) > 0)\n            {\n                if (throwOutOfRange) throw new ArgumentOutOfRangeException(nameof(value), @\"New value must be equal to or in between the minimum and maximum values\");\n                return max;\n            }\n            else if (value.CompareTo(min) < 0)\n            {\n                if (throwOutOfRange) throw new ArgumentOutOfRangeException(nameof(value), @\"New value must be equal to or in between the minimum and maximum values\");\n                return min;\n            }\n            return value;\n        }\n\n        /// <summary>\n        /// Minimal value of this variable. If set higher than the current value, the current value is trimmed up.\n        /// Must be lower than or equal to the maximal value.\n        /// </summary>\n        public T Minimum\n        {\n            get { return _minimum; }\n            set\n            {\n                if (value.CompareTo(_maximum) > 0)\n                    throw new ArgumentOutOfRangeException(nameof(value), @\"Minimum value must be lower than or equal to the maximum value\");\n                _minimum = value;\n\n                if (value.CompareTo(_value) > 0)\n                    _value = value;\n            }\n        }\n\n        /// <summary>\n        /// Maximal value of this variable. If set lower than the current value, the current value is trimmed down.\n        /// Must be higher than or equal to the minimal value.\n        /// </summary>\n        public T Maximum\n        {\n            get { return _maximum; }\n            set\n            {\n                if (value.CompareTo(_minimum) < 0)\n                    throw new ArgumentOutOfRangeException(nameof(value), @\"Minimum value must be lower than or equal to the maximum value\");\n                _maximum = value;\n\n                if (value.CompareTo(_value) < 0)\n                    _value = value;\n            }\n        }\n\n        /// <summary>\n        /// Indicates whether an exception should be thrown or not when assigning an out-of-range value.\n        /// If set to false the value is trimmed quietly. False by default. \n        /// </summary>\n        public bool ThrowOutOfRange { get; set; }\n\n        /// <summary>\n        /// Create new limited value of type T.\n        /// </summary>\n        /// <param name=\"value\">Initial value of this variable</param>\n        /// <param name=\"min\">Minimal value of this variable</param>\n        /// <param name=\"max\">Maximal value of this variable</param>\n        /// <param name=\"throwOutOfRange\">Indicates whether an exception should be thrown or not when assigning an out-of-range value.</param>\n        public Limited(T value, T min, T max, bool throwOutOfRange)\n        {\n            ThrowOutOfRange = throwOutOfRange;\n\n            if (min.CompareTo(max) > 0)\n                throw new ArgumentException(\"Minimum value must be lower than or equal to the maximum value\");\n            _minimum = min;\n            _maximum = max;\n\n            _value = GetLimitedValue(value, min, max, throwOutOfRange);\n        }\n\n        /// <summary>\n        /// Create new limited value of type T. It automatically truncates out-of-range values.\n        /// </summary>\n        /// <param name=\"value\">Initial value of this variable</param>\n        /// <param name=\"min\">Minimal value of this variable</param>\n        /// <param name=\"max\">Maximal value of this variable</param>\n        public Limited(T value, T min, T max) : this(value, min, max, false) { }\n\n        /// <summary>\n        /// Create new limited value of type T. The default and minimal values are set using default(T).\n        /// </summary>\n        /// <param name=\"max\">Maximal value of this variable</param>\n        public Limited(T max) : this(default(T), default(T), max) { }\n\n        public int CompareTo(T other)\n        {\n            return _value.CompareTo(other);\n        }\n\n        public int CompareTo(object obj)\n        {\n            return _value.CompareTo(obj);\n        }\n\n        public bool Equals(T other)\n        {\n            return _value.Equals(other);\n        }\n\n        public override bool Equals(object obj)\n        {\n            return _value.Equals(obj);\n        }\n\n        public static bool operator ==(Limited<T> a, Limited<T> b)\n        {\n            return a.Equals(b);\n        }\n\n        public static bool operator !=(Limited<T> a, Limited<T> b)\n        {\n            return !(a == b);\n        }\n\n        public string ToString(string format, IFormatProvider formatProvider)\n        {\n            return _value.ToString(format, formatProvider);\n        }\n\n        public override string ToString()\n        {\n            return _value.ToString(CultureInfo.CurrentCulture);\n        }\n\n        public override int GetHashCode()\n        {\n            return _value.GetHashCode();\n        }\n\n        TypeCode IConvertible.GetTypeCode()\n        {\n            return _value.GetTypeCode();\n        }\n\n        bool IConvertible.ToBoolean(IFormatProvider provider)\n        {\n            return _value.ToBoolean(provider);\n        }\n\n        byte IConvertible.ToByte(IFormatProvider provider)\n        {\n            return _value.ToByte(provider);\n        }\n\n        char IConvertible.ToChar(IFormatProvider provider)\n        {\n            return _value.ToChar(provider);\n        }\n\n        DateTime IConvertible.ToDateTime(IFormatProvider provider)\n        {\n            return _value.ToDateTime(provider);\n        }\n\n        decimal IConvertible.ToDecimal(IFormatProvider provider)\n        {\n            return _value.ToDecimal(provider);\n        }\n\n        double IConvertible.ToDouble(IFormatProvider provider)\n        {\n            return _value.ToDouble(provider);\n        }\n\n        short IConvertible.ToInt16(IFormatProvider provider)\n        {\n            return _value.ToInt16(provider);\n        }\n\n        int IConvertible.ToInt32(IFormatProvider provider)\n        {\n            return _value.ToInt32(provider);\n        }\n\n        long IConvertible.ToInt64(IFormatProvider provider)\n        {\n            return _value.ToInt64(provider);\n        }\n\n        sbyte IConvertible.ToSByte(IFormatProvider provider)\n        {\n            return _value.ToSByte(provider);\n        }\n\n        float IConvertible.ToSingle(IFormatProvider provider)\n        {\n            return _value.ToSingle(provider);\n        }\n\n        public string ToString(IFormatProvider provider)\n        {\n            return _value.ToString(provider);\n        }\n\n        object IConvertible.ToType(Type conversionType, IFormatProvider provider)\n        {\n            return _value.ToType(conversionType, provider);\n        }\n\n        ushort IConvertible.ToUInt16(IFormatProvider provider)\n        {\n            return _value.ToUInt16(provider);\n        }\n\n        uint IConvertible.ToUInt32(IFormatProvider provider)\n        {\n            return _value.ToUInt32(provider);\n        }\n\n        ulong IConvertible.ToUInt64(IFormatProvider provider)\n        {\n            return _value.ToUInt64(provider);\n        }\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Localising/LocalisationExtensions.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflection;\n\nnamespace Klocman.Localising\n{\n    public static class LocalisationExtensions\n    {\n        private static readonly Dictionary<Enum, string> LocalisedEnumNameCache = new();\n\n        /// <summary>\n        ///     Get a fancy name of selected property or field\n        /// </summary>\n        public static string GetLocalisedMemberName<TContainer, TMember>(this TContainer instance,\n            Expression<Func<TContainer, TMember>> selector) where TContainer : class\n        {\n            if (selector.Body is not MemberExpression expression)\n                throw new ArgumentException(\"Selector is invalid, it has to be in format x => x.Property\");\n            \n            var member = expression.Member;\n            return GetLocalisedMemberName(member);\n        }\n\n        /// <summary>\n        ///     Get a fancy name of selected property or field\n        /// </summary>\n        public static string GetLocalisedMemberName<TContainer, TMember>(Expression<Func<TContainer, TMember>> selector) \n            where TContainer : class\n        {\n            if (selector.Body is not MemberExpression expression)\n                throw new ArgumentException(\"Selector is invalid, it has to be in format x => x.Property\");\n\n            var member = expression.Member;\n            return GetLocalisedMemberName(member);\n        }\n\n        /// <summary>\n        ///     Get a fancy name of selected property or field\n        /// </summary>\n        public static string GetLocalisedMemberName(MemberInfo member)\n        {\n            return member.GetCustomAttributes(typeof (LocalisedNameAttribute), false)\n                .FirstOrDefault() is not LocalisedNameAttribute attrib ? member.Name : attrib.GetName();\n        }\n\n        /// <summary>\n        ///     Get a fancy name of this enum\n        /// </summary>\n        public static string GetLocalisedName(this Enum enumValue)\n        {\n            string output;\n            if (LocalisedEnumNameCache.TryGetValue(enumValue, out output))\n                return output;\n\n            var getName = new Func<FieldInfo, string>(f =>\n            {\n                return f.GetCustomAttributes(typeof(LocalisedNameAttribute), false)\n                    .FirstOrDefault() is not LocalisedNameAttribute attribute ? f.Name : attribute.GetName();\n            });\n\n            var type = enumValue.GetType();\n\n            var isFlags = type.GetCustomAttributes(typeof(FlagsAttribute), true).Any();\n            if (isFlags)\n            {\n                var fields = from object value in Enum.GetValues(type)\n                             let flag = Convert.ToInt64(value)\n                             where (Convert.ToInt64(enumValue) & flag) == flag\n                             select type.GetField(value.ToString()!);\n\n                var names = fields.Select(f => getName(f)).OrderBy(x => x).ToArray();\n\n                return names.Length > 0 ? string.Join(\", \", names) : enumValue.ToString();\n            }\n\n            var field = type.GetField(enumValue.ToString());\n            output = field == null ? enumValue.ToString() : getName(field);\n            LocalisedEnumNameCache.Add(enumValue, output);\n            return output;\n        }\n\n        /// <summary>\n        ///     Get a fancy name using propertyinfo\n        /// </summary>\n        public static string GetLocalisedName(this PropertyInfo propertyInfo)\n        {\n            return propertyInfo.GetCustomAttributes(typeof (LocalisedNameAttribute), false)\n                .FirstOrDefault() is not LocalisedNameAttribute attribute ? propertyInfo.Name : attribute.GetName();\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Localising/LocalisedEnumWrapper.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\n\nnamespace Klocman.Localising\n{\n    public class LocalisedEnumWrapper\n    {\n        public LocalisedEnumWrapper(Enum targetEnum)\n        {\n            TargetEnum = targetEnum ?? throw new ArgumentNullException(nameof(targetEnum));\n        }\n\n        public Enum TargetEnum { get; }\n\n        public override string ToString()\n        {\n            return TargetEnum.GetLocalisedName();\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Localising/LocalisedNameAttribute.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Reflection;\n\nnamespace Klocman.Localising\n{\n    /// <summary>\n    ///     Used alongside GetFancyName method to give custom names to properties, fields and enums\n    /// </summary>\n    public class LocalisedNameAttribute : Attribute\n    {\n        public LocalisedNameAttribute(string name)\n        {\n            NameOverride = name;\n        }\n\n        public LocalisedNameAttribute(Type resourceType, string resourceName)\n        {\n            ResourceName = resourceName;\n            ResourceType = resourceType;\n        }\n\n        private string NameOverride { get; }\n        private string ResourceName { get; }\n        private Type ResourceType { get; }\n\n        public string GetName()\n        {\n            if (NameOverride != null)\n                return NameOverride;\n\n            if ((ResourceType != null) && (ResourceName != null))\n            {\n                var property = ResourceType.GetProperty(ResourceName,\n                    BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);\n                if (property == null)\n                {\n                    throw new InvalidOperationException(\"Resource of this type doesn\\'t contain specified property\");\n                }\n                if (property.PropertyType != typeof (string))\n                {\n                    throw new InvalidOperationException(\"Specified property is not of string type\");\n                }\n                return (string) property.GetValue(null, null);\n            }\n            return string.Empty;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Native/CSIDL.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nnamespace Klocman.Native\n{\n    public enum CSIDL\n    {\n        //Application Data\n        //C:\\Documents and Settings\\Administrator\\Application Data\n        CSIDL_APPDATA = 0x1a,\n\n        //CD Burning\n        //C:\\Documents and Settings\\Administrator\\Local Settings\\Application Data\\Microsoft\\CD Burning\n        CSIDL_CDBURN_AREA = 0x3b,\n\n        //Common Administrative Tools\n        //C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Administrative Tools\n        CSIDL_COMMON_ADMINTOOLS = 0x2f,\n\n        //Common Application Data\n        //C:\\Documents and Settings\\All Users\\Application Data\n        CSIDL_COMMON_APPDATA = 0x23,\n\n        //Common Desktop\n        //C:\\Documents and Settings\\All Users\\Desktop\n        CSIDL_COMMON_DESKTOPDIRECTORY = 0x19,\n\n        //Common Documents\n        //C:\\Documents and Settings\\All Users\\Documents\n        CSIDL_COMMON_DOCUMENTS = 0x2e,\n\n        //Common Favorites\n        //C:\\Documents and Settings\\All Users\\Favorites\n        CSIDL_COMMON_FAVORITES = 0x1f,\n\n        //Common Music\n        //C:\\Documents and Settings\\All Users\\Documents\\My Music\n        CSIDL_COMMON_MUSIC = 0x35,\n\n        //Common Pictures\n        //C:\\Documents and Settings\\All Users\\Documents\\My Pictures\n        CSIDL_COMMON_PICTURES = 0x36,\n\n        //Common Start Menu\n        //C:\\Documents and Settings\\All Users\\Start Menu\n        CSIDL_COMMON_STARTMENU = 0x16,\n\n        //Common Start Menu Programs\n        //C:\\Documents and Settings\\All Users\\Start Menu\\Programs\n        CSIDL_COMMON_PROGRAMS = 0x17,\n\n        //Common Startup\n        //C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\n        CSIDL_COMMON_STARTUP = 0x18,\n\n        //Common Templates\n        //C:\\Documents and Settings\\All Users\\Templates\n        CSIDL_COMMON_TEMPLATES\n            = 0x2d,\n\n        //Common Video\n        //C:\\Documents and Settings\\All Users\\Documents\\My Videos\n        CSIDL_COMMON_VIDEO = 0x37,\n\n        //Cookies\n        //C:\\Documents and Settings\\Administrator\\Cookies\n        CSIDL_COOKIES = 0x21,\n\n        //Desktop\n        //C:\\Documents and Settings\\Administrator\\Desktop\n        CSIDL_DESKTOPDIRECTORY = 0x10,\n\n        //Favorites\n        //C:\\Documents and Settings\\Administrator\\Favorites\n        CSIDL_FAVORITES = 0x06,\n\n        //Fonts\n        //C:\\WINDOWS\\Fonts\n        CSIDL_FONTS = 0x14,\n\n        //History\n        //C:\\Documents and Settings\\Administrator\\Local Settings\\History\n        CSIDL_HISTORY = 0x22,\n\n        //Local Application Data\n        //C:\\Documents and Settings\\Administrator\\Local Settings\\Application Data\n        CSIDL_LOCAL_APPDATA = 0x1c,\n\n        //My Documents\n        //C:\\Documents and Settings\\Administrator\\My Documents\n        CSIDL_PERSONAL = 0x05,\n\n        //My Music\n        //C:\\Documents and Settings\\Administrator\\My Documents\\My Music\n        CSIDL_MYMUSIC = 0x0d,\n\n        //My Pictures\n        //C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\n        CSIDL_MYPICTURES = 0x27,\n\n        //NetHood\n        //C:\\Documents and Settings\\Administrator\\NetHood\n        CSIDL_NETHOOD = 0x13,\n\n        //PrintHood\n        //C:\\Documents and Settings\\Administrator\\PrintHood\n        CSIDL_PRINTHOOD = 0x1b,\n\n        //Profile Folder\n        //C:\\Documents and Settings\\Administrator\n        CSIDL_PROFILE = 0x28,\n\n        //Program Files\n        //C:\\Program Files\n        CSIDL_PROGRAM_FILES = 0x26,\n\n        //Program Files - Common\n        //C:\\Program Files\\Common Files\n        CSIDL_PROGRAM_FILES_COMMON = 0x2b,\n\n        //Recent\n        //C:\\Documents and Settings\\Administrator\\Recent\n        CSIDL_RECENT = 0x08,\n\n        //Send To\n        //C:\\Documents and Settings\\Administrator\\SendTo\n        CSIDL_SENDTO = 0x09,\n\n        //Start Menu\n        //C:\\Documents and Settings\\Administrator\\Start Menu\n        CSIDL_STARTMENU = 0x0b,\n\n        //Start Menu Programs\n        //C:\\Documents and Settings\\Administrator\\Start Menu\\Programs\n        CSIDL_PROGRAMS = 0x02,\n\n        //Startup\n        //C:\\Documents and Settings\\Administrator\\Start Menu\\Programs\\Startup\n        CSIDL_STARTUP = 0x07,\n\n        //System Directory\n        //C:\\WINDOWS\\system32\n        CSIDL_SYSTEM = 0x25,\n\n        //Templates\n        //C:\\Documents and Settings\\Administrator\\Templates\n        CSIDL_TEMPLATES = 0x15,\n\n        //Temporary Folder\n        //C:\\Documents and Settings\\Administrator\\Local Settings\\Temp\\\n        // was empty at the listing, probably 0?\n\n        //Temporary Internet Files\n        //C:\\Documents and Settings\\Administrator\\Local Settings\\Temporary Internet Files\n        CSIDL_INTERNET_CACHE = 0x20,\n\n        //Windows Directory\n        //C:\\WINDOWS\n        CSIDL_WINDOWS = 0x24\n    }\n}"
  },
  {
    "path": "source/KlocTools/Native/ControlPanelCanonicalNames.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nnamespace Klocman.Native\n{\n    /// <summary>\n    ///     Canonical names of control panel applets. Add \"Microsoft.\" before them to get full canonical names.\n    ///     For example: ActionCenter -> Microsoft.ActionCenter\n    ///     DO NOT CHANGE THE ENUM NAMES, THEY ARE CONVERTED TO STRING\n    /// </summary>\n    public enum ControlPanelCanonicalNames\n    {\n        ActionCenter,\n        AdministrativeTools,\n        AutoPlay,\n        BiometricDevices,\n        BitLockerDriveEncryption,\n        ColorManagement,\n        CredentialManager,\n        DateAndTime,\n        DefaultPrograms,\n        DeviceManager,\n        DevicesAndPrinters,\n        Display,\n        EaseOfAccessCenter,\n        ParentalControls,\n        FileHistory,\n        FolderOptions,\n        Fonts,\n        HomeGroup,\n        IndexingOptions,\n        Infrared,\n        InternetOptions,\n        iSCSIInitiator,\n        iSNSServer,\n        Keyboard,\n        Language,\n        LocationSettings,\n        Mouse,\n        MPIOConfiguration,\n        NetworkAndSharingCenter,\n        NotificationAreaIcons,\n        PenAndTouch,\n        Personalization,\n        PhoneAndModem,\n        PowerOptions,\n        ProgramsAndFeatures,\n        Recovery,\n        RegionAndLanguage,\n        RemoteAppAndDesktopConnections,\n        Sound,\n        SpeechRecognition,\n        StorageSpaces,\n        SyncCenter,\n        System,\n        TabletPCSettings,\n        Taskbar,\n        Troubleshooting,\n        TSAppInstall,\n        UserAccounts,\n        WindowsAnytimeUpgrade,\n        WindowsDefender,\n        WindowsFirewall,\n        MobilityCenter,\n        PortableWorkspaceCreator,\n        WindowsUpdate,\n        WorkFolders\n    }\n}"
  },
  {
    "path": "source/KlocTools/Native/MsiWrapper.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Runtime.InteropServices;\nusing System.Text;\n\nnamespace Klocman.Native\n{\n    public static class MsiWrapper\n    {\n        public enum INSTALLFEATUREATTRIBUTE // bit flags\n        {\n            INSTALLFEATUREATTRIBUTE_FAVORLOCAL = 1 << 0,\n            INSTALLFEATUREATTRIBUTE_FAVORSOURCE = 1 << 1,\n            INSTALLFEATUREATTRIBUTE_FOLLOWPARENT = 1 << 2,\n            INSTALLFEATUREATTRIBUTE_FAVORADVERTISE = 1 << 3,\n            INSTALLFEATUREATTRIBUTE_DISALLOWADVERTISE = 1 << 4,\n            INSTALLFEATUREATTRIBUTE_NOUNSUPPORTEDADVERTISE = 1 << 5\n        }\n\n        public enum INSTALLLEVEL\n        {\n            INSTALLLEVEL_DEFAULT = 0, // install authored default\n            INSTALLLEVEL_MINIMUM = 1, // install only required features\n            INSTALLLEVEL_MAXIMUM = 0xFFFF // install all features\n        } // intermediate levels dependent on authoring\n\n        public enum INSTALLLOGATTRIBUTES // flag attributes for MsiEnableLog\n        {\n            INSTALLLOGATTRIBUTES_APPEND = (1 << 0),\n            INSTALLLOGATTRIBUTES_FLUSHEACHLINE = (1 << 1)\n        }\n\n        public enum INSTALLLOGMODE // bit flags for use with MsiEnableLog and MsiSetExternalUI\n        {\n            INSTALLLOGMODE_FATALEXIT = (1 << (0x00 >> 24)),\n            INSTALLLOGMODE_ERROR = (1 << (0x01 >> 24)),\n            INSTALLLOGMODE_WARNING = (1 << (0x02 >> 24)),\n            INSTALLLOGMODE_USER = (1 << (0x03 >> 24)),\n            INSTALLLOGMODE_INFO = (1 << (0x04 >> 24)),\n            INSTALLLOGMODE_RESOLVESOURCE = (1 << (0x06 >> 24)),\n            INSTALLLOGMODE_OUTOFDISKSPACE = (1 << (0x07 >> 24)),\n            INSTALLLOGMODE_ACTIONSTART = (1 << (0x08 >> 24)),\n            INSTALLLOGMODE_ACTIONDATA = (1 << (0x09 >> 24)),\n            INSTALLLOGMODE_COMMONDATA = (1 << (0x0B >> 24)),\n            INSTALLLOGMODE_PROPERTYDUMP = (1 << (0x0A >> 24)), // log only\n            INSTALLLOGMODE_VERBOSE = (1 << (0x0C >> 24)), // log only\n            INSTALLLOGMODE_PROGRESS = (1 << (0x0A >> 24)), // external handler only\n            INSTALLLOGMODE_INITIALIZE = (1 << (0x0C >> 24)), // external handler only\n            INSTALLLOGMODE_TERMINATE = (1 << (0x0D >> 24)), // external handler only\n            INSTALLLOGMODE_SHOWDIALOG = (1 << (0x0E >> 24)) // external handler only\n        }\n\n        // Install message type for callback is a combination of the following:\n        //  A message box style:      MB_*, where MB_OK is the default\n        //  A message box icon type:  MB_ICON*, where no icon is the default\n        //  A default button:         MB_DEFBUTTON?, where MB_DEFBUTTON1 is the default\n        //  One of the following install message types, no default\n        public enum INSTALLMESSAGE : long\n        {\n            INSTALLMESSAGE_FATALEXIT = 0x00000000L, // premature termination, possibly fatal OOM\n            INSTALLMESSAGE_ERROR = 0x01000000L, // formatted error message\n            INSTALLMESSAGE_WARNING = 0x02000000L, // formatted warning message\n            INSTALLMESSAGE_USER = 0x03000000L, // user request message\n            INSTALLMESSAGE_INFO = 0x04000000L, // informative message for log\n            INSTALLMESSAGE_FILESINUSE = 0x05000000L, // list of files in use that need to be replaced\n            INSTALLMESSAGE_RESOLVESOURCE = 0x06000000L, // request to determine a valid source location\n            INSTALLMESSAGE_OUTOFDISKSPACE = 0x07000000L, // insufficient disk space message\n            INSTALLMESSAGE_ACTIONSTART = 0x08000000L, // start of action: action name & description\n            INSTALLMESSAGE_ACTIONDATA = 0x09000000L, // formatted data associated with individual action item\n            INSTALLMESSAGE_PROGRESS = 0x0A000000L, // progress gauge info: units so far, total\n            INSTALLMESSAGE_COMMONDATA = 0x0B000000L, // product info for dialog: language Id, dialog caption\n            INSTALLMESSAGE_INITIALIZE = 0x0C000000L, // sent prior to UI initialization, no string data\n            INSTALLMESSAGE_TERMINATE = 0x0D000000L, // sent after UI termination, no string data\n            INSTALLMESSAGE_SHOWDIALOG = 0x0E000000L // sent prior to display or authored dialog or wizard\n        }\n\n        public enum INSTALLMODE\n        {\n            INSTALLMODE_NOSOURCERESOLUTION = -3, // skip source resolution\n            INSTALLMODE_NODETECTION = -2, // skip detection\n            INSTALLMODE_EXISTING = -1, // provide, if available\n            INSTALLMODE_DEFAULT = 0 // install, if absent\n        }\n\n        public enum INSTALLSTATE\n        {\n            INSTALLSTATE_NOTUSED = -7, // component disabled\n            INSTALLSTATE_BADCONFIG = -6, // configuration data corrupt\n            INSTALLSTATE_INCOMPLETE = -5, // installation suspended or in progress\n            INSTALLSTATE_SOURCEABSENT = -4, // run from source, source is unavailable\n            INSTALLSTATE_MOREDATA = -3, // return buffer overflow\n            INSTALLSTATE_INVALIDARG = -2, // invalid function argument\n            INSTALLSTATE_UNKNOWN = -1, // unrecognized product or feature\n            INSTALLSTATE_BROKEN = 0, // broken\n            INSTALLSTATE_ADVERTISED = 1, // advertised feature\n            INSTALLSTATE_REMOVED = 1, // component being removed (action state, not settable)\n            INSTALLSTATE_ABSENT = 2, // uninstalled (or action state absent but clients remain)\n            INSTALLSTATE_LOCAL = 3, // installed on local drive\n            INSTALLSTATE_SOURCE = 4, // run from source, CD or net\n            INSTALLSTATE_DEFAULT = 5 // use default, local or source\n        }\n\n        public enum INSTALLTYPE\n        {\n            INSTALLTYPE_DEFAULT = 0, // set to indicate default behavior\n            INSTALLTYPE_NETWORK_IMAGE = 1 // set to indicate network install\n        }\n\n        public enum INSTALLUILEVEL\n        {\n            INSTALLUILEVEL_NOCHANGE = 0, // UI level is unchanged\n            INSTALLUILEVEL_DEFAULT = 1, // default UI is used\n            INSTALLUILEVEL_NONE = 2, // completely silent installation\n            INSTALLUILEVEL_BASIC = 3, // simple progress and error handling\n            INSTALLUILEVEL_REDUCED = 4, // authored UI, wizard dialogs suppressed\n            INSTALLUILEVEL_FULL = 5, // authored UI with wizards, progress, errors\n            INSTALLUILEVEL_ENDDIALOG = 0x80, // display success/failure dialog at end of install\n            INSTALLUILEVEL_PROGRESSONLY = 0x40 // display only progress dialog\n        }\n\n        public enum MSICOLINFO\n        {\n            MSICOLINFO_NAMES = 0, // return column names\n            MSICOLINFO_TYPES = 1 // return column definitions, datatype code followed    by width\n        }\n\n        public enum MSICONDITION\n        {\n            MSICONDITION_FALSE = 0, // expression evaluates to False\n            MSICONDITION_TRUE = 1, // expression evaluates to True\n            MSICONDITION_NONE = 2, // no expression present\n            MSICONDITION_ERROR = 3 // syntax error in expression\n        }\n\n        public enum MSICOSTTREE\n        {\n            MSICOSTTREE_SELFONLY = 0,\n            MSICOSTTREE_CHILDREN = 1,\n            MSICOSTTREE_PARENTS = 2,\n            MSICOSTTREE_RESERVED = 3 // Reserved for future use\n        }\n\n        // -------------------------------------------------------------------------\n        // Functions to query and configure a product as a whole.\n        // -------------------------------------------------------------------------\n\n        public enum MSIDBSTATE\n        {\n            MSIDBSTATE_ERROR = -1, // invalid database handle\n            MSIDBSTATE_READ = 0, // database open read-only, no persistent changes\n            MSIDBSTATE_WRITE = 1 // database readable and updatable\n        }\n\n        public enum MSIMODIFY\n        {\n            MSIMODIFY_SEEK = -1, // reposition to current record primary    key\n            MSIMODIFY_REFRESH = 0, // refetch current record data\n            MSIMODIFY_INSERT = 1, // insert new record, fails if matching    key exists\n            MSIMODIFY_UPDATE = 2, // update existing non-key data of fetched    record\n            MSIMODIFY_ASSIGN = 3, // insert record, replacing any existing    record\n            MSIMODIFY_REPLACE = 4, // update record, delete old if primary    key edit\n            MSIMODIFY_MERGE = 5, // fails if record with duplicate key not    identical\n            MSIMODIFY_DELETE = 6, // remove row referenced by this record    from table\n            MSIMODIFY_INSERT_TEMPORARY = 7, // insert a temporary record\n            MSIMODIFY_VALIDATE = 8, // validate a fetched record\n            MSIMODIFY_VALIDATE_NEW = 9, // validate a new record\n            MSIMODIFY_VALIDATE_FIELD = 10, // validate field(s) of an incomplete    record\n            MSIMODIFY_VALIDATE_DELETE = 11 // validate before deleting record\n        }\n\n        public enum REINSTALLMODE // bit flags\n        {\n            REINSTALLMODE_REPAIR = 0x00000001, // Reserved bit - currently ignored\n            REINSTALLMODE_FILEMISSING = 0x00000002, // Reinstall only if file is missing\n            REINSTALLMODE_FILEOLDERVERSION = 0x00000004, // Reinstall if file is missing, or older version\n            REINSTALLMODE_FILEEQUALVERSION = 0x00000008, // Reinstall if file is missing, or equal or older version\n            REINSTALLMODE_FILEEXACT = 0x00000010, // Reinstall if file is        missing, or not exact version\n            REINSTALLMODE_FILEVERIFY = 0x00000020, // checksum executables,        reinstall if missing or corrupt\n            REINSTALLMODE_FILEREPLACE = 0x00000040, // Reinstall all files,        regardless of version\n            REINSTALLMODE_MACHINEDATA = 0x00000080, // insure required machine        reg entries\n            REINSTALLMODE_USERDATA = 0x00000100, // insure required user reg        entries\n            REINSTALLMODE_SHORTCUT = 0x00000200, // validate shortcuts items\n            REINSTALLMODE_PACKAGE = 0x00000400 // use re-cache source        install package\n        }\n\n        public enum USERINFOSTATE\n        {\n            USERINFOSTATE_MOREDATA = -3, // return buffer overflow\n            USERINFOSTATE_INVALIDARG = -2, // invalid function argument\n            USERINFOSTATE_UNKNOWN = -1, // unrecognized product\n            USERINFOSTATE_ABSENT = 0, // user info and PID not initialized\n            USERINFOSTATE_PRESENT = 1 // user info and PID initialized\n        }\n\n        /// <summary>\n        /// Flags that may be passed into the dwContext parameter of the <see cref=\"MsiEnumProducts\"/> method.\n        /// https://github.com/dotnet/pinvoke/blob/d974353ca67c4b8e6009096bd3ab7e6f284ed11d/src/Msi/Msi%2BMSIINSTALLCONTEXT.cs\n        /// </summary>\n        [Flags]\n        public enum MSIINSTALLCONTEXT : uint\n        {\n            /// <summary>\n            /// Product visible to the current user.\n            /// </summary>\n            MSIINSTALLCONTEXT_FIRSTVISIBLE = 0,\n\n            /// <summary>\n            /// Invalid context for a product\n            /// </summary>\n            MSIINSTALLCONTEXT_NONE = 0,\n\n            /// <summary>\n            /// Enumeration extended to all per–user–managed installations for the users specified by szUserSid. An invalid SID returns no items.\n            /// </summary>\n            MSIINSTALLCONTEXT_USERMANAGED = 0x1,\n\n            /// <summary>\n            /// Enumeration extended to all per–user–unmanaged installations for the users specified by szUserSid. An invalid SID returns no items.\n            /// </summary>\n            MSIINSTALLCONTEXT_USERUNMANAGED = 0x2,\n\n            /// <summary>\n            /// Enumeration extended to all per-machine installations. When dwInstallContext is set to MSIINSTALLCONTEXT_MACHINE only, the szUserSID parameter must be NULL.\n            /// </summary>\n            MSIINSTALLCONTEXT_MACHINE = 0x4,\n\n            /// <summary>\n            /// All contexts. OR of all valid values\n            /// </summary>\n            MSIINSTALLCONTEXT_ALL = MSIINSTALLCONTEXT_USERMANAGED | MSIINSTALLCONTEXT_USERUNMANAGED | MSIINSTALLCONTEXT_MACHINE,\n\n            /// <summary>\n            /// All user-managed contexts.\n            /// </summary>\n            MSIINSTALLCONTEXT_ALLUSERMANAGED = 0x8,\n        }\n\n        public const int MAX_FEATURE_CHARS = 38; // maximum chars in feature name (same as string GUID)\n        // MsiOpenDatabase persist predefine values, otherwise output database path is used\n        public const string MSIDBOPEN_READONLY = \"0\"; // database open read-only, no persistent changes\n        public const string MSIDBOPEN_TRANSACT = \"1\"; // database read/write in transaction mode\n        public const string MSIDBOPEN_DIRECT = \"2\"; // database direct read/write without transaction\n        public const string MSIDBOPEN_CREATE = \"3\"; // create new database, transact mode read/write\n        public const string MSIDBOPEN_CREATEDIRECT = \"4\"; // create new database, direct mode read/write\n        // -------------------------------------------------------------------------\n\n        // Functions to set the UI handling and logging. The UI will be used for error,\n        // progress, and log messages for all subsequent calls to Installer Service\n        // API functions that require UI.\n        // -------------------------------------------------------------------------\n\n\n        // Enable internal UI\n        [DllImport(\"msi\", CharSet = CharSet.Auto)] // UI level\n        // handle of owner window\n        public static extern INSTALLUILEVEL MsiSetInternalUI(INSTALLUILEVEL dwUILevel, ref IntPtr winhandle);\n\n        // Enable logging to a file for all install sessions for the client process,\n        // with control over which log messages are passed to the specified log file.\n        // Messages are designated with a combination of bits from INSTALLLOGMODE enum.\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiEnableLog(\n            int dwLogMode, // bit flags designating operations to report\n            string szLogFile, // log file, or NULL to disable logging\n            int dwLogAttributes);\n\n        // Return the installed state for a product\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern INSTALLSTATE MsiQueryProductState(\n            string szProduct);\n\n        // Return product info\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiGetProductInfo(\n            string szProduct, // product code\n            string szAttribute, // attribute name, case-sensitive\n            string lpValueBuf, // returned value, NULL if not desired ref?\n            ref int len); // in/out buffer character count\n        // Install a new product.\n        // Either may be NULL, but the DATABASE property must be specfied\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiInstallProduct(\n            string szPackagePath, // location of package to install\n            string szCommandLine); // command line <property settings>\n        // Install/uninstall an advertised or installed product\n        // No action if installed and INSTALLSTATE_DEFAULT specified\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiConfigureProduct(\n            string szProduct, // product code\n            int iInstallLevel, // how much of the product to install\n            INSTALLSTATE eInstallState); // local/source/default/absent/lock/uncache\n        // Reinstall product, used to validate or correct problems\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiReinstallProduct(\n            string szProduct, // product code\n            int szReinstallMode); // one or more REINSTALLMODE modes\n        // Return the product code for a registered component, called once by apps\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiGetProductCode(\n            string szComponent, // component Id registered for this product\n            [Out] StringBuilder lpBuf39); // returned string GUID, sized for 39 characters\n        // Return the registered user information for an installed product\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern USERINFOSTATE MsiGetUserInfo(\n            string szProduct, // product code, string GUID\n            string UserNameBuf, // return user name\n            ref int UserNameBufLen, // in/out buffer character count\n            string OrgNameBuf, // return company name\n            ref int OrgNameBufLen, // in/out buffer character count\n            string SerialBuf, // return product serial number\n            ref int SerialBufLen); // in/out buffer character count\n        // Obtain and store user info and PID from installation wizard (first run)\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiCollectUserInfo(\n            string szProduct); // product code, string GUID\n        //msiQuery.h\n\n\n        // -------------------------------------------------------------------------\n        // Installer database management functions - not used by custom actions\n        // -------------------------------------------------------------------------\n\n        // Open an installer database, specifying the persistance mode, which is a pointer.\n        // Predefined persist values are reserved pointer values, requiring pointer arithmetic.\n        // Execution of this function sets the error record, accessible via MsiGetLastErrorRecord\n\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiOpenDatabase(string dbpath, string persist,\n            ref IntPtr msihandle);\n\n        // Import an MSI text archive table into an open database\n        // Execution of this function sets the error record, accessible via MsiGetLastErrorRecord\n\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiDatabaseImport(IntPtr msihandle,\n            string FolderPath, // folder containing archive files\n            string FileName); // table archive file to be imported\n        // Export an MSI table from an open database to a text archive file\n        // Execution of this function sets the error record, accessible via MsiGetLastErrorRecord\n\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiDatabaseExport(IntPtr msihandle,\n            string TableName, // name of table in database <case-sensitive>\n            string FolderPath, // folder containing archive files\n            string FileName); // name of exported table archive file\n        // Merge two database together, allowing duplicate rows\n        // Execution of this function sets the error record, accessible via MsiGetLastErrorRecord\n\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiDatabaseMerge(IntPtr msihandle,\n            IntPtr msihandle2, // database to be merged into hDatabase\n            string TableName); // name of non-persistent table to receive errors\n        // Write out all persistent table data, ignored if database opened read-only\n        // Execution of this function sets the error record, accessible via MsiGetLastErrorRecord\n\n        [DllImport(\"msi\")]\n        public static extern int MsiDatabaseCommit(IntPtr msihandle);\n\n        // Return the update state of a database\n\n        [DllImport(\"msi\")]\n        public static extern MSIDBSTATE MsiGetDatabaseState(IntPtr msihandle);\n\n        // -------------------------------------------------------------------------\n        // Installer database access functions\n        // -------------------------------------------------------------------------\n\n        // Prepare a database query, creating a view object\n        // Returns ERROR_SUCCESS if successful, and the view handle is returned,\n        // else ERROR_INVALID_HANDLE, ERROR_INVALID_HANDLE_STATE, ERROR_BAD_QUERY_SYNTAX, ERROR_GEN_FAILURE\n        // Execution of this function sets the error record, accessible via MsiGetLastErrorRecord\n\n        [DllImport(\"msi\")]\n        public static extern int MsiDatabaseOpenView(IntPtr handle, string query,\n            ref IntPtr viewhandle);\n\n        // Exectute the view query, supplying parameters as required\n        // Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_HANDLE_STATE, ERROR_GEN_FAILURE\n        // Execution of this function sets the error record, accessible via MsiGetLastErrorRecord\n\n        [DllImport(\"msi\")]\n        public static extern int MsiViewExecute(IntPtr viewhandle, IntPtr\n            recordhandle);\n\n        // Fetch the next sequential record from the view\n        // Result is ERROR_SUCCESS if a row is found, and its handle is returned\n        // else ERROR_NO_MORE_ITEMS if no records remain, and a null handle is returned\n        // else result is error: ERROR_INVALID_HANDLE_STATE, ERROR_INVALID_HANDLE, ERROR_GEN_FAILURE\n\n        [DllImport(\"msi\")]\n        public static extern int MsiViewFetch(IntPtr viewhandle, ref IntPtr\n            recordhandle);\n\n        // Modify a database record, parameters must match types in query columns\n        // Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_HANDLE_STATE, ERROR_GEN_FAILURE, ERROR_ACCESS_DENIED\n        // Execution of this function sets the error record, accessible via MsiGetLastErrorRecord\n\n        [DllImport(\"msi\")]\n        public static extern int MsiViewModify(IntPtr viewhandle, MSIMODIFY eModifyMode, // modify action to perform\n            IntPtr recordhandle); // record obtained from fetch, or new record\n        // Return the column names or specifications for the current view\n        // Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_PARAMETER, or ERROR_INVALID_HANDLE_STATE\n\n        [DllImport(\"msi\")]\n        public static extern int MsiViewGetColumnInfo(IntPtr viewhandle, MSICOLINFO eColumnInfo,\n            // retrieve columns names or definitions\n            ref IntPtr recordhandle); // returned data record containing all names or definitions\n\n        [DllImport(\"msi\")]\n        public static extern int MsiCloseHandle(IntPtr handle);\n\n        // Release the result set for an executed view, to allow re-execution\n        // Only needs to be called if not all records have been fetched\n        // Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_HANDLE_STATE\n\n        [DllImport(\"msi\")]\n        public static extern int MsiViewClose(IntPtr viewhandle);\n\n        // Return a record containing the names of all primary key columns for a given table\n        // Returns an MSIHANDLE for a record containing the name of each column.\n        // The field count of the record corresponds to the number of primary key columns.\n        // Field [0] of the record contains the table name.\n        // Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_TABLE\n\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiDatabaseGetPrimaryKeys(IntPtr msihandle,\n            string szTableName, // the name of a specific table <case-sensitive>\n            ref IntPtr recordhandle); // returned record if ERROR_SUCCESS\n        // -------------------------------------------------------------------------\n        // Record object functions\n        // -------------------------------------------------------------------------\n\n        // Create a new record object with the requested number of fields\n        // Field 0, not included in count, is used for format strings and op codes\n        // All fields are initialized to null\n        // Returns a handle to the created record, or 0 if memory could not be allocated\n\n        [DllImport(\"msi\")]\n        public static extern IntPtr MsiCreateRecord(\n            int Params); // the number of data fields\n        // Report whether a record field is NULL\n        // Returns TRUE if the field is null or does not exist\n        // Returns FALSE if the field contains data, or the handle is invalid\n\n        [DllImport(\"msi\")]\n        public static extern bool MsiRecordIsNull(IntPtr recordhandle,\n            int Field);\n\n        // Return the length of a record field\n        // Returns 0 if field is NULL or non-existent\n        // Returns sizeof(int) if integer data\n        // Returns character count if string data (not counting null terminator)\n        // Returns bytes count if stream data\n\n        [DllImport(\"msi\")]\n        public static extern int MsiRecordDataSize(IntPtr recordhandle,\n            int Field);\n\n        // Set a record field to an integer value\n        // Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_FIELD\n\n        [DllImport(\"msi\")]\n        public static extern int MsiRecordSetInteger(IntPtr recordhandle,\n            int Field,\n            int Value);\n\n        // Copy a string into the designated field\n        // A null string pointer and an empty string both set the field to null\n        // Returns ERROR_SUCCESS, ERROR_INVALID_HANDLE, ERROR_INVALID_FIELD\n\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiRecordSetString(IntPtr recordhandle,\n            int Field,\n            string Value);\n\n        // Return the integer value from a record field\n        // Returns the value MSI_NULL_INTEGER if the field is null\n        // or if the field is a string that cannot be converted to an integer\n\n        [DllImport(\"msi\")]\n        public static extern int MsiRecordGetInteger(IntPtr recordhandle,\n            int Field);\n\n        // Return the string value of a record field\n        // Integer fields will be converted to a string\n        // Null and non-existent fields will report a value of 0\n        // Fields containing stream data will return ERROR_INVALID_DATATYPE\n        // Returns ERROR_SUCCESS, ERROR_MORE_DATA,\n        //         ERROR_INVALID_HANDLE, ERROR_INVALID_FIELD, ERROR_BAD_ARGUMENTS\n\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiRecordGetString(IntPtr recordhandle,\n            int Field,\n            string ValueBuf, // buffer for returned value\n            ref int len); // in/out buffer character count\n        // Returns the number of fields allocated in the record\n        // Does not count field 0, used for formatting and op codes\n\n        [DllImport(\"msi\")]\n        public static extern int MsiRecordGetFieldCount(IntPtr recordhandle);\n\n        // Set a record stream field from a file\n        // The contents of the specified file will be read into a stream object\n        // The stream will be persisted if the record is inserted into the database\n        // Execution of this function sets the error record, accessible via MsiGetLastErrorRecord\n\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiRecordSetStream(IntPtr recordhandle,\n            int Field,\n            string FilePath); // path to file containing stream data\n        // Read bytes from a record stream field into a buffer\n        // Must set the in/out argument to the requested byte count to read\n        // The number of bytes transferred is returned through the argument\n        // If no more bytes are available, ERROR_SUCCESS is still returned\n\n        [DllImport(\"msi\", CharSet = CharSet.Auto)]\n        public static extern int MsiRecordReadStream(IntPtr recordhandle,\n            int Field,\n            string DataBuf, // buffer to receive bytes from stream\n            ref int len); // in/out buffer byte count\n        // Clears all data fields in a record to NULL\n\n        [DllImport(\"msi\")]\n        public static extern int MsiRecordClearData(IntPtr recordhandle);\n\n        [DllImport(\"msi.dll\", CharSet = CharSet.Unicode)]\n        public static extern int MsiGetProductInfo(string product, string property, [Out] StringBuilder valueBuf,\n            ref int len);\n\n        [DllImport(\"msi.dll\", SetLastError = true)]\n        public static extern int MsiEnumProducts(int iProductIndex, StringBuilder lpProductBuf);\n\n        // The MsiGetFileSignatureInformation function takes the path to a file that has been digitally\n        // signed and returns the file's signer certificate and hash.\n        [DllImport(\"msi\")]\n        public static extern int MsiGetFileSignatureInformation([In] string szSignedObjectPath, [In] uint dwFlags,\n            out IntPtr ppcCertContext, [Out] byte[] pbHashData, ref uint pcbHashData);\n\n        [DllImport(\"msi.dll\", CharSet = CharSet.Unicode)]\n        //http://msdn.microsoft.com/library/en-us/msi/setup/msienumcomponents.asp\n        public static extern int MsiEnumComponents(int iComponentIndex, StringBuilder lpComponentBuf);\n\n        [DllImport(\"msi.dll\", CharSet = CharSet.Unicode)]\n        public static extern INSTALLSTATE MsiGetComponentPath(string szProduct, string szComponent, StringBuilder lpPathBuf, ref int pcchPathBuf);\n\n        [DllImport(\"msi.dll\", CharSet = CharSet.Unicode)]\n        public static extern int MsiQueryComponentState(string szProductCode, string szUserSid, [MarshalAs(UnmanagedType.I4)] MSIINSTALLCONTEXT dwContext, string szComponent, out INSTALLSTATE pdwState);\n\n        public sealed class INSTALLPROPERTY\n        {\n            // Product info attributes: advertised information\n            public static INSTALLPROPERTY PACKAGENAME = new(\"PackageName\");\n            public static INSTALLPROPERTY TRANSFORMS = new(\"Transforms\");\n            public static INSTALLPROPERTY LANGUAGE = new(\"Language\");\n            public static INSTALLPROPERTY PRODUCTNAME = new(\"ProductName\");\n            public static INSTALLPROPERTY ASSIGNMENTTYPE = new(\"AssignmentType\");\n            public static INSTALLPROPERTY PACKAGECODE = new(\"PackageCode\");\n            public static INSTALLPROPERTY VERSION = new(\"Version\");\n            public static INSTALLPROPERTY PRODUCTICON = new(\"ProductIcon\");\n            // Product info attributes: installed information\n            public static INSTALLPROPERTY INSTALLEDPRODUCTNAME = new(\"InstalledProductName\");\n            public static INSTALLPROPERTY VERSIONSTRING = new(\"VersionString\");\n            public static INSTALLPROPERTY HELPLINK = new(\"HelpLink\");\n            public static INSTALLPROPERTY HELPTELEPHONE = new(\"HelpTelephone\");\n            public static INSTALLPROPERTY INSTALLLOCATION = new(\"InstallLocation\");\n            public static INSTALLPROPERTY INSTALLSOURCE = new(\"InstallSource\");\n            public static INSTALLPROPERTY INSTALLDATE = new(\"InstallDate\");\n            public static INSTALLPROPERTY PUBLISHER = new(\"Publisher\");\n            public static INSTALLPROPERTY LOCALPACKAGE = new(\"LocalPackage\");\n            public static INSTALLPROPERTY URLINFOABOUT = new(\"URLInfoAbout\");\n            public static INSTALLPROPERTY URLUPDATEINFO = new(\"URLUpdateInfo\");\n            public static INSTALLPROPERTY VERSIONMINOR = new(\"VersionMinor\");\n            public static INSTALLPROPERTY VERSIONMAJOR = new(\"VersionMajor\");\n\n            private INSTALLPROPERTY(string name)\n            {\n                PropertyName = name;\n            }\n\n            public string PropertyName { get; }\n\n            public override string ToString()\n            {\n                return PropertyName;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace Klocman.Properties {\n    using System;\n    \n    \n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    public class Localisation {\n        \n        private static global::System.Resources.ResourceManager resourceMan;\n        \n        private static global::System.Globalization.CultureInfo resourceCulture;\n        \n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal Localisation() {\n        }\n        \n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        public static global::System.Resources.ResourceManager ResourceManager {\n            get {\n                if (object.ReferenceEquals(resourceMan, null)) {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"Klocman.Properties.Localisation\", typeof(Localisation).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n        \n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        public static global::System.Globalization.CultureInfo Culture {\n            get {\n                return resourceCulture;\n            }\n            set {\n                resourceCulture = value;\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ask.\n        /// </summary>\n        public static string Enums_YesNoAsk_Ask {\n            get {\n                return ResourceManager.GetString(\"Enums_YesNoAsk_Ask\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to File name can&apos;t be empty..\n        /// </summary>\n        public static string Error_SeparateArgsFromCommand_Empty {\n            get {\n                return ResourceManager.GetString(\"Error_SeparateArgsFromCommand_Empty\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ending quotation mark is missing..\n        /// </summary>\n        public static string Error_SeparateArgsFromCommand_MissingQuotationMark {\n            get {\n                return ResourceManager.GetString(\"Error_SeparateArgsFromCommand_MissingQuotationMark\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to File name must contain an extension separated by a dot..\n        /// </summary>\n        public static string Error_SeparateArgsFromCommand_NoDot {\n            get {\n                return ResourceManager.GetString(\"Error_SeparateArgsFromCommand_NoDot\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Attributes.\n        /// </summary>\n        public static string FileInfo_Attributes {\n            get {\n                return ResourceManager.GetString(\"FileInfo_Attributes\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Comment.\n        /// </summary>\n        public static string FileInfo_Comments {\n            get {\n                return ResourceManager.GetString(\"FileInfo_Comments\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Company Name.\n        /// </summary>\n        public static string FileInfo_CompanyName {\n            get {\n                return ResourceManager.GetString(\"FileInfo_CompanyName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Creation Time.\n        /// </summary>\n        public static string FileInfo_CreationTime {\n            get {\n                return ResourceManager.GetString(\"FileInfo_CreationTime\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Directory.\n        /// </summary>\n        public static string FileInfo_Directory {\n            get {\n                return ResourceManager.GetString(\"FileInfo_Directory\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exists on drive.\n        /// </summary>\n        public static string FileInfo_Exists {\n            get {\n                return ResourceManager.GetString(\"FileInfo_Exists\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Description.\n        /// </summary>\n        public static string FileInfo_FileDescription {\n            get {\n                return ResourceManager.GetString(\"FileInfo_FileDescription\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to File Name.\n        /// </summary>\n        public static string FileInfo_FileName {\n            get {\n                return ResourceManager.GetString(\"FileInfo_FileName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to File Version.\n        /// </summary>\n        public static string FileInfo_FileVersion {\n            get {\n                return ResourceManager.GetString(\"FileInfo_FileVersion\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Full Name.\n        /// </summary>\n        public static string FileInfo_FullName {\n            get {\n                return ResourceManager.GetString(\"FileInfo_FullName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Internal Name.\n        /// </summary>\n        public static string FileInfo_InternalName {\n            get {\n                return ResourceManager.GetString(\"FileInfo_InternalName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Is read only.\n        /// </summary>\n        public static string FileInfo_IsReadOnly {\n            get {\n                return ResourceManager.GetString(\"FileInfo_IsReadOnly\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Language.\n        /// </summary>\n        public static string FileInfo_Language {\n            get {\n                return ResourceManager.GetString(\"FileInfo_Language\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Last Access Time.\n        /// </summary>\n        public static string FileInfo_LastAccessTime {\n            get {\n                return ResourceManager.GetString(\"FileInfo_LastAccessTime\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Last Write Time.\n        /// </summary>\n        public static string FileInfo_LastWriteTime {\n            get {\n                return ResourceManager.GetString(\"FileInfo_LastWriteTime\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copyright.\n        /// </summary>\n        public static string FileInfo_LegalCopyright {\n            get {\n                return ResourceManager.GetString(\"FileInfo_LegalCopyright\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Trademarks.\n        /// </summary>\n        public static string FileInfo_LegalTrademarks {\n            get {\n                return ResourceManager.GetString(\"FileInfo_LegalTrademarks\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Original Filename.\n        /// </summary>\n        public static string FileInfo_OriginalFilename {\n            get {\n                return ResourceManager.GetString(\"FileInfo_OriginalFilename\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Product Name.\n        /// </summary>\n        public static string FileInfo_ProductName {\n            get {\n                return ResourceManager.GetString(\"FileInfo_ProductName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Product Version.\n        /// </summary>\n        public static string FileInfo_ProductVersion {\n            get {\n                return ResourceManager.GetString(\"FileInfo_ProductVersion\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Size.\n        /// </summary>\n        public static string FileInfo_Size {\n            get {\n                return ResourceManager.GetString(\"FileInfo_Size\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Gigabytes.\n        /// </summary>\n        public static string FileSize_GB_Long {\n            get {\n                return ResourceManager.GetString(\"FileSize_GB_Long\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GB.\n        /// </summary>\n        public static string FileSize_GB_Short {\n            get {\n                return ResourceManager.GetString(\"FileSize_GB_Short\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kilobytes.\n        /// </summary>\n        public static string FileSize_KB_Long {\n            get {\n                return ResourceManager.GetString(\"FileSize_KB_Long\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to KB.\n        /// </summary>\n        public static string FileSize_KB_Short {\n            get {\n                return ResourceManager.GetString(\"FileSize_KB_Short\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Megabytes.\n        /// </summary>\n        public static string FileSize_MB_Long {\n            get {\n                return ResourceManager.GetString(\"FileSize_MB_Long\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MB.\n        /// </summary>\n        public static string FileSize_MB_Short {\n            get {\n                return ResourceManager.GetString(\"FileSize_MB_Short\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Terabytes.\n        /// </summary>\n        public static string FileSize_TB_Long {\n            get {\n                return ResourceManager.GetString(\"FileSize_TB_Long\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to TB.\n        /// </summary>\n        public static string FileSize_TB_Short {\n            get {\n                return ResourceManager.GetString(\"FileSize_TB_Short\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No.\n        /// </summary>\n        public static string No {\n            get {\n                return ResourceManager.GetString(\"No\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to While this error does not require the application to shut down, some functionality might stop working. Most errors related to the filesystem can be safely ignored.\n        ///\n        ///Error message: {0}\n        ///\n        ///You can copy detailed information about this error to the clipboard by clicking the &quot;Copy&quot; button. Please consider sending this error information to the developer..\n        /// </summary>\n        public static string PremadeDialogs_GenericError_Details {\n            get {\n                return ResourceManager.GetString(\"PremadeDialogs_GenericError_Details\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The application has encountered an unexpected error.\n        /// </summary>\n        public static string PremadeDialogs_GenericError_Heading {\n            get {\n                return ResourceManager.GetString(\"PremadeDialogs_GenericError_Heading\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inner: .\n        /// </summary>\n        public static string PremadeDialogs_GenericError_InnerExceptionTitle {\n            get {\n                return ResourceManager.GetString(\"PremadeDialogs_GenericError_InnerExceptionTitle\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unexpected error.\n        /// </summary>\n        public static string PremadeDialogs_GenericError_Title {\n            get {\n                return ResourceManager.GetString(\"PremadeDialogs_GenericError_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Error details:.\n        /// </summary>\n        public static string PremadeDialogs_GenericErrorExtendedSafe_Heading {\n            get {\n                return ResourceManager.GetString(\"PremadeDialogs_GenericErrorExtendedSafe_Heading\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You might lose any unsaved data. To prevent data loss close the applications manually..\n        /// </summary>\n        public static string PremadeDialogs_KillRunningProcessesQuestion_Details {\n            get {\n                return ResourceManager.GetString(\"PremadeDialogs_KillRunningProcessesQuestion_Details\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Are you sure you want to terminate all of the processes? .\n        /// </summary>\n        public static string PremadeDialogs_KillRunningProcessesQuestion_Message {\n            get {\n                return ResourceManager.GetString(\"PremadeDialogs_KillRunningProcessesQuestion_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Terminate running processes.\n        /// </summary>\n        public static string PremadeDialogs_KillRunningProcessesQuestion_Title {\n            get {\n                return ResourceManager.GetString(\"PremadeDialogs_KillRunningProcessesQuestion_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Path does not point to a valid .reg file.\n        /// </summary>\n        public static string RegistryTools_AddRegToRegistry_FileNotExist {\n            get {\n                return ResourceManager.GetString(\"RegistryTools_AddRegToRegistry_FileNotExist\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Path cannot be empty or null.\n        /// </summary>\n        public static string RegistryTools_RemoveRegistryKey_PathEmptyNull {\n            get {\n                return ResourceManager.GetString(\"RegistryTools_RemoveRegistryKey_PathEmptyNull\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Path cannot point to a root key.\n        /// </summary>\n        public static string RegistryTools_RemoveRegistryKey_PointsAtRoot {\n            get {\n                return ResourceManager.GetString(\"RegistryTools_RemoveRegistryKey_PointsAtRoot\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cannot remove the default value.\n        /// </summary>\n        public static string RegistryTools_RemoveRegistryKey_RemoveDefault {\n            get {\n                return ResourceManager.GetString(\"RegistryTools_RemoveRegistryKey_RemoveDefault\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} days ago.\n        /// </summary>\n        public static string ToFuzzyTimeSinceString_Days_Since {\n            get {\n                return ResourceManager.GetString(\"ToFuzzyTimeSinceString_Days_Since\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yesterday.\n        /// </summary>\n        public static string ToFuzzyTimeSinceString_Days_Single {\n            get {\n                return ResourceManager.GetString(\"ToFuzzyTimeSinceString_Days_Single\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} hours ago.\n        /// </summary>\n        public static string ToFuzzyTimeSinceString_Hours_Since {\n            get {\n                return ResourceManager.GetString(\"ToFuzzyTimeSinceString_Hours_Since\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One hour ago.\n        /// </summary>\n        public static string ToFuzzyTimeSinceString_Hours_Single {\n            get {\n                return ResourceManager.GetString(\"ToFuzzyTimeSinceString_Hours_Single\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Just now.\n        /// </summary>\n        public static string ToFuzzyTimeSinceString_JustNow {\n            get {\n                return ResourceManager.GetString(\"ToFuzzyTimeSinceString_JustNow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} minutes ago.\n        /// </summary>\n        public static string ToFuzzyTimeSinceString_Minutes_Since {\n            get {\n                return ResourceManager.GetString(\"ToFuzzyTimeSinceString_Minutes_Since\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One minute ago.\n        /// </summary>\n        public static string ToFuzzyTimeSinceString_Minutes_Single {\n            get {\n                return ResourceManager.GetString(\"ToFuzzyTimeSinceString_Minutes_Single\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} months ago.\n        /// </summary>\n        public static string ToFuzzyTimeSinceString_Months_Since {\n            get {\n                return ResourceManager.GetString(\"ToFuzzyTimeSinceString_Months_Since\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One month ago.\n        /// </summary>\n        public static string ToFuzzyTimeSinceString_Months_Single {\n            get {\n                return ResourceManager.GetString(\"ToFuzzyTimeSinceString_Months_Single\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} years ago.\n        /// </summary>\n        public static string ToFuzzyTimeSinceString_Years_Since {\n            get {\n                return ResourceManager.GetString(\"ToFuzzyTimeSinceString_Years_Since\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to One year ago.\n        /// </summary>\n        public static string ToFuzzyTimeSinceString_Years_Single {\n            get {\n                return ResourceManager.GetString(\"ToFuzzyTimeSinceString_Years_Single\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes.\n        /// </summary>\n        public static string Yes {\n            get {\n                return ResourceManager.GetString(\"Yes\", resourceCulture);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>اسال</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>لا يمكن ان يكون اسم الملف فارغا.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>انهاء علامة اقتباس مفقود.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>يجب ان يحتوي اسم الملف على ملحق مفصول بنقطه.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>غيغابايت</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>ق ب</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>كيلوبايت</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>ك ب</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>ميقا بايت</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>م ب</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>تيرابايت</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>ت ب</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>لا</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>نعم</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} قبل ايام</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>امس</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0} قبل ساعات  </value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>قبل ساعة واحدة</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>الان</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0} قبل دقائق</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>قبل دقيقة واحدة</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0} قبل شهور</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>قبل شهر واحد</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0} قبل سنوات</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>قبل سنة واحدة</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>الداخل:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>صادف التطبيق خطا غير متوقع</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>خطا غير متوقع</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>قد تفقد ايه بيانات غير محفوظه. لمنع فقدان البيانات اغلق التطبيقات يدويا.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>هل تريد بالتاكيد انهاء كافة العمليات ؟</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>انهاء عمليات التشغيل</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>صالح .reg لا يشير المسار إلى ملف </value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>لا يمكن ان يكون المسار فارغا او خاليا</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>لا يمكن ان يشير المسار الى مفتاح الجذر</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>لا يمكن ازاله القيمة الافتراضية</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>تفاصيل الخطا:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>بالرغم من ان هذا الخطا لا يتطلب ايقاف تشغيل التطبيق ، فقد تتوقف بعض الوظائف عن العمل. يمكن تجاهل معظم الاخطاء المتعلقة بالملفات بامان.\n\n{0} :رسالة الخطا\n\nيمكنك نسخ معلومات مفصله حول هذا الخطا الى الحافظة بالنقر فوق الزر \"نسخ\". الرجاء النظر في ارسال معلومات الخطا هذه الى المطور.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>وقت الانشاء</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>اخر وقت وصول</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>وقت الكتابة الاخير</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>سمات</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>قراءة فقط</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>الاسم الكامل</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>اسم الملف</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>حجم</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>دليل</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>موجود على المحرك </value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>تعليق</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>اسم الشركة</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>وصف</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>اصدار الملف</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>الاسم الداخلي</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>لغة</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>حقوق النشر</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>العلامات التجارية</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>الاسم الكامل</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>اسم الملف</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>حجم</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Zeptat se</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>Název souboru nemůže být prázdný.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Ukončení-uvozovky chybí.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>Název souboru musí obsahovat příponu oddělenou tečkou.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabyt</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobyt</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabyt</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabyt</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Ne</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Ano</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} dny</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Včera</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0} před hodinou</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>Před jednou hodinou</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Právě teď</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0} před minutami</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>Před jednou minutou</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0} před měsícem</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>Před měsícem</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0} před lety</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Před rokem</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Vnitřní:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>Aplikace došlo k neočekávané chybě</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Neočekávaná chyba</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Mohly by jste přijít o neuložená data. Chcete-li zabránit ztrátě dat zavřete aplikace ručně.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Jste si jisti, že chcete ukončit všechny procesy?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Ukončit běžící procesy</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Název souboru neukazuje na platný soubor registrů</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Cesta nemůže být prázdná nebo null</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Cesta nemůže odkazovat na kořenového klíče</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Nelze odstranit standardní hodnotu</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Podrobnosti o chybě:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Zatímco tato chyba nevyžaduje vypnoutí aplikace, některé funkce mohou přestat pracovat. Většina chyb souvisejících s souborový systém může být bezpečně ignorována.\n\nChybová zpráva: {0}\n\nPodrobné informace o této chybě můžete zkopírovat do schránky klepnutím na tlačítko \"Kopírovat\". Zvažte možnost odeslání informace o této chybě vývojáři.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Čas vytvoření</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Čas posledního přístupu</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Poslední čas zápisu</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Atributy</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Je jen pro čtení</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Celé jméno</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Název souboru</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Velikost</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Adresář</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Existuje na disku</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Komentář</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Název společnosti</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Popis</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Verze souboru</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Vnitřní název</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Jazyk</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Autorská práva</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Ochranná známka</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Původní název souboru</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Název produktu</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Verze produktu</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Fragen</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>Dateinname kann nicht leer sein</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Endung-Anführungszeichen fehlt.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>Der Dateiname muss eine Erweiterung durch einen Punkt getrennt enthalten.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabytes</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobytes</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabytes</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabytes</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Nein</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Ja</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>Die Anwendung ist ein unerwarteter Fehler aufgetreten</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Innen:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Unerwarteter Fehler</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>vor {0} Tagen</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Gestern</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>vor {0} Stunden</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>vor einer Stunde</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Gerade</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>vor {0} Minuten</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>vor einer Minute</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>vor {0} Monaten</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>vor einem Monat</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>vor {0} Jahren</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>vor einem Jahr</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Alle nicht gespeicherten Daten gehen möglicherweise verloren.\nUm Datenverlust zu verhindern, schließen Sie die Anwendungen manuell.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Sind Sie sicher, dass Sie alle Prozesse beenden möchten?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Laufende Prozesse beenden</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Dateiname verweist nicht auf eine gültige .reg-Datei</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Pfad kann nicht leer oder Null sein</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Pfad kann nicht auf einen Stammschlüssel zeigen</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Default-Wert kann nicht entfernt werden</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Attribute</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Größe</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Bemerkung</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Firmen Name</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Beschreibung</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Interner name</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Sprache</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Copyright</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Fehlerinformationen</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Während dieser Fehler nicht erfordert, dass die Anwendung heruntergefahren wird. Einige Funktionen funktionieren möglicherweise nicht mehr. Die meisten Fehler im Zusammenhang mit dem Dateisystem können problemlos ignoriert werden. \n\nFehlermeldung: {0}\n\nSie können detailierte Informationen dieses Fehlers in die Zwischenablage durch drücken der Copy Schaltfläche kopieren. Bitte überlege, diese Fehlerinformationen an den Entwickler zu senden.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Erstellungsdatum</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Letzter Zugriff</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Letzte Änderung</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Schreibgeschützt</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Voller Name</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Datei Name</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Ordnerpfad</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Ist auf Laufwerk</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Datei Version</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Warenzeichen</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Wirklicher Dateiname</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Produkt Name</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Produkt Version</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Preguntar</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>El nombre del archivo no puede estar vacío.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Falta la comilla final.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>El nombre del archivo debe contener una extensión separada por un punto.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabytes</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobytes</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabytes</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabytes</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Si</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>Hace {0} días</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Ayer</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>Hace {0} horas</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>Hace una hora</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Justo ahora</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>Hace {0} minutos</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>Hace un minuto</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>Hace {0} meses</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>Hace un mes</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>Hace {0} años</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Hace un año</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Interior:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>La aplicación ha detectado un error inesperado</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Error inesperado</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Puede perder los datos no guardados. Para evitarlo, cierre manualmente las aplicaciones.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>¿Está seguro de que desea terminar todos los procesos?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Terminar los procesos en ejecución</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Ruta de acceso no apunta a un archivo .reg válido</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>La ruta de acceso no puede estar vacía o nula</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>La ruta de acceso no puede apuntar a una clave raíz</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>No se puede eliminar el valor predeterminado</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Detalles del error:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Si bien este error no requiere cerrar BCU, algunas funciones pueden dejar de funcionar. La mayoría de los errores relacionados con el sistema de archivos pueden ser ignorados.\n\nMensaje del error: {0}\n\nPuede copiar la información detallada sobre este error en el portapapeles haciendo clic en el botón \"Copiar\". Por favor, considere enviar esta información de error al desarrollador.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Fecha de creación</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Fecha de último acceso</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Fecha de última escritura</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Atributos</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Es de sólo lectura</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Nombre completo</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Nombre del archivo</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Tamaño</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Directorio</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Existe en la unidad</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Comentario</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Nombre de la Compañía</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Descripción</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Versión del archivo</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Nombre interno</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Idioma</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Copyright</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Marcas registradas</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Nombre original</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Nombre del producto</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Versión del producto</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Demander</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Non</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Oui</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>Le nom de fichier ne peut être vide.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Il manque le guillemet de fin.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>Le nom de fichier doit contenir une extension séparée par un point.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Giga-octets</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>Go</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilo-octets</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>Ko</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Méga-octets</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>Mo</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Téra-octets</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>To</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Hier</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>Il y a une heure</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Juste maintenant</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>Il y a une minute</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>Il y a un mois</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Il y a un an</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>Il y a {0} jours</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>Il y a {0} heures</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>Il y a {0} minutes</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>Il y a {0} mois</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>Il y a {0} ans</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>L'application a rencontré une erreur inattendue</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Intérieur :</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Erreur inattendue</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Vous pourriez perdre toute donnée non sauvegardée. Pour éviter une perte de donnée, fermez manuellement les applications.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Êtes-vous sûr de vouloir arrêter tous les processus ?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Arrêter les processus en cours</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Le chemin ne pointe pas sur un fichier .reg valide</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Le chemin ne peut pas être vide ou nul</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Le chemin ne peut pas pointer sur une clé racine</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Impossible de supprimer la valeur par défaut</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Bien que cette erreur ne nécessite pas l'arrêt de l'application, certaines fonctionnalités pourrait s'arrêter de fonctionner. La plupart des erreurs liées au système de fichiers peuvent être ignorées en toute sécurité.\n\nMessage d'erreur : {0}\n\nVous pouvez copier les informations détaillées concernant cette erreur dans le presse-papiers en cliquant sur le bouton \"Copier\". Veuillez envisager l'envoi de cette information d'erreur au développeur.</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Détails d'erreur: </value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Heure de Création</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Heure de Dernier Accès</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Heure de Dernière Ecriture</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Attributs</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Est lecture seule</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Nom Complet</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Nom de Fichier</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Taille</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Dossier</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Existe sur le lecteur</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Commentaire</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Nom de Compagnie</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Description</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Version de Fichier</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Nom  Interne</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Langue</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Copyright</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Marques déposées</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Nom de fichier Original</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Nom de Produit</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Version de Produit</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Kérdés</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>A fájlnév nem lehet üres.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>A záró idézőjel hiányzik.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>A fájlnévnek tartalmaznia kell a kiterjesztést is, egy ponttal elválasztva.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabájt</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobájt</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabájt</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabájt</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Nem</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Igen</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} napja</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Tegnap</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0} órája</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>Egy órával ezelőtt</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Csak most</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0} perce</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>Egy perccel ezelőtt</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0} hónapja</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>Egy hónappal ezelőtt</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0} éve</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Egy évvel ezelőtt</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Belső: </value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>Az alkalmazás váratlan hibát észlelt</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Váratlan hiba</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Lehet, hogy a nem mentett adatai elfognak veszni. Az adatvesztés elkerülése érdekében zárja be az alkalmazást manuálisan.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Biztos benne, hogy leállítja az összes folyamatot?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Futó folyamatok leállítása</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Az útvonal nem mutathat egy érvényes .reg fájlra</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Az útvonal nem lehet üres, vagy nulla</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Az útvonal nem mutathat egy gyökérkulcsra</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Az alapérték nem távolítható el</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Hiba részletei:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Emiatt a hiba végett, ugyan nem szükséges leállítania a kérelem, azonban néhány funkciója leállhat. A legtöbb ilyen hiba a fájlrendszer kapcsolódik, és biztonsággal figyelmen kívül hagyható.\n\nHibaüzenet: {0}\n\nA hibával kapcsolatos részletes információkat kimásolhatja a Vágólapra, ha a \"Másolás\" gombra kattint. Kérjük, hogy ezeket az információkat küldje el a fejlesztőnek.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Létrehozás ideje</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Utolsó hozzáférés időpontja</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Utolsó írás időpontja</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Attribútumok</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Csak olvasható</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Teljes név</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Fájlnév</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Méret</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Könyvtár</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Létezik a meghajtón</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Megjegyzés</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Vállalat neve</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Leírás</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Fájlverzió</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Belső név</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Nyelv</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Szerzői jog</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Védjegyek</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Eredeti fájlnév</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Terméknév</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Termékverzió</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Chiedi</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>Il nome del file non può essere vuoto.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Mancano le virgolette finali.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>Il nome del file deve contenere un'estensione separata dal punto.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabyte</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobyte</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabyte</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabyte</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Sì</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} giorni fa</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Ieri</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0} ore fa</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>Un'ora fa</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>In questo momento</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0} minuti fa</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>Un minuto fa</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0} mesi fa</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>Un mese fa</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0} anni fa</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Un anno fa</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Interno:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>L'applicazione ha riscontrato un errore inaspettato</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Errore inaspettato</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Potresti perdere dei dati non salvati. Per evitare la perdita dei dati chiudi l'applicazione manualmente.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Sei sicuro di voler terminare tutti i processi?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Terminare i processi in esecuzione</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Il percorso non punta ad un file .reg valido</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Il percorso non può essere vuoto o nullo</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Il percorso non può puntare ad una chiave radice</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Non si possono cancellare i valori di default</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Dettagli dell'errore:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Sebbene questo errore non richieda di chiudere l'applicazione, alcune funzionalità potrebbero non operare correttamente. La maggior parte degli errori relativi al file system possono essere tranquillamente ignorati.\n\nMessaggio di errore: {0}\n\nPuoi copiare informazioni dettagliate nella clipboard premendo il tasto \"Copia\". Ti invitiamo ad inviare le informazioni sull'errore allo sviluppatore.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Ora di creazione</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Ora dell'ultimo accesso</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Ora dell'ultima scrittura</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Attributi</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>E' in sola lettura</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Nome completo</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Nome del file</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Grandezza</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Cartella</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Esiste sul disco</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Commento</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Nome del gruppo</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Descrizione</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Versione del file</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Nome interno</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Lingua</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Copyright</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Marchio depositato</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Nome del file di origine</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Nome del prodotto</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Versione del prodotto</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>ファイル名にはドットで区切られた拡張子が必要です。</value>\n  </data>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>聞く</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>ファイル名は空にできません。</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>終了引用符が欠けています。</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>ギガバイト</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>キロバイト</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>メガバイト</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>テラバイト</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>いいえ</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>はい</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0}日前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>昨日</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0}時間前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>1時間前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>たった今</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0}分前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>1分前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0}ヶ月前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>1ヶ月前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0}年前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>1年前</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>内部:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>アプリケーションが予期しないエラーに遭遇しました</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>予期しないエラー</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>保存されていないデータが失われる可能性があります。データ損失を防ぐために、アプリケーションを手動で閉じてください。</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>すべてのプロセスを終了してもよろしいですか？</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>実行中のプロセスを終了</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>パスが有効な .reg ファイルを指していません</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>パスは空またはヌルにできません</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>パスはルートキーを指すことはできません</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>デフォルト値を削除できません</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>エラーの詳細:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>このエラーはアプリケーションを終了する必要はありませんが、一部の機能が停止する可能性があります。\n\nファイルシステムに関連するほとんどのエラーは無視しても問題ありません。\nエラーメッセージ: {0}\n\n\"コピー\"ボタンをクリックすることで、このエラーに関する詳細情報をクリップボードにコピーできます。\n\nこのエラー情報を開発者に送信することを検討してください。\n</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>作成日時</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>最終アクセス日時</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>最終書き込み日時</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>属性</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>読み取り専用</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>フルネーム</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>ファイル名</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>サイズ</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>ディレクトリ</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>ドライブに存在</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>コメント</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>会社名</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>説明</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>ファイルバージョン</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>内部名</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>言語</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>著作権</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>商標</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>元のファイル名</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>製品名</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>製品バージョン</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Vragen</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>Bestandsnaam mag niet leeg zijn.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>De bestandsnaam moet een toevoeging gescheiden door een punt hebben.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabytes</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobytes</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabytes</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabytes</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Nee</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Ja</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} dagen geleden</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Gisteren</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0} uren geleden</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>een uur geleden</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Nu</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0} minuten geleden</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>een minuut geleden</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0} maanden geleden</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>een maand geleden</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0} maanden geleden</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>een jaar geleden</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Binnen:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>In de applicatie is een onverwachte fout opgetreden.</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Onverwachte fout!</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Alle niet opgeslagen gegevens gaan mogelijk verloren. Om gegevensverlies te voorkomen, sluit u de applicaties handmatig.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Weet u het zeker, dat u alle processen wilt beëindigen?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Lopende processen beëindigen</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Het pad verwijst niet naar een geldig .reg bestand</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Het pad mag niet leeg of null zijn</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Het pad mag niet naar een bronsleutel verwijzen</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>De standaard waarde mag niet verwijderd worden</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Fout details:</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Attributen</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Is alleen-lezen</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Volledige naam</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Bestandsnaam</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Grootte</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Map</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Bestaat op schijf</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Commentaar</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Bedrijfsnaam</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Beschrijving</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Bestandsversie</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Interne naam</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Taal</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Copyright</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Handelsmerken</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Originele bestandsnaam</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Productnaam</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Productversie</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Einde aanhalingsteken ontbreekt.</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Omdat deze fout niet vereist om het programma af te sluiten, is het mogelijk dat sommige functionaliteiten niet meer werken. De meeste fouten gerelateerd aan het bestandssysteem kunnen veilig worden genegeerd.\n\nFoutmelding: {0}\n\nU kunt gedetailliëerde informatie over deze fout kopiëren naar het klembord, met een klik op de knop \"Kopiëren\". Overweeg a.u.b. om deze informatie naar de ontwikkelaar te sturen.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Tijd aangemaakt</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Tijd laatst gebruikt</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Tijd laatst geschreven</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Pytaj</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Nie</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Tak</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>Nazwa pliku nie może być pusta.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Brak kończącego cudzysłowu.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>Nazwa pliku musi zawierać rozszerzenie po kropce.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabajtów</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobajtów</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabajtów</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabajtów</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} dni temu</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Dzień temu</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0} godzin temu</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>Godzinę temu</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Przed chwilą</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0} minut temu</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>Minutę temu</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0} miesięcy temu</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>Miesiąc temu</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0} lat temu</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Rok temu</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>Aplikacja napotkała nieoczekiwany błąd</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Wewnętrzny: </value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Nieoczekiwany błąd</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Niezapisane dane mogą zostać stracone. Aby tego uniknąć zamknij aplikacje ręcznie.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Na pewno zamknąć wszystkie procesy?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Zakończ działanie procesów</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Ścieżka nie wskazuje na prawidłowy plik .reg</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Ścieżka nie może być null lub pusta</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Ścieżka nie może wskazywać na klucz główny</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>\nNie można usunąć wartości domyślnej</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>O ile błąd ten nie wymaga zamknięcia aplikacji, niektóre funkcje mogą przestać działać. Większość błędów związanych z systemem plików można bezpiecznie zignorować.\n\nKomunikat o błędzie: {0}\n\nMożesz skopiować szczegółowe informacje na temat tego błędu do schowka klikając przycisk \"Kopiuj\". Proszę rozważyć wysłanie informacji o błędzie do dewelopera.</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Szczegóły błędu:</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Czas utworzenia</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Czas ostatniego dostępu</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Czas ostatniego zapisu</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Atrybuty</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Jest tylko do odczytu</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Pełna nazwa</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Nazwa pliku</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Rozmiar</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Folder</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Istnieje na dysku</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Komentarz</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Nazwa firmy</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Opis</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Wersja pliku</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Wewnętrzna Nazwa</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Język</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Prawo autorskie</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Znaki towarowe</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Oryginalna nazwa pliku</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Nazwa produktu</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Wersja produktu</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Perguntar</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>O nome não pode estar vazio</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Faltam as aspas do final</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>O nome do arquivo deve conter uma extensão separada por um ponto.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabytes</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobytes</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabytes</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabytes</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Não</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Sim</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>Há {0} dias atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Ontem</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>Há {0} horas atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>Há uma hora atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Neste momento</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>Há {0} minutos atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>Há um minuto atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>Há {0} meses</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>Há um mês atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>Há {0} anos atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Há um ano atrás</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Interno:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>O aplicativo encontrou um erro inesperado</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Erro inesperado</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Você pode perder os dados não salvos. Para evitar perda de dados, feche os aplicativos manualmente.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Tem certeza de que deseja encerrar todos os processos?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Encerrar processos em execução</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>O caminho não aponta para um arquivo .reg válido</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>O caminho não pode estar vazio ou nulo</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>O caminho não pode apontar para uma chave de raiz</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Não é possível remover o valor padrão</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Detalhes do erro:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Embora esse erro não exija que o aplicativo seja desligado, algumas funcionalidades podem deixar de funcionar. A maioria dos erros relacionados ao sistema de arquivos pode ser ignorado com segurança.\n\nMensagem de erro: {0}\n\nVocê pode copiar informações detalhadas sobre esse erro para a área de transferência clicando no botão \"Copiar\". Considere enviar estas informações de erro ao desenvolvedor.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Data de criação</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Data do Último Acesso</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Data da Última Gravação</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Atributos</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Apenas leitura</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Nome Completo</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Nome do Arquivo</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Tamanho</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Diretório</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Existe no disco</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Comentário</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Nome da empresa</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Descrição</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Versão do Arquivo</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Nome Interno</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Idioma</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Direitos Autorais</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Marcas Comerciais</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Nome do Arquivo Original</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Nome do Produto</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Versão do Produto</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Perguntar</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>O nome do ficheiro não pode estar vazio</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Faltam as aspas do final</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>O nome do ficheiro deve conter uma extensão separada por um ponto</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabytes</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobytes</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabytes</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabytes</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Não</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Sim</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>Há {0} dias atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Ontem</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>Há {0} horas atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>Há uma hora atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Neste momento</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>Há {0} minutos atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>Há um minuto atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>Há {0} meses</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>Há um mês atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>Há {0} anos atrás</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Há um ano atrás</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Interior: </value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>O aplicativo encontrou um erro inesperado</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Erro inesperado</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Poderá perder os dados que não foram guardados. Para evitar a perda dos dados, feche manualmente as aplicações.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Tem a certeza de que quer terminar todos os processos? </value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Encerrar processos em execução</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>O caminho não aponta para um ficheiro .reg válido</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>O caminho não pode estar vazio ou nulo</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>O caminho não pode apontar para uma chave de raiz</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Não é possível excluir o valor estabelecido por defeito</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Pormenores do erro:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Embora este erro não provoque o corte do pedido, alguns recursos podem deixar de funcionar. A maioria dos erros relacionados com o sistema de arquivos pode ser ignorada com segurança.\n\nMensagens de erro: {0}\n\nPode copiar informações detalhadas sobre este erro na área de transferência clicando no botão \"Copiar\". Por favor, considere a hipótese de envio de informações de erro para o programador.\n</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Tempo de Criação</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Data do Último Acesso</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Data da Última Gravação</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Atributos</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Só para leitura</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Nome Completo</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Nome do Arquivo</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Tamanho</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Directório</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Existe no disco</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Comentário</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Razão Social</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Descrição</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Versão do Arquivo</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Nome Interno</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Idioma</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Direitos de Autor</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Marcas Comerciais</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Nome do Arquivo Original</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Nome do Produto</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Versão do Produto</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Ask</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>File name can't be empty.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Ending quotation mark is missing.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>File name must contain an extension separated by a dot.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabytes</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobytes</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabytes</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabytes</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Yes</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} days ago</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Yesterday</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0} hours ago</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>One hour ago</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Just now</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0} minutes ago</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>One minute ago</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0} months ago</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>One month ago</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0} years ago</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>One year ago</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Inner: </value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>The application has encountered an unexpected error</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Unexpected error</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>You might lose any unsaved data. To prevent data loss close the applications manually.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Are you sure you want to terminate all of the processes? </value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Terminate running processes</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Path does not point to a valid .reg file</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Path cannot be empty or null</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Path cannot point to a root key</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Cannot remove the default value</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Error details:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>While this error does not require the application to shut down, some functionality might stop working. Most errors related to the filesystem can be safely ignored.\n\nError message: {0}\n\nYou can copy detailed information about this error to the clipboard by clicking the \"Copy\" button. Please consider sending this error information to the developer.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Creation Time</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Last Access Time</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Last Write Time</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Attributes</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Is read only</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Full Name</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>File Name</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Size</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Directory</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Exists on drive</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Comment</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Company Name</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Description</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>File Version</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Internal Name</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Language</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Copyright</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Trademarks</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Original Filename</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Product Name</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Product Version</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Спрашивать</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>Имя файла не может быть пустым.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Не хватает кавычки в конце.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>Имя файла должно содержать точку+расширение.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Гигабайт</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>Гб</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Килобайт</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>Кб</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Мегабайт</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>Мб</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Терабайт</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>Тб</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Нет</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Да</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} дней назад</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Вчера</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0} часов назад</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>Один час назад</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Только что</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0} минут назад</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>Одну минуту назад</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0} месяцев назад</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>Один месяц назад</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0} лет назад</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Год назад</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Внутренняя: </value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>Приложение обнаружило непредвиденную ошибку</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Непредвиденная ошибка</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Можно потерять несохранённые данные. Чтобы предотвратить потерю данных, закройте приложения вручную.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Вы уверены, что хотите завершить все процессы?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Завершить запущенные процессы</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Путь не указывает на действительный .REG файл</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Путь не может быть пустым или нулевым</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Путь не может указывать на корневой ключ</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Невозможно удалить значение по умолчанию</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Сведения об ошибке:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Эта ошибка не требует закрытия приложения, но некоторые функции могут перестать работать. Большинство ошибок, связанных с файловой системой, могут быть проигнорированны.\nСообщение об ошибке: {0}\n\nВы можете скопировать подробную информацию об этой ошибке в буфер обмена, нажав \"Копировать\". Пожалуйста, подумайте об отправке информации про эту ошибку разработчику.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Время создания</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Время последнего доступа</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Время последней записи</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Атрибуты</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Только чтение</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Полное имя</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Имя файла</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Размер</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Каталог</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Существует на диске</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Комментарий</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Название фирмы</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Описание</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Версия файла</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Внутреннее имя</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Язык</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Авторские права</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Товарные знаки</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Оригинальное имя файла</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Имя продукта</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Версия продукта</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Vprašaj</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>Ime datoteke ne sme biti prazno</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Manjka zaključni narekovaj.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>Ime datoteke mora imeti končnico, ločeno s piko.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabajtov</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobajtov</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabajtov</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabajtov</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Ne</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Da</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>Pred {0} dnevi</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Včeraj</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>Pred {0} urami</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>Pred eno uro</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Pravkar</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>Pred {0} minutami</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>Pred eno minuto</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>Pred {0} mesecev</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>Pred enim mesecem</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>Pred {0} leti</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Pred enim letom</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Notranja: </value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Nepričakovana napaka</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Morda boste izgubili neshranjene podatke. Da bi preprečili izgubo podatkov,  ročno zaprite aplikacije.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Ali ste prepričani, da želite prekiniti vse te procese </value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Prekini delujoče procese</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Pot ne kaže na veljavno .reg datoteko</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Pot ne sme biti prazna ali 'null'</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Pot ne sme kazati na korenski ključ</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Ne morem odstraniti privzeto vrednost</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>Aplikacija je naletela na nepričakovano napako</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Podrobnosti o napaki:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Med to napako nipotrebno, zapreti aplikacije toda nekatere funkcije morda bodo prenehale delovati. Večino napak, ki se nanašajo na datotečni sistem lahko varno prezrete.\n\nSporočilo o napaki: {0}\n\nPodrobne informacije o tej napaki lahko kopirate v odložišče s klikom na gumb \"Kopiraj\". Prosimo, da razvijalcu programa pošljete podatke o tej napaki.</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Čas zadnjega zapisovanja</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Atributi</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Je samo za branje</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Polno ime</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Ime datoteke</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Velikost</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Imenik</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Obstaja na pogonu</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Komentar</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Ime podjetja</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Opis</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Različica datoteke</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Notranje ime</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Jezik</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Avtorske pravice</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Blagovne znamke</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Izvirno ime datoteke</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Ime izdelka</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Različica izdelka</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Čas ustvarjanja</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Čas zadnjega dostopa</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Fråga</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>Filnamn kan inte vara tomt.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Avslutande citationstecken saknas.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>Filnamnet måste innehålla en filändelse separerad med en punkt.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabytes</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobytes</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabytes</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabytes</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Nej</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Ja</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} dagar sedan</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Igår</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0} timmar sedan</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>En timme sedan</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Nu precis</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0} minuter sedan</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>En minut sedan</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0} månader sedan</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>En månad sedan</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0} år sedan</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Ett år sedan</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Inre:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>Appen har stött på ett oväntat fel</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Oväntat fel</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Du kan förlora eventuella osparade data. För att förhindra förlust av data, stäng apparna manuellt.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill avsluta alla processer?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Avsluta körande processer</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Sökvägen pekar inte på en giltig .reg-fil</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Sökvägen får inte vara tom eller null</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Sökvägen får inte peka på en rot-nyckel</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Det går inte att ta bort standardvärdet</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Feldetaljer:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Medan detta fel inte kräver att programmet stängs av, kan viss funktionalitet sluta fungera. De flesta fel relaterade till filsystemet kan ignoreras utan risk.\n\nFelmeddelande: {0}\n\nDu kan kopiera detaljerad information om detta fel till urklipp genom att klicka på “Kopiera”-knappen. Överväg att skicka denna felinformation till utvecklaren.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Skapelse Tid</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Senaste Åtkomsttid</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Senaste Skrivtid</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Attribut</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Är skrivskyddad</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Fullständigt Namn</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Filnamn</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Storlek</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Katalog</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Finns på enheten</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Kommentar</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Företagsnamn</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Beskrivning</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Filversion</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Internt Namn</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Språk</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Copyright</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Varumärken</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Ursprungligt Filnamn</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Produktnamn</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Produktversion</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Sor</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>Dosya ismi boş olamaz</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Tırnak işaretinin sonu eksik.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>Dosya adı nokta ile ayrılmış bir uzantı içermelidir.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabaytlar</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobytlar</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabytlar</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabytlar</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Hayır</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Evet</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} gün önce</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Dün</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0} saat önce</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>Bir saat önce</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Şimdi</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0} dakika önce</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>Bir dakika önce</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0} ay önce</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>Bir ay önce</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0} yıl önce</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Bir yıl önce</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Çevirisini bilmediğim bir hata sanırım, iyi şanslar &lt;3</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>Uygulama beklenmedik bir hatayla karşılaştı</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Beklenmeyen hata</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Kaydedilmemiş verileri kaybedebilirsiniz. Veri kaybını önlemek için uygulamaları kaydedin.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Tüm süreçleri sonlandırmak istediğinizden emin misiniz?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Çalışan işlemleri sonlandırın</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Yol geçerli bir .reg dosyasını göstermiyor</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Yol boş veya bilinmeyen olamaz</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Yol bir kök anahtarı gösteremez</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Varsayılan değer kaldırılamıyor</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Hata detayları:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Bu hata uygulamanın kapanmasını gerektirmese de, bazı işlevler çalışmayı durdurabilir. Dosya sistemiyle ilgili çoğu hata güvenli bir şekilde göz ardı edilebilir.\n\nHata mesajı: {0}\n\n“Kopyala” düğmesine tıklayarak bu hatayla ilgili ayrıntılı bilgileri panoya kopyalayabilirsiniz. Lütfen bu hata bilgisini geliştiriciye göndermeyi düşünün.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Oluşturma Zamanı</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Son Erişim Zamanı</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Son Yazım Zamanı</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Nitelikler</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Yalnızca okuma</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Tam İsim</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Dosya İsmi</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Boyut</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Dizi</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Sürücüde var</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Yorum</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Şirket İsmi</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Açıklama</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Dosya Versiyonu</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Dahili İsim</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Dil</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Telif Hakkı</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Ticari Markalar</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Orijinal Dosya Adı</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Ürün Adı</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Ürün Versiyonu</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>Yêu cầu</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>Tên tệp không được bỏ trống</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>Dấu ngoặc kép ở cuối bị thiếu.</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>Tên tệp phải có phần mở rộng được phân tách bằng dấu chấm.</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>Gigabytes</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>Kilobytes</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>Megabytes</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>Terabytes</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Không</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Đúng</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} ngày trước</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>Hôm qua</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0} giờ trước</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>Một giờ trước</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>Ngay bây giờ</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0} phút trước</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>Một phút trước</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0} tháng trước</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>Một tháng trước</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0} năm trước</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>Một năm trước</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>Ứng dụng gặp lỗi không mong muốn</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>Lỗi không mong muốn</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>Bạn có thể mất dữ liệu chưa được lưu. Vui lòng đóng ứng dụng theo cách thủ công để tránh mất dữ liệu.</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>Bạn có chắc là muốn chấm dứt tất cả các tiến trình không?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>Chấm dứt tiến trình đang chạy</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>Đường dẫn không trỏ đến tệp .reg hợp lệ.</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>Đường dẫn không được bỏ trống hoặc NULL.</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>Đường dẫn không thể trỏ đến khóa gốc</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>Không thể xóa giá trị mặc định</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>Chi tiết lỗi: </value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>Lỗi này không yêu cầu phải tắt ứng dụng nhưng có thể khiến một số chức năng ngừng hoạt động. Hầu hết các lỗi liên quan đến hệ thống tập tin đều có thể được bỏ qua một cách an toàn.\n\nThông báo lỗi: {0}\n\nBạn có thể sao chép thông tin chi tiết về lỗi này vào bảng nhớ tạm của mình bằng cách nhấp vào nút \"Sao chép\". Vui lòng xem xét gửi thông tin lỗi này cho nhà phát triển.</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>Thời điểm Tạo</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>Lần Truy cập Cuối cùng</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>Lần Thay đổi Cuối cùng</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>Thuộc tính</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>Chỉ đọc</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>Tên đầy đủ</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>Tên Tệp tin</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>Kích thước</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>Thư mục</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>Tồn tại trên ổ đĩa</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>Chú thích</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>Tên Công ty</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>Mô tả</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>Phiên bản Tệp tin</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>Tên Nội địa</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>Ngôn ngữ</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>Bản quyền</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>Thương hiệu</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>Tên Tệp tin Gốc</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>Tên Sản phẩm</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>Phiên bản Sản phẩm</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>Inner:</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>询问</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>文件名不能为空。</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>缺少结束引号。</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>文件名必须包含由点分隔的扩展名。</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>吉字节</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>千字节</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>兆字节</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>太字节</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>否</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>是</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} 天前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>昨天</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0} 小时前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>一小时前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>刚刚</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0} 分钟前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>一分钟前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0} 月前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>一个月前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0} 年前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>一年前</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>内部:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>应用程序遇到意外错误</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>意外错误</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>你可能会丢失任何未保存的数据。为防止数据丢失，请手动关闭应用程序。</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>确定要终止所有进程吗?</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>终止运行中的进程</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>路径未指向有效的.reg文件</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>路径不能为空或null</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>路径不能指向root键</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>无法删除默认值</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>错误详细信息:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>虽然此错误不需要关闭应用程序，但某些功能可能会停止工作。大多数与文件系统相关的错误都可以安全地忽略。\n\n错误消息: {0}\n\n你可以通过单击\"复制\"按钮将有关此错误的详细信息复制到剪贴板。请考虑将此错误信息发送给开发人员。</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>创建时间</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>最近访问时间</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>最近写入时间</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>属性</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>是否只读</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>全名</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>文件名</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>大小</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>目录</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>在驱动器上</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>注释</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>公司名</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>描述</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>文件版本</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>内部名称</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>语言</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>版权</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>商标</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>源文件名</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>产品名称</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>产品版本</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Localisation.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Enums_YesNoAsk_Ask\" xml:space=\"preserve\">\n    <value>詢問</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_Empty\" xml:space=\"preserve\">\n    <value>檔案名稱不能為空。</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_MissingQuotationMark\" xml:space=\"preserve\">\n    <value>缺少結束引號。</value>\n  </data>\n  <data name=\"Error_SeparateArgsFromCommand_NoDot\" xml:space=\"preserve\">\n    <value>檔案名必須包含由點分隔的副檔名</value>\n  </data>\n  <data name=\"FileSize_GB_Long\" xml:space=\"preserve\">\n    <value>十億位元組</value>\n  </data>\n  <data name=\"FileSize_GB_Short\" xml:space=\"preserve\">\n    <value>GB</value>\n  </data>\n  <data name=\"FileSize_KB_Long\" xml:space=\"preserve\">\n    <value>千位元組</value>\n  </data>\n  <data name=\"FileSize_KB_Short\" xml:space=\"preserve\">\n    <value>KB</value>\n  </data>\n  <data name=\"FileSize_MB_Long\" xml:space=\"preserve\">\n    <value>百萬位元組</value>\n  </data>\n  <data name=\"FileSize_MB_Short\" xml:space=\"preserve\">\n    <value>MB</value>\n  </data>\n  <data name=\"FileSize_TB_Long\" xml:space=\"preserve\">\n    <value>萬億位元組</value>\n  </data>\n  <data name=\"FileSize_TB_Short\" xml:space=\"preserve\">\n    <value>TB</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>否</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>是</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Since\" xml:space=\"preserve\">\n    <value>{0} 天前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Days_Single\" xml:space=\"preserve\">\n    <value>昨天</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Since\" xml:space=\"preserve\">\n    <value>{0}小時前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Hours_Single\" xml:space=\"preserve\">\n    <value>一小時前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_JustNow\" xml:space=\"preserve\">\n    <value>剛剛</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Since\" xml:space=\"preserve\">\n    <value>{0}分鐘前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Minutes_Single\" xml:space=\"preserve\">\n    <value>一分鐘前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Since\" xml:space=\"preserve\">\n    <value>{0}個月前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Months_Single\" xml:space=\"preserve\">\n    <value>一個月前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Since\" xml:space=\"preserve\">\n    <value>{0}年前</value>\n  </data>\n  <data name=\"ToFuzzyTimeSinceString_Years_Single\" xml:space=\"preserve\">\n    <value>一年前</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_InnerExceptionTitle\" xml:space=\"preserve\">\n    <value>內部:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Heading\" xml:space=\"preserve\">\n    <value>應用程式遇到意外錯誤</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Title\" xml:space=\"preserve\">\n    <value>意外錯誤</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Details\" xml:space=\"preserve\">\n    <value>你可能會遺失任何未儲存的資料。為防止資料遺失，請手動關閉應用程式。</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Message\" xml:space=\"preserve\">\n    <value>確定要中止所有程序嗎？</value>\n  </data>\n  <data name=\"PremadeDialogs_KillRunningProcessesQuestion_Title\" xml:space=\"preserve\">\n    <value>中止執行中的程序</value>\n  </data>\n  <data name=\"RegistryTools_AddRegToRegistry_FileNotExist\" xml:space=\"preserve\">\n    <value>路徑未指向有效的.reg檔案</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PathEmptyNull\" xml:space=\"preserve\">\n    <value>路徑不能為空或Null</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_PointsAtRoot\" xml:space=\"preserve\">\n    <value>路徑不能指向root鍵</value>\n  </data>\n  <data name=\"RegistryTools_RemoveRegistryKey_RemoveDefault\" xml:space=\"preserve\">\n    <value>無法刪除預設值</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericErrorExtendedSafe_Heading\" xml:space=\"preserve\">\n    <value>錯誤詳細訊息:</value>\n  </data>\n  <data name=\"PremadeDialogs_GenericError_Details\" xml:space=\"preserve\">\n    <value>雖然此錯誤不需要關閉應用程式，但某些功能可能會停止工作。大多數與系統文件相關的錯誤都可以安全的忽略。\n\n錯誤訊息:{0}\n\n你可以透過點擊\"複製\"按鈕將有關此錯誤的詳細訊息複製到剪貼簿。請考慮將此錯誤發送給開發人員。</value>\n  </data>\n  <data name=\"FileInfo_CreationTime\" xml:space=\"preserve\">\n    <value>建立時間</value>\n  </data>\n  <data name=\"FileInfo_LastAccessTime\" xml:space=\"preserve\">\n    <value>最近修改時間</value>\n  </data>\n  <data name=\"FileInfo_LastWriteTime\" xml:space=\"preserve\">\n    <value>最近寫入時間</value>\n  </data>\n  <data name=\"FileInfo_Attributes\" xml:space=\"preserve\">\n    <value>屬性</value>\n  </data>\n  <data name=\"FileInfo_IsReadOnly\" xml:space=\"preserve\">\n    <value>唯讀</value>\n  </data>\n  <data name=\"FileInfo_FullName\" xml:space=\"preserve\">\n    <value>全名</value>\n  </data>\n  <data name=\"FileInfo_FileName\" xml:space=\"preserve\">\n    <value>檔案名</value>\n  </data>\n  <data name=\"FileInfo_Size\" xml:space=\"preserve\">\n    <value>大小</value>\n  </data>\n  <data name=\"FileInfo_Directory\" xml:space=\"preserve\">\n    <value>目錄</value>\n  </data>\n  <data name=\"FileInfo_Exists\" xml:space=\"preserve\">\n    <value>在硬碟上</value>\n  </data>\n  <data name=\"FileInfo_Comments\" xml:space=\"preserve\">\n    <value>註釋</value>\n  </data>\n  <data name=\"FileInfo_CompanyName\" xml:space=\"preserve\">\n    <value>公司名</value>\n  </data>\n  <data name=\"FileInfo_FileDescription\" xml:space=\"preserve\">\n    <value>描述</value>\n  </data>\n  <data name=\"FileInfo_FileVersion\" xml:space=\"preserve\">\n    <value>檔案版本</value>\n  </data>\n  <data name=\"FileInfo_InternalName\" xml:space=\"preserve\">\n    <value>內部名稱</value>\n  </data>\n  <data name=\"FileInfo_Language\" xml:space=\"preserve\">\n    <value>語言</value>\n  </data>\n  <data name=\"FileInfo_LegalCopyright\" xml:space=\"preserve\">\n    <value>版權</value>\n  </data>\n  <data name=\"FileInfo_LegalTrademarks\" xml:space=\"preserve\">\n    <value>商標</value>\n  </data>\n  <data name=\"FileInfo_OriginalFilename\" xml:space=\"preserve\">\n    <value>原始檔案名</value>\n  </data>\n  <data name=\"FileInfo_ProductName\" xml:space=\"preserve\">\n    <value>產品名稱</value>\n  </data>\n  <data name=\"FileInfo_ProductVersion\" xml:space=\"preserve\">\n    <value>產品版本</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace Klocman.Properties {\n    using System;\n    \n    \n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    public class Resources {\n        \n        private static global::System.Resources.ResourceManager resourceMan;\n        \n        private static global::System.Globalization.CultureInfo resourceCulture;\n        \n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal Resources() {\n        }\n        \n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        public static global::System.Resources.ResourceManager ResourceManager {\n            get {\n                if (object.ReferenceEquals(resourceMan, null)) {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"Klocman.Properties.Resources\", typeof(Resources).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n        \n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        public static global::System.Globalization.CultureInfo Culture {\n            get {\n                return resourceCulture;\n            }\n            set {\n                resourceCulture = value;\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\n        /// </summary>\n        public static System.Drawing.Bitmap centerline {\n            get {\n                object obj = ResourceManager.GetObject(\"centerline\", resourceCulture);\n                return ((System.Drawing.Bitmap)(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\n        /// </summary>\n        public static System.Drawing.Bitmap facebookButton {\n            get {\n                object obj = ResourceManager.GetObject(\"facebookButton\", resourceCulture);\n                return ((System.Drawing.Bitmap)(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\n        /// </summary>\n        public static System.Drawing.Bitmap twitterButton {\n            get {\n                object obj = ResourceManager.GetObject(\"twitterButton\", resourceCulture);\n                return ((System.Drawing.Bitmap)(obj));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Properties/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"twitterButton\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>..\\Resources\\twitterButton.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\n  </data>\n  <data name=\"facebookButton\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>..\\Resources\\facebookButton.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"centerline\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>..\\Resources\\centerline.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace Klocman.Resources {\n    using System;\n    \n    \n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"4.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    public class CommonStrings {\n        \n        private static global::System.Resources.ResourceManager resourceMan;\n        \n        private static global::System.Globalization.CultureInfo resourceCulture;\n        \n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal CommonStrings() {\n        }\n        \n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        public static global::System.Resources.ResourceManager ResourceManager {\n            get {\n                if (object.ReferenceEquals(resourceMan, null)) {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"Klocman.Resources.CommonStrings\", typeof(CommonStrings).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n        \n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        public static global::System.Globalization.CultureInfo Culture {\n            get {\n                return resourceCulture;\n            }\n            set {\n                resourceCulture = value;\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unknown.\n        /// </summary>\n        public static string Unknown {\n            get {\n                return ResourceManager.GetString(\"Unknown\", resourceCulture);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>مجهول</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Neznámý</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Unbekannt</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Desconocido</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Inconnu</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Ismeretlen</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Sconosciuto</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>不明</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Onbekend</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Nieznany</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Desconhecido</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Desconhecido</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Unknown</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Неизвестно</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Neznano</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Okänd</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Bilinmiyor</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>Không xác định</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>未知</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Resources/CommonStrings.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Unknown\" xml:space=\"preserve\">\n    <value>未知</value>\n    <comment>Used when a value is not known or supported, for example unknown size</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/KlocTools/Sorters/ColumnSorter.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections;\nusing System.Windows.Forms;\nusing System.Text.RegularExpressions;\n\nnamespace Klocman\n{\n    public enum SortModifiers\n    {\n        SortByImage,\n        SortByCheckbox,\n        SortByText\n    }\n\n    /// <summary>\n    /// This class is an implementation of the 'IComparer' interface.\n    /// </summary>\n    public sealed class ListViewColumnSorter : IComparer\n    {\n        /// <summary>\n        /// Specifies the column to be sorted\n        /// </summary>\n        public int ColumnToSort { get; set; }\n        /// <summary>\n        /// Specifies the order in which to sort (i.e. 'Ascending').\n        /// </summary>\n        public SortOrder OrderOfSort { get; set; }\n        /// <summary>\n        /// Case insensitive comparer object\n        /// </summary>\n\n        private NumberCaseInsensitiveComparer ObjectCompare;\n        private ImageTextComparer FirstObjectCompare;\n        private CheckboxTextComparer FirstObjectCompare2;\n\n        private SortModifiers mySortModifier = SortModifiers.SortByText;\n        public SortModifiers _SortModifier\n        {\n            set\n            {\n                mySortModifier = value;\n            }\n            get\n            {\n                return mySortModifier;\n            }\n        }\n\n        /// <summary>\n        /// Class constructor.  Initializes various elements\n        /// </summary>\n        public ListViewColumnSorter()\n        {\n            // Initialize the column to '0'\n            //ColumnToSort = 0;\n\n            // Initialize the CaseInsensitiveComparer object\n            ObjectCompare = new NumberCaseInsensitiveComparer();\n            FirstObjectCompare = new ImageTextComparer();\n            FirstObjectCompare2 = new CheckboxTextComparer();\n        }\n\n        /// <summary>\n        /// This method is inherited from the IComparer interface.  It compares the two objects passed using a case insensitive comparison.\n        /// </summary>\n        /// <param name=\"x\">First object to be compared</param>\n        /// <param name=\"y\">Second object to be compared</param>\n        /// <returns>The result of the comparison. \"0\" if equal, negative if 'x' is less than 'y' and positive if 'x' is greater than 'y'</returns>\n        public int Compare(object x, object y)\n        {\n            int compareResult = 0;\n            ListViewItem listviewX, listviewY;\n\n            // Cast the objects to be compared to ListViewItem objects\n            listviewX = (ListViewItem)x;\n            listviewY = (ListViewItem)y;\n\n            ListView listViewMain = listviewX.ListView;\n\n            // Calculate correct return value based on object comparison\n            if (listViewMain.Sorting != SortOrder.Ascending &&\n                listViewMain.Sorting != SortOrder.Descending)\n            {\n                // Return '0' to indicate they are equal\n                return compareResult;\n            }\n\n            if (mySortModifier.Equals(SortModifiers.SortByText) || ColumnToSort > 0)\n            {\n                // Compare the two items\n\n                if (listviewX.SubItems.Count <= ColumnToSort &&\n                    listviewY.SubItems.Count <= ColumnToSort)\n                {\n                    compareResult = ObjectCompare.Compare(null, null);\n                }\n                else if (listviewX.SubItems.Count <= ColumnToSort &&\n                         listviewY.SubItems.Count > ColumnToSort)\n                {\n                    compareResult = ObjectCompare.Compare(null, listviewY.SubItems[ColumnToSort].Text.Trim());\n                }\n                else if (listviewX.SubItems.Count > ColumnToSort && listviewY.SubItems.Count <= ColumnToSort)\n                {\n                    compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text.Trim(), null);\n                }\n                else\n                {\n                    compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text.Trim(), listviewY.SubItems[ColumnToSort].Text.Trim());\n                }\n            }\n            else\n            {\n                switch (mySortModifier)\n                {\n                    case SortModifiers.SortByCheckbox:\n                        compareResult = FirstObjectCompare2.Compare(x, y);\n                        break;\n                    case SortModifiers.SortByImage:\n                        compareResult = FirstObjectCompare.Compare(x, y);\n                        break;\n                    default:\n                        compareResult = FirstObjectCompare.Compare(x, y);\n                        break;\n                }\n            }\n\n            // Calculate correct return value based on object comparison\n            if (OrderOfSort == SortOrder.Ascending)\n            {\n                // Ascending sort is selected, return normal result of compare operation\n                return compareResult;\n            }\n            else if (OrderOfSort == SortOrder.Descending)\n            {\n                // Descending sort is selected, return negative result of compare operation\n                return (-compareResult);\n            }\n            else\n            {\n                // Return '0' to indicate they are equal\n                return 0;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the number of the column to which to apply the sorting operation (Defaults to '0').\n        /// </summary>\n        public int SortColumn\n        {\n            set\n            {\n                ColumnToSort = value;\n            }\n            get\n            {\n                return ColumnToSort;\n            }\n        }\n\n        /// <summary>\n        /// Gets or sets the order of sorting to apply (for example, 'Ascending' or 'Descending').\n        /// </summary>\n        public SortOrder Order\n        {\n            set\n            {\n                OrderOfSort = value;\n            }\n            get\n            {\n                return OrderOfSort;\n            }\n        }\n\n    }\n\n    public sealed class ImageTextComparer : IComparer\n    {\n        //private CaseInsensitiveComparer ObjectCompare;\n        private NumberCaseInsensitiveComparer ObjectCompare;\n\n        public ImageTextComparer()\n        {\n            // Initialize the CaseInsensitiveComparer object\n            ObjectCompare = new NumberCaseInsensitiveComparer();\n        }\n\n        public int Compare(object x, object y)\n        {\n            //int compareResult;\n            int image1, image2;\n            ListViewItem listviewX, listviewY;\n\n            // Cast the objects to be compared to ListViewItem objects\n            listviewX = (ListViewItem)x;\n            image1 = listviewX.ImageIndex;\n            listviewY = (ListViewItem)y;\n            image2 = listviewY.ImageIndex;\n\n            if (image1 < image2)\n            {\n                return -1;\n            }\n            else if (image1 == image2)\n            {\n                return ObjectCompare.Compare(listviewX.Text.Trim(), listviewY.Text.Trim());\n            }\n            else\n            {\n                return 1;\n            }\n        }\n    }\n\n    public sealed class CheckboxTextComparer : IComparer\n    {\n        private NumberCaseInsensitiveComparer ObjectCompare;\n\n        public CheckboxTextComparer()\n        {\n            // Initialize the CaseInsensitiveComparer object\n            ObjectCompare = new NumberCaseInsensitiveComparer();\n        }\n\n        public int Compare(object x, object y)\n        {\n            // Cast the objects to be compared to ListViewItem objects\n            ListViewItem listviewX = (ListViewItem)x;\n            ListViewItem listviewY = (ListViewItem)y;\n\n            if (listviewX.Checked && !listviewY.Checked)\n            {\n                return -1;\n            }\n            else if (listviewX.Checked.Equals(listviewY.Checked))\n            {\n                if (listviewX.ImageIndex < listviewY.ImageIndex)\n                {\n                    return -1;\n                }\n                else if (listviewX.ImageIndex == listviewY.ImageIndex)\n                {\n                    return ObjectCompare.Compare(listviewX.Text.Trim(), listviewY.Text.Trim());\n                }\n                else\n                {\n                    return 1;\n                }\n            }\n            else\n            {\n                return 1;\n            }\n        }\n    }\n\n\n    public sealed class NumberCaseInsensitiveComparer : CaseInsensitiveComparer\n    {\n        public NumberCaseInsensitiveComparer()\n        {\n\n        }\n\n        public new int Compare(object x, object y)\n        {\n            if (x == null && y == null)\n            {\n                return 0;\n            }\n            else if (x == null && y != null)\n            {\n                return -1;\n            }\n            else if (x != null && y == null)\n            {\n                return 1;\n            }\n\n            var xs = x as string;\n            var ys = y as string;\n            if (xs != null && IsWholeNumber(xs) && ys != null && IsWholeNumber(ys))\n            {\n                try\n                {\n                    return base.Compare(Convert.ToUInt64(xs.Trim()), Convert.ToUInt64(ys.Trim()));\n                }\n                catch\n                {\n                    return -1;\n                }\n            }\n            else\n            {\n                return base.Compare(x, y);\n            }\n        }\n\n        private bool IsWholeNumber(string strNumber)\n        {\n            Regex wholePattern = new Regex(@\"^\\d+$\");\n            return wholePattern.IsMatch(strNumber);\n        }\n    }\n\n}\n"
  },
  {
    "path": "source/KlocTools/Subsystems/FontGrabber.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Drawing;\nusing System.Drawing.Text;\nusing System.Linq;\n\nnamespace Klocman.Subsystems\n{\n    public sealed class FontGrabber\n    {\n        private readonly Dictionary<string, FontFamily> _validFontFamilies = new();\n\n        public FontGrabber()\n        {\n            UpdateFontFamilies();\n        }\n\n        public IEnumerable<FontFamily> ValidFontFamilies => _validFontFamilies.Values;\n        public IEnumerable<string> ValidFontFamilyNames => _validFontFamilies.Keys;\n\n        public Font GetFont(string familyName, float size, FontStyle style)\n        {\n            if (size <= 0)\n                throw new ArgumentException(\"Font size must be higher than 0\");\n\n            return _validFontFamilies.ContainsKey(familyName)\n                ? new Font(_validFontFamilies[familyName], size, style)\n                : null;\n        }\n\n        public FontFamily GetFontFamily(string familyName)\n        {\n            return _validFontFamilies.ContainsKey(familyName) ? _validFontFamilies[familyName] : null;\n            //throw new ArgumentException(\"Invalid font family name\");\n        }\n\n        private void UpdateFontFamilies()\n        {\n            using (var installedFonts = new InstalledFontCollection())\n            {\n                foreach (var t in installedFonts.Families.Where(t => t.IsStyleAvailable(FontStyle.Regular)))\n                {\n                    _validFontFamilies.Add(t.Name, t);\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Subsystems/GlobalHotkeys.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Windows.Forms;\nusing Klocman.Forms.Tools;\n\nnamespace Klocman.Subsystems\n{\n    public sealed class GlobalHotkeys : ReferencedComponent, ICollection<HotkeyEntry>\n    {\n        private readonly List<HotkeyEntry> _registeredHotkeys = new();\n        private Form _parentForm;\n\n        [Browsable(false)]\n        [ReadOnly(true)]\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\n        public Form ParentForm\n        {\n            get { return _parentForm; }\n            set\n            {\n                if (_parentForm != null)\n                {\n                    _parentForm.KeyPreview = false;\n                    _parentForm.KeyDown -= KeyDown_Handler;\n                }\n\n                if (value != null)\n                {\n                    value.KeyPreview = true;\n                    value.KeyDown += KeyDown_Handler;\n                }\n\n                _parentForm = value;\n            }\n        }\n\n        /// <summary>\n        ///     Stop responding to keystrokes when the parent form is disabled\n        /// </summary>\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public bool StopWhenFormIsDisabled { get; set; }\n\n        /// <summary>\n        ///     Set SuppressKeyPress to true in the keypress eventargs if a hotkey was pressed.\n        /// </summary>\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public bool SuppressKeyPresses { get; set; } = true;\n\n        [Browsable(false)]\n        public int Count => _registeredHotkeys.Count;\n\n        [Browsable(false)]\n        public bool IsReadOnly => false;\n\n        /// <exception cref=\"ArgumentNullException\">The value of 'item' cannot be null. </exception>\n        public void Add(HotkeyEntry item)\n        {\n            if (item == null)\n                throw new ArgumentNullException(nameof(item));\n\n            if (item.Master != null)\n                item.Master.ShortcutKeyDisplayString = item.ToString();\n\n            _registeredHotkeys.Add(item);\n        }\n\n        public void Clear()\n        {\n            _registeredHotkeys.ForEach(x => x.Dispose());\n            _registeredHotkeys.Clear();\n        }\n\n        public bool Contains(HotkeyEntry item)\n        {\n            return _registeredHotkeys.Contains(item);\n        }\n\n        void ICollection<HotkeyEntry>.CopyTo(HotkeyEntry[] array, int arrayIndex)\n        {\n            throw new InvalidOperationException();\n        }\n\n        public IEnumerator<HotkeyEntry> GetEnumerator()\n        {\n            return _registeredHotkeys.GetEnumerator();\n        }\n\n        IEnumerator IEnumerable.GetEnumerator()\n        {\n            return _registeredHotkeys.GetEnumerator();\n        }\n\n        public bool Remove(HotkeyEntry item)\n        {\n            if (item == null)\n                return false;\n            item.Dispose();\n            return _registeredHotkeys.Remove(item);\n        }\n\n        protected override void OnContainerInitialized(object obj, EventArgs args)\n        {\n            if (ContainerControl is Form form)\n                ParentForm = form;\n            else if (ContainerControl.ParentForm != null)\n                ParentForm = ContainerControl.ParentForm;\n            else\n                throw new InvalidOperationException(\"Could not find the parent form\");\n        }\n\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing)\n            {\n                ParentForm = null;\n                Clear();\n            }\n            base.Dispose(disposing);\n        }\n\n        private void KeyDown_Handler(object sender, KeyEventArgs e)\n        {\n            if (_parentForm == null)\n                throw new InvalidOperationException(\"Hotkey handler called when parent form was null\");\n\n            foreach (var hotkey in _registeredHotkeys)\n            {\n                if (hotkey.Alt == e.Alt && hotkey.Ctrl == e.Control && hotkey.Shift == e.Shift &&\n                    hotkey.KeyCode == e.KeyCode)\n                {\n                    if (hotkey.EventHandler == null || !hotkey.IsEnabled ||\n                        (StopWhenFormIsDisabled && !ParentForm.Enabled))\n                        continue;\n\n                    hotkey.EventHandler(_parentForm, EventArgs.Empty);\n\n                    // Stops default windows \"wtfding\" sound and prevents event bubbling\n                    if (SuppressKeyPresses)\n                        e.SuppressKeyPress = true;\n\n                    // Do not process any more hotkeys\n                    return;\n                }\n            }\n        }\n\n        //TODO does not work very well, need to ask for description at hotkey creation\n        public HotkeyInfo[] GetHotkeyList()\n        {\n            var query = from hotkey in _registeredHotkeys\n                group hotkey by hotkey.EventHandler\n                into groupedHotkeys\n                select new HotkeyInfo\n                {\n                    Master = (groupedHotkeys.FirstOrDefault(x => x.Master != null) ?? groupedHotkeys.First()).Master,\n                    Hotkeys = groupedHotkeys.Select(x => x.ToString()).OrderBy(x => x).ToArray()\n                };\n\n            return query.OrderBy(x => x.Name).ToArray();\n        }\n\n        //TODO does not work very well, need to ask for description at hotkey creation\n        public class HotkeyInfo\n        {\n            public string[] Hotkeys;\n            internal ToolStripMenuItem Master;\n\n            public string Name\n            {\n                get\n                {\n                    return (Master == null) ? string.Empty : new string(Master.Text.Where(x => !x.Equals('&')).ToArray());\n                }\n            }\n\n            public override string ToString()\n            {\n                return $\"Name: {Name}, Hotkeys: {string.Join(\", \", Hotkeys)}\";\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Subsystems/HotkeyEntry.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Windows.Forms;\nusing Klocman.Extensions;\n\nnamespace Klocman.Subsystems\n{\n    /// <summary>\n    ///     Represents a single hotkey. It gets disposed when removed from main hotkey collection, so don't use it outside\n    /// </summary>\n    public sealed class HotkeyEntry : IDisposable\n    {\n        private readonly Func<bool> _isEnabled;\n\n        public HotkeyEntry(Keys key, Action<object, EventArgs> eventHandlerDelegate, ToolStripMenuItem masterControl)\n        {\n            Shift = false;\n            Ctrl = false;\n            Alt = false;\n            KeyCode = key;\n            EventHandler = eventHandlerDelegate;\n            Master = masterControl;\n        }\n\n        public HotkeyEntry(Keys key, ToolStripMenuItem masterControl)\n            : this(key, (x, y) => masterControl.PerformClick(), masterControl)\n        {\n        }\n\n        public HotkeyEntry(Keys key, ToolStripMenuItem masterControl, Func<bool> isEnabledDelegate)\n            : this(key, masterControl)\n        {\n            _isEnabled = isEnabledDelegate;\n        }\n\n        public HotkeyEntry(Keys key, Action<object, EventArgs> eventHandlerDelegate, ToolStripMenuItem masterControl,\n            Func<bool> isEnabledDelegate)\n            : this(key, eventHandlerDelegate, masterControl)\n        {\n            _isEnabled = isEnabledDelegate;\n        }\n\n        public HotkeyEntry(Keys key, bool altPressed, bool ctrlPressed, bool shiftPressed,\n            ToolStripMenuItem masterControl)\n            : this(key, masterControl)\n        {\n            Alt = altPressed;\n            Ctrl = ctrlPressed;\n            Shift = shiftPressed;\n        }\n\n        public HotkeyEntry(Keys key, bool altPressed, bool ctrlPressed, bool shiftPressed,\n            Action<object, EventArgs> eventHandlerDelegate, ToolStripMenuItem masterControl)\n            : this(key, eventHandlerDelegate, masterControl)\n        {\n            Alt = altPressed;\n            Ctrl = ctrlPressed;\n            Shift = shiftPressed;\n        }\n\n        public HotkeyEntry(Keys key, bool altPressed, bool ctrlPressed, bool shiftPressed,\n            ToolStripMenuItem masterControl,\n            Func<bool> isEnabledDelegate)\n            : this(key, altPressed, ctrlPressed, shiftPressed, masterControl)\n        {\n            _isEnabled = isEnabledDelegate;\n        }\n\n        public HotkeyEntry(Keys key, bool altPressed, bool ctrlPressed, bool shiftPressed,\n            Action<object, EventArgs> eventHandlerDelegate, ToolStripMenuItem masterControl,\n            Func<bool> isEnabledDelegate)\n            : this(key, altPressed, ctrlPressed, shiftPressed, eventHandlerDelegate, masterControl)\n        {\n            _isEnabled = isEnabledDelegate;\n        }\n\n        public bool Alt { get; }\n        public bool Ctrl { get; }\n        public string Description { get; set; }\n        //Action<object, EventArgs> _eventHandler;\n        public Action<object, EventArgs> EventHandler { get; set; }\n\n        public bool IsEnabled\n        {\n            get\n            {\n                if (_isEnabled != null)\n                    return _isEnabled();\n                return true;\n            }\n        }\n\n        public Keys KeyCode { get; }\n        public ToolStripMenuItem Master { get; private set; }\n        public bool Shift { get; }\n\n        public void Dispose()\n        {\n            if (Master != null)\n            {\n                Master.ShortcutKeyDisplayString = string.Empty;\n                Master = null;\n            }\n            EventHandler = null;\n        }\n\n        public override string ToString()\n        {\n            return (Ctrl ? \"Ctrl+\" : string.Empty).AppendIf(Shift, \"Shift+\").AppendIf(Alt, \"Alt+\") + KeyCode;\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Subsystems/RandomFilePicker.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Klocman.Collections;\nusing Klocman.Extensions;\n\nnamespace Klocman.Subsystems\n{\n    public class RandomFilePicker\n    {\n        /// <summary>\n        ///     Method to use when selecting another folder/file\n        /// </summary>\n        public enum GotoType\n        {\n            Next,\n            Previous,\n            Random\n        }\n\n        private readonly List<string> _directoryHistory = new();\n        //private readonly List<string> _fileHistory = new List<string>();\n        private readonly ObservedList<string> _matchedDirectories = new();\n        private readonly Random _r = new();\n\n        /// <summary>\n        ///     Currently selected directory\n        /// </summary>\n        public string CurrentDirectory { get; private set; } = string.Empty;\n\n        /// <summary>\n        ///     Currently selected file\n        /// </summary>\n        public string CurrentFile { get; private set; }\n\n        /// <summary>\n        ///     Filters applied to file extensions\n        /// </summary>\n        public string[] ExtensionFilters { get; set; } = {};\n\n        /// <summary>\n        ///     Filters applied to filenames (exclude if hit)\n        /// </summary>\n        public string[] FilenameExcludeFilters { get; set; } = {};\n\n        /// <summary>\n        ///     If false, file extensions will be stripped when filtering by FilenameFilters.\n        /// </summary>\n        public bool FilenameFiltersIncludeExtension { get; set; }\n\n        /// <summary>\n        ///     Filters applied to filenames (include if hit)\n        /// </summary>\n        public string[] FilenameFilters { get; set; } = {};\n\n        /// <summary>\n        ///     Filtered files in current directory\n        /// </summary>\n        public string[] FilesInCurrentDir { get; private set; } = {};\n\n        /// <summary>\n        ///     Directories that contain filtered files\n        /// </summary>\n        public string[] MatchedDirectories => _matchedDirectories.ToArray();\n\n        /// <summary>\n        ///     How deep to search directories for files\n        /// </summary>\n        public int MaximumDirectorySearchDepth { get; set; } = 4;\n\n        /// <summary>\n        ///     Move from random to pseudo-random algorighm to prevent same\n        ///     directory or file being choosen multiple times in a short succession.\n        /// </summary>\n        public bool PreventDuplicates { get; set; } = true;\n\n        /// <summary>\n        ///     Select another file\n        /// </summary>\n        public void GetNextFile(GotoType direction)\n        {\n            if (FilesInCurrentDir.Length == 0)\n            {\n                CurrentFile = string.Empty;\n                return;\n            }\n\n            switch (direction)\n            {\n                case GotoType.Random:\n                    CurrentFile = FilesInCurrentDir[_r.Next(FilesInCurrentDir.Length)];\n                    break;\n\n                case GotoType.Next:\n                    CurrentFile = FilesInCurrentDir[Wrap(FilesInCurrentDir.GetPositionOfElement(CurrentFile) + 1,\n                        0, FilesInCurrentDir.Length - 1)];\n                    break;\n\n                case GotoType.Previous:\n                    CurrentFile = FilesInCurrentDir[Wrap(FilesInCurrentDir.GetPositionOfElement(CurrentFile) - 1,\n                        0, FilesInCurrentDir.Length - 1)];\n                    break;\n            }\n        }\n\n        /// <summary>\n        ///     Select another folder\n        /// </summary>\n        public void GetNextFolder(GotoType direction)\n        {\n            if (_matchedDirectories.Count == 0)\n            {\n                SetCurrentFolder(string.Empty);\n                return;\n            }\n\n            switch (direction)\n            {\n                case GotoType.Random:\n                {\n                    string randomDir;\n\n                    if (PreventDuplicates)\n                    {\n                        while (true)\n                        {\n                            if (_directoryHistory.Count == _matchedDirectories.Count)\n                            {\n                                _directoryHistory.RemoveRange(0, (int) Math.Ceiling(_directoryHistory.Count/2.0));\n                            }\n\n                            randomDir = _matchedDirectories[_r.Next(_matchedDirectories.Count)];\n\n                            if (!_directoryHistory.Contains(randomDir))\n                            {\n                                _directoryHistory.Add(randomDir);\n                                break;\n                            }\n                        }\n                    }\n                    else\n                    {\n                        randomDir = _matchedDirectories[_r.Next(_matchedDirectories.Count)];\n                    }\n\n                    SetCurrentFolder(randomDir);\n                }\n                    break;\n\n                case GotoType.Next:\n                    SetCurrentFolder(\n                        _matchedDirectories[Wrap(_matchedDirectories.IndexOf(CurrentDirectory) + 1,\n                            0, _matchedDirectories.Count - 1)]);\n                    break;\n\n                case GotoType.Previous:\n                    SetCurrentFolder(\n                        _matchedDirectories[Wrap(_matchedDirectories.IndexOf(CurrentDirectory) - 1,\n                            0, _matchedDirectories.Count - 1)]);\n                    break;\n            }\n        }\n\n        public bool SetCurrentFolder(string newPath)\n        {\n            try\n            {\n                FilesInCurrentDir = Directory.Exists(newPath)\n                    ? Directory.GetFiles(newPath).Where(CheckFilenameWithFilters).ToArray()\n                    : new string[] {};\n                CurrentDirectory = newPath;\n                return true;\n            }\n            catch\n            {\n                FilesInCurrentDir = Array.Empty<string>();\n                CurrentDirectory = null;\n                return false;\n            }\n        }\n\n        /// <summary>\n        ///     Scan for directories with matching files inside of supplied root directories\n        /// </summary>\n        public void ScanForDirectories(string[] rootDirectories)\n        {\n            ScanForDirectories(rootDirectories, null);\n        }\n\n        /// <summary>\n        ///     Scan for directories with matching files inside of supplied root directories and report directory hits using the\n        ///     delegate.\n        /// </summary>\n        public void ScanForDirectories(string[] rootDirectories, Action onDirectoryFound)\n        {\n            _matchedDirectories.Clear();\n            _directoryHistory.Clear();\n\n            if (onDirectoryFound != null)\n                _matchedDirectories.ListChanged += onDirectoryFound;\n\n            foreach (var directory in rootDirectories)\n            {\n                if (Directory.Exists(directory))\n                {\n                    _matchedDirectories.Add(directory);\n                    _matchedDirectories.AddRange(GetSubFolders(directory));\n                }\n            }\n\n            if (onDirectoryFound != null)\n                _matchedDirectories.ListChanged -= onDirectoryFound;\n\n            if (_matchedDirectories.Count == 0)\n            {\n                return;\n            }\n\n            _matchedDirectories.RemoveAll(obj =>\n            {\n                var tempList = new List<string>(Directory.GetFiles(obj));\n                if (tempList.Count == 0)\n                {\n                    return true;\n                }\n                return !tempList.Any(CheckFilenameWithFilters);\n            });\n        }\n\n        private static int Wrap(int kX, int kLowerBound, int kUpperBound)\n        {\n            var rangeSize = kUpperBound - kLowerBound + 1;\n\n            if (kX < kLowerBound)\n                kX += rangeSize*((kLowerBound - kX)/rangeSize + 1);\n\n            return kLowerBound + (kX - kLowerBound)%rangeSize;\n        }\n\n        private bool CheckFilenameWithFilters(string filePath)\n        {\n            //filePath = filePath.ToLower();\n            var fileName = FilenameFiltersIncludeExtension ? filePath :\n                Path.GetDirectoryName(filePath) + '\\\\' + Path.GetFileNameWithoutExtension(filePath);\n\n            var fileNameMatch = false;\n            var fileExtMatch = false;\n\n            if (FilenameFilters.Length == 0 ||\n                FilenameFilters.Any(filter => fileName.Contains(filter, StringComparison.CurrentCultureIgnoreCase)))\n                fileNameMatch = true;\n\n            if (FilenameExcludeFilters.Length > 0 &&\n                FilenameExcludeFilters.Any(x => fileName.Contains(x, StringComparison.CurrentCultureIgnoreCase)))\n                fileNameMatch = false;\n\n            if (!fileNameMatch)\n                return false;\n\n            var extension = Path.GetExtension(filePath);\n            if (extension != null)\n            {\n                var fileExt = extension.ToLower();\n\n                if (ExtensionFilters.Length == 0)\n                {\n                    fileExtMatch = true;\n                }\n                else\n                {\n                    if (ExtensionFilters.Any(filter => fileExt.Contains(filter)))\n                    {\n                        fileExtMatch = true;\n                    }\n                }\n            }\n            return fileExtMatch;\n        }\n\n        private IEnumerable<string> GetSubFolders(string rootFolder, int depth = 0)\n        {\n            var subFolders = new List<string>(Directory.GetDirectories(rootFolder));\n\n            if (subFolders.Count != 0 && depth < MaximumDirectorySearchDepth)\n            {\n                var subFoldersCopy = subFolders.ToArray();\n                foreach (var folder in subFoldersCopy)\n                {\n                    subFolders.AddRange(GetSubFolders(folder, depth + 1));\n                }\n            }\n\n            return subFolders;\n        }\n\n        /// <summary>\n        ///     Recheck that specified directories still exist and contain files that conform to the filters.\n        ///     If any directory fails those checks it is removed from the list.\n        /// </summary>\n        /// <param name=\"directoriesToRefresh\">Directories to check. If none are passed all directories are checked.</param>\n        public void RefreshDirectories(params string[] directoriesToRefresh)\n        {\n            var checkAll = directoriesToRefresh == null || directoriesToRefresh.Length > 0;\n            _matchedDirectories.RemoveAll(obj =>\n            {\n                if (checkAll || directoriesToRefresh!.Any(x => x.Equals(obj)))\n                {\n                    if (!Directory.Exists(obj))\n                        return true;\n\n                    var tempList = new List<string>(Directory.GetFiles(obj));\n                    if (tempList.Count == 0)\n                    {\n                        return true;\n                    }\n                    return !tempList.Any(CheckFilenameWithFilters);\n                }\n                return false;\n            });\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Subsystems/WindowHoverEventArgs.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\n\nnamespace Klocman.Subsystems\n{\n    public sealed class WindowHoverEventArgs : EventArgs\n    {\n        public WindowHoverEventArgs(WindowHoverSearcher.WindowInfo targetWindow)\n        {\n            TargetWindow = targetWindow;\n        }\n\n        public WindowHoverSearcher.WindowInfo TargetWindow { get; }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Subsystems/WindowHoverSearcher.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Diagnostics;\nusing System.Drawing;\nusing System.Runtime.InteropServices;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamespace Klocman.Subsystems\n{\n    /// <summary>\n    /// Used to detect what window is under the cursor and return information about it. \n    /// Can detect any window of any application and return the owning process.\n    /// </summary>\n    public class WindowHoverSearcher\n    {\n        private const int WmGettext = 0xD;\n        private const int WmGettextlength = 0x000E;\n        private readonly Control _mouseTarget;\n        private WindowInfo _curWindow;\n        private WindowInfo _lastWindow;\n\n        public WindowHoverSearcher(Control mouseTarget)\n        {\n            _mouseTarget = mouseTarget;\n            _mouseTarget.MouseDown += OnMouseDown;\n            _mouseTarget.MouseMove += OnMouseMove;\n            _mouseTarget.MouseUp += OnMouseUp;\n        }\n\n        [DllImport(\"user32.dll\")]\n        private static extern IntPtr WindowFromPoint(Point point);\n\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto)]\n        private static extern int GetClassName(IntPtr handle, StringBuilder className, int maxCount);\n\n        [DllImport(\"user32.dll\")]\n        private static extern int SendMessage(IntPtr handle, int msg, int param1, int param2);\n\n        [DllImport(\"user32.dll\")]\n        private static extern int SendMessage(IntPtr handle, int msg, int param, StringBuilder text);\n\n        [DllImport(\"user32.dll\")]\n        [return: MarshalAs(UnmanagedType.Bool)]\n        private static extern bool GetWindowRect(IntPtr handle, out Rect rect);\n\n        [DllImport(\"user32.dll\", SetLastError = true)]\n        private static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);\n\n        public event EventHandler PickingStarted;\n        public event EventHandler<WindowHoverEventArgs> HoveredWindowChanged;\n        public event EventHandler<WindowHoverEventArgs> WindowSelected;\n\n        private void OnMouseDown(object sender, MouseEventArgs e)\n        {\n            if (e.Button != MouseButtons.Left) return;\n            \n            _mouseTarget.Cursor = Cursors.Cross;\n\n            PickingStarted?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void OnMouseMove(object sender, MouseEventArgs e)\n        {\n            if (e.Button != MouseButtons.Left) return;\n\n            var pt = Cursor.Position;\n            _curWindow = new WindowInfo(WindowFromPoint(pt));\n\n            if (_lastWindow == null)\n            {\n                ControlPaint.DrawReversibleFrame(_curWindow.WindowRect, Color.Black, FrameStyle.Thick);\n                HoveredWindowChanged?.Invoke(this, new WindowHoverEventArgs(_curWindow));\n            }\n            else if (!_curWindow.Handle.Equals(_lastWindow.Handle))\n            {\n                ControlPaint.DrawReversibleFrame(_lastWindow.WindowRect, Color.Black, FrameStyle.Thick);\n                ControlPaint.DrawReversibleFrame(_curWindow.WindowRect, Color.Black, FrameStyle.Thick);\n                HoveredWindowChanged?.Invoke(this, new WindowHoverEventArgs(_curWindow));\n            }\n\n            _lastWindow = _curWindow;\n        }\n\n        private void OnMouseUp(object sender, MouseEventArgs e)\n        {\n            if (e.Button != MouseButtons.Left) return;\n\n            _mouseTarget.Cursor = Cursors.Default;\n\n            if (_lastWindow == null) return;\n\n            ControlPaint.DrawReversibleFrame(_lastWindow.WindowRect, Color.Black, FrameStyle.Thick);\n\n            WindowSelected?.Invoke(this, new WindowHoverEventArgs(_lastWindow));\n        }\n\n        private static string GetWindowClassName(IntPtr handle)\n        {\n            var buffer = new StringBuilder(128);\n            GetClassName(handle, buffer, buffer.Capacity);\n            return buffer.ToString();\n        }\n\n        private static string GetWindowText(IntPtr handle)\n        {\n            var buffer = new StringBuilder(SendMessage(handle, WmGettextlength, 0, 0) + 1);\n            SendMessage(handle, WmGettext, buffer.Capacity, buffer);\n            return buffer.ToString();\n        }\n\n        private static Rectangle GetWindowRectangle(IntPtr handle)\n        {\n            Rect rect;\n            GetWindowRect(handle, out rect);\n            return new Rectangle(rect.Left, rect.Top, (rect.Right - rect.Left) + 1, (rect.Bottom - rect.Top) + 1);\n        }\n\n        [StructLayout(LayoutKind.Sequential)]\n        private struct Rect\n        {\n            public readonly int Left;\n            public readonly int Top;\n            public readonly int Right;\n            public readonly int Bottom;\n        }\n\n        public class WindowInfo\n        {\n            private string _className;\n            private int _processId;\n            private Rectangle _windowRect;\n            private string _windowText;\n\n            public WindowInfo(IntPtr handle)\n            {\n                Handle = handle;\n            }\n\n            public IntPtr Handle { get; }\n            public string ClassName => _className ?? (_className = GetWindowClassName(Handle));\n            public string WindowText => _windowText ?? (_windowText = GetWindowText(Handle));\n            public Rectangle WindowRect\n                => !_windowRect.IsEmpty ? _windowRect : (_windowRect = GetWindowRectangle(Handle));\n\n            public int ProcessId\n            {\n                get\n                {\n                    if (_processId == 0)\n                    {\n                        uint processId;\n                        GetWindowThreadProcessId(Handle, out processId);\n                        _processId = (int) processId;\n                    }\n                    return _processId;\n                }\n            }\n\n            public Process GetRunningProcess() => ProcessId == 0 ? null : Process.GetProcessById(ProcessId);\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/CompiledPropertyInfo.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Linq.Expressions;\nusing System.Reflection;\n\nnamespace Klocman.Tools\n{\n    /// <summary>\n    /// Compiled get and set methods with drastically improved performance.\n    /// </summary>\n    public class CompiledPropertyInfo<TInstance>\n    {\n        public CompiledPropertyInfo(PropertyInfo propertyInfo) : this(propertyInfo, null)\n        {\n        }\n\n        public CompiledPropertyInfo(PropertyInfo propertyInfo, object tag)\n        {\n            if (propertyInfo == null) throw new ArgumentNullException(nameof(propertyInfo));\n\n            PropertyInfo = propertyInfo;\n            Tag = tag;\n\n            CompileProperty(propertyInfo);\n        }\n\n        private void CompileProperty(PropertyInfo propertyInfo)\n        {\n            var instanceParam = Expression.Parameter(typeof(TInstance), \"instance\");\n\n            if (propertyInfo.CanRead)\n            {\n                var getCall = Expression.Call(instanceParam, propertyInfo.GetGetMethod(true)!);\n                var convertedGet = Expression.Convert(getCall, typeof(object));\n                var getLambda = Expression.Lambda<Func<TInstance, object>>(convertedGet, instanceParam);\n                CompiledGet = getLambda.Compile();\n            }\n\n            if (propertyInfo.CanWrite)\n            {\n                var valueParam = Expression.Parameter(typeof(object), \"value\");\n                var convertedValue = Expression.Convert(valueParam, propertyInfo.PropertyType);\n                var setCall = Expression.Call(instanceParam, propertyInfo.GetSetMethod(true)!, convertedValue);\n                var setLambda = Expression.Lambda<Action<TInstance, object>>(setCall, instanceParam, valueParam);\n                CompiledSet = setLambda.Compile();\n            }\n        }\n\n        /// <summary>\n        /// Takes instance containing this property, and returns a boxed property's value.\n        /// Null if property doesn't have a getter.\n        /// </summary>\n        public Func<TInstance, object> CompiledGet { get; private set; }\n\n        /// <summary>\n        /// Takes instance containing this property and a boxed new value to set.\n        /// Null if property doesn't have a setter.\n        /// </summary>\n        public Action<TInstance, object> CompiledSet { get; private set; }\n\n        public PropertyInfo PropertyInfo { get; }\n        public object Tag { get; set; }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/CompressionTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.IO;\nusing System.IO.Compression;\nusing System.Text;\n\nnamespace Klocman.Tools\n{\n    public static class CompressionTools\n    {\n        public static byte[] ZipString(string str)\n        {\n            var bytes = Encoding.UTF8.GetBytes(str);\n\n            using (var msi = new MemoryStream(bytes))\n            using (var mso = new MemoryStream())\n            {\n                using (var gs = new GZipStream(mso, CompressionMode.Compress))\n                {\n                    //msi.CopyTo(gs);\n                    msi.CopyTo(gs);\n                }\n\n                return mso.ToArray();\n            }\n        }\n\n        public static string UnzipString(byte[] bytes)\n        {\n            using (var msi = new MemoryStream(bytes))\n            using (var mso = new MemoryStream())\n            {\n                using (var gs = new GZipStream(msi, CompressionMode.Decompress))\n                {\n                    //gs.CopyTo(mso);\n                    gs.CopyTo(mso);\n                }\n\n                return Encoding.UTF8.GetString(mso.ToArray());\n            }\n        }\n\n        public static byte[] BrotliDecompress(byte[] compressedData)\n        {\n            using (var msInput = new MemoryStream(compressedData))\n            using (var bs = new BrotliStream(msInput, CompressionMode.Decompress))\n            using (var msOutput = new MemoryStream())\n            {\n                bs.CopyTo(msOutput);\n                msOutput.Seek(0, SeekOrigin.Begin);\n                return msOutput.ToArray();\n            }\n        }\n\n        public static byte[] BrotliCompress(string inputstr)\n        {\n            var bytes = Encoding.UTF8.GetBytes(inputstr);\n            return BrotliCompress(bytes);\n        }\n        public static byte[] BrotliCompress(byte[] data)\n        {\n            using (var outputStream = new MemoryStream())\n            {\n                using (var gZipStream = new BrotliStream(outputStream, CompressionLevel.Optimal))\n                    gZipStream.Write(data, 0, data.Length);\n\n                var result = outputStream.ToArray();\n                //Debug.WriteLine($\"Compression result: {bytes.Length} -> {result.Length} ({(result.Length / (double)bytes.Length) * 100:F1}%)\");\n                return result;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/DrawingTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Drawing;\nusing System.Drawing.Drawing2D;\nusing System.Drawing.Imaging;\nusing System.IO;\nusing System.Runtime.InteropServices;\nusing System.Security;\nusing System.Text;\n\nnamespace Klocman.Tools\n{\n    public static class DrawingTools\n    {\n        /// <summary>\n        /// Returns an icon representation of an image contained in the specified file.\n        /// This function is identical to System.Drawing.Icon.ExtractAssociatedIcon, xcept this version works for UNC paths.\n        /// </summary>\n        /// <param name=\"filePath\">The path to the file that contains an image.</param>\n        /// <returns>The System.Drawing.Icon representation of the image contained in the specified file.</returns>\n        /// <exception cref=\"ArgumentException\">filePath does not indicate a valid file.</exception>\n        public static Icon ExtractAssociatedIcon(string filePath)\n        {\n            if (filePath == null)\n                throw new ArgumentNullException(nameof(filePath));\n\n            Uri uri;\n\n            try\n            {\n                uri = new Uri(filePath);\n            }\n            catch (UriFormatException)\n            {\n                filePath = Path.GetFullPath(filePath);\n                uri = new Uri(filePath);\n            }\n\n            if (uri.IsFile)\n            {\n                if (!File.Exists(filePath))\n                    throw new FileNotFoundException(filePath);\n\n                var iconPath = new StringBuilder(260);\n                iconPath.Append(filePath);\n                \n                var index = 0;\n                var handle = SafeNativeMethods.ExtractAssociatedIcon(new HandleRef(null, IntPtr.Zero), iconPath, ref index);\n                if (handle != IntPtr.Zero)\n                    return Icon.FromHandle(handle);\n            }\n            return null;\n        }\n\n\n        /// <summary>\n        /// This class suppresses stack walks for unmanaged code permission. \n        /// (System.Security.SuppressUnmanagedCodeSecurityAttribute is applied to this class.) \n        /// This class is for methods that are safe for anyone to call. \n        /// Callers of these methods are not required to perform a full security review to make sure that the \n        /// usage is secure because the methods are harmless for any caller.\n        /// </summary>\n        [SuppressUnmanagedCodeSecurity]\n        internal static class SafeNativeMethods\n        {\n            [DllImport(\"shell32.dll\", EntryPoint = \"ExtractAssociatedIcon\", CharSet = CharSet.Auto)]\n            internal static extern IntPtr ExtractAssociatedIcon(HandleRef hInst, StringBuilder iconPath, ref int index);\n        }\n\n        public static Color ColorLerp(Color from, Color to, float ratio)\n        {\n            var aDiff = to.A - from.A;\n            var rDiff = to.R - from.R;\n            var gDiff = to.G - from.G;\n            var bDiff = to.B - from.B;\n\n            return Color.FromArgb((byte)(from.A + ratio * aDiff), (byte)(from.R + ratio * rDiff),\n                (byte)(from.G + ratio * gDiff), (byte)(from.B + ratio * bDiff));\n        }\n\n        /// <exception cref=\"Exception\">The operation failed.</exception>\n        public static Bitmap ResizeBitmap(Image sourceBmp, int newWidth, int newHeight)\n        {\n            var result = new Bitmap(newWidth, newHeight);\n            using (var g = Graphics.FromImage(result))\n            {\n                g.SmoothingMode = SmoothingMode.HighSpeed;\n                g.CompositingQuality = CompositingQuality.HighSpeed;\n                g.DrawImage(sourceBmp, 0, 0, newWidth, newHeight);\n            }\n            return result;\n        }\n\n        /// <summary>\n        /// Roughly converts Image to an Icon.\n        /// http://stackoverflow.com/a/21389253/4309247\n        /// Tested on .NET 4.5 and Windows 8.1. Beware of the possibility of \"fringes\" you'll see on PNG images with transparency on the edges.\n        /// </summary>\n        /// <param name=\"img\">Image to convert</param>\n        /// <returns></returns>\n        public static Icon IconFromImage(Image img)\n        {\n            var ms = new MemoryStream();\n            var bw = new BinaryWriter(ms);\n            // Header\n            bw.Write((short)0); // 0 : reserved\n            bw.Write((short)1); // 2 : 1=ico, 2=cur\n            bw.Write((short)1); // 4 : number of images\n            // Image directory\n            var w = img.Width;\n            if (w >= 256) w = 0;\n            bw.Write((byte)w); // 0 : width of image\n            var h = img.Height;\n            if (h >= 256) h = 0;\n            bw.Write((byte)h); // 1 : height of image\n            bw.Write((byte)0); // 2 : number of colors in palette\n            bw.Write((byte)0); // 3 : reserved\n            bw.Write((short)0); // 4 : number of color planes\n            bw.Write((short)0); // 6 : bits per pixel\n            var sizeHere = ms.Position;\n            bw.Write(0); // 8 : image size\n            var start = (int)ms.Position + 4;\n            bw.Write(start); // 12: offset of image data\n            // Image data\n            img.Save(ms, ImageFormat.Png);\n            var imageSize = (int)ms.Position - start;\n            ms.Seek(sizeHere, SeekOrigin.Begin);\n            bw.Write(imageSize);\n            ms.Seek(0, SeekOrigin.Begin);\n\n            // And load it\n            return new Icon(ms);\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/FilesystemTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.IO;\nusing System.Management;\nusing System.Runtime.InteropServices;\nusing Klocman.Extensions;\n\nnamespace Klocman.Tools\n{\n    public static class FilesystemTools\n    {\n        /// <summary>\n        /// Check the architecture of the executable. E.g. 64bit.\n        /// Returns Unknown if the architecture is unsupported or not specified.\n        /// </summary>\n        /// <param name=\"filename\">Full path to the executable file.</param>\n        public static MachineType CheckExecutableMachineType(string filename)\n        {\n            if (!filename.EndsWith(\".exe\", StringComparison.InvariantCultureIgnoreCase))\n            {\n                throw new IOException(\"Not a Windows .exe file.\");\n            }\n\n            using (var stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))\n            {\n                stream.Position = 0x3c;\n                var fileData = new byte[1024];\n\n                var bytesRead = stream.Read(fileData, 0, 1024);\n\n                for (var i = 0; i < bytesRead; i++)\n                {\n                    // Look for the PE signature (PE\\0\\0)\n                    if (i + 5 >= bytesRead) break;\n                    if (fileData[i] != 0x50) continue;\n                    if (fileData[i + 1] != 0x45 || fileData[i + 2] != 0 || fileData[i + 3] != 0) continue;\n\n                    // Join two bytes representing the architecture\n                    var machineId = fileData[i + 5] << 8 | fileData[i + 4];\n                    switch (machineId)\n                    {\n                        case 0x8664:\n                            return MachineType.X64;\n                        case 0x14c:\n                            return MachineType.X86;\n                        case 0x200:\n                            return MachineType.Ia64;\n                        case 0xaa64:\n                        case 0xA641:\n                        case 0xA64E:\n                            return MachineType.ARM64;\n                        default:\n                            return MachineType.Unknown;\n                    }\n                }\n            }\n\n            return MachineType.Unknown;\n        }\n\n        public static void CopyRecursive(string sourcePath, string targetPath)\n        {\n            CopyRecursive(new DirectoryInfo(sourcePath), new DirectoryInfo(targetPath));\n        }\n\n        public static void CopyRecursive(DirectoryInfo source, DirectoryInfo target)\n        {\n            // Check if the target directory exists, if not, create it.\n            if (Directory.Exists(target.FullName) == false)\n            {\n                Directory.CreateDirectory(target.FullName);\n            }\n\n            // Copy each file into it’s new directory.\n            foreach (var fi in source.GetFiles())\n            {\n                //Console.WriteLine(@\"Copying {0}\\{1}\", target.FullName, fi.Name);\n                fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);\n            }\n\n            // Copy each subdirectory using recursion.\n            foreach (var diSourceSubDir in source.GetDirectories())\n            {\n                var nextTargetSubDir =\n                    target.CreateSubdirectory(diSourceSubDir.Name);\n                CopyRecursive(diSourceSubDir, nextTargetSubDir);\n            }\n        }\n\n        public static bool CreateSymlink(string symlinkFileName, string targetFileName, SymbolicLinkType type)\n        {\n            return CreateSymbolicLink(symlinkFileName, targetFileName, type) != 0;\n        }\n\n        public static void MoveDirectory(string sourcePath, string targetPath)\n        {\n            MoveDirectory(new DirectoryInfo(sourcePath), new DirectoryInfo(targetPath));\n        }\n\n        public static void MoveDirectory(DirectoryInfo source, DirectoryInfo target)\n        {\n            if (source.RootEquals(target))\n                Directory.Move(source.FullName, target.FullName);\n            else\n            {\n                CopyRecursive(source, target);\n                source.Delete(true);\n            }\n        }\n\n        public static void CompressDirectory(string dirFullName) => CompressDirectory(dirFullName, ManagementOptions.InfiniteTimeout);\n        public static void CompressDirectory(string dirFullName, TimeSpan timeout)\n        {\n            var objPath = \"Win32_Directory.Name=\" + \"\\\"\" + dirFullName.Replace(@\"\\\", @\"\\\\\") + \"\\\"\";\n            using (var dir = new ManagementObject(objPath))\n            {\n                var outParams = dir.InvokeMethod(\"Compress\", null, new InvokeMethodOptions { Timeout = timeout });\n                if (outParams == null) throw new ArgumentNullException(nameof(outParams));\n                var ret = (uint)outParams.Properties[\"ReturnValue\"].Value;\n                if (ret != 0)\n                    throw new IOException(\"Win32_Directory.Compress returned \" + ret);\n            }\n        }\n\n        [DllImport(\"shlwapi.dll\")]\n        public static extern bool PathIsNetworkPath(string pszPath);\n\n        [DllImport(\"kernel32.dll\", EntryPoint = \"CreateSymbolicLinkW\", CharSet = CharSet.Unicode)]\n        private static extern int CreateSymbolicLink([In] string lpSymlinkFileName, [In] string lpTargetFileName,\n            SymbolicLinkType dwFlags);\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/GuidTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Text.RegularExpressions;\n\nnamespace Klocman.Tools\n{\n    public static class GuidTools\n    {\n        private const string GuidMatchPattern =\n            \"^[A-Fa-f0-9]{32}$|^({|\\\\()?[A-Fa-f0-9]{8}-([A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}(}|\\\\))?$|^({)?[0xA-Fa-f0-9]{3,10}(, {0,1}[0xA-Fa-f0-9]{3,6}){2}, {0,1}({)([0xA-Fa-f0-9]{3,4}, {0,1}){7}[0xA-Fa-f0-9]{3,4}(}})$\";\n\n        private static readonly Regex GuidMatchRegex = new(GuidMatchPattern, RegexOptions.Compiled);\n\n        /// <summary>\n        /// Extract and parse a guid from the supplied string. Throws if no guid is found.\n        /// </summary>\n        /// <exception cref=\"ArgumentNullException\">The value of 'source' cannot be null. </exception>\n        /// <exception cref=\"ArgumentException\">Failed to parse the input</exception>\n        public static Guid ExtractGuidFromString(string source)\n        {\n            if (source == null)\n                throw new ArgumentNullException(nameof(source));\n\n            try\n            {\n                var braceIndex = source.IndexOfAny(new[] {'{', '('});\n                if (braceIndex >= 0)\n                {\n                    var endingBraceIndex = source.IndexOfAny(new[] {'}', ')'});\n                    if (endingBraceIndex < 0)\n                        throw new ArgumentException(\"Invalid brace format\");\n\n                    source = source.Substring(braceIndex, endingBraceIndex - braceIndex + 1);\n                }\n                return new Guid(source);\n            }\n            catch (Exception ex)\n            {\n                throw new ArgumentException(\"Failed to parse the input\", ex);\n            }\n            //throw new NotImplementedException();\n        }\n\n        /// <summary>\n        /// Try to parse the supplied string into a guid. Faster than catching exceptions.\n        /// </summary>\n        public static bool GuidTryParse(string s, out Guid result)\n        {\n            result = Guid.Empty;\n            if (string.IsNullOrEmpty(s) || !GuidMatchRegex.IsMatch(s))\n            {\n                return false;\n            }\n            result = new Guid(s);\n            return true;\n        }\n\n        /// <summary>\n        /// Try to extract and parse a guid from the supplied string.\n        /// result = Guid.Empty if operation fails.\n        /// </summary>\n        public static bool TryExtractGuid(string source, out Guid result)\n        {\n            result = Guid.Empty;\n            if (string.IsNullOrEmpty(source))\n                return false;\n\n            var braceIndex = source.IndexOfAny(new[] {'{', '('});\n            if (braceIndex >= 0)\n            {\n                var endingBraceIndex = source.IndexOfAny(new[] {'}', ')'});\n                source = endingBraceIndex > braceIndex\n                    ? source.Substring(braceIndex, endingBraceIndex - braceIndex + 1)\n                    : source.Substring(braceIndex + 1);\n            }\n\n            return GuidTryParse(source, out result);\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/MachineType.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing Klocman.Localising;\nusing Klocman.Resources;\n\nnamespace Klocman.Tools\n{\n    public enum MachineType\n    {\n        [LocalisedName(typeof(CommonStrings), nameof(CommonStrings.Unknown))]\n        Unknown,\n        X86,\n        X64,\n        Ia64,\n        ARM64\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/PathTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Management;\nusing System.Text.RegularExpressions;\nusing Klocman.Extensions;\nusing Microsoft.Win32;\n\nnamespace Klocman.Tools\n{\n    public static class PathTools\n    {\n        private static Dictionary<string, string> _volumeIdLookup;\n\n        private static readonly char[] PathTrimChars = {\n            '\\\\',\n            '/',\n            '\"',\n            // SPACE \n            '\\u0020',\n            // NO-BREAK SPACE \n            '\\u00A0',\n            // OGHAM SPACE MARK \n            '\\u1680',\n            // EN QUAD \n            '\\u2000',\n            // EM QUAD \n            '\\u2001',\n            // EN SPACE \n            '\\u2002',\n            // EM SPACE \n            '\\u2003',\n            // THREE-PER-EM SPACE \n            '\\u2004',\n            // FOUR-PER-EM SPACE \n            '\\u2005',\n            // SIX-PER-EM SPACE \n            '\\u2006',\n            // FIGURE SPACE \n            '\\u2007',\n            // PUNCTUATION SPACE \n            '\\u2008',\n            // THIN SPACE \n            '\\u2009',\n            // HAIR SPACE \n            '\\u200A',\n            // NARROW NO-BREAK SPACE \n            '\\u202F',\n            // MEDIUM MATHEMATICAL SPACE \n            '\\u205F',\n            // and IDEOGRAPHIC SPACE \n            '\\u3000',\n\n            // LINE SEPARATOR \n            '\\u2028',\n\n            // PARAGRAPH SEPARATOR  \n            '\\u2029',\n\n            // CHARACTER TABULATION \n            '\\u0009',\n            // LINE FEED \n            '\\u000A',\n            // LINE TABULATION \n            '\\u000B',\n            // FORM FEED \n            '\\u000C',\n            // CARRIAGE RETURN \n            '\\u000D',\n            // NEXT LINE \n            '\\u0085'\n        };\n\n        private static void PopulateVolumeIdLookup()\n        {\n            try\n            {\n                _volumeIdLookup = new Dictionary<string, string>();\n\n                var searcher = new ManagementObjectSearcher(\"root\\\\CIMV2\", \"SELECT * FROM Win32_Volume\");\n\n                foreach (var queryObj in searcher.Get().OfType<ManagementObject>())\n                {\n                    var id = (queryObj[\"DeviceID\"] as string)?.TrimEnd('\\\\', '/');\n                    var dl = queryObj[\"DriveLetter\"] as string;\n\n                    if (string.IsNullOrEmpty(id) || string.IsNullOrEmpty(dl))\n                        continue;\n\n                    _volumeIdLookup.Add(id, dl);\n                }\n            }\n            catch (ManagementException e)\n            {\n                Console.WriteLine($@\"An error occurred while querying for WMI data: {e.Message}\");\n            }\n        }\n\n        /// <summary>\n        /// Convert path from the \\\\?\\Volume{} form to the drive letter form.\n        /// Only works for volumes with assigned drive letters.\n        /// </summary>\n        /// <param name=\"volumePath\">Path to any element with volume in \\\\?\\Volume{} form.</param>\n        public static string ResolveVolumeIdToPath(string volumePath)\n        {\n            if (_volumeIdLookup == null)\n                PopulateVolumeIdLookup();\n\n            _volumeIdLookup.ForEach(x => volumePath = volumePath.Replace(x.Key, x.Value, StringComparison.OrdinalIgnoreCase));\n\n            return volumePath;\n        }\n\n        /// <summary>\n        /// Get full path of an application available in current environment. Same as writing it's name in CMD.\n        /// </summary>\n        /// <param name=\"filename\">Name of the exectuable, including the extension</param>\n        /// <returns></returns>\n        public static string GetFullPathOfExecutable(string filename)\n        {\n            IEnumerable<string> paths = new[] { Environment.CurrentDirectory };\n            var pathVariable = Environment.GetEnvironmentVariable(\"PATH\");\n            if (pathVariable != null) paths = paths.Concat(pathVariable.Split(';'));\n            var combinations = paths.Select(x => Path.Combine(x, filename));\n            return combinations.FirstOrDefault(File.Exists) ?? GetExecutablePathFromAppPaths(filename);\n        }\n\n        /// <param name=\"exename\">name of the exectuable, including .exe</param>\n        private static string GetExecutablePathFromAppPaths(string exename)\n        {\n            const string appPaths = @\"Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\";\n            var executableEntry = Path.Combine(appPaths, exename);\n            using (var key = Registry.CurrentUser.OpenSubKey(executableEntry) ?? Registry.LocalMachine.OpenSubKey(executableEntry))\n            {\n                return key?.GetStringSafe(null);\n            }\n        }\n\n        /// <summary>\n        ///     Get full directory path of directory that contains the item pointed at by the path string.\n        /// </summary>\n        public static string GetDirectory(string fullPath)\n        {\n            var trimmed = fullPath.TrimEnd('\"', ' ', '\\\\').TrimStart('\"', ' ');\n            if (trimmed.Contains('\\\\'))\n            {\n                var index = trimmed.LastIndexOf('\\\\');\n                if (index < trimmed.Length)\n                {\n                    return trimmed.Substring(0, index);\n                }\n            }\n            return string.Empty;\n        }\n\n        /// <summary>\n        ///     Get the topmost part of the path. If this is not a valid path return string.Empty.\n        /// </summary>\n        public static string GetName(string fullPath)\n        {\n            var trimmed = fullPath.TrimEnd('\"', ' ', '\\\\');\n            if (trimmed.Contains('\\\\'))\n            {\n                var index = trimmed.LastIndexOf('\\\\') + 1;\n                if (index < trimmed.Length)\n                {\n                    return trimmed.Substring(index);\n                }\n            }\n            return string.Empty;\n        }\n\n        /// <summary>\n        ///     Trim supplied path to the required depth.\n        /// </summary>\n        /// <param name=\"path\">Path to be trimmed</param>\n        /// <param name=\"maxLevel\">Maximal depth of the path, 0 will show only the root node</param>\n        /// <returns>Trimmed path</returns>\n        public static string GetPathUpToLevel(string path, int maxLevel)\n        {\n            return GetPathUpToLevel(path, maxLevel, false);\n        }\n\n        /// <summary>\n        ///     Trim supplied path or full filename to the required depth.\n        /// </summary>\n        /// <param name=\"path\">Path to be trimmed</param>\n        /// <param name=\"maxLevel\">Maximal depth of the path, 0 will show only the root node</param>\n        /// <param name=\"containsFilename\">If true, the last part of the path will be ignored, since it is a filename</param>\n        /// <returns>Trimmed path</returns>\n        public static string GetPathUpToLevel(string path, int maxLevel, bool containsFilename)\n        {\n            if (string.IsNullOrEmpty(path))\n                return string.Empty;\n\n            string directory;\n            try\n            {\n                directory = containsFilename ? Path.GetDirectoryName(path) : Path.GetFullPath(path);\n\n                if (string.IsNullOrEmpty(directory))\n                    return string.Empty;\n            }\n            catch (Exception)\n            {\n                return string.Empty;\n            }\n\n            var directoryParts = directory.Split(new[] { '\\\\' }, StringSplitOptions.RemoveEmptyEntries);\n            if (directoryParts.Length >= 1)\n            {\n                var result = string.Empty;\n\n                for (var i = 0; i < maxLevel + 1 && i < directoryParts.Length; i++)\n                {\n                    result = string.Concat(result, directoryParts[i], \"\\\\\");\n                }\n\n                return result;\n            }\n            return string.Empty;\n        }\n\n        // Try to get the windows directory, returns null if failed\n        public static DirectoryInfo GetWindowsDirectory()\n        {\n            try\n            {\n                var windowsDirectory = Environment.GetEnvironmentVariable(\"SystemRoot\");\n                if (windowsDirectory != null) return new DirectoryInfo(windowsDirectory);\n            }\n            catch\n            {\n                //Check other\n            }\n            try\n            {\n                var windowsDirectory = Environment.GetEnvironmentVariable(\"windir\");\n                if (windowsDirectory != null) return new DirectoryInfo(windowsDirectory);\n            }\n            catch\n            {\n                //Messed up environment variables or security too high\n            }\n            return null;\n        }\n\n        /// <summary>\n        ///     Change path to normal case. Example: C:\\PROGRAM FILES => C:\\Program files\n        /// </summary>\n        public static string PathToNormalCase(string path)\n        {\n            var directoryParts = NormalizePath(path).Split(new[] { '\\\\' }, StringSplitOptions.RemoveEmptyEntries);\n            if (directoryParts.Length < 1)\n                return string.Empty;\n\n            var result = string.Empty;\n\n            for (var i = 0; i < directoryParts.Length; i++)\n            {\n                var part = directoryParts[i].ToLower();\n                result = string.Concat(result, part.Substring(0, 1).ToUpperInvariant() + part.Substring(1), \"\\\\\");\n            }\n\n            return result;\n        }\n\n        public static bool PathsEqual(string path1, string path2)\n        {\n            if (string.IsNullOrEmpty(path1) || string.IsNullOrEmpty(path2))\n                return false;\n\n            try\n            {\n                path1 = path1.SafeNormalize().Trim(PathTrimChars);\n                path2 = path2.SafeNormalize().Trim(PathTrimChars);\n                return path1.Equals(path2, StringComparison.InvariantCultureIgnoreCase);\n            }\n            catch\n            {\n                // Fall back to ordinal in case SafeNormalize isn't safe enough\n                return path1.Trim(PathTrimChars).Equals(path2.Trim(PathTrimChars), StringComparison.OrdinalIgnoreCase);\n            }\n        }\n\n        /// <summary>\n        /// Remove unnecessary spaces, quotes and path separators from start and end of the path.\n        /// Might produce different path than intended in case it contains invalid unicode characters.\n        /// </summary>\n        public static string NormalizePath(string path1)\n        {\n            if (path1 == null) throw new ArgumentNullException(nameof(path1));\n            return path1.SafeNormalize().Trim(PathTrimChars);\n        }\n\n        public static bool PathsEqual(FileSystemInfo path1, FileSystemInfo path2)\n        {\n            if (path1 == null || path2 == null)\n                return false;\n\n            return PathsEqual(path1.FullName, path2.FullName);\n        }\n\n        /// <summary>\n        /// Replace all invalid file name characters from a string with _ so that it can be used as a file name.\n        /// </summary>\n        public static string SanitizeFileName(string name)\n        {\n            var invalidChars = Regex.Escape(new string(Path.GetInvalidFileNameChars()));\n            var invalidRegStr = string.Format(@\"([{0}]*\\.+$)|([{0}]+)\", invalidChars);\n\n            return Regex.Replace(name, invalidRegStr, \"_\");\n        }\n\n        /// <summary>\n        /// Version of Path.Combine with much less restrictive input checks, and additional path cleanup.\n        /// </summary>\n        public static string GenerousCombine(string path1, string path2)\n        {\n            if (path1 == null || path2 == null)\n                throw new ArgumentNullException(path1 == null ? nameof(path1) : nameof(path2));\n\n            path1 = NormalizePath(path1);\n            path2 = NormalizePath(path2);\n\n            if (path2.Length == 0) return path1;\n            if (path1.Length == 0 || Path.IsPathRooted(path2)) return path2;\n\n            return path1 + Path.DirectorySeparatorChar + path2;\n        }\n\n        /// <summary>\n        /// Get a cleaned up list of all paths in the PATH variables of both current user and the machine. Duplicates are removed.\n        /// </summary>\n        public static IEnumerable<string> GetAllEnvironmentPaths()\n        {\n            var parts = Environment.GetEnvironmentVariable(\"PATH\", EnvironmentVariableTarget.User)?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries) ?? Enumerable.Empty<string>();\n            parts = parts.Concat(Environment.GetEnvironmentVariable(\"PATH\", EnvironmentVariableTarget.Machine)?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries) ?? Enumerable.Empty<string>());\n\n            return parts.Where(x => !string.IsNullOrEmpty(x)).Select(NormalizePath).Select(Path.GetFullPath).DistinctBy(s => s.ToLower());\n        }\n\n        /// <summary>\n        /// Check if subPath is a sub path inside basePath.\n        /// If isFilesystemPath is true then attempt to normalize the path to its absolute form on the filesystem. Set to false for registry and other paths.\n        /// </summary>\n        public static bool SubPathIsInsideBasePath(string basePath, string subPath, bool normalizeFilesystemPath, bool includeExactMatch)\n        {\n            if (basePath == null) return false;\n            basePath = NormalizePath(basePath).Replace('\\\\', '/');\n            if (string.IsNullOrEmpty(basePath)) return false;\n            if (normalizeFilesystemPath)\n            {\n                try { basePath = Path.GetFullPath(basePath).Replace('\\\\', '/'); }\n                catch (SystemException) { }\n            }\n\n            if (subPath == null) return false;\n            subPath = NormalizePath(subPath).Replace('\\\\', '/');\n            if (string.IsNullOrEmpty(subPath)) return false;\n            if (normalizeFilesystemPath)\n            {\n                try { subPath = Path.GetFullPath(subPath).Replace('\\\\', '/'); }\n                catch (SystemException) { }\n            }\n\n            return subPath.StartsWith(basePath + '/', StringComparison.InvariantCultureIgnoreCase) || includeExactMatch && subPath.Equals(basePath, StringComparison.InvariantCultureIgnoreCase);\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/ProcessStartCommand.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Diagnostics;\n\nnamespace Klocman.Tools\n{\n    public class ProcessStartCommand\n    {\n        public ProcessStartCommand(string filename)\n            : this(filename, string.Empty)\n        {\n        }\n\n        /// <exception cref=\"ArgumentNullException\">The values of 'filename' and 'args' cannot be null. </exception>\n        public ProcessStartCommand(string filename, string args)\n        {\n            if (filename == null)\n                throw new ArgumentNullException(nameof(filename));\n            if (args == null)\n                throw new ArgumentNullException(nameof(args));\n\n            FileName = filename.Trim().Trim('\"', '\\'');\n            Arguments = args.Trim();\n        }\n\n        public string Arguments { get; set; }\n        public string FileName { get; set; }\n\n        public static bool TryParse(string command, out ProcessStartCommand result)\n        {\n            try\n            {\n                result = ProcessTools.SeparateArgsFromCommand(command);\n            }\n            catch (Exception)\n            {\n                result = null;\n            }\n\n            return (result != null);\n        }\n\n        public string ToCommandLine()\n        {\n            return ToString();\n        }\n\n        public override string ToString()\n        {\n            return string.IsNullOrEmpty(Arguments) ? $\"\\\"{FileName}\\\"\" : $\"\\\"{FileName}\\\" {Arguments}\";\n        }\n\n        public ProcessStartInfo ToProcessStartInfo()\n        {\n            return new ProcessStartInfo(FileName, Arguments) { UseShellExecute = true };\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/ProcessTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Drawing;\nusing System.Globalization;\nusing System.IO;\nusing System.Linq;\nusing System.Management;\nusing System.Reflection;\nusing System.Runtime.InteropServices;\nusing Klocman.Extensions;\nusing Klocman.Properties;\n\nnamespace Klocman.Tools\n{\n    public static class ProcessTools\n    {\n        public static bool Is64BitProcess => IntPtr.Size == 8;\n\n        /// <summary>\n        ///     Kill all of process's children, grandchildren, etc.\n        /// </summary>\n        /// <param name=\"pid\">Process ID.</param>\n        public static void KillChildProcesses(int pid)\n        {\n            foreach (var id in GetChildProcesses(pid))\n            {\n                KillProcessAndChildProcesses(id);\n            }\n        }\n\n        /// <summary>\n        ///     Get IDs of all child processes\n        /// </summary>\n        public static IEnumerable<int> GetChildProcesses(int pid)\n        {\n            try\n            {\n                using (var searcher = new ManagementObjectSearcher(\"Select * From Win32_Process Where ParentProcessID=\" + pid))\n                {\n                    var moc = searcher.Get();\n                    var childProcesses = moc.Cast<ManagementObject>().Select(mo => Convert.ToInt32(mo[\"ProcessID\"])).ToList();\n                    return childProcesses;\n                }\n            }\n            catch\n            {\n                Process processById;\n                try\n                {\n                    processById = Process.GetProcessById(pid);\n                }\n                catch (Exception a)\n                {\n                    Console.WriteLine(a);\n                    return Enumerable.Empty<int>();\n                }\n                return processById.GetChildProcesses().Select(x => x.Id);\n            }\n        }\n\n        /// <summary>\n        ///     Kill a process, and all of its children, grandchildren, etc.\n        /// </summary>\n        /// <param name=\"pid\">Process ID.</param>\n        public static void KillProcessAndChildProcesses(int pid)\n        {\n            KillChildProcesses(pid);\n\n            try\n            {\n                var proc = Process.GetProcessById(pid);\n                proc.Kill();\n            }\n            catch (ArgumentException)\n            {\n                // Process already exited.\n            }\n        }\n\n        /// <exception cref=\"ArgumentException\">processName</exception>\n        /// <exception cref=\"InvalidOperationException\">\n        ///     There are problems accessing the performance counter API's used to get\n        ///     process information. This exception is specific to Windows NT, Windows 2000, and Windows XP.\n        /// </exception>\n        public static bool SafeKillProcess(string processName)\n        {\n            if (string.IsNullOrEmpty(processName))\n                throw new ArgumentException(@\"Process name can't be null or empty\", nameof(processName));\n\n            foreach (var p in Process.GetProcessesByName(processName))\n            {\n                try\n                {\n                    p.Kill();\n                    p.WaitForExit(); // possibly with a timeout\n                    return true;\n                }\n                catch (Win32Exception)\n                {\n                    // process was terminating or can't be terminated - deal with it\n                    return false;\n                }\n                catch (InvalidOperationException)\n                {\n                    // process has already exited - might be able to let this one go\n                    return true;\n                }\n                catch\n                {\n                    return false;\n                }\n            }\n            return true;\n        }\n\n        private static readonly char[] SeparateArgsFromCommandInvalidChars =\n            Path.GetInvalidFileNameChars().Concat(new[] { ',', ';' }).ToArray();\n\n        //static readonly char[] pathFilterChars = StringTools.InvalidPathChars.Except(new char[] { '\"' }).ToArray();\n        /// <summary>\n        ///     Attempts to separate filename (or filename with path) from the supplied arguments.\n        /// </summary>\n        /// <param name=\"fullCommand\"></param>\n        /// <returns></returns>\n        /// <exception cref=\"ArgumentNullException\">The value of 'fullCommand' cannot be null. </exception>\n        /// <exception cref=\"ArgumentException\">fullCommand can't be empty</exception>\n        /// <exception cref=\"FormatException\">Filename is in invalid format</exception>\n        public static ProcessStartCommand SeparateArgsFromCommand(string fullCommand)\n        {\n            if (fullCommand == null)\n                throw new ArgumentNullException(nameof(fullCommand));\n\n            // Get rid of whitespaces\n            fullCommand = fullCommand.Trim();\n\n            if (string.IsNullOrEmpty(fullCommand))\n                throw new ArgumentException(Localisation.Error_SeparateArgsFromCommand_Empty, nameof(fullCommand));\n\n            var firstDot = fullCommand.IndexOf('.');\n            if (firstDot < 0)\n                return SeparateNonDottedCommand(fullCommand);\n\n            // Check if the path is in format: ExecutableName C:\\Argname.exe\n            {\n                var pathRoot = fullCommand.IndexOf(\":\\\\\", StringComparison.InvariantCulture);\n                var firstSpace = fullCommand.IndexOf(' ');\n                if (firstSpace >= 0 && firstSpace < pathRoot)\n                {\n                    var filenameBreaker = fullCommand.IndexOfAny(SeparateArgsFromCommandInvalidChars, 0, pathRoot - 1);\n                    if (filenameBreaker < 0)\n                    {\n                        var slashIndex = fullCommand.IndexOf('\\\\');\n                        if (slashIndex >= 0 && slashIndex > pathRoot)\n                        {\n                            var rootSpace = fullCommand.LastIndexOf(' ', pathRoot);\n                            return new ProcessStartCommand(fullCommand.Substring(0, rootSpace).TrimEnd(),\n                                fullCommand.Substring(rootSpace));\n                        }\n                    }\n                }\n            }\n\n            // Check if the path is contained inside of quotation marks.\n            // Assume that the quotation mark must come before the dot. Otherwise, it is likely that the arguments use quotations.\n            var pathEnd = fullCommand.IndexOf('\"', 0, firstDot);\n            if (pathEnd >= 0)\n            {\n                // If yes, find the closing quotation mark and set its index as path end\n                pathEnd = fullCommand.IndexOf('\"', pathEnd + 1);\n\n                if (pathEnd < 0)\n                {\n                    // If no ending quote has been found, explode gracefully.\n                    throw new FormatException(Localisation.Error_SeparateArgsFromCommand_MissingQuotationMark);\n                }\n                pathEnd += 1; //?\n            }\n\n            // If quotation marks were missing, check for any invalid characters after last dot\n            // in case of eg: c:\\test.dir thing\\filename.exe?0 used to get icons\n            if (pathEnd < 0)\n            {\n                var endIndex = 0;\n                while (true)\n                {\n                    var dot = fullCommand.IndexOf('.', endIndex);\n                    if (dot < 0)\n                        break;\n\n                    var filenameBreaker = fullCommand.IndexOfAny(SeparateArgsFromCommandInvalidChars, dot);\n                    var space = fullCommand.IndexOf(' ', dot);\n                    if (filenameBreaker < 0)\n                    {\n                        if (space < 0) break;\n                        filenameBreaker = space;\n                    }\n\n                    var dash = fullCommand.IndexOf('\\\\', dot);\n                    if (filenameBreaker < dash || dash < 0)\n                    {\n                        pathEnd = space < 0 ? filenameBreaker : space;\n                        break;\n                    }\n\n                    var nextBreaker = fullCommand.IndexOfAny(SeparateArgsFromCommandInvalidChars, filenameBreaker + 1);\n                    var nextDash = fullCommand.IndexOf('\\\\', filenameBreaker + 1);\n\n                    if (nextBreaker > 0 && (nextDash < 0 || nextBreaker < nextDash))\n                    {\n                        var nextDot = fullCommand.IndexOf('.', filenameBreaker + 1);\n                        if (nextDot < 0 || nextBreaker < nextDot)\n                        {\n                            pathEnd = space < 0 ? filenameBreaker : space;\n                            break;\n                        }\n                    }\n\n                    endIndex = dash;\n                }\n\n                // old\n                //pathEnd = fullCommand.IndexOfAny(\" ,:;?-=\", fullCommand.LastIndexOf('.'));\n            }\n\n            return SeparateCommand(fullCommand, pathEnd);\n        }\n\n        private static ProcessStartCommand SeparateCommand(string fullCommand, int splitIndex)\n        {\n            // Begin extracting filename and arguments\n            string filename;\n            var args = string.Empty;\n\n            if (splitIndex < 0 || splitIndex >= fullCommand.Length)\n            {\n                // Looks like there were no arguments, assume whole command is a filename\n                filename = fullCommand;\n            }\n            else\n            {\n                // pathEnd shows the end of the filename (and start of the arguments)\n                filename = fullCommand.Substring(0, splitIndex).TrimEnd();\n                args = fullCommand.Substring(splitIndex).TrimStart();\n            }\n\n            filename = filename.Trim('\"'); // Get rid of the quotation marks\n            return new ProcessStartCommand(filename, args);\n        }\n\n        private static ProcessStartCommand SeparateNonDottedCommand(string fullCommand)\n        {\n            // Look for the first root of a path\n            var pathRoot = fullCommand.IndexOf(\":\\\\\", StringComparison.InvariantCulture);\n            var pathRootEnd = pathRoot < 0 ? 0 : pathRoot + 2;\n\n            var breakChars = SeparateArgsFromCommandInvalidChars.Except(new[] { '\\\\' }).ToArray();\n\n            // Check if there are any invalid path chars before the start we found. If yes, our path is most likely an argument.\n            if (pathRootEnd > 0 && fullCommand.IndexOfAny(breakChars, 0, pathRootEnd - 2) >= 0)\n                pathRootEnd = 0;\n            var breakIndex = fullCommand.IndexOfAny(breakChars, pathRootEnd);\n\n            // If there are no invalid path chars, it's probably just a naked filename or directory path.\n            if (breakIndex < 0)\n                return new ProcessStartCommand(fullCommand.Trim('\"'));\n\n            // The invalid char has to have at least 1 space before it to count as an argument. Otherwise the input is likely garbage.\n            if (breakIndex > 0 && fullCommand[breakIndex - 1] == ' ')\n                return new ProcessStartCommand(fullCommand.Substring(0, breakIndex - 1).TrimEnd(),\n                    fullCommand.Substring(breakIndex));\n\n            throw new FormatException(Localisation.Error_SeparateArgsFromCommand_NoDot + \"\\n\" + fullCommand);\n        }\n\n        /// <summary>\n        ///     Change default culture info for new threads\n        /// </summary>\n        /// <param name=\"culture\"></param>\n        public static void SetDefaultCulture(CultureInfo culture)\n        {\n            var type = typeof(CultureInfo);\n\n            if (Environment.Version.Major < 4)\n            {\n                // Fields used before .Net 4.0\n                try\n                {\n                    type.InvokeMember(\"m_userDefaultCulture\",\n                        BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Static,\n                        null,\n                        culture,\n                        new object[] { culture });\n\n                    type.InvokeMember(\"m_userDefaultUICulture\",\n                        BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Static,\n                        null,\n                        culture,\n                        new object[] { culture });\n\n                    return;\n                }\n                catch\n                {\n                    //Ignore failure, try next\n                }\n            }\n\n            try\n            {\n                type.InvokeMember(\"s_userDefaultCulture\",\n                    BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Static,\n                    null,\n                    culture,\n                    new object[] { culture });\n\n                type.InvokeMember(\"s_userDefaultUICulture\",\n                    BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Static,\n                    null,\n                    culture,\n                    new object[] { culture });\n            }\n            catch\n            {\n                //Ignore failure\n            }\n        }\n\n        /// <summary>\n        ///     Bring to foreground main window of all processes with name of the executing process\n        /// </summary>\n        public static void ShowMainWindow()\n        {\n            ShowMainWindow(Process.GetCurrentProcess().ProcessName);\n        }\n\n        /// <summary>\n        ///     Bring to foreground main window of all processes with supplied name\n        /// </summary>\n        /// <param name=\"processName\">Name of the processes to bring to foreground</param>\n        public static void ShowMainWindow(string processName)\n        {\n            foreach (var p in Process.GetProcessesByName(processName))\n            {\n                ShowWindow(p.MainWindowHandle, 1); //SW_SHOWNORMAL = 1\n                SetForegroundWindow(p.MainWindowHandle);\n            }\n        }\n\n        [DllImport(\"user32.dll\", SetLastError = true)]\n        private static extern bool SetForegroundWindow(IntPtr hwnd);\n\n        [DllImport(\"user32.dll\", SetLastError = true, CharSet = CharSet.Auto)]\n        private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);\n\n        public static Icon GetIconFromEntryExe()\n        {\n            var location = Assembly.GetEntryAssembly()?.Location;\n            if (location == null) throw new ArgumentException(\"Failed to get location of EntryAssembly\");\n            if (location.EndsWith(\".dll\")) location = location.Substring(0, location.Length - 3) + \"exe\";\n            var icon = DrawingTools.ExtractAssociatedIcon(location);\n            return icon;\n        }\n\n        /// <summary>\n        /// Process.GetProcessById but doesn't throw on issues and instead returns null\n        /// </summary>\n        public static Process GetProcessByIdSafe(int processId)\n        {\n            try\n            {\n                return Process.GetProcessById(processId);\n            }\n            catch\n            {\n                return null;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/ReflectionTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflection;\nusing Klocman.Extensions;\n\nnamespace Klocman.Tools\n{\n    public static class ReflectionTools\n    {\n        /// <summary>\n        ///     Get the name of a static or instance property from a property access lambda.\n        /// </summary>\n        /// <typeparam name=\"TProperty\">Type of the property</typeparam>\n        /// <typeparam name=\"TClass\">Type of a class that contains the property</typeparam>\n        /// <param name=\"memberLamda\">You must pass a lambda formed like this 'x => x.Property' or this 'x => class.Property'</param>\n        /// <returns>The name of the property</returns>\n        public static string GetPropertyName<TProperty, TClass>(Expression<Func<TClass, TProperty>> memberLamda)\n        {\n            return GetPropertyInfo(memberLamda).Name;\n        }\n\n        /// <summary>\n        ///     Get the PropertyInfo of a static or instance property from a property access lambda.\n        /// </summary>\n        /// <typeparam name=\"TProperty\">Type of the property</typeparam>\n        /// <typeparam name=\"TClass\">Type of a class that contains the property</typeparam>\n        /// <param name=\"memberLamda\">You must pass a lambda formed like this 'x => x.Property' or this 'x => class.Property'</param>\n        /// <returns>The name of the property</returns>\n        public static PropertyInfo GetPropertyInfo<TProperty, TClass>(Expression<Func<TClass, TProperty>> memberLamda)\n        {\n            if (memberLamda == null)\n                throw new ArgumentNullException(nameof(memberLamda));\n\n            if (memberLamda.Body is not MemberExpression memberSelectorExpression)\n                throw new ArgumentException(@\"You must pass a lambda of the form: 'x => x.Property' or 'x => class.Property'\", nameof(memberLamda));\n\n            var property = memberSelectorExpression.Member as PropertyInfo;\n            if (property == null)\n                throw new ArgumentException(@\"You must pass a lambda of the form: 'x => x.Property' or 'x => class.Property'\", nameof(memberLamda));\n\n            return property;\n        }\n\n        /// <summary>\n        ///     Try to set specified property to the supplied object. Ignores setter access protection.\n        ///     Will throw an exception if the setter doesn't exist or any of the parameters is invalid.\n        /// </summary>\n        /// <typeparam name=\"TClass\">Type of a class that contains the property</typeparam>\n        /// <param name=\"classInstance\">Instance of the class that contains the property</param>\n        /// <param name=\"memberLamda\">You must pass a lambda formed like this 'x => x.Property' or this 'x => class.Property'</param>\n        /// <param name=\"value\">Value to set the property to.</param>\n        public static void SetPropertyValue<TClass>(TClass classInstance, Expression<Func<TClass, object>> memberLamda,\n            object value)\n        {\n            var memberSelectorExpression = memberLamda.Body as MemberExpression;\n            var property = memberSelectorExpression?.Member as PropertyInfo;\n            if (property != null)\n            {\n                property.SetValue(classInstance, value, null);\n            }\n        }\n\n        /// <summary>\n        /// Create compiled get and set methods with drastically improved performance.\n        /// </summary>\n        /// <typeparam name=\"TInstance\">Type of the class containing this property</typeparam>\n        /// <param name=\"propertyInfo\">Property info to compile</param>\n        public static CompiledPropertyInfo<TInstance> CompileAccessors<TInstance>(this PropertyInfo propertyInfo)\n        {\n            return new CompiledPropertyInfo<TInstance>(propertyInfo);\n        }\n\n        /// <summary>\n        /// Search for types that implement TBase in all assemblies in current domain.\n        /// </summary>\n        /// <typeparam name=\"TBase\">Base that returned types have to implement</typeparam>\n        /// <param name=\"ignoreAbstract\">Filter out abstract types</param>\n        /// <param name=\"ignoreInterfaces\">Filter out interfaces</param>\n        public static IEnumerable<Type> GetTypesImplementingBase<TBase>(bool ignoreAbstract = true, bool ignoreInterfaces = true) where TBase : class\n        {\n            return GetTypesImplementingBase<TBase>(AppDomain.CurrentDomain.GetAssemblies(), ignoreAbstract, ignoreInterfaces);\n        }\n\n        /// <summary>\n        /// Search for types that implement TBase in specified assemblies.\n        /// </summary>\n        /// <typeparam name=\"TBase\">Base that returned types have to implement</typeparam>\n        /// <param name=\"assembliesToSearch\">Assemblies to search for types</param>\n        /// <param name=\"ignoreAbstract\">Filter out abstract types</param>\n        /// <param name=\"ignoreInterfaces\">Filter out interfaces</param>\n        public static IEnumerable<Type> GetTypesImplementingBase<TBase>(Assembly[] assembliesToSearch,\n            bool ignoreAbstract = true, bool ignoreInterfaces = true) where TBase : class \n        {\n            var baseType = typeof(TBase);\n            if (baseType.IsSealed)\n                throw new TypeLoadException(\"TBase can't be a sealed type\");\n\n            var result = assembliesToSearch.Attempt(x => x.GetTypes()).SelectMany(x => x);\n            if (ignoreAbstract) result = result.Where(x => !x.IsAbstract);\n            if (ignoreInterfaces) result = result.Where(x => !x.IsInterface);\n\n            return result.Where(x => baseType.IsAssignableFrom(x));\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/RegistryTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Diagnostics.CodeAnalysis;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing Klocman.Extensions;\nusing Klocman.Properties;\nusing Microsoft.Win32;\n\nnamespace Klocman.Tools\n{\n    public static class RegistryTools\n    {\n        private const string HklmShortRootName = \"HKLM\";\n        private const string HklmRootName = \"HKEY_LOCAL_MACHINE\";\n        private const string HkcrRootName = \"HKEY_CLASSES_ROOT\";\n        private const string HkcrShortRootName = \"HKCR\";\n        private const string HkcuRootName = \"HKEY_CURRENT_USER\";\n        private const string HkcuShortRootName = \"HKCU\";\n        private const string HkuRootName = \"HKEY_USERS\";\n        private const string HkuShortRootName = \"HKUS\";\n        private const string HkuShortRootName2 = \"HKU\";\n        private const string HkccRootName = \"HKEY_CURRENT_CONFIG\";\n        private const string HkccShortRootName = \"HKCC\";\n\n        /// <summary>\n        ///     Rename subkey.\n        /// </summary>\n        public static void RenameSubKey(this RegistryKey parentKey,\n            string subKeyName, string newSubKeyName)\n        {\n            CopySubKey(parentKey, subKeyName, newSubKeyName);\n            parentKey.DeleteSubKeyTree(subKeyName);\n        }\n\n        /// <summary>\n        ///     Move subkey under a new parent.\n        /// </summary>\n        public static void MoveSubKey(this RegistryKey parentKey,\n            string subKeyName, RegistryKey newParentKey, string newSubKeyName)\n        {\n            CopySubKey(parentKey, subKeyName, newParentKey, newSubKeyName);\n            parentKey.DeleteSubKeyTree(subKeyName);\n        }\n\n        /// <summary>\n        ///     Copy subkey.\n        /// </summary>\n        public static void CopySubKey(this RegistryKey parentKey,\n            string subKeyName, string newSubKeyName)\n        {\n            CopySubKey(parentKey, subKeyName, parentKey, newSubKeyName);\n        }\n\n        /// <summary>\n        ///     Copy subkey to a different parent key.\n        /// </summary>\n        public static void CopySubKey(this RegistryKey parentKey,\n            string subKeyName, RegistryKey newParentKey, string newSubKeyName)\n        {\n            using (var destinationKey = newParentKey.CreateSubKey(newSubKeyName))\n            using (var sourceKey = parentKey.OpenSubKey(subKeyName, true))\n                RecurseCopyKey(sourceKey, destinationKey);\n        }\n\n        private static void RecurseCopyKey(RegistryKey sourceKey, RegistryKey destinationKey)\n        {\n            foreach (var valueName in sourceKey.GetValueNames())\n            {\n                var valueData = sourceKey.GetValue(valueName);\n                var valueKind = sourceKey.GetValueKind(valueName);\n                destinationKey.SetValue(valueName, valueData!, valueKind);\n            }\n\n            foreach (var sourceSubKeyName in sourceKey.GetSubKeyNames())\n            {\n                using (var destSubKey = destinationKey.CreateSubKey(sourceSubKeyName))\n                using (var sourceSubKey = sourceKey.OpenSubKey(sourceSubKeyName, true))\n                    RecurseCopyKey(sourceSubKey, destSubKey);\n            }\n        }\n\n        public static void AddRegToRegistry(string fullFilename, bool silent)\n        {\n            if (fullFilename == null)\n                throw new ArgumentNullException(nameof(fullFilename));\n            if (!File.Exists(fullFilename) || !fullFilename.EndsWith(\".reg\", StringComparison.CurrentCultureIgnoreCase))\n                throw new ArgumentException(Localisation.RegistryTools_AddRegToRegistry_FileNotExist,\n                    nameof(fullFilename));\n\n            RunRegeditCommand($\"{(silent ? \"/s \" : string.Empty)}\\\"{fullFilename}\\\"\");\n        }\n\n        /// <summary>\n        ///     Export all of the supplied keys to a .reg file using Regedit\n        /// </summary>\n        /// <param name=\"outputFileName\"></param>\n        /// <param name=\"registryPaths\"></param>\n        /// <returns>False if nothing was written, else true</returns>\n        public static bool ExportRegistry(string outputFileName, IEnumerable<string> registryPaths)\n        {\n            var result = new List<string>();\n            var firstPass = true;\n\n            foreach (var regPath in registryPaths)\n            {\n                var output = ExportRegistryHelper(regPath);\n                if (output == null || output.Length < 2)\n                    continue;\n\n                if (!firstPass)\n                {\n                    output = output.SubArray(1, output.Length - 1);\n                }\n\n                firstPass = false;\n\n                result.AddRange(output);\n            }\n\n            if (result.Count < 2)\n                return false;\n\n            File.WriteAllLines(outputFileName, result.ToArray(), Encoding.Unicode);\n            return true;\n        }\n\n        /// <summary>\n        /// Write specified unescaped values to a .reg file\n        /// </summary>\n        /// <param name=\"outputFileName\">Filename with extension to save as</param>\n        /// <param name=\"containingKeyPath\">Full, rooted registry path of the key containing the values</param>\n        /// <param name=\"values\">Value names and their string values</param>\n        public static void ExportRegistryStringValues(string outputFileName, string containingKeyPath,\n            params KeyValuePair<string, string>[] values)\n        {\n            var builder = new StringBuilder();\n            builder.AppendLine(@\"Windows Registry Editor Version 5.00\");\n            foreach (var value in values)\n            {\n                builder.AppendLine();\n                builder.AppendFormat(@\"[{0}]\", containingKeyPath);\n                builder.AppendLine();\n                builder.AppendFormat(\"\\\"{0}\\\"=\\\"{1}\\\"\", value.Key, \n                    (value.Value ?? string.Empty).Replace(@\"\\\", @\"\\\\\").Replace(\"\\\"\", \"\\\\\\\"\"));\n                builder.AppendLine();\n            }\n            File.WriteAllText(outputFileName, builder.ToString());\n        }\n\n        /// <exception cref=\"IOException\">Registry export failed because of filesystem or permission error. </exception>\n        public static void ExportRegistry(string outputFileName, string registryPath)\n        {\n            RunRegeditCommand($\"/e \\\"{outputFileName}\\\" \\\"{registryPath}\\\"\");\n        }\n\n        /// <summary>\n        ///     Open registry key using its fully qualified path. The key is opened read-only.\n        ///     Root key can be named by either its long or short name. (long: \"HKEY_LOCAL_MACHINE\", short: \"HKLM\")\n        /// </summary>\n        /// <param name=\"fullPath\">Full path of the requested registry key</param>\n        public static RegistryKey OpenRegistryKey(string fullPath)\n        {\n            return OpenRegistryKey(fullPath, false);\n        }\n\n        /// <summary>\n        ///     Open registry key using its fully qualified path.\n        ///     Root key can be named by either its long or short name. (long: \"HKEY_LOCAL_MACHINE\", short: \"HKLM\")\n        /// </summary>\n        /// <param name=\"fullPath\">Full path of the requested registry key</param>\n        /// <param name=\"writable\">If false, key is opened read-only</param>\n        /// <param name=\"ignoreAccessExceptions\">If true, return null instead of throwin an exception if the key is inaccessible</param>\n        public static RegistryKey OpenRegistryKey(string fullPath, bool writable, bool ignoreAccessExceptions)\n        {\n            if(!ignoreAccessExceptions)\n                return OpenRegistryKey(fullPath, writable);\n\n            try\n            {\n                return OpenRegistryKey(fullPath, writable);\n            }\n            catch (Exception ex)\n            {\n                if (ex is UnauthorizedAccessException || ex is System.Security.SecurityException || ex is IOException)\n                {\n                    Debug.WriteLine(ex);\n                    return null;\n                }\n\n                throw;\n            }\n        }\n\n        /// <summary>\n        ///     Open registry key using its fully qualified path.\n        ///     Root key can be named by either its long or short name. (long: \"HKEY_LOCAL_MACHINE\", short: \"HKLM\")\n        /// </summary>\n        /// <param name=\"fullPath\">Full path of the requested registry key</param>\n        /// <param name=\"writable\">If false, key is opened read-only</param>\n        public static RegistryKey OpenRegistryKey(string fullPath, bool writable)\n        {\n            if (fullPath == null)\n                throw new ArgumentNullException(nameof(fullPath));\n\n            if (fullPath.Length < 4)\n                throw new ArgumentException(\"Path is too short/invalid\");\n\n            var rootKey = GetRootHive(fullPath);\n\n            var result = rootKey.OpenSubKey(StripKeyRoot(fullPath), writable);\n            //if (result == null)\n            //    throw new ArgumentException(\"Invalid subpath\");\n            return result;\n        }\n\n        [return: NotNull]\n        private static RegistryKey GetRootHive(string fullPath)\n        {\n            RegistryKey rootKey;\n            switch (GetKeyRoot(fullPath, true))\n            {\n                case HklmShortRootName:\n                    rootKey = Registry.LocalMachine;\n                    break;\n                case HkcrShortRootName:\n                    rootKey = Registry.ClassesRoot;\n                    break;\n                case HkcuShortRootName:\n                    rootKey = Registry.CurrentUser;\n                    break;\n                case HkuShortRootName:\n                case HkuShortRootName2:\n                    rootKey = Registry.Users;\n                    break;\n                case HkccShortRootName:\n                    rootKey = Registry.CurrentConfig;\n                    break;\n\n                default:\n                    throw new ArgumentException(\"Path root is invalid or missing\");\n            }\n\n            return rootKey;\n        }\n\n        /// <summary>\n        ///     Return registry key at supplied path. If the key or its parents don't exist, create them before returning.\n        ///     The returned RegistryKey is writable.\n        /// </summary>\n        /// <param name=\"fullPath\">Path of the key to open or create. Not case-sensitive.</param>\n        public static RegistryKey CreateSubKeyRecursively(string fullPath)\n        {\n            if (fullPath == null)\n                throw new ArgumentNullException(nameof(fullPath));\n\n            if (fullPath.Length < 4)\n                throw new ArgumentException(\"Path is too short/invalid\");\n\n            var previousKey = GetRootHive(fullPath);\n\n            var parts = StripKeyRoot(fullPath).Split(new[] { '\\\\', '/' }, StringSplitOptions.RemoveEmptyEntries);\n\n            for (var i = 0; i < parts.Length; i++)\n            {\n                var newKey = previousKey!.CreateSubKey(parts[i]);\n                // Don't try to close the root key\n                if (i > 0)\n                    previousKey.Close();\n                previousKey = newKey;\n            }\n\n            return previousKey;\n        }\n\n        public static string GetKeyRoot(string fullPath, bool shortStyle)\n        {\n            if (fullPath == null)\n                throw new ArgumentNullException(nameof(fullPath));\n\n            if (fullPath.Length < 3)\n                throw new ArgumentException(\"Path is too short/invalid\");\n\n            var firstSplitter = fullPath.IndexOf('\\\\');\n            if (firstSplitter < 0) firstSplitter = fullPath.Length;\n            var rootName = fullPath.Substring(0, firstSplitter).ToUpperInvariant();\n\n            switch (rootName)\n            {\n                case HklmRootName:\n                case HklmShortRootName:\n                    return shortStyle ? HklmShortRootName : HklmRootName;\n                case HkcrRootName:\n                case HkcrShortRootName:\n                    return shortStyle ? HkcrShortRootName : HkcrRootName;\n                case HkcuRootName:\n                case HkcuShortRootName:\n                    return shortStyle ? HkcuShortRootName : HkcuRootName;\n                case HkuRootName:\n                case HkuShortRootName:\n                case HkuShortRootName2:\n                    return shortStyle ? HkuShortRootName : HkuRootName;\n                case HkccRootName:\n                case HkccShortRootName:\n                    return shortStyle ? HkccShortRootName : HkccRootName;\n\n                default:\n                    throw new ArgumentException(\"Path root is invalid or missing\");\n            }\n        }\n\n        public static string StripKeyRoot(string fullPath)\n        {\n            if (fullPath == null)\n                throw new ArgumentNullException(nameof(fullPath));\n\n            if (fullPath.Length < 4)\n                throw new ArgumentException(\"Path is too short/invalid\");\n\n            var firstSplitter = fullPath.IndexOf('\\\\');\n            if (firstSplitter < 0) firstSplitter = fullPath.Length;\n            return firstSplitter >= fullPath.Length - 1\n                ? string.Empty\n                : fullPath.Substring(firstSplitter + 1);\n        }\n\n        /*/// <exception cref=\"ArgumentException\">Path can't be empty or null</exception>\n        public static string GetParentRegistryPath(string fullRegistryPath)\n        {\n            if (string.IsNullOrEmpty(fullRegistryPath))\n                throw new ArgumentException(\"Path can't be empty or null\", \"fullRegistryPath\");\n            fullRegistryPath.TrimEnd('\\\\');\n            var lastIndex = fullRegistryPath.LastIndexOf('\\\\');\n            return fullRegistryPath.Substring(0, lastIndex);\n        }*/\n\n        public static void RemoveRegistryKey(string fullRegistryPath)\n        {\n            if (string.IsNullOrEmpty(fullRegistryPath))\n                throw new ArgumentException(Localisation.RegistryTools_RemoveRegistryKey_PathEmptyNull,\n                    nameof(fullRegistryPath));\n\n            if (fullRegistryPath.Count(x => x.Equals('\\\\')) < 2)\n                throw new ArgumentException(Localisation.RegistryTools_RemoveRegistryKey_PointsAtRoot,\n                    nameof(fullRegistryPath));\n\n            using (var key = OpenRegistryKey(Path.GetDirectoryName(fullRegistryPath), true))\n            {\n                if (key != null)\n                {\n                    var subkeyName = Path.GetFileName(fullRegistryPath);\n                    // Check if key exists before attempting to remove to avoid an exception\n                    if (key.GetSubKeyNames().Contains(subkeyName, StringComparison.OrdinalIgnoreCase))\n                        key.DeleteSubKeyTree(subkeyName);\n                }\n            }\n        }\n\n        public static void RemoveRegistryValue(string fullRegistryPath, string valueName)\n        {\n            if (string.IsNullOrEmpty(fullRegistryPath))\n                throw new ArgumentException(Localisation.RegistryTools_RemoveRegistryKey_PathEmptyNull,\n                    nameof(fullRegistryPath));\n\n            if (string.IsNullOrEmpty(valueName))\n                throw new ArgumentException(Localisation.RegistryTools_RemoveRegistryKey_RemoveDefault,\n                    nameof(valueName));\n\n            if (fullRegistryPath.Count(x => x.Equals('\\\\')) < 2)\n                throw new ArgumentException(Localisation.RegistryTools_RemoveRegistryKey_PointsAtRoot,\n                    nameof(fullRegistryPath));\n\n            using (var key = OpenRegistryKey(fullRegistryPath, true))\n            {\n                key?.DeleteValue(valueName);\n            }\n        }\n\n        private static void RunRegeditCommand(string command)\n        {\n            foreach (var process in Process.GetProcessesByName(\"regedit\"))\n            {\n                try { process.Kill(); }\n                catch (InvalidOperationException) { }\n                catch (Win32Exception) { }\n            }\n\n            var startInfo = new ProcessStartInfo(\"regedit.exe\", command)\n            { UseShellExecute = false };\n            var pr = startInfo.Start();\n\n            if (!pr.WaitForExit(50000))\n            {\n                pr.Kill();\n                throw new IOException(\"regedit.exe failed to execute properly\");\n            }\n            if (pr.ExitCode != 0)\n                throw new IOException(\"regedit.exe returned error code: \" + pr.ExitCode);\n        }\n\n        private static string[] ExportRegistryHelper(string registryPath)\n        {\n            // Check if the key exists\n            try\n            {\n                OpenRegistryKey(registryPath).Close();\n            }\n            catch\n            {\n                return null;\n            }\n\n            var temp = Path.GetTempPath();\n            var tempDirectory = Directory.CreateDirectory(Path.Combine(temp, \"BCU\"));\n            var tempFile = Path.Combine(tempDirectory.FullName, \"tempBackup.reg\");\n\n            File.Delete(tempFile);\n\n            try\n            {\n                RunRegeditCommand($\"/e \\\"{tempFile}\\\" \\\"{registryPath}\\\"\");\n                return File.ReadAllLines(tempFile, Encoding.Unicode);\n            }\n            finally\n            {\n                File.Delete(tempFile);\n            }\n        }\n\n        /// <exception cref=\"IOException\">Could not complete this operation. </exception>\n        public static void OpenRegKeyInRegedit(string registryPath)\n        {\n            try\n            {\n                if (!ProcessTools.SafeKillProcess(\"regedit\"))\n                    throw new IOException(\"Could not close running instance of Regedit\");\n\n                var regeditSettings =\n                    Registry.CurrentUser.CreateSubKey(@\"Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\",\n                        RegistryKeyPermissionCheck.ReadWriteSubTree);\n\n                if (regeditSettings == null)\n                    throw new IOException(\"Failed to set the last user registry key\");\n\n                regeditSettings.SetValue(\"LastKey\", registryPath, RegistryValueKind.String);\n                Process.Start(\"regedit.exe\");\n            }\n            catch (Exception ex)\n            {\n                throw new IOException(\"Failed to open regedit.exe\", ex);\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/SerializationTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Xml.Serialization;\n\nnamespace Klocman.Tools\n{\n    public static class SerializationTools\n    {\n        public static T DeserializeFromXml<T>(string fullFilename)\n        {\n            var serializer = new XmlSerializer(typeof(T));\n            using (var reader = new StreamReader(fullFilename))\n            {\n                var deserialized = serializer.Deserialize(reader.BaseStream);\n                return (T)deserialized;\n            }\n        }\n\n        public static void SerializeToXml<T>(string fullFilename, T input, XmlAttributeOverrides attributeOverrides = null)\n        {\n            var serializer = new XmlSerializer(typeof(T), attributeOverrides);\n            using (var writer = new StreamWriter(fullFilename))\n            {\n                serializer.Serialize(writer.BaseStream, input);\n            }\n        }\n        \n        public static IDictionary<TKey, TValue> DeserializeDictionary<TKey, TValue>(string filename)\n        {\n            var l = DeserializeFromXml<List<DictSerializeData<TKey, TValue>>>(filename);\n\n            return l.ToDictionary(x => x.Key, x => x.Data);\n        }\n\n        public static void SerializeDictionary<TKey, TValue>(IDictionary<TKey, TValue> source, string filename)\n        {\n            SerializeToXml(filename, source.Select(x => new DictSerializeData<TKey, TValue>(x.Key, x.Value)).ToList());\n        }\n        \n        [Serializable]\n        public class DictSerializeData<TKey, TValue>\n        {\n            public DictSerializeData()\n            {\n            }\n\n            public DictSerializeData(TKey key, TValue data)\n            {\n                Key = key;\n                Data = data;\n            }\n\n            public TValue Data { get; set; }\n            public TKey Key { get; set; }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/Sift4.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace Klocman.Tools\n{\n    /// <summary>\n    /// Algorithm by Siderite\n    /// https://siderite.blogspot.com/2014/11/super-fast-and-accurate-string-distance.html#at2217133354\n    /// </summary>\n    public class Sift4\n    {\n        private readonly Options _options;\n\n        public Sift4(Options options)\n        {\n            if (options == null) options = new Options();\n            if (options.Tokenizer == null)\n            {\n                options.Tokenizer = s => s == null\n                    ? Array.Empty<string>()\n                    : s.ToCharArray().Select(c => c.ToString()).ToArray();\n            }\n            if (options.TokenMatcher == null)\n            {\n                options.TokenMatcher = (t1, t2) => t1 == t2;\n            }\n            if (options.MatchingEvaluator == null)\n            {\n                options.MatchingEvaluator = (t1, t2) => 1;\n            }\n            if (options.LocalLengthEvaluator == null)\n            {\n                options.LocalLengthEvaluator = l => l;\n            }\n            if (options.TranspositionCostEvaluator == null)\n            {\n                options.TranspositionCostEvaluator = (c1, c2) => 1;\n            }\n            if (options.TranspositionsEvaluator == null)\n            {\n                options.TranspositionsEvaluator = (l, t) => l - t;\n            }\n            _options = options;\n        }\n\n        /// <summary>\n        /// General distance algorithm uses all the parameters in the options object and works on tokens\n        /// </summary>\n        /// <param name=\"s1\"></param>\n        /// <param name=\"s2\"></param>\n        /// <param name=\"maxOffset\"></param>\n        /// <returns></returns>\n        public double GeneralDistance(string s1, string s2, int maxOffset)\n        {\n            var t1 = _options.Tokenizer(s1);\n            var t2 = _options.Tokenizer(s2);\n\n            var l1 = t1.Length;\n            var l2 = t2.Length;\n\n            if (l1 == 0) return _options.LocalLengthEvaluator(l2);\n            if (l2 == 0) return _options.LocalLengthEvaluator(l1);\n\n            var c1 = 0;  //cursor for string 1\n            var c2 = 0;  //cursor for string 2\n            var lcss = 0.0;  //largest common subsequence\n            var localCs = 0.0; //local common substring\n            var trans = 0.0;  //cost of transpositions ('axb' vs 'xba')\n            var offsetArr = new LinkedList<OffsetPair>();  //offset pair array, for computing the transpositions\n\n            while ((c1 < l1) && (c2 < l2))\n            {\n                if (_options.TokenMatcher(t1[c1], t2[c2]))\n                {\n                    localCs += _options.MatchingEvaluator(t1[c1], t2[c2]);\n                    var isTransposition = false;\n                    var op = offsetArr.First;\n                    while (op != null)\n                    {  //see if current match is a transposition\n                        var ofs = op.Value;\n                        if (c1 <= ofs.C1 || c2 <= ofs.C2)\n                        {\n                            // when two matches cross, the one considered a transposition is the one with the largest difference in offsets\n                            isTransposition = Math.Abs(c2 - c1) >= Math.Abs(ofs.C2 - ofs.C1);\n                            if (isTransposition)\n                            {\n                                trans += _options.TranspositionCostEvaluator(c1, c2);\n                            }\n                            else\n                            {\n                                if (!ofs.IsTransposition)\n                                {\n                                    ofs.IsTransposition = true;\n                                    trans += _options.TranspositionCostEvaluator(ofs.C1, ofs.C2);\n                                }\n                            }\n                            break;\n                        }\n                        var nextOp = op.Next;\n                        if (c1 > ofs.C2 && c2 > ofs.C1)\n                        {\n                            offsetArr.Remove(op);\n                        }\n                        op = nextOp;\n                    }\n                    offsetArr.AddLast(new OffsetPair(c1, c2)\n                    {\n                        IsTransposition = isTransposition\n                    });\n                }\n                else\n                {\n                    lcss += _options.LocalLengthEvaluator(localCs);\n                    localCs = 0;\n                    if (c1 != c2)\n                    {\n                        c1 = c2 = Math.Min(c1, c2);  //using min allows the computation of transpositions\n                    }\n                    //if matching tokens are found, remove 1 from both cursors (they get incremented at the end of the loop)\n                    //so that we can have only one code block handling matches \n                    for (var i = 0; i < maxOffset && (c1 + i < l1 || c2 + i < l2); i++)\n                    {\n                        if ((c1 + i < l1) && _options.TokenMatcher(t1[c1 + i], t2[c2]))\n                        {\n                            c1 += i - 1;\n                            c2--;\n                            break;\n                        }\n                        if ((c2 + i < l2) && _options.TokenMatcher(t1[c1], t2[c2 + i]))\n                        {\n                            c1--;\n                            c2 += i - 1;\n                            break;\n                        }\n                    }\n                }\n                c1++;\n                c2++;\n                if (_options.MaxDistance != null)\n                {\n                    var temporaryDistance = _options.LocalLengthEvaluator(Math.Max(c1, c2)) - _options.TranspositionsEvaluator(lcss, trans);\n                    if (temporaryDistance >= _options.MaxDistance) return Math.Round(temporaryDistance, MidpointRounding.AwayFromZero);\n                }\n                // this covers the case where the last match is on the last token in list, so that it can compute transpositions correctly\n                if ((c1 >= l1) || (c2 >= l2))\n                {\n                    lcss += _options.LocalLengthEvaluator(localCs);\n                    localCs = 0;\n                    c1 = c2 = Math.Min(c1, c2);\n                }\n            }\n            lcss += _options.LocalLengthEvaluator(localCs);\n            return Math.Round(_options.LocalLengthEvaluator(Math.Max(l1, l2)) - _options.TranspositionsEvaluator(lcss, trans), MidpointRounding.AwayFromZero); //apply transposition cost to the final result\n        }\n\n        /// <summary>\n        /// Static distance algorithm working on strings, computing transpositions as well as stopping when maxDistance was reached.\n        /// </summary>\n        /// <param name=\"s1\"></param>\n        /// <param name=\"s2\"></param>\n        /// <param name=\"maxOffset\"></param>\n        /// <param name=\"maxDistance\"></param>\n        /// <returns></returns>\n        public static double CommonDistance(string s1, string s2, int maxOffset, int maxDistance = 0)\n        {\n            var l1 = s1 == null ? 0 : s1.Length;\n            var l2 = s2 == null ? 0 : s2.Length;\n\n            if (l1 == 0) return l2;\n            if (l2 == 0) return l1;\n\n            var c1 = 0;  //cursor for string 1\n            var c2 = 0;  //cursor for string 2\n            var lcss = 0;  //largest common subsequence\n            var localCs = 0; //local common substring\n            var trans = 0;  //number of transpositions ('axb' vs 'xba')\n            var offsetArr = new LinkedList<OffsetPair>();  //offset pair array, for computing the transpositions\n\n            while ((c1 < l1) && (c2 < l2))\n            {\n                if (s1![c1] == s2![c2])\n                {\n                    localCs++;\n                    var isTransposition = false;\n                    var op = offsetArr.First;\n                    while (op != null)\n                    {  //see if current match is a transposition\n                        var ofs = op.Value;\n                        if (c1 <= ofs.C1 || c2 <= ofs.C2)\n                        {\n                            // when two matches cross, the one considered a transposition is the one with the largest difference in offsets\n                            isTransposition = Math.Abs(c2 - c1) >= Math.Abs(ofs.C2 - ofs.C1);\n                            if (isTransposition)\n                            {\n                                trans++;\n                            }\n                            else\n                            {\n                                if (!ofs.IsTransposition)\n                                {\n                                    ofs.IsTransposition = true;\n                                    trans++;\n                                }\n                            }\n                            break;\n                        }\n                        var nextOp = op.Next;\n                        if (c1 > ofs.C2 && c2 > ofs.C1)\n                        {\n                            offsetArr.Remove(op);\n                        }\n                        op = nextOp;\n                    }\n                    offsetArr.AddLast(new OffsetPair(c1, c2)\n                    {\n                        IsTransposition = isTransposition\n                    });\n                }\n                else\n                {\n                    lcss += localCs;\n                    localCs = 0;\n                    if (c1 != c2)\n                    {\n                        c1 = c2 = Math.Min(c1, c2);  //using min allows the computation of transpositions\n                    }\n                    //if matching tokens are found, remove 1 from both cursors (they get incremented at the end of the loop)\n                    //so that we can have only one code block handling matches \n                    for (var i = 0; i < maxOffset && (c1 + i < l1 || c2 + i < l2); i++)\n                    {\n                        if ((c1 + i < l1) && s1[c1 + i] == s2[c2])\n                        {\n                            c1 += i - 1;\n                            c2--;\n                            break;\n                        }\n                        if ((c2 + i < l2) && s1[c1] == s2[c2 + i])\n                        {\n                            c1--;\n                            c2 += i - 1;\n                            break;\n                        }\n                    }\n                }\n                c1++;\n                c2++;\n                if (maxDistance > 0)\n                {\n                    var temporaryDistance = Math.Max(c1, c2) - (lcss - trans);\n                    if (temporaryDistance >= maxDistance) return temporaryDistance;\n                }\n                // this covers the case where the last match is on the last token in list, so that it can compute transpositions correctly\n                if ((c1 >= l1) || (c2 >= l2))\n                {\n                    lcss += localCs;\n                    localCs = 0;\n                    c1 = c2 = Math.Min(c1, c2);\n                }\n            }\n            lcss += localCs;\n            return Math.Max(l1, l2) - (lcss - trans); //apply transposition cost to the final result\n        }\n\n        /// <summary>\n        /// Standard Sift algorithm, using strings and taking only maxOffset as a parameter\n        /// </summary>\n        /// <param name=\"s1\"></param>\n        /// <param name=\"s2\"></param>\n        /// <param name=\"maxOffset\"></param>\n        /// <returns></returns>\n        public static int SimplestDistance(string s1, string s2, int maxOffset)\n        {\n            var l1 = s1 == null ? 0 : s1.Length;\n            var l2 = s2 == null ? 0 : s2.Length;\n\n            if (l1 == 0) return l2;\n            if (l2 == 0) return l1;\n\n            var c1 = 0;  //cursor for string 1\n            var c2 = 0;  //cursor for string 2\n            var lcss = 0;  //largest common subsequence\n            var localCs = 0; //local common substring\n\n            while ((c1 < l1) && (c2 < l2))\n            {\n                if (s1![c1] == s2![c2])\n                {\n                    localCs++;\n                }\n                else\n                {\n                    lcss += localCs;\n                    localCs = 0;\n                    if (c1 != c2)\n                    {\n                        c1 = c2 = Math.Max(c1, c2);\n                    }\n                    //if matching tokens are found, remove 1 from both cursors (they get incremented at the end of the loop)\n                    //so that we can have only one code block handling matches \n                    for (var i = 0; i < maxOffset && (c1 + i < l1 && c2 + i < l2); i++)\n                    {\n                        if ((c1 + i < l1) && s1[c1 + i] == s2[c2])\n                        {\n                            c1 += i - 1;\n                            c2--;\n                            break;\n                        }\n                        if ((c2 + i < l2) && s1[c1] == s2[c2 + i])\n                        {\n                            c1--;\n                            c2 += i - 1;\n                            break;\n                        }\n                    }\n                }\n                c1++;\n                c2++;\n            }\n            lcss += localCs;\n            return Math.Max(l1, l2) - lcss;\n        }\n\n        private class OffsetPair\n        {\n            public int C1 { get; set; }\n            public int C2 { get; set; }\n            public bool IsTransposition { get; set; }\n\n            public OffsetPair(int c1, int c2)\n            {\n                C1 = c1;\n                C2 = c2;\n                IsTransposition = false;\n            }\n        }\n\n        public class Options\n        {\n            /// <summary>\n            /// If set, the algorithm will stop if the distance reaches this value\n            /// </summary>\n            public int? MaxDistance { get; set; }\n\n            /// <summary>\n            /// The function that turns strings into a list of tokens (also strings)\n            /// </summary>\n            public Func<string, string[]> Tokenizer { get; set; }\n\n            /// <summary>\n            /// The function that determines if two tokens are matching (similar to characters being the same in the simple algorithm)\n            /// </summary>\n            public Func<string, string, bool> TokenMatcher { get; set; }\n\n            /// <summary>\n            /// The function that determines the value of a match of two tokens (the equivalent of adding 1 to the lcss when two characters match)\n            /// This assumes that the TokenMatcher function is a lot less expensive than this evaluator. If that is not the case, \n            /// you can optimize the speed of the algorithm by using only the matching evaluator and then calculating if two tokens match on the returned value.\n            /// </summary>\n            public Func<string, string, double> MatchingEvaluator { get; set; }\n\n            /// <summary>\n            /// Determines if the local value (computed on subsequent matched tokens) must be modified.\n            /// In case one wants to reward longer matched substrings, for example, this is what you need to change.\n            /// </summary>\n            public Func<double, double> LocalLengthEvaluator { get; set; }\n\n            /// <summary>\n            /// The function determining the cost of an individual transposition, based on its counter positions.\n            /// </summary>\n            public Func<int, int, double> TranspositionCostEvaluator { get; set; }\n\n            /// <summary>\n            /// The function determining how the cost of transpositions affects the final result\n            /// Change it if it doesn't suit you.\n            /// </summary>\n            public Func<double, double, double> TranspositionsEvaluator { get; set; }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/SleepControls.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\nusing System.Windows.Forms;\n\nnamespace Klocman.Tools\n{\n    public static class SleepControls\n    {\n        public static bool PreventSleepOrShutdown(IntPtr windowHandle, string blockReason)\n        {\n            try\n            {\n                SetThreadExecutionState(ExecutionState.EsContinuous | ExecutionState.EsSystemRequired);\n                return ShutdownBlockReasonCreate(windowHandle, blockReason);\n            }\n            catch (SystemException ex)\n            {\n                Console.WriteLine(ex);\n                return false;\n            }\n        }\n\n        public static bool AllowSleepOrShutdown(IntPtr windowHandle)\n        {\n            try\n            {\n                SetThreadExecutionState(ExecutionState.EsContinuous);\n                return ShutdownBlockReasonDestroy(windowHandle);\n            }\n            catch (SystemException ex)\n            {\n                Console.WriteLine(ex);\n                return false;\n            }\n        }\n\n        [DllImport(\"kernel32.dll\", CharSet = CharSet.Auto, SetLastError = true)]\n        private static extern ExecutionState SetThreadExecutionState(ExecutionState esFlags);\n\n        [Flags]\n        private enum ExecutionState : uint\n        {\n            EsAwaymodeRequired = 0x00000040,\n            EsContinuous = 0x80000000,\n            EsDisplayRequired = 0x00000002,\n            EsSystemRequired = 0x00000001\n        }\n\n        [DllImport(\"user32.dll\")]\n        private static extern bool ShutdownBlockReasonCreate(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)] string pwszReason);\n\n        [DllImport(\"user32.dll\")]\n        private static extern bool ShutdownBlockReasonDestroy(IntPtr hWnd);\n\n        public static bool PutToSleep()\n        {\n            try\n            {\n                return Application.SetSuspendState(PowerState.Suspend, true, true) ||\n                       Application.SetSuspendState(PowerState.Hibernate, true, true);\n            }\n            catch (SystemException ex)\n            {\n                Console.WriteLine(ex);\n                return false;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/StringTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing Klocman.Extensions;\n\nnamespace Klocman.Tools\n{\n    public static class StringTools\n    {\n        /// <summary>\n        ///     Atetmpt to extract percentage from a string. \"Test 63% of tests\" returns 63. \"Nope 11\" returns -1;\n        /// </summary>\n        /// <param name=\"toParse\">String to parse. Only the first percent sign is parsed.</param>\n        public static int TryExtractPercentage(string toParse)\n        {\n            var index = toParse.IndexOf('%');\n            if (index <= 0)\n                return -1;\n\n            var numIndex = -1;\n            for (var i = index - 1; i >= 0; i--)\n            {\n                if (toParse[i] >= '0' && toParse[i] <= '9')\n                    numIndex = i;\n                else\n                    break;\n            }\n\n            if (numIndex < index && numIndex >= 0)\n            {\n                var number = toParse.Substring(numIndex, index - numIndex);\n                int resultInt;\n                if (int.TryParse(number, out resultInt))\n                    return resultInt;\n            }\n\n            return -1;\n        }\n\n        /// <summary>\n        ///     Calculate string similarity by using Damereau-Levenshein Distance algorithm.\n        ///     The lower the score, the more similar the strings are.\n        /// </summary>\n        public static int CompareSimilarity(string s, string t)\n        {\n            if (string.IsNullOrEmpty(s))\n            {\n                if (string.IsNullOrEmpty(t))\n                    return 0;\n                return t.Length;\n            }\n\n            if (string.IsNullOrEmpty(t))\n            {\n                return s.Length;\n            }\n\n            var n = s.Length;\n            var m = t.Length;\n            var d = new int[n + 1, m + 1];\n\n            // initialize the top and right of the table to 0, 1, 2, ...\n            for (var i = 0; i <= n; d[i, 0] = i++)\n            {\n            }\n            for (var j = 1; j <= m; d[0, j] = j++)\n            {\n            }\n\n            for (var i = 1; i <= n; i++)\n            {\n                for (var j = 1; j <= m; j++)\n                {\n                    var cost = t[j - 1] == s[i - 1] ? 0 : 1;\n                    var min1 = d[i - 1, j] + 1;\n                    var min2 = d[i, j - 1] + 1;\n                    var min3 = d[i - 1, j - 1] + cost;\n                    d[i, j] = Math.Min(Math.Min(min1, min2), min3);\n                }\n            }\n            return d[n, m];\n        }\n\n        public static IEnumerable<char> InvalidFileNameChars => Path.GetInvalidFileNameChars();\n\n        public static IEnumerable<char> InvalidPathChars => Path.GetInvalidPathChars();\n\n        public static IEnumerable<string> NewLineChars => new[] { Environment.NewLine, \"\\n\", \"\\r\" };\n\n        /// <summary>\n        ///     Get a unique name based on the supplied baseName. If baseName is found in the otherItems enumerable it is postfixed\n        ///     by a number.\n        ///     The number is increased by 1 if the new name with the number is in the enumerable.\n        /// </summary>\n        /// <param name=\"baseName\"></param>\n        /// <param name=\"otherItems\"></param>\n        /// <returns>baseName if it was not found in otherItems, or baseName(number) if it was</returns>\n        /// <exception cref=\"ArgumentNullException\">The value of 'baseName' cannot be null. </exception>\n        /// <exception cref=\"ArgumentOutOfRangeException\">Unique name reached int.MaxValue</exception>\n        public static string GetUniqueName(string baseName, IEnumerable<string> otherItems)\n        {\n            if (baseName == null)\n                throw new ArgumentNullException(nameof(baseName));\n\n            baseName = baseName.Trim().SafeNormalize();\n\n            if (otherItems == null)\n                return baseName;\n\n            var baseNameCounted = baseName;\n            var otherItemList = otherItems.Select(x => x.ToLower()).ToList();\n\n            for (var i = 0; i < int.MaxValue; i++)\n            {\n                if (i != 0)\n                    baseNameCounted = $\"{baseName} ({i})\";\n\n                if (!otherItemList.Contains(baseNameCounted.ToLower()))\n                    return baseNameCounted;\n            }\n            throw new ArgumentOutOfRangeException(nameof(otherItems), @\"Unique name reached int.MaxValue\");\n        }\n\n        public static bool StringContainsFilter(string input, string filter)\n        {\n            input = input.StripAccents();\n            var filters = filter.StripAccents().Split(' ');\n            return filters.All(str => input.IndexOf(str, StringComparison.OrdinalIgnoreCase) != -1);\n        }\n\n        /// <summary>\n        ///     Strip version number from the end of a string. \"MyApp 1.023.1\" -> \"MyApp\"\n        ///     If string is null or empty, string.Empty is returned.\n        /// </summary>\n        /// <param name=\"input\"></param>\n        /// <returns></returns>\n        public static string StripStringFromVersionNumber(string input)\n        {\n            if (input == null)\n                return string.Empty;\n\n            int previousLen;\n            do\n            {\n                previousLen = input.Length;\n\n                input = input.Trim();\n\n                if (input.Length == 0)\n                    return string.Empty;\n\n                if (input.EndsWith(\")\", StringComparison.Ordinal))\n                {\n                    var bracketLocation = input.LastIndexOf('(');\n                    if (bracketLocation > 4)\n                    {\n                        input = input.Substring(0, bracketLocation).TrimEnd();\n                    }\n                }\n\n                input = input.ExtendedTrimEndAny(\n                    new[] { \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"0\", \".\", \",\", \"-\", \"_\" },\n                    StringComparison.InvariantCultureIgnoreCase).TrimEnd();\n\n                if (input.EndsWith(\" v\", StringComparison.InvariantCultureIgnoreCase))\n                    input = input.Substring(0, input.Length - 2);\n\n                input = input.ExtendedTrimEndAny(new[] { \"Application\", \"Helper\", \" v\", \" CE\" },\n                    StringComparison.InvariantCultureIgnoreCase);\n\n                input = input.TrimEnd();\n            } while (previousLen != input.Length);\n\n            return input;\n        }\n\n        public static string ReplaceNonCharacters(string input, char replacement)\n        {\n            var sb = new StringBuilder(input.Length);\n            for (var i = 0; i < input.Length; i++)\n            {\n                if (char.IsSurrogatePair(input, i))\n                {\n                    int c = char.ConvertToUtf32(input, i);\n                    i++;\n                    if (IsValidCodePoint(c))\n                        sb.Append(char.ConvertFromUtf32(c));\n                    else\n                        sb.Append(replacement);\n                }\n                else\n                {\n                    char c = input[i];\n                    if (IsValidCodePoint(c))\n                        sb.Append(c);\n                    else\n                        sb.Append(replacement);\n                }\n            }\n            return sb.ToString();\n        }\n\n        private static bool IsValidCodePoint(int point)\n        {\n            return point < 0xfdd0 || point >= 0xfdf0 && (point & 0xffff) != 0xffff && (point & 0xfffe) != 0xfffe && point <= 0x10ffff;\n        }\n\n        public static string Replace(this string str, string oldValue, string newValue, StringComparison comparison)\n        {\n            var sb = new StringBuilder();\n\n            var previousIndex = 0;\n            var index = str.IndexOf(oldValue, comparison);\n            while (index != -1)\n            {\n                sb.Append(str.Substring(previousIndex, index - previousIndex));\n                sb.Append(newValue);\n                index += oldValue.Length;\n\n                previousIndex = index;\n                index = str.IndexOf(oldValue, index, comparison);\n            }\n            sb.Append(str.Substring(previousIndex));\n\n            return sb.ToString();\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/SymbolicLinkType.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nnamespace Klocman.Tools\n{\n    public enum SymbolicLinkType\n    {\n        File = 0,\n        Directory = 1\n    }\n}"
  },
  {
    "path": "source/KlocTools/Tools/WindowsTools.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Net.NetworkInformation;\nusing System.Runtime.InteropServices;\nusing System.Security.Principal;\nusing System.Text;\nusing System.Text.RegularExpressions;\nusing System.Windows.Forms;\nusing Klocman.Extensions;\nusing Klocman.Native;\nusing Microsoft.Win32;\n\nnamespace Klocman.Tools\n{\n    public static class WindowsTools\n    {\n        public static Version Windows10 => new(10, 0);\n        public static Version Windows8P1 => new(6, 3);\n        public static Version WindowsServer2012R2 => new(6, 3);\n        public static Version Windows8 => new(6, 2);\n        public static Version WindowsServer2012 => new(6, 2);\n        public static Version Windows7 => new(6, 1);\n        public static Version WindowsServer2008R2 => new(6, 1);\n        public static Version WindowsServer2008 => new(6, 0);\n        public static Version WindowsVista => new(6, 0);\n        public static Version WindowsServer2003R2 => new(5, 2);\n        public static Version WindowsServer2003 => new(5, 2);\n        public static Version WindowsXp64 => new(5, 2);\n        public static Version WindowsXp => new(5, 1);\n        public static Version Windows2000 => new(5, 0);\n\n        /// <summary>\n        /// Check if .NET Framework v4 is available. Returns null if not installed, or highest installed version.\n        /// </summary>\n        /// <param name=\"full\">If true, check for full version, otherwise check for client version.</param>\n        public static Version CheckNetFramework4Installed(bool full)\n        {\n            using (var ndpKey = Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\\"))\n            {\n                if (ndpKey == null) return null;\n\n                var keys = ndpKey.GetSubKeyNames();\n                if (!keys.Contains(\"v4\")) return null;\n\n                using (var netKey = ndpKey.OpenSubKey(\"v4\"))\n                {\n                    if (netKey == null) return null;\n\n                    keys = netKey.GetSubKeyNames();\n                    var subKeyName = full ? \"Full\" : \"Client\";\n                    if (!keys.Contains(subKeyName)) return null;\n\n                    using (var subKey = netKey.OpenSubKey(subKeyName))\n                    {\n                        if (subKey?.GetValue(\"Install\", \"\")?.ToString() != \"1\") return null;\n\n                        var version = subKey.GetStringSafe(\"Version\");\n                        return string.IsNullOrEmpty(version) ? new Version(4, 0, 0) : new Version(version);\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        /// Check if .NET Framework v3.5 is available.\n        /// </summary>\n        public static bool CheckNetFramework35Installed()\n        {\n            try\n            {\n                AppDomain.CurrentDomain.Load(\n                    \"System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\");\n                return true;\n            }\n            catch\n            {\n                return false;\n            }\n        }\n\n        private static readonly string CplPath = Path.Combine(Environment.SystemDirectory, \"control.exe\");\n\n        private static readonly IEnumerable<string> LibraryTypes = new[]\n        {\n            \"DLL\",\n            \"SYS\"\n        };\n\n        private static readonly IEnumerable<string> SystemExecutableTypes = new[]\n        {\n            \"BAT\",\n            \"BIN\",\n            \"CMD\",\n            \"COM\",\n            \"CPL\",\n            \"EXE\",\n            \"GADGET\",\n            \"INF1\",\n            \"INS\",\n            \"INX\",\n            \"ISU\",\n            \"JOB\",\n            \"JSE\",\n            \"LNK\",\n            \"MSC\",\n            \"MSI\",\n            \"MSP\",\n            \"MST\",\n            \"PAF\",\n            \"PIF\",\n            \"PS1\",\n            \"REG\",\n            \"RGS\",\n            \"SCT\",\n            \"SHB\",\n            \"SHS\",\n            \"U3P\",\n            \"VB\",\n            \"VBE\",\n            \"VBS\",\n            \"VBSCRIPT\",\n            \"WS\",\n            \"WSF\"\n        };\n\n        private static readonly IEnumerable<string> ThirdPartyExecutableTypes = new[]\n        {\n            \"0XE\",\n            \"73K\",\n            \"89K\",\n            \"A6P\",\n            \"AC\",\n            \"ACC\",\n            \"ACR\",\n            \"ACTM\",\n            \"AHK\",\n            \"AIR\",\n            \"APP\",\n            \"ARSCRIPT\",\n            \"AS\",\n            \"ASB\",\n            \"AWK\",\n            \"AZW2\",\n            \"BEAM\",\n            \"BTM\",\n            \"CEL\",\n            \"CELX\",\n            \"CHM\",\n            \"COF\",\n            \"CRT\",\n            \"DEK\",\n            \"DLD\",\n            \"DMC\",\n            \"DOCM\",\n            \"DOTM\",\n            \"DXL\",\n            \"EAR\",\n            \"EBM\",\n            \"EBS\",\n            \"EBS2\",\n            \"ECF\",\n            \"EHAM\",\n            \"ELF\",\n            \"ES\",\n            \"EX4\",\n            \"EXOPC\",\n            \"EZS\",\n            \"FAS\",\n            \"FKY\",\n            \"FPI\",\n            \"FRS\",\n            \"FXP\",\n            \"GS\",\n            \"HAM\",\n            \"HMS\",\n            \"HPF\",\n            \"HTA\",\n            \"IIM\",\n            \"IPF\",\n            \"ISP\",\n            \"JAR\",\n            \"JS\",\n            \"JSX\",\n            \"KIX\",\n            \"LO\",\n            \"LS\",\n            \"MAM\",\n            \"MCR\",\n            \"MEL\",\n            \"MPX\",\n            \"MRC\",\n            \"MS\",\n            \"MS\",\n            \"MXE\",\n            \"NEXE\",\n            \"OBS\",\n            \"ORE\",\n            \"OTM\",\n            \"PEX\",\n            \"PLX\",\n            \"POTM\",\n            \"PPAM\",\n            \"PPSM\",\n            \"PPTM\",\n            \"PRC\",\n            \"PVD\",\n            \"PWC\",\n            \"PYC\",\n            \"PYO\",\n            \"QPX\",\n            \"RBX\",\n            \"ROX\",\n            \"RPJ\",\n            \"S2A\",\n            \"SBS\",\n            \"SCA\",\n            \"SCAR\",\n            \"SCB\",\n            \"SCR\",\n            \"SCRIPT\",\n            \"SMM\",\n            \"SPR\",\n            \"TCP\",\n            \"THM\",\n            \"TLB\",\n            \"TMS\",\n            \"UDF\",\n            \"UPX\",\n            \"URL\",\n            \"VLX\",\n            \"VPM\",\n            \"WCM\",\n            \"WIDGET\",\n            \"WIZ\",\n            \"WPK\",\n            \"WPM\",\n            \"XAP\",\n            \"XBAP\",\n            \"XLAM\",\n            \"XLM\",\n            \"XLSM\",\n            \"XLTM\",\n            \"XQT\",\n            \"XYS\",\n            \"ZL9\"\n        };\n\n        private static long _uniqueUserId;\n        public static string DefaultValueName => string.Empty;\n\n        public static string GetEnvironmentPath(CSIDL target)\n        {\n            var path = new StringBuilder(260);\n            NativeMethods.SHGetSpecialFolderPath(IntPtr.Zero, path, (int)target, false);\n            return path.ToString();\n        }\n\n        /// <summary>\n        ///     Return 32 bit program files directory.\n        /// </summary>\n        public static string GetProgramFilesX86Path()\n        {\n            var result = Environment.GetEnvironmentVariable(\"ProgramFiles(x86)\");\n            if (result.IsNotEmpty())\n                return result;\n\n            return GetEnvironmentPath(CSIDL.CSIDL_PROGRAM_FILES);\n        }\n\n        /// <summary>\n        ///     Returns path of the system drive, for example C:\\\n        /// </summary>\n        public static string GetSystemDrive()\n        {\n            return Path.GetPathRoot(GetEnvironmentPath(CSIDL.CSIDL_WINDOWS));\n        }\n\n        /// <summary>\n        ///     Returns name of the system drive, for example C: (without the slash)\n        /// </summary>\n        public static string GetSystemDriveName()\n        {\n            return Path.GetPathRoot(GetEnvironmentPath(CSIDL.CSIDL_WINDOWS))?.TrimEnd('\\\\', '/');\n        }\n\n        /// <summary>\n        ///     Based on User Sid, not guaranteed to be unique, but should be good enough.\n        /// </summary>\n        public static long GetUniqueUserId()\n        {\n            if (_uniqueUserId == 0)\n            {\n                var digitsOnly = new Regex(@\"[^\\d]\");\n                var parts = digitsOnly.Replace(GetUserSid().Value, \" \")\n                    .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);\n\n                foreach (var part in parts)\n                {\n                    _uniqueUserId += long.Parse(part);\n                }\n            }\n            return _uniqueUserId;\n        }\n\n        public static SecurityIdentifier GetUserSid()\n        {\n            return WindowsIdentity.GetCurrent().User;\n        }\n\n        /// <summary>\n        /// Returns executable paths of all installed web browsers\n        /// </summary>\n        public static string[] GetInstalledWebBrowsers()\n        {\n            // Check for built-in browsers that obviously don't have to conform to standards\n            var results = new List<string>(new[]\n            {\n                Path.Combine(GetProgramFilesX86Path(), @\"Internet Explorer\\iexplore.exe\"),\n                Path.Combine(GetEnvironmentPath(CSIDL.CSIDL_PROGRAM_FILES), @\"Internet Explorer\\iexplore.exe\"),\n                Path.Combine(GetEnvironmentPath(CSIDL.CSIDL_WINDOWS), @\"SystemApps\\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\\MicrosoftEdgeCP.exe\"),\n                Path.Combine(GetEnvironmentPath(CSIDL.CSIDL_WINDOWS), @\"SystemApps\\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\\MicrosoftEdge.exe\")\n            }.Where(File.Exists));\n\n            // Check for 3rd party browsers in standard reg keys\n            foreach (var internetKeyName in new[]\n            {\n                @\"SOFTWARE\\Clients\\StartMenuInternet\",\n                @\"SOFTWARE\\WOW6432Node\\Clients\\StartMenuInternet\"\n            })\n            {\n                using (var key = Registry.LocalMachine.OpenSubKey(internetKeyName))\n                {\n                    if (key == null) continue;\n\n                    foreach (var registryKey in key.GetSubKeyNames())\n                    {\n                        var subkey = registryKey + @\"\\shell\\open\\command\";\n                        try\n                        {\n                            using var commandKey = key.OpenSubKey(subkey);\n                            var path = commandKey?.GetStringSafe(null);\n                            if (path != null) results.Add(path.Trim('\\\"'));\n                        }\n                        catch (SystemException e)\n                        {\n                            // Most likey access denied, safe to ignore since these are not critical\n                            Console.WriteLine($@\"Failed to open {key.Name}\\{subkey} - {e}\");\n                        }\n                    }\n                }\n            }\n\n            return results.Distinct((x, y) => x.Equals(y, StringComparison.InvariantCultureIgnoreCase)).ToArray();\n        }\n\n        /// <summary>\n        ///     Check if the file can be executed.\n        ///     Only the string is compared, the path or file doesn't have to exist.\n        /// </summary>\n        /// <param name=\"filename\">Path containing the file name, it must contain the extension. The file doesn't have to exist.</param>\n        /// <param name=\"onlySystemTypes\">Should file types executed by third party applications be included?</param>\n        public static bool IsExectuable(string filename, bool onlySystemTypes)\n        {\n            return IsExectuable(filename, onlySystemTypes, false);\n        }\n\n        /// <summary>\n        ///     Check if the file can be executed and optionally if it's a library.\n        ///     Only the string is compared, the path or file doesn't have to exist.\n        /// </summary>\n        /// <param name=\"filename\">Path containing the file name, it must contain the extension. The file doesn't have to exist.</param>\n        /// <param name=\"onlySystemTypes\">Should file types executed by third party applications be included?</param>\n        /// <param name=\"includeLibraries\">Should library file types be included in the comparison?</param>\n        public static bool IsExectuable(string filename, bool onlySystemTypes, bool includeLibraries)\n        {\n            filename = filename.ExtendedTrimEndAny(new[] { \"'\", \"\\\"\" }, StringComparison.CurrentCultureIgnoreCase);\n\n            if (includeLibraries &&\n                LibraryTypes.Any(x => filename.EndsWith(x, StringComparison.CurrentCultureIgnoreCase)))\n                return true;\n\n            if (SystemExecutableTypes.Any(x => filename.EndsWith(x, StringComparison.CurrentCultureIgnoreCase)))\n                return true;\n\n            if (!onlySystemTypes &&\n                ThirdPartyExecutableTypes.Any(x => filename.EndsWith(x, StringComparison.CurrentCultureIgnoreCase)))\n                return true;\n\n            return false;\n        }\n\n        /// <summary>\n        ///     Indicates whether any network connection is available\n        ///     Filter connections below a specified speed, as well as virtual network cards.\n        /// </summary>\n        /// <returns>\n        ///     <c>true</c> if a network connection is available; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool IsNetworkAvailable()\n        {\n            return IsNetworkAvailable(0);\n        }\n\n        /// <summary>\n        ///     Indicates whether any network connection is available.\n        ///     Filter connections below a specified speed, as well as virtual network cards.\n        /// </summary>\n        /// <param name=\"minimumSpeed\">The minimum speed required. Passing 0 will not filter connection using speed.</param>\n        /// <returns>\n        ///     <c>true</c> if a network connection is available; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool IsNetworkAvailable(long minimumSpeed)\n        {\n            if (!NetworkInterface.GetIsNetworkAvailable())\n                return false;\n\n            foreach (var ni in NetworkInterface.GetAllNetworkInterfaces())\n            {\n                // discard because of standard reasons\n                if ((ni.OperationalStatus != OperationalStatus.Up) ||\n                    (ni.NetworkInterfaceType == NetworkInterfaceType.Loopback) ||\n                    (ni.NetworkInterfaceType == NetworkInterfaceType.Tunnel))\n                    continue;\n\n                // this allow to filter modems, serial, etc.\n                if (ni.Speed < minimumSpeed)\n                    continue;\n\n                // discard virtual cards (virtual box, virtual pc, etc.)\n                if ((ni.Description.Contains(\"virtual\", StringComparison.OrdinalIgnoreCase)) ||\n                    (ni.Name.Contains(\"virtual\", StringComparison.OrdinalIgnoreCase)))\n                    continue;\n\n                // discard \"Microsoft Loopback Adapter\", it will not show as NetworkInterfaceType.Loopback but as Ethernet Card.\n                if (ni.Description.Equals(\"Microsoft Loopback Adapter\", StringComparison.OrdinalIgnoreCase))\n                    continue;\n\n                return true;\n            }\n            return false;\n        }\n\n        /// <summary>\n        ///     Open target control panel applet and return immidiately.\n        /// </summary>\n        /// <exception cref=\"IOException\">Failed to open control panel entry</exception>\n        public static void OpenControlPanelApplet(ControlPanelCanonicalNames target)\n        {\n            try\n            {\n                new ProcessStartInfo(CplPath, \"/name Microsoft.\" + target) { UseShellExecute = true }.Start();\n            }\n            catch (Exception ex)\n            {\n                throw new IOException(\"Failed to open control panel entry\", ex);\n            }\n        }\n\n        /// <exception cref=\"ArgumentNullException\">The value of 'objectPath' cannot be null. </exception>\n        /// <exception cref=\"IOException\">Failed to start explorer. </exception>\n        public static void OpenExplorerFocusedOnObject(string objectPath)\n        {\n            if (objectPath == null)\n            {\n                throw new ArgumentNullException(nameof(objectPath));\n            }\n            try\n            {\n                new ProcessStartInfo(\"explorer.exe\", string.Format(\"/select,\\\"{0}\\\"\", objectPath)).Start();\n            }\n            catch (ArgumentNullException)\n            {\n                throw;\n            }\n            catch (Exception e)\n            {\n                throw new IOException(e.Message, e);\n            }\n        }\n\n        public static string ResolveShortcut(string filename)\n        {\n            var link = new NativeMethods.ShellLink();\n            // ReSharper disable once SuspiciousTypeConversion.Global\n            ((NativeMethods.IPersistFile)link).Load(filename, NativeMethods.STGM_READ);\n            var sb = new StringBuilder(NativeMethods.MAX_PATH);\n            var data = new NativeMethods.WIN32_FIND_DATAW();\n            // ReSharper disable once SuspiciousTypeConversion.Global\n            ((NativeMethods.IShellLinkW)link).GetPath(sb, sb.Capacity, ref data, 0);\n            return sb.ToString();\n        }\n\n        /// <summary>\n        /// Flash a window to indicate a need of attention\n        /// </summary>\n        public static bool FlashWindowEx(Form form)\n        {\n            var hWnd = form.Handle;\n            var fInfo = new NativeMethods.FLASHWINFO();\n\n            fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo));\n            fInfo.hwnd = hWnd;\n            if (!form.Focused)\n            {\n                fInfo.dwFlags = NativeMethods.FLASHW_ALL | NativeMethods.FLASHW_TIMERNOFG;\n                fInfo.uCount = uint.MaxValue;\n                fInfo.dwTimeout = 0;\n            }\n            else\n            {\n                fInfo.dwFlags = NativeMethods.FLASHW_ALL | NativeMethods.FLASHW_TIMER;\n                fInfo.uCount = 3;\n                fInfo.dwTimeout = 0;\n            }\n\n            return NativeMethods.FlashWindowEx(ref fInfo);\n        }\n\n        private static class NativeMethods\n        {\n            [DllImport(\"user32.dll\")]\n            [return: MarshalAs(UnmanagedType.Bool)]\n            internal static extern bool FlashWindowEx(ref FLASHWINFO pwfi);\n\n            [StructLayout(LayoutKind.Sequential)]\n            internal struct FLASHWINFO\n            {\n                /// <summary>\n                /// The size of the structure in bytes.\n                /// </summary>\n                public uint cbSize;\n                /// <summary>\n                /// A Handle to the Window to be Flashed. The window can be either opened or minimized.\n                /// </summary>\n                public IntPtr hwnd;\n                /// <summary>\n                /// The Flash Status.\n                /// </summary>\n                public uint dwFlags;\n                /// <summary>\n                /// The number of times to Flash the window.\n                /// </summary>\n                public uint uCount;\n                /// <summary>\n                /// The rate at which the Window is to be flashed, in milliseconds. If Zero, the function uses the default cursor blink rate.\n                /// </summary>\n                public uint dwTimeout;\n            }\n\n            /// <summary>\n            /// Stop flashing. The system restores the window to its original stae.\n            /// </summary>\n            internal const uint FLASHW_STOP = 0;\n\n            /// <summary>\n            /// Flash the window caption.\n            /// </summary>\n            internal const uint FLASHW_CAPTION = 1;\n\n            /// <summary>\n            /// Flash the taskbar button.\n            /// </summary>\n            internal const uint FLASHW_TRAY = 2;\n\n            /// <summary>\n            /// Flash both the window caption and taskbar button.\n            /// This is equivalent to setting the FLASHW_CAPTION | FLASHW_TRAY flags.\n            /// </summary>\n            internal const uint FLASHW_ALL = 3;\n\n            /// <summary>\n            /// Flash continuously, until the FLASHW_STOP flag is set.\n            /// </summary>\n            internal const uint FLASHW_TIMER = 4;\n\n            /// <summary>\n            /// Flash continuously until the window comes to the foreground.\n            /// </summary>\n            internal const uint FLASHW_TIMERNOFG = 12;\n\n            internal const uint STGM_READ = 0;\n            internal const int MAX_PATH = 260;\n            //public const int CSIDL_COMMON_STARTMENU = 0x16; // All Users\\Start Menu\n            [DllImport(\"shell32.dll\", CharSet = CharSet.Unicode)]\n            internal static extern bool SHGetSpecialFolderPath(IntPtr hwndOwner, [Out] StringBuilder lpszPath,\n                int nFolder, bool fCreate);\n\n            /*\n                        [DllImport(\"shfolder.dll\", CharSet = CharSet.Auto)]\n                        internal static extern int SHGetFolderPath(IntPtr hwndOwner, int nFolder, IntPtr hToken, int dwFlags,\n                            StringBuilder lpszPath);\n            */\n\n            [Flags]\n            internal enum SLGP_FLAGS\n            {\n                /// <summary>Retrieves the standard short (8.3 format) file name</summary>\n                SLGP_SHORTPATH = 0x1,\n\n                /// <summary>Retrieves the Universal Naming Convention (UNC) path name of the file</summary>\n                SLGP_UNCPRIORITY = 0x2,\n\n                /// <summary>\n                ///     Retrieves the raw path name. A raw path is something that might not exist and may include environment\n                ///     variables that need to be expanded\n                /// </summary>\n                SLGP_RAWPATH = 0x4\n            }\n\n            [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]\n            internal struct WIN32_FIND_DATAW\n            {\n                public readonly uint dwFileAttributes;\n                public readonly long ftCreationTime;\n                public readonly long ftLastAccessTime;\n                public readonly long ftLastWriteTime;\n                public readonly uint nFileSizeHigh;\n                public readonly uint nFileSizeLow;\n                public readonly uint dwReserved0;\n                public readonly uint dwReserved1;\n                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]\n                public readonly string cFileName;\n                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]\n                public readonly string cAlternateFileName;\n            }\n\n            [Flags]\n            internal enum SLR_FLAGS\n            {\n                /// <summary>\n                ///     Do not display a dialog box if the link cannot be resolved. When SLR_NO_UI is set,\n                ///     the high-order word of fFlags can be set to a time-out value that specifies the\n                ///     maximum amount of time to be spent resolving the link. The function returns if the\n                ///     link cannot be resolved within the time-out duration. If the high-order word is set\n                ///     to zero, the time-out duration will be set to the default value of 3,000 milliseconds\n                ///     (3 seconds). To specify a value, set the high word of fFlags to the desired time-out\n                ///     duration, in milliseconds.\n                /// </summary>\n                SLR_NO_UI = 0x1,\n\n                /// <summary>Obsolete and no longer used</summary>\n                SLR_ANY_MATCH = 0x2,\n\n                /// <summary>\n                ///     If the link object has changed, update its path and list of identifiers.\n                ///     If SLR_UPDATE is set, you do not need to call IPersistFile::IsDirty to determine\n                ///     whether or not the link object has changed.\n                /// </summary>\n                SLR_UPDATE = 0x4,\n\n                /// <summary>Do not update the link information</summary>\n                SLR_NOUPDATE = 0x8,\n\n                /// <summary>Do not execute the search heuristics</summary>\n                SLR_NOSEARCH = 0x10,\n\n                /// <summary>Do not use distributed link tracking</summary>\n                SLR_NOTRACK = 0x20,\n\n                /// <summary>\n                ///     Disable distributed link tracking. By default, distributed link tracking tracks\n                ///     removable media across multiple devices based on the volume name. It also uses the\n                ///     Universal Naming Convention (UNC) path to track remote file systems whose drive letter\n                ///     has changed. Setting SLR_NOLINKINFO disables both types of tracking.\n                /// </summary>\n                SLR_NOLINKINFO = 0x40,\n\n                /// <summary>Call the Microsoft Windows Installer</summary>\n                SLR_INVOKE_MSI = 0x80\n            }\n\n            /// <summary>The IShellLink interface allows Shell links to be created, modified, and resolved</summary>\n            [ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown),\n             Guid(\"000214F9-0000-0000-C000-000000000046\")]\n            internal interface IShellLinkW\n            {\n                /// <summary>Retrieves the path and file name of a Shell link object</summary>\n                void GetPath([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszFile, int cchMaxPath,\n                    ref WIN32_FIND_DATAW pfd, SLGP_FLAGS fFlags);\n\n                /// <summary>Retrieves the list of item identifiers for a Shell link object</summary>\n                void GetIDList(out IntPtr ppidl);\n\n                /// <summary>Sets the pointer to an item identifier list (PIDL) for a Shell link object.</summary>\n                void SetIDList(IntPtr pidl);\n\n                /// <summary>Retrieves the description string for a Shell link object</summary>\n                void GetDescription([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszName, int cchMaxName);\n\n                /// <summary>Sets the description for a Shell link object. The description can be any application-defined string</summary>\n                void SetDescription([MarshalAs(UnmanagedType.LPWStr)] string pszName);\n\n                /// <summary>Retrieves the name of the working directory for a Shell link object</summary>\n                void GetWorkingDirectory([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszDir, int cchMaxPath);\n\n                /// <summary>Sets the name of the working directory for a Shell link object</summary>\n                void SetWorkingDirectory([MarshalAs(UnmanagedType.LPWStr)] string pszDir);\n\n                /// <summary>Retrieves the command-line arguments associated with a Shell link object</summary>\n                void GetArguments([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszArgs, int cchMaxPath);\n\n                /// <summary>Sets the command-line arguments for a Shell link object</summary>\n                void SetArguments([MarshalAs(UnmanagedType.LPWStr)] string pszArgs);\n\n                /// <summary>Retrieves the hot key for a Shell link object</summary>\n                void GetHotkey(out short pwHotkey);\n\n                /// <summary>Sets a hot key for a Shell link object</summary>\n                void SetHotkey(short wHotkey);\n\n                /// <summary>Retrieves the show command for a Shell link object</summary>\n                void GetShowCmd(out int piShowCmd);\n\n                /// <summary>Sets the show command for a Shell link object. The show command sets the initial show state of the window.</summary>\n                void SetShowCmd(int iShowCmd);\n\n                /// <summary>Retrieves the location (path and index) of the icon for a Shell link object</summary>\n                void GetIconLocation([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszIconPath,\n                    int cchIconPath, out int piIcon);\n\n                /// <summary>Sets the location (path and index) of the icon for a Shell link object</summary>\n                void SetIconLocation([MarshalAs(UnmanagedType.LPWStr)] string pszIconPath, int iIcon);\n\n                /// <summary>Sets the relative path to the Shell link object</summary>\n                void SetRelativePath([MarshalAs(UnmanagedType.LPWStr)] string pszPathRel, int dwReserved);\n\n                /// <summary>Attempts to find the target of a Shell link, even if it has been moved or renamed</summary>\n                void Resolve(IntPtr hwnd, SLR_FLAGS fFlags);\n\n                /// <summary>Sets the path and file name of a Shell link object</summary>\n                void SetPath([MarshalAs(UnmanagedType.LPWStr)] string pszFile);\n            }\n\n            [ComImport, Guid(\"0000010c-0000-0000-c000-000000000046\"),\n             InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]\n            internal interface IPersist\n            {\n                [PreserveSig]\n                void GetClassID(out Guid pClassID);\n            }\n\n            [ComImport, Guid(\"0000010b-0000-0000-C000-000000000046\"),\n             InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]\n            internal interface IPersistFile : IPersist\n            {\n                new void GetClassID(out Guid pClassID);\n\n                [PreserveSig]\n                int IsDirty();\n\n                [PreserveSig]\n                void Load([In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName, uint dwMode);\n\n                [PreserveSig]\n                void Save([In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName,\n                    [In, MarshalAs(UnmanagedType.Bool)] bool fRemember);\n\n                [PreserveSig]\n                void SaveCompleted([In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName);\n\n                [PreserveSig]\n                void GetCurFile([In, MarshalAs(UnmanagedType.LPWStr)] string ppszFileName);\n            }\n\n            // CLSID_ShellLink from ShlGuid.h \n            [\n                ComImport,\n                Guid(\"00021401-0000-0000-C000-000000000046\")\n            ]\n            internal class ShellLink\n            {\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/KlocTools/YesNoAsk.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing Klocman.Localising;\nusing Klocman.Properties;\n\nnamespace Klocman\n{\n    public enum YesNoAsk\n    {\n        [LocalisedName(typeof (Localisation), nameof(Localisation.Enums_YesNoAsk_Ask))] Ask = 0,\n        [LocalisedName(typeof (Localisation), nameof(Localisation.Yes))] Yes,\n        [LocalisedName(typeof (Localisation), nameof(Localisation.No))] No\n    }\n}"
  },
  {
    "path": "source/Licence.licenseheader",
    "content": "﻿extensions: designer.cs generated.cs\r\nextensions: .cs .cpp .h\r\n/*\r\n    Copyright (c) 2026 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nextensions: .aspx .ascx\r\n<%-- \r\n\tCopyright (c) 2026 Marcin Szeniak (https://github.com/Klocman/)\r\n\tApache License Version 2.0\r\n--%>\r\nextensions:  .xml .config .xsd\r\n<!--\r\n\tCopyright (c) 2026 Marcin Szeniak (https://github.com/Klocman/)\r\n\tApache License Version 2.0\r\n-->"
  },
  {
    "path": "source/NBug_custom/Core/Reporting/BugReport.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"BugReport.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.IO;\nusing System.Xml.Serialization;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Reporting.MiniDump;\nusing NBug.Core.UI;\nusing NBug.Core.Util;\nusing NBug.Core.Util.Logging;\nusing NBug.Core.Util.Serialization;\nusing NBug.Core.Util.Storage;\n\nnamespace NBug.Core.Reporting\n{\n    internal class BugReport\n    {\n        /// <summary>\n        ///     First parameters is the serializable exception object that is about to be processed, second parameter is any custom\n        ///     data\n        ///     object that the user wants to include in the report.\n        /// </summary>\n        internal static event Action<Exception, Report> ProcessingException;\n\n        internal ExecutionFlow Report(Exception exception, ExceptionThread exceptionThread)\n        {\n            try\n            {\n                Logger.Trace(\"Starting to generate a bug report for the exception.\");\n                var serializableException = new SerializableException(exception);\n                var report = new Report(serializableException);\n\n                var handler = ProcessingException;\n                if (handler != null)\n                {\n                    Logger.Trace(\"Notifying the user before handling the exception.\");\n\n                    // Allowing user to add any custom information to the report\n                    handler(exception, report);\n                }\n\n                var uiDialogResult = UISelector.DisplayBugReportUI(exceptionThread, serializableException, report);\n                if (uiDialogResult.Report == SendReport.Send)\n                {\n                    CreateReportZip(serializableException, report);\n                }\n\n                return uiDialogResult.Execution;\n            }\n            catch (Exception ex)\n            {\n                Logger.Error(\n                    \"An exception occurred during bug report generation process. See the inner exception for details.\",\n                    ex);\n                return ExecutionFlow.BreakExecution; // Since an internal exception occured\n            }\n        }\n        \n        private void AddAdditionalFiles(ZipStorer zipStorer)\n        {\n            foreach (var mask in Settings.AdditionalReportFiles)\n            {\n                // Join before spliting because the mask may have some folders inside it\n                var fullPath = Path.Combine(Settings.NBugDirectory, mask);\n                var dir = Path.GetDirectoryName(fullPath);\n                var file = Path.GetFileName(fullPath);\n\n                if (!Directory.Exists(dir))\n                {\n                    continue;\n                }\n\n                if (file.Contains(\"*\") || file.Contains(\"?\"))\n                {\n                    foreach (var item in Directory.GetFiles(dir!, file))\n                    {\n                        AddToZip(zipStorer, Settings.NBugDirectory, item);\n                    }\n                }\n                else\n                {\n                    AddToZip(zipStorer, Settings.NBugDirectory, fullPath);\n                }\n            }\n        }\n        \n        private void AddToZip(ZipStorer zipStorer, string basePath, string path)\n        {\n            path = Path.GetFullPath(path);\n\n            // If this is not inside basePath, lets change the basePath so at least some directories are kept\n            if (!path.StartsWith(basePath))\n            {\n                basePath = Path.GetDirectoryName(path);\n            }\n\n            if (Directory.Exists(path))\n            {\n                foreach (var file in Directory.GetFiles(path))\n                {\n                    AddToZip(zipStorer, basePath, file);\n                }\n\n                foreach (var dir in Directory.GetDirectories(path))\n                {\n                    AddToZip(zipStorer, basePath, dir);\n                }\n            }\n            else if (File.Exists(path))\n            {\n                var nameInZip = path.Substring(basePath.Length);\n                if (nameInZip.StartsWith(\"\\\\\") || nameInZip.StartsWith(\"/\"))\n                {\n                    nameInZip = nameInZip.Substring(1);\n                }\n\n                nameInZip = Path.Combine(\"files\", nameInZip);\n\n                zipStorer.AddFile(ZipStorer.Compression.Deflate, path, nameInZip, string.Empty);\n            }\n        }\n\n        private void CreateReportZip(SerializableException serializableException, Report report)\n        {\n            // Test if it has NOT been more than x many days since entry assembly was last modified)\n            if (Settings.StopReportingAfter < 0\n                ||\n                File.GetLastWriteTime(Settings.EntryAssembly.Location)\n                    .AddDays(Settings.StopReportingAfter)\n                    .CompareTo(DateTime.Now) > 0)\n            {\n                // Test if there is already more than enough queued report files\n                if (Settings.MaxQueuedReports < 0 || Storer.GetReportCount() < Settings.MaxQueuedReports)\n                {\n                    var reportFileName = \"Exception_\" + DateTime.UtcNow.ToFileTime() + \".zip\";\n                    var minidumpFilePath = Path.Combine(\n                        Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),\n                        \"Exception_MiniDump_\" + DateTime.UtcNow.ToFileTime() + \".mdmp\");\n\n                    using (var storer = new Storer())\n                    using (var zipStorer = ZipStorer.Create(storer.CreateReportFile(reportFileName), string.Empty))\n                    using (var stream = new MemoryStream())\n                    {\n                        // Store the exception\n                        var serializer = XmlSerializer.FromTypes(new[] {typeof (SerializableException)})[0];\n                        //var serializer = new XmlSerializer(typeof(SerializableException));\n                        serializer.Serialize(stream, serializableException);\n                        stream.Position = 0;\n                        zipStorer.AddStream(ZipStorer.Compression.Deflate, StoredItemFile.Exception, stream,\n                            DateTime.UtcNow, string.Empty);\n\n                        // Store the report\n                        stream.SetLength(0);\n\n                        try\n                        {\n                            serializer = report.CustomInfo != null\n                                ? new XmlSerializer(typeof (Report), new[] {report.CustomInfo.GetType()})\n                                : new XmlSerializer(typeof (Report));\n\n                            serializer.Serialize(stream, report);\n                        }\n                        catch (Exception exception)\n                        {\n                            Logger.Error(\n                                string.Format(\n                                    \"The given custom info of type [{0}] cannot be serialized. Make sure that given type and inner types are XML serializable.\",\n                                    report.CustomInfo.GetType()),\n                                exception);\n                            report.CustomInfo = null;\n                            serializer = new XmlSerializer(typeof (Report));\n                            serializer.Serialize(stream, report);\n                        }\n\n                        stream.Position = 0;\n                        zipStorer.AddStream(ZipStorer.Compression.Deflate, StoredItemFile.Report, stream,\n                            DateTime.UtcNow, string.Empty);\n\n                        // Add the memory minidump to the report file (only if configured so)\n                        if (DumpWriter.Write(minidumpFilePath))\n                        {\n                            zipStorer.AddFile(ZipStorer.Compression.Deflate, minidumpFilePath, StoredItemFile.MiniDump,\n                                string.Empty);\n                            File.Delete(minidumpFilePath);\n                        }\n\n                        // Add any user supplied files in the report (if any)\n                        if (Settings.AdditionalReportFiles.Count != 0)\n                        {\n                            AddAdditionalFiles(zipStorer);\n                        }\n                    }\n\n                    Logger.Trace(\n                        \"Created a new report file. Currently the number of report files queued to be send is: \" +\n                        Storer.GetReportCount());\n                }\n                else\n                {\n                    Logger.Trace(\n                        \"Current report count is at its limit as per 'Settings.MaxQueuedReports (\" +\n                        Settings.MaxQueuedReports\n                        + \")' setting: Skipping bug report generation.\");\n                }\n            }\n            else\n            {\n                Logger.Trace(\n                    \"As per setting 'Settings.StopReportingAfter(\" + Settings.StopReportingAfter\n                    +\n                    \")', bug reporting feature was enabled for a certain amount of time which has now expired: Bug reporting is now disabled.\");\n                \n                if (Storer.GetReportCount() > 0)\n                {\n                    Logger.Trace(\n                        \"As per setting 'Settings.StopReportingAfter(\" + Settings.StopReportingAfter\n                        +\n                        \")', bug reporting feature was enabled for a certain amount of time which has now expired: Truncating all expired bug reports.\");\n                    Storer.TruncateReportFiles(0);\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Reporting/Feedback.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Feedback.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Logging;\n\nnamespace NBug.Core.Reporting\n{\n    internal class Feedback\n    {\n        private Report report;\n\n        internal Feedback()\n        {\n            try\n            {\n                report = new Report(null);\n            }\n            catch (Exception exception)\n            {\n                Logger.Error(\n                    \"An exception occurred while sending a user feedback. See the inner exception for details.\",\n                    exception);\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Reporting/Info/AssemblyInfo.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"AssemblyInfo.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Reporting.Info\n{\n    public class AssemblyInfo\n    {\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Reporting/Info/ConfigurationInfo.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"ConfigurationInfo.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Reporting.Info\n{\n    public class ConfigurationInfo\n    {\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Reporting/Info/GeneralInfo.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"GeneralInfo.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Diagnostics;\nusing System.Globalization;\nusing System.Reflection;\nusing NBug.Core.Util.Serialization;\n\nnamespace NBug.Core.Reporting.Info\n{\n    [Serializable]\n    public class GeneralInfo\n    {\n        /// <summary>\n        ///     Initializes a new instance of the <see cref=\"GeneralInfo\" /> class. This is the default constructor provided for\n        ///     XML\n        ///     serialization and de-serialization.\n        /// </summary>\n        public GeneralInfo()\n        {\n        }\n\n        internal GeneralInfo(SerializableException serializableException)\n        {\n            // this.HostApplication = Settings.EntryAssembly.GetName().Name; // Does not get the extensions of the file!\n            HostApplication = Settings.EntryAssembly.GetLoadedModules()[0].Name;\n\n            // this.HostApplicationVersion = Settings.EntryAssembly.GetName().Version.ToString(); // Gets AssemblyVersion not AssemblyFileVersion\n            HostApplicationVersion = NBugVersion = FileVersionInfo.GetVersionInfo(Settings.EntryAssembly.Location).FileVersion;\n\n            // this.NBugVersion = System.Reflection.Assembly.GetCallingAssembly().GetName().Version.ToString(); // Gets AssemblyVersion not AssemblyFileVersion\n            NBugVersion = FileVersionInfo.GetVersionInfo(Assembly.GetCallingAssembly().Location).FileVersion;\n\n            CLRVersion = Environment.Version.ToString();\n\n            DateTime = System.DateTime.UtcNow.ToString(CultureInfo.InvariantCulture);\n\n            if (serializableException != null)\n            {\n                ExceptionType = serializableException.Type;\n\n                if (!string.IsNullOrEmpty(serializableException.TargetSite))\n                {\n                    TargetSite = serializableException.TargetSite;\n                }\n                else if (serializableException.InnerException != null &&\n                         !string.IsNullOrEmpty(serializableException.InnerException.TargetSite))\n                {\n                    TargetSite = serializableException.InnerException.TargetSite;\n                }\n\n                ExceptionMessage = serializableException.Message;\n            }\n        }\n\n        public string CLRVersion { get; set; }\n        public string DateTime { get; set; }\n        public string ExceptionMessage { get; set; }\n        public string ExceptionType { get; set; }\n        public string HostApplication { get; set; }\n\n        /// <summary>\n        ///     Gets or sets AssemblyFileVersion of host assembly.\n        /// </summary>\n        public string HostApplicationVersion { get; set; }\n\n        /// <summary>\n        ///     Gets or sets AssemblyFileVersion of NBug.dll assembly.\n        /// </summary>\n        public string NBugVersion { get; set; }\n\n        public string TargetSite { get; set; }\n        public string UserDescription { get; set; }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Reporting/Info/Report.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Report.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.IO;\nusing System.Xml;\nusing System.Xml.Linq;\nusing System.Xml.Serialization;\nusing NBug.Core.Util.Serialization;\n\nnamespace NBug.Core.Reporting.Info\n{\n    [Serializable]\n    public class Report\n    {\n        /// <summary>\n        ///     Initializes a new instance of the <see cref=\"Report\" /> class to be filled with information later on.\n        /// </summary>\n        public Report()\n        {\n        }\n\n        internal Report(SerializableException serializableException)\n        {\n            GeneralInfo = new GeneralInfo(serializableException);\n        }\n\n        /// <summary>\n        ///     Gets or sets a custom object property to store user supplied information in the bug report. You need to handle\n        ///     <see cref=\"NBug.Settings.ProcessingException\" /> event to fill this property with required information.\n        /// </summary>\n        public object CustomInfo { get; set; }\n\n        /// <summary>\n        ///     Gets or sets the general information about the exception and the system to be presented in the bug report.\n        /// </summary>\n        public GeneralInfo GeneralInfo { get; set; }\n\n        /*/// <summary>\n\t\t/// Gets or sets a custom object property to store user supplied information in the bug report. You need to handle\n\t\t/// <see cref=\"NBug.Settings.ProcessingException\"/> event to fill this property with required information.\n\t\t/// </summary>\n\t\tpublic object StaticInfo { get; set; }*/\n\n        public override string ToString()\n        {\n            var serializer = CustomInfo != null\n                ? new XmlSerializer(typeof (Report), new[] {CustomInfo.GetType()})\n                : new XmlSerializer(typeof (Report));\n            using (var stream = new MemoryStream())\n            {\n                stream.SetLength(0);\n                serializer.Serialize(stream, this);\n                stream.Position = 0;\n                var doc = XDocument.Load(XmlReader.Create(stream));\n                return doc.Root.ToString();\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Reporting/Info/SystemInfo.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"SystemInfo.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Reporting.Info\n{\n    public class SystemInfo\n    {\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Reporting/MiniDump/DumpTypeFlag.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"DumpTypeFlag.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\n\nnamespace NBug.Core.Reporting.MiniDump\n{\n    [Flags]\n    internal enum DumpTypeFlag : uint\n    {\n        // From dbghelp.h:\n        Normal = 0x00000000,\n\n        WithDataSegs = 0x00000001,\n\n        WithFullMemory = 0x00000002,\n\n        WithHandleData = 0x00000004,\n\n        FilterMemory = 0x00000008,\n\n        ScanMemory = 0x00000010,\n\n        WithUnloadedModules = 0x00000020,\n\n        WithIndirectlyReferencedMemory = 0x00000040,\n\n        FilterModulePaths = 0x00000080,\n\n        WithProcessThreadData = 0x00000100,\n\n        WithPrivateReadWriteMemory = 0x00000200,\n\n        WithoutOptionalData = 0x00000400,\n\n        WithFullMemoryInfo = 0x00000800,\n\n        WithThreadInfo = 0x00001000,\n\n        WithCodeSegs = 0x00002000,\n\n        WithoutAuxiliaryState = 0x00004000,\n\n        WithFullAuxiliaryState = 0x00008000,\n\n        WithPrivateWriteCopyMemory = 0x00010000,\n\n        IgnoreInaccessibleMemory = 0x00020000,\n\n        ValidTypeFlags = 0x0003ffff\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Reporting/MiniDump/DumpWriter.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"DumpWriter.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Runtime.InteropServices;\nusing NBug.Core.Util.Exceptions;\nusing NBug.Core.Util.Logging;\nusing NBug.Enums;\n\nnamespace NBug.Core.Reporting.MiniDump\n{\n    /// <summary>\n    ///     Sample usage:\n    ///     <code>\n    ///  using (FileStream fs = new FileStream(\"minidump.mdmp\", FileMode.Create, FileAccess.ReadWrite, FileShare.Write))\n    ///  {\n    /// \t\tDumpWriter.Write(fs.SafeFileHandle, DumpTypeFlag.WithDataSegs | DumpTypeFlag.WithHandleData);\n    ///  }\n    ///  </code>\n    /// </summary>\n    /// <remarks>Code snippet is from http://blogs.msdn.com/b/dondu/archive/2010/10/24/writing-minidumps-in-c.aspx </remarks>\n    internal static class DumpWriter\n    {\n        /// <summary>\n        ///     Creates a new memory dump and writes it to the specified file (only if Settings.MiniDumpType != MiniDumpType.None).\n        /// </summary>\n        /// <param name=\"minidumpFilePath\">The minidump file path. Overwritten if exists.</param>\n        /// <returns>True if Settings.MiniDumpType settings is set to anything else then MiniDumpType.None.</returns>\n        internal static bool Write(string minidumpFilePath)\n        {\n            if (Settings.MiniDumpType != MiniDumpType.None)\n            {\n                bool created;\n\n                using (var fileStream = new FileStream(minidumpFilePath, FileMode.Create, FileAccess.Write))\n                {\n                    created = Write(fileStream.SafeFileHandle, Settings.MiniDumpType.ToString());\n                }\n\n                if (created)\n                {\n                    return true;\n                }\n                File.Delete(minidumpFilePath);\n                return false;\n            }\n            return false;\n        }\n\n        [DllImport(\"kernel32.dll\", EntryPoint = \"GetCurrentThreadId\", ExactSpelling = true, SetLastError = true)]\n        private static extern uint GetCurrentThreadId();\n\n        [DllImport(\"dbghelp.dll\", EntryPoint = \"MiniDumpWriteDump\", CallingConvention = CallingConvention.StdCall,\n            CharSet = CharSet.Unicode,\n            ExactSpelling = true, SetLastError = true)]\n        private static extern bool MiniDumpWriteDump(\n            IntPtr hProcess,\n            uint processId,\n            SafeHandle hFile,\n            uint dumpType,\n            ref MiniDumpExceptionInformation expParam,\n            IntPtr userStreamParam,\n            IntPtr callbackParam);\n\n        // Overload supporting MiniDumpExceptionInformation == NULL\n        [DllImport(\"dbghelp.dll\", EntryPoint = \"MiniDumpWriteDump\", CallingConvention = CallingConvention.StdCall,\n            CharSet = CharSet.Unicode,\n            ExactSpelling = true, SetLastError = true)]\n        private static extern bool MiniDumpWriteDump(\n            IntPtr hProcess, uint processId, SafeHandle hFile, uint dumpType, IntPtr expParam, IntPtr userStreamParam,\n            IntPtr callbackParam);\n\n        private static bool Write(SafeHandle fileHandle, string dumpType)\n        {\n            if (dumpType.ToLower() == MiniDumpType.Tiny.ToString().ToLower())\n            {\n                return Write(fileHandle, DumpTypeFlag.WithIndirectlyReferencedMemory | DumpTypeFlag.ScanMemory);\n            }\n            if (dumpType.ToLower() == MiniDumpType.Normal.ToString().ToLower())\n            {\n                return Write(fileHandle, DumpTypeFlag.Normal);\n            }\n            if (dumpType.ToLower() == MiniDumpType.Full.ToString().ToLower())\n            {\n                return Write(fileHandle, DumpTypeFlag.WithFullMemory);\n            }\n            throw NBugConfigurationException.Create(() => Settings.MiniDumpType,\n                \"Parameter supplied for settings property is invalid.\");\n        }\n\n        private static bool Write(SafeHandle fileHandle, DumpTypeFlag dumpTypeFlag)\n        {\n            var currentProcess = Process.GetCurrentProcess();\n            var currentProcessHandle = currentProcess.Handle;\n            var currentProcessId = (uint) currentProcess.Id;\n            MiniDumpExceptionInformation exp;\n            exp.ThreadId = GetCurrentThreadId();\n            exp.ClientPointers = false;\n            exp.ExceptionPointers = IntPtr.Zero;\n            exp.ExceptionPointers = Marshal.GetExceptionPointers();\n\n            var bRet = false;\n\n            try\n            {\n                if (exp.ExceptionPointers == IntPtr.Zero)\n                {\n                    bRet = MiniDumpWriteDump(currentProcessHandle, currentProcessId, fileHandle, (uint) dumpTypeFlag,\n                        IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);\n                }\n                else\n                {\n                    bRet = MiniDumpWriteDump(currentProcessHandle, currentProcessId, fileHandle, (uint) dumpTypeFlag,\n                        ref exp, IntPtr.Zero, IntPtr.Zero);\n                }\n            }\n            catch (DllNotFoundException)\n            {\n                Logger.Warning(\n                    \"dbghelp.dll was not found inside the application folder, the system path or SDK folder. Minidump was not generated. If you are not planning on using the minidump feature, you can disable it with the Configurator tool.\");\n                return false;\n            }\n\n            if (!bRet)\n            {\n                Logger.Error(\n                    \"Cannot write the minidump. MiniDumpWriteDump (dbghelp.dll) function returned error code: \" +\n                    Marshal.GetLastWin32Error());\n                return false;\n            }\n            return true;\n        }\n\n        /* typedef struct _MINIDUMP_EXCEPTION_INFORMATION {\n\t\t *    DWORD ThreadId;\n\t\t *    PEXCEPTION_POINTERS ExceptionPointers;\n\t\t *    BOOL ClientPointers;\n\t\t * } MINIDUMP_EXCEPTION_INFORMATION, *PMINIDUMP_EXCEPTION_INFORMATION;\n\t\t */\n\n        [StructLayout(LayoutKind.Sequential, Pack = 4)] // Pack=4 is important! So it works also for x64!\n        private struct MiniDumpExceptionInformation\n        {\n            public uint ThreadId;\n\n            public IntPtr ExceptionPointers;\n\n            [MarshalAs(UnmanagedType.Bool)] public bool ClientPointers;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Custom/Custom.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"CustomFactory.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System.IO;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Serialization;\nusing NBug.Events;\n\nnamespace NBug.Core.Submission.Custom\n{\n    public class CustomFactory : IProtocolFactory\n    {\n        public string SupportedType\n        {\n            get { return \"Custom\"; }\n        }\n\n        public IProtocol FromConnectionString(string connectionString)\n        {\n            return new Custom(connectionString);\n        }\n    }\n\n    public class Custom : ProtocolBase\n    {\n        public Custom(string connectionString)\n            : base(connectionString)\n        {\n        }\n\n        public Custom()\n        {\n        }\n\n        public override bool Send(string fileName, Stream file, Report report, SerializableException exception)\n        {\n            if (Settings.CustomSubmissionHandle == null)\n                return false;\n\n            var e = new CustomSubmissionEventArgs(fileName, file, report, exception);\n            Settings.CustomSubmissionHandle.DynamicInvoke(this, e);\n            return e.Result;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Database/Ado.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Ado.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Submission.Database\n{\n    internal class Ado\n    {\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Database/MsSql.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"MsSql.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Submission.Database\n{\n    internal class MsSql\n    {\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Database/MySql.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"MySql.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Submission.Database\n{\n    internal class MySql\n    {\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Dispatcher.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Dispatcher.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.IO;\nusing System.Threading;\nusing System.Xml.Serialization;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Logging;\nusing NBug.Core.Util.Serialization;\nusing NBug.Core.Util.Storage;\n\nnamespace NBug.Core.Submission\n{\n    //using System.Threading.Tasks;\n\n    internal class Dispatcher\n    {\n        /// <summary>\n        ///     Initializes a new instance of the Dispatcher class to send queued reports.\n        /// </summary>\n        /// <param name=\"isAsynchronous\">\n        ///     Decides whether to start the dispatching process asynchronously on a background thread.\n        /// </param>\n        internal Dispatcher(bool isAsynchronous)\n        {\n            // Test if it has NOT been more than x many days since entry assembly was last modified)\n            // This is the exact verifier code in the BugReport.cs of CreateReportZip() function\n            if (Settings.StopReportingAfter < 0\n                ||\n                File.GetLastWriteTime(Settings.EntryAssembly.Location)\n                    .AddDays(Settings.StopReportingAfter)\n                    .CompareTo(DateTime.Now) > 0)\n            {\n                if (isAsynchronous)\n                {\n                    // Log and swallow NBug's internal exceptions by default\n                    new Thread(Dispatch).Start();\n                    /*\n\t\t\t\t\tTask.Factory.StartNew(this.Dispatch)\n\t\t\t\t\t    .ContinueWith(\n\t\t\t\t\t\t    t => Logger.Error(\"An exception occurred while dispatching bug report. Check the inner exception for details\", t.Exception), \n\t\t\t\t\t\t    TaskContinuationOptions.OnlyOnFaulted);*/\n                }\n                else\n                {\n                    try\n                    {\n                        Dispatch();\n                    }\n                    catch (Exception exception)\n                    {\n                        Logger.Error(\n                            \"An exception occurred while dispatching bug report. Check the inner exception for details.\",\n                            exception);\n                    }\n                }\n            }\n        }\n\n        private void Dispatch()\n        {\n            // Make sure that we are not interfering with the crucial startup work);\n            if (!Settings.RemoveThreadSleep)\n            {\n                Thread.Sleep(Settings.SleepBeforeSend*1000);\n            }\n\n            // Truncate extra report files and try to send the first one in the queue\n            Storer.TruncateReportFiles();\n\n            // Now go through configured destinations and submit to all automatically\n            for (var hasReport = true; hasReport;)\n            {\n                using (var storer = new Storer())\n                using (var stream = storer.GetFirstReportFile())\n                {\n                    if (stream != null)\n                    {\n                        // Extract crash/exception report data from the zip file. Delete the zip file if no data can be retrieved (i.e. corrupt file)\n                        ExceptionData exceptionData;\n                        try\n                        {\n                            exceptionData = GetDataFromZip(stream);\n                        }\n                        catch (Exception exception)\n                        {\n                            storer.DeleteCurrentReportFile();\n                            Logger.Error(\n                                \"An exception occurred while extraction report data from zip file. Check the inner exception for details.\",\n                                exception);\n                            return;\n                        }\n\n                        // Now submit the report file to all configured bug report submission targets\n                        if (EnumerateDestinations(stream, exceptionData) == false)\n                        {\n                            break;\n                        }\n\n                        // Delete the file after it was sent\n                        storer.DeleteCurrentReportFile();\n                    }\n                    else\n                    {\n                        hasReport = false;\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Enumerate all protocols to see if they are properly configured and send using the ones that are configured\n        ///     as many times as necessary.\n        /// </summary>\n        /// <param name=\"reportFile\">The file to read the report from.</param>\n        /// <returns>\n        ///     Returns <see langword=\"true\" /> if the sending was successful.\n        ///     Returns <see langword=\"true\" /> if the report was submitted to at least one destination.\n        /// </returns>\n        private bool EnumerateDestinations(Stream reportFile, ExceptionData exceptionData)\n        {\n            var sentSuccessfullyAtLeastOnce = false;\n            var fileName = Path.GetFileName(((FileStream) reportFile).Name);\n            foreach (var destination in Settings.Destinations)\n            {\n                try\n                {\n                    Logger.Trace(string.Format(\"Submitting bug report via {0}.\", destination.GetType().Name));\n                    if (destination.Send(fileName, reportFile, exceptionData.Report, exceptionData.Exception))\n                    {\n                        sentSuccessfullyAtLeastOnce = true;\n                    }\n                }\n                catch (Exception exception)\n                {\n                    Logger.Error(\n                        string.Format(\n                            \"An exception occurred while submitting bug report with {0}. Check the inner exception for details.\",\n                            destination.GetType().Name),\n                        exception);\n                }\n            }\n\n            return sentSuccessfullyAtLeastOnce;\n        }\n\n        private ExceptionData GetDataFromZip(Stream stream)\n        {\n            var results = new ExceptionData();\n            var zipStorer = ZipStorer.Open(stream, FileAccess.Read);\n            using (Stream zipItemStream = new MemoryStream())\n            {\n                var zipDirectory = zipStorer.ReadCentralDir();\n                foreach (var entry in zipDirectory)\n                {\n                    if (Path.GetFileName(entry.FilenameInZip) == StoredItemFile.Exception)\n                    {\n                        zipItemStream.SetLength(0);\n                        zipStorer.ExtractFile(entry, zipItemStream);\n                        zipItemStream.Position = 0;\n                        var deserializer = XmlSerializer.FromTypes(new[] {typeof (SerializableException)})[0];\n                        //var deserializer = new XmlSerializer(typeof(SerializableException));\n                        results.Exception = (SerializableException) deserializer.Deserialize(zipItemStream);\n                        zipItemStream.Position = 0;\n                    }\n                    else if (Path.GetFileName(entry.FilenameInZip) == StoredItemFile.Report)\n                    {\n                        zipItemStream.SetLength(0);\n                        zipStorer.ExtractFile(entry, zipItemStream);\n                        zipItemStream.Position = 0;\n                        var deserializer = XmlSerializer.FromTypes(new[] {typeof (Report)})[0];\n                        //var deserializer = new XmlSerializer(typeof(Report));\n                        results.Report = (Report) deserializer.Deserialize(zipItemStream);\n                        zipItemStream.Position = 0;\n                    }\n                }\n            }\n\n            return results;\n        }\n\n        private class ExceptionData\n        {\n            public SerializableException Exception { get; set; }\n            public Report Report { get; set; }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/IProtocol.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"IProtocol.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System.IO;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Serialization;\n\nnamespace NBug.Core.Submission\n{\n    /// <summary>\n    ///     Implement this to support sending data to a specific location.\n    ///     We recommend you base your implementation on ProtocolBase.\n    /// </summary>\n    public interface IProtocol\n    {\n        /// <summary>\n        ///     Connection string suitable for serialization.\n        /// </summary>\n        string ConnectionString { get; }\n\n        /// <summary>\n        ///     Send the report file to the destination.\n        /// </summary>\n        /// <param name=\"fileName\">Name of the file (e.g. \"Exception_12345.zip\")</param>\n        /// <param name=\"file\">File stream</param>\n        /// <param name=\"report\">Report</param>\n        /// <param name=\"exception\"></param>\n        /// <returns>True if report was sent successfully.</returns>\n        bool Send(string fileName, Stream file, Report report, SerializableException exception);\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/IProtocolFactory.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"IProtocolFactory.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Submission\n{\n    /// <summary>\n    ///     The protocol factory creates an IProtocol instance.\n    ///     This interface is to get around the fact that the IProtocol interface\n    ///     cannot be guaranteed to contain a constructor that takes a connection\n    ///     string. At the same time, we allow the protocol implementation to supply\n    ///     the name of its connection string Type parameter.\n    ///     The protocol factory is only used for protocols that originate as connection\n    ///     strings in a configuration file.\n    ///     Note! Your implementation of this class MUST HAVE a parameterless constructor.\n    /// </summary>\n    public interface IProtocolFactory\n    {\n        string SupportedType { get; }\n        IProtocol FromConnectionString(string connectionString);\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/ProtocolBase.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"ProtocolBase.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.IO;\nusing System.Linq;\nusing System.Reflection;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util;\nusing NBug.Core.Util.Serialization;\n\nnamespace NBug.Core.Submission\n{\n    public abstract class ProtocolBase : IProtocol\n    {\n        /// <summary>\n        ///     Initializes a new instance of the ProtocolBase class to be extended by derived types.\n        /// </summary>\n        /// <param name=\"connectionString\">Connection string to be parsed.</param>\n        protected ProtocolBase(string connectionString)\n        {\n            var fields = ConnectionStringParser.Parse(connectionString);\n            var properties = GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);\n\n            foreach (\n                var property in\n                    properties.Where(property => property.Name != \"Type\" && fields.ContainsKey(property.Name)))\n            {\n                if (property.PropertyType == typeof (bool))\n                {\n                    property.SetValue(this, Convert.ToBoolean(fields[property.Name].Trim()), null);\n                }\n                else if (property.PropertyType == typeof (int))\n                {\n                    property.SetValue(this, Convert.ToInt32(fields[property.Name].Trim()), null);\n                }\n                else if (property.PropertyType.BaseType == typeof (Enum))\n                {\n                    property.SetValue(this, Enum.Parse(property.PropertyType, fields[property.Name]), null);\n                }\n                else\n                {\n                    property.SetValue(this, fields[property.Name], null);\n                }\n            }\n        }\n\n        protected ProtocolBase()\n        {\n        }\n\n        /// <summary>\n        ///     Gets serialized representation of the connection string.\n        /// </summary>\n        public string ConnectionString\n        {\n            get\n            {\n                var connectionString = string.Format(\"Type={0};\", GetType().Name);\n                var properties =\n                    GetType()\n                        .GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty |\n                                       BindingFlags.GetProperty)\n                        .Where(p => p.Name != \"ConnectionString\");\n\n                foreach (var property in properties)\n                {\n                    var prop = property.GetValue(this, null);\n                    if (prop != null)\n                    {\n                        var val = prop.ToString();\n\n                        if (!string.IsNullOrEmpty(val))\n                        {\n                            // Escape = and ; characters\n                            connectionString += string.Format(\n                                \"{0}={1};\", property.Name.Replace(\";\", @\"\\;\").Replace(\"=\", @\"\\=\"),\n                                val.Replace(\";\", @\"\\;\").Replace(\"=\", @\"\\=\"));\n                        }\n                    }\n                }\n\n                return connectionString;\n            }\n        }\n\n        // Password field may contain the illegal ';' character so it is always the last field and isolated\n        public abstract bool Send(string fileName, Stream file, Report report, SerializableException exception);\n\n        internal string GetSettingsPasswordField(string connectionString)\n        {\n            return connectionString.Substring(connectionString.ToLower().IndexOf(\"password=\", StringComparison.Ordinal) + 9)\n                .Substring(0, connectionString.Substring(connectionString.ToLower().IndexOf(\"password=\", StringComparison.Ordinal) + 9).Length - 1);\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Protocols.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Protocols.cs\" company=\"NBusy Project\">\n//   Copyright (c) 2010 - 2011 Teoman Soygul. Licensed under LGPLv3 (http://www.gnu.org/licenses/lgpl.html).\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Submission\n{\n\t// Actually enum names should be singular words!\n\tpublic enum Protocols\n\t{\n\t\tMail,\n\t\tRedmine,\n\t\tBugNET,\n\t\tFTP,\n\t\tHTTP,\n\t\tAzureBlobStorage\n\t}\n}\n"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/BugNet.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"BugNet.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System.IO;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Serialization;\n\nnamespace NBug.Core.Submission.Tracker\n{\n    internal class BugNet : ProtocolBase\n    {\n        internal BugNet(string connectionString)\n            : base(connectionString)\n        {\n        }\n\n        internal BugNet()\n        {\n        }\n\n        public override bool Send(string fileName, Stream file, Report report, SerializableException exception)\n        {\n            //HttpWebRequest request; //suppress unused Warning\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Bugzilla.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Bugzilla.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Submission.Tracker\n{\n    internal class Bugzilla\n    {\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/GitHub.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"GitHub.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Submission.Tracker\n{\n    internal class GitHub\n    {\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/GoogleCode.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"GoogleCode.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Submission.Tracker\n{\n    internal class GoogleCode\n    {\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Mantis/AccountData.cs",
    "content": "using System;\nusing System.Diagnostics;\nusing System.Xml.Serialization;\n\nnamespace NBug.Core.Submission.Tracker.Mantis\n{\n    [Serializable, DebuggerStepThrough, SoapType(Namespace = \"http://futureware.biz/mantisconnect\")]\n    public class AccountData\n    {\n        private string emailField;\n        private string idField;\n        private string nameField;\n        private string real_nameField;\n\n        [SoapElement(DataType = \"integer\")]\n        public string id\n        {\n            get { return idField; }\n            set { idField = value; }\n        }\n\n        public string name\n        {\n            get { return nameField; }\n            set { nameField = value; }\n        }\n\n        public string real_name\n        {\n            get { return real_nameField; }\n            set { real_nameField = value; }\n        }\n\n        public string email\n        {\n            get { return emailField; }\n            set { emailField = value; }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Mantis/AttachmentData.cs",
    "content": "using System;\nusing System.Xml.Serialization;\n\nnamespace NBug.Core.Submission.Tracker.Mantis\n{\n    [Serializable, SoapType(Namespace = \"http://futureware.biz/mantisconnect\")]\n    public class AttachmentData\n    {\n        private string content_typeField;\n        private DateTime date_submittedField;\n        private bool date_submittedFieldSpecified;\n        private string download_urlField;\n        private string filenameField;\n        private string idField;\n        private string sizeField;\n        private string user_idField;\n\n        [SoapElement(DataType = \"integer\")]\n        public string id\n        {\n            get { return idField; }\n            set { idField = value; }\n        }\n\n        public string filename\n        {\n            get { return filenameField; }\n            set { filenameField = value; }\n        }\n\n        [SoapElement(DataType = \"integer\")]\n        public string size\n        {\n            get { return sizeField; }\n            set { sizeField = value; }\n        }\n\n        public string content_type\n        {\n            get { return content_typeField; }\n            set { content_typeField = value; }\n        }\n\n        public DateTime date_submitted\n        {\n            get { return date_submittedField; }\n            set { date_submittedField = value; }\n        }\n\n        [SoapIgnore]\n        public bool date_submittedSpecified\n        {\n            get { return date_submittedFieldSpecified; }\n            set { date_submittedFieldSpecified = value; }\n        }\n\n        [SoapElement(DataType = \"anyURI\")]\n        public string download_url\n        {\n            get { return download_urlField; }\n            set { download_urlField = value; }\n        }\n\n        [SoapElement(DataType = \"integer\")]\n        public string user_id\n        {\n            get { return user_idField; }\n            set { user_idField = value; }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Mantis/CustomFieldValueForIssueData.cs",
    "content": "using System;\nusing System.Xml.Serialization;\n\nnamespace NBug.Core.Submission.Tracker.Mantis\n{\n    [Serializable, SoapType(Namespace = \"http://futureware.biz/mantisconnect\")]\n    public class CustomFieldValueForIssueData\n    {\n        private ObjectRef fieldField;\n        private string valueField;\n\n        public ObjectRef field\n        {\n            get { return fieldField; }\n            set { fieldField = value; }\n        }\n\n        public string value\n        {\n            get { return valueField; }\n            set { valueField = value; }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Mantis/IssueData.cs",
    "content": "using System;\nusing System.Xml.Serialization;\n\nnamespace NBug.Core.Submission.Tracker.Mantis\n{\n    [Serializable, SoapType(Namespace = \"http://futureware.biz/mantisconnect\")]\n    public class IssueData\n    {\n        private string additional_informationField;\n        private AttachmentData[] attachmentsField;\n        private string buildField;\n        private string categoryField;\n        private CustomFieldValueForIssueData[] custom_fieldsField;\n        private DateTime date_submittedField;\n        private bool date_submittedFieldSpecified;\n        private string descriptionField;\n        private DateTime due_dateField;\n        private bool due_dateFieldSpecified;\n        private ObjectRef etaField;\n        private string fixed_in_versionField;\n        private AccountData handlerField;\n        private string idField;\n        private DateTime last_updatedField;\n        private bool last_updatedFieldSpecified;\n        private AccountData[] monitorsField;\n        private IssueNoteData[] notesField;\n        private string os_buildField;\n        private string osField;\n        private string platformField;\n        private ObjectRef priorityField;\n        private ObjectRef projectField;\n        private ObjectRef projectionField;\n        private RelationshipData[] relationshipsField;\n        private AccountData reporterField;\n        private ObjectRef reproducibilityField;\n        private ObjectRef resolutionField;\n        private ObjectRef severityField;\n        private string sponsorship_totalField;\n        private ObjectRef statusField;\n        private string steps_to_reproduceField;\n        private bool stickyField;\n        private bool stickyFieldSpecified;\n        private string summaryField;\n        private ObjectRef[] tagsField;\n        private string target_versionField;\n        private string versionField;\n        private ObjectRef view_stateField;\n\n        [SoapElement(DataType = \"integer\")]\n        public string id\n        {\n            get { return idField; }\n            set { idField = value; }\n        }\n\n        public ObjectRef view_state\n        {\n            get { return view_stateField; }\n            set { view_stateField = value; }\n        }\n\n        public DateTime last_updated\n        {\n            get { return last_updatedField; }\n            set { last_updatedField = value; }\n        }\n\n        [SoapIgnore]\n        public bool last_updatedSpecified\n        {\n            get { return last_updatedFieldSpecified; }\n            set { last_updatedFieldSpecified = value; }\n        }\n\n        public ObjectRef project\n        {\n            get { return projectField; }\n            set { projectField = value; }\n        }\n\n        public string category\n        {\n            get { return categoryField; }\n            set { categoryField = value; }\n        }\n\n        public ObjectRef priority\n        {\n            get { return priorityField; }\n            set { priorityField = value; }\n        }\n\n        public ObjectRef severity\n        {\n            get { return severityField; }\n            set { severityField = value; }\n        }\n\n        public ObjectRef status\n        {\n            get { return statusField; }\n            set { statusField = value; }\n        }\n\n        public AccountData reporter\n        {\n            get { return reporterField; }\n            set { reporterField = value; }\n        }\n\n        public string summary\n        {\n            get { return summaryField; }\n            set { summaryField = value; }\n        }\n\n        public string version\n        {\n            get { return versionField; }\n            set { versionField = value; }\n        }\n\n        public string build\n        {\n            get { return buildField; }\n            set { buildField = value; }\n        }\n\n        public string platform\n        {\n            get { return platformField; }\n            set { platformField = value; }\n        }\n\n        public string os\n        {\n            get { return osField; }\n            set { osField = value; }\n        }\n\n        public string os_build\n        {\n            get { return os_buildField; }\n            set { os_buildField = value; }\n        }\n\n        public ObjectRef reproducibility\n        {\n            get { return reproducibilityField; }\n            set { reproducibilityField = value; }\n        }\n\n        public DateTime date_submitted\n        {\n            get { return date_submittedField; }\n            set { date_submittedField = value; }\n        }\n\n        [SoapIgnore]\n        public bool date_submittedSpecified\n        {\n            get { return date_submittedFieldSpecified; }\n            set { date_submittedFieldSpecified = value; }\n        }\n\n        [SoapElement(DataType = \"integer\")]\n        public string sponsorship_total\n        {\n            get { return sponsorship_totalField; }\n            set { sponsorship_totalField = value; }\n        }\n\n        public AccountData handler\n        {\n            get { return handlerField; }\n            set { handlerField = value; }\n        }\n\n        public ObjectRef projection\n        {\n            get { return projectionField; }\n            set { projectionField = value; }\n        }\n\n        public ObjectRef eta\n        {\n            get { return etaField; }\n            set { etaField = value; }\n        }\n\n        public ObjectRef resolution\n        {\n            get { return resolutionField; }\n            set { resolutionField = value; }\n        }\n\n        public string fixed_in_version\n        {\n            get { return fixed_in_versionField; }\n            set { fixed_in_versionField = value; }\n        }\n\n        public string target_version\n        {\n            get { return target_versionField; }\n            set { target_versionField = value; }\n        }\n\n        public string description\n        {\n            get { return descriptionField; }\n            set { descriptionField = value; }\n        }\n\n        public string steps_to_reproduce\n        {\n            get { return steps_to_reproduceField; }\n            set { steps_to_reproduceField = value; }\n        }\n\n        public string additional_information\n        {\n            get { return additional_informationField; }\n            set { additional_informationField = value; }\n        }\n\n        public AttachmentData[] attachments\n        {\n            get { return attachmentsField; }\n            set { attachmentsField = value; }\n        }\n\n        public RelationshipData[] relationships\n        {\n            get { return relationshipsField; }\n            set { relationshipsField = value; }\n        }\n\n        public IssueNoteData[] notes\n        {\n            get { return notesField; }\n            set { notesField = value; }\n        }\n\n        public CustomFieldValueForIssueData[] custom_fields\n        {\n            get { return custom_fieldsField; }\n            set { custom_fieldsField = value; }\n        }\n\n        public DateTime due_date\n        {\n            get { return due_dateField; }\n            set { due_dateField = value; }\n        }\n\n        [SoapIgnore]\n        public bool due_dateSpecified\n        {\n            get { return due_dateFieldSpecified; }\n            set { due_dateFieldSpecified = value; }\n        }\n\n        public AccountData[] monitors\n        {\n            get { return monitorsField; }\n            set { monitorsField = value; }\n        }\n\n        public bool sticky\n        {\n            get { return stickyField; }\n            set { stickyField = value; }\n        }\n\n        [SoapIgnore]\n        public bool stickySpecified\n        {\n            get { return stickyFieldSpecified; }\n            set { stickyFieldSpecified = value; }\n        }\n\n        public ObjectRef[] tags\n        {\n            get { return tagsField; }\n            set { tagsField = value; }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Mantis/IssueNoteData.cs",
    "content": "using System;\nusing System.Xml.Serialization;\n\nnamespace NBug.Core.Submission.Tracker.Mantis\n{\n    [Serializable, SoapType(Namespace = \"http://futureware.biz/mantisconnect\")]\n    public class IssueNoteData\n    {\n        private DateTime date_submittedField;\n        private bool date_submittedFieldSpecified;\n        private string idField;\n        private DateTime last_modifiedField;\n        private bool last_modifiedFieldSpecified;\n        private string note_attrField;\n        private string note_typeField;\n        private AccountData reporterField;\n        private string textField;\n        private string time_trackingField;\n        private ObjectRef view_stateField;\n\n        [SoapElement(DataType = \"integer\")]\n        public string id\n        {\n            get { return idField; }\n            set { idField = value; }\n        }\n\n        public AccountData reporter\n        {\n            get { return reporterField; }\n            set { reporterField = value; }\n        }\n\n        public string text\n        {\n            get { return textField; }\n            set { textField = value; }\n        }\n\n        public ObjectRef view_state\n        {\n            get { return view_stateField; }\n            set { view_stateField = value; }\n        }\n\n        public DateTime date_submitted\n        {\n            get { return date_submittedField; }\n            set { date_submittedField = value; }\n        }\n\n        [SoapIgnore]\n        public bool date_submittedSpecified\n        {\n            get { return date_submittedFieldSpecified; }\n            set { date_submittedFieldSpecified = value; }\n        }\n\n        public DateTime last_modified\n        {\n            get { return last_modifiedField; }\n            set { last_modifiedField = value; }\n        }\n\n        [SoapIgnore]\n        public bool last_modifiedSpecified\n        {\n            get { return last_modifiedFieldSpecified; }\n            set { last_modifiedFieldSpecified = value; }\n        }\n\n        [SoapElement(DataType = \"integer\")]\n        public string time_tracking\n        {\n            get { return time_trackingField; }\n            set { time_trackingField = value; }\n        }\n\n        [SoapElement(DataType = \"integer\")]\n        public string note_type\n        {\n            get { return note_typeField; }\n            set { note_typeField = value; }\n        }\n\n        public string note_attr\n        {\n            get { return note_attrField; }\n            set { note_attrField = value; }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Mantis/ObjectRef.cs",
    "content": "using System;\nusing System.Xml.Serialization;\n\nnamespace NBug.Core.Submission.Tracker.Mantis\n{\n    [Serializable, SoapType(Namespace = \"http://futureware.biz/mantisconnect\")]\n    public class ObjectRef\n    {\n        private string idField;\n        private string nameField;\n\n        [SoapElement(DataType = \"integer\")]\n        public string id\n        {\n            get { return idField; }\n            set { idField = value; }\n        }\n\n        public string name\n        {\n            get { return nameField; }\n            set { nameField = value; }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Mantis/ProjectVersionData.cs",
    "content": "﻿using System;\nusing System.Xml.Serialization;\n\nnamespace NBug.Core.Submission.Tracker.Mantis\n{\n    [Serializable,\n     SoapType(Namespace = \"http://futureware.biz/mantisconnect\")]\n    public class ProjectVersionData\n    {\n        private DateTime date_orderField;\n        private bool date_orderFieldSpecified;\n        private string descriptionField;\n        private string idField;\n        private string nameField;\n        private bool obsoleteField;\n        private bool obsoleteFieldSpecified;\n        private string project_idField;\n        private bool releasedField;\n        private bool releasedFieldSpecified;\n\n        [SoapElement(DataType = \"integer\")]\n        public string id\n        {\n            get { return idField; }\n            set { idField = value; }\n        }\n\n        public string name\n        {\n            get { return nameField; }\n            set { nameField = value; }\n        }\n\n        [SoapElement(DataType = \"integer\")]\n        public string project_id\n        {\n            get { return project_idField; }\n            set { project_idField = value; }\n        }\n\n        public DateTime date_order\n        {\n            get { return date_orderField; }\n            set { date_orderField = value; }\n        }\n\n        [SoapIgnore]\n        public bool date_orderSpecified\n        {\n            get { return date_orderFieldSpecified; }\n            set { date_orderFieldSpecified = value; }\n        }\n\n        public string description\n        {\n            get { return descriptionField; }\n            set { descriptionField = value; }\n        }\n\n        public bool released\n        {\n            get { return releasedField; }\n            set { releasedField = value; }\n        }\n\n        [SoapIgnore]\n        public bool releasedSpecified\n        {\n            get { return releasedFieldSpecified; }\n            set { releasedFieldSpecified = value; }\n        }\n\n        public bool obsolete\n        {\n            get { return obsoleteField; }\n            set { obsoleteField = value; }\n        }\n\n        [SoapIgnore]\n        public bool obsoleteSpecified\n        {\n            get { return obsoleteFieldSpecified; }\n            set { obsoleteFieldSpecified = value; }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Mantis/RelationshipData.cs",
    "content": "using System;\nusing System.Xml.Serialization;\n\nnamespace NBug.Core.Submission.Tracker.Mantis\n{\n    [Serializable, SoapType(Namespace = \"http://futureware.biz/mantisconnect\")]\n    public class RelationshipData\n    {\n        private string idField;\n        private string target_idField;\n        private ObjectRef typeField;\n\n        [SoapElement(DataType = \"integer\")]\n        public string id\n        {\n            get { return idField; }\n            set { idField = value; }\n        }\n\n        public ObjectRef type\n        {\n            get { return typeField; }\n            set { typeField = value; }\n        }\n\n        [SoapElement(DataType = \"integer\")]\n        public string target_id\n        {\n            get { return target_idField; }\n            set { target_idField = value; }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Mantis/UserData.cs",
    "content": "using System;\nusing System.Xml.Serialization;\n\nnamespace NBug.Core.Submission.Tracker.Mantis\n{\n    [Serializable, SoapType(Namespace = \"http://futureware.biz/mantisconnect\")]\n    public class UserData\n    {\n        private string access_levelField;\n        private AccountData account_dataField;\n        private string timezoneField;\n\n        public AccountData account_data\n        {\n            get { return account_dataField; }\n            set { account_dataField = value; }\n        }\n\n        [SoapElement(DataType = \"integer\")]\n        public string access_level\n        {\n            get { return access_levelField; }\n            set { access_levelField = value; }\n        }\n\n        public string timezone\n        {\n            get { return timezoneField; }\n            set { timezoneField = value; }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Mantis/nusoap.php.patch",
    "content": "--- nusoap.php.org\t2013-11-12 14:04:05.000000000 +0100\n+++ nusoap.php\t2013-11-08 21:13:00.000000000 +0100\n@@ -148,8 +148,8 @@\n \t* @var      string\n \t* @access   public\n \t*/\n-    var $soap_defencoding = 'ISO-8859-1';\n-\t//var $soap_defencoding = 'UTF-8';\n+    //var $soap_defencoding = 'ISO-8859-1';\n+\tvar $soap_defencoding = 'UTF-8';\n \n \t/**\n \t* namespaces in an array of prefix => uri\n@@ -1052,24 +1052,24 @@\n \t* @return\tstring\tThe serialization of the fault instance.\n \t* @access   public\n \t*/\n-\tfunction serialize(){\n-\t\t$ns_string = '';\n-\t\tforeach($this->namespaces as $k => $v){\n-\t\t\t$ns_string .= \"\\n  xmlns:$k=\\\"$v\\\"\";\n-\t\t}\n-\t\t$return_msg =\n-\t\t\t'<?xml version=\"1.0\" encoding=\"'.$this->soap_defencoding.'\"?>'.\n-\t\t\t'<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"'.$ns_string.\">\\n\".\n-\t\t\t\t'<SOAP-ENV:Body>'.\n-\t\t\t\t'<SOAP-ENV:Fault>'.\n-\t\t\t\t\t$this->serialize_val($this->faultcode, 'faultcode').\n-\t\t\t\t\t$this->serialize_val($this->faultactor, 'faultactor').\n-\t\t\t\t\t$this->serialize_val($this->faultstring, 'faultstring').\n-\t\t\t\t\t$this->serialize_val($this->faultdetail, 'detail').\n-\t\t\t\t'</SOAP-ENV:Fault>'.\n-\t\t\t\t'</SOAP-ENV:Body>'.\n-\t\t\t'</SOAP-ENV:Envelope>';\n-\t\treturn $return_msg;\n+\tfunction serialize() {\n+      $ns_string = '';\n+      foreach( $this->namespaces as $k => $v ) {\n+        $ns_string .= \"\\n  xmlns:$k=\\\"$v\\\"\";\n+      }\n+      $return_msg =\n+        '<?xml version=\"1.0\" encoding=\"' . $this->soap_defencoding . '\"?>' .\n+        '<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"' . $ns_string . \">\\n\" .\n+          '<SOAP-ENV:Body>' .\n+            '<SOAP-ENV:Fault>' .\n+              $this->serialize_val( $this->faultcode,   'faultcode'   ) .\n+              $this->serialize_val( $this->faultstring, 'faultstring' ) .\n+              $this->serialize_val( $this->faultactor,  'faultactor'  ) .\n+              $this->serialize_val( $this->faultdetail, 'detail'      ) .\n+            '</SOAP-ENV:Fault>' .\n+          '</SOAP-ENV:Body>' .\n+        '</SOAP-ENV:Envelope>';\n+      return $return_msg;\n \t}\n }\n \n"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Redmine.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Redmine.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.IO;\nusing System.Net;\nusing System.Text;\nusing System.Xml.Linq;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Logging;\nusing NBug.Core.Util.Serialization;\n\nnamespace NBug.Core.Submission.Tracker\n{\n    public class RedmineFactory : IProtocolFactory\n    {\n        public string SupportedType\n        {\n            get { return \"Redmine\"; }\n        }\n\n        public IProtocol FromConnectionString(string connectionString)\n        {\n            return new Redmine(connectionString);\n        }\n    }\n\n    public class Redmine : ProtocolBase\n    {\n        public Redmine(string connectionString)\n            : base(connectionString)\n        {\n        }\n\n        public Redmine()\n        {\n        }\n\n        public string ApiKey { get; set; }\n        public string AssignedToId { get; set; }\n        public string AuthorId { get; set; }\n        // Connection string format (single line)\n        // Warning: There should be no semicolon (;) or equals sign (=) used in any field except for password\n        // Note: Url should be a full url with a trailing slash (/), like: http://....../\n\n        /* Type=Redmine;\n\t\t * Url=http://tracker.mydomain.com/;\n\t\t * ProjectId=myproject;\n\t\t * TrackerId=;\n\t\t * PriorityId=;\n\t\t * CategoryId=;\n\t\t * CustomSubject=;\n\t\t * FixedVersionId=;\n\t\t * AssignedToId=;\n\t\t * ParentId=;\n\t\t * StatusId=;\n\t\t * AuthorId=;\n\t\t * ApiKey=myapikey;\n\t\t */\n        public string CategoryId { get; set; }\n        public string CustomSubject { get; set; }\n        public string FixedVersionId { get; set; }\n        public string ParentId { get; set; }\n        public string PriorityId { get; set; }\n        public string ProjectId { get; set; }\n        public string StatusId { get; set; }\n        public string TrackerId { get; set; }\n        public string Url { get; set; }\n\n        public override bool Send(string fileName, Stream file, Report report, SerializableException exception)\n        {\n            HttpWebRequest request;\n\n            if (string.IsNullOrEmpty(ApiKey))\n            {\n                request = (HttpWebRequest) WebRequest.Create(new Uri(Url + \"issues.xml\"));\n            }\n            else\n            {\n                request = (HttpWebRequest) WebRequest.Create(new Uri(Url + \"issues.xml?key=\" + ApiKey));\n            }\n\n            // Used POST as per http://www.redmine.org/projects/redmine/wiki/Rest_Issues#Creating-an-issue\n            request.Method = \"POST\";\n            request.ContentType = \"application/xml\";\n            request.Accept = \"application/xml\";\n            request.ServicePoint.Expect100Continue = false;\n                // Patch #11593. Some servers seem to have problem accepting the Expect: 100-continue header\n\n            // Redmine v1.1.1 REST XML templates (* indicate required fields)\n            // Note: <*_id> fields always ask for numeric values\n\n            /* <?xml version=\"1.0\"?>\n\t\t\t * <issue>\n\t\t\t *   *<subject>Example</subject>\n\t\t\t *   *<project_id>myproject</project_id>\n\t\t\t *   <tracker_id></tracker_id> <!-- Bug=1/Issue=2/etc. -->\n\t\t\t *   <priority_id></priority_id> <!-- Normal=4 -->\n\t\t\t *   <category_id></category_id>\n\t\t\t *   <description></description>\n\t\t\t *   <fixed_version_id></fixed_version_id>\n\t\t\t *   <assigned_to_id></assigned_to_id>\n\t\t\t *   <parent_id></parent_id>\n\t\t\t *   <status_id></status_id>\n\t\t\t *   <author_id></author_id>\n\t\t\t *   <start_date></start_date>\n\t\t\t *   <due_date></due_date>\n\t\t\t *   <done_ratio></done_ratio>\n\t\t\t *   <estimated_hours></estimated_hours>\n\t\t\t *   <created_on></created_on>\n\t\t\t *   <updated_on></updated_on>\n\t\t\t * </issue>\n\t\t\t */\n            var subject = \"NBug: \" + report.GeneralInfo.HostApplication + \" (\" +\n                          report.GeneralInfo.HostApplicationVersion + \"): \"\n                          + report.GeneralInfo.ExceptionType + \" @ \" + report.GeneralInfo.TargetSite;\n\n            var description = \"<pre>\" + report + Environment.NewLine + Environment.NewLine + exception + \"</pre>\";\n\n            var redmineRequestXml = new XElement(\"issue\", new XElement(\"project_id\", ProjectId));\n\n            if (!string.IsNullOrEmpty(TrackerId))\n            {\n                redmineRequestXml.Add(new XElement(\"tracker_id\", TrackerId));\n            }\n\n            if (!string.IsNullOrEmpty(PriorityId))\n            {\n                redmineRequestXml.Add(new XElement(\"priority_id\", PriorityId));\n            }\n\n            if (!string.IsNullOrEmpty(CategoryId))\n            {\n                redmineRequestXml.Add(new XElement(\"category_id\", CategoryId));\n            }\n\n            // Add the subject and make sure that it is less than 255 characters or Redmine trows an HTTP error code 422 : Unprocessable Entity\n            if (!string.IsNullOrEmpty(CustomSubject))\n            {\n                var sbj = CustomSubject + \" : \" + subject;\n                redmineRequestXml.Add(sbj.Length > 254\n                    ? new XElement(\"subject\", sbj.Substring(0, 254))\n                    : new XElement(\"subject\", sbj));\n            }\n            else\n            {\n                redmineRequestXml.Add(subject.Length > 254\n                    ? new XElement(\"subject\", subject.Substring(0, 254))\n                    : new XElement(\"subject\", subject));\n            }\n\n            if (!string.IsNullOrEmpty(description))\n            {\n                redmineRequestXml.Add(new XElement(\"description\", description));\n            }\n\n            if (!string.IsNullOrEmpty(FixedVersionId))\n            {\n                redmineRequestXml.Add(new XElement(\"fixed_version_id\", FixedVersionId));\n            }\n\n            if (!string.IsNullOrEmpty(AssignedToId))\n            {\n                redmineRequestXml.Add(new XElement(\"assigned_to_id\", AssignedToId));\n            }\n\n            if (!string.IsNullOrEmpty(ParentId))\n            {\n                redmineRequestXml.Add(new XElement(\"parent_id\", ParentId));\n            }\n\n            if (!string.IsNullOrEmpty(StatusId))\n            {\n                redmineRequestXml.Add(new XElement(\"status_id\", StatusId));\n            }\n\n            if (!string.IsNullOrEmpty(AuthorId))\n            {\n                redmineRequestXml.Add(new XElement(\"author_id\", AuthorId));\n            }\n\n            var bytes = Encoding.UTF8.GetBytes(redmineRequestXml.ToString());\n\n            request.ContentLength = bytes.Length;\n\n            using (var putStream = request.GetRequestStream())\n            {\n                putStream.Write(bytes, 0, bytes.Length);\n            }\n\n            // Log the response from Redmine RESTful service\n            using (var response = (HttpWebResponse) request.GetResponse())\n            using (var reader = new StreamReader(response.GetResponseStream()))\n            {\n                Logger.Info(\"Response from Redmine Issue Tracker: \" + reader.ReadToEnd());\n            }\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Tracker/Trac.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Trac.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System.IO;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Serialization;\n\nnamespace NBug.Core.Submission.Tracker\n{\n    internal class Trac : ProtocolBase\n    {\n        protected Trac(string connectionString)\n            : base(connectionString)\n        {\n        }\n\n        // Connection string format (single line)\n        // Warning: There should be no semicolon (;) or equals sign (=) used in any field except for password\n        // Warning: No fild value value should contain the phrase 'password='\n        // Warning: XML-RPC.NET assembly should be referenced\n        // Note: Url should be a full url without a trailing slash (/), like: http://......\n        // Note: Anononymous URL is: http://trac-hacks.org/xmlrpc and authenticated URL is: http://trac-hacks.org/login/xmlrpc\n\n        /* Type=Trac;\n\t\t * Url=http://tracker.mydomain.com/xmlrpc;\n\t\t */\n\n        public override bool Send(string fileName, Stream file, Report report, SerializableException exception)\n        {\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Web/Ftp.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Ftp.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.IO;\nusing System.Net;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Logging;\nusing NBug.Core.Util.Serialization;\n\nnamespace NBug.Core.Submission.Web\n{\n    public static class CompatibilityExtensions\n    {\n        // Only useful before .NET 4\n        public static void CopyTo(this Stream input, Stream output)\n        {\n            var buffer = new byte[16*1024]; // Fairly arbitrary size\n            int bytesRead;\n\n            while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)\n            {\n                output.Write(buffer, 0, bytesRead);\n            }\n        }\n    }\n\n    internal class FtpFactory : IProtocolFactory\n    {\n        public string SupportedType\n        {\n            get { return \"Ftp\"; }\n        }\n\n        public IProtocol FromConnectionString(string connectionString)\n        {\n            return new Ftp(connectionString);\n        }\n    }\n\n    public class Ftp : ProtocolBase\n    {\n        public Ftp(string connectionString)\n            : base(connectionString)\n        {\n        }\n\n        public Ftp()\n        {\n        }\n\n        public string Password { get; set; }\n        // Connection string format (single line)\n        // Warning: There should be no semicolon (;) or equals sign (=) used in any field except for password.\n        // Warning: No fild value value should contain the phrase 'password='\n        // Note: Url should be a full url with a trailing slash (/), like: ftp://....../\n\n        /* Type=FTP;\n\t\t * Url=ftp://tracker.mydomain.com/myproject/;\n\t\t * UseSSL=false;\n\t\t * Username=;\n\t\t * Password=;\n\t\t */\n        public string Url { get; set; }\n        public string Username { get; set; }\n        public string Usessl { get; set; }\n\n        public override bool Send(string fileName, Stream file, Report report, SerializableException exception)\n        {\n            var request = (FtpWebRequest) WebRequest.Create(new Uri(Url + fileName));\n\n            if (!string.IsNullOrEmpty(Usessl))\n            {\n                request.EnableSsl = Convert.ToBoolean(Usessl.ToLower());\n            }\n\n            if (!string.IsNullOrEmpty(Username))\n            {\n                request.Credentials = new NetworkCredential(Username, Password);\n            }\n\n            request.Method = WebRequestMethods.Ftp.UploadFile;\n            request.Proxy = null;\n                // Otherwise we'll get an exception: The requested FTP command is not supported when a HTTP proxy is used\n\n            using (var requestStream = request.GetRequestStream())\n            {\n                file.Position = 0;\n                file.CopyTo(requestStream);\n                file.Position = 0;\n            }\n\n            using (var response = (FtpWebResponse) request.GetResponse())\n            using (var reader = new StreamReader(response.GetResponseStream() ?? throw new InvalidOperationException(\"GetResponseStream null\")))\n            {\n                var responseString = reader.ReadToEnd(); // Null on successful transfer\n                if (!string.IsNullOrEmpty(responseString))\n                {\n                    Logger.Info(\"Response from FTP server: \" + responseString);\n                }\n\n                Logger.Info(\"Response from FTP server: \" + response.StatusDescription);\n            }\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Web/Http.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Http.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System.IO;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Logging;\nusing NBug.Core.Util.Serialization;\nusing NBug.Core.Util.Web;\n\nnamespace NBug.Core.Submission.Web\n{\n    public class HttpFactory : IProtocolFactory\n    {\n        public string SupportedType\n        {\n            get { return \"Http\"; }\n        }\n\n        public IProtocol FromConnectionString(string connectionString)\n        {\n            return new Http(connectionString);\n        }\n    }\n\n    public class Http : ProtocolBase\n    {\n        public Http(string connectionString)\n            : base(connectionString)\n        {\n        }\n\n        public Http()\n        {\n        }\n\n        // Connection string format (single line)\n        // Warning: There should be no semicolon (;) or equals sign (=) used in any field.\n        // Note: Url should be a full url with a trailing slash (/) or file extension (i.e. .php), like: http://....../ -or- http://....../upload.php\n\n        /* Type=Http;\n\t\t * Url=http://tracker.mydomain.com/myproject/upload.php;\n\t\t */\n        public string Url { get; set; }\n\n        public override bool Send(string fileName, Stream file, Report report, SerializableException exception)\n        {\n            // Advanced method with ability to post variables along with file (do not forget to urlencode the query parameters)\n            // http://www.codeproject.com/KB/cs/uploadfileex.aspx\n            // http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data\n            // http://stackoverflow.com/questions/767790/how-do-i-upload-an-image-file-using-a-post-request-in-c\n            // http://netomatix.com/HttpPostData.aspx\n\n            /* upload.php file my look like the one below (note that uploaded files are not statically named in this case script may need modification)\n\t\t\t *\n\t\t\t * <?php\n\t\t\t * $uploadDir = 'Upload/';\n\t\t\t * $uploadFile = $uploadDir . basename($_FILES['file']['name']);\n\t\t\t * if (is_uploaded_file($_FILES['file']['tmp_name']))\n\t\t\t * {\n\t\t\t *     echo \"File \". $_FILES['file']['name'] .\" is successfully uploaded!\\r\\n\";\n\t\t\t *     if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile))\n\t\t\t *     {\n\t\t\t *         echo \"File is successfully stored! \";\n\t\t\t *     }\n\t\t\t *     else print_r($_FILES);\n\t\t\t * }\n\t\t\t * else\n\t\t\t * {\n\t\t\t *     echo \"Upload Failed!\";\n\t\t\t *     print_r($_FILES);\n\t\t\t * }\n\t\t\t * ?>\n\t\t\t */\n            file.Position = 0;\n\n            var response = StreamUpload.Create().Add(file, \"file\", fileName, \"application/zip\").Upload(Url).Response();\n\n            Logger.Info(\"Response from HTTP server: \" + response);\n            file.Position = 0;\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Submission/Web/Mail.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Mail.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.IO;\nusing System.Net;\nusing System.Net.Mail;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Logging;\nusing NBug.Core.Util.Serialization;\n\nnamespace NBug.Core.Submission.Web\n{\n    public class MailFactory : IProtocolFactory\n    {\n        public string SupportedType\n        {\n            get { return \"Mail\"; }\n        }\n\n        public IProtocol FromConnectionString(string connectionString)\n        {\n            return new Mail(connectionString);\n        }\n    }\n\n    public class Mail : ProtocolBase\n    {\n        public Mail(string connectionString)\n            : base(connectionString)\n        {\n        }\n\n        public Mail()\n        {\n            Port = 25;\n        }\n\n        // Connection string format (single line)\n        // Warning: There should be no semicolon (;) or equals sign (=) used in any field except for password.\n        // Warning: Password filed should be the last item.\n        // Warning: No fild value value should contain the phrase 'password='\n        // Note: Normal ports may be 25/26 depending on the host!\n        // Note: Priority can be High, Normal, Low (Normal by default).\n\n        /* Type=Mail;\n\t\t * From=my_tracker@gmail.com;\n\t\t * FromName=NBug Error Reporter;\n\t\t * To=bugtracker@mycompany.com,someone@dummy.com,my_tracker@gmail.com;\n\t\t * Cc=;\n\t\t * Bcc=;\n\t\t * ReplyTo=;\n\t\t * UseAttachment=false;\n\t\t * CustomSubject=;\n\t\t * CustomBody=;\n\t\t * SmtpServer=smtp.gmail.com;\n\t\t * UseSSL=yes;\n\t\t * Port=465;\n\t\t * Priority=;\n\t\t * UseAuthentication=yes;\n\t\t * Username=my_tracker@gmail.com;\n\t\t * Password=mypassword;\n\t\t */\n        public string Bcc { get; set; }\n        public string Cc { get; set; }\n        public string CustomBody { get; set; }\n        public string CustomSubject { get; set; }\n        public string From { get; set; }\n        public string FromName { get; set; }\n        public string Password { get; set; }\n        public int Port { get; set; }\n        public MailPriority Priority { get; set; }\n        public string ReplyTo { get; set; }\n        public string SmtpServer { get; set; }\n        public string To { get; set; }\n        public bool UseAttachment { get; set; }\n        public bool UseAuthentication { get; set; }\n        public bool UseSsl { get; set; }\n        public string Username { get; set; }\n\n        public override bool Send(string fileName, Stream file, Report report, SerializableException exception)\n        {\n            if (string.IsNullOrEmpty(From) || string.IsNullOrEmpty(To))\n            {\n                return false;\n            }\n\n            if (string.IsNullOrEmpty(ReplyTo))\n            {\n                ReplyTo = From;\n            }\n\n            if (Port <= 0)\n            {\n                Port = UseSsl ? 465 : 25;\n            }\n\n            if (!UseAttachment)\n            {\n                UseAttachment = false;\n            }\n\n            // Make sure that we can use authentication even with emtpy username and password\n            if (!string.IsNullOrEmpty(Username))\n            {\n                UseAuthentication = true;\n            }\n\n            //using (var smtpClient = new SmtpClient())\n            using (var message = new MailMessage())\n            {\n                var smtpClient = new SmtpClient();\n                if (!string.IsNullOrEmpty(SmtpServer))\n                {\n                    smtpClient.Host = SmtpServer;\n                }\n\n                smtpClient.Port = Port;\n\n                if (UseAuthentication)\n                {\n                    smtpClient.Credentials = new NetworkCredential(Username, Password);\n                }\n\n                smtpClient.EnableSsl = UseSsl;\n\n                if (!string.IsNullOrEmpty(Cc))\n                {\n                    message.CC.Add(Cc);\n                }\n\n                if (!string.IsNullOrEmpty(Bcc))\n                {\n                    message.Bcc.Add(Bcc);\n                }\n\n                message.Priority = Priority;\n\n                message.To.Add(To);\n                message.ReplyToList.Add(new MailAddress(ReplyTo));\n                message.From = !string.IsNullOrEmpty(FromName) ? new MailAddress(From, FromName) : new MailAddress(From);\n\n                if (UseAttachment)\n                {\n                    file.Position = 0;\n                    message.Attachments.Add(new Attachment(file, fileName));\n                }\n\n                if (!string.IsNullOrEmpty(CustomSubject))\n                {\n                    message.Subject = CustomSubject;\n                }\n                else\n                {\n                    message.Subject = \"NBug: \" + report.GeneralInfo.HostApplication + \" (\" +\n                                      report.GeneralInfo.HostApplicationVersion + \"): \"\n                                      + report.GeneralInfo.ExceptionType + \" @ \" + report.GeneralInfo.TargetSite;\n                }\n\n                if (!string.IsNullOrEmpty(CustomBody))\n                {\n                    message.Body = CustomBody + Environment.NewLine + Environment.NewLine + report + Environment.NewLine +\n                                   Environment.NewLine + exception;\n                }\n                else\n                {\n                    message.Body = report + Environment.NewLine + Environment.NewLine + exception;\n                }\n\n                smtpClient.Send(message);\n                Logger.Trace(\"Submitted bug report email to: \" + To);\n\n                return true;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/Console/ConsoleUI.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"ConsoleUI.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Exceptions;\nusing NBug.Core.Util.Serialization;\nusing NBug.Enums;\n\nnamespace NBug.Core.UI.Console\n{\n    internal static class ConsoleUI\n    {\n        internal static UIDialogResult ShowDialog(UIMode uiMode, SerializableException exception, Report report)\n        {\n            if (uiMode == UIMode.Minimal)\n            {\n                // Do not interact with the user\n                System.Console.WriteLine(Environment.NewLine + Settings.Resources.UI_Console_Minimal_Message);\n                return new UIDialogResult(ExecutionFlow.BreakExecution, SendReport.Send);\n            }\n            if (uiMode == UIMode.Normal)\n            {\n                System.Console.WriteLine(Environment.NewLine + Settings.Resources.UI_Console_Normal_Message);\n                return new UIDialogResult(ExecutionFlow.BreakExecution, SendReport.Send);\n            }\n            if (uiMode == UIMode.Full)\n            {\n                System.Console.WriteLine(Environment.NewLine + Settings.Resources.UI_Console_Full_Message);\n                return new UIDialogResult(ExecutionFlow.BreakExecution, SendReport.Send);\n            }\n            throw NBugConfigurationException.Create(() => Settings.UIMode,\n                \"Parameter supplied for settings property is invalid.\");\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/Custom/CustomUI.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"CustomUI.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Exceptions;\nusing NBug.Core.Util.Serialization;\nusing NBug.Enums;\nusing NBug.Events;\n\nnamespace NBug.Core.UI.Custom\n{\n    /// <summary>\n    ///     This class is used to prevent statically referencing any WPF dlls from the UISelector.cs thus prevents\n    ///     any unnecessary assembly from getting loaded into the memory.\n    /// </summary>\n    internal static class CustomUI\n    {\n        internal static UIDialogResult ShowDialog(UIMode uiMode, SerializableException exception, Report report)\n        {\n            if (Settings.CustomUIHandle != null)\n            {\n                var e = new CustomUIEventArgs(uiMode, exception, report);\n                Settings.CustomUIHandle.DynamicInvoke(null, e);\n                return e.Result;\n            }\n            throw NBugConfigurationException.Create(() => Settings.UIMode,\n                \"Parameter supplied for settings property is invalid.\");\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/Developer/InternalExceptionViewer.Designer.cs",
    "content": "﻿namespace NBug.Core.UI.Developer\n{\n\tusing NBug.Core.UI.WinForms.Panels;\n\n\tpartial class InternalExceptionViewer\n\t{\n\t\t/// <summary>\n\t\t/// Required designer variable.\n\t\t/// </summary>\n\t\tprivate System.ComponentModel.IContainer components = null;\n\n\t\t/// <summary>\n\t\t/// Clean up any resources being used.\n\t\t/// </summary>\n\t\t/// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n\t\tprotected override void Dispose(bool disposing)\n\t\t{\n\t\t\tif (disposing && (components != null))\n\t\t\t{\n\t\t\t\tcomponents.Dispose();\n\t\t\t}\n\t\t\tbase.Dispose(disposing);\n\t\t}\n\n\t\t#region Windows Form Designer generated code\n\n\t\t/// <summary>\n\t\t/// Required method for Designer support - do not modify\n\t\t/// the contents of this method with the code editor.\n\t\t/// </summary>\n\t\tprivate void InitializeComponent()\n\t\t{\n\t\t\tthis.quitButton = new System.Windows.Forms.Button();\n\t\t\tthis.debugButton = new System.Windows.Forms.Button();\n\t\t\tthis.bugReportButton = new System.Windows.Forms.Button();\n\t\t\tthis.messageLabel = new System.Windows.Forms.Label();\n\t\t\tthis.topToolStrip = new System.Windows.Forms.ToolStrip();\n\t\t\tthis.documentationToolStripButton = new System.Windows.Forms.ToolStripButton();\n\t\t\tthis.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();\n\t\t\tthis.forumToolStripLabel = new System.Windows.Forms.ToolStripLabel();\n\t\t\tthis.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();\n\t\t\tthis.trackerToolStripLabel = new System.Windows.Forms.ToolStripLabel();\n\t\t\tthis.exceptionLabel = new System.Windows.Forms.Label();\n\t\t\tthis.exceptionTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.invalidSettingLabel = new System.Windows.Forms.Label();\n\t\t\tthis.invalidSettingTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.targetSiteTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.targetSiteLabel = new System.Windows.Forms.Label();\n\t\t\tthis.exceptionMessageTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.exceptionStackGroupBox = new System.Windows.Forms.GroupBox();\n\t\t\tthis.exceptionDetails = new NBug.Core.UI.WinForms.Panels.ExceptionDetails();\n\t\t\tthis.warningPictureBox = new System.Windows.Forms.PictureBox();\n\t\t\tthis.topToolStrip.SuspendLayout();\n\t\t\tthis.exceptionStackGroupBox.SuspendLayout();\n\t\t\t((System.ComponentModel.ISupportInitialize)(this.warningPictureBox)).BeginInit();\n\t\t\tthis.SuspendLayout();\n\t\t\t// \n\t\t\t// quitButton\n\t\t\t// \n            this.quitButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.quitButton.Location = new System.Drawing.Point(455, 511);\n\t\t\tthis.quitButton.Name = \"quitButton\";\n\t\t\tthis.quitButton.Size = new System.Drawing.Size(75, 23);\n\t\t\tthis.quitButton.TabIndex = 0;\n\t\t\tthis.quitButton.Text = \"&Quit\";\n\t\t\tthis.quitButton.UseVisualStyleBackColor = true;\n\t\t\tthis.quitButton.Click += new System.EventHandler(this.QuitButton_Click);\n\t\t\t// \n\t\t\t// debugButton\n\t\t\t// \n            this.debugButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.debugButton.Image = global::NBug.Properties.Resources.VS2010_16;\n\t\t\tthis.debugButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;\n\t\t\tthis.debugButton.Location = new System.Drawing.Point(364, 511);\n\t\t\tthis.debugButton.Name = \"debugButton\";\n\t\t\tthis.debugButton.Size = new System.Drawing.Size(85, 23);\n\t\t\tthis.debugButton.TabIndex = 1;\n\t\t\tthis.debugButton.Text = \"  &Debug\";\n\t\t\tthis.debugButton.UseVisualStyleBackColor = true;\n\t\t\tthis.debugButton.Click += new System.EventHandler(this.DebugButton_Click);\n\t\t\t// \n\t\t\t// bugReportButton\n\t\t\t// \n            this.bugReportButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.bugReportButton.Enabled = false;\n\t\t\tthis.bugReportButton.Image = global::NBug.Properties.Resources.Send;\n\t\t\tthis.bugReportButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;\n\t\t\tthis.bugReportButton.Location = new System.Drawing.Point(205, 511);\n\t\t\tthis.bugReportButton.Name = \"bugReportButton\";\n\t\t\tthis.bugReportButton.Size = new System.Drawing.Size(128, 23);\n\t\t\tthis.bugReportButton.TabIndex = 2;\n\t\t\tthis.bugReportButton.Text = \"    &Send Bug Report\";\n\t\t\tthis.bugReportButton.UseVisualStyleBackColor = true;\n\t\t\tthis.bugReportButton.Click += new System.EventHandler(this.BugReportButton_Click);\n\t\t\t// \n\t\t\t// messageLabel\n\t\t\t// \n\t\t\tthis.messageLabel.AutoSize = true;\n\t\t\tthis.messageLabel.Location = new System.Drawing.Point(56, 38);\n\t\t\tthis.messageLabel.MaximumSize = new System.Drawing.Size(465, 39);\n\t\t\tthis.messageLabel.MinimumSize = new System.Drawing.Size(465, 39);\n\t\t\tthis.messageLabel.Name = \"messageLabel\";\n\t\t\tthis.messageLabel.Size = new System.Drawing.Size(465, 39);\n\t\t\tthis.messageLabel.TabIndex = 3;\n\t\t\tthis.messageLabel.Text = \"A configuration or runtime exception has occured.\";\n\t\t\t// \n\t\t\t// topToolStrip\n\t\t\t// \n\t\t\tthis.topToolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;\n\t\t\tthis.topToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\n            this.documentationToolStripButton,\n            this.toolStripSeparator1,\n            this.forumToolStripLabel,\n            this.toolStripSeparator2,\n            this.trackerToolStripLabel});\n\t\t\tthis.topToolStrip.Location = new System.Drawing.Point(0, 0);\n\t\t\tthis.topToolStrip.Name = \"topToolStrip\";\n\t\t\tthis.topToolStrip.Size = new System.Drawing.Size(541, 25);\n\t\t\tthis.topToolStrip.TabIndex = 5;\n\t\t\t// \n\t\t\t// documentationToolStripButton\n\t\t\t// \n\t\t\tthis.documentationToolStripButton.Image = global::NBug.Properties.Resources.Help_16;\n\t\t\tthis.documentationToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;\n\t\t\tthis.documentationToolStripButton.Name = \"documentationToolStripButton\";\n            this.documentationToolStripButton.Size = new System.Drawing.Size(148, 22);\n\t\t\tthis.documentationToolStripButton.Tag = \"http://www.nbusy.com/projects/nbug/documentation\";\n\t\t\tthis.documentationToolStripButton.Text = \"Online &Documentation\";\n\t\t\tthis.documentationToolStripButton.Click += new System.EventHandler(this.DocumentationToolStripButton_Click);\n\t\t\t// \n\t\t\t// toolStripSeparator1\n\t\t\t// \n\t\t\tthis.toolStripSeparator1.Name = \"toolStripSeparator1\";\n\t\t\tthis.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);\n\t\t\t// \n\t\t\t// forumToolStripLabel\n\t\t\t// \n\t\t\tthis.forumToolStripLabel.Image = global::NBug.Properties.Resources.Forum_16;\n\t\t\tthis.forumToolStripLabel.IsLink = true;\n\t\t\tthis.forumToolStripLabel.Name = \"forumToolStripLabel\";\n            this.forumToolStripLabel.Size = new System.Drawing.Size(117, 22);\n\t\t\tthis.forumToolStripLabel.Tag = \"http://www.nbusy.com/forum/f11/\";\n\t\t\tthis.forumToolStripLabel.Text = \"Discussion Forum\";\n\t\t\tthis.forumToolStripLabel.Click += new System.EventHandler(this.ForumToolStripLabel_Click);\n\t\t\t// \n\t\t\t// toolStripSeparator2\n\t\t\t// \n\t\t\tthis.toolStripSeparator2.Name = \"toolStripSeparator2\";\n\t\t\tthis.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);\n\t\t\t// \n\t\t\t// trackerToolStripLabel\n\t\t\t// \n\t\t\tthis.trackerToolStripLabel.Image = global::NBug.Properties.Resources.Error_16;\n\t\t\tthis.trackerToolStripLabel.IsLink = true;\n\t\t\tthis.trackerToolStripLabel.Name = \"trackerToolStripLabel\";\n            this.trackerToolStripLabel.Size = new System.Drawing.Size(86, 22);\n\t\t\tthis.trackerToolStripLabel.Tag = \"http://www.nbusy.com/tracker/projects/nbug\";\n\t\t\tthis.trackerToolStripLabel.Text = \"Bug Tracker\";\n\t\t\tthis.trackerToolStripLabel.Click += new System.EventHandler(this.TrackerToolStripLabel_Click);\n\t\t\t// \n\t\t\t// exceptionLabel\n\t\t\t// \n\t\t\tthis.exceptionLabel.AutoSize = true;\n\t\t\tthis.exceptionLabel.Location = new System.Drawing.Point(11, 96);\n\t\t\tthis.exceptionLabel.Name = \"exceptionLabel\";\n\t\t\tthis.exceptionLabel.Size = new System.Drawing.Size(57, 13);\n\t\t\tthis.exceptionLabel.TabIndex = 6;\n\t\t\tthis.exceptionLabel.Text = \"Exception:\";\n\t\t\t// \n\t\t\t// exceptionTextBox\n\t\t\t// \n            this.exceptionTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.exceptionTextBox.Location = new System.Drawing.Point(74, 93);\n\t\t\tthis.exceptionTextBox.Name = \"exceptionTextBox\";\n\t\t\tthis.exceptionTextBox.Size = new System.Drawing.Size(226, 20);\n\t\t\tthis.exceptionTextBox.TabIndex = 7;\n\t\t\t// \n\t\t\t// invalidSettingLabel\n\t\t\t// \n            this.invalidSettingLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.invalidSettingLabel.AutoSize = true;\n\t\t\tthis.invalidSettingLabel.Enabled = false;\n\t\t\tthis.invalidSettingLabel.Location = new System.Drawing.Point(320, 96);\n\t\t\tthis.invalidSettingLabel.Name = \"invalidSettingLabel\";\n\t\t\tthis.invalidSettingLabel.Size = new System.Drawing.Size(77, 13);\n\t\t\tthis.invalidSettingLabel.TabIndex = 8;\n\t\t\tthis.invalidSettingLabel.Text = \"Invalid Setting:\";\n\t\t\t// \n\t\t\t// invalidSettingTextBox\n\t\t\t// \n            this.invalidSettingTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.invalidSettingTextBox.Enabled = false;\n\t\t\tthis.invalidSettingTextBox.Location = new System.Drawing.Point(403, 93);\n\t\t\tthis.invalidSettingTextBox.Name = \"invalidSettingTextBox\";\n\t\t\tthis.invalidSettingTextBox.Size = new System.Drawing.Size(121, 20);\n\t\t\tthis.invalidSettingTextBox.TabIndex = 9;\n\t\t\t// \n\t\t\t// targetSiteTextBox\n\t\t\t// \n            this.targetSiteTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.targetSiteTextBox.Location = new System.Drawing.Point(74, 122);\n\t\t\tthis.targetSiteTextBox.Name = \"targetSiteTextBox\";\n\t\t\tthis.targetSiteTextBox.Size = new System.Drawing.Size(450, 20);\n\t\t\tthis.targetSiteTextBox.TabIndex = 11;\n\t\t\t// \n\t\t\t// targetSiteLabel\n\t\t\t// \n\t\t\tthis.targetSiteLabel.AutoSize = true;\n\t\t\tthis.targetSiteLabel.Location = new System.Drawing.Point(10, 125);\n\t\t\tthis.targetSiteLabel.Name = \"targetSiteLabel\";\n\t\t\tthis.targetSiteLabel.Size = new System.Drawing.Size(62, 13);\n\t\t\tthis.targetSiteLabel.TabIndex = 10;\n\t\t\tthis.targetSiteLabel.Text = \"Target Site:\";\n\t\t\t// \n\t\t\t// exceptionMessageTextBox\n\t\t\t// \n            this.exceptionMessageTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.exceptionMessageTextBox.Location = new System.Drawing.Point(14, 151);\n\t\t\tthis.exceptionMessageTextBox.Multiline = true;\n\t\t\tthis.exceptionMessageTextBox.Name = \"exceptionMessageTextBox\";\n\t\t\tthis.exceptionMessageTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;\n\t\t\tthis.exceptionMessageTextBox.Size = new System.Drawing.Size(510, 35);\n\t\t\tthis.exceptionMessageTextBox.TabIndex = 12;\n\t\t\t// \n\t\t\t// exceptionStackGroupBox\n\t\t\t// \n            this.exceptionStackGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) \n            | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.exceptionStackGroupBox.Controls.Add(this.exceptionDetails);\n\t\t\tthis.exceptionStackGroupBox.Location = new System.Drawing.Point(14, 198);\n\t\t\tthis.exceptionStackGroupBox.Name = \"exceptionStackGroupBox\";\n\t\t\tthis.exceptionStackGroupBox.Size = new System.Drawing.Size(516, 304);\n\t\t\tthis.exceptionStackGroupBox.TabIndex = 13;\n\t\t\tthis.exceptionStackGroupBox.TabStop = false;\n\t\t\tthis.exceptionStackGroupBox.Text = \"Full Exception Stack\";\n\t\t\t// \n\t\t\t// exceptionDetails\n\t\t\t// \n            this.exceptionDetails.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) \n            | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.exceptionDetails.InformationColumnWidth = 350;\n\t\t\tthis.exceptionDetails.Location = new System.Drawing.Point(6, 16);\n\t\t\tthis.exceptionDetails.Name = \"exceptionDetails\";\n\t\t\tthis.exceptionDetails.PropertyColumnWidth = 144;\n\t\t\tthis.exceptionDetails.Size = new System.Drawing.Size(504, 282);\n\t\t\tthis.exceptionDetails.TabIndex = 0;\n\t\t\t// \n\t\t\t// warningPictureBox\n\t\t\t// \n\t\t\tthis.warningPictureBox.Location = new System.Drawing.Point(13, 41);\n\t\t\tthis.warningPictureBox.Name = \"warningPictureBox\";\n\t\t\tthis.warningPictureBox.Size = new System.Drawing.Size(32, 32);\n\t\t\tthis.warningPictureBox.TabIndex = 14;\n\t\t\tthis.warningPictureBox.TabStop = false;\n\t\t\t// \n\t\t\t// InternalExceptionViewer\n\t\t\t// \n\t\t\tthis.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n\t\t\tthis.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n\t\t\tthis.ClientSize = new System.Drawing.Size(541, 542);\n\t\t\tthis.Controls.Add(this.quitButton);\n\t\t\tthis.Controls.Add(this.bugReportButton);\n\t\t\tthis.Controls.Add(this.warningPictureBox);\n\t\t\tthis.Controls.Add(this.debugButton);\n\t\t\tthis.Controls.Add(this.exceptionStackGroupBox);\n\t\t\tthis.Controls.Add(this.exceptionMessageTextBox);\n\t\t\tthis.Controls.Add(this.targetSiteTextBox);\n\t\t\tthis.Controls.Add(this.messageLabel);\n\t\t\tthis.Controls.Add(this.topToolStrip);\n\t\t\tthis.Controls.Add(this.targetSiteLabel);\n\t\t\tthis.Controls.Add(this.invalidSettingLabel);\n\t\t\tthis.Controls.Add(this.exceptionLabel);\n\t\t\tthis.Controls.Add(this.exceptionTextBox);\n\t\t\tthis.Controls.Add(this.invalidSettingTextBox);\n\t\t\tthis.MaximizeBox = false;\n\t\t\tthis.MinimizeBox = false;\n\t\t\tthis.Name = \"InternalExceptionViewer\";\n\t\t\tthis.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;\n\t\t\tthis.Text = \"NBug Internal Exception Viewer\";\n\t\t\tthis.TopMost = true;\n\t\t\tthis.topToolStrip.ResumeLayout(false);\n\t\t\tthis.topToolStrip.PerformLayout();\n\t\t\tthis.exceptionStackGroupBox.ResumeLayout(false);\n\t\t\t((System.ComponentModel.ISupportInitialize)(this.warningPictureBox)).EndInit();\n\t\t\tthis.ResumeLayout(false);\n\t\t\tthis.PerformLayout();\n\n\t\t}\n\n\t\t#endregion\n\n\t\tprivate System.Windows.Forms.Button quitButton;\n\t\tprivate System.Windows.Forms.Button debugButton;\n\t\tprivate System.Windows.Forms.Button bugReportButton;\n\t\tprivate System.Windows.Forms.Label messageLabel;\n\t\tprivate System.Windows.Forms.ToolStrip topToolStrip;\n\t\tprivate System.Windows.Forms.ToolStripButton documentationToolStripButton;\n\t\tprivate System.Windows.Forms.ToolStripLabel forumToolStripLabel;\n\t\tprivate System.Windows.Forms.ToolStripSeparator toolStripSeparator1;\n\t\tprivate System.Windows.Forms.ToolStripSeparator toolStripSeparator2;\n\t\tprivate System.Windows.Forms.ToolStripLabel trackerToolStripLabel;\n\t\tprivate System.Windows.Forms.Label exceptionLabel;\n\t\tprivate System.Windows.Forms.TextBox exceptionTextBox;\n\t\tprivate System.Windows.Forms.Label invalidSettingLabel;\n\t\tprivate System.Windows.Forms.TextBox invalidSettingTextBox;\n\t\tprivate System.Windows.Forms.TextBox targetSiteTextBox;\n\t\tprivate System.Windows.Forms.Label targetSiteLabel;\n\t\tprivate System.Windows.Forms.TextBox exceptionMessageTextBox;\n\t\tprivate System.Windows.Forms.GroupBox exceptionStackGroupBox;\n\t\tprivate ExceptionDetails exceptionDetails;\n\t\tprivate System.Windows.Forms.PictureBox warningPictureBox;\n\t}\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/Developer/InternalExceptionViewer.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"InternalExceptionViewer.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Diagnostics;\nusing System.Drawing;\nusing System.Windows.Forms;\nusing NBug.Core.Util.Exceptions;\nusing NBug.Core.Util.Serialization;\nusing NBug.Properties;\n\nnamespace NBug.Core.UI.Developer\n{\n    internal partial class InternalExceptionViewer : Form\n    {\n        internal InternalExceptionViewer()\n        {\n            InitializeComponent();\n            Icon = Resources.NBug_icon_16;\n            warningPictureBox.Image = SystemIcons.Warning.ToBitmap();\n        }\n\n        internal void ShowDialog(Exception exception)\n        {\n            if (exception is NBugConfigurationException)\n            {\n                ShowDialog(exception as NBugConfigurationException);\n            }\n            else if (exception is NBugRuntimeException)\n            {\n                ShowDialog(exception as NBugRuntimeException);\n            }\n            else\n            {\n                messageLabel.Text =\n                    \"An internal runtime exception has occurred. This maybe due to a configuration failure or an internal bug. You may choose to debug the exception or send a bug report to NBug developers. You may also use discussion forum to get help.\";\n                bugReportButton.Enabled = true;\n                DisplayExceptionDetails(exception);\n            }\n        }\n\n        internal void ShowDialog(NBugConfigurationException configurationException)\n        {\n            messageLabel.Text =\n                \"An internal configuration exception has occurred. Please correct the invalid configuration regarding the information below. You may also use discussion forum to get help or read the online documentation's configuration section.\";\n            invalidSettingLabel.Enabled = true;\n            invalidSettingTextBox.Enabled = true;\n            invalidSettingTextBox.Text = configurationException.MisconfiguredProperty;\n            DisplayExceptionDetails(configurationException);\n        }\n\n        internal void ShowDialog(NBugRuntimeException runtimeException)\n        {\n            messageLabel.Text =\n                \"An internal runtime exception has occurred. This maybe due to a configuration failure or an internal bug. You may choose to debug the exception or send a bug report to NBug developers. You may also use discussion forum to get help.\";\n            bugReportButton.Enabled = true;\n            DisplayExceptionDetails(runtimeException);\n        }\n\n        private void BugReportButton_Click(object sender, EventArgs e)\n        {\n            MessageBox.Show(\n                \"Internal bug reporting feature is not implemented yet but you can still manually submit a bug report using the bug tracker.\",\n                \"Information\",\n                MessageBoxButtons.OK,\n                MessageBoxIcon.Information);\n            bugReportButton.Enabled = false;\n        }\n\n        private void DebugButton_Click(object sender, EventArgs e)\n        {\n            // Let the exception propagate down to SEH\n            Close();\n        }\n\n        private void DisplayExceptionDetails(Exception exception)\n        {\n            exceptionTextBox.Text = exception.GetType().ToString();\n            exceptionMessageTextBox.Text = exception.Message;\n\n            if (exception.TargetSite != null)\n            {\n                targetSiteTextBox.Text = exception.TargetSite.ToString();\n            }\n            else if (exception.InnerException != null && exception.InnerException.TargetSite != null)\n            {\n                targetSiteTextBox.Text = exception.InnerException.TargetSite.ToString();\n            }\n\n            exceptionDetails.Initialize(new SerializableException(exception));\n            ShowDialog();\n        }\n\n        private void DocumentationToolStripButton_Click(object sender, EventArgs e)\n        {\n            Process.Start(documentationToolStripButton.Tag.ToString());\n        }\n\n        private void ForumToolStripLabel_Click(object sender, EventArgs e)\n        {\n            Process.Start(forumToolStripLabel.Tag.ToString());\n        }\n\n        private void QuitButton_Click(object sender, EventArgs e)\n        {\n            Environment.Exit(0);\n        }\n\n        private void TrackerToolStripLabel_Click(object sender, EventArgs e)\n        {\n            Process.Start(trackerToolStripLabel.Tag.ToString());\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/Developer/InternalExceptionViewer.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <metadata name=\"topToolStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>17, 11</value>\n  </metadata>\n  <metadata name=\"$this.TrayHeight\" type=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>49</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/Developer/InternalLogViewer.Designer.cs",
    "content": "﻿namespace NBug.Core.UI.Developer\n{\n\tpartial class InternalLogViewer\n\t{\n\t\t/// <summary>\n\t\t/// Required designer variable.\n\t\t/// </summary>\n\t\tprivate System.ComponentModel.IContainer components = null;\n\n\t\t/// <summary>\n\t\t/// Clean up any resources being used.\n\t\t/// </summary>\n\t\t/// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n\t\tprotected override void Dispose(bool disposing)\n\t\t{\n\t\t\tif (disposing && (components != null))\n\t\t\t{\n\t\t\t\tcomponents.Dispose();\n\t\t\t}\n\t\t\tbase.Dispose(disposing);\n\t\t}\n\n\t\t#region Windows Form Designer generated code\n\n\t\t/// <summary>\n\t\t/// Required method for Designer support - do not modify\n\t\t/// the contents of this method with the code editor.\n\t\t/// </summary>\n\t\tprivate void InitializeComponent()\n\t\t{\n\t\t\tthis.components = new System.ComponentModel.Container();\n\t\t\tthis.detailsTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.detailsLabel = new System.Windows.Forms.Label();\n\t\t\tthis.loggerListView = new System.Windows.Forms.ListView();\n\t\t\tthis.categoryColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));\n\t\t\tthis.timeColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));\n\t\t\tthis.messageColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));\n\t\t\tthis.entriesLabel = new System.Windows.Forms.Label();\n\t\t\tthis.quitButton = new System.Windows.Forms.Button();\n\t\t\tthis.notifyIcon = new System.Windows.Forms.NotifyIcon(this.components);\n\t\t\tthis.hideButton = new System.Windows.Forms.Button();\n\t\t\tthis.SuspendLayout();\n\t\t\t// \n\t\t\t// detailsTextBox\n\t\t\t// \n\t\t\tthis.detailsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) \n\t\t\t| System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.detailsTextBox.Location = new System.Drawing.Point(5, 261);\n\t\t\tthis.detailsTextBox.Multiline = true;\n\t\t\tthis.detailsTextBox.Name = \"detailsTextBox\";\n\t\t\tthis.detailsTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;\n\t\t\tthis.detailsTextBox.Size = new System.Drawing.Size(526, 80);\n\t\t\tthis.detailsTextBox.TabIndex = 7;\n\t\t\t// \n\t\t\t// detailsLabel\n\t\t\t// \n\t\t\tthis.detailsLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));\n\t\t\tthis.detailsLabel.AutoSize = true;\n\t\t\tthis.detailsLabel.Location = new System.Drawing.Point(5, 245);\n\t\t\tthis.detailsLabel.Name = \"detailsLabel\";\n\t\t\tthis.detailsLabel.Size = new System.Drawing.Size(42, 13);\n\t\t\tthis.detailsLabel.TabIndex = 6;\n\t\t\tthis.detailsLabel.Text = \"Details:\";\n\t\t\t// \n\t\t\t// loggerListView\n\t\t\t// \n\t\t\tthis.loggerListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) \n\t\t\t| System.Windows.Forms.AnchorStyles.Left) \n\t\t\t| System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.loggerListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {\n\t\t\tthis.categoryColumnHeader,\n\t\t\tthis.timeColumnHeader,\n\t\t\tthis.messageColumnHeader});\n\t\t\tthis.loggerListView.FullRowSelect = true;\n\t\t\tthis.loggerListView.Location = new System.Drawing.Point(5, 21);\n\t\t\tthis.loggerListView.MultiSelect = false;\n\t\t\tthis.loggerListView.Name = \"loggerListView\";\n\t\t\tthis.loggerListView.ShowItemToolTips = true;\n\t\t\tthis.loggerListView.Size = new System.Drawing.Size(526, 217);\n\t\t\tthis.loggerListView.TabIndex = 4;\n\t\t\tthis.loggerListView.UseCompatibleStateImageBehavior = false;\n\t\t\tthis.loggerListView.View = System.Windows.Forms.View.Details;\n\t\t\tthis.loggerListView.Click += new System.EventHandler(this.LoggerListView_Click);\n\t\t\t// \n\t\t\t// categoryColumnHeader\n\t\t\t// \n\t\t\tthis.categoryColumnHeader.Text = \"Category\";\n\t\t\t// \n\t\t\t// timeColumnHeader\n\t\t\t// \n\t\t\tthis.timeColumnHeader.Text = \"Time\";\n\t\t\t// \n\t\t\t// messageColumnHeader\n\t\t\t// \n\t\t\tthis.messageColumnHeader.Text = \"Message\";\n\t\t\tthis.messageColumnHeader.Width = 402;\n\t\t\t// \n\t\t\t// entriesLabel\n\t\t\t// \n\t\t\tthis.entriesLabel.AutoSize = true;\n\t\t\tthis.entriesLabel.Location = new System.Drawing.Point(5, 5);\n\t\t\tthis.entriesLabel.Name = \"entriesLabel\";\n\t\t\tthis.entriesLabel.Size = new System.Drawing.Size(42, 13);\n\t\t\tthis.entriesLabel.TabIndex = 5;\n\t\t\tthis.entriesLabel.Text = \"Entries:\";\n\t\t\t// \n\t\t\t// quitButton\n\t\t\t// \n\t\t\tthis.quitButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.quitButton.Location = new System.Drawing.Point(366, 347);\n\t\t\tthis.quitButton.Name = \"quitButton\";\n\t\t\tthis.quitButton.Size = new System.Drawing.Size(75, 23);\n\t\t\tthis.quitButton.TabIndex = 8;\n\t\t\tthis.quitButton.Text = \"&Quit\";\n\t\t\tthis.quitButton.UseVisualStyleBackColor = true;\n\t\t\tthis.quitButton.Click += new System.EventHandler(this.QuitButton_Click);\n\t\t\t// \n\t\t\t// notifyIcon\n\t\t\t// \n\t\t\tthis.notifyIcon.BalloonTipText = \"NBug Developer Interface\";\n\t\t\tthis.notifyIcon.BalloonTipTitle = \"NBug (Debug Mode)\";\n\t\t\tthis.notifyIcon.Text = \"NBug Developer Interface\";\n\t\t\tthis.notifyIcon.Visible = true;\n\t\t\tthis.notifyIcon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.NotifyIcon_MouseDoubleClick);\n\t\t\t// \n\t\t\t// hideButton\n\t\t\t// \n\t\t\tthis.hideButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.hideButton.Location = new System.Drawing.Point(456, 347);\n\t\t\tthis.hideButton.Name = \"hideButton\";\n\t\t\tthis.hideButton.Size = new System.Drawing.Size(75, 23);\n\t\t\tthis.hideButton.TabIndex = 9;\n\t\t\tthis.hideButton.Text = \"&Hide\";\n\t\t\tthis.hideButton.UseVisualStyleBackColor = true;\n\t\t\tthis.hideButton.Click += new System.EventHandler(this.HideButton_Click);\n\t\t\t// \n\t\t\t// InternalLogViewer\n\t\t\t// \n\t\t\tthis.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n\t\t\tthis.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n\t\t\tthis.ClientSize = new System.Drawing.Size(536, 373);\n\t\t\tthis.Controls.Add(this.hideButton);\n\t\t\tthis.Controls.Add(this.quitButton);\n\t\t\tthis.Controls.Add(this.detailsTextBox);\n\t\t\tthis.Controls.Add(this.detailsLabel);\n\t\t\tthis.Controls.Add(this.loggerListView);\n\t\t\tthis.Controls.Add(this.entriesLabel);\n\t\t\tthis.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;\n\t\t\tthis.MaximizeBox = false;\n\t\t\tthis.Name = \"InternalLogViewer\";\n\t\t\tthis.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;\n\t\t\tthis.Text = \"NBug Internal Log Viewer\";\n\t\t\tthis.Resize += new System.EventHandler(this.InternalLogViewer_Resize);\n\t\t\tthis.ResumeLayout(false);\n\t\t\tthis.PerformLayout();\n\n\t\t}\n\n\t\t#endregion\n\n\t\tprivate System.Windows.Forms.TextBox detailsTextBox;\n\t\tprivate System.Windows.Forms.Label detailsLabel;\n\t\tprivate System.Windows.Forms.ListView loggerListView;\n\t\tprivate System.Windows.Forms.ColumnHeader categoryColumnHeader;\n\t\tprivate System.Windows.Forms.ColumnHeader timeColumnHeader;\n\t\tprivate System.Windows.Forms.ColumnHeader messageColumnHeader;\n\t\tprivate System.Windows.Forms.Label entriesLabel;\n\t\tprivate System.Windows.Forms.Button quitButton;\n\t\tprivate System.Windows.Forms.NotifyIcon notifyIcon;\n\t\tprivate System.Windows.Forms.Button hideButton;\n\t}\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/Developer/InternalLogViewer.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"InternalLogViewer.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Threading;\nusing System.Windows.Forms;\nusing NBug.Enums;\nusing NBug.Properties;\n\nnamespace NBug.Core.UI.Developer\n{\n    internal partial class InternalLogViewer : Form\n    {\n        private static bool closed;\n        private static ManualResetEvent handleCreated;\n        private static bool initialized;\n        private static InternalLogViewer viewer;\n\n        internal InternalLogViewer()\n        {\n            InitializeComponent();\n            Icon = Resources.NBug_icon_16;\n            notifyIcon.Icon = Resources.NBug_icon_16;\n        }\n\n        public static void InitializeInternalLogViewer()\n        {\n            if (!initialized)\n            {\n                initialized = true;\n                viewer = new InternalLogViewer();\n                handleCreated = new ManualResetEvent(false);\n                viewer.HandleCreated += (sender, e) => handleCreated.Set();\n                //Task.Factory.StartNew(() => Application.Run(viewer));\n                new Thread(() => Application.Run(viewer)).Start();\n                handleCreated.WaitOne();\n            }\n        }\n\n        public static void LogEntry(string message, LoggerCategory category)\n        {\n            InitializeInternalLogViewer();\n\n            if (!closed)\n            {\n                viewer.Invoke((MethodInvoker) (() => viewer.InternalLogEntry(message, category)));\n            }\n        }\n\n        internal void InternalLogEntry(string message, LoggerCategory category)\n        {\n            loggerListView.Items.Add(\n                new ListViewItem(new[] {category.ToString().Remove(0, 4), DateTime.Now.ToString(\"HH:mm:ss\"), message}));\n        }\n\n        private void HideButton_Click(object sender, EventArgs e)\n        {\n            Hide();\n        }\n\n        private void InternalLogViewer_Resize(object sender, EventArgs e)\n        {\n            if (WindowState == FormWindowState.Minimized)\n            {\n                Hide();\n            }\n        }\n\n        private void LoggerListView_Click(object sender, EventArgs e)\n        {\n            detailsTextBox.Text = loggerListView.SelectedItems[0].SubItems[2].Text;\n        }\n\n        private void NotifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)\n        {\n            if (WindowState == FormWindowState.Minimized)\n            {\n                WindowState = FormWindowState.Normal;\n            }\n\n            Show();\n            Activate();\n        }\n\n        private void QuitButton_Click(object sender, EventArgs e)\n        {\n            notifyIcon.Visible = false;\n            notifyIcon.Dispose();\n            notifyIcon = null;\n            closed = true;\n            Close();\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/Developer/InternalLogViewer.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <metadata name=\"notifyIcon.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>16, 14</value>\n  </metadata>\n  <metadata name=\"$this.TrayHeight\" type=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>47</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/UIDialogResult.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"UIDialogResult.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.UI\n{\n    public enum SendReport\n    {\n        Send,\n\n        DoNotSend\n    }\n\n    public enum ExecutionFlow\n    {\n        /// <summary>\n        ///     This will handle all unhandled exceptions to be able to continue execution.\n        /// </summary>\n        ContinueExecution,\n\n        /// <summary>\n        ///     This will handle all unhandled exceptions and exit the application.\n        /// </summary>\n        BreakExecution\n    }\n\n    public struct UIDialogResult\n    {\n        internal ExecutionFlow Execution;\n        internal SendReport Report;\n\n        public UIDialogResult(ExecutionFlow execution, SendReport report)\n        {\n            Execution = execution;\n            Report = report;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/UISelector.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"UISelector.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.UI.Console;\nusing NBug.Core.UI.Custom;\nusing NBug.Core.UI.WinForms;\nusing NBug.Core.UI.WPF;\nusing NBug.Core.Util;\nusing NBug.Core.Util.Exceptions;\nusing NBug.Core.Util.Serialization;\nusing NBug.Enums;\n\nnamespace NBug.Core.UI\n{\n    /// <summary>\n    ///     Initializes a new instance of the UISelector class which displays the user an appropriate user interface in the\n    ///     event of unhandled exceptions.\n    /// </summary>\n    internal static class UISelector\n    {\n        internal static UIDialogResult DisplayBugReportUI(ExceptionThread exceptionThread,\n            SerializableException serializableException, Report report)\n        {\n            if (exceptionThread == ExceptionThread.Task)\n            {\n                // Do not interfere with the default behaviour for continuation on background thread exceptions. Just log and send'em (no UI...)\n                return new UIDialogResult(ExecutionFlow.ContinueExecution, SendReport.Send);\n            }\n            if (Settings.UIMode == UIMode.Auto)\n            {\n                // First of, test to see if the call is from an UI thread and if so, use the same UI type (WinForms, WPF, etc.)\n                if (exceptionThread == ExceptionThread.UI_WinForms)\n                {\n                    return WinFormsUI.ShowDialog(UIMode.Minimal, serializableException, report);\n                }\n                if (exceptionThread == ExceptionThread.UI_WPF)\n                {\n                    return WPFUI.ShowDialog(UIMode.Minimal, serializableException, report);\n                }\n                if (exceptionThread == ExceptionThread.Main)\n                {\n                    // If the call is not from a non-UI thread like the main app thread, it may be from the current appdomain but\n                    // the application may still be using an UI. Or it may be coming from an exception filter where UI type is undefined yet.\n                    switch (DiscoverUI())\n                    {\n                        case UIProvider.WinForms:\n                            return WinFormsUI.ShowDialog(UIMode.Minimal, serializableException, report);\n\n                        case UIProvider.WPF:\n                            return WPFUI.ShowDialog(UIMode.Minimal, serializableException, report);\n\n                        case UIProvider.Console:\n                            return ConsoleUI.ShowDialog(UIMode.Minimal, serializableException, report);\n\n                        case UIProvider.Custom:\n                            return CustomUI.ShowDialog(UIMode.Minimal, serializableException, report);\n\n                        default:\n                            throw new NBugRuntimeException(\"UISelector.DiscoverUI() returned an invalid UI type.\");\n                    }\n                }\n                throw new NBugRuntimeException(string.Format(\"Parameter supplied for '{0}' is not valid.\",\n                    typeof (ExceptionThread).Name));\n            }\n            if (Settings.UIMode == UIMode.None)\n            {\n                // Do not display an UI for UIMode.None\n                if (Settings.ExitApplicationImmediately)\n                {\n                    return new UIDialogResult(ExecutionFlow.BreakExecution, SendReport.Send);\n                }\n                return new UIDialogResult(ExecutionFlow.ContinueExecution, SendReport.Send);\n            }\n            if (Settings.UIProvider == UIProvider.Console)\n            {\n                return ConsoleUI.ShowDialog(Settings.UIMode, serializableException, report);\n            }\n            if (Settings.UIProvider == UIProvider.WinForms)\n            {\n                return WinFormsUI.ShowDialog(Settings.UIMode, serializableException, report);\n            }\n            if (Settings.UIProvider == UIProvider.WPF)\n            {\n                return WPFUI.ShowDialog(Settings.UIMode, serializableException, report);\n            }\n            if (Settings.UIProvider == UIProvider.Custom)\n            {\n                return CustomUI.ShowDialog(UIMode.Minimal, serializableException, report);\n            }\n            if (Settings.UIProvider == UIProvider.Auto)\n            {\n                // In this case, UIProvider = Auto & UIMode != Auto so just discover the UI provider and use the selected UI mode\n                switch (DiscoverUI())\n                {\n                    case UIProvider.WinForms:\n                        return WinFormsUI.ShowDialog(Settings.UIMode, serializableException, report);\n\n                    case UIProvider.WPF:\n                        return WPFUI.ShowDialog(Settings.UIMode, serializableException, report);\n\n                    case UIProvider.Console:\n                        return ConsoleUI.ShowDialog(Settings.UIMode, serializableException, report);\n\n                    case UIProvider.Custom:\n                        return CustomUI.ShowDialog(UIMode.Minimal, serializableException, report);\n\n                    default:\n                        throw new NBugRuntimeException(\"UISelector.DiscoverUI() returned an invalid UI type.\");\n                }\n            }\n            throw NBugConfigurationException.Create(() => Settings.UIProvider,\n                \"Parameter supplied for settings property is invalid.\");\n        }\n\n        internal static void DisplayFeedbackUI()\n        {\n        }\n\n        private static UIProvider DiscoverUI()\n        {\n            // First of search for loaded assemblies in the current domain\n            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())\n            {\n                switch (assembly.GetName().Name)\n                {\n                    case \"System.Windows.Forms\":\n                        return UIProvider.WinForms;\n\n                    case \"PresentationFramework\":\n                        return UIProvider.WPF;\n                }\n            }\n\n            // Eventhough UI assemblies may not be loaded, they may still be referenced. Search for them for a second time\n            foreach (var assembly in Settings.EntryAssembly.GetReferencedAssemblies())\n            {\n                switch (assembly.Name)\n                {\n                    case \"System.Windows.Forms\":\n                        return UIProvider.WinForms;\n\n                    case \"PresentationFramework\":\n                        return UIProvider.WPF;\n                }\n            }\n\n            // If there is no known UI assembly loaded or referenced, the application is probably a console app\n            return UIProvider.Console;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/WPF/WPFUI.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"WPFUI.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.UI.WinForms;\nusing NBug.Core.Util.Exceptions;\nusing NBug.Core.Util.Serialization;\nusing NBug.Enums;\n\nnamespace NBug.Core.UI.WPF\n{\n    /// <summary>\n    ///     This class is used to prevent statically referencing any WPF dlls from the UISelector.cs thus prevents\n    ///     any unnecessary assembly from getting loaded into the memory.\n    /// </summary>\n    internal static class WPFUI\n    {\n        internal static UIDialogResult ShowDialog(UIMode uiMode, SerializableException exception, Report report)\n        {\n            if (uiMode == UIMode.Minimal)\n            {\n                return new Minimal().ShowDialog(report);\n            }\n            if (uiMode == UIMode.Normal)\n            {\n                using (var ui = new Normal())\n                {\n                    return ui.ShowDialog(report);\n                }\n            }\n            if (uiMode == UIMode.Full)\n            {\n                using (var ui = new Full())\n                {\n                    return ui.ShowDialog(exception, report);\n                }\n            }\n            throw NBugConfigurationException.Create(() => Settings.UIMode,\n                \"Parameter supplied for settings property is invalid.\");\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Feedback.Designer.cs",
    "content": "﻿namespace NBug.Core.UI.WinForms\n{\n\tpartial class Feedback\n\t{\n\t\t/// <summary>\n\t\t/// Required designer variable.\n\t\t/// </summary>\n\t\tprivate System.ComponentModel.IContainer components = null;\n\n\t\t/// <summary>\n\t\t/// Clean up any resources being used.\n\t\t/// </summary>\n\t\t/// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n\t\tprotected override void Dispose(bool disposing)\n\t\t{\n\t\t\tif (disposing && (components != null))\n\t\t\t{\n\t\t\t\tcomponents.Dispose();\n\t\t\t}\n\t\t\tbase.Dispose(disposing);\n\t\t}\n\n\t\t#region Windows Form Designer generated code\n\n\t\t/// <summary>\n\t\t/// Required method for Designer support - do not modify\n\t\t/// the contents of this method with the code editor.\n\t\t/// </summary>\n\t\tprivate void InitializeComponent()\n\t\t{\n\t\t\tthis.suggestionTypeGroupBox = new System.Windows.Forms.GroupBox();\n\t\t\tthis.featureRequestRadioButton = new System.Windows.Forms.RadioButton();\n\t\t\tthis.commentRadioButton = new System.Windows.Forms.RadioButton();\n\t\t\tthis.errorReportRadioButton = new System.Windows.Forms.RadioButton();\n\t\t\tthis.suggestionRadioButton = new System.Windows.Forms.RadioButton();\n\t\t\tthis.feedbackLabel = new System.Windows.Forms.Label();\n\t\t\tthis.feedbackPictureBox = new System.Windows.Forms.PictureBox();\n\t\t\tthis.emailLabel = new System.Windows.Forms.Label();\n\t\t\tthis.remarksLabel = new System.Windows.Forms.Label();\n\t\t\tthis.textBox1 = new System.Windows.Forms.TextBox();\n\t\t\tthis.textBox2 = new System.Windows.Forms.TextBox();\n\t\t\tthis.sendButton = new System.Windows.Forms.Button();\n\t\t\tthis.closeButton = new System.Windows.Forms.Button();\n\t\t\tthis.suggestionTypeGroupBox.SuspendLayout();\n\t\t\t((System.ComponentModel.ISupportInitialize)(this.feedbackPictureBox)).BeginInit();\n\t\t\tthis.SuspendLayout();\n\t\t\t// \n\t\t\t// suggestionTypeGroupBox\n\t\t\t// \n\t\t\tthis.suggestionTypeGroupBox.Controls.Add(this.featureRequestRadioButton);\n\t\t\tthis.suggestionTypeGroupBox.Controls.Add(this.commentRadioButton);\n\t\t\tthis.suggestionTypeGroupBox.Controls.Add(this.errorReportRadioButton);\n\t\t\tthis.suggestionTypeGroupBox.Controls.Add(this.suggestionRadioButton);\n\t\t\tthis.suggestionTypeGroupBox.Location = new System.Drawing.Point(12, 61);\n\t\t\tthis.suggestionTypeGroupBox.Name = \"suggestionTypeGroupBox\";\n\t\t\tthis.suggestionTypeGroupBox.Size = new System.Drawing.Size(382, 42);\n\t\t\tthis.suggestionTypeGroupBox.TabIndex = 0;\n\t\t\tthis.suggestionTypeGroupBox.TabStop = false;\n\t\t\tthis.suggestionTypeGroupBox.Text = \"Suggestion Type:\";\n\t\t\t// \n\t\t\t// featureRequestRadioButton\n\t\t\t// \n\t\t\tthis.featureRequestRadioButton.AutoSize = true;\n\t\t\tthis.featureRequestRadioButton.Location = new System.Drawing.Point(263, 17);\n\t\t\tthis.featureRequestRadioButton.Name = \"featureRequestRadioButton\";\n\t\t\tthis.featureRequestRadioButton.Size = new System.Drawing.Size(104, 17);\n\t\t\tthis.featureRequestRadioButton.TabIndex = 3;\n\t\t\tthis.featureRequestRadioButton.TabStop = true;\n\t\t\tthis.featureRequestRadioButton.Text = \"Feature Request\";\n\t\t\tthis.featureRequestRadioButton.UseVisualStyleBackColor = true;\n\t\t\t// \n\t\t\t// commentRadioButton\n\t\t\t// \n\t\t\tthis.commentRadioButton.AutoSize = true;\n\t\t\tthis.commentRadioButton.Location = new System.Drawing.Point(100, 17);\n\t\t\tthis.commentRadioButton.Name = \"commentRadioButton\";\n\t\t\tthis.commentRadioButton.Size = new System.Drawing.Size(69, 17);\n\t\t\tthis.commentRadioButton.TabIndex = 2;\n\t\t\tthis.commentRadioButton.TabStop = true;\n\t\t\tthis.commentRadioButton.Text = \"Comment\";\n\t\t\tthis.commentRadioButton.UseVisualStyleBackColor = true;\n\t\t\t// \n\t\t\t// errorReportRadioButton\n\t\t\t// \n\t\t\tthis.errorReportRadioButton.AutoSize = true;\n\t\t\tthis.errorReportRadioButton.Location = new System.Drawing.Point(175, 17);\n\t\t\tthis.errorReportRadioButton.Name = \"errorReportRadioButton\";\n\t\t\tthis.errorReportRadioButton.Size = new System.Drawing.Size(82, 17);\n\t\t\tthis.errorReportRadioButton.TabIndex = 1;\n\t\t\tthis.errorReportRadioButton.TabStop = true;\n\t\t\tthis.errorReportRadioButton.Text = \"Error Report\";\n\t\t\tthis.errorReportRadioButton.UseVisualStyleBackColor = true;\n\t\t\t// \n\t\t\t// suggestionRadioButton\n\t\t\t// \n\t\t\tthis.suggestionRadioButton.AutoSize = true;\n\t\t\tthis.suggestionRadioButton.Location = new System.Drawing.Point(16, 17);\n\t\t\tthis.suggestionRadioButton.Name = \"suggestionRadioButton\";\n\t\t\tthis.suggestionRadioButton.Size = new System.Drawing.Size(78, 17);\n\t\t\tthis.suggestionRadioButton.TabIndex = 0;\n\t\t\tthis.suggestionRadioButton.TabStop = true;\n\t\t\tthis.suggestionRadioButton.Text = \"Suggestion\";\n\t\t\tthis.suggestionRadioButton.UseVisualStyleBackColor = true;\n\t\t\t// \n\t\t\t// feedbackLabel\n\t\t\t// \n\t\t\tthis.feedbackLabel.Location = new System.Drawing.Point(50, 14);\n\t\t\tthis.feedbackLabel.Name = \"feedbackLabel\";\n\t\t\tthis.feedbackLabel.Size = new System.Drawing.Size(344, 28);\n\t\t\tthis.feedbackLabel.TabIndex = 1;\n\t\t\tthis.feedbackLabel.Text = \"Please fill in the form below to submit your feedback. Selecting the proper feedb\" +\n    \"ack type will help us better understand your opinion.\";\n\t\t\t// \n\t\t\t// feedbackPictureBox\n\t\t\t// \n\t\t\tthis.feedbackPictureBox.Image = global::NBug.Properties.Resources.Feedback;\n\t\t\tthis.feedbackPictureBox.Location = new System.Drawing.Point(12, 12);\n\t\t\tthis.feedbackPictureBox.Name = \"feedbackPictureBox\";\n\t\t\tthis.feedbackPictureBox.Size = new System.Drawing.Size(32, 32);\n\t\t\tthis.feedbackPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;\n\t\t\tthis.feedbackPictureBox.TabIndex = 2;\n\t\t\tthis.feedbackPictureBox.TabStop = false;\n\t\t\t// \n\t\t\t// emailLabel\n\t\t\t// \n\t\t\tthis.emailLabel.AutoSize = true;\n\t\t\tthis.emailLabel.Location = new System.Drawing.Point(9, 122);\n\t\t\tthis.emailLabel.Name = \"emailLabel\";\n\t\t\tthis.emailLabel.Size = new System.Drawing.Size(127, 13);\n\t\t\tthis.emailLabel.TabIndex = 3;\n\t\t\tthis.emailLabel.Text = \"E-mail Address (Optional):\";\n\t\t\t// \n\t\t\t// remarksLabel\n\t\t\t// \n\t\t\tthis.remarksLabel.AutoSize = true;\n\t\t\tthis.remarksLabel.Location = new System.Drawing.Point(9, 150);\n\t\t\tthis.remarksLabel.Name = \"remarksLabel\";\n\t\t\tthis.remarksLabel.Size = new System.Drawing.Size(52, 13);\n\t\t\tthis.remarksLabel.TabIndex = 4;\n\t\t\tthis.remarksLabel.Text = \"Remarks:\";\n\t\t\t// \n\t\t\t// textBox1\n\t\t\t// \n\t\t\tthis.textBox1.Location = new System.Drawing.Point(142, 119);\n\t\t\tthis.textBox1.Name = \"textBox1\";\n\t\t\tthis.textBox1.Size = new System.Drawing.Size(146, 20);\n\t\t\tthis.textBox1.TabIndex = 5;\n\t\t\t// \n\t\t\t// textBox2\n\t\t\t// \n\t\t\tthis.textBox2.Location = new System.Drawing.Point(12, 166);\n\t\t\tthis.textBox2.Multiline = true;\n\t\t\tthis.textBox2.Name = \"textBox2\";\n\t\t\tthis.textBox2.Size = new System.Drawing.Size(382, 110);\n\t\t\tthis.textBox2.TabIndex = 6;\n\t\t\t// \n\t\t\t// sendButton\n\t\t\t// \n\t\t\tthis.sendButton.Image = global::NBug.Properties.Resources.Send;\n\t\t\tthis.sendButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;\n\t\t\tthis.sendButton.Location = new System.Drawing.Point(319, 284);\n\t\t\tthis.sendButton.Name = \"sendButton\";\n\t\t\tthis.sendButton.Size = new System.Drawing.Size(75, 23);\n\t\t\tthis.sendButton.TabIndex = 7;\n\t\t\tthis.sendButton.Text = \"    &Send\";\n\t\t\tthis.sendButton.UseVisualStyleBackColor = true;\n\t\t\t// \n\t\t\t// closeButton\n\t\t\t// \n\t\t\tthis.closeButton.Location = new System.Drawing.Point(233, 284);\n\t\t\tthis.closeButton.Name = \"closeButton\";\n\t\t\tthis.closeButton.Size = new System.Drawing.Size(75, 23);\n\t\t\tthis.closeButton.TabIndex = 8;\n\t\t\tthis.closeButton.Text = \"&Close\";\n\t\t\tthis.closeButton.UseVisualStyleBackColor = true;\n\t\t\t// \n\t\t\t// Feedback\n\t\t\t// \n\t\t\tthis.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n\t\t\tthis.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n\t\t\tthis.ClientSize = new System.Drawing.Size(406, 314);\n\t\t\tthis.Controls.Add(this.closeButton);\n\t\t\tthis.Controls.Add(this.sendButton);\n\t\t\tthis.Controls.Add(this.textBox2);\n\t\t\tthis.Controls.Add(this.textBox1);\n\t\t\tthis.Controls.Add(this.remarksLabel);\n\t\t\tthis.Controls.Add(this.emailLabel);\n\t\t\tthis.Controls.Add(this.feedbackPictureBox);\n\t\t\tthis.Controls.Add(this.feedbackLabel);\n\t\t\tthis.Controls.Add(this.suggestionTypeGroupBox);\n\t\t\tthis.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;\n\t\t\tthis.MaximizeBox = false;\n\t\t\tthis.MinimizeBox = false;\n\t\t\tthis.Name = \"Feedback\";\n\t\t\tthis.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;\n\t\t\tthis.Text = \"Feedback\";\n\t\t\tthis.suggestionTypeGroupBox.ResumeLayout(false);\n\t\t\tthis.suggestionTypeGroupBox.PerformLayout();\n\t\t\t((System.ComponentModel.ISupportInitialize)(this.feedbackPictureBox)).EndInit();\n\t\t\tthis.ResumeLayout(false);\n\t\t\tthis.PerformLayout();\n\n\t\t}\n\n\t\t#endregion\n\n\t\tprivate System.Windows.Forms.GroupBox suggestionTypeGroupBox;\n\t\tprivate System.Windows.Forms.RadioButton featureRequestRadioButton;\n\t\tprivate System.Windows.Forms.RadioButton commentRadioButton;\n\t\tprivate System.Windows.Forms.RadioButton errorReportRadioButton;\n\t\tprivate System.Windows.Forms.RadioButton suggestionRadioButton;\n\t\tprivate System.Windows.Forms.Label feedbackLabel;\n\t\tprivate System.Windows.Forms.PictureBox feedbackPictureBox;\n\t\tprivate System.Windows.Forms.Label emailLabel;\n\t\tprivate System.Windows.Forms.Label remarksLabel;\n\t\tprivate System.Windows.Forms.TextBox textBox1;\n\t\tprivate System.Windows.Forms.TextBox textBox2;\n\t\tprivate System.Windows.Forms.Button sendButton;\n\t\tprivate System.Windows.Forms.Button closeButton;\n\n\t}\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Feedback.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Feedback.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System.Windows.Forms;\nusing NBug.Properties;\n\nnamespace NBug.Core.UI.WinForms\n{\n    internal partial class Feedback : Form\n    {\n        public Feedback()\n        {\n            InitializeComponent();\n            Icon = Resources.NBug_icon_16;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Feedback.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.Designer.cs",
    "content": "﻿namespace NBug.Core.UI.WinForms\n{\n\tusing NBug.Core.UI.WinForms.Panels;\n\n\tpartial class Full\n\t{\n\t\t/// <summary>\n\t\t/// Required designer variable.\n\t\t/// </summary>\n\t\tprivate System.ComponentModel.IContainer components = null;\n\n\t\t/// <summary>\n\t\t/// Clean up any resources being used.\n\t\t/// </summary>\n\t\t/// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n\t\tprotected override void Dispose(bool disposing)\n\t\t{\n\t\t\tif (disposing && (components != null))\n\t\t\t{\n\t\t\t\tcomponents.Dispose();\n\t\t\t}\n\t\t\tbase.Dispose(disposing);\n\t\t}\n\n\t\t#region Windows Form Designer generated code\n\n\t\t/// <summary>\n\t\t/// Required method for Designer support - do not modify\n\t\t/// the contents of this method with the code editor.\n\t\t/// </summary>\n\t\tprivate void InitializeComponent()\n\t\t{\n\t\t\tthis.components = new System.ComponentModel.Container();\n\t\t\tSystem.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Full));\n\t\t\tthis.mainTabs = new System.Windows.Forms.TabControl();\n\t\t\tthis.generalTabPage = new System.Windows.Forms.TabPage();\n\t\t\tthis.warningLabel = new System.Windows.Forms.Label();\n\t\t\tthis.exceptionTypeLabel = new System.Windows.Forms.Label();\n\t\t\tthis.exceptionTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.descriptionTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.errorDescriptionLabel = new System.Windows.Forms.Label();\n\t\t\tthis.clrTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.clrLabel = new System.Windows.Forms.Label();\n\t\t\tthis.dateTimeTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.dateTimeLabel = new System.Windows.Forms.Label();\n\t\t\tthis.nbugTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.nbugLabel = new System.Windows.Forms.Label();\n\t\t\tthis.applicationTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.applicationLabel = new System.Windows.Forms.Label();\n\t\t\tthis.targetSiteTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.targetSiteLabel = new System.Windows.Forms.Label();\n\t\t\tthis.exceptionMessageTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.warningPictureBox = new System.Windows.Forms.PictureBox();\n\t\t\tthis.exceptionTabPage = new System.Windows.Forms.TabPage();\n\t\t\tthis.exceptionDetails = new NBug.Core.UI.WinForms.Panels.ExceptionDetails();\n\t\t\tthis.reportContentsTabPage = new System.Windows.Forms.TabPage();\n\t\t\tthis.reportPreviewTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.previewLabel = new System.Windows.Forms.Label();\n\t\t\tthis.contentsLabel = new System.Windows.Forms.Label();\n\t\t\tthis.reportContentsListView = new System.Windows.Forms.ListView();\n\t\t\tthis.nameColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));\n\t\t\tthis.descriptionColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));\n\t\t\tthis.sizeColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));\n\t\t\tthis.sendAndQuitButton = new System.Windows.Forms.Button();\n\t\t\tthis.quitButton = new System.Windows.Forms.Button();\n\t\t\tthis.toolTip = new System.Windows.Forms.ToolTip(this.components);\n\t\t\tthis.mainTabs.SuspendLayout();\n\t\t\tthis.generalTabPage.SuspendLayout();\n\t\t\t((System.ComponentModel.ISupportInitialize)(this.warningPictureBox)).BeginInit();\n\t\t\tthis.exceptionTabPage.SuspendLayout();\n\t\t\tthis.reportContentsTabPage.SuspendLayout();\n\t\t\tthis.SuspendLayout();\n\t\t\t// \n\t\t\t// mainTabs\n\t\t\t// \n\t\t\tthis.mainTabs.Controls.Add(this.generalTabPage);\n\t\t\tthis.mainTabs.Controls.Add(this.exceptionTabPage);\n\t\t\tthis.mainTabs.Controls.Add(this.reportContentsTabPage);\n\t\t\tthis.mainTabs.Location = new System.Drawing.Point(9, 6);\n\t\t\tthis.mainTabs.Margin = new System.Windows.Forms.Padding(0);\n\t\t\tthis.mainTabs.Name = \"mainTabs\";\n\t\t\tthis.mainTabs.SelectedIndex = 0;\n\t\t\tthis.mainTabs.Size = new System.Drawing.Size(475, 361);\n\t\t\tthis.mainTabs.TabIndex = 0;\n\t\t\t// \n\t\t\t// generalTabPage\n\t\t\t// \n\t\t\tthis.generalTabPage.Controls.Add(this.warningLabel);\n\t\t\tthis.generalTabPage.Controls.Add(this.exceptionTypeLabel);\n\t\t\tthis.generalTabPage.Controls.Add(this.exceptionTextBox);\n\t\t\tthis.generalTabPage.Controls.Add(this.descriptionTextBox);\n\t\t\tthis.generalTabPage.Controls.Add(this.errorDescriptionLabel);\n\t\t\tthis.generalTabPage.Controls.Add(this.clrTextBox);\n\t\t\tthis.generalTabPage.Controls.Add(this.clrLabel);\n\t\t\tthis.generalTabPage.Controls.Add(this.dateTimeTextBox);\n\t\t\tthis.generalTabPage.Controls.Add(this.dateTimeLabel);\n\t\t\tthis.generalTabPage.Controls.Add(this.nbugTextBox);\n\t\t\tthis.generalTabPage.Controls.Add(this.nbugLabel);\n\t\t\tthis.generalTabPage.Controls.Add(this.applicationTextBox);\n\t\t\tthis.generalTabPage.Controls.Add(this.applicationLabel);\n\t\t\tthis.generalTabPage.Controls.Add(this.targetSiteTextBox);\n\t\t\tthis.generalTabPage.Controls.Add(this.targetSiteLabel);\n\t\t\tthis.generalTabPage.Controls.Add(this.exceptionMessageTextBox);\n\t\t\tthis.generalTabPage.Controls.Add(this.warningPictureBox);\n\t\t\tthis.generalTabPage.Location = new System.Drawing.Point(4, 22);\n\t\t\tthis.generalTabPage.Name = \"generalTabPage\";\n\t\t\tthis.generalTabPage.Padding = new System.Windows.Forms.Padding(3);\n\t\t\tthis.generalTabPage.Size = new System.Drawing.Size(467, 335);\n\t\t\tthis.generalTabPage.TabIndex = 0;\n\t\t\tthis.generalTabPage.Text = \"General\";\n\t\t\tthis.generalTabPage.UseVisualStyleBackColor = true;\n\t\t\t// \n\t\t\t// warningLabel\n\t\t\t// \n\t\t\tthis.warningLabel.Location = new System.Drawing.Point(64, 12);\n\t\t\tthis.warningLabel.Name = \"warningLabel\";\n\t\t\tthis.warningLabel.Size = new System.Drawing.Size(388, 43);\n\t\t\tthis.warningLabel.TabIndex = 18;\n\t\t\tthis.warningLabel.Text = resources.GetString(\"warningLabel.Text\");\n\t\t\t// \n\t\t\t// exceptionTypeLabel\n\t\t\t// \n\t\t\tthis.exceptionTypeLabel.Image = global::NBug.Properties.Resources.NBug_Icon_PNG_16;\n\t\t\tthis.exceptionTypeLabel.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;\n\t\t\tthis.exceptionTypeLabel.Location = new System.Drawing.Point(21, 69);\n\t\t\tthis.exceptionTypeLabel.Name = \"exceptionTypeLabel\";\n\t\t\tthis.exceptionTypeLabel.Size = new System.Drawing.Size(106, 16);\n\t\t\tthis.exceptionTypeLabel.TabIndex = 17;\n\t\t\tthis.exceptionTypeLabel.Text = \"Exception Type:\";\n\t\t\tthis.exceptionTypeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;\n\t\t\t// \n\t\t\t// exceptionTextBox\n\t\t\t// \n\t\t\tthis.exceptionTextBox.Location = new System.Drawing.Point(135, 68);\n\t\t\tthis.exceptionTextBox.Name = \"exceptionTextBox\";\n\t\t\tthis.exceptionTextBox.Size = new System.Drawing.Size(317, 20);\n\t\t\tthis.exceptionTextBox.TabIndex = 2;\n\t\t\t// \n\t\t\t// descriptionTextBox\n\t\t\t// \n\t\t\tthis.descriptionTextBox.Location = new System.Drawing.Point(13, 267);\n\t\t\tthis.descriptionTextBox.Multiline = true;\n\t\t\tthis.descriptionTextBox.Name = \"descriptionTextBox\";\n\t\t\tthis.descriptionTextBox.Size = new System.Drawing.Size(439, 60);\n\t\t\tthis.descriptionTextBox.TabIndex = 15;\n\t\t\t// \n\t\t\t// errorDescriptionLabel\n\t\t\t// \n\t\t\tthis.errorDescriptionLabel.AutoSize = true;\n\t\t\tthis.errorDescriptionLabel.Location = new System.Drawing.Point(10, 251);\n\t\t\tthis.errorDescriptionLabel.Name = \"errorDescriptionLabel\";\n\t\t\tthis.errorDescriptionLabel.Size = new System.Drawing.Size(315, 13);\n\t\t\tthis.errorDescriptionLabel.TabIndex = 14;\n\t\t\tthis.errorDescriptionLabel.Text = \"Please add a brief description of how we can reproduce the error:\";\n\t\t\t// \n\t\t\t// clrTextBox\n\t\t\t// \n\t\t\tthis.clrTextBox.Location = new System.Drawing.Point(307, 216);\n\t\t\tthis.clrTextBox.Name = \"clrTextBox\";\n\t\t\tthis.clrTextBox.Size = new System.Drawing.Size(145, 20);\n\t\t\tthis.clrTextBox.TabIndex = 13;\n\t\t\t// \n\t\t\t// clrLabel\n\t\t\t// \n\t\t\tthis.clrLabel.AutoSize = true;\n\t\t\tthis.clrLabel.Location = new System.Drawing.Point(259, 219);\n\t\t\tthis.clrLabel.Name = \"clrLabel\";\n\t\t\tthis.clrLabel.Size = new System.Drawing.Size(31, 13);\n\t\t\tthis.clrLabel.TabIndex = 12;\n\t\t\tthis.clrLabel.Text = \"CLR:\";\n\t\t\t// \n\t\t\t// dateTimeTextBox\n\t\t\t// \n\t\t\tthis.dateTimeTextBox.Location = new System.Drawing.Point(78, 216);\n\t\t\tthis.dateTimeTextBox.Name = \"dateTimeTextBox\";\n\t\t\tthis.dateTimeTextBox.Size = new System.Drawing.Size(145, 20);\n\t\t\tthis.dateTimeTextBox.TabIndex = 11;\n\t\t\t// \n\t\t\t// dateTimeLabel\n\t\t\t// \n\t\t\tthis.dateTimeLabel.AutoSize = true;\n\t\t\tthis.dateTimeLabel.Location = new System.Drawing.Point(10, 219);\n\t\t\tthis.dateTimeLabel.Name = \"dateTimeLabel\";\n\t\t\tthis.dateTimeLabel.Size = new System.Drawing.Size(61, 13);\n\t\t\tthis.dateTimeLabel.TabIndex = 10;\n\t\t\tthis.dateTimeLabel.Text = \"Date/Time:\";\n\t\t\t// \n\t\t\t// nbugTextBox\n\t\t\t// \n\t\t\tthis.nbugTextBox.Location = new System.Drawing.Point(307, 182);\n\t\t\tthis.nbugTextBox.Name = \"nbugTextBox\";\n\t\t\tthis.nbugTextBox.Size = new System.Drawing.Size(145, 20);\n\t\t\tthis.nbugTextBox.TabIndex = 9;\n\t\t\t// \n\t\t\t// nbugLabel\n\t\t\t// \n\t\t\tthis.nbugLabel.AutoSize = true;\n\t\t\tthis.nbugLabel.Location = new System.Drawing.Point(259, 185);\n\t\t\tthis.nbugLabel.Name = \"nbugLabel\";\n\t\t\tthis.nbugLabel.Size = new System.Drawing.Size(37, 13);\n\t\t\tthis.nbugLabel.TabIndex = 8;\n\t\t\tthis.nbugLabel.Text = \"NBug:\";\n\t\t\t// \n\t\t\t// applicationTextBox\n\t\t\t// \n\t\t\tthis.applicationTextBox.Location = new System.Drawing.Point(78, 182);\n\t\t\tthis.applicationTextBox.Name = \"applicationTextBox\";\n\t\t\tthis.applicationTextBox.Size = new System.Drawing.Size(145, 20);\n\t\t\tthis.applicationTextBox.TabIndex = 7;\n\t\t\t// \n\t\t\t// applicationLabel\n\t\t\t// \n\t\t\tthis.applicationLabel.AutoSize = true;\n\t\t\tthis.applicationLabel.Location = new System.Drawing.Point(10, 185);\n\t\t\tthis.applicationLabel.Name = \"applicationLabel\";\n\t\t\tthis.applicationLabel.Size = new System.Drawing.Size(62, 13);\n\t\t\tthis.applicationLabel.TabIndex = 6;\n\t\t\tthis.applicationLabel.Text = \"Application:\";\n\t\t\t// \n\t\t\t// targetSiteTextBox\n\t\t\t// \n\t\t\tthis.targetSiteTextBox.Location = new System.Drawing.Point(78, 148);\n\t\t\tthis.targetSiteTextBox.Name = \"targetSiteTextBox\";\n\t\t\tthis.targetSiteTextBox.Size = new System.Drawing.Size(374, 20);\n\t\t\tthis.targetSiteTextBox.TabIndex = 5;\n\t\t\t// \n\t\t\t// targetSiteLabel\n\t\t\t// \n\t\t\tthis.targetSiteLabel.AutoSize = true;\n\t\t\tthis.targetSiteLabel.Location = new System.Drawing.Point(10, 151);\n\t\t\tthis.targetSiteLabel.Name = \"targetSiteLabel\";\n\t\t\tthis.targetSiteLabel.Size = new System.Drawing.Size(62, 13);\n\t\t\tthis.targetSiteLabel.TabIndex = 4;\n\t\t\tthis.targetSiteLabel.Text = \"Target Site:\";\n\t\t\t// \n\t\t\t// exceptionMessageTextBox\n\t\t\t// \n\t\t\tthis.exceptionMessageTextBox.Location = new System.Drawing.Point(13, 98);\n\t\t\tthis.exceptionMessageTextBox.Multiline = true;\n\t\t\tthis.exceptionMessageTextBox.Name = \"exceptionMessageTextBox\";\n\t\t\tthis.exceptionMessageTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;\n\t\t\tthis.exceptionMessageTextBox.Size = new System.Drawing.Size(439, 35);\n\t\t\tthis.exceptionMessageTextBox.TabIndex = 3;\n\t\t\t// \n\t\t\t// warningPictureBox\n\t\t\t// \n\t\t\tthis.warningPictureBox.Location = new System.Drawing.Point(16, 15);\n\t\t\tthis.warningPictureBox.Name = \"warningPictureBox\";\n\t\t\tthis.warningPictureBox.Size = new System.Drawing.Size(32, 32);\n\t\t\tthis.warningPictureBox.TabIndex = 1;\n\t\t\tthis.warningPictureBox.TabStop = false;\n\t\t\t// \n\t\t\t// exceptionTabPage\n\t\t\t// \n\t\t\tthis.exceptionTabPage.Controls.Add(this.exceptionDetails);\n\t\t\tthis.exceptionTabPage.Location = new System.Drawing.Point(4, 22);\n\t\t\tthis.exceptionTabPage.Name = \"exceptionTabPage\";\n\t\t\tthis.exceptionTabPage.Padding = new System.Windows.Forms.Padding(3);\n\t\t\tthis.exceptionTabPage.Size = new System.Drawing.Size(467, 335);\n\t\t\tthis.exceptionTabPage.TabIndex = 2;\n\t\t\tthis.exceptionTabPage.Text = \"Exception\";\n\t\t\tthis.exceptionTabPage.UseVisualStyleBackColor = true;\n\t\t\t// \n\t\t\t// exceptionDetails\n\t\t\t// \n\t\t\tthis.exceptionDetails.InformationColumnWidth = 350;\n\t\t\tthis.exceptionDetails.Location = new System.Drawing.Point(3, 3);\n\t\t\tthis.exceptionDetails.Name = \"exceptionDetails\";\n\t\t\tthis.exceptionDetails.PropertyColumnWidth = 101;\n\t\t\tthis.exceptionDetails.Size = new System.Drawing.Size(461, 330);\n\t\t\tthis.exceptionDetails.TabIndex = 0;\n\t\t\t// \n\t\t\t// reportContentsTabPage\n\t\t\t// \n\t\t\tthis.reportContentsTabPage.Controls.Add(this.reportPreviewTextBox);\n\t\t\tthis.reportContentsTabPage.Controls.Add(this.previewLabel);\n\t\t\tthis.reportContentsTabPage.Controls.Add(this.contentsLabel);\n\t\t\tthis.reportContentsTabPage.Controls.Add(this.reportContentsListView);\n\t\t\tthis.reportContentsTabPage.Location = new System.Drawing.Point(4, 22);\n\t\t\tthis.reportContentsTabPage.Name = \"reportContentsTabPage\";\n\t\t\tthis.reportContentsTabPage.Padding = new System.Windows.Forms.Padding(3);\n\t\t\tthis.reportContentsTabPage.Size = new System.Drawing.Size(467, 335);\n\t\t\tthis.reportContentsTabPage.TabIndex = 3;\n\t\t\tthis.reportContentsTabPage.Text = \"Report Contents\";\n\t\t\tthis.reportContentsTabPage.UseVisualStyleBackColor = true;\n\t\t\tthis.reportContentsTabPage.Enter += new System.EventHandler(this.ReportContentsTabPage_Enter);\n\t\t\t// \n\t\t\t// reportPreviewTextBox\n\t\t\t// \n\t\t\tthis.reportPreviewTextBox.Location = new System.Drawing.Point(6, 148);\n\t\t\tthis.reportPreviewTextBox.Multiline = true;\n\t\t\tthis.reportPreviewTextBox.Name = \"reportPreviewTextBox\";\n\t\t\tthis.reportPreviewTextBox.Size = new System.Drawing.Size(455, 172);\n\t\t\tthis.reportPreviewTextBox.TabIndex = 5;\n\t\t\t// \n\t\t\t// previewLabel\n\t\t\t// \n\t\t\tthis.previewLabel.AutoSize = true;\n\t\t\tthis.previewLabel.Location = new System.Drawing.Point(6, 131);\n\t\t\tthis.previewLabel.Name = \"previewLabel\";\n\t\t\tthis.previewLabel.Size = new System.Drawing.Size(48, 13);\n\t\t\tthis.previewLabel.TabIndex = 4;\n\t\t\tthis.previewLabel.Text = \"Preview:\";\n\t\t\t// \n\t\t\t// contentsLabel\n\t\t\t// \n\t\t\tthis.contentsLabel.AutoSize = true;\n\t\t\tthis.contentsLabel.Location = new System.Drawing.Point(6, 7);\n\t\t\tthis.contentsLabel.Name = \"contentsLabel\";\n\t\t\tthis.contentsLabel.Size = new System.Drawing.Size(288, 13);\n\t\t\tthis.contentsLabel.TabIndex = 3;\n\t\t\tthis.contentsLabel.Text = \"Double-click an item to open it with the associated program.\";\n\t\t\t// \n\t\t\t// reportContentsListView\n\t\t\t// \n\t\t\tthis.reportContentsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {\n            this.nameColumnHeader,\n            this.descriptionColumnHeader,\n            this.sizeColumnHeader});\n\t\t\tthis.reportContentsListView.Location = new System.Drawing.Point(6, 24);\n\t\t\tthis.reportContentsListView.Name = \"reportContentsListView\";\n\t\t\tthis.reportContentsListView.Size = new System.Drawing.Size(455, 97);\n\t\t\tthis.reportContentsListView.TabIndex = 0;\n\t\t\tthis.reportContentsListView.UseCompatibleStateImageBehavior = false;\n\t\t\tthis.reportContentsListView.View = System.Windows.Forms.View.Details;\n\t\t\t// \n\t\t\t// nameColumnHeader\n\t\t\t// \n\t\t\tthis.nameColumnHeader.Text = \"Name\";\n\t\t\tthis.nameColumnHeader.Width = 120;\n\t\t\t// \n\t\t\t// descriptionColumnHeader\n\t\t\t// \n\t\t\tthis.descriptionColumnHeader.Text = \"Description\";\n\t\t\tthis.descriptionColumnHeader.Width = 240;\n\t\t\t// \n\t\t\t// sizeColumnHeader\n\t\t\t// \n\t\t\tthis.sizeColumnHeader.Text = \"Size\";\n\t\t\tthis.sizeColumnHeader.Width = 80;\n\t\t\t// \n\t\t\t// sendAndQuitButton\n\t\t\t// \n\t\t\tthis.sendAndQuitButton.Image = global::NBug.Properties.Resources.Send;\n\t\t\tthis.sendAndQuitButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;\n\t\t\tthis.sendAndQuitButton.Location = new System.Drawing.Point(382, 374);\n\t\t\tthis.sendAndQuitButton.Name = \"sendAndQuitButton\";\n\t\t\tthis.sendAndQuitButton.Size = new System.Drawing.Size(102, 23);\n\t\t\tthis.sendAndQuitButton.TabIndex = 1;\n\t\t\tthis.sendAndQuitButton.Text = \"&Send and Quit\";\n\t\t\tthis.sendAndQuitButton.TextAlign = System.Drawing.ContentAlignment.MiddleRight;\n\t\t\tthis.sendAndQuitButton.UseVisualStyleBackColor = true;\n\t\t\tthis.sendAndQuitButton.Click += new System.EventHandler(this.SendAndQuitButton_Click);\n\t\t\t// \n\t\t\t// quitButton\n\t\t\t// \n\t\t\tthis.quitButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;\n\t\t\tthis.quitButton.Location = new System.Drawing.Point(296, 374);\n\t\t\tthis.quitButton.Name = \"quitButton\";\n\t\t\tthis.quitButton.Size = new System.Drawing.Size(75, 23);\n\t\t\tthis.quitButton.TabIndex = 2;\n\t\t\tthis.quitButton.Text = \"&Quit\";\n\t\t\tthis.quitButton.UseVisualStyleBackColor = true;\n\t\t\tthis.quitButton.Click += new System.EventHandler(this.QuitButton_Click);\n\t\t\t// \n\t\t\t// toolTip\n\t\t\t// \n\t\t\tthis.toolTip.AutomaticDelay = 100;\n\t\t\tthis.toolTip.UseAnimation = false;\n\t\t\tthis.toolTip.UseFading = false;\n\t\t\t// \n\t\t\t// Full\n\t\t\t// \n\t\t\tthis.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n\t\t\tthis.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n\t\t\tthis.CancelButton = this.quitButton;\n\t\t\tthis.ClientSize = new System.Drawing.Size(494, 403);\n\t\t\tthis.Controls.Add(this.quitButton);\n\t\t\tthis.Controls.Add(this.sendAndQuitButton);\n\t\t\tthis.Controls.Add(this.mainTabs);\n\t\t\tthis.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;\n\t\t\tthis.MaximizeBox = false;\n\t\t\tthis.MinimizeBox = false;\n\t\t\tthis.Name = \"Full\";\n\t\t\tthis.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;\n\t\t\tthis.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;\n\t\t\tthis.Text = \"{HostApplication} Error\";\n\t\t\tthis.TopMost = true;\n\t\t\tthis.mainTabs.ResumeLayout(false);\n\t\t\tthis.generalTabPage.ResumeLayout(false);\n\t\t\tthis.generalTabPage.PerformLayout();\n\t\t\t((System.ComponentModel.ISupportInitialize)(this.warningPictureBox)).EndInit();\n\t\t\tthis.exceptionTabPage.ResumeLayout(false);\n\t\t\tthis.reportContentsTabPage.ResumeLayout(false);\n\t\t\tthis.reportContentsTabPage.PerformLayout();\n\t\t\tthis.ResumeLayout(false);\n\n\t\t}\n\n\t\t#endregion\n\n\t\tprivate System.Windows.Forms.TabControl mainTabs;\n\t\tprivate System.Windows.Forms.TabPage generalTabPage;\n\t\tprivate System.Windows.Forms.Button sendAndQuitButton;\n\t\tprivate System.Windows.Forms.Button quitButton;\n\t\tprivate System.Windows.Forms.TabPage exceptionTabPage;\n\t\tprivate System.Windows.Forms.PictureBox warningPictureBox;\n\t\tprivate System.Windows.Forms.TextBox exceptionMessageTextBox;\n\t\tprivate System.Windows.Forms.TextBox exceptionTextBox;\n\t\tprivate System.Windows.Forms.TextBox targetSiteTextBox;\n\t\tprivate System.Windows.Forms.Label targetSiteLabel;\n\t\tprivate System.Windows.Forms.TextBox nbugTextBox;\n\t\tprivate System.Windows.Forms.Label nbugLabel;\n\t\tprivate System.Windows.Forms.TextBox applicationTextBox;\n\t\tprivate System.Windows.Forms.Label applicationLabel;\n\t\tprivate System.Windows.Forms.TextBox descriptionTextBox;\n\t\tprivate System.Windows.Forms.Label errorDescriptionLabel;\n\t\tprivate System.Windows.Forms.TextBox clrTextBox;\n\t\tprivate System.Windows.Forms.Label clrLabel;\n\t\tprivate System.Windows.Forms.TextBox dateTimeTextBox;\n\t\tprivate System.Windows.Forms.Label dateTimeLabel;\n\t\tprivate System.Windows.Forms.TabPage reportContentsTabPage;\n\t\tprivate System.Windows.Forms.TextBox reportPreviewTextBox;\n\t\tprivate System.Windows.Forms.Label previewLabel;\n\t\tprivate System.Windows.Forms.Label contentsLabel;\n\t\tprivate System.Windows.Forms.ListView reportContentsListView;\n\t\tprivate System.Windows.Forms.ColumnHeader nameColumnHeader;\n\t\tprivate System.Windows.Forms.ColumnHeader descriptionColumnHeader;\n\t\tprivate System.Windows.Forms.ColumnHeader sizeColumnHeader;\n\t\tprivate System.Windows.Forms.Label exceptionTypeLabel;\n\t\tprivate System.Windows.Forms.ToolTip toolTip;\n\t\tprivate System.Windows.Forms.Label warningLabel;\n\t\tprivate ExceptionDetails exceptionDetails;\n\t}\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Full.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Drawing;\nusing System.Windows.Forms;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Serialization;\nusing NBug.Properties;\n\nnamespace NBug.Core.UI.WinForms\n{\n    internal partial class Full : Form\n    {\n        private UIDialogResult uiDialogResult;\n\n        internal Full()\n        {\n            InitializeComponent();\n            Icon = Resources.NBug_icon_16;\n            warningLabel.Text = Settings.Resources.UI_Dialog_Full_Message;\n            generalTabPage.Text = Settings.Resources.UI_Dialog_Full_General_Tab;\n            exceptionTabPage.Text = Settings.Resources.UI_Dialog_Full_Exception_Tab;\n            reportContentsTabPage.Text = Settings.Resources.UI_Dialog_Full_Report_Contents_Tab;\n            errorDescriptionLabel.Text = Settings.Resources.UI_Dialog_Full_How_to_Reproduce_the_Error_Notification;\n            quitButton.Text = Settings.Resources.UI_Dialog_Full_Quit_Button;\n            sendAndQuitButton.Text = Settings.Resources.UI_Dialog_Full_Send_and_Quit_Button;\n            \n            mainTabs.TabPages.Remove(mainTabs.TabPages[\"reportContentsTabPage\"]);\n        }\n\n        internal UIDialogResult ShowDialog(SerializableException exception, Report report)\n        {\n            Text = string.Format(\"{0} {1}\", report.GeneralInfo.HostApplication, Settings.Resources.UI_Dialog_Full_Title);\n\n            // Fill in the 'General' tab\n            warningPictureBox.Image = SystemIcons.Warning.ToBitmap();\n            exceptionTextBox.Text = exception.Type;\n            exceptionMessageTextBox.Text = exception.Message;\n            targetSiteTextBox.Text = exception.TargetSite;\n            applicationTextBox.Text = report.GeneralInfo.HostApplication + \" [\" +\n                                      report.GeneralInfo.HostApplicationVersion + \"]\";\n            nbugTextBox.Text = report.GeneralInfo.NBugVersion;\n            dateTimeTextBox.Text = report.GeneralInfo.DateTime;\n            clrTextBox.Text = report.GeneralInfo.CLRVersion;\n\n            // Fill in the 'Exception' tab\n            exceptionDetails.Initialize(exception);\n            \n            ShowDialog();\n\n            // Write back the user description (as we passed 'report' as a reference since it is a refence object anyway)\n            report.GeneralInfo.UserDescription = descriptionTextBox.Text;\n            return uiDialogResult;\n        }\n\n        private void QuitButton_Click(object sender, EventArgs e)\n        {\n            uiDialogResult = new UIDialogResult(ExecutionFlow.BreakExecution, SendReport.DoNotSend);\n            Close();\n        }\n\n        private void ReportContentsTabPage_Enter(object sender, EventArgs e)\n        {\n            /*using (Storer storer = new Storer())\n\t\t\tusing (ZipStorer zipStorer = ZipStorer.Open(storer.GetFirstReportFile(), FileAccess.Read))\n\t\t\tusing (Stream zipItemStream = new MemoryStream())\n\t\t\t{\n\t\t\t\tList<ZipStorer.ZipFileEntry> zipDirectory = zipStorer.ReadCentralDir();\n\n\t\t\t\tforeach (ZipStorer.ZipFileEntry entry in zipDirectory)\n\t\t\t\t{\n\t\t\t\t\tzipItemStream.SetLength(0);\n\t\t\t\t\tzipStorer.ExtractFile(entry, zipItemStream);\n\t\t\t\t\tzipItemStream.Position = 0;\n\t\t\t\t\tthis.reportContentsListView.Items.Add(entry.FilenameInZip);\n\t\t\t\t}\n\t\t\t}*/\n        }\n\n        private void SendAndQuitButton_Click(object sender, EventArgs e)\n        {\n            uiDialogResult = new UIDialogResult(ExecutionFlow.BreakExecution, SendReport.Send);\n            Close();\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"warningLabel.Text\" xml:space=\"preserve\">\n    <value>La aplicación ha colapsado y ahora se cerrará. Si hace clic en Salir, la aplicación se cerrará inmediatamente. Si hace clic en Enviar y Salir, la aplicación se cerrará y se enviará un informe de error.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"warningLabel.Text\" xml:space=\"preserve\">\n    <value>L'application a planté et elle va maintenant être arrêtée. Si vous cliquez sur Quitter, l'application se fermera immédiatement. Si vous cliquez sur Envoyer et Quitter, l'application se fermera et un rapport de bogue sera envoyé.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"warningLabel.Text\" xml:space=\"preserve\">\n    <value>Az alkalmazás összeomlott, és most bezárul. Ha a Kilépés gombra kattint, az alkalmazás azonnal bezárul. Ha a Küldés és kilépés gombra kattint, az alkalmazás bezárul, és hibajelentést küld.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"warningLabel.Text\" xml:space=\"preserve\">\n    <value>アプリケーションがクラッシュし、これから終了します。\n\n「終了」をクリックすると、アプリケーションは即座に閉じます。\n\n「送信して終了」をクリックすると、アプリケーションは閉じ、バグレポートが送信されます。\n</value>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"warningLabel.Text\" xml:space=\"preserve\">\r\n    <value>De toepassing is gecrasht en wordt nu afgesloten. Als u op Verlaten klikt, wordt de toepassing onmiddellijk afgesloten. Als u op \"Verzenden en afsluiten\" klikt, wordt de toepassing afgesloten en wordt er een bugrapport verzonden.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"warningLabel.Text\" xml:space=\"preserve\">\n    <value>A aplicação encontrou um erro e será encerrada agora. Se você clicar em \"Sair\", o aplicativo será fechado imediatamente. Se você clicar em \"Enviar e Sair\", o aplicativo será fechado e um relatório de erro será enviado.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"warningLabel.Text\" xml:space=\"preserve\">\n    <value>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</value>\n  </data>\n  <metadata name=\"toolTip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>18, 13</value>\n  </metadata>\n  <metadata name=\"$this.TrayHeight\" type=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>45</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"warningLabel.Text\" xml:space=\"preserve\">\n    <value>Programmet har kraschat och kommer nu att avslutas. Om du klickar på Avsluta stängs programmet omedelbart. Om du klickar på Skicka och Avsluta kommer programmet att stängas och en felrapport kommer att skickas.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"warningLabel.Text\" xml:space=\"preserve\">\n    <value>Uygulama çökmüştür ve şimdi kapatılacaktır. Eğer Çık'a tıklarsanız, uygulama hemen kapanacaktır. Gönder ve Çık'a tıklarsanız, uygulama kapanacak ve bir hata raporu gönderilecektir.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"warningLabel.Text\" xml:space=\"preserve\">\n    <value>Ứng dụng đã gặp sự cố và sẽ tự động đóng. Nếu bạn nhấp chuột vào nút \"Thoát\", ứng dụng sẽ đóng ngay lập tức. Nếu bạn nhấp chuột vào nút \"Gửi và Thoát\", ứng dụng sẽ đóng và đồng thời gửi một báo cáo lỗi về sự cố này.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"warningLabel.Text\" xml:space=\"preserve\">\n    <value>应用程序已崩溃，现在将被关闭。如果单击“Quit”，应用程序将立即关闭。如果单击Send and Quit，应用程序将关闭并发送错误报告。</value>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Full.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"warningLabel.Text\" xml:space=\"preserve\">\n    <value>應用程式已當機，現在將被關閉。如果點擊\"Quit\"，應用程式將立即關閉，如果點擊Send and Quit，應用程式將關閉並傳送錯誤報告。</value>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Minimal.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Minimal.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System.Windows.Forms;\nusing NBug.Core.Reporting.Info;\nusing NBug.Properties;\n\nnamespace NBug.Core.UI.WinForms\n{\n    internal class Minimal\n    {\n        internal UIDialogResult ShowDialog(Report report)\n        {\n            MessageBox.Show(\n                new Form {TopMost = true},\n                Settings.Resources.UI_Dialog_Minimal_Message,\n                report.GeneralInfo.HostApplication + \" \" + Localization.UI_Dialog_Minimal_Title,\n                MessageBoxButtons.OK,\n                MessageBoxIcon.Warning);\n\n            return new UIDialogResult(ExecutionFlow.BreakExecution, SendReport.Send);\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Normal.Designer.cs",
    "content": "﻿namespace NBug.Core.UI.WinForms\n{\n\tpartial class Normal\n\t{\n\t\t/// <summary>\n\t\t/// Required designer variable.\n\t\t/// </summary>\n\t\tprivate System.ComponentModel.IContainer components = null;\n\n\t\t/// <summary>\n\t\t/// Clean up any resources being used.\n\t\t/// </summary>\n\t\t/// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n\t\tprotected override void Dispose(bool disposing)\n\t\t{\n\t\t\tif (disposing && (components != null))\n\t\t\t{\n\t\t\t\tcomponents.Dispose();\n\t\t\t}\n\t\t\tbase.Dispose(disposing);\n\t\t}\n\n\t\t#region Windows Form Designer generated code\n\n\t\t/// <summary>\n\t\t/// Required method for Designer support - do not modify\n\t\t/// the contents of this method with the code editor.\n\t\t/// </summary>\n\t\tprivate void InitializeComponent()\n\t\t{\n\t\t\tthis.warningPictureBox = new System.Windows.Forms.PictureBox();\n\t\t\tthis.warningLabel = new System.Windows.Forms.Label();\n\t\t\tthis.exceptionMessageLabel = new System.Windows.Forms.Label();\n\t\t\tthis.quitButton = new System.Windows.Forms.Button();\n\t\t\tthis.continueButton = new System.Windows.Forms.Button();\n\t\t\t((System.ComponentModel.ISupportInitialize)(this.warningPictureBox)).BeginInit();\n\t\t\tthis.SuspendLayout();\n\t\t\t// \n\t\t\t// warningPictureBox\n\t\t\t// \n\t\t\tthis.warningPictureBox.Location = new System.Drawing.Point(12, 12);\n\t\t\tthis.warningPictureBox.Name = \"warningPictureBox\";\n\t\t\tthis.warningPictureBox.Size = new System.Drawing.Size(32, 32);\n\t\t\tthis.warningPictureBox.TabIndex = 0;\n\t\t\tthis.warningPictureBox.TabStop = false;\n\t\t\t// \n\t\t\t// warningLabel\n\t\t\t// \n\t\t\tthis.warningLabel.Location = new System.Drawing.Point(77, 12);\n\t\t\tthis.warningLabel.Name = \"warningLabel\";\n\t\t\tthis.warningLabel.Size = new System.Drawing.Size(347, 47);\n\t\t\tthis.warningLabel.TabIndex = 4;\n\t\t\tthis.warningLabel.Text = \"Unhandled exception has occurred in your application. If you click Continue, the \" +\n    \"application will ignore this error and attempt to continue. If you click quit, t\" +\n    \"he application will close immediately.\";\n\t\t\t// \n\t\t\t// exceptionMessageLabel\n\t\t\t// \n\t\t\tthis.exceptionMessageLabel.Location = new System.Drawing.Point(77, 64);\n\t\t\tthis.exceptionMessageLabel.Name = \"exceptionMessageLabel\";\n\t\t\tthis.exceptionMessageLabel.Size = new System.Drawing.Size(347, 47);\n\t\t\tthis.exceptionMessageLabel.TabIndex = 3;\n\t\t\t// \n\t\t\t// quitButton\n\t\t\t// \n\t\t\tthis.quitButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;\n\t\t\tthis.quitButton.Location = new System.Drawing.Point(329, 119);\n\t\t\tthis.quitButton.Name = \"quitButton\";\n\t\t\tthis.quitButton.Size = new System.Drawing.Size(100, 23);\n\t\t\tthis.quitButton.TabIndex = 1;\n\t\t\tthis.quitButton.Text = \"Quit\";\n\t\t\tthis.quitButton.UseVisualStyleBackColor = true;\n\t\t\tthis.quitButton.Click += new System.EventHandler(this.QuitButton_Click);\n\t\t\t// \n\t\t\t// continueButton\n\t\t\t// \n\t\t\tthis.continueButton.Location = new System.Drawing.Point(223, 119);\n\t\t\tthis.continueButton.Name = \"continueButton\";\n\t\t\tthis.continueButton.Size = new System.Drawing.Size(100, 23);\n\t\t\tthis.continueButton.TabIndex = 2;\n\t\t\tthis.continueButton.Text = \"Continue\";\n\t\t\tthis.continueButton.UseVisualStyleBackColor = true;\n\t\t\tthis.continueButton.Click += new System.EventHandler(this.ContinueButton_Click);\n\t\t\t// \n\t\t\t// Normal\n\t\t\t// \n\t\t\tthis.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n\t\t\tthis.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n\t\t\tthis.CancelButton = this.quitButton;\n\t\t\tthis.ClientSize = new System.Drawing.Size(436, 148);\n\t\t\tthis.Controls.Add(this.continueButton);\n\t\t\tthis.Controls.Add(this.quitButton);\n\t\t\tthis.Controls.Add(this.exceptionMessageLabel);\n\t\t\tthis.Controls.Add(this.warningLabel);\n\t\t\tthis.Controls.Add(this.warningPictureBox);\n\t\t\tthis.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;\n\t\t\tthis.MaximizeBox = false;\n\t\t\tthis.MinimizeBox = false;\n\t\t\tthis.Name = \"Normal\";\n\t\t\tthis.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;\n\t\t\tthis.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;\n\t\t\tthis.Text = \"{HostApplication} Error\";\n\t\t\tthis.TopMost = true;\n\t\t\t((System.ComponentModel.ISupportInitialize)(this.warningPictureBox)).EndInit();\n\t\t\tthis.ResumeLayout(false);\n\n\t\t}\n\n\t\t#endregion\n\n\t\tprivate System.Windows.Forms.PictureBox warningPictureBox;\n\t\tprivate System.Windows.Forms.Label warningLabel;\n\t\tprivate System.Windows.Forms.Label exceptionMessageLabel;\n\t\tprivate System.Windows.Forms.Button quitButton;\n\t\tprivate System.Windows.Forms.Button continueButton;\n\t}\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Normal.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Normal.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Drawing;\nusing System.Windows.Forms;\nusing NBug.Core.Reporting.Info;\nusing NBug.Properties;\n\nnamespace NBug.Core.UI.WinForms\n{\n    internal partial class Normal : Form\n    {\n        private UIDialogResult uiDialogResult;\n\n        internal Normal()\n        {\n            InitializeComponent();\n            Icon = Resources.NBug_icon_16;\n            warningPictureBox.Image = SystemIcons.Warning.ToBitmap();\n            warningLabel.Text = Settings.Resources.UI_Dialog_Normal_Message;\n            continueButton.Text = Settings.Resources.UI_Dialog_Normal_Continue_Button;\n            quitButton.Text = Settings.Resources.UI_Dialog_Normal_Quit_Button;\n        }\n\n        internal UIDialogResult ShowDialog(Report report)\n        {\n            Text = string.Format(\"{0} {1}\", report.GeneralInfo.HostApplication,\n                Settings.Resources.UI_Dialog_Normal_Title);\n            exceptionMessageLabel.Text = report.GeneralInfo.ExceptionMessage;\n\n            ShowDialog();\n\n            return uiDialogResult;\n        }\n\n        private void ContinueButton_Click(object sender, EventArgs e)\n        {\n            uiDialogResult = new UIDialogResult(ExecutionFlow.ContinueExecution, SendReport.Send);\n            Close();\n        }\n\n        private void QuitButton_Click(object sender, EventArgs e)\n        {\n            uiDialogResult = new UIDialogResult(ExecutionFlow.BreakExecution, SendReport.Send);\n            Close();\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Normal.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Panels/ExceptionDetailView.Designer.cs",
    "content": "﻿namespace NBug.Core.UI.WinForms.Panels\n{\n\tpartial class ExceptionDetailView\n\t{\n\t\t/// <summary>\n\t\t/// Required designer variable.\n\t\t/// </summary>\n\t\tprivate System.ComponentModel.IContainer components = null;\n\n\t\t/// <summary>\n\t\t/// Clean up any resources being used.\n\t\t/// </summary>\n\t\t/// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n\t\tprotected override void Dispose(bool disposing)\n\t\t{\n\t\t\tif (disposing && (components != null))\n\t\t\t{\n\t\t\t\tcomponents.Dispose();\n\t\t\t}\n\t\t\tbase.Dispose(disposing);\n\t\t}\n\n\t\t#region Windows Form Designer generated code\n\n\t\t/// <summary>\n\t\t/// Required method for Designer support - do not modify\n\t\t/// the contents of this method with the code editor.\n\t\t/// </summary>\n\t\tprivate void InitializeComponent()\n\t\t{\n\t\t\tthis.propertyLabel = new System.Windows.Forms.Label();\n\t\t\tthis.propertyTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.propertyInformationTextBox = new System.Windows.Forms.TextBox();\n\t\t\tthis.closeButton = new System.Windows.Forms.Button();\n\t\t\tthis.topPanel = new System.Windows.Forms.Panel();\n\t\t\tthis.statusStrip = new System.Windows.Forms.StatusStrip();\n\t\t\tthis.topPanel.SuspendLayout();\n\t\t\tthis.SuspendLayout();\n\t\t\t// \n\t\t\t// propertyLabel\n\t\t\t// \n\t\t\tthis.propertyLabel.AutoSize = true;\n\t\t\tthis.propertyLabel.Location = new System.Drawing.Point(2, 8);\n\t\t\tthis.propertyLabel.Name = \"propertyLabel\";\n\t\t\tthis.propertyLabel.Size = new System.Drawing.Size(49, 13);\n\t\t\tthis.propertyLabel.TabIndex = 0;\n\t\t\tthis.propertyLabel.Text = \"Property:\";\n\t\t\t// \n\t\t\t// propertyTextBox\n\t\t\t// \n\t\t\tthis.propertyTextBox.Location = new System.Drawing.Point(57, 5);\n\t\t\tthis.propertyTextBox.Name = \"propertyTextBox\";\n\t\t\tthis.propertyTextBox.Size = new System.Drawing.Size(441, 20);\n\t\t\tthis.propertyTextBox.TabIndex = 2;\n\t\t\t// \n\t\t\t// propertyInformationTextBox\n\t\t\t// \n\t\t\tthis.propertyInformationTextBox.Dock = System.Windows.Forms.DockStyle.Fill;\n\t\t\tthis.propertyInformationTextBox.Location = new System.Drawing.Point(0, 32);\n\t\t\tthis.propertyInformationTextBox.Multiline = true;\n\t\t\tthis.propertyInformationTextBox.Name = \"propertyInformationTextBox\";\n\t\t\tthis.propertyInformationTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;\n\t\t\tthis.propertyInformationTextBox.Size = new System.Drawing.Size(567, 169);\n\t\t\tthis.propertyInformationTextBox.TabIndex = 3;\n\t\t\tthis.propertyInformationTextBox.WordWrap = false;\n\t\t\t// \n\t\t\t// closeButton\n\t\t\t// \n\t\t\tthis.closeButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;\n\t\t\tthis.closeButton.Location = new System.Drawing.Point(504, 6);\n\t\t\tthis.closeButton.Name = \"closeButton\";\n\t\t\tthis.closeButton.Size = new System.Drawing.Size(60, 20);\n\t\t\tthis.closeButton.TabIndex = 1;\n\t\t\tthis.closeButton.Text = \"&Close\";\n\t\t\tthis.closeButton.UseVisualStyleBackColor = true;\n\t\t\tthis.closeButton.Click += new System.EventHandler(this.CloseButton_Click);\n\t\t\t// \n\t\t\t// topPanel\n\t\t\t// \n\t\t\tthis.topPanel.Controls.Add(this.closeButton);\n\t\t\tthis.topPanel.Dock = System.Windows.Forms.DockStyle.Top;\n\t\t\tthis.topPanel.Location = new System.Drawing.Point(0, 0);\n\t\t\tthis.topPanel.Name = \"topPanel\";\n\t\t\tthis.topPanel.Size = new System.Drawing.Size(567, 32);\n\t\t\tthis.topPanel.TabIndex = 4;\n\t\t\t// \n\t\t\t// statusStrip\n\t\t\t// \n\t\t\tthis.statusStrip.AutoSize = false;\n\t\t\tthis.statusStrip.Location = new System.Drawing.Point(0, 201);\n\t\t\tthis.statusStrip.Name = \"statusStrip\";\n\t\t\tthis.statusStrip.Size = new System.Drawing.Size(567, 17);\n\t\t\tthis.statusStrip.TabIndex = 5;\n\t\t\t// \n\t\t\t// ExceptionDetailView\n\t\t\t// \n\t\t\tthis.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n\t\t\tthis.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n\t\t\tthis.CancelButton = this.closeButton;\n\t\t\tthis.ClientSize = new System.Drawing.Size(567, 218);\n\t\t\tthis.Controls.Add(this.propertyInformationTextBox);\n\t\t\tthis.Controls.Add(this.statusStrip);\n\t\t\tthis.Controls.Add(this.propertyTextBox);\n\t\t\tthis.Controls.Add(this.propertyLabel);\n\t\t\tthis.Controls.Add(this.topPanel);\n\t\t\tthis.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;\n\t\t\tthis.Name = \"ExceptionDetailView\";\n\t\t\tthis.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;\n\t\t\tthis.Text = \"Property Details\";\n\t\t\tthis.TopMost = true;\n\t\t\tthis.topPanel.ResumeLayout(false);\n\t\t\tthis.ResumeLayout(false);\n\t\t\tthis.PerformLayout();\n\n\t\t}\n\n\t\t#endregion\n\n\t\tprivate System.Windows.Forms.Label propertyLabel;\n\t\tprivate System.Windows.Forms.TextBox propertyTextBox;\n\t\tprivate System.Windows.Forms.TextBox propertyInformationTextBox;\n\t\tprivate System.Windows.Forms.Button closeButton;\n\t\tprivate System.Windows.Forms.Panel topPanel;\n\t\tprivate System.Windows.Forms.StatusStrip statusStrip;\n\t}\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Panels/ExceptionDetailView.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"ExceptionDetailView.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Windows.Forms;\n\nnamespace NBug.Core.UI.WinForms.Panels\n{\n    internal partial class ExceptionDetailView : Form\n    {\n        public ExceptionDetailView()\n        {\n            InitializeComponent();\n        }\n\n        internal void ShowDialog(string property, string info)\n        {\n            propertyTextBox.Text = property;\n            propertyInformationTextBox.Text = info;\n            ShowDialog();\n        }\n\n        private void CloseButton_Click(object sender, EventArgs e)\n        {\n            Close();\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Panels/ExceptionDetailView.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <metadata name=\"statusStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>17, 17</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Panels/ExceptionDetails.Designer.cs",
    "content": "﻿namespace NBug.Core.UI.WinForms.Panels\n{\n\tpartial class ExceptionDetails\n\t{\n\t\t/// <summary> \n\t\t/// Required designer variable.\n\t\t/// </summary>\n\t\tprivate System.ComponentModel.IContainer components = null;\n\n\t\t/// <summary> \n\t\t/// Clean up any resources being used.\n\t\t/// </summary>\n\t\t/// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n\t\tprotected override void Dispose(bool disposing)\n\t\t{\n\t\t\tif (disposing && (components != null))\n\t\t\t{\n\t\t\t\tcomponents.Dispose();\n\t\t\t}\n\t\t\tbase.Dispose(disposing);\n\t\t}\n\n\t\t#region Component Designer generated code\n\n\t\t/// <summary> \n\t\t/// Required method for Designer support - do not modify \n\t\t/// the contents of this method with the code editor.\n\t\t/// </summary>\n\t\tprivate void InitializeComponent()\n\t\t{\n\t\t\tthis.components = new System.ComponentModel.Container();\n\t\t\tthis.exceptionDetailsListView = new System.Windows.Forms.ListView();\n\t\t\tthis.propertyColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));\n\t\t\tthis.informationColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));\n\t\t\tthis.exceptionDetailsLabel = new System.Windows.Forms.Label();\n\t\t\tthis.exceptionLabel = new System.Windows.Forms.Label();\n\t\t\tthis.exceptionTreeView = new System.Windows.Forms.TreeView();\n\t\t\tthis.toolTip = new System.Windows.Forms.ToolTip(this.components);\n\t\t\tthis.SuspendLayout();\n\t\t\t// \n\t\t\t// exceptionDetailsListView\n\t\t\t// \n\t\t\tthis.exceptionDetailsListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) \n            | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.exceptionDetailsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {\n            this.propertyColumnHeader,\n            this.informationColumnHeader});\n\t\t\tthis.exceptionDetailsListView.FullRowSelect = true;\n\t\t\tthis.exceptionDetailsListView.GridLines = true;\n\t\t\tthis.exceptionDetailsListView.Location = new System.Drawing.Point(3, 110);\n\t\t\tthis.exceptionDetailsListView.MultiSelect = false;\n\t\t\tthis.exceptionDetailsListView.Name = \"exceptionDetailsListView\";\n\t\t\tthis.exceptionDetailsListView.Size = new System.Drawing.Size(455, 217);\n\t\t\tthis.exceptionDetailsListView.TabIndex = 5;\n\t\t\tthis.exceptionDetailsListView.UseCompatibleStateImageBehavior = false;\n\t\t\tthis.exceptionDetailsListView.View = System.Windows.Forms.View.Details;\n\t\t\tthis.exceptionDetailsListView.ItemMouseHover += new System.Windows.Forms.ListViewItemMouseHoverEventHandler(this.ExceptionDetailsListView_ItemMouseHover);\n\t\t\tthis.exceptionDetailsListView.DoubleClick += new System.EventHandler(this.ExceptionDetailsListView_DoubleClick);\n\t\t\t// \n\t\t\t// propertyColumnHeader\n\t\t\t// \n\t\t\tthis.propertyColumnHeader.Text = \"Property\";\n\t\t\tthis.propertyColumnHeader.Width = 101;\n\t\t\t// \n\t\t\t// informationColumnHeader\n\t\t\t// \n\t\t\tthis.informationColumnHeader.Text = \"Information\";\n\t\t\tthis.informationColumnHeader.Width = 350;\n\t\t\t// \n\t\t\t// exceptionDetailsLabel\n\t\t\t// \n\t\t\tthis.exceptionDetailsLabel.AutoSize = true;\n\t\t\tthis.exceptionDetailsLabel.Location = new System.Drawing.Point(3, 92);\n\t\t\tthis.exceptionDetailsLabel.Name = \"exceptionDetailsLabel\";\n\t\t\tthis.exceptionDetailsLabel.Size = new System.Drawing.Size(265, 13);\n\t\t\tthis.exceptionDetailsLabel.TabIndex = 7;\n\t\t\tthis.exceptionDetailsLabel.Text = \"Exception Details (double click on items to see details):\";\n\t\t\t// \n\t\t\t// exceptionLabel\n\t\t\t// \n\t\t\tthis.exceptionLabel.AutoSize = true;\n\t\t\tthis.exceptionLabel.Location = new System.Drawing.Point(3, 4);\n\t\t\tthis.exceptionLabel.Name = \"exceptionLabel\";\n\t\t\tthis.exceptionLabel.Size = new System.Drawing.Size(68, 13);\n\t\t\tthis.exceptionLabel.TabIndex = 6;\n\t\t\tthis.exceptionLabel.Text = \"Exception(s):\";\n\t\t\t// \n\t\t\t// exceptionTreeView\n\t\t\t// \n\t\t\tthis.exceptionTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n\t\t\tthis.exceptionTreeView.Location = new System.Drawing.Point(3, 22);\n\t\t\tthis.exceptionTreeView.Name = \"exceptionTreeView\";\n\t\t\tthis.exceptionTreeView.Size = new System.Drawing.Size(455, 60);\n\t\t\tthis.exceptionTreeView.TabIndex = 4;\n\t\t\tthis.exceptionTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.ExceptionTreeView_AfterSelect);\n\t\t\t// \n\t\t\t// ExceptionDetails\n\t\t\t// \n\t\t\tthis.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\n\t\t\tthis.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n\t\t\tthis.Controls.Add(this.exceptionDetailsListView);\n\t\t\tthis.Controls.Add(this.exceptionDetailsLabel);\n\t\t\tthis.Controls.Add(this.exceptionLabel);\n\t\t\tthis.Controls.Add(this.exceptionTreeView);\n\t\t\tthis.Name = \"ExceptionDetails\";\n\t\t\tthis.Size = new System.Drawing.Size(461, 330);\n\t\t\tthis.ResumeLayout(false);\n\t\t\tthis.PerformLayout();\n\n\t\t}\n\n\t\t#endregion\n\n\t\tprivate System.Windows.Forms.ListView exceptionDetailsListView;\n\t\tprivate System.Windows.Forms.ColumnHeader propertyColumnHeader;\n\t\tprivate System.Windows.Forms.ColumnHeader informationColumnHeader;\n\t\tprivate System.Windows.Forms.Label exceptionDetailsLabel;\n\t\tprivate System.Windows.Forms.Label exceptionLabel;\n\t\tprivate System.Windows.Forms.TreeView exceptionTreeView;\n\t\tprivate System.Windows.Forms.ToolTip toolTip;\n\t}\n}\n"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Panels/ExceptionDetails.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"ExceptionDetails.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Windows.Forms;\nusing NBug.Core.Util.Serialization;\n\nnamespace NBug.Core.UI.WinForms.Panels\n{\n    internal partial class ExceptionDetails : UserControl\n    {\n        private readonly Dictionary<TreeNode, SerializableException> exceptionDetailsList = new();\n\n        public ExceptionDetails()\n        {\n            InitializeComponent();\n        }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public int InformationColumnWidth\n        {\n            get { return exceptionDetailsListView.Columns[1].Width; }\n\n            set { exceptionDetailsListView.Columns[1].Width = value; }\n        }\n\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\n        public int PropertyColumnWidth\n        {\n            get { return exceptionDetailsListView.Columns[0].Width; }\n\n            set { exceptionDetailsListView.Columns[0].Width = value; }\n        }\n\n        internal void Initialize(SerializableException exception)\n        {\n            exceptionDetailsList.Add(exceptionTreeView.Nodes.Add(exception.Type), exception);\n\n            if (exception.InnerException != null)\n            {\n                FillInnerExceptionTree(exception.InnerException, exceptionTreeView.Nodes[0]);\n            }\n\n            if (exception.InnerExceptions != null)\n            {\n                foreach (var innerException in exception.InnerExceptions)\n                {\n                    FillInnerExceptionTree(innerException, exceptionTreeView.Nodes[0]);\n                }\n            }\n\n            exceptionTreeView.ExpandAll();\n            DisplayExceptionDetails(exceptionTreeView.Nodes[0]);\n        }\n\n        private void DisplayExceptionDetails(TreeNode node)\n        {\n            var exception = exceptionDetailsList[node];\n            exceptionDetailsListView.SuspendLayout();\n            exceptionDetailsListView.Items.Clear();\n\n            if (exception.Type != null)\n            {\n                exceptionDetailsListView.Items.Add(\"Exception\").SubItems.Add(exception.Type);\n            }\n\n            if (exception.Message != null)\n            {\n                exceptionDetailsListView.Items.Add(\"Message\").SubItems.Add(exception.Message);\n            }\n\n            if (exception.TargetSite != null)\n            {\n                exceptionDetailsListView.Items.Add(\"Target Site\").SubItems.Add(exception.TargetSite);\n            }\n\n            if (exception.InnerException != null)\n            {\n                exceptionDetailsListView.Items.Add(\"Inner Exception\").SubItems.Add(exception.InnerException.Type);\n            }\n\n            if (exception.Source != null)\n            {\n                exceptionDetailsListView.Items.Add(\"Source\").SubItems.Add(exception.Source);\n            }\n\n            if (exception.HelpLink != null)\n            {\n                exceptionDetailsListView.Items.Add(\"Help Link\").SubItems.Add(exception.HelpLink);\n            }\n\n            if (exception.StackTrace != null)\n            {\n                exceptionDetailsListView.Items.Add(\"Stack Trace\").SubItems.Add(exception.StackTrace);\n            }\n\n            if (exception.Data != null)\n            {\n                foreach (var pair in exception.Data)\n                {\n                    exceptionDetailsListView.Items.Add(string.Format(\"Data[\\\"{0}\\\"]\", pair.Key))\n                        .SubItems.Add(pair.Value.ToString());\n                }\n            }\n\n            if (exception.ExtendedInformation != null)\n            {\n                foreach (var info in exception.ExtendedInformation)\n                {\n                    var item = exceptionDetailsListView.Items.Add(info.Key);\n                    item.UseItemStyleForSubItems = false;\n                    item.Font = new Font(Font, FontStyle.Bold);\n                    item.SubItems.Add(info.Value.ToString());\n                }\n            }\n\n            exceptionDetailsListView.ResumeLayout();\n        }\n\n        private void ExceptionDetailsListView_DoubleClick(object sender, EventArgs e)\n        {\n            using (var detailView = new ExceptionDetailView())\n            {\n                detailView.ShowDialog(exceptionDetailsListView.SelectedItems[0].Text,\n                    exceptionDetailsListView.SelectedItems[0].SubItems[1].Text);\n            }\n        }\n\n        private void ExceptionDetailsListView_ItemMouseHover(object sender, ListViewItemMouseHoverEventArgs e)\n        {\n            toolTip.RemoveAll();\n            toolTip.Show(e.Item.SubItems[1].Text, exceptionDetailsListView);\n        }\n\n        private void ExceptionTreeView_AfterSelect(object sender, TreeViewEventArgs e)\n        {\n            DisplayExceptionDetails(e.Node);\n        }\n\n        private void FillInnerExceptionTree(SerializableException innerException, TreeNode innerNode)\n        {\n            exceptionDetailsList.Add(innerNode.Nodes.Add(innerException.Type), innerException);\n\n            if (innerException.InnerException != null)\n            {\n                FillInnerExceptionTree(innerException.InnerException, innerNode.Nodes[0]);\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/Panels/ExceptionDetails.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <metadata name=\"toolTip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>17, 17</value>\n  </metadata>\n</root>"
  },
  {
    "path": "source/NBug_custom/Core/UI/WinForms/WinFormsUI.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"WinFormsUI.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Exceptions;\nusing NBug.Core.Util.Serialization;\nusing NBug.Enums;\n\nnamespace NBug.Core.UI.WinForms\n{\n    /// <summary>\n    ///     This class is used to prevent statically referencing any WinForms dll from the UISelector.cs thus prevents\n    ///     any unnecessary assembly from getting loaded into the memory.\n    /// </summary>\n    internal static class WinFormsUI\n    {\n        internal static UIDialogResult ShowDialog(UIMode uiMode, SerializableException exception, Report report)\n        {\n            if (uiMode == UIMode.Minimal)\n            {\n                return new Minimal().ShowDialog(report);\n            }\n            if (uiMode == UIMode.Normal)\n            {\n                using (var ui = new Normal())\n                {\n                    return ui.ShowDialog(report);\n                }\n            }\n            if (uiMode == UIMode.Full)\n            {\n                using (var ui = new Full())\n                {\n                    return ui.ShowDialog(exception, report);\n                }\n            }\n            throw NBugConfigurationException.Create(() => Settings.UIMode,\n                \"Parameter supplied for settings property is invalid.\");\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/ConnectionStringParser.cs",
    "content": "// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"ConnectionStringParser.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Collections.Generic;\nusing System.Text.RegularExpressions;\nusing NBug.Core.Util.Exceptions;\n\nnamespace NBug.Core.Util\n{\n    public static class ConnectionStringParser\n    {\n        // Currently ; and = characters are illegal and needs preparsing and escaping\n        public static Dictionary<string, string> Parse(string connectionString)\n        {\n            try\n            {\n                // Pre-processing the connection string, detect escape sequence, trim trailing semicolon\n                var data = new Dictionary<string, string>();\n                var fields = Regex.Split(connectionString.TrimEnd(';'), @\"(?<!\\\\);|(?<!\\\\)=\");\n\n                // Replace the escape sequence and build the dictionary\n                for (var i = 0; i < fields.Length; i++)\n                {\n                    data.Add(fields[i].Replace(@\"\\;\", \";\").Replace(@\"\\=\", \"=\"),\n                        fields[++i].Replace(@\"\\;\", \";\").Replace(@\"\\=\", \"=\"));\n                }\n\n                return data;\n            }\n            catch (Exception exception)\n            {\n                throw new NBugConfigurationException(\n                    \"Cannot parse the connection string supplied. The connection string may be malformed: \" +\n                    connectionString, exception);\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/ExceptionThread.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"ExceptionThread.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Util\n{\n    internal enum ExceptionThread\n    {\n        Main,\n\n        UI_WinForms,\n\n        UI_WPF,\n\n        Task\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/Exceptions/NBugConfigurationException.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"NBugConfigurationException.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Linq.Expressions;\n\nnamespace NBug.Core.Util.Exceptions\n{\n    [Serializable]\n    public class NBugConfigurationException : NBugException\n    {\n        public NBugConfigurationException(string message, Exception inner)\n            : base(message, inner)\n        {\n            MisconfiguredProperty = string.Empty;\n        }\n\n        private NBugConfigurationException(string propertyName, string message)\n            : base(message)\n        {\n            MisconfiguredProperty = propertyName;\n        }\n\n        public string MisconfiguredProperty { get; set; }\n\n        public static NBugConfigurationException Create<T>(Expression<Func<T>> propertyExpression, string message)\n        {\n            return new NBugConfigurationException(((MemberExpression) propertyExpression.Body).Member.Name, message);\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/Exceptions/NBugException.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"NBugException.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Runtime.Serialization;\n\nnamespace NBug.Core.Util.Exceptions\n{\n    [Serializable]\n    public class NBugException : Exception\n    {\n        public NBugException()\n        {\n        }\n\n        public NBugException(string message)\n            : base(message)\n        {\n        }\n\n        public NBugException(string message, Exception inner)\n            : base(message, inner)\n        {\n        }\n\n        protected NBugException(SerializationInfo info, StreamingContext context)\n            : base(info, context)\n        {\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/Exceptions/NBugRuntimeException.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"NBugRuntimeException.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\n\nnamespace NBug.Core.Util.Exceptions\n{\n    [Serializable]\n    public class NBugRuntimeException : NBugException\n    {\n        public NBugRuntimeException(string message, Exception inner)\n            : base(message, inner)\n        {\n        }\n\n        public NBugRuntimeException(string message)\n            : base(message)\n        {\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/Logging/Logger.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Logger.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq.Expressions;\nusing NBug.Core.UI.Developer;\nusing NBug.Core.Util.Exceptions;\nusing NBug.Enums;\n\nnamespace NBug.Core.Util.Logging\n{\n    /// <summary>\n    ///     Uses <see cref=\"System.Diagnostics.Trace.Write(string, string)\" /> method to log important messages. Also provides\n    ///     a <see cref=\"LogWritten\" />\n    ///     event. If <see cref=\"NBug.Settings.WriteLogToDisk\" /> is set to true, a default \"NBug.log\" file is written to disk.\n    /// </summary>\n    /// <example>\n    ///     A sample trace listener can easily be added to the current application with an app.config file looking as below:\n    ///     <code>\n    /// {?xml version=\"1.0\"?}\n    /// {configuration}\n    ///  {configSections}\n    ///  {/configSections}\n    ///  {system.diagnostics}\n    ///    {trace autoflush=\"true\" indentsize=\"2\"}\n    ///      {listeners}\n    ///        {add name=\"testAppListener\" type=\"System.Diagnostics.TextWriterTraceListener\" initializeData=\"MyApplication.log\" /}\n    ///      {/listeners}\n    ///    {/trace}\n    ///  {/system.diagnostics}\n    /// {/configuration}\n    /// </code>\n    /// </example>\n    internal static class Logger\n    {\n        [DebuggerStepThrough]\n        static Logger()\n        {\n            if (Settings.WriteLogToDisk)\n            {\n                LogWritten +=\n                    (message, category) =>\n                        File.AppendAllText(Path.Combine(Settings.NBugDirectory, \"NBug.log\"),\n                            category + \": \" + message + Environment.NewLine);\n            }\n        }\n\n        /// <summary>\n        ///     First parameters is message string, second one is the category.\n        /// </summary>\n        internal static event Action<string, LoggerCategory> LogWritten;\n\n        [DebuggerStepThrough]\n        internal static void Error(string message)\n        {\n            Write(message, LoggerCategory.NBugError);\n\n            if (Settings.DisplayDeveloperUI)\n            {\n                using (var viewer = new InternalExceptionViewer())\n                {\n                    viewer.ShowDialog(new NBugRuntimeException(message));\n                }\n            }\n\n            if (Settings.ThrowExceptions)\n            {\n                throw new NBugRuntimeException(message);\n            }\n        }\n\n        [DebuggerStepThrough]\n        internal static void Error(string message, Exception exception)\n        {\n            Write(message + Environment.NewLine + \"Exception: \" + exception, LoggerCategory.NBugError);\n\n            if (Settings.DisplayDeveloperUI)\n            {\n                using (var viewer = new InternalExceptionViewer())\n                {\n                    viewer.ShowDialog(exception);\n                }\n            }\n\n            if (Settings.ThrowExceptions)\n            {\n                throw new NBugRuntimeException(message, exception);\n            }\n        }\n\n        [DebuggerStepThrough]\n        internal static void Error<T>(Expression<Func<T>> propertyExpression, string message)\n        {\n            Write(message + \" Misconfigured Property: \" + ((MemberExpression) propertyExpression.Body).Member.Name,\n                LoggerCategory.NBugError);\n\n            if (Settings.DisplayDeveloperUI)\n            {\n                using (var viewer = new InternalExceptionViewer())\n                {\n                    viewer.ShowDialog(NBugConfigurationException.Create(propertyExpression, message));\n                }\n            }\n\n            if (Settings.ThrowExceptions)\n            {\n                throw NBugConfigurationException.Create(propertyExpression, message);\n            }\n        }\n\n        [DebuggerStepThrough]\n        internal static void Info(string message)\n        {\n            Write(message, LoggerCategory.NBugInfo);\n        }\n\n        [DebuggerStepThrough]\n        internal static void Trace(string message)\n        {\n            Write(message, LoggerCategory.NBugTrace);\n        }\n\n        [DebuggerStepThrough]\n        internal static void Warning(string message)\n        {\n            Write(message, LoggerCategory.NBugWarning);\n        }\n\n        [DebuggerStepThrough]\n        private static void Write(string message, LoggerCategory category)\n        {\n            System.Diagnostics.Trace.Write(message + Environment.NewLine, category.ToString());\n\n            if (Settings.DisplayDeveloperUI)\n            {\n                // InternalLogViewer.LogEntry(message, category);\n            }\n\n            var handler = LogWritten;\n            if (handler != null)\n            {\n                handler(message, category);\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/ProtectedConfiguration.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"ProtectedConfiguration.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Util\n{\n    internal class ProtectedConfiguration\n    {\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/PublicResources.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"PublicResources.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing NBug.Properties;\n\nnamespace NBug.Core.Util\n{\n    public class PublicResources\n    {\n        private string ui_Console_Full_Message;\n        private string ui_Console_Minimal_Message;\n        private string ui_Console_Normal_Message;\n        private string ui_Dialog_Full_Exception_Tab;\n        private string ui_Dialog_Full_General_Tab;\n        private string ui_Dialog_Full_How_to_Reproduce_the_Error_Notification;\n        private string ui_Dialog_Full_Message;\n        private string ui_Dialog_Full_Quit_Button;\n        private string ui_Dialog_Full_Report_Contents_Tab;\n        private string ui_Dialog_Full_Send_and_Quit_Button;\n        private string ui_Dialog_Full_Title;\n        private string ui_Dialog_Minimal_Message;\n        private string ui_Dialog_Normal_Continue_Button;\n        private string ui_Dialog_Normal_Message;\n        private string ui_Dialog_Normal_Quit_Button;\n        private string ui_Dialog_Normal_Title;\n\n        public string UI_Console_Full_Message\n        {\n            get { return ui_Console_Full_Message ?? Localization.UI_Console_Full_Message; }\n\n            set { ui_Console_Full_Message = value; }\n        }\n\n        public string UI_Console_Minimal_Message\n        {\n            get { return ui_Console_Minimal_Message ?? Localization.UI_Console_Minimal_Message; }\n\n            set { ui_Console_Minimal_Message = value; }\n        }\n\n        public string UI_Console_Normal_Message\n        {\n            get { return ui_Console_Normal_Message ?? Localization.UI_Console_Normal_Message; }\n\n            set { ui_Console_Normal_Message = value; }\n        }\n\n        public string UI_Dialog_Full_Exception_Tab\n        {\n            get { return ui_Dialog_Full_Exception_Tab ?? Localization.UI_Dialog_Full_Exception_Tab; }\n\n            set { ui_Dialog_Full_Exception_Tab = value; }\n        }\n\n        public string UI_Dialog_Full_General_Tab\n        {\n            get { return ui_Dialog_Full_General_Tab ?? Localization.UI_Dialog_Full_General_Tab; }\n\n            set { ui_Dialog_Full_General_Tab = value; }\n        }\n\n        public string UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\n        {\n            get\n            {\n                return ui_Dialog_Full_How_to_Reproduce_the_Error_Notification ??\n                       Localization.UI_Dialog_Full_How_to_Reproduce_the_Error_Notification;\n            }\n\n            set { ui_Dialog_Full_How_to_Reproduce_the_Error_Notification = value; }\n        }\n\n        public string UI_Dialog_Full_Message\n        {\n            get { return ui_Dialog_Full_Message ?? Localization.UI_Dialog_Full_Message; }\n\n            set { ui_Dialog_Full_Message = value; }\n        }\n\n        public string UI_Dialog_Full_Quit_Button\n        {\n            get { return ui_Dialog_Full_Quit_Button ?? Localization.UI_Dialog_Full_Quit_Button; }\n\n            set { ui_Dialog_Full_Quit_Button = value; }\n        }\n\n        public string UI_Dialog_Full_Report_Contents_Tab\n        {\n            get { return ui_Dialog_Full_Report_Contents_Tab ?? Localization.UI_Dialog_Full_Report_Contents_Tab; }\n\n            set { ui_Dialog_Full_Report_Contents_Tab = value; }\n        }\n\n        public string UI_Dialog_Full_Send_and_Quit_Button\n        {\n            get { return ui_Dialog_Full_Send_and_Quit_Button ?? Localization.UI_Dialog_Full_Send_and_Quit_Button; }\n\n            set { ui_Dialog_Full_Send_and_Quit_Button = value; }\n        }\n\n        public string UI_Dialog_Full_Title\n        {\n            get { return ui_Dialog_Full_Title ?? Localization.UI_Dialog_Full_Title; }\n\n            set { ui_Dialog_Full_Title = value; }\n        }\n\n        public string UI_Dialog_Minimal_Message\n        {\n            get { return ui_Dialog_Minimal_Message ?? Localization.UI_Dialog_Minimal_Message; }\n\n            set { ui_Dialog_Minimal_Message = value; }\n        }\n\n        public string UI_Dialog_Normal_Continue_Button\n        {\n            get { return ui_Dialog_Normal_Continue_Button ?? Localization.UI_Dialog_Normal_Continue_Button; }\n\n            set { ui_Dialog_Normal_Continue_Button = value; }\n        }\n\n        public string UI_Dialog_Normal_Message\n        {\n            get { return ui_Dialog_Normal_Message ?? Localization.UI_Dialog_Normal_Message; }\n\n            set { ui_Dialog_Normal_Message = value; }\n        }\n\n        public string UI_Dialog_Normal_Quit_Button\n        {\n            get { return ui_Dialog_Normal_Quit_Button ?? Localization.UI_Dialog_Normal_Quit_Button; }\n\n            set { ui_Dialog_Normal_Quit_Button = value; }\n        }\n\n        public string UI_Dialog_Normal_Title\n        {\n            get { return ui_Dialog_Normal_Title ?? Localization.UI_Dialog_Normal_Title; }\n\n            set { ui_Dialog_Normal_Title = value; }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/Serialization/SerializableDictionary.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"SerializableDictionary.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Collections.Generic;\nusing System.Xml;\nusing System.Xml.Linq;\nusing System.Xml.Schema;\nusing System.Xml.Serialization;\n\nnamespace NBug.Core.Util.Serialization\n{\n    [Serializable]\n    [XmlRoot(\"dictionary\")]\n    public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable\n    {\n        /// <summary>\n        ///     Initializes a new instance of the <see cref=\"SerializableDictionary{TKey,TValue}\" /> class.\n        ///     This is the default constructor provided for XML serializer.\n        /// </summary>\n        public SerializableDictionary()\n        {\n        }\n\n        public SerializableDictionary(IDictionary<TKey, TValue> dictionary)\n        {\n            if (dictionary == null)\n            {\n                throw new ArgumentNullException();\n            }\n\n            foreach (var pair in dictionary)\n            {\n                Add(pair.Key, pair.Value);\n            }\n        }\n\n        public XmlSchema GetSchema()\n        {\n            return null;\n        }\n\n        public void ReadXml(XmlReader reader)\n        {\n            /*if (reader.IsEmptyElement)\n            {\n                return;\n            }*/\n            var inner = reader.ReadSubtree();\n\n            var xElement = XElement.Load(inner);\n            if (xElement.HasElements)\n            {\n                foreach (var element in xElement.Elements())\n                {\n                    Add((TKey) Convert.ChangeType(element.Name.ToString(), typeof (TKey)),\n                        (TValue) Convert.ChangeType(element.Value, typeof (TValue)));\n                }\n            }\n\n            inner.Close();\n\n            if (!reader.IsEmptyElement)\n                reader.ReadEndElement();\n        }\n\n        public void WriteXml(XmlWriter writer)\n        {\n            foreach (var key in Keys)\n            {\n                writer.WriteStartElement(key.ToString().Replace(\" \", \"\"));\n                // Check to see if we can actually serialize element\n                if (this[key].GetType().IsSerializable)\n                {\n                    // if it's Serializable doesn't mean serialization will succeed (IE. GUID and SQLError types)\n                    try\n                    {\n                        writer.WriteValue(this[key]);\n                    }\n                    catch (Exception)\n                    {\n                        // we're not Throwing anything here, otherwise evil thing will happen\n                        writer.WriteValue(this[key].ToString());\n                    }\n                }\n                else\n                {\n                    // If Type has custom implementation of ToString() we'll get something useful here\n                    // Otherwise we'll get Type string. (Still better than crashing).\n                    writer.WriteValue(this[key].ToString());\n                }\n                writer.WriteEndElement();\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/Serialization/SerializableException.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"SerializableException.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.IO;\nusing System.Linq;\nusing System.Threading;\nusing System.Xml;\nusing System.Xml.Linq;\nusing System.Xml.Serialization;\n\nnamespace NBug.Core.Util.Serialization\n{\n    [Serializable]\n    public class SerializableException\n    {\n        /// <summary>\n        ///     Initializes a new instance of the <see cref=\"SerializableException\" /> class.\n        ///     Default constructor provided for XML serialization and de-serialization.\n        /// </summary>\n        public SerializableException()\n        {\n        }\n\n        public SerializableException(Exception exception)\n        {\n            if (exception == null)\n            {\n                throw new ArgumentNullException();\n            }\n\n            var oldCulture = Thread.CurrentThread.CurrentCulture;\n            var oldUICulture = Thread.CurrentThread.CurrentUICulture;\n            try\n            {\n                // Prefer messages in English, instead of in language of the user.\n                Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;\n                Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;\n\n                Type = exception.GetType().ToString();\n\n                if (exception.Data.Count != 0)\n                {\n                    foreach (DictionaryEntry entry in exception.Data)\n                    {\n                        if (entry.Value != null)\n                        {\n                            // Assign 'Data' property only if there is at least one entry with non-null value\n                            if (Data == null)\n                            {\n                                Data = new SerializableDictionary<object, object>();\n                            }\n\n                            Data.Add(entry.Key, entry.Value);\n                        }\n                    }\n                }\n\n                if (exception.HelpLink != null)\n                {\n                    HelpLink = exception.HelpLink;\n                }\n\n                if (exception.InnerException != null)\n                {\n                    InnerException = new SerializableException(exception.InnerException);\n                }\n                /*\n\t\t\t\tif (exception is AggregateException)\n\t\t\t\t{\n\t\t\t\t\tthis.InnerExceptions = new List<SerializableException>();\n\n\t\t\t\t\tforeach (var innerException in ((AggregateException)exception).InnerExceptions)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.InnerExceptions.Add(new SerializableException(innerException));\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.InnerExceptions.RemoveAt(0);\n\t\t\t\t}*/\n\n                Message = exception.Message != string.Empty ? exception.Message : string.Empty;\n\n                if (exception.Source != null)\n                {\n                    Source = exception.Source;\n                }\n\n                if (exception.StackTrace != null)\n                {\n                    StackTrace = exception.StackTrace;\n                }\n\n                if (exception.TargetSite != null)\n                {\n                    TargetSite = string.Format(\"{0} @ {1}\", exception.TargetSite, exception.TargetSite.DeclaringType);\n                }\n\n                ExtendedInformation = GetExtendedInformation(exception);\n            }\n            finally\n            {\n                Thread.CurrentThread.CurrentCulture = oldCulture;\n                Thread.CurrentThread.CurrentUICulture = oldUICulture;\n            }\n        }\n\n        public SerializableDictionary<object, object> Data { get; set; }\n        public SerializableDictionary<string, object> ExtendedInformation { get; set; }\n        public string HelpLink { get; set; }\n        public SerializableException InnerException { get; set; }\n        public List<SerializableException> InnerExceptions { get; set; }\n        public string Message { get; set; }\n        public string Source { get; set; }\n        public string StackTrace { get; set; }\n        // This will make TargetSite property XML serializable but RuntimeMethodInfo class does not have a parameterless\n        // constructor thus the serializer throws an exception if full info is used\n        public string TargetSite { get; set; }\n        public string Type { get; set; }\n\n        public override string ToString()\n        {\n            var serializer = XmlSerializer.FromTypes(new[] {typeof (SerializableException)})[0];\n            //var serializer = new XmlSerializer(typeof(SerializableException));\n            using (var stream = new MemoryStream())\n            {\n                stream.SetLength(0);\n                serializer.Serialize(stream, this);\n                stream.Position = 0;\n                var doc = XDocument.Load(XmlReader.Create(stream));\n                return doc.Root.ToString();\n            }\n        }\n\n        private SerializableDictionary<string, object> GetExtendedInformation(Exception exception)\n        {\n            var extendedProperties = (from property in exception.GetType().GetProperties()\n                where\n                    property.Name != \"Data\" && property.Name != \"InnerExceptions\" && property.Name != \"InnerException\"\n                    && property.Name != \"Message\" && property.Name != \"Source\" && property.Name != \"StackTrace\"\n                    && property.Name != \"TargetSite\" && property.Name != \"HelpLink\" && property.CanRead\n                select property).ToArray();\n\n            if (extendedProperties.Any())\n            {\n                var extendedInformation = new SerializableDictionary<string, object>();\n\n                foreach (\n                    var property in extendedProperties.Where(property => property.GetValue(exception, null) != null))\n                {\n                    extendedInformation.Add(property.Name, property.GetValue(exception, null));\n                }\n\n                return extendedInformation;\n            }\n            return null;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/Storage/StoragePath.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"StoragePath.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\n\nnamespace NBug.Core.Util.Storage\n{\n    /// <summary>\n    ///     This structure holds the information about storage path. It does emit its internal data either as string or\n    ///     <see cref=\"Enums.StoragePath\" /> type according to usage so it must be handled with care.\n    /// </summary>\n    public struct StoragePath\n    {\n        private static Enums.StoragePath storagePathEnum;\n        private static string storagePathString;\n\n        internal StoragePath(Enums.StoragePath storagePath)\n        {\n            storagePathEnum = storagePath;\n        }\n\n        internal StoragePath(string storagePath)\n        {\n            storagePathString = storagePath;\n            storagePathEnum = Enums.StoragePath.Custom;\n        }\n\n        public static implicit operator StoragePath(Enums.StoragePath path)\n        {\n            return new StoragePath(path);\n        }\n\n        public static implicit operator StoragePath(string path)\n        {\n            foreach (Enums.StoragePath value in Enum.GetValues(typeof (Enums.StoragePath)))\n            {\n                if (value.ToString() == path)\n                {\n                    return new StoragePath(value);\n                }\n            }\n\n            return new StoragePath(path);\n        }\n\n        public static implicit operator Enums.StoragePath(StoragePath path)\n        {\n            return storagePathEnum;\n        }\n\n        public static implicit operator string(StoragePath path)\n        {\n            return storagePathString;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/Storage/StoredItemFile.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"StoredItemFile.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Core.Util.Storage\n{\n    internal enum StoredItemType\n    {\n        Exception,\n\n        Report,\n\n        MiniDump\n    }\n\n    // This class must remain internal otherwise it should not use constant strings\n    internal static class StoredItemFile\n    {\n        internal const string Exception = \"Exception.xml\";\n        internal const string MiniDump = \"MiniDump.mdmp\";\n        internal const string Report = \"Report.xml\";\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/Storage/Storer.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Storer.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.IO.IsolatedStorage;\nusing System.Linq;\nusing NBug.Core.Util.Exceptions;\nusing NBug.Core.Util.Logging;\n\nnamespace NBug.Core.Util.Storage\n{\n    /// <summary>\n    ///     Initializes a new instance of the Storage class. This class implements <see cref=\"IDisposable\" /> interface\n    ///     so it is better used with a using {...} statement.\n    /// </summary>\n    /// <remarks>This class should be instantiated to work with a single file at once.</remarks>\n    internal class Storer : IDisposable\n    {\n        private bool disposed;\n        private IsolatedStorageFile isoStore;\n        private Stream stream;\n        public string FileName { get; set; }\n        public string FilePath { get; set; }\n\n        public void Dispose()\n        {\n            Dispose(true);\n            GC.SuppressFinalize(this);\n        }\n\n        ~Storer()\n        {\n            Dispose(false);\n        }\n\n        private static IEnumerable<string> EnumerateFiles(string directory)\n        {\n            return\n                Directory.GetFiles(directory)\n                    .Where(x => x.Substring(x.LastIndexOf('\\\\')).Contains(\"Exception_\") && x.EndsWith(\".zip\"));\n        }\n\n        internal static int GetReportCount()\n        {\n            if (Settings.StoragePath == Enums.StoragePath.WindowsTemp)\n            {\n                var path = Path.Combine(Path.GetTempPath(), Settings.EntryAssembly.GetName().Name);\n                return Directory.Exists(path) ? EnumerateFiles(path).Count() : 0;\n                //.EnumerateFiles(path, \"Exception_*.zip\").Count() : 0;\n            }\n            if (Settings.StoragePath == Enums.StoragePath.CurrentDirectory)\n            {\n                return Directory.Exists(Settings.NBugDirectory) ? EnumerateFiles(Settings.NBugDirectory).Count() : 0;\n            }\n            if (Settings.StoragePath == Enums.StoragePath.IsolatedStorage)\n            {\n                using (\n                    var isoFile =\n                        IsolatedStorageFile.GetStore(\n                            IsolatedStorageScope.User | IsolatedStorageScope.Assembly | IsolatedStorageScope.Domain,\n                            null, null))\n                {\n                    return isoFile.GetFileNames(\"Exception_*.zip\").Count();\n                }\n            }\n            if (Settings.StoragePath == Enums.StoragePath.Custom)\n            {\n                var path = Path.GetFullPath(Settings.StoragePath);\n                return Directory.Exists(path) ? EnumerateFiles(path).Count() : 0;\n            }\n            throw NBugConfigurationException.Create(() => Settings.StoragePath,\n                \"Parameter supplied for settings property is invalid.\");\n        }\n\n        /// <summary>\n        ///     This function will get rid of the oldest files first.\n        /// </summary>\n        internal static void TruncateReportFiles()\n        {\n            TruncateReportFiles(Settings.MaxQueuedReports);\n        }\n\n        /// <summary>\n        ///     This function will get rid of the oldest files first.\n        /// </summary>\n        /// <param name=\"maxQueuedReports\">\n        ///     Maximum number of queued files to be stored. Setting this to 0 deletes all files. Settings this\n        ///     to anything less than zero will store infinite number of files.\n        /// </param>\n        internal static void TruncateReportFiles(int maxQueuedReports)\n        {\n            if (maxQueuedReports < 0)\n            {\n            }\n            else if (Settings.StoragePath == Enums.StoragePath.WindowsTemp)\n            {\n                var path = Path.Combine(Path.GetTempPath(), Settings.EntryAssembly.GetName().Name);\n                TruncateFiles(path, maxQueuedReports);\n            }\n            else if (Settings.StoragePath == Enums.StoragePath.CurrentDirectory)\n            {\n                TruncateFiles(Settings.NBugDirectory, maxQueuedReports);\n            }\n            else if (Settings.StoragePath == Enums.StoragePath.IsolatedStorage)\n            {\n                using (\n                    var isoFile =\n                        IsolatedStorageFile.GetStore(\n                            IsolatedStorageScope.User | IsolatedStorageScope.Assembly | IsolatedStorageScope.Domain,\n                            null, null))\n                {\n                    var reportCount = isoFile.GetFileNames(\"Exception_*.zip\").Count();\n\n                    if (reportCount > maxQueuedReports)\n                    {\n                        var extraCount = reportCount - maxQueuedReports;\n\n                        if (maxQueuedReports == 0)\n                        {\n                            Logger.Trace(\"Truncating all report files from the isolated storage.\");\n                        }\n                        else\n                        {\n                            Logger.Trace(\"Truncating extra \" + extraCount + \" report files from the isolates storage.\");\n                        }\n\n                        foreach (var file in isoFile.GetFileNames(\"Exception_*.zip\"))\n                        {\n                            extraCount--;\n                            File.Delete(file);\n\n                            if (extraCount == 0)\n                            {\n                                break;\n                            }\n                        }\n                    }\n                }\n            }\n            else if (Settings.StoragePath == Enums.StoragePath.Custom)\n            {\n                var path = Path.GetFullPath(Settings.StoragePath);\n                TruncateFiles(path, maxQueuedReports);\n            }\n            else\n            {\n                throw NBugConfigurationException.Create(() => Settings.StoragePath,\n                    \"Parameter supplied for settings property is invalid.\");\n            }\n        }\n\n        internal Stream CreateReportFile(string reportFileName)\n        {\n            FileName = reportFileName;\n\n            if (Settings.StoragePath == Enums.StoragePath.WindowsTemp)\n            {\n                var directoryPath = Path.Combine(Path.GetTempPath(), Settings.EntryAssembly.GetName().Name);\n\n                if (Directory.Exists(directoryPath) == false)\n                {\n                    Directory.CreateDirectory(directoryPath);\n                }\n\n                FilePath = Path.Combine(directoryPath, FileName);\n                Logger.Trace(\"Creating report file to Windows temp path: \" + FilePath);\n                return stream = new FileStream(FilePath, FileMode.Create, FileAccess.Write, FileShare.None);\n            }\n            if (Settings.StoragePath == Enums.StoragePath.CurrentDirectory)\n            {\n                FilePath = Path.Combine(Settings.NBugDirectory, FileName);\n                Logger.Trace(\"Creating report file to entry assembly directory path: \" + FilePath);\n                return stream = new FileStream(FilePath, FileMode.Create, FileAccess.Write, FileShare.None);\n            }\n            if (Settings.StoragePath == Enums.StoragePath.IsolatedStorage)\n            {\n                FilePath = null;\n                Logger.Trace(\"Creating report file to isolated storage path: [Isolated Storage Directory]\\\\\" + FileName);\n                return\n                    stream = new IsolatedStorageFileStream(FileName, FileMode.Create, FileAccess.Write, FileShare.None);\n            }\n            if (Settings.StoragePath == Enums.StoragePath.Custom)\n            {\n                var directoryPath = Path.GetFullPath(Settings.StoragePath); // In case this is a relative path\n\n                if (Directory.Exists(directoryPath) == false)\n                {\n                    Directory.CreateDirectory(directoryPath);\n                }\n\n                FilePath = Path.Combine(directoryPath, FileName);\n                Logger.Trace(\"Creating report file to custom path: \" + FilePath);\n                return stream = new FileStream(FilePath, FileMode.Create, FileAccess.Write, FileShare.None);\n            }\n            throw NBugConfigurationException.Create(() => Settings.StoragePath,\n                \"Parameter supplied for settings property is invalid.\");\n        }\n\n        internal void DeleteCurrentReportFile()\n        {\n            stream.Close();\n\n            if (stream is IsolatedStorageFileStream)\n            {\n                Logger.Trace(\"Deleting report file from isolated storage: \" + FileName);\n                isoStore.DeleteFile(FileName);\n            }\n            else\n            {\n                Logger.Trace(\"Deleting report file from path: \" + FilePath);\n                File.Delete(FilePath);\n            }\n        }\n\n        /// <summary>\n        ///     Returns the first-in-queue report file. If there are no files queued, returns <see langword=\"null\" />.\n        /// </summary>\n        /// <returns>Report file stream.</returns>\n        internal Stream GetFirstReportFile()\n        {\n            if (disposed)\n            {\n                throw new ObjectDisposedException(\n                    \"NBug.Utils.Storage was already destroyed and out of scope when accessed.\");\n            }\n\n            if (Settings.StoragePath == Enums.StoragePath.WindowsTemp)\n            {\n                var path = Path.Combine(Path.GetTempPath(), Settings.EntryAssembly.GetName().Name);\n\n                if (Directory.Exists(path) && EnumerateFiles(path).Any())\n                {\n                    try\n                    {\n                        FilePath = EnumerateFiles(path).First();\n                        FileName = Path.GetFileName(FilePath);\n                        return stream = new FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.None);\n                    }\n                    catch (IOException exception)\n                    {\n                        // If the file is locked (as per IOException), then probably another instance of the library is already accessing\n                        // the file so let the other instance handle the file\n                        Logger.Error(\n                            \"Cannot access the report file at Windows temp directory (it is probably locked, see the inner exception): \" +\n                            FilePath, exception);\n                        return null;\n                    }\n                }\n                return null;\n            }\n            if (Settings.StoragePath == Enums.StoragePath.CurrentDirectory)\n            {\n                var path = Settings.NBugDirectory;\n\n                if (path != null && Directory.Exists(path) && EnumerateFiles(path).Any())\n                {\n                    try\n                    {\n                        FilePath = EnumerateFiles(path).First();\n                        FileName = Path.GetFileName(FilePath);\n                        return stream = new FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.None);\n                    }\n                    catch (IOException exception)\n                    {\n                        // If the file is locked (as per IOException), then probably another instance of the library is already accessing\n                        // the file so let the other instance handle the file\n                        Logger.Error(\n                            \"Cannot access the report file at entry assembly directory (it is probably locked, see the inner exception): \" +\n                            FilePath, exception);\n                        return null;\n                    }\n                }\n                return null;\n            }\n            if (Settings.StoragePath == Enums.StoragePath.IsolatedStorage)\n            {\n                isoStore =\n                    IsolatedStorageFile.GetStore(\n                        IsolatedStorageScope.User | IsolatedStorageScope.Assembly | IsolatedStorageScope.Domain, null,\n                        null);\n\n                if (isoStore.GetFileNames(\"Exception_*.zip\").Any())\n                {\n                    try\n                    {\n                        FilePath = null;\n                        FileName = isoStore.GetFileNames(\"Exception_*.zip\").First();\n                        stream = new IsolatedStorageFileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.None);\n                        return stream;\n                    }\n                    catch (IOException exception)\n                    {\n                        // If the file is locked (as per IOException), then probably another instance of the library is already accessing\n                        // the file so let the other instance handle the file\n                        Logger.Error(\n                            \"Cannot access the report file at isolated storage (it is probably locked, see the inner exception): [Isolated Storage Directory]\\\\\"\n                            + FileName,\n                            exception);\n                        return null;\n                    }\n                }\n                return null;\n            }\n            if (Settings.StoragePath == Enums.StoragePath.Custom)\n            {\n                var path = Path.GetFullPath(Settings.StoragePath);\n\n                if (Directory.Exists(path) && EnumerateFiles(path).Any())\n                {\n                    try\n                    {\n                        FilePath = EnumerateFiles(path).First();\n                        FileName = Path.GetFileName(FilePath);\n                        return stream = new FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.None);\n                    }\n                    catch (IOException exception)\n                    {\n                        // If the file is locked (as per IOException), then probably another instance of the library is already accessing\n                        // the file so let the other instance handle the file\n                        Logger.Error(\n                            \"Cannot access the report file from the given custom path (it is probably locked, see the inner exception): \" +\n                            FilePath, exception);\n                        return null;\n                    }\n                }\n                return null;\n            }\n            throw NBugConfigurationException.Create(() => Settings.StoragePath,\n                \"Parameter supplied for settings property is invalid.\");\n        }\n\n        private static void TruncateFiles(string path, int maxQueuedReports)\n        {\n            if (Directory.Exists(path))\n            {\n                var reportCount = EnumerateFiles(path).Count();\n\n                if (reportCount > maxQueuedReports)\n                {\n                    var extraCount = reportCount - maxQueuedReports;\n\n                    if (maxQueuedReports == 0)\n                    {\n                        Logger.Trace(\"Truncating all report files from: \" + path);\n                    }\n                    else\n                    {\n                        Logger.Trace(\"Truncating extra \" + extraCount + \" report files from: \" + path);\n                    }\n\n                    foreach (var file in EnumerateFiles(path))\n                    {\n                        extraCount--;\n                        File.Delete(file);\n\n                        if (extraCount == 0)\n                        {\n                            break;\n                        }\n                    }\n                }\n            }\n        }\n\n        private void Dispose(bool disposing)\n        {\n            if (!disposed)\n            {\n                if (disposing)\n                {\n                    // Dispose managed resources\n                    if (stream != null)\n                    {\n                        stream.Close();\n                    }\n\n                    if (isoStore != null)\n                    {\n                        isoStore.Close();\n                    }\n                }\n\n                // Clean up unmanaged resources\n            }\n\n            disposed = true;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/Storage/ZipStorer.cs",
    "content": "// ZipStorer, by Jaime Olivares\n// Website: zipstorer.codeplex.com\n// Version: 2.35 (March 14, 2010)\n\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.IO.Compression;\nusing System.Text;\n\nnamespace NBug.Core.Util.Storage\n{\n    /// <summary>\n    ///     Unique class for compression/decompression file. Represents a Zip file.\n    /// </summary>\n    internal class ZipStorer : IDisposable\n    {\n        #region Enums\n\n        /// <summary>\n        ///     Compression method enumeration\n        /// </summary>\n        public enum Compression : ushort\n        {\n            /// <summary>\n            ///     Uncompressed storage\n            /// </summary>\n            Store = 0,\n\n            /// <summary>\n            ///     Deflate compression method\n            /// </summary>\n            Deflate = 8\n        }\n\n        #endregion Enums\n\n        // File access for Open method\n\n        // Static constructor. Just invoked once in order to create the CRC32 lookup table.\n\n        #region Constructors and Destructors\n\n        /// <summary>\n        ///     Initializes static members of the <see cref=\"ZipStorer\" /> class.\n        /// </summary>\n        static ZipStorer()\n        {\n            // Generate CRC32 table\n            CrcTable = new uint[256];\n            for (var i = 0; i < CrcTable.Length; i++)\n            {\n                var c = (uint) i;\n                for (var j = 0; j < 8; j++)\n                {\n                    if ((c & 1) != 0)\n                    {\n                        c = 3988292384 ^ (c >> 1);\n                    }\n                    else\n                    {\n                        c >>= 1;\n                    }\n                }\n\n                CrcTable[i] = c;\n            }\n        }\n\n        #endregion Constructors and Destructors\n\n        #region Implemented Interfaces\n\n        #region IDisposable\n\n        /// <summary>\n        ///     Closes the Zip file stream\n        /// </summary>\n        public void Dispose()\n        {\n            Close();\n        }\n\n        #endregion IDisposable\n\n        #endregion Implemented Interfaces\n\n        /// <summary>\n        ///     Represents an entry in Zip file directory\n        /// </summary>\n        public struct ZipFileEntry\n        {\n            #region Public Methods\n\n            /// <summary>\n            ///     Overriden method\n            /// </summary>\n            /// <returns>\n            ///     Filename in Zip\n            /// </returns>\n            public override string ToString()\n            {\n                return FilenameInZip;\n            }\n\n            #endregion Public Methods\n\n            #region Constants and Fields\n\n            /// <summary>\n            ///     User comment for file\n            /// </summary>\n            public string Comment;\n\n            /// <summary>\n            ///     Compressed file size\n            /// </summary>\n            public uint CompressedSize;\n\n            /// <summary>\n            ///     32-bit checksum of entire file\n            /// </summary>\n            public uint Crc32;\n\n            /// <summary>\n            ///     True if UTF8 encoding for filename and comments, false if default (CP 437)\n            /// </summary>\n            public bool EncodeUTF8;\n\n            /// <summary>\n            ///     Offset of file inside Zip storage\n            /// </summary>\n            public uint FileOffset;\n\n            /// <summary>\n            ///     Original file size\n            /// </summary>\n            public uint FileSize;\n\n            /// <summary>\n            ///     Full path and filename as stored in Zip\n            /// </summary>\n            public string FilenameInZip;\n\n            /// <summary>\n            ///     Offset of header information inside Zip storage\n            /// </summary>\n            public uint HeaderOffset;\n\n            /// <summary>\n            ///     Size of header information\n            /// </summary>\n            public uint HeaderSize;\n\n            /// <summary>\n            ///     Compression method\n            /// </summary>\n            public Compression Method;\n\n            /// <summary>\n            ///     Last modification time of file\n            /// </summary>\n            public DateTime ModifyTime;\n\n            #endregion Constants and Fields\n        }\n\n        #region Constants and Fields\n\n        /// <summary>\n        ///     True if UTF8 encoding for filename and comments, false if default (CP 437)\n        /// </summary>\n        public bool EncodeUTF8;\n\n        /// <summary>\n        ///     Force deflate algotithm even if it inflates the stored file. Off by default.\n        /// </summary>\n        public bool ForceDeflating;\n\n        /// <summary>\n        ///     The crc table.\n        /// </summary>\n        private static readonly uint[] CrcTable;\n\n        // Default filename encoder\n        /// <summary>\n        ///     The default encoding.\n        /// </summary>\n        private static readonly Encoding DefaultEncoding = Encoding.ASCII;\n\n        // List of files to store\n        /// <summary>\n        ///     The files.\n        /// </summary>\n        private readonly List<ZipFileEntry> Files = new();\n\n        /// <summary>\n        ///     The access.\n        /// </summary>\n        private FileAccess Access;\n\n        // Filename of storage file\n\n        // Central dir image\n        /// <summary>\n        ///     The central dir image.\n        /// </summary>\n        private byte[] CentralDirImage;\n\n        /// <summary>\n        ///     The comment.\n        /// </summary>\n        private string Comment = string.Empty;\n\n        // Existing files in zip\n        /// <summary>\n        ///     The existing files.\n        /// </summary>\n        private ushort ExistingFiles;\n\n        /// <summary>\n        ///     The file name.\n        /// </summary>\n        private string FileName;\n\n        // Stream object of storage file\n        /// <summary>\n        ///     The zip file stream.\n        /// </summary>\n        private Stream ZipFileStream;\n\n        #endregion Constants and Fields\n\n        #region Public Methods\n\n        /// <summary>\n        ///     Method to create a new storage file\n        /// </summary>\n        /// <param name=\"_filename\">\n        ///     Full path of Zip file to create\n        /// </param>\n        /// <param name=\"_comment\">\n        ///     General comment for Zip file\n        /// </param>\n        /// <returns>\n        ///     A valid ZipStorer object\n        /// </returns>\n        public static ZipStorer Create(string _filename, string _comment)\n        {\n            Stream stream = new FileStream(_filename, FileMode.Create, FileAccess.ReadWrite);\n\n            var zip = Create(stream, _comment);\n            zip.Comment = _comment;\n            zip.FileName = _filename;\n\n            return zip;\n        }\n\n        /// <summary>\n        ///     Method to create a new zip storage in a stream\n        /// </summary>\n        /// <param name=\"_stream\">\n        /// </param>\n        /// <param name=\"_comment\">\n        /// </param>\n        /// <returns>\n        ///     A valid ZipStorer object\n        /// </returns>\n        public static ZipStorer Create(Stream _stream, string _comment)\n        {\n            var zip = new ZipStorer();\n            zip.Comment = _comment;\n            zip.ZipFileStream = _stream;\n            zip.Access = FileAccess.Write;\n\n            return zip;\n        }\n\n        /// <summary>\n        ///     Method to open an existing storage file\n        /// </summary>\n        /// <param name=\"_filename\">\n        ///     Full path of Zip file to open\n        /// </param>\n        /// <param name=\"_access\">\n        ///     File access mode as used in FileStream constructor\n        /// </param>\n        /// <returns>\n        ///     A valid ZipStorer object\n        /// </returns>\n        public static ZipStorer Open(string _filename, FileAccess _access)\n        {\n            Stream stream = new FileStream(\n                _filename, FileMode.Open, _access == FileAccess.Read ? FileAccess.Read : FileAccess.ReadWrite);\n\n            var zip = Open(stream, _access);\n            zip.FileName = _filename;\n\n            return zip;\n        }\n\n        /// <summary>\n        ///     Method to open an existing storage from stream\n        /// </summary>\n        /// <param name=\"_stream\">\n        ///     Already opened stream with zip contents\n        /// </param>\n        /// <param name=\"_access\">\n        ///     File access mode for stream operations\n        /// </param>\n        /// <returns>\n        ///     A valid ZipStorer object\n        /// </returns>\n        public static ZipStorer Open(Stream _stream, FileAccess _access)\n        {\n            if (!_stream.CanSeek && _access != FileAccess.Read)\n            {\n                throw new InvalidOperationException(\"Stream cannot seek\");\n            }\n\n            var zip = new ZipStorer();\n\n            // zip.FileName = _filename;\n            zip.ZipFileStream = _stream;\n            zip.Access = _access;\n\n            if (zip.ReadFileInfo())\n            {\n                return zip;\n            }\n\n            throw new InvalidDataException();\n        }\n\n        /// <summary>\n        ///     Removes one of many files in storage. It creates a new Zip file.\n        /// </summary>\n        /// <param name=\"_zip\">\n        ///     Reference to the current Zip object\n        /// </param>\n        /// <param name=\"_zfes\">\n        ///     List of Entries to remove from storage\n        /// </param>\n        /// <returns>\n        ///     True if success, false if not\n        /// </returns>\n        /// <remarks>\n        ///     This method only works for storage of type FileStream\n        /// </remarks>\n        public static bool RemoveEntries(ref ZipStorer _zip, List<ZipFileEntry> _zfes)\n        {\n            if (!(_zip.ZipFileStream is FileStream))\n            {\n                throw new InvalidOperationException(\"RemoveEntries is allowed just over streams of type FileStream\");\n            }\n\n            // Get full list of entries\n            var fullList = _zip.ReadCentralDir();\n\n            // In order to delete we need to create a copy of the zip file excluding the selected items\n            var tempZipName = Path.GetTempFileName();\n            var tempEntryName = Path.GetTempFileName();\n\n            try\n            {\n                var tempZip = Create(tempZipName, string.Empty);\n\n                foreach (var zfe in fullList)\n                {\n                    if (!_zfes.Contains(zfe))\n                    {\n                        if (_zip.ExtractFile(zfe, tempEntryName))\n                        {\n                            tempZip.AddFile(zfe.Method, tempEntryName, zfe.FilenameInZip, zfe.Comment);\n                        }\n                    }\n                }\n\n                _zip.Close();\n                tempZip.Close();\n\n                File.Delete(_zip.FileName);\n                File.Move(tempZipName, _zip.FileName);\n\n                _zip = Open(_zip.FileName, _zip.Access);\n            }\n            catch\n            {\n                return false;\n            }\n            finally\n            {\n                if (File.Exists(tempZipName))\n                {\n                    File.Delete(tempZipName);\n                }\n\n                if (File.Exists(tempEntryName))\n                {\n                    File.Delete(tempEntryName);\n                }\n            }\n\n            return true;\n        }\n\n        /// <summary>\n        ///     Add full contents of a file into the Zip storage\n        /// </summary>\n        /// <param name=\"_method\">\n        ///     Compression method\n        /// </param>\n        /// <param name=\"_pathname\">\n        ///     Full path of file to add to Zip storage\n        /// </param>\n        /// <param name=\"_filenameInZip\">\n        ///     Filename and path as desired in Zip directory\n        /// </param>\n        /// <param name=\"_comment\">\n        ///     Comment for stored file\n        /// </param>\n        public void AddFile(Compression _method, string _pathname, string _filenameInZip, string _comment)\n        {\n            if (Access == FileAccess.Read)\n            {\n                throw new InvalidOperationException(\"Writing is not alowed\");\n            }\n\n            var stream = new FileStream(_pathname, FileMode.Open, FileAccess.Read);\n            AddStream(_method, _filenameInZip, stream, File.GetLastWriteTime(_pathname), _comment);\n            stream.Close();\n        }\n\n        /// <summary>\n        ///     Add full contents of a stream into the Zip storage\n        /// </summary>\n        /// <param name=\"_method\">\n        ///     Compression method\n        /// </param>\n        /// <param name=\"_filenameInZip\">\n        ///     Filename and path as desired in Zip directory\n        /// </param>\n        /// <param name=\"_source\">\n        ///     Stream object containing the data to store in Zip\n        /// </param>\n        /// <param name=\"_modTime\">\n        ///     Modification time of the data to store\n        /// </param>\n        /// <param name=\"_comment\">\n        ///     Comment for stored file\n        /// </param>\n        public void AddStream(Compression _method, string _filenameInZip, Stream _source, DateTime _modTime,\n            string _comment)\n        {\n            if (Access == FileAccess.Read)\n            {\n                throw new InvalidOperationException(\"Writing is not alowed\");\n            }\n\n            long offset;\n            if (Files.Count == 0)\n            {\n                offset = 0;\n            }\n            else\n            {\n                var last = Files[Files.Count - 1];\n                offset = last.HeaderOffset + last.HeaderSize;\n            }\n\n            // Prepare the fileinfo\n            var zfe = new ZipFileEntry();\n            zfe.Method = _method;\n            zfe.EncodeUTF8 = EncodeUTF8;\n            zfe.FilenameInZip = NormalizedFilename(_filenameInZip);\n            zfe.Comment = _comment == null ? string.Empty : _comment;\n\n            // Even though we write the header now, it will have to be rewritten, since we don't know compressed size or crc.\n            zfe.Crc32 = 0; // to be updated later\n            zfe.HeaderOffset = (uint) ZipFileStream.Position; // offset within file of the start of this local record\n            zfe.ModifyTime = _modTime;\n\n            // Write local header\n            WriteLocalHeader(ref zfe);\n            zfe.FileOffset = (uint) ZipFileStream.Position;\n\n            // Write file to zip (store)\n            Store(ref zfe, _source);\n            //_source.Close();\n\n            UpdateCrcAndSizes(ref zfe);\n\n            Files.Add(zfe);\n        }\n\n        /// <summary>\n        ///     Updates central directory (if pertinent) and close the Zip storage\n        /// </summary>\n        /// <remarks>\n        ///     This is a required step, unless automatic dispose is used\n        /// </remarks>\n        public void Close()\n        {\n            if (Access != FileAccess.Read)\n            {\n                var centralOffset = (uint) ZipFileStream.Position;\n                uint centralSize = 0;\n\n                if (CentralDirImage != null)\n                {\n                    ZipFileStream.Write(CentralDirImage, 0, CentralDirImage.Length);\n                }\n\n                for (var i = 0; i < Files.Count; i++)\n                {\n                    var pos = ZipFileStream.Position;\n                    WriteCentralDirRecord(Files[i]);\n                    centralSize += (uint) (ZipFileStream.Position - pos);\n                }\n\n                if (CentralDirImage != null)\n                {\n                    WriteEndRecord(centralSize + (uint) CentralDirImage.Length, centralOffset);\n                }\n                else\n                {\n                    WriteEndRecord(centralSize, centralOffset);\n                }\n            }\n\n            if (ZipFileStream != null)\n            {\n                ZipFileStream.Flush();\n                ZipFileStream.Dispose();\n                ZipFileStream = null;\n            }\n        }\n\n        /// <summary>\n        ///     Copy the contents of a stored file into a physical file\n        /// </summary>\n        /// <param name=\"_zfe\">\n        ///     Entry information of file to extract\n        /// </param>\n        /// <param name=\"_filename\">\n        ///     Name of file to store uncompressed data\n        /// </param>\n        /// <returns>\n        ///     True if success, false if not.\n        /// </returns>\n        /// <remarks>\n        ///     Unique compression methods are Store and Deflate\n        /// </remarks>\n        public bool ExtractFile(ZipFileEntry _zfe, string _filename)\n        {\n            // Make sure the parent directory exist\n            var path = Path.GetDirectoryName(_filename);\n\n            if (!Directory.Exists(path))\n            {\n                Directory.CreateDirectory(path);\n            }\n\n            // Check it is directory. If so, do nothing\n            if (Directory.Exists(_filename))\n            {\n                return true;\n            }\n\n            Stream output = new FileStream(_filename, FileMode.Create, FileAccess.Write);\n            var result = ExtractFile(_zfe, output);\n            if (result)\n            {\n                output.Close();\n            }\n\n            File.SetCreationTime(_filename, _zfe.ModifyTime);\n            File.SetLastWriteTime(_filename, _zfe.ModifyTime);\n\n            return result;\n        }\n\n        /// <summary>\n        ///     Copy the contents of a stored file into an opened stream\n        /// </summary>\n        /// <param name=\"_zfe\">\n        ///     Entry information of file to extract\n        /// </param>\n        /// <param name=\"_stream\">\n        ///     Stream to store the uncompressed data\n        /// </param>\n        /// <returns>\n        ///     True if success, false if not.\n        /// </returns>\n        /// <remarks>\n        ///     Unique compression methods are Store and Deflate\n        /// </remarks>\n        public bool ExtractFile(ZipFileEntry _zfe, Stream _stream)\n        {\n            if (!_stream.CanWrite)\n            {\n                throw new InvalidOperationException(\"Stream cannot be written\");\n            }\n\n            // check signature\n            var signature = new byte[4];\n            ZipFileStream.Seek(_zfe.HeaderOffset, SeekOrigin.Begin);\n            ZipFileStream.Read(signature, 0, 4);\n            if (BitConverter.ToUInt32(signature, 0) != 0x04034b50)\n            {\n                return false;\n            }\n\n            // Select input stream for inflating or just reading\n            Stream inStream;\n            if (_zfe.Method == Compression.Store)\n            {\n                inStream = ZipFileStream;\n            }\n            else if (_zfe.Method == Compression.Deflate)\n            {\n                inStream = new DeflateStream(ZipFileStream, CompressionMode.Decompress, true);\n            }\n            else\n            {\n                return false;\n            }\n\n            // Buffered copy\n            var buffer = new byte[16384];\n            ZipFileStream.Seek(_zfe.FileOffset, SeekOrigin.Begin);\n            var bytesPending = _zfe.FileSize;\n            while (bytesPending > 0)\n            {\n                var bytesRead = inStream.Read(buffer, 0, (int) Math.Min(bytesPending, buffer.Length));\n                _stream.Write(buffer, 0, bytesRead);\n                bytesPending -= (uint) bytesRead;\n            }\n\n            _stream.Flush();\n\n            if (_zfe.Method == Compression.Deflate)\n            {\n                inStream.Dispose();\n            }\n\n            return true;\n        }\n\n        /// <summary>\n        ///     Read all the file records in the central directory\n        /// </summary>\n        /// <returns>\n        ///     List of all entries in directory\n        /// </returns>\n        public List<ZipFileEntry> ReadCentralDir()\n        {\n            if (CentralDirImage == null)\n            {\n                throw new InvalidOperationException(\"Central directory currently does not exist\");\n            }\n\n            var result = new List<ZipFileEntry>();\n\n            for (var pointer = 0; pointer < CentralDirImage.Length;)\n            {\n                var signature = BitConverter.ToUInt32(CentralDirImage, pointer);\n                if (signature != 0x02014b50)\n                {\n                    break;\n                }\n\n                var encodeUTF8 = (BitConverter.ToUInt16(CentralDirImage, pointer + 8) & 0x0800) != 0;\n                var method = BitConverter.ToUInt16(CentralDirImage, pointer + 10);\n                var modifyTime = BitConverter.ToUInt32(CentralDirImage, pointer + 12);\n                var crc32 = BitConverter.ToUInt32(CentralDirImage, pointer + 16);\n                var comprSize = BitConverter.ToUInt32(CentralDirImage, pointer + 20);\n                var fileSize = BitConverter.ToUInt32(CentralDirImage, pointer + 24);\n                var filenameSize = BitConverter.ToUInt16(CentralDirImage, pointer + 28);\n                var extraSize = BitConverter.ToUInt16(CentralDirImage, pointer + 30);\n                var commentSize = BitConverter.ToUInt16(CentralDirImage, pointer + 32);\n                var headerOffset = BitConverter.ToUInt32(CentralDirImage, pointer + 42);\n                var headerSize = (uint) (46 + filenameSize + extraSize + commentSize);\n\n                var encoder = encodeUTF8 ? Encoding.UTF8 : DefaultEncoding;\n\n                var zfe = new ZipFileEntry();\n                zfe.Method = (Compression) method;\n                zfe.FilenameInZip = encoder.GetString(CentralDirImage, pointer + 46, filenameSize);\n                zfe.FileOffset = GetFileOffset(headerOffset);\n                zfe.FileSize = fileSize;\n                zfe.CompressedSize = comprSize;\n                zfe.HeaderOffset = headerOffset;\n                zfe.HeaderSize = headerSize;\n                zfe.Crc32 = crc32;\n                zfe.ModifyTime = DosTimeToDateTime(modifyTime);\n                if (commentSize > 0)\n                {\n                    zfe.Comment = encoder.GetString(CentralDirImage, pointer + 46 + filenameSize + extraSize,\n                        commentSize);\n                }\n\n                result.Add(zfe);\n                pointer += 46 + filenameSize + extraSize + commentSize;\n            }\n\n            return result;\n        }\n\n        #endregion Public Methods\n\n        /* DOS Date and time:\n            MS-DOS date. The date is a packed value with the following format. Bits Description\n                0-4 Day of the month (131)\n                5-8 Month (1 = January, 2 = February, and so on)\n                9-15 Year offset from 1980 (add 1980 to get actual year)\n            MS-DOS time. The time is a packed value with the following format. Bits Description\n                0-4 Second divided by 2\n                5-10 Minute (059)\n                11-15 Hour (023 on a 24-hour clock)\n        */\n\n        #region Methods\n\n        /// <summary>\n        ///     The date time to dos time.\n        /// </summary>\n        /// <param name=\"_dt\">\n        ///     The _dt.\n        /// </param>\n        /// <returns>\n        ///     The date time to dos time.\n        /// </returns>\n        private uint DateTimeToDosTime(DateTime _dt)\n        {\n            return\n                (uint)\n                    ((_dt.Second/2) | (_dt.Minute << 5) | (_dt.Hour << 11) | (_dt.Day << 16) | (_dt.Month << 21) |\n                     ((_dt.Year - 1980) << 25));\n        }\n\n        /// <summary>\n        ///     The dos time to date time.\n        /// </summary>\n        /// <param name=\"_dt\">\n        ///     The _dt.\n        /// </param>\n        /// <returns>\n        /// </returns>\n        private DateTime DosTimeToDateTime(uint _dt)\n        {\n            return new DateTime(\n                (int) (_dt >> 25) + 1980,\n                (int) (_dt >> 21) & 15,\n                (int) (_dt >> 16) & 31,\n                (int) (_dt >> 11) & 31,\n                (int) (_dt >> 5) & 63,\n                (int) (_dt & 31)*2);\n        }\n\n        /// <summary>\n        ///     The get file offset.\n        /// </summary>\n        /// <param name=\"_headerOffset\">\n        ///     The _header offset.\n        /// </param>\n        /// <returns>\n        ///     The get file offset.\n        /// </returns>\n        private uint GetFileOffset(uint _headerOffset)\n        {\n            var buffer = new byte[2];\n\n            ZipFileStream.Seek(_headerOffset + 26, SeekOrigin.Begin);\n            ZipFileStream.Read(buffer, 0, 2);\n            var filenameSize = BitConverter.ToUInt16(buffer, 0);\n            ZipFileStream.Read(buffer, 0, 2);\n            var extraSize = BitConverter.ToUInt16(buffer, 0);\n\n            return (uint) (30 + filenameSize + extraSize + _headerOffset);\n        }\n\n        /* CRC32 algorithm\n          The 'magic number' for the CRC is 0xdebb20e3.\n          The proper CRC pre and post conditioning\n          is used, meaning that the CRC register is\n          pre-conditioned with all ones (a starting value\n          of 0xffffffff) and the value is post-conditioned by\n          taking the one's complement of the CRC residual.\n          If bit 3 of the general purpose flag is set, this\n          field is set to zero in the local header and the correct\n          value is put in the data descriptor and in the central\n          directory.\n        */\n\n        // Replaces backslashes with slashes to store in zip header\n        /// <summary>\n        ///     The normalized filename.\n        /// </summary>\n        /// <param name=\"_filename\">\n        ///     The _filename.\n        /// </param>\n        /// <returns>\n        ///     The normalized filename.\n        /// </returns>\n        private string NormalizedFilename(string _filename)\n        {\n            var filename = _filename.Replace('\\\\', '/');\n\n            var pos = filename.IndexOf(':');\n            if (pos >= 0)\n            {\n                filename = filename.Remove(0, pos + 1);\n            }\n\n            return filename.Trim('/');\n        }\n\n        // Reads the end-of-central-directory record\n        /// <summary>\n        ///     The read file info.\n        /// </summary>\n        /// <returns>\n        ///     The read file info.\n        /// </returns>\n        private bool ReadFileInfo()\n        {\n            if (ZipFileStream.Length < 22)\n            {\n                return false;\n            }\n\n            try\n            {\n                ZipFileStream.Seek(-17, SeekOrigin.End);\n                var br = new BinaryReader(ZipFileStream);\n                do\n                {\n                    ZipFileStream.Seek(-5, SeekOrigin.Current);\n                    var sig = br.ReadUInt32();\n                    if (sig == 0x06054b50)\n                    {\n                        ZipFileStream.Seek(6, SeekOrigin.Current);\n\n                        var entries = br.ReadUInt16();\n                        var centralSize = br.ReadInt32();\n                        var centralDirOffset = br.ReadUInt32();\n                        var commentSize = br.ReadUInt16();\n\n                        // check if comment field is the very last data in file\n                        if (ZipFileStream.Position + commentSize != ZipFileStream.Length)\n                        {\n                            return false;\n                        }\n\n                        // Copy entire central directory to a memory buffer\n                        ExistingFiles = entries;\n                        CentralDirImage = new byte[centralSize];\n                        ZipFileStream.Seek(centralDirOffset, SeekOrigin.Begin);\n                        ZipFileStream.Read(CentralDirImage, 0, centralSize);\n\n                        // Leave the pointer at the begining of central dir, to append new files\n                        ZipFileStream.Seek(centralDirOffset, SeekOrigin.Begin);\n                        return true;\n                    }\n                } while (ZipFileStream.Position > 0);\n            }\n            catch\n            {\n            }\n\n            return false;\n        }\n\n        /// <summary>\n        ///     The store.\n        /// </summary>\n        /// <param name=\"_zfe\">\n        ///     The _zfe.\n        /// </param>\n        /// <param name=\"_source\">\n        ///     The _source.\n        /// </param>\n        private void Store(ref ZipFileEntry _zfe, Stream _source)\n        {\n            var buffer = new byte[16384];\n            int bytesRead;\n            uint totalRead = 0;\n            Stream outStream;\n\n            var posStart = ZipFileStream.Position;\n            var sourceStart = _source.Position;\n\n            if (_zfe.Method == Compression.Store)\n            {\n                outStream = ZipFileStream;\n            }\n            else\n            {\n                outStream = new DeflateStream(ZipFileStream, CompressionMode.Compress, true);\n            }\n\n            _zfe.Crc32 = 0 ^ 0xffffffff;\n\n            do\n            {\n                bytesRead = _source.Read(buffer, 0, buffer.Length);\n                totalRead += (uint) bytesRead;\n                if (bytesRead > 0)\n                {\n                    outStream.Write(buffer, 0, bytesRead);\n\n                    for (uint i = 0; i < bytesRead; i++)\n                    {\n                        _zfe.Crc32 = CrcTable[(_zfe.Crc32 ^ buffer[i]) & 0xFF] ^ (_zfe.Crc32 >> 8);\n                    }\n                }\n            } while (bytesRead == buffer.Length);\n            outStream.Flush();\n\n            if (_zfe.Method == Compression.Deflate)\n            {\n                outStream.Dispose();\n            }\n\n            _zfe.Crc32 ^= 0xffffffff;\n            _zfe.FileSize = totalRead;\n            _zfe.CompressedSize = (uint) (ZipFileStream.Position - posStart);\n\n            // Verify for real compression\n            if (_zfe.Method == Compression.Deflate && !ForceDeflating && _source.CanSeek &&\n                _zfe.CompressedSize > _zfe.FileSize)\n            {\n                // Start operation again with Store algorithm\n                _zfe.Method = Compression.Store;\n                ZipFileStream.Position = posStart;\n                ZipFileStream.SetLength(posStart);\n                _source.Position = sourceStart;\n                Store(ref _zfe, _source);\n            }\n        }\n\n        /// <summary>\n        ///     The update crc and sizes.\n        /// </summary>\n        /// <param name=\"_zfe\">\n        ///     The _zfe.\n        /// </param>\n        private void UpdateCrcAndSizes(ref ZipFileEntry _zfe)\n        {\n            var lastPos = ZipFileStream.Position; // remember position\n\n            ZipFileStream.Position = _zfe.HeaderOffset + 8;\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) _zfe.Method), 0, 2); // zipping method\n\n            ZipFileStream.Position = _zfe.HeaderOffset + 14;\n            ZipFileStream.Write(BitConverter.GetBytes(_zfe.Crc32), 0, 4); // Update CRC\n            ZipFileStream.Write(BitConverter.GetBytes(_zfe.CompressedSize), 0, 4); // Compressed size\n            ZipFileStream.Write(BitConverter.GetBytes(_zfe.FileSize), 0, 4); // Uncompressed size\n\n            ZipFileStream.Position = lastPos; // restore position\n        }\n\n        /// <summary>\n        ///     The write central dir record.\n        /// </summary>\n        /// <param name=\"_zfe\">\n        ///     The _zfe.\n        /// </param>\n        private void WriteCentralDirRecord(ZipFileEntry _zfe)\n        {\n            var encoder = _zfe.EncodeUTF8 ? Encoding.UTF8 : DefaultEncoding;\n            var encodedFilename = encoder.GetBytes(_zfe.FilenameInZip);\n            var encodedComment = encoder.GetBytes(_zfe.Comment);\n\n            ZipFileStream.Write(new byte[] {80, 75, 1, 2, 23, 0xB, 20, 0}, 0, 8);\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) (_zfe.EncodeUTF8 ? 0x0800 : 0)), 0, 2);\n\n            // filename and comment encoding\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) _zfe.Method), 0, 2); // zipping method\n            ZipFileStream.Write(BitConverter.GetBytes(DateTimeToDosTime(_zfe.ModifyTime)), 0, 4);\n\n            // zipping date and time\n            ZipFileStream.Write(BitConverter.GetBytes(_zfe.Crc32), 0, 4); // file CRC\n            ZipFileStream.Write(BitConverter.GetBytes(_zfe.CompressedSize), 0, 4); // compressed file size\n            ZipFileStream.Write(BitConverter.GetBytes(_zfe.FileSize), 0, 4); // uncompressed file size\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) encodedFilename.Length), 0, 2); // Filename in zip\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) 0), 0, 2); // extra length\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) encodedComment.Length), 0, 2);\n\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) 0), 0, 2); // disk=0\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) 0), 0, 2); // file type: binary\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) 0), 0, 2); // Internal file attributes\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) 0x8100), 0, 2);\n                // External file attributes (normal/readable)\n            ZipFileStream.Write(BitConverter.GetBytes(_zfe.HeaderOffset), 0, 4); // Offset of header\n\n            ZipFileStream.Write(encodedFilename, 0, encodedFilename.Length);\n            ZipFileStream.Write(encodedComment, 0, encodedComment.Length);\n        }\n\n        /* End of central dir record:\n            end of central dir signature    4 bytes  (0x06054b50)\n            number of this disk             2 bytes\n            number of the disk with the\n            start of the central directory  2 bytes\n            total number of entries in\n            the central dir on this disk    2 bytes\n            total number of entries in\n            the central dir                 2 bytes\n            size of the central directory   4 bytes\n            offset of start of central\n            directory with respect to\n            the starting disk number        4 bytes\n            zipfile comment length          2 bytes\n            zipfile comment (variable size)\n        */\n\n        /// <summary>\n        ///     The write end record.\n        /// </summary>\n        /// <param name=\"_size\">\n        ///     The _size.\n        /// </param>\n        /// <param name=\"_offset\">\n        ///     The _offset.\n        /// </param>\n        private void WriteEndRecord(uint _size, uint _offset)\n        {\n            var encoder = EncodeUTF8 ? Encoding.UTF8 : DefaultEncoding;\n            var encodedComment = encoder.GetBytes(Comment);\n\n            ZipFileStream.Write(new byte[] {80, 75, 5, 6, 0, 0, 0, 0}, 0, 8);\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) Files.Count + ExistingFiles), 0, 2);\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) Files.Count + ExistingFiles), 0, 2);\n            ZipFileStream.Write(BitConverter.GetBytes(_size), 0, 4);\n            ZipFileStream.Write(BitConverter.GetBytes(_offset), 0, 4);\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) encodedComment.Length), 0, 2);\n            ZipFileStream.Write(encodedComment, 0, encodedComment.Length);\n        }\n\n        /// <summary>\n        ///     The write local header.\n        /// </summary>\n        /// <param name=\"_zfe\">\n        ///     The _zfe.\n        /// </param>\n        private void WriteLocalHeader(ref ZipFileEntry _zfe)\n        {\n            var pos = ZipFileStream.Position;\n            var encoder = _zfe.EncodeUTF8 ? Encoding.UTF8 : DefaultEncoding;\n            var encodedFilename = encoder.GetBytes(_zfe.FilenameInZip);\n\n            ZipFileStream.Write(new byte[] {80, 75, 3, 4, 20, 0}, 0, 6); // No extra header\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) (_zfe.EncodeUTF8 ? 0x0800 : 0)), 0, 2);\n\n            // filename and comment encoding\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) _zfe.Method), 0, 2); // zipping method\n            ZipFileStream.Write(BitConverter.GetBytes(DateTimeToDosTime(_zfe.ModifyTime)), 0, 4);\n\n            // zipping date and time\n            ZipFileStream.Write(new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 12);\n\n            // unused CRC, un/compressed size, updated later\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) encodedFilename.Length), 0, 2); // filename length\n            ZipFileStream.Write(BitConverter.GetBytes((ushort) 0), 0, 2); // extra length\n\n            ZipFileStream.Write(encodedFilename, 0, encodedFilename.Length);\n            _zfe.HeaderSize = (uint) (ZipFileStream.Position - pos);\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Core/Util/Web/StreamUpload.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"StreamUpload.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// <remarks>\n//   Originates from: http://www.andrescottwilson.com/posting-content-from-memory-stream-using-httpwebrequest-c/\n//   Changed for NBug by Michal Turecki\n// </remarks>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Collections.Specialized;\nusing System.Globalization;\nusing System.IO;\nusing System.Net;\nusing System.Text;\n\nnamespace NBug.Core.Util.Web\n{\n    public class StreamUpload\n    {\n        private readonly string boundary = string.Empty;\n        private readonly MemoryStream outputStream = new();\n        private ICredentials credentials;\n        private WebResponse response;\n\n        public StreamUpload()\n        {\n            boundary = \"---------------------------\" + DateTime.Now.Ticks.ToString(\"x\", NumberFormatInfo.InvariantInfo);\n        }\n\n        public static StreamUpload Create()\n        {\n            return new StreamUpload();\n        }\n\n        public StreamUpload Add(string name, string value)\n        {\n            WriteBoundaryToStream(outputStream, Environment.NewLine);\n            WriteToStream(\n                outputStream, Encoding.UTF8,\n                string.Format(\"Content-Disposition: form-data; name=\\\"{0}\\\"{1}{1}\", name, Environment.NewLine));\n            WriteToStream(outputStream, Encoding.UTF8, value + Environment.NewLine);\n            return this;\n        }\n\n        public StreamUpload Add(Stream inputStream)\n        {\n            return Add(inputStream, \"form\", \"file\", \"application/octet-stream\");\n        }\n\n        public StreamUpload Add(Stream inputStream, string formName, string fileName, string contentType)\n        {\n            // write content boundary start\n            WriteBoundaryToStream(outputStream, Environment.NewLine);\n\n            WriteToStream(\n                outputStream,\n                Encoding.UTF8,\n                string.Format(\"Content-Disposition: form-data; name=\\\"{0}\\\"; filename=\\\"{1}\\\"{2}\", formName, fileName,\n                    Environment.NewLine));\n            WriteToStream(outputStream, Encoding.UTF8,\n                string.Format(\"Content-Type: {0}{1}{1}\", contentType, Environment.NewLine));\n\n            var buffer = new byte[inputStream.Length];\n            var bytesRead = 0;\n\n            while ((bytesRead = inputStream.Read(buffer, 0, buffer.Length)) != 0)\n            {\n                outputStream.Write(buffer, 0, bytesRead);\n            }\n\n            // must include a new line before writing the end boundary\n            WriteToStream(outputStream, Encoding.ASCII, Environment.NewLine);\n\n            // make sure we end boundary now as the content is finished\n            WriteEndBoundaryToStream(outputStream);\n\n            return this;\n        }\n\n        public StreamUpload AddNameValues(NameValueCollection nameValues)\n        {\n            foreach (string name in nameValues.Keys)\n            {\n                Add(name, nameValues[name]);\n            }\n\n            return this;\n        }\n\n        public StreamUpload Clear()\n        {\n            outputStream.Close();\n            response = null;\n            return this;\n        }\n\n        public string Response()\n        {\n            return (response == null)\n                ? string.Empty\n                : new StreamReader(response.GetResponseStream() ?? throw new InvalidOperationException(\"GetResponseStream null\"), Encoding.UTF8).ReadToEnd();\n        }\n\n        public StreamUpload Upload(string url)\n        {\n            var request = (HttpWebRequest)WebRequest.Create(url);\n            request.ContentType = string.Format(\"multipart/form-data; boundary={0}\", boundary);\n            request.Method = \"POST\";\n\n            if (credentials != null)\n            {\n                var user = credentials.GetCredential(request.RequestUri, \"Basic\");\n                var auth = string.Format(\"{0}:{1}\", user.UserName, user.Password);\n                request.Headers.Add(\"Authorization\", \"Basic \" + Convert.ToBase64String(Encoding.ASCII.GetBytes(auth)));\n            }\n\n            WriteToHttpStream(request, outputStream);\n            response = request.GetResponse();\n            return this;\n        }\n\n        public StreamUpload WithCredentials(ICredentials credentials)\n        {\n            this.credentials = credentials;\n            return this;\n        }\n\n        private void WriteBoundaryToStream(MemoryStream stream, string endDeliminator)\n        {\n            WriteToStream(stream, Encoding.ASCII, string.Format(\"--{0}{1}\", boundary, endDeliminator));\n        }\n\n        private void WriteEndBoundaryToStream(MemoryStream stream)\n        {\n            WriteBoundaryToStream(stream, \"--\");\n        }\n\n        private void WriteNameValuesToStream(MemoryStream stream, NameValueCollection nameValues)\n        {\n            foreach (string name in nameValues.Keys)\n            {\n                WriteBoundaryToStream(stream, Environment.NewLine);\n\n                WriteToStream(stream, Encoding.UTF8,\n                    string.Format(\"Content-Disposition: form-data; name=\\\"{0}\\\"{1}{1}\", name, Environment.NewLine));\n                WriteToStream(stream, Encoding.UTF8, nameValues[name] + Environment.NewLine);\n            }\n        }\n\n        private void WriteToHttpStream(HttpWebRequest request, MemoryStream outputStream)\n        {\n            request.ContentLength = outputStream.Length;\n\n            using (var requestStream = request.GetRequestStream())\n            {\n                outputStream.Position = 0;\n\n                var tempBuffer = new byte[outputStream.Length];\n                outputStream.Read(tempBuffer, 0, tempBuffer.Length);\n                outputStream.Close();\n\n                requestStream.Write(tempBuffer, 0, tempBuffer.Length);\n                requestStream.Close();\n            }\n        }\n\n        private void WriteToStream(MemoryStream stream, Encoding encoding, string output)\n        {\n            var headerbytes = encoding.GetBytes(output);\n            stream.Write(headerbytes, 0, headerbytes.Length);\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Enums/LoggerCategory.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"LoggerCategory.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Enums\n{\n    public enum LoggerCategory\n    {\n        /// <summary>\n        ///     This category outputs most detailed information about the internal state of the library. Every single major event\n        ///     (like\n        ///     generating a bug report, submitting a bug report, truncating internal files, etc.) is logged in this category.\n        /// </summary>\n        NBugTrace,\n\n        /// <summary>\n        ///     This category outputs results of substantial events like the server response after submitting a bug report to the a\n        ///     server.\n        /// </summary>\n        NBugInfo,\n\n        /// <summary>\n        ///     This category outputs warning messages from non-exceptional but important errors like a missing or inaccessable\n        ///     files.\n        /// </summary>\n        NBugWarning,\n\n        /// <summary>\n        ///     This category outputs error messages for exceptional and critical situations. These situations generally disable\n        ///     some functionality\n        ///     of the library or halts the execution of some code path. If not in release mode, an exception is thrown for error\n        ///     messages.\n        /// </summary>\n        NBugError\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Enums/MiniDumpType.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"MiniDumpType.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Enums\n{\n    public enum MiniDumpType\n    {\n        /// <summary>\n        ///     Generate no minidump at all.\n        /// </summary>\n        None,\n\n        /// <summary>\n        ///     Generates the smallest possible minidump still with useful information. Dump size is about ~100KB compressed.\n        /// </summary>\n        Tiny,\n\n        /// <summary>\n        ///     Generates minidump with private read write memory and data segments. This mode allows retreiving of local values\n        ///     and the stack\n        ///     variables. Dump size is about ~5MB compressed.\n        /// </summary>\n        Normal,\n\n        /// <summary>\n        ///     Generates full application memory dump. This simply dump all memory used by the process. Dump size is about ~100MB\n        ///     compressed.\n        /// </summary>\n        Full\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Enums/StoragePath.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"StoragePath.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Enums\n{\n    public enum StoragePath\n    {\n        /// <summary>\n        ///     %Temp% directory is the default storage. Usually set to 'C:\\Documents and Settings\\Username\\Local Settings\\Temp'.\n        /// </summary>\n        WindowsTemp,\n\n        /// <summary>\n        ///     Initial working directory, i.e. where the executing assembly (MyProduct.exe) is located.\n        /// </summary>\n        CurrentDirectory,\n\n        /// <summary>\n        ///     User's isolated storage store (application scope).\n        /// </summary>\n        IsolatedStorage,\n\n        /// <summary>\n        ///     Custom path should be a full path like 'C:\\Documents and Settings\\MyUser\\Local Settings\\Temp'.\n        /// </summary>\n        /// <remarks>Path should not have a trailing slash. If the directory doesn't exist, it is created first.</remarks>\n        Custom\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Enums/UIMode.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"UIMode.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Enums\n{\n    public enum UIMode\n    {\n        /// <summary>\n        ///     Automatic mode selection is the default setting. Mode and provider is automatically selected for different\n        ///     application types.\n        /// </summary>\n        Auto,\n\n        /// <summary>\n        ///     No user interface is displayed at all. All the exception handling and bug reporting process is silent. In this\n        ///     mode, termination of\n        ///     of the host application can be skipped altogether via <see cref=\"Settings.ExitApplicationImmediately\" />\n        /// </summary>\n        None,\n\n        /// <summary>\n        ///     Minimal user interface is displayed. This consists of a simple message box for WinForms and WPF, and a single line\n        ///     of information\n        ///     message for console applications.\n        /// </summary>\n        Minimal,\n\n        /// <summary>\n        ///     Normal user interface is displayed to the user, which strikes a balance between the level of details shown about\n        ///     the exception and\n        ///     being still user friendly. This closely replicates the original interface displayed by CLR in case of unhandled\n        ///     exceptions.\n        /// </summary>\n        Normal,\n\n        /// <summary>\n        ///     Full blown user interface is displayed to the user. This interface contains as much detail about the exception and\n        ///     the application\n        ///     as possible. This is very useful for power users.\n        /// </summary>\n        Full\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Enums/UIProvider.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"UIProvider.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nnamespace NBug.Enums\n{\n    public enum UIProvider\n    {\n        /// <summary>\n        ///     Automatic provider selection is the default setting.\n        /// </summary>\n        Auto,\n\n        /// <summary>\n        ///     Only the console is used to display the interface and interact with the user if necessary.\n        /// </summary>\n        Console,\n\n        /// <summary>\n        ///     Windows Forms interface is used for all UI displayed to the user.\n        /// </summary>\n        WinForms,\n\n        /// <summary>\n        ///     Windows Presentation Foundation interface is used for all UI displayed to the user.\n        /// </summary>\n        WPF,\n\n        /// <summary>\n        ///     Custom UIProvider.\n        /// </summary>\n        Custom\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Events/CustomSubmissionEventArgs.cs",
    "content": "// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"CustomSubmissionEventArgs.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.IO;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Util.Serialization;\n\nnamespace NBug.Events\n{\n    public class CustomSubmissionEventArgs : EventArgs\n    {\n        internal CustomSubmissionEventArgs(string fileName, Stream file, Report report, SerializableException exception)\n        {\n            FileName = fileName;\n            File = file;\n            Report = report;\n            Exception = exception;\n            Result = false;\n        }\n\n        public SerializableException Exception { get; private set; }\n        public Stream File { get; private set; }\n        public string FileName { get; private set; }\n        public Report Report { get; private set; }\n        public bool Result { get; set; }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Events/CustomUIEventArgs.cs",
    "content": "// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"CustomUIEventArgs.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.UI;\nusing NBug.Core.Util.Serialization;\nusing NBug.Enums;\n\nnamespace NBug.Events\n{\n    public class CustomUIEventArgs : EventArgs\n    {\n        internal CustomUIEventArgs(UIMode uiMode, SerializableException exception, Report report)\n        {\n            UIMode = uiMode;\n            Report = report;\n            Exception = exception;\n            Result = new UIDialogResult(ExecutionFlow.BreakExecution, SendReport.DoNotSend);\n        }\n\n        public SerializableException Exception { get; private set; }\n        public Report Report { get; private set; }\n        public UIDialogResult Result { get; set; }\n        public UIMode UIMode { get; private set; }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Exceptions.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Exceptions.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing NBug.Core.Reporting;\nusing NBug.Core.Util;\n\nnamespace NBug\n{\n    public static class Exceptions\n    {\n        /// <summary>\n        ///     Submits a bug report for the given exception. This function useful for submitting bug reports inside a try-catch\n        ///     block.\n        ///     Note that this function uses the NBug configuration so it will use the pre-configured UI and submission settings.\n        /// </summary>\n        /// <param name=\"exception\">The exception to submit as the bug report.</param>\n        public static void Report(Exception exception)\n        {\n            // Below never exits application by itself (by design) so execution of the application continues normally\n            new BugReport().Report(exception, ExceptionThread.Main);\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Handler.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Handler.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Diagnostics.Tracing;\nusing System.Threading;\nusing System.Windows.Forms;\nusing Microsoft.Win32.Interop;\nusing NBug.Core.Reporting;\nusing NBug.Core.UI;\nusing NBug.Core.Util;\nusing NBug.Core.Util.Logging;\nusing Dispatcher = NBug.Core.Submission.Dispatcher;\n\nnamespace NBug\n{\n    public static class Handler\n    {\n        static Handler()\n        {\n            // Submit any queued reports on a seperate thread asynchronously, while exceptions handlers are being set);\n            if (!Settings.SkipDispatching)\n            {\n                new Dispatcher(Settings.DispatcherIsAsynchronous);\n            }\n        }\n\n        // Using delegates to make sure that static constructor gets called on delegate access\n\n        /// <summary>\n        ///     Used for handling WinForms exceptions bound to the UI thread.\n        ///     Handles the <see cref=\"Application.ThreadException\" /> events in <see cref=\"System.Windows.Forms\" /> namespace.\n        /// </summary>\n        public static ThreadExceptionEventHandler ThreadException\n        {\n            get\n            {\n                {\n                    return ThreadExceptionHandler;\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Used for handling general exceptions bound to the main thread.\n        ///     Handles the <see cref=\"AppDomain.UnhandledException\" /> events in <see cref=\"System\" /> namespace.\n        /// </summary>\n        public static UnhandledExceptionEventHandler UnhandledException\n        {\n            get { return UnhandledExceptionHandler; }\n        }\n\n        /// <summary>\n        ///     Used for handling WinForms exceptions bound to the UI thread.\n        ///     Handles the <see cref=\"Application.ThreadException\" /> events in <see cref=\"System.Windows.Forms\" /> namespace.\n        /// </summary>\n        /// <param name=\"sender\">Exception sender object.</param>\n        /// <param name=\"e\">Real exception is in: e.Exception</param>\n        private static void ThreadExceptionHandler(object sender, ThreadExceptionEventArgs e)\n        {\n            if (HandleOutdatedWindowsCrash(e.Exception) && Settings.HandleExceptions)\n            {\n                Logger.Trace(\"Starting to handle a System.Windows.Forms.Application.ThreadException.\");\n\n                // WinForms UI thread exceptions do not propagate to more general handlers unless: Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);\n                var executionFlow = new BugReport().Report(e.Exception, ExceptionThread.UI_WinForms);\n                if (executionFlow == ExecutionFlow.BreakExecution)\n                {\n                    Environment.Exit(0);\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Used for handling general exceptions bound to the main thread.\n        ///     Handles the <see cref=\"AppDomain.UnhandledException\" /> events in <see cref=\"System\" /> namespace.\n        /// </summary>\n        /// <param name=\"sender\">Exception sender object.</param>\n        /// <param name=\"e\">Real exception is in: ((Exception)e.ExceptionObject)</param>\n        private static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e)\n        {\n            if (HandleOutdatedWindowsCrash(e.ExceptionObject as Exception) && Settings.HandleExceptions)\n            {\n                Logger.Trace(\"Starting to handle a System.AppDomain.UnhandledException.\");\n                var executionFlow = new BugReport().Report((Exception) e.ExceptionObject, ExceptionThread.Main);\n                if (executionFlow == ExecutionFlow.BreakExecution)\n                {\n                    Environment.Exit(0);\n                }\n            }\n        }\n        \n        private static bool HandleOutdatedWindowsCrash(Exception dnfe)\n        {\n            // DllNotFoundException, EntryPointNotFoundException, possibly others\n            if (dnfe != null)\n            {\n                if (dnfe.Message.Contains(@\"'api-ms-win-core-com-l1-1-0.dll'\"))\n                {\n                    MessageBox.Show(\"It seems like you're running an unsupported version of Windows. Please make sure you have all of the latest Windows service packs and updates installed and try again.\\n\\n\" +\n                                    \"If updating didn't help you may need to use an older version of BCUninstaller. Check the README.md file for more information.\",\n                                    \"Unsupported Windows Version\", MessageBoxButtons.OK, MessageBoxIcon.Error);\n                    // Do not let NBug handle this, it only clogs up the error reports\n                    Environment.Exit((int)ResultWin32.ERROR_DLL_NOT_FOUND);\n                    return false;\n                }\n            }\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Helpers/EmailDestinationBuilder.cs",
    "content": "﻿using System.Net;\nusing System.Net.Mail;\nusing System.Text;\n\nnamespace NBug.Helpers\n{\n    public class EmailDestinationBuilder\n    {\n        private readonly MailAddress[] _destinationAddresses;\n        private readonly MailAddress _fromAddress;\n        private readonly string _serverName;\n        private MailAddress[] _blindCarbonCopyAddresses;\n        private MailAddress[] _carbonCopyAddresses;\n        private string _customBody;\n        private string _fromName;\n        private MailPriority? _mailPriority;\n        private string _replyTo;\n        private bool _sendAttachments;\n        private int _smtpPort = 465;\n        private string _smtpUserName;\n        private string _smtpUserPassword;\n        private string _subject;\n        private bool _useSsl = true;\n\n        public EmailDestinationBuilder(MailAddress fromAddress, MailAddress[] destinationAddresses, string serverName)\n        {\n            _serverName = serverName;\n            _fromAddress = fromAddress;\n            _destinationAddresses = destinationAddresses;\n\n            _sendAttachments = false;\n        }\n\n        public EmailDestinationBuilder Bcc(MailAddress[] blindCarbonCopyAddresses)\n        {\n            _blindCarbonCopyAddresses = blindCarbonCopyAddresses;\n\n            return this;\n        }\n\n        public EmailDestinationBuilder Body(string body)\n        {\n            _customBody = body;\n\n            return this;\n        }\n\n        /* Type=Mail;\n     * From=my_tracker@gmail.com;\n     * FromName=NBug Error Reporter;\n     * To=bugtracker@mycompany.com,someone@dummy.com,my_tracker@gmail.com;\n     * Cc=;\n     * Bcc=;\n     * ReplyTo=;\n     * UseAttachment=false;\n     * CustomSubject=;\n     * CustomBody=;\n     * SmtpServer=smtp.gmail.com;\n     * UseSSL=yes;\n     * Port=465;\n     * Priority=;\n     * UseAuthentication=yes;\n     * Username=my_tracker@gmail.com;\n     * Password=mypassword;\n     */\n\n        public string Build()\n        {\n            var sb = new StringBuilder();\n            sb.Append(\"Type=Mail;\");\n            sb.AppendFormat(\"From={0};\", _fromAddress.Address);\n\n            if (!string.IsNullOrEmpty(_fromName))\n            {\n                sb.AppendFormat(\"FromName={0};\", _fromName);\n            }\n\n            sb.Append(\"To=\");\n            foreach (var address in _destinationAddresses)\n            {\n                sb.AppendFormat(\"{0},\", address.Address);\n            }\n\n            sb.Length--;\n            sb.Append(\";\");\n\n            if (_carbonCopyAddresses != null && _carbonCopyAddresses.Length > 0)\n            {\n                sb.Append(\"Cc=\");\n                foreach (var address in _carbonCopyAddresses)\n                {\n                    sb.AppendFormat(\"{0},\", address.Address);\n                }\n\n                sb.Length--;\n                sb.Append(\";\");\n            }\n\n            if (_blindCarbonCopyAddresses != null && _blindCarbonCopyAddresses.Length > 0)\n            {\n                sb.Append(\"Bcc=\");\n                foreach (var address in _blindCarbonCopyAddresses)\n                {\n                    sb.AppendFormat(\"{0},\", address.Address);\n                }\n\n                sb.Length--;\n                sb.Append(\";\");\n            }\n\n            if (!string.IsNullOrEmpty(_replyTo))\n            {\n                sb.AppendFormat(\"ReplyTo={0};\", _replyTo);\n            }\n\n            sb.AppendFormat(\"UseAttachment={0};\", _sendAttachments ? \"true\" : \"false\");\n\n            if (!string.IsNullOrEmpty(_subject))\n            {\n                sb.AppendFormat(\"CustomSubject={0};\", _subject);\n            }\n\n            if (!string.IsNullOrEmpty(_customBody))\n            {\n                sb.AppendFormat(\"CustomBody={0};\", _customBody);\n            }\n\n            sb.AppendFormat(\"SmtpServer={0};\", _serverName);\n\n            sb.Append(\"UseSSL=\");\n            sb.Append(_useSsl ? \"yes\" : \"no\");\n            sb.Append(\";\");\n\n            sb.AppendFormat(\"Port={0};\", _smtpPort);\n\n            if (_mailPriority.HasValue)\n            {\n                sb.AppendFormat(\"Priority={0};\", _mailPriority);\n            }\n\n            if (string.IsNullOrEmpty(_smtpUserName))\n            {\n                sb.Append(\"UseAuthentication=no;\");\n            }\n            else\n            {\n                sb.Append(\"UseAuthentication=yes;\");\n                sb.AppendFormat(\"Username={0};\", _smtpUserName);\n                sb.AppendFormat(\"Password={0};\", _smtpUserPassword);\n            }\n\n            return sb.ToString();\n        }\n\n        public EmailDestinationBuilder Cc(MailAddress[] carbonCopyAddresses)\n        {\n            _carbonCopyAddresses = carbonCopyAddresses;\n            return this;\n        }\n\n        public EmailDestinationBuilder FromName(string fromName)\n        {\n            _fromName = fromName;\n\n            return this;\n        }\n\n        public EmailDestinationBuilder Priority(MailPriority mailPriority)\n        {\n            _mailPriority = mailPriority;\n\n            return this;\n        }\n\n        public EmailDestinationBuilder ReplyTo(string replyTo)\n        {\n            _replyTo = replyTo;\n\n            return this;\n        }\n\n        public EmailDestinationBuilder SendAttachments()\n        {\n            _sendAttachments = true;\n\n            return this;\n        }\n\n        public EmailDestinationBuilder Subject(string subject)\n        {\n            _subject = subject;\n\n            return this;\n        }\n\n        public EmailDestinationBuilder UseServer(bool useSecureSocketLayer, int port, NetworkCredential credential)\n        {\n            _useSsl = useSecureSocketLayer;\n            _smtpPort = port;\n            if (credential != null)\n            {\n                _smtpUserName = credential.UserName;\n                _smtpUserPassword = credential.Password;\n            }\n\n            return this;\n        }\n\n        public EmailDestinationBuilder UseServer(bool useSecureSocketLayer, NetworkCredential credential)\n        {\n            return UseServer(useSecureSocketLayer, useSecureSocketLayer ? 465 : 25, credential);\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/NBug.Configurator/NBug.Configurator.exe.config",
    "content": "<?xml version=\"1.0\"?>\n\n<configuration>\n\t<startup>\n\t\t<supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.0,Profile=Client\" />\n\t</startup>\n</configuration>"
  },
  {
    "path": "source/NBug_custom/NBug.Configurator/NBug.Examples.WinForms.exe.config",
    "content": "<?xml version=\"1.0\"?>\n\n<configuration>\n\t<startup>\n\t\t<supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.0,Profile=Client\" />\n\t</startup>\n</configuration>"
  },
  {
    "path": "source/NBug_custom/NBug.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\t<PropertyGroup>\n\t\t<OutputType>Library</OutputType>\n\t\t<RestorePackages>true</RestorePackages>\n\t\t<GenerateAssemblyInfo>false</GenerateAssemblyInfo>\n\t\t<WarningLevel>1</WarningLevel>\n\t\t<DocumentationFile />\n\t</PropertyGroup>\n\n\t<ItemGroup>\n\t\t<Compile Remove=\"Core\\Submission\\Protocols.cs\" />\n\t</ItemGroup>\n\n\t<ItemGroup>\n\t  <Compile Update=\"Properties\\Localization.Designer.cs\">\n\t    <DesignTime>True</DesignTime>\n\t    <AutoGen>True</AutoGen>\n\t    <DependentUpon>Localization.resx</DependentUpon>\n\t  </Compile>\n\t  <Compile Update=\"Properties\\Resources.Designer.cs\">\n\t    <DesignTime>True</DesignTime>\n\t    <AutoGen>True</AutoGen>\n\t    <DependentUpon>Resources.resx</DependentUpon>\n\t  </Compile>\n\t</ItemGroup>\n\n\t<ItemGroup>\n\t  <EmbeddedResource Update=\"Properties\\Localization.resx\">\n\t    <Generator>ResXFileCodeGenerator</Generator>\n\t    <LastGenOutput>Localization.Designer.cs</LastGenOutput>\n\t  </EmbeddedResource>\n\t  <EmbeddedResource Update=\"Properties\\Resources.resx\">\n\t    <Generator>ResXFileCodeGenerator</Generator>\n\t    <LastGenOutput>Resources.Designer.cs</LastGenOutput>\n\t  </EmbeddedResource>\n\t</ItemGroup>\n\n\t<ItemGroup>\n\t\t<None Update=\"NBug_LICENSE.md\">\n\t\t\t<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n\t\t</None>\n\t\t<None Update=\"NBug_README.md\">\n\t\t\t<CopyToOutputDirectory>Never</CopyToOutputDirectory>\n\t\t</None>\n\t</ItemGroup>\n</Project>"
  },
  {
    "path": "source/NBug_custom/NBug_LICENSE.md",
    "content": "The MIT License\n\nCopyright (c) 2011 Teoman Soygul and contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "source/NBug_custom/NBug_README.md",
    "content": "# [![NBug](http://www.soygul.com/wp-content/uploads/2011/07/NBug_logo.png)](http://www.soygul.com/projects/nbug/)\nNBug is a .NET library created to automate the bug reporting process. It automatically creates and sends:\n* Bug reports,\n* Crash reports with minidump,\n* Error/exception reports with stack trace + ext. info.\nIt can also be set up as a user feedback system (i.e. feature requests).\n\n## Quickstart\nRead the quickstart here: http://www.soygul.com/projects/nbug/\n\n## Questions\nYou can post your question on StackOverflow with NBug tag: http://stackoverflow.com/questions/tagged/nbug\n\n## Get it on [NuGet] (https://www.nuget.org/packages/NBug/)\n\n```powershell\nInstall-Package NBug\n```\n\n## CodePlex Home\nOld (up to v1.1.1 release) project source is hosted at CodePlex, where you can find more information about the project: http://nbug.codeplex.com/\n"
  },
  {
    "path": "source/NBug_custom/Properties/AssemblyInfo.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"AssemblyInfo.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Reflection;\n\n//using System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following\n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n\n[assembly: AssemblyTitle(\"NBug\")]\n[assembly: AssemblyDescription(\"NBug bug reporting library created by Teoman Soygul.\")]\n[assembly: AssemblyCulture(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"NBug\")]\n[assembly: AssemblyCopyright(\"Copyright © 2013 Teoman Soygul\")]\n[assembly: AssemblyTrademark(\"\")]\n\n#if DEBUG\n[assembly: AssemblyConfiguration(\"Debug\")]\n#else\n[assembly: AssemblyConfiguration(\"Release\")]\n#endif\n\n// Setting ComVisible to false makes the types in this assembly not visible\n// to COM components.  If you need to access a type in this assembly from\n// COM, set the ComVisible attribute to true on that type.\n\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n\n[assembly: Guid(\"6c55f06b-1a75-4e10-ad9a-168604ee2d91\")]\n\n// Set up for unit testing\n/*\n[assembly: InternalsVisibleTo(\"NBug.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100298c7bc6603288f349c24fe85cebfba2efbc6a88af29805efc852b93a86ba3c2e0a6b9979f49803b579387fcff27b2e97526b8001b3a68e0785da60352f9918a433cc4e7c3b143341289b10c0fd250d8aeddd5edecb049072d5a78c2eecb42fc5e3e5c32161cfc445bdc8dc366b0e52389cc50b07168b45d411c56e541b5bdae\")]\n[assembly: InternalsVisibleTo(\"NBug.Configurator, PublicKey=0024000004800000940000000602000000240000525341310004000001000100298c7bc6603288f349c24fe85cebfba2efbc6a88af29805efc852b93a86ba3c2e0a6b9979f49803b579387fcff27b2e97526b8001b3a68e0785da60352f9918a433cc4e7c3b143341289b10c0fd250d8aeddd5edecb049072d5a78c2eecb42fc5e3e5c32161cfc445bdc8dc366b0e52389cc50b07168b45d411c56e541b5bdae\")]\n*/\n\n/*\n * Basic rules to become CLS compilant is below:\n * 1. Unsigned types should not be part of the public interface of the class. What this means is public fields should not\n * have unsigned types like uint or ulong, public methods should not return unsigned types, parameters passed to public\n * function should not have unsigned types. However unsigned types can be part of private members.\n * 2. Unsafe types like pointers should not be used with public members. However they can be used with private members.\n * 3. Class names and member names should not differ only based on their case. For example we cannot have two methods\n * named MyMethod and MYMETHOD.\n * 4. Only properties and methods may be overloaded, Operators should not be overloaded.\n*/\n\n[assembly: CLSCompliant(true)]\n\n// Version information for an assembly consists of the following four values:\n//      Major Version\n//      Minor Version\n//      Build Number\n//      Revision\n// You can specify all the values or you can default the Build and Revision Numbers\n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n\n[assembly: AssemblyVersion(\"1.2\")]\n\n// This is also assigned to 'AssemblyInformationalVersion' which is the product version\n// Standard Way: [major].[minor].[bugfix].[build]\n// .NET Convention: Third digit is the auto-incremented build version. Fourth digit is revision, which is service pack no\n\n[assembly: AssemblyFileVersion(\"1.2.0.0\")]\n/*\n * AssemblyVersion should only be changed for major changes or breaking changes since any change to the\n * AssemblyVersion would force every .NET application referencing the assembly to re-compile against the\n * new version!\n *\n *\t\tDo not change the AssemblyVersion for a servicing release which is intended to be backwards compatible.\n *\t\tDo change the AssemblyVersion for a release that you know has breaking changes.\n *\n * Remember that it’s the AssemblyFileVersion that contains all the interesting servicing information\n * (it’s the Revision part of this version that tells you what Service Pack you’re on)\n*/\n"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace NBug.Properties {\n    using System;\n    \n    \n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    internal class Localization {\n        \n        private static global::System.Resources.ResourceManager resourceMan;\n        \n        private static global::System.Globalization.CultureInfo resourceCulture;\n        \n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal Localization() {\n        }\n        \n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Resources.ResourceManager ResourceManager {\n            get {\n                if (object.ReferenceEquals(resourceMan, null)) {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"NBug.Properties.Localization\", typeof(Localization).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n        \n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Globalization.CultureInfo Culture {\n            get {\n                return resourceCulture;\n            }\n            set {\n                resourceCulture = value;\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unhandled exception occurred. Closing application..\n        /// </summary>\n        internal static string UI_Console_Full_Message {\n            get {\n                return ResourceManager.GetString(\"UI_Console_Full_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unhandled exception occurred. Closing application..\n        /// </summary>\n        internal static string UI_Console_Minimal_Message {\n            get {\n                return ResourceManager.GetString(\"UI_Console_Minimal_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unhandled exception occurred. Closing application..\n        /// </summary>\n        internal static string UI_Console_Normal_Message {\n            get {\n                return ResourceManager.GetString(\"UI_Console_Normal_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exception.\n        /// </summary>\n        internal static string UI_Dialog_Full_Exception_Tab {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Full_Exception_Tab\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to General.\n        /// </summary>\n        internal static string UI_Dialog_Full_General_Tab {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Full_General_Tab\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Please add a brief description of how we can reproduce the error:.\n        /// </summary>\n        internal static string UI_Dialog_Full_How_to_Reproduce_the_Error_Notification {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send..\n        /// </summary>\n        internal static string UI_Dialog_Full_Message {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Full_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to &amp;Quit.\n        /// </summary>\n        internal static string UI_Dialog_Full_Quit_Button {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Full_Quit_Button\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Report Contents.\n        /// </summary>\n        internal static string UI_Dialog_Full_Report_Contents_Tab {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Full_Report_Contents_Tab\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to &amp;Send and Quit.\n        /// </summary>\n        internal static string UI_Dialog_Full_Send_and_Quit_Button {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Full_Send_and_Quit_Button\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Error.\n        /// </summary>\n        internal static string UI_Dialog_Full_Title {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Full_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The application has crashed and it will now be dismissed.\n        ///A bug report has been sent to the developers. We apologize for the inconvenience..\n        /// </summary>\n        internal static string UI_Dialog_Minimal_Message {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Minimal_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Error.\n        /// </summary>\n        internal static string UI_Dialog_Minimal_Title {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Minimal_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to &amp;Continue.\n        /// </summary>\n        internal static string UI_Dialog_Normal_Continue_Button {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Normal_Continue_Button\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unhandled exception has occurred in your application. If you click Continue, the application will ignore this error and attempt to continue. If you click quit, the application will close immediately..\n        /// </summary>\n        internal static string UI_Dialog_Normal_Message {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Normal_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to &amp;Quit.\n        /// </summary>\n        internal static string UI_Dialog_Normal_Quit_Button {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Normal_Quit_Button\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Error.\n        /// </summary>\n        internal static string UI_Dialog_Normal_Title {\n            get {\n                return ResourceManager.GetString(\"UI_Dialog_Normal_Title\", resourceCulture);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>حدث استثناء غير معالج. اغلاق التطبيق.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>حدث استثناء غير معالج. اغلاق التطبيق.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>حدث استثناء غير معالج. اغلاق التطبيق.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>استثناء</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>عام</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>الرجاء اضافه وصف مختصر للطريقة التي يمكننا بها اعاده انتاج الخطا:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>وقد تحطم الطلب سيتم فصله الان. اذا قمت بالنقر فوق انهاء, سيتم اغلاق التطبيق مباشره. اذا قمت بالنقر فوق ارسال وانهاء ، سيتم اغلاق التطبيق وسيتم ارسال تقرير خطا.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;هروب</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>محتويات التقرير</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;ارسال و انهاء</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>خطا</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>تحطم الطلب سيتم فصله الان.\nتم ارسال تقرير خطا الى المطورين. نعتذر عن الازعاج</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>خطا</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;استمر</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>حدث استثناء غير معالج في تطبيقك. اذا قمت بالنقر فوق \"متابعه\" ، سيتجاهل التطبيق هذا الخطا ثم محاولة المتابعة. اذا قمت بالنقر فوق انهاء, سيتم اغلاق التطبيق مباشره.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;هروب</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>خطا</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Výjimka</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Hlavní</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Prosím, přidejte krátký popis, jak můžeme reprodukovat chybu:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>V aplikaci došlo k chybě a bude uzavřena. Pokud kliknete na tlačítko Zavřít, bude aplikace okamžitě uzavřen. Pokud kliknete na tlačítko Uložit a Zavřít, aplikace bude uzavřen a zpráva o chybě bude odeslána.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Ukončit</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Obsah zprávy</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>Odeslat a &amp;Zavřít</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Chyba</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>V aplikaci došlo k chybě a bude uzavřena. Zpráva o chybě  byla zaslána k vývojářům. Omluvám se za nepříjemnost.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Chyba</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Pokračovat</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Došlo k neošetřené výjimce v žádosti. Pokud kliknete na tlačítko pokračovat, bude aplikace ignorovat chybu a pokračovat. Pokud kliknete na tlačítko Zavřít, bude vaše žádost okamžitě ukončena.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Ukončit</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Chyba</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Došlo k neošetřené výjimce. Zavření aplikace.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Došlo k neošetřené výjimce. Zavření aplikace.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Došlo k neošetřené výjimce. Zavření aplikace.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Eine Unbehandelte Ausnahme ist aufgetreten. Die Anwendung wird beendet.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Eine Unbehandelte Ausnahme ist aufgetreten. Die Anwendung wird beendet.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Eine Unbehandelte Ausnahme ist aufgetreten. Die Anwendung wird beendet.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Ausnahme</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Allgemein</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Bitte beschreiben Sie hier, wie der Fehler reproduziert werden kann:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>Die Awendung ist abgestürzt und wird jetzt beendet. Wenn Sie auf \"Beenden\" klicken, wird die Anwendung direkt geschlossen. Wenn Sie auf \"Senden und beenden\" klicken, wird zunächst ein Fehlerbericht and die Entwickler gesendet und die Anwendung anschließend geschlossen.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Beenden</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Fehlerberichtsinhalt</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Senden und beenden</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Fehler</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>In der Anwendung ist eine unbehandelte Ausnahme aufgetreten. Das Programm wird jetzt beendet.\nEs wurden Fehlerdetails an die Entwickler gesendet.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Fehler</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Weiter</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Eine unbehandelte Ausnahme ist aufgetreten. Wenn Sie auf \"Weiter\" klicken, wird Fehler ignoriert und die Anwendung wird versuchen, weiter zu arbeiten. Wenn Sie auf \"Beenden\" klicken, wird die Anwendung sofort geschlossen.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Beenden</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Fehler</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Ha ocurrido un error no controlado. Se cerrará el programa.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Ha ocurrido un error no controlado. Se cerrará el programa.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Ha ocurrido un error no controlado. Se cerrará el programa.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Excepción</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>General</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Añada una breve descripción de como reproducir el error.</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>El programa ha dejado de funcionar. Si presiona 'Salir', el programa se cerrará inmediatamente. Si presiona 'Enviar y Salir', el programa se cerrará y se enviará un informe de error.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Salir</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Contenido del informe</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Enviar y salir</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Error</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>La aplicación ha dejado de funcionar.Se ha enviado un informe de error a los programadores. Pedimos disculpas por los inconvenientes que esto pueda causar.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Error</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Continuar</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Ha ocurrido un error no controlado. Si pulsa continuar, el programa ignorará este error y tratará de continuar. Si pulsa salir, el programa se cerrará inmediatamente,</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Salir</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Error</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.fi-FI.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Tapahtui käsittelemätön poikkeus. Sovellus suljetaan.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Tapahtui käsittelemätön poikkeus. Sovellus suljetaan.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Tapahtui käsittelemätön poikkeus. Sovellus suljetaan.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Poikkeus</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Yleinen</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Ole hyvä ja lisää lyhyt kuvaus siitä, miten voimme toistaa virheen:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>Sovellus on kaatunut ja se on nyt suljettava. Jos valitset Sulje, sovellus sulkeutuu heti. Jos napsautat Lähetä ja sulje, sovellus sulkeutuu ja vikailmoitus lähetetään.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Sulje</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Raportin sisältö</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Lähetä ja sulje</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Virhe</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>Sovellus on kaatunut ja se on nyt suljettava.\nVikailmoitus on lähetetty kehittäjille. Pahoittelemme häiriötä.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Virhe</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Jatka</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Ilmeni käsittelemätön poikkeus sovelluksessa. Jos valitset Jatka, sovellus ohittaa tämän virheen ja yrittää jatkaa. Jos klikkaat lopeta, sovellus sulkeutuu heti.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Sulje</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Virhe</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Exception non gérée survenue. Fermeture de l'application.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Exception non gérée survenue. Fermeture de l'application.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Exception non gérée survenue. Fermeture de l'application.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Exception</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Général</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Merci d'ajouter une brève description sur la façon de reproduire l'erreur :</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>L'application a planté et va être maintenant arrêtée. Si vous cliquez Quitter, l'application fermera immédiatement. Si vous cliquez Envoyer et Quitter, l'application fermera et un rapport d'erreur sera envoyé.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Quitter</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Contenu du rapport</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Envoyer et Quitter</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Erreur</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>L'application a planté et va être maintenant arrêtée. Un rapport d'erreur a été envoyé aux développeurs. Veuillez nous excuser pour le désagrément.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Erreur</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Continuer</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Exception non gérée survenue dans votre application. Si vous cliquez Continuer, l'application ignorera cette erreur et tentera de continuer. Si vous cliquez Quitter, l'application fermera immédiatement.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Quitter</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Erreur</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.hr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Došlo je do greške. Zatvaram aplikaciju.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Došlo je do greške. Zatvaram aplikaciju.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Došlo je do greške. Zatvaram aplikaciju.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Greška</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Opće</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Molimo dodajte kratak opis kako bi nam pomogli reproducirati grešku:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>Aplikacija je proizvela grešku i biti će zatvorena. Ako kliknete Izlaz, aplikacija će se odmah zatvoriti. Ako kliknete Pošalji i izađi, aplikacija će se zatvoriti i poslati izvještaj razvojnom timu.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Izlaz</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Sadržaj izvještaja</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Pošalji i izađi</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Greška</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>Aplikacija je proizvela grešku i biti će zatvorena. Izvještaj o grešci poslan je razvojnom timu. Ispričavamo se na neugodnosti.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Greška</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Nastavi</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Došlo je do greške u aplikaciji. Ako kliknete na Nastavi, aplikacija će ignorirati ovu grešku i pokušati nastaviti sa radom. Ako kliknete Odustani aplikacija će se odmah zatvoriti.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Odustani</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Greška</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Nem kezelt kivétel történt. Az alkalmazás bezárása.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Nem kezelt kivétel történt. Az alkalmazás bezárása.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Nem kezelt kivétel történt. Az alkalmazás bezárása.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Kivétel</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Általános</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Kérjük adjon meg egy rövid leírást, hogy reprodukálhassuk a hibát:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>Az alkalmazás összeomlott és elvetésre került. Ha a Kilépésre kattint a program azonnal bezáródik. Ha a Küldés és kilépés lehetőséget választja, a program bezárul és hibajelentést fog küldeni.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>K&amp;ilépés</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Jelentés tartalma</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>Kül&amp;dés és kilépés</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Hiba</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>Az alkalmazás összeomlott és elvetésre került.\nA hibajelentés a fejlesztőknek elküldve. Elnézést kérünk a kellemetlenségért.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Hiba</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Tovább</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Nem kezelt kivétel történt az alkalmazásban. Ha a Tovább gombra kattint, az alkalmazás kihagyja ezt a hibát, és megpróbálja folytatni. Ha a Kilépés-re kattint, az alkalmazás azonnal bezárásra kerül.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>K&amp;ilépés</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Hiba</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Eccezione non gestita. Chiusura dell'applicazione.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Eccezione non gestita. Chiusura dell'applicazione.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Eccezione non gestita. Chiusura dell'applicazione.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Eccezione</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Generale</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Ti invitiamo a scrivere una breve descrizione su come riprodurre l'errore:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>L'applicazione si è bloccata e sarà chiusa. Selezionando \"Uscita\" l'applicazione sarà chiusa immediatamente. Se premi \"Invia ed esci\" l'applicazione sarà chiusa e sarà inviato un report dell'errore avvenuto.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Uscita</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Contenuti del report</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Invia ed esci</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Errore</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>L'applicazione si è bloccata e sarà chiusa. Un report dell'errore è stato inviato allo sviluppatore. Ci scusiamo per l'inconveniente.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Errore</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Continua</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Errore non gestito del tuo programma. Cliccando su \"Continua\" l'aplicazione ignorerà questo errore e proverà a continuare. Cliccato su \"Uscita\" l'applicazione sarà chiusa immediatamente.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Uscita</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Errore</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;終了</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;送信して終了</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;終了</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>未処理の例外が発生しました。アプリケーションを閉じます。</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>未処理の例外が発生しました。アプリケーションを閉じます。</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>未処理の例外が発生しました。アプリケーションを閉じます。</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>例外</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>一般</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>エラーを再現する方法についての簡単な説明を追加してください：</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>アプリケーションがクラッシュし、これから終了します。\n\n「終了」をクリックすると、アプリケーションは即座に閉じます。\n\n「送信して終了」をクリックすると、アプリケーションは閉じ、バグレポートが送信されます。\n</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>レポート内容</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>エラー</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>アプリケーションがクラッシュし、これから終了します。\n\nバグレポートが開発者に送信されました。ご不便をおかけして申し訳ありません。\n</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>エラー</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;続行</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>アプリケーションで未処理の例外が発生しました。\n\n「続行」をクリックすると、アプリケーションはこのエラーを無視して続行しようとします。\n\n「終了」をクリックすると、アプリケーションは即座に閉じます。\n</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>エラー</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.ko-KR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>처리되지 않은 예외가 발생했습니다. 프로그램을 종료합니다.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>처리되지 않은 예외가 발생했습니다. 프로그램을 종료합니다.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>처리되지 않은 예외가 발생했습니다. 프로그램을 종료합니다.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>예외</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>일반</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>오류를 재현할 수 있도록 간단한 설명을 적어주십시오:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>이 프로그램은 충돌이 발생하였으며 종료됩니다. '종료'를 선택하시면 프로그램이 바로 종료됩니다. '보내고 종료'를 선택하시면 프로그램이 닫히고 버그 레포트가 전송됩니다.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>종료(&amp;Q)</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>레포트 내용</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>보내고 종료(&amp;S)</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>오류</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>이 프로그램은 충돌이 발생하였으며 종료됩니다. 버그 레포트가 개발자에게 보내졌습니다. 불편을 끼쳐드려 죄송합니다.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>오류</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>계속(&amp;C)</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>이 프로그램에서 처리되지 않은 예외가 발생했습니다. '계속'을 선택하시면 이 오류를 무시하고 계속 실행하도록 시도합니다. '종료'를 선택하시면 프로그램이 바로 닫힙니다.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>종료(&amp;Q)</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>오류</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Er trad een onbehandelde uitzondering op. Het programma wordt beëindigd.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Er trad een onbehandelde uitzondering op. Het programma wordt beëindigd.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Er trad een onbehandelde uitzondering op. Het programma wordt beëindigd.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Uitzondering</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Algemeen</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Gelieve hier de fout te beschrijven en hoe de fout gereproduceerd kan worden:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>Het programma is gecrashed en wordt nu beëindigd. Als u op \"Afsluiten\" klikt, wordt het programma meteen gesloten. Indien u op \"Versturen en afsluiten\" klikt, wordt vervolgens een foutenbericht naar de ontwikkelaar gestuurd en wordt het programma daarna afgesloten. </value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Afsluiten</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Inhoud foutenbericht</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Verzenden en afsluiten</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Fout</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>In het programma trad een onbehandelde uitzondering op. Het programma wordt nu beëindigd. Een foutenrapport werd naar de ontwikkelaar gestuurd. Excuses voor het ongemak.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Fout</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Doorgaan</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Er trad een onbehandelde uitzondering op. Als u op \"Doorgaan\" klikt wordt de fout genegeerd en probeert het programma te vervolgen. Als u op \"Afsluiten\" klikt, wordt het programma onmiddellijk gesloten. </value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Afsluiten</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Fout</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Wystąpił nieobsługiwany wyjątek. Zamykanie aplikacji.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Wystąpił nieobsługiwany wyjątek. Zamykanie aplikacji.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Wystąpił nieobsługiwany wyjątek. Zamykanie aplikacji.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Wyjątek</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Ogólne</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Proszę dodać krótki opis w jaki sposób możemy odtworzyć błąd:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>Aplikacja uległa awarii i zostanie zamknięta. Jeśli klikniesz przycisk Zamknij, aplikacja zostanie natychmiast zamknięta. Jeśli klikniesz przycisk Wyślij i Zamknij, aplikacja zostanie zamknięta i raport o błędzie zostanie wysłany.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Wyjdź</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Treść raportu</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>Wyślij i &amp;Zamknij</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Błąd</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>Aplikacja uległa awarii i zostanie zamknięta.\nRaport błędów został wysłany do programistów. Przepraszamy za niedogodności.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Błąd</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Kontynuuj</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Wystąpił nieobsługiwany wyjątek w aplikacji. Jeśli klikniesz przycisk Kontynuuj, aplikacja zignoruje błąd i spróbuje kontynuować. Jeśli klikniesz zamknij, aplikacja zostanie natychmiast zamknięta.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Wyjdź</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Błąd</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Uma exceção não tratada ocorreu. Encerrando a aplicação.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Uma exceção não tratada ocorreu. Encerrando a aplicação.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Uma exceção não tratada ocorreu. Encerrando a aplicação.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Exceção </value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Geral</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Por favor adicione uma breve descrição de como reproduzir o erro:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>A aplicação encontrou um erro e será encerrada agora. Se você clicar em \"Sair\", o aplicativo será fechado imediatamente. Se você clicar em \"Enviar e Sair\", o aplicativo será fechado e um relatório de erro será enviado.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Sair</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Conteudo do Relatório</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Enviar e Sair</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Erro</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>A aplicação deixou de funcionar e agora vai ser encerrada. Um relatorio de erro sera enviado. Desculpe qualquer inconveniente.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Erro</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Continuar</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Uma exceção não tratada ocorreu na sua aplicação. Se você clicar em continuar, o aplicativo ignorará esse erro e tentará continuar. Se você clicar em sair, o aplicativo será fechado imediatamente.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Sair</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Erro</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Ocorreu uma excepção não processada. O aplicativo vai ser encerrado.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Ocorreu uma excepção não processada. O aplicativo vai ser encerrado.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Ocorreu uma excepção não processada. O aplicativo vai ser encerrado.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Excepção </value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Geral</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Por favor adicione uma descrição breve de como popderemos reproduzir o erro:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>A aplicação deixou de funcionar e vai ser agora encerrada. Se clicar em sair, o aplicativo será fechado de imediato. Se clicar em Enviar e Sair, o aplicativo será fechado e será enviado um relatório de erro.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Sair</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Conteudo do relatorio</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Enviar e Sair</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Erro</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>A aplicação deixou de funcionar e vai ser agora encerrada. Vai ser enviado um relatório de erro. Pedimos desculpa pelo inconveniente.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Erro</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Continuar</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Ocorreu uma excepção não processada. Se clicar em Continuar, o aplicativo ignorará esse erro e tentará continuar o processo. Se clicar em Sair, o aplicativo será fechado de imediato.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Sair</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Erro</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Unhandled exception occurred. Closing application.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Unhandled exception occurred. Closing application.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Unhandled exception occurred. Closing application.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Exception</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>General</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Please add a brief description of how we can reproduce the error:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Quit</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Report Contents</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Send and Quit</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Error</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Error</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Continue</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Unhandled exception has occurred in your application. If you click Continue, the application will ignore this error and attempt to continue. If you click quit, the application will close immediately.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Quit</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Error</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Произошла ошибка. Приложение будет закрыто.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Произошла ошибка. Приложение будет закрыто.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Произошла ошибка. Приложение будет закрыто.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Исключение</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Общее</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Пожалуйста, кратко опишите, как нам исправить ошибку:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>Произошла ошибка и приложение будет закрыто. Если Вы нажмете \"Закрыть\" приложение закроется. Если Вы нажмёте \"Отправить\", будет отправлен отчёт об ошибке и приложение будет закрыто.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Закрыть</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Содержимое отчёта</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Отправить</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Ошибка</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>Произошла ошибка и приложение будет закрыто. Отчёт об ошибке будет отправлен разработчикам. Извиняемся за доставленные неудобства.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Ошибка</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Продолжить</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Произошла ошибка. Если Вы нажмёте \"Продолжить\", приложение проигнорирует ошибку и попытается продолжить. Если нажмёте \"Закрыть\", приложение будет закрыто.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>Выход</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Ошибка</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Prišlo je do nepričakovane, neobravnavane napake. Zapiram aplikacijo</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Prišlo je do nepričakovane, neobravnavane napake. Zapiram aplikacijo</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Prišlo je do neobravnavane izjeme. Zapiram aplikacijo.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Izjema</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Splošno</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Prosimo, dodajte kratek opis, da vemo kako naj znova ponovimo napako:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>Aplikacija se je sesula in bo zdaj zavrnjena. Če kliknete na 'Končaj', se bo aplikacija takoj zaprla. Če kliknete na 'Pošlji in končaj', se bo aplikacija zaprla in bo poslano poročilo o hrošču.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Končaj</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Vsebina poročila</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Pošlji in končaj</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Napaka</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>Aplikacija se je sesula in bo zdaj zavrnjena.  Poročilo o hrošču je bilo poslano razvijalcem. Opravičujemo se za nevšečnosti.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Napaka</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Nadaljuj</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>V vaši aplikaciji je prišlo do neobravnavane izjeme. Če kliknete na 'Naprej', bo aplikacija prezrla to napako in poskusila z nadaljevanjem. Če kliknete na 'Končaj', se bo aplikacija takoj zaprla.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Končaj</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Napaka</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Avsluta</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Fel</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Ett ohanterat undantag inträffade. Stänger programmet.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Ett ohanterat undantag inträffade. Stänger programmet.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Ett ohanterat undantag inträffade. Stänger programmet.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Undantag</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Allmänt</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Vänligen lägg till en kort beskrivning av hur vi kan återskapa felet:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>Programmet har kraschat och kommer nu att avslutas. Om du klickar på Avsluta stängs programmet omedelbart. Om du klickar på Skicka och Avsluta kommer programmet att stängas och en felrapport kommer att skickas.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Avsluta</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Rapportera Innehåll</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Skicka och Avsluta</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Fel</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>Programmet har kraschat och kommer nu att avslutas. En felrapport har skickats till utvecklarna. Vi ber om ursäkt för olägenheten.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Fel</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Fortsätt</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Ett ohanterat undantag har inträffat i ditt program. Om du klickar på Fortsätt kommer programmet att ignorera detta fel och försöka fortsätta. Om du klickar på avsluta stängs programmet omedelbart.</value>\n    <comment>.</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>İşlenmeyen özel durum oluştu. Uygulama kapatılıyor.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>İşlenmeyen özel durum oluştu. Uygulama kapatılıyor.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>İşlenmeyen özel durum oluştu. Uygulama kapatılıyor.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>İstisna</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Genel</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Lütfen hatayı nasıl yeniden oluşturabileceğimize dair kısa bir açıklama ekleyin:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>Uygulama çöktü ve şimdi görevden alınacak. Çık'ı tıklatırsanız, uygulama hemen kapanır. Gönder ve Çık'ı tıklatırsanız, uygulama kapanacak ve bir hata raporu gönderilecektir.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Çık</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Rapor İçeriği</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Gönder ve Çık</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Hata</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>Uygulama çöktü ve şimdi görevden alınacak. Geliştiricilere bir hata raporu gönderildi. Verdiğimiz rahatsızlık için özür dileriz.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Hata</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>&amp;Devam</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Uygulamanızda işlenmeyen özel durum oluştu. Devam'ı tıklarsanız, uygulama bu hatayı yok sayar ve devam etmeye çalışır. Çık'ı tıklarsanız, uygulama hemen kapanır.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Çık</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Hata</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>Lỗi ngoại lệ chưa được xử lý. Đang đóng ứng dụng.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>Lỗi ngoại lệ chưa được xử lý. Đang đóng ứng dụng.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>Lỗi ngoại lệ chưa được xử lý. Đang đóng ứng dụng.</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>Ngoại lệ</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>Chung</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>Vui lòng cung cấp một mô tả ngắn gọn đề tái hiện lỗi: </value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>Ứng dụng đã gặp sự cố và sẽ tự động đóng. Nếu bạn nhấp chuột vào nút \"Thoát\", ứng dụng sẽ đóng ngay lập tức. Nếu bạn nhấp chuột vào nút \"Gửi và Thoát\", ứng dụng sẽ đóng và đồng thời gửi một báo cáo lỗi về sự cố này.</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Thoát</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>Nội dung báo cáo</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Gửi và thoát</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>Lỗi</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>Ứng dụng đã gặp sự cố và sẽ bị đóng lại.\nMột báo cáo lỗi đã được gửi đến nhà phát triển. Chúng tôi chân thành xin lỗi vì sự bất tiện này.</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>Lỗi</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>Tiế&amp;p tục</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>Đã xảy ra một lỗi ngoại lệ chưa được xử lý trong ứng dụng. Nếu bạn chọn \"Tiếp tục\", ứng dụng sẽ bỏ qua lỗi này và cố gắng tiếp tục chạy. Nếu bạn chọn \"Thoát\", ứng dụng sẽ đóng ngay lập tức.</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>&amp;Thoát</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>Lỗi</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>发生未处理的异常。正在关闭应用程序。</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>发生未处理的异常。正在关闭应用程序。</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>发生未处理的异常。正在关闭应用程序。</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>异常</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>常规</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>请添加如何再现错误的简要说明:</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>应用程序已崩溃，现在将被关闭。如果单击“Quit”，应用程序将立即关闭。如果单击Send and Quit，应用程序将关闭并发送错误报告。</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>退出</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>报告内容</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>发送并退出</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>错误</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>应用程序已崩溃，现在将被关闭。\n错误报告已被发送给开发者。造成不便非常抱歉。</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>错误</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>继续</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>你的应用程序中发生未处理的一场。如果你点击继续，应用程序会无视此错误并试图继续。如果你点击退出，应用程序会立即关闭。</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>退出</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>错误</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Localization.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"UI_Console_Full_Message\" xml:space=\"preserve\">\n    <value>發生未處理的例外。正在關閉應用程式。</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Minimal_Message\" xml:space=\"preserve\">\n    <value>發生未處理的例外。正在關閉應用程式。</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Console_Normal_Message\" xml:space=\"preserve\">\n    <value>發生未處理的例外。正在關閉應用程式。</value>\n    <comment>Unhandled exception occurred. Closing application.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Exception_Tab\" xml:space=\"preserve\">\n    <value>例外</value>\n    <comment>Exception</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_General_Tab\" xml:space=\"preserve\">\n    <value>一般</value>\n    <comment>General</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_How_to_Reproduce_the_Error_Notification\" xml:space=\"preserve\">\n    <value>請添加如何再現錯誤的簡要說明:\n</value>\n    <comment>Please add a brief description of how we can reproduce the error:</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Message\" xml:space=\"preserve\">\n    <value>應用程式已當機，現在將被關閉。如果點擊\"Quit\"，應用程式將立即關閉，如果點擊Send and Quit，應用程式將關閉並傳送錯誤報告。</value>\n    <comment>The application has crashed and it will now be dismissed. If you click Quit, the application will close immediately. If you click Send and Quit, the application will close and a bug report will be send.</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Quit_Button\" xml:space=\"preserve\">\n    <value>退出</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Report_Contents_Tab\" xml:space=\"preserve\">\n    <value>報告內容</value>\n    <comment>Report Contents</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Send_and_Quit_Button\" xml:space=\"preserve\">\n    <value>傳送並退出</value>\n    <comment>&amp;Send and Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Full_Title\" xml:space=\"preserve\">\n    <value>錯</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Message\" xml:space=\"preserve\">\n    <value>應用程式已當機，現在將被關閉。\n錯誤報告已被傳送給開發者，造成不便非常抱歉</value>\n    <comment>The application has crashed and it will now be dismissed.\nA bug report has been sent to the developers. We apologize for the inconvenience.</comment>\n  </data>\n  <data name=\"UI_Dialog_Minimal_Title\" xml:space=\"preserve\">\n    <value>錯誤</value>\n    <comment>Error</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Continue_Button\" xml:space=\"preserve\">\n    <value>繼續</value>\n    <comment>&amp;Continue</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Message\" xml:space=\"preserve\">\n    <value>你的應用程式中發生未處理例外。如果你點擊繼續，應用程式會忽略此錯誤並嘗試繼續。如果你點擊退出，應用程式會立即關閉。</value>\n    <comment>.</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Quit_Button\" xml:space=\"preserve\">\n    <value>退出</value>\n    <comment>&amp;Quit</comment>\n  </data>\n  <data name=\"UI_Dialog_Normal_Title\" xml:space=\"preserve\">\n    <value>錯誤</value>\n    <comment>Error</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace NBug.Properties {\n    using System;\n    \n    \n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    internal class Resources {\n        \n        private static global::System.Resources.ResourceManager resourceMan;\n        \n        private static global::System.Globalization.CultureInfo resourceCulture;\n        \n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal Resources() {\n        }\n        \n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Resources.ResourceManager ResourceManager {\n            get {\n                if (object.ReferenceEquals(resourceMan, null)) {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"NBug.Properties.Resources\", typeof(Resources).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n        \n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Globalization.CultureInfo Culture {\n            get {\n                return resourceCulture;\n            }\n            set {\n                resourceCulture = value;\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\n        /// </summary>\n        internal static System.Drawing.Bitmap Error_16 {\n            get {\n                object obj = ResourceManager.GetObject(\"Error_16\", resourceCulture);\n                return ((System.Drawing.Bitmap)(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\n        /// </summary>\n        internal static System.Drawing.Bitmap Feedback {\n            get {\n                object obj = ResourceManager.GetObject(\"Feedback\", resourceCulture);\n                return ((System.Drawing.Bitmap)(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\n        /// </summary>\n        internal static System.Drawing.Bitmap Forum_16 {\n            get {\n                object obj = ResourceManager.GetObject(\"Forum_16\", resourceCulture);\n                return ((System.Drawing.Bitmap)(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\n        /// </summary>\n        internal static System.Drawing.Bitmap Help_16 {\n            get {\n                object obj = ResourceManager.GetObject(\"Help_16\", resourceCulture);\n                return ((System.Drawing.Bitmap)(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Icon similar to (Icon).\n        /// </summary>\n        internal static System.Drawing.Icon NBug_icon_16 {\n            get {\n                object obj = ResourceManager.GetObject(\"NBug_icon_16\", resourceCulture);\n                return ((System.Drawing.Icon)(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Icon similar to (Icon).\n        /// </summary>\n        internal static System.Drawing.Icon NBug_icon_16_borders {\n            get {\n                object obj = ResourceManager.GetObject(\"NBug_icon_16_borders\", resourceCulture);\n                return ((System.Drawing.Icon)(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\n        /// </summary>\n        internal static System.Drawing.Bitmap NBug_Icon_PNG_16 {\n            get {\n                object obj = ResourceManager.GetObject(\"NBug_Icon_PNG_16\", resourceCulture);\n                return ((System.Drawing.Bitmap)(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\n        /// </summary>\n        internal static System.Drawing.Bitmap Send {\n            get {\n                object obj = ResourceManager.GetObject(\"Send\", resourceCulture);\n                return ((System.Drawing.Bitmap)(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\n        /// </summary>\n        internal static System.Drawing.Bitmap VS2010_16 {\n            get {\n                object obj = ResourceManager.GetObject(\"VS2010_16\", resourceCulture);\n                return ((System.Drawing.Bitmap)(obj));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/NBug_custom/Properties/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\n  <data name=\"Send\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n    <value>\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\n        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAiBJREFUOE+lj19I\n        01EUx28EvllCBfZU+NRLJiVELxEWFA2N1qJmfwxsq9afFSrsQZr01ENIQT0sGjFqSD1s9EOXYNSEVqzm\n        YqOGbm75Y21z7R8qOt2Ub+f8QBgRw+rCh3PvOedz7r3rAIj/WifN5lbi0j/SKtS9vZeHvV7kZmboMWtb\n        3MsOu+KYyXQlQ4lBjwfpQgHllZWqcA/3ssOuUHV3Xy2RlMhm4XS7lVgsl/9IZQ877IrDRuP14vIy5hYX\n        IafTeDkyokQ+V/J7jR12xUGDwThXKiE/P68wmUjA7nIpsVqOHXbFfp3uVmFpCdP0J0amL4wGg7BJEkKy\n        rMB7znFttY8ddsW+jo6ubLGIeD6PKD3dGw4rMRiLwepwKPC+ssa97LArmtvbe6YXFjCeTMITCikxlsko\n        jEUiCqtnrvUMyrB+ToMddsUujcb0nSa6AwF8jccRpturcer5FE7YorB9yYFdsa2l5fYbvx/BVBa+ZAHv\n        ojk4v/3E008p9I/+gHlYxk1nDJ0Dk9DawlBbJ2BJAKpHAezQ35PExqami3W799ytP6S636DVWXbe6LPv\n        vfNYOvBQch+xfxhrk8Yjmrep1OmPs7Nn/OXSuQDA9EWBhi7XlKhtbBSbtQ/W1xuG6ojtRDNxlLhAmIh+\n        4hkxRLwnfG0+gOPWa6/1yoAt+ldrYlOnQ9SeHfAxG86/0NMQ8VcDatRWUXP8iYXQ0xDBA34BNLyduyxX\n        OKAAAAAASUVORK5CYII=\n</value>\n  </data>\n  <data name=\"NBug_icon_16_borders\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n    <value>\n        AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAA\n        AADMzMz/zMzM/8zMzP/MzMz/zs3N/7Bvdf9+Fh3/gRkj/4EZI/9+Fh7/qWFp/87Mzf/MzMz/zMzM/8zM\n        zP/MzMz/zMzM/////////////////+XQ0/9yAAr/dQMO/3UDDv91Aw7/dQMO/3IACv/fxsj/////////\n        ////////zMzM/8zMzP/////////////////hycv/dQQP/3UED/91BA//dQQP/3UED/91BA//2r2/////\n        /////////////8zMzP/MzMz/////////////////59PV/3UED/91BA//dQQP/3UED/91BA//dQQP/9u+\n        wf/////////////////MzMz/zcvL/+DGyP/bvcD/277B/8aXm/91BA//dQQP/3UED/91BRD/cgAK/3IA\n        Cf/dwMP/7d/h//Hm5//v4uP/zMzM/7Fxd/9xAQj/dQQP/3UED/91BA//dQQP/3UED/9zAQv/nExU/8ic\n        oP99FRz/1LC0/7qBh//JnKH/xZWa/9y/wv97Dxn/dQMO/3UED/91BA//dQQP/3UED/91BA//cwEM/6JX\n        Xv//////9Orr//Dl5v+9hov/yJqf/8qfo/+9hov/gRkk/3UDDv91BA//dQQP/3UED/91BA//dQQP/3MB\n        DP+hU1r/////////////////+/f4/9q8v//Npan/wIuR/4EZJP91Aw7/dQQP/3UED/91BA//dQQP/3UE\n        D/9zAQz/oFNa//////////////////nz9P/Zur3/zaWp/7+LkP96Dhj/dQIO/3UED/91BA//dQQP/3UE\n        D/91BA//cwEM/6JVXf//////8OPl/+vb3P+6gof/yJug/8qeov+9hov/uYCG/3ECCf91BA//dQQP/3UE\n        D/91BA//dQQP/3QBDf+XQkv/vIeM/3kMFf/VsrX/uoGG/8iboP/ElJn/4MjK/8zLzP/n1NX/4cnL/+LK\n        zP/LoKT/dQQP/3UED/91BA//dQQP/3IACf9wAAb/38XH//jz8//59fb/+PLz/8zMzP/MzMz/////////\n        ////////5tLU/3UED/91BA//dQQP/3UED/91BA//dQMO/9u/wf/////////////////MzMz/zMzM////\n        /////////////+DIyv91BA//dQQP/3UED/91BA//dQQP/3UED//avL7/////////////////zMzM/8zM\n        zP/////////////////m0tT/cwAL/3QDDv91Aw7/dQMO/3UDDv9yAAr/4MbJ/////////////////8zM\n        zP/MzMz/zMzM/8zMzP/MzMz/zs3N/7d9gv9+GSD/gRkk/4EZJP9+GB//r291/87Nzf/MzMz/zMzM/8zM\n        zP/MzMz/8A8AAPAPAADwDwAA8A8AAAAAAAAAAAAAAEAAAABwAAAAcAAAAEAAAAAAAAAAAQAA8A8AAPAP\n        AADwDwAA8A8AAA==\n</value>\n  </data>\n  <data name=\"NBug_icon_16\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n    <value>\n        AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAA5tXXEJM6Q7t0BAztdwcS7XcHEu10BA3tjjE7w+PQ0hYAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIcnMTdyAAr/dQMO/3UDDv91Aw7/dQMO/3IACv+GJS5DAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAg2dQQP/3UED/91BA//dQQP/3UED/91BA//cQAIQgAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdQQPLXUED/91BA//dQQP/3UED/91BA//dQQP/3IA\n        C0EAAAAAAAAAAAAAAAAAAAAA2ry/DoIcJUByAQpCdQQPQnUED2p1BA//dQQP/3UED/91BRD/cgAK/3IA\n        Cf+CGiRGkjlCKYQeKBx/FiAg3MHDA5U+R7xxAQj/dQQP/3UED/91BA//dQQP/3UED/9zAQv/gx4oy5hG\n        Tol2CBDyiScxXZQ8RaWBGiVuiCcxfbFxd3N0Aw7zdQMO/3UED/91BA//dQQP/3UED/91BA//cwEM/38X\n        IbkAAAAAt3yCKK5tdC6WQEihfxYhbostNnWWQEihdwgT7XUDDv91BA//dQQP/3UED/91BA//dQQP/3MB\n        DP+AFyG9AAAAAAAAAAAAAAAAyJugFJE3QFaOMjtwmENMnXcIE+11Aw7/dQQP/3UED/91BA//dQQP/3UE\n        D/9zAQz/fxchvQAAAAAAAAAAAAAAAMeZnh2PND1XjjI7cJdDS510Aw70dQIO/3UED/91BA//dQQP/3UE\n        D/91BA//cwEM/34UHrgAAAAAtn2DNpxKUjOVPkalfhUgbYssNXWWQEihmkhQsXECCf91BA//dQQP/3UE\n        D/91BA//dQQP/3QBDf9/FiHPkTpCm3cJEvyKKTNclDxEpYAYI26HJS59tnuBa9i5vQiHJi8zcQAKNnUE\n        DzZ1BA9hdQQP/3UED/91BA//dQQP/3IACf9wAAb/jC03R9WztinMpakcx5ugIAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAdQQPLnUED/91BA//dQQP/3UED/91BA//dQMO/3ICCkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAHEACTd1BA//dQQP/3UED/91BA//dQQP/3UED/9xAAhDAAAAAAAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAACHJi81cwAL/3QDDv91Aw7/dQMO/3UDDv9yAAr/hiQtQgAAAAAAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAA7d7gDJdDS7F0Bg7sdwgT7XcIE+10BQ3skjpCuurZ2xEAAAAAAAAAAAAA\n        AAAAAAAA8A8AAPAPAADwDwAA8A8AAAAAAAAAAAAAAEAAAABwAAAAcAAAAEAAAAAAAAAAAQAA8A8AAPAP\n        AADwDwAA8A8AAA==\n</value>\n  </data>\n  <data name=\"Feedback\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n    <value>\n        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\n        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAABYdJREFUWEftl3tM\n        U3cUx9U5p3Mbzi3bFJXugRANbItsiYnZVHAoCZtuwnhMFKF00VjaUiuvgVUhQikFystXGSCwxbGHIwjo\n        lMcyKS3lqVNcQBTBwcYUxZgsy9k5t/fKrbS0S2ayP/ZLPrn3/n7n8T3n97v0Mm3a/+M/1oEZ4eHhvtHR\n        0R0SiQQeBXK5/DLlwLpnWKt9rlgsHtHr9TB+7x6Mj4//u2BMik05MPlcawIWUNW3bt+GP27deiRQbMqB\n        yRdYE+BCi7+Pjj5SWAEu1gQIaHFk5DeHMBiMoFDsAZFIBAUFBTAwcMMhP1aAwKaAm78Ogz0GbgxC+PYI\n        CAj8GIKCQ2Djpg/h0OEjdv0orl0BNwaHwB59V/uZyiMiIkEojIKtW7eBUrnPrh/FnVKAVCqFa9cH7HK1\n        /xpIZXLYsXMX7BJLQPTpDlBlZNr1o9iUA9tvfQtosa+v3y69vX0QF5cAcrmCuUokMtBqc+36UWy7Aq78\n        0guOUFNTB7GxibBvXyqK+Aw6u7od8rMr4NLlK+AIer0BUlIPYus1kK7KRJ8eh/ymFCCTyaD7wqUpadYb\n        4avK7yBDnQNZWXmQl38E1JlayMrOg5PfV0OrqWNKf8ph8wzExMRAR9dFqzT+eB4KDh3FirMxWQG+dp/D\n        Md1x0BWVwVG85hfqIFOTByoUdkxXgjEusFjGoxw2BSgUCmhr74Z2Ph34jGg0WnzVUiEDBWRqci1QZ+Zi\n        F3KxK1o4mKbBP1AJGKeLifUwlMOmgLi4OGht60A6GUxEu5nBoZtw585dGHvAHbznMYb3HDhvxK0gJuLh\n        PT5TDpsCxHtEsD9/N0gOfgLStC2QUqiAE1UV6IiCGMxBjK1EOxiMRBu0GAgTi/mZ5mmd7BgY23ZISEiY\n        LMBb6L70nWDXAymHhdDQpYWfh0rg4mAx1HfmQHa5DHJLVXCuqZ5JbKDESAsm0GMiPSZubiFaWUygx2ea\n        Jxs+NJeUlDRZgI/QXV56OmbQdD0frHG8LhG0JWnmqpnKzVWak2NifSucZ6F7miMR5s5M2FZVnYL4+PhR\n        3IKJX0NM/pGyKLC9qTcNOIAd/Ln4nFBISlXgq5eFB1IDarUaVCoVpKenQ0lpmYWAs/VNcLysAg9sBmNH\n        V7JTKpVjvr6+SovvgXWiZbrKtpi7tT2JwMEJ4M8V1++8+7a/oBadtz1EFLZ16MzZBvip2Qg/nG2EsvIv\n        IDQ09Gu0i+DZhuH9JsQTeYr5OV4ZsGjOB9LXT31zQQKErUFrJzrFf/lEutewJ5h+TDi89u7de/30mXqo\n        Q6jykJCQClxfg7jx7Kjt9CVEyR9jBAhWC2b7R3tUV3REAmFr0Fqpcfuf60XLTjCOlsMZBfTXnT7HbEVw\n        cHA5Lq9CXkBmWrG3mJrhs91Nl9uweazIFAoF1e8zcIN7pjV17abhNWFLc6wJSE5O7i8uLoWgoKB/lJxi\n        TffyWyIS561qO2zYDBycAP5clHpli6f3wiC2fVQZhwu+21cDAgJKcO5dts1PsHbUaoI+w4npLBZ1LFjh\n        tzgv8ct1vVxCrnLueXfR2p43/RYXotcriBMyj4erj49PLD57I68h85FnkKcR2m/6BH8SIVEkmhPyQMQs\n        5+VOa99Y56wTqlfqU6s2DGubNt7Padx4P+XkhuGw/W8ZPNcuLJs7f+Z69HgZWYLQgRIgrgj9oxGMBCLv\n        ISuQRYgzQofuReR5VtQcVgR1wmLQgofL8nmJXv4ulau3uNasDnWtwc586+zmdADXqLWUjEtMQqgbBFW9\n        FHmVFUUCF/NEvMQKmIdX6gTXhYc1TJvFqvXAK51iSkrVCJDnEArwLAu1meb40Bytkx1BW8VtBSWejTyO\n        TNoCvhLukJARd4D4B44COALfh38QLQ7h39hIgV/VGU6+AAAAAElFTkSuQmCC\n</value>\n  </data>\n  <data name=\"NBug_Icon_PNG_16\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n    <value>\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\n        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAddJREFUOE9jZEAD\n        z599FIgLX7zixIkHJmzMzIwg6V9///63sFA4s2hlbISkFP8HdD0ofDOdblsuhqL/fMwlQFwKxSX/QWIg\n        ObyaQZIcDIV2/Cyl/7FhNoYCO4IGADWaYNMMchEPa7ENhgGHD9zh0Vdvt+ZkKALZbAvEOegGAOX+szDk\n        /3cwn+gCVK+3af0lxZVLziqBDfN2nr6Dg7EQq5N5GEv+K0k0nPF0nDpJhKfim5FmZ6yr7ZSlypKNRTpK\n        rZX1lVtLGIBO+8zHhN3PPIzF/+VF6naALOpo2qkT7j/PyNd1xgIVqcYic93uQkeLSesYhDnK34JCG5u/\n        QQYAXbAH2d/LFp4WdbaeFGNl2JvtYjNlJUEDlCUaUQxYPO+kqLMVxACgd1Yy8DEBvYDHBcoSDWAvtNbv\n        0C7KXmcEDLMFqtJAL+j1gLywlsHLafpOXIHIDfSCpkLLGT+3Gf287CVfjDQ6Yz0dpy3SlG8pNFTvqKgp\n        21zCcPL4fR41uWYbYEoDRSHOaARFpZpsk5Ob3VQ1YAxIA9kyWBMVroQECmSgJZgJCd0UdoZCkCuwxgpI\n        jmBStjbqwZmZQHIEDXj6+K2gi/WUXbwsJW9BaQSEQWxgnO8CyaEbAACgvRN7rTnSwwAAAABJRU5ErkJg\n        gg==\n</value>\n  </data>\n  <data name=\"VS2010_16\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n    <value>\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\n        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAfhJREFUOE9j/P//\n        PwNFAGQAJZgizWDXU2I7dQwABWDo1N2+iWvOnSrZcfNawbpTCwIKK2WQA7bJaZ5fpfWsbeWWM/9XWMz6\n        X2Y6Y6+DfJQTWI1P14YKh8ZVrx369v3XS1j5Xzdk4X+v0o3PnRPL8q2t4vRrHBdtytGf8t+Dp/F/AF/P\n        /yj12f/TrBb/T3KZ/1ZMzNCSwbRwwX/90jX/5Xxr//Npua8WMY1cA2LbpCz+7x67/L+v7tT/NiId//00\n        5v0P85rx1sI8aXagypz/UXaL/luaZVYx6Gct+y/rU/3ToXOdJchFyTM2c+p4hOWDDDFzmvvf3mT6bxf3\n        Rf/NHIvmgeTl1cxlQAYU+iz9H2he1cmgGTfrtmZ4y3/P0t4AmL8dy1dtMg9f+d8zZdN/69BV/w2iJmwz\n        DOvlB8m7Rc9WsnGbcbcw/tj/QIvCagZRi9hgkG32bSf/AzWCMVhz9/H/BonTX8naVJzV9p790Txh0eTQ\n        qv0dESnbjqUVH/mfnrj0iYqckSHYUlHL5ECQISrhHQ9sCzb/t6ne8EHCMmKaaVRToZ73BDcZxagKG/v5\n        /5081v308F3738q67qKgoIo3ExAgxRYjFxMTmzo7m6g1GwsvyGQ+mKSwqAMbKzOXHDenvDM7m6AlN4+s\n        MA+fMiNYfuBTIqUuAACW+BK4EwsV5AAAAABJRU5ErkJggg==\n</value>\n  </data>\n  <data name=\"Forum_16\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n    <value>\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\n        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAppJREFUOE99k2tI\n        k1EYx513nSBEUYH1LYqKPvchKAgKoqKoPqTVl0Ap8bLyGnTDKXlpbq6m04aXnG7vnM7FWubrzGa28rJE\n        sWklOu/ioNLpXi/7dzbY6ytqB36cc57nnN/zvC8cnh9nHDp89EDUvv1Rq2urbm7ct3a74b93z+4puslo\n        czgcfgDYYwFnzl1IGJ6cW5xbYDDzZ3FLZuddmPm75Bbmi1MvXrrM9wl4/gGBxxtp89TghANdthF0D45u\n        i3XIDtv43O8xx3ysT8AP50dcb2jpWP7w7QfozgGWZrL2wY2bur9D2/L5uU8QERrOj6nQ08ybjj7Ut/VA\n        S6BaOkHRFmgIavoLNK3d3lzDRysayFymMYrWBWHh0TL1W6aWXKo0fkK10Yz2rl4Mj9phH59A78AQSIco\n        N7SjuslC6IBUqStgBSGhYdHCMg0j15tRpjNhxD5GchvH0qITjUQi1ZogUjUhQ6R4xgqCQkKj44TFrtRi\n        LUrr3gFrK5sEnoDF2gdBkQqJhUrEpOUKWUEwEcRmFbuSpRQellCYnJreJHCvLqNSTyNepESSWImbGXnZ\n        GwRxwhJXiqwOCYU1yHqlRaulB06nEwzDoH/wJ+Sks0RyUSBVI1lSs1lwJ0fuFXhavEuqZMrU6B8ahlTT\n        jPiCKm/lZJK7RwSColrcyszndEB+YlK+wpUur0fKSwr3X1B4INd6SZTUemMsMg3SZBRuPxLnrH8CETwp\n        VTO5qvfIfm3wIqwyIIvg23PnAnIuQ1zOCoLJizgteJo3bbD+gqrN+l90X22QKHWzp86ev8F9TJE7du7K\n        eZwnma+oN6woKP3yVpTXGVbECuXCwSPH0knRSK7A8yzDCCcDAwOuEa5sw1Uej3eCnAvyXPAI/gFxxXIH\n        qyUbvwAAAABJRU5ErkJggg==\n</value>\n  </data>\n  <data name=\"Error_16\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n    <value>\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\n        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAABugAA\n        AboB6KsBBgAAAktJREFUOE+lU1FIU1EYvnegL/owLk3wSdQXB4I+ijpFhKsP+pI++CC+6LOIL8oUhOmD\n        oC1tw0E6Qhc1ajSKsqyMMVm2HlamK1iD6dBbc+wu56LtYffr/FeyyLkeuvBz4Zzv+/7vP+c7PACO53kN\n        x3ECKz0rHatCX5xtfmIlM65CQI0gCKLFYnFKknTAFgt+hCEscYhLAldo4Uc6fbppMsXvi6LiEkU86OrC\n        o95ePOnvx8OeHrg6OuDu7oZvYUFm2DRxiEsCBlLdnJhIOg0GbAwNwTM6ijczM3hvs2HXbsc7qxXbJhNe\n        jYzg6cAAXs/NnRKHuCRwlTzbystxr70dzwYHcby3B//sLHxTU9iensZbsxkfvV68HB7G474+OFtb1TGJ\n        ey5wTaPBnaYmfPZ4kMlk8D2RgNdoxNbkJKKhEMLhMALr67jLMDcrKi4KzHMclisrsdbQgFgkglwuh+Th\n        Ib4wYjQaxa7fD0dLi0peKiu7RKCqCuaiIqzo9ZAZKZvNIsGchAIB2Ovr1TFJYLGkJL8AKS+WlmK5pgZf\n        WWdFUZBKpXAQDKrOVqqrYRUEkNsLZ0CLdA5rjY0IMruxWAzfjo5wIkmQZRnhnR3Y6+owz/P5Bcg6dfes\n        riLEDi3CbsLZ1gZXZyfi+/tg1wYf26NGeR1YtFp1w8LG2HI4cLu5WRW8XlyMW7W1+OB2w6rTnWEY9s8R\n        1CA9Hx9P/lL/1//F2Bib7HeQzqO8YTQe39BqlcsEqDNh/o7y/z2ms0Sqr4oeBmWb4lmoCENYDXF/ArEW\n        LPEZBCtkAAAAAElFTkSuQmCC\n</value>\n  </data>\n  <data name=\"Help_16\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n    <value>\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\n        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAhhJREFUOE+1U09r\n        E0EU70fIR9iPUBQ8eMrR46IN5JhCDz2oBA8SBHEpCMFgG5GiwdJdq2Ijqe6ldo3Wrmhri0gXazW2YbMt\n        UdNmm45ulf7R/HwzU1hLIzn54LFvhvn9eW9nOjr+R0wvBLhTXEf6bgV9w0sYLJQx/uoz2mq9c7eRn2pA\n        L67Bq+/i29YeWLBL9Q6u5ktI6w6Kr1dbE3HwA3sT/o8mbAfQRgE1LZPXtsPgbjZxaXAG4y/Kh0m48sbP\n        JgwbiKYAwwLYNkR4DEje5HsMFSI5l3l2kGD6/RYezzeEMgfzwzzMWSCRlV9OFk0xqhl06wNy+Tchyb2n\n        dXxhv4TVaFLazppAJ9VKL0MySxYoVI0hkXaw5AbovjAWEmTur4qBqZoEdfbKVCgTBObqdolBUW0ocRs1\n        P8Cx2PWQ4PJtl6a9J+xLIB1OMHIilU2b1gSMqCZ9TdTq33FEHQgJcg8rWPF3qHcJVOKeyOyoJIioDqUk\n        UFM2SuUqus4YIcHEzFdYji8GxIGROAc41JJHc6E1B58wRRqWhzFrEVduTR78E5mRBSz7v0l1H0AgXgsH\n        +2DNcPBp3cep0/rhezA5V0Vfbg5ug+4CqaiaI/rmyWu+t1zdQIysDxdmW9/GiZcVnO+fgvHkI+YXV7BG\n        067VA9Ezt91Fyvq/wH8/lKHCW/RcfITj8Rs4evIaYmdHkBl63v4xtX1tLQ78AZ3a8qxOv4hDAAAAAElF\n        TkSuQmCC\n</value>\n  </data>\n</root>"
  },
  {
    "path": "source/NBug_custom/Properties/Settings.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.34209\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace NBug.Properties {\n    \n    \n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator\", \"12.0.0.0\")]\n    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {\n        \n        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));\n        \n        public static Settings Default {\n            get {\n                return defaultInstance;\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]\n        public string Cipher {\n            get {\n                return ((string)(this[\"Cipher\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]\n        public string Destination1 {\n            get {\n                return ((string)(this[\"Destination1\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]\n        public string Destination2 {\n            get {\n                return ((string)(this[\"Destination2\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]\n        public string Destination3 {\n            get {\n                return ((string)(this[\"Destination3\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]\n        public string Destination4 {\n            get {\n                return ((string)(this[\"Destination4\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]\n        public string Destination5 {\n            get {\n                return ((string)(this[\"Destination5\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.DefaultSettingValueAttribute(\"Auto\")]\n        public global::NBug.Enums.UIMode UIMode {\n            get {\n                return ((global::NBug.Enums.UIMode)(this[\"UIMode\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.DefaultSettingValueAttribute(\"Auto\")]\n        public global::NBug.Enums.UIProvider UIProvider {\n            get {\n                return ((global::NBug.Enums.UIProvider)(this[\"UIProvider\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.DefaultSettingValueAttribute(\"10\")]\n        public int SleepBeforeSend {\n            get {\n                return ((int)(this[\"SleepBeforeSend\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.DefaultSettingValueAttribute(\"5\")]\n        public int MaxQueuedReports {\n            get {\n                return ((int)(this[\"MaxQueuedReports\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.DefaultSettingValueAttribute(\"30\")]\n        public int StopReportingAfter {\n            get {\n                return ((int)(this[\"StopReportingAfter\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.DefaultSettingValueAttribute(\"CurrentDirectory\")]\n        public string StoragePath {\n            get {\n                return ((string)(this[\"StoragePath\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.DefaultSettingValueAttribute(\"Tiny\")]\n        public global::NBug.Enums.MiniDumpType MiniDumpType {\n            get {\n                return ((global::NBug.Enums.MiniDumpType)(this[\"MiniDumpType\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\n        public bool WriteLogToDisk {\n            get {\n                return ((bool)(this[\"WriteLogToDisk\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\n        public bool ExitApplicationImmediately {\n            get {\n                return ((bool)(this[\"ExitApplicationImmediately\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\n        public bool HandleProcessCorruptedStateExceptions {\n            get {\n                return ((bool)(this[\"HandleProcessCorruptedStateExceptions\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.DefaultSettingValueAttribute(\"False\")]\n        public bool ReleaseMode {\n            get {\n                return ((bool)(this[\"ReleaseMode\"]));\n            }\n        }\n        \n        [global::System.Configuration.ApplicationScopedSettingAttribute()]\n        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n        [global::System.Configuration.DefaultSettingValueAttribute(\"True\")]\n        public bool DeferredReporting {\n            get {\n                return ((bool)(this[\"DeferredReporting\"]));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/NBug_custom/Properties/Settings.settings",
    "content": "﻿<?xml version='1.0' encoding='utf-8'?>\n\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\" CurrentProfile=\"(Default)\"\n              GeneratedClassNamespace=\"NBug.Properties\" GeneratedClassName=\"Settings\">\n  <Profiles />\n  <Settings>\n    <Setting Name=\"Cipher\" Type=\"(Connection string)\" Scope=\"Application\">\n      <DesignTimeValue Profile=\"(Default)\">\n        &lt;?xml version=\"1.0\" encoding=\"utf-16\"?&gt;\n        &lt;SerializableConnectionString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"&gt;\n        &lt;ConnectionString /&gt;\n        &lt;/SerializableConnectionString&gt;\n      </DesignTimeValue>\n      <Value Profile=\"(Default)\" />\n    </Setting>\n    <Setting Name=\"Destination1\" Type=\"(Connection string)\" Scope=\"Application\">\n      <DesignTimeValue Profile=\"(Default)\">\n        &lt;?xml version=\"1.0\" encoding=\"utf-16\"?&gt;\n        &lt;SerializableConnectionString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"&gt;\n        &lt;ConnectionString /&gt;\n        &lt;/SerializableConnectionString&gt;\n      </DesignTimeValue>\n      <Value Profile=\"(Default)\" />\n    </Setting>\n    <Setting Name=\"Destination2\" Type=\"(Connection string)\" Scope=\"Application\">\n      <DesignTimeValue Profile=\"(Default)\">\n        &lt;?xml version=\"1.0\" encoding=\"utf-16\"?&gt;\n        &lt;SerializableConnectionString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"&gt;\n        &lt;ConnectionString /&gt;\n        &lt;/SerializableConnectionString&gt;\n      </DesignTimeValue>\n      <Value Profile=\"(Default)\" />\n    </Setting>\n    <Setting Name=\"Destination3\" Type=\"(Connection string)\" Scope=\"Application\">\n      <DesignTimeValue Profile=\"(Default)\">\n        &lt;?xml version=\"1.0\" encoding=\"utf-16\"?&gt;\n        &lt;SerializableConnectionString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"&gt;\n        &lt;ConnectionString /&gt;\n        &lt;/SerializableConnectionString&gt;\n      </DesignTimeValue>\n      <Value Profile=\"(Default)\" />\n    </Setting>\n    <Setting Name=\"Destination4\" Type=\"(Connection string)\" Scope=\"Application\">\n      <DesignTimeValue Profile=\"(Default)\">\n        &lt;?xml version=\"1.0\" encoding=\"utf-16\"?&gt;\n        &lt;SerializableConnectionString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"&gt;\n        &lt;ConnectionString /&gt;\n        &lt;/SerializableConnectionString&gt;\n      </DesignTimeValue>\n      <Value Profile=\"(Default)\" />\n    </Setting>\n    <Setting Name=\"Destination5\" Type=\"(Connection string)\" Scope=\"Application\">\n      <DesignTimeValue Profile=\"(Default)\">\n        &lt;?xml version=\"1.0\" encoding=\"utf-16\"?&gt;\n        &lt;SerializableConnectionString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"&gt;\n        &lt;ConnectionString /&gt;\n        &lt;/SerializableConnectionString&gt;\n      </DesignTimeValue>\n      <Value Profile=\"(Default)\" />\n    </Setting>\n    <Setting Name=\"UIMode\" Type=\"NBug.Enums.UIMode\" Scope=\"Application\">\n      <Value Profile=\"(Default)\">Auto</Value>\n    </Setting>\n    <Setting Name=\"UIProvider\" Type=\"NBug.Enums.UIProvider\" Scope=\"Application\">\n      <Value Profile=\"(Default)\">Auto</Value>\n    </Setting>\n    <Setting Name=\"SleepBeforeSend\" Type=\"System.Int32\" Scope=\"Application\">\n      <Value Profile=\"(Default)\">10</Value>\n    </Setting>\n    <Setting Name=\"MaxQueuedReports\" Type=\"System.Int32\" Scope=\"Application\">\n      <Value Profile=\"(Default)\">5</Value>\n    </Setting>\n    <Setting Name=\"StopReportingAfter\" Type=\"System.Int32\" Scope=\"Application\">\n      <Value Profile=\"(Default)\">30</Value>\n    </Setting>\n    <Setting Name=\"StoragePath\" Type=\"System.String\" Scope=\"Application\">\n      <Value Profile=\"(Default)\">CurrentDirectory</Value>\n    </Setting>\n    <Setting Name=\"MiniDumpType\" Type=\"NBug.Enums.MiniDumpType\" Scope=\"Application\">\n      <Value Profile=\"(Default)\">Tiny</Value>\n    </Setting>\n    <Setting Name=\"WriteLogToDisk\" Type=\"System.Boolean\" Scope=\"Application\">\n      <Value Profile=\"(Default)\">True</Value>\n    </Setting>\n    <Setting Name=\"ExitApplicationImmediately\" Type=\"System.Boolean\" Scope=\"Application\">\n      <Value Profile=\"(Default)\">True</Value>\n    </Setting>\n    <Setting Name=\"HandleProcessCorruptedStateExceptions\" Type=\"System.Boolean\" Scope=\"Application\">\n      <Value Profile=\"(Default)\">False</Value>\n    </Setting>\n    <Setting Name=\"ReleaseMode\" Type=\"System.Boolean\" Scope=\"Application\">\n      <Value Profile=\"(Default)\">False</Value>\n    </Setting>\n    <Setting Name=\"DeferredReporting\" Type=\"System.Boolean\" Scope=\"Application\">\n      <Value Profile=\"(Default)\">True</Value>\n    </Setting>\n  </Settings>\n</SettingsFile>"
  },
  {
    "path": "source/NBug_custom/Properties/SettingsOverride.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"SettingsOverride.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System.IO;\nusing System.Xml;\nusing System.Xml.Linq;\n\nnamespace NBug.Properties\n{\n    public static class SettingsOverride\n    {\n        /// <summary>\n        ///     Gets or sets a value indicating whether the library settings are to be overridden. If the settings are to be\n        ///     overridden by code\n        ///     or by some other library, it shall be done before any of the static members of the <see cref=\"NBug.Settings\" />\n        ///     class is accessed.\n        ///     Note that setting this to true prevents default settings from getting loaded so should be used with caution.\n        /// </summary>\n        internal static bool Overridden { get; set; }\n\n        /// <summary>\n        ///     Loads custom settings file from the designated stream. Before calling this, you must set\n        ///     <c>SettingsOverride.Overridden = true;</c>\n        ///     or the default settings will be loaded as the static constructor gets called otherwise.\n        /// </summary>\n        /// <param name=\"settingsFile\">Stream to load the settings from.</param>\n        public static void LoadCustomSettings(Stream settingsFile)\n        {\n            Overridden = true;\n\n            try\n            {\n                NBug.Settings.LoadCustomSettings(XElement.Load(XmlReader.Create(settingsFile)));\n            }\n            catch (XmlException)\n            {\n                // Root element is missing so recreate the configuration file\n                NBug.Settings.LoadCustomSettings(\n                    XElement.Parse(\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\" ?><configuration></configuration>\"));\n            }\n        }\n\n        /// <summary>\n        ///     Loads custom settings file from the designated file. Before calling this, you must set\n        ///     <c>SettingsOverride.Overridden = true;</c>\n        ///     or the default settings will be loaded as the static constructor gets called otherwise.\n        /// </summary>\n        /// <param name=\"settingsFilePath\">File to load the settings from. Used within <c>XElement.Load(path)</c></param>\n        public static void LoadCustomSettings(string settingsFilePath)\n        {\n            Overridden = true;\n\n            try\n            {\n                NBug.Settings.LoadCustomSettings(XElement.Load(settingsFilePath));\n            }\n            catch (XmlException)\n            {\n                // Root element is missing so recreate the configuration file\n                NBug.Settings.LoadCustomSettings(\n                    XElement.Parse(\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\" ?><configuration></configuration>\"));\n            }\n        }\n\n        public static void SaveCustomSettings(Stream settingsFile, bool encryptConnectionStrings)\n        {\n            NBug.Settings.SaveCustomSettings(settingsFile, encryptConnectionStrings);\n        }\n\n        public static void SaveCustomSettings(Stream settingsFile)\n        {\n            NBug.Settings.SaveCustomSettings(settingsFile, false);\n        }\n    }\n}"
  },
  {
    "path": "source/NBug_custom/Settings.cs",
    "content": "﻿// --------------------------------------------------------------------------------------------------------------------\n// <copyright file=\"Settings.cs\" company=\"NBug Project\">\n//   Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license.\n// </copyright>\n// --------------------------------------------------------------------------------------------------------------------\n\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Configuration;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Reflection;\nusing System.Security.Cryptography;\nusing System.Text;\nusing System.Xml;\nusing System.Xml.Linq;\nusing System.Xml.XPath;\nusing NBug.Core.Reporting;\nusing NBug.Core.Reporting.Info;\nusing NBug.Core.Submission;\nusing NBug.Core.Util;\nusing NBug.Core.Util.Exceptions;\nusing NBug.Core.Util.Logging;\nusing NBug.Enums;\nusing NBug.Events;\nusing NBug.Properties;\nusing StoragePath = NBug.Core.Util.Storage.StoragePath;\n\nnamespace NBug\n{\n    public static class Settings\n    {\n        /// <summary>\n        ///     Gets or sets an event for a CustomSubmission.\n        /// </summary>\n        internal static Delegate CustomSubmissionHandle;\n\n        /// <summary>\n        ///     Gets or sets an event for a CustomUI.\n        /// </summary>\n        internal static Delegate CustomUIHandle;\n\n        /// <summary>\n        ///     Lookup for quickly finding the type to instantiate for a given connection string type.\n        ///     By making this lazy we don't do the lookup until we know we have to, as\n        ///     reflection against all assemblies can be slow.\n        /// </summary>\n        private static Dictionary<string, IProtocolFactory> _availableProtocols;\n            /*= new Dictionary<string, IProtocolFactory>(\n\t\t\t() =>\n\t\t\t\t{\n\t\t\t\t\t// find all concrete implementations of IProtocolFactory\n\t\t\t\t\tvar type = typeof(IProtocolFactory);\n\t\t\t\t\treturn\n\t\t\t\t\t\t\n\t\t\t\t});*/\n\n        private static bool releaseMode; // False by default\n\n        static Settings()\n        {\n            // Crucial startup settings\n            Resources = new PublicResources();\n            EntryAssembly = (Assembly.GetEntryAssembly() ?? Assembly.GetExecutingAssembly()) ??\n                            Assembly.GetCallingAssembly();\n\n            // GetEntryAssembly() is null if there is no initial GUI/CLI\n            NBugDirectory = Path.GetDirectoryName(Assembly.GetCallingAssembly().Location) ??\n                            Environment.CurrentDirectory;\n            AdditionalReportFiles = new List<string>();\n\n            // Default to developer mode settings. Settings this now so that any exception below will be handled with correct settings\n            ReleaseMode = false;\n\n            // Check to see if the settings are overriden manually. If so, don't load the settings file automatically.\n            if (SettingsOverride.Overridden == false)\n            {\n                /*\n\t\t\t\t * Settings file search order:\n\t\t\t\t * 1) NBug.config (inside the same folder with 'NBug.dll')\n\t\t\t\t * 2) NBug.dll.config (fool proof!) (inside the same folder with 'NBug.dll')\n\t\t\t\t * 3) app.config (i.e. MyProduct.exe.config inside the same folder with the main executable 'MyProduct.exe')\n\t\t\t\t */\n                var path1 = Path.Combine(NBugDirectory, \"NBug.config\");\n                var path2 = Path.Combine(NBugDirectory, \"NBug.dll.config\");\n\n                /*string path3; // This is automatically handled by System.Configuration*/\n                if (File.Exists(path1) && new FileInfo(path1).Length > 0)\n                    //check if file is empty to avoid false exceptions\n                {\n                    try\n                    {\n                        LoadCustomSettings(XElement.Load(path1));\n                        Logger.Trace(\"Initialized NBug.Settings using the configuration file: \" + path1);\n                    }\n                    catch (Exception exception)\n                    {\n                        // File is invalid so load default settings\n                        LoadAppconfigSettings();\n                        Logger.Error(\n                            \"Default configuration file was either corrupt or empty. Loading default app.config settings. File location: \" +\n                            path1, exception);\n                    }\n                }\n                else if (File.Exists(path2) && new FileInfo(path2).Length > 0)\n                    //check if file is empty to avoid false exceptions\n                {\n                    try\n                    {\n                        LoadCustomSettings(XElement.Load(path2));\n                        Logger.Trace(\"Initialized NBug.Settings using the configuration file: \" + path2);\n                    }\n                    catch (Exception exception)\n                    {\n                        // File is invalid so load default settings\n                        LoadAppconfigSettings();\n                        Logger.Error(\n                            \"Default configuration file was either corrupt or empty. Loading default app.config settings. File location: \" +\n                            path2, exception);\n                    }\n                }\n                else\n                {\n                    LoadAppconfigSettings();\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Gets or sets a list of additional files to be added to the report zip. The files can use * or ? in the same way as\n        ///     DOS modifiers.\n        /// </summary>\n        public static List<string> AdditionalReportFiles { get; set; }\n\n        public static ICollection<IProtocol> Destinations { get; } = new Collection<IProtocol>();\n\n        /// <summary>\n        ///     Gets or sets a value indicating whether the application will exit after handling and logging an unhandled\n        ///     exception.\n        ///     This value is disregarded for anything but UIMode.None. For UIMode.None, you can choose not to exit the application\n        ///     which will result in\n        ///     'Windows Error Reporting' (aka Dr. Watson) window to kick in. One reason to do so would be to keep in line with\n        ///     Windows 7 Logo requirements,\n        ///     which is a corner case. This may also be helpful in using the NBug library as a simple unhandled exception logger\n        ///     facility, just to log and submit\n        ///     exceptions but not interfering with the application execution flow. Default value is true.\n        /// </summary>\n        public static bool ExitApplicationImmediately { get; set; }\n\n        /// <summary>\n        ///     Gets or sets a value indicating whether to handle exceptions even in a corrupted process thought the\n        ///     'HandleProcessCorruptedStateExceptions'\n        ///     flag. The default value for this is false since generating bug reports for a corrupted process may not be\n        ///     successful so use with caution.\n        /// </summary>\n        public static bool HandleProcessCorruptedStateExceptions { get; set; }\n\n        /// <summary>\n        ///     Gets or sets the number of bug reports that can be queued for submission. Each time an unhandled exception occurs,\n        ///     the bug report is prepared to\n        ///     be send at the next application startup. If submission fails (i.e. there is no Internet connection), the queue\n        ///     grows with each additional\n        ///     unhandled exception and resulting bug reports. This limits the max no of queued reports to limit the disk space\n        ///     usage.\n        ///     Default value is 5.\n        /// </summary>\n        public static int MaxQueuedReports { get; set; }\n\n        /// <summary>\n        ///     Gets or sets the memory dump type. Memory dumps are quite useful for replicating the exact conditions that the\n        ///     application crashed (i.e.\n        ///     getting the stack trace, local variables, etc.) but they take up a great deal of space, so choose wisely. Options\n        ///     are:\n        ///     None: No memory dump is generated.\n        ///     Tiny: Dump size ~200KB compressed.\n        ///     Normal: Dump size ~20MB compressed.\n        ///     Full: Dump size ~100MB compressed.\n        ///     Default value is Tiny.\n        /// </summary>\n        public static MiniDumpType MiniDumpType { get; set; }\n\n        /// <summary>\n        ///     Gets or sets a value indicating whether to enable release mode for the NBug library. In release mode the internal\n        ///     developer UI is not displayed and\n        ///     unhandled exceptions are only handled if there is no debugger attached to the process. Once properly configured and\n        ///     verified to be working\n        ///     as intended, NBug release mode should be enabled to be able to properly use the Visual Studio debugger, without\n        ///     NBug trying to handle exceptions.\n        ///     before Visual Studio does. Default value is false.\n        /// </summary>\n        public static bool ReleaseMode\n        {\n            get { return releaseMode; }\n\n            set\n            {\n                releaseMode = value;\n\n                if (releaseMode)\n                {\n                    ThrowExceptions = false;\n                    DisplayDeveloperUI = false;\n                    HandleExceptions = !Debugger.IsAttached;\n                    DispatcherIsAsynchronous = true;\n                    SkipDispatching = false;\n                    RemoveThreadSleep = false;\n                }\n                else\n                {\n                    // If developer mode is on (default)\n                    ThrowExceptions = true;\n                    DisplayDeveloperUI = true;\n                    HandleExceptions = true;\n                    DispatcherIsAsynchronous = false;\n                    SkipDispatching = false;\n                    RemoveThreadSleep = true;\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Gets or sets a public resources object which provides programmatic access to all string resources used in NBug. You\n        ///     can\n        ///     programmatically appoint new values for all the user interface texts using this property. You can also localize all\n        ///     the\n        ///     dialog text, if there is no default localization provided for your language.\n        /// </summary>\n        public static PublicResources Resources { get; set; }\n\n        /// <summary>\n        ///     Gets or sets the time in seconds that report dispatcher waits before starting to submit queued bug reports.\n        ///     Dispatcher initializes as\n        ///     soon as the application is run but waits for given number of seconds so that it won't slow down the application\n        ///     startup.\n        ///     Default value is 10 seconds.\n        /// </summary>\n        public static int SleepBeforeSend { get; set; }\n\n        /// <summary>\n        ///     Gets or sets the number of days that NBug will be collecting bug reports for the application. Most of the time, 30\n        ///     to 60 days after the\n        ///     release, there will be a new release and the current one will be obsolete. Due to this, it is not logical to\n        ///     continue to create and submit\n        ///     bug reports after a given number of days. After the predefined no of days, the user will still get to see the bug\n        ///     report UI but the reports\n        ///     will not be actually submitted. Default value is 30 days.\n        /// </summary>\n        public static int StopReportingAfter { get; set; }\n\n        /// <summary>\n        ///     Gets or sets the bug report items storage path. After and unhandled exception occurs, the bug reports are created\n        ///     and queued for submission\n        ///     on the next application startup. Until then, the reports will be stored in this location. Default value is the\n        ///     application executable directory.\n        ///     This setting can either be assigned a full path string or a value from <see cref=\"NBug.Enums.StoragePath\" />\n        ///     enumeration.\n        /// </summary>\n        public static StoragePath StoragePath { get; set; }\n\n        /// <summary>\n        ///     Gets or sets the UI mode. You should only change this if you read the documentation and understood it. Otherwise\n        ///     leave it to auto.\n        ///     Default value is Auto.\n        /// </summary>\n        public static UIMode UIMode { get; set; }\n\n        /// <summary>\n        ///     Gets or sets the UI provider. You should only change this if you read the documentation and understood it.\n        ///     Otherwise leave it to auto.\n        ///     Default value is Auto.\n        /// </summary>\n        public static UIProvider UIProvider { get; set; }\n\n        /// <summary>\n        ///     Gets or sets a value indicating whether to write \"NLog.log\" file to disk. Otherwise, you can subscribe to log\n        ///     events through the\n        ///     <see cref=\"InternalLogWritten\" /> event. All the logging is done through System.Diagnostics.Trace.Write() function\n        ///     so you can also get\n        ///     the log with any trace listener. Default value is true.\n        /// </summary>\n        public static bool WriteLogToDisk { get; set; }\n\n        /// <summary>\n        ///     Gets the Cipher text used for encrypting connection strings before saving to disk. This is automatically generated\n        ///     when the\n        ///     method <see cref=\"SaveCustomSettings(Stream, bool)\" /> method is called with encryption set to true.\n        /// </summary>\n        internal static byte[] Cipher { get; private set; }\n\n        /// <summary>\n        ///     Gets or sets a value indicating whether the dispatcher the class deals with sending of reports to their\n        ///     destinations like mail\n        ///     address or an issue tracker, runs asynchronously (in a background worker thread as a\n        ///     <see cref=\"System.Threading.Tasks.Task\" />).\n        ///     By default dispatcher runs on a background thread except for debug builds, where it blocks the UI and runs in a\n        ///     synchronous manner.\n        ///     This is made so to prevent any exceptions thrown by the dispatcher from being swallowed by the CLR since background\n        ///     thread exceptions\n        ///     are ignored in most cases, which is not desirable during development (i.e. in a debug build).\n        /// </summary>\n        internal static bool DispatcherIsAsynchronous { get; set; }\n\n        /// <summary>\n        ///     Gets or sets a value indicating whether to enable developer user interface facilities which enable easier diagnosis\n        ///     of\n        ///     configuration and other internal errors.\n        /// </summary>\n        internal static bool DisplayDeveloperUI { get; set; }\n\n        /// <summary>\n        ///     Gets or sets a value indicating whether to enable network tracing and write the network trace log to\n        ///     \"NBug.Network.log\" file.\n        ///     This should only be used for diagnostics, debugging purposes as it slows down network connections considerably.\n        ///     Network tracing is disabled by default.\n        /// </summary>\n        internal static bool? EnableNetworkTrace { get; set; }\n\n        /// <summary>\n        ///     Gets or sets the entry assembly which hosts the NBug assembly. It is used for retrieving the version and the full\n        ///     name\n        ///     of the host application. i.e. Settings.EntryAssembly.GetLoadedModules()[0].Name; @ Info\\General.cs\n        /// </summary>\n        internal static Assembly EntryAssembly { get; set; }\n\n        /// <summary>\n        ///     Gets or sets a value indicating whether the unhandled exception handlers in NBug.Handler class actually handle\n        ///     exceptions.\n        ///     Exceptions will not be handled if the application is in release mode via <see cref=\"Settings.ReleaseMode\" /> and a\n        ///     debugger\n        ///     is attached to the process. This enables proper debugging of normal exceptions even in the presence of NBug.\n        /// </summary>\n        internal static bool HandleExceptions { get; set; }\n\n        /// <summary>\n        ///     Gets or sets the absolute path to the directory that NBug.dll assembly currently resides. This is used in place of\n        ///     CWD\n        ///     throughout this assembly to prevent the library from getting affected of CWD changes that happens with\n        ///     Directory.SetCurrentDirectory().\n        /// </summary>\n        internal static string NBugDirectory { get; set; }\n\n        /// <summary>\n        ///     Gets or sets a value indicating whether to remove all the <see cref=\"System.Threading.Thread.Sleep(int)\" />\n        ///     statements from\n        ///     the thread executions. Some thread sleep statements are used to increase the host application performance i.e. the\n        ///     <see cref=\"Settings.SleepBeforeSend\" /> halts the execution of <see cref=\"Dispatcher.Dispatch()\" /> for a given\n        ///     number of\n        ///     seconds to let the host application initialize properly.\n        /// </summary>\n        internal static bool RemoveThreadSleep { get; set; }\n\n        /// <summary>\n        ///     Gets or sets a value indicating whether to skip the report dispatching process altogether.\n        /// </summary>\n        internal static bool SkipDispatching { get; set; }\n\n        /// <summary>\n        ///     Gets or sets a value indicating whether internal <see cref=\"NBugException\" /> derived types are thrown or\n        ///     swallowed.\n        ///     Exceptions are NOT thrown by  default except for debug builds. Note that exceptions are caught and re-thrown by the\n        ///     Logger.Error() method with added information so stack trace is reset. The inner exceptions should be inspected to\n        ///     get\n        ///     the actual stack trace.\n        /// </summary>\n        internal static bool ThrowExceptions { get; set; }\n\n        /// <summary>\n        ///     Gets or sets a value indicating whether to use the deferred reporting feature. With this feature enabled, all bug\n        ///     reports are sent\n        ///     after the next application start and as a background task. This helps facilitate sending of bug reports with large\n        ///     memory dumps\n        ///     with them. When this feature is disabled, bug reports are sent as soon as an unhandled exception is caught. For the\n        ///     users, it is\n        ///     very uncomfortable to wait for bug reports to be sent after an application crash, so it is best to leave this\n        ///     feature on.\n        ///     Default value is true.\n        /// </summary>\n        private static bool DeferredReporting { get; set; }\n\n        private static void PopulateProtocols()\n        {\n            if (_availableProtocols != null)\n                return;\n\n            // find all concrete implementations of IProtocolFactory\n            var type = typeof (IProtocolFactory);\n\n            _availableProtocols = AppDomain.CurrentDomain.GetAssemblies()\n                .SelectMany(s => s.GetTypes())\n                .Where(type.IsAssignableFrom)\n                .Where(t => t.IsClass)\n                .Where(t => !t.IsAbstract)\n                .Select(t => (IProtocolFactory) Activator.CreateInstance(t))\n                .ToDictionary(f => f.SupportedType);\n        }\n\n        public static event EventHandler<CustomSubmissionEventArgs> CustomSubmissionEvent\n        {\n            add { CustomSubmissionHandle = Delegate.Combine(CustomSubmissionHandle, value); }\n\n            remove { CustomSubmissionHandle = Delegate.Remove(CustomSubmissionHandle, value); }\n        }\n\n        public static event EventHandler<CustomUIEventArgs> CustomUIEvent\n        {\n            add { CustomUIHandle = Delegate.Combine(CustomUIHandle, value); }\n\n            remove { CustomUIHandle = Delegate.Remove(CustomUIHandle, value); }\n        }\n\n        /// <summary>\n        ///     The internal logger write event for getting notifications for all internal NBug loggers. Using this event, you can\n        ///     attach internal NBug\n        ///     logs to your applications own logging facility (i.e. log4net, NLog, etc.). First parameters is the message string,\n        ///     second one is the log\n        ///     category (info, warning, error, etc.).\n        /// </summary>\n        public static event Action<string, LoggerCategory> InternalLogWritten\n        {\n            add { Logger.LogWritten += value; }\n\n            remove { Logger.LogWritten -= value; }\n        }\n\n        /// <summary>\n        ///     This event is fired just before any caught exception is processed, to make them into an orderly bug report.\n        ///     Parameters passed with\n        ///     this event can be inspected for some internal decision making or to add more information to the bug report.\n        ///     Supplied parameters are:\n        ///     -First parameter: <see cref=\"System.Exception\" />: This is the actual exception object that is caught to be report\n        ///     as a bug. This object\n        ///     is processed to extract standard information from it but it can still carry some custom data that you may want to\n        ///     use so it is supplied\n        ///     as a parameter of this event for your convenience.\n        ///     -Second parameter: <see cref=\"System.Object\" />: This is any XML serializable object which can carry any additional\n        ///     information to be\n        ///     embedded in the actual bug report. For instance you may capture  more information about the system than NBug does\n        ///     for you, so you can put\n        ///     all those new information in a user defined type and pass it here. You can also pass in any system type that is\n        ///     serializable. Make sure\n        ///     that passed objects are XML serializable or the information will not appear in the report. See the sample usage for\n        ///     proper usage if this\n        ///     event.\n        /// </summary>\n        /// <example>\n        ///     A sample code demonstrating the proper use of this event:\n        ///     <code>\n        ///  NBug.Settings.ProcessingException += (exception, report) =>\n        /// \t{\n        /// \t\treport.CustomInfo = new MyCusomSystemInformation { UtcTime = DateTime.UtcNow, AdditionalData = RubyExceptionData.GetInstance(exception) };\n        /// \t};\n        ///  </code>\n        /// </example>\n        public static event Action<Exception, Report> ProcessingException\n        {\n            add { BugReport.ProcessingException += value; }\n\n            remove { BugReport.ProcessingException -= value; }\n        }\n\n        /// <summary>\n        ///     Adds a destination based on a connection string.\n        /// </summary>\n        /// <param name=\"connectionString\">Connection string.</param>\n        /// <returns>The protocol that was created and added. Null if empty connection string.</returns>\n        /// <exception cref=\"System.ArgumentException\">\n        ///     The protocol corresponding to the Type parameter in the connection string\n        ///     was not found.\n        /// </exception>\n        public static IProtocol AddDestinationFromConnectionString(string connectionString)\n        {\n            if (string.IsNullOrEmpty(connectionString))\n            {\n                return null;\n            }\n\n            var connectionStringParts = ConnectionStringParser.Parse(connectionString);\n            var type = connectionStringParts[@\"Type\"];\n            PopulateProtocols();\n            if (!_availableProtocols.ContainsKey(type))\n            {\n                throw new ArgumentException(string.Format(\"No protocol factory found for type '{0}'.\", type),\n                    nameof(connectionString));\n            }\n\n            var factory = _availableProtocols[type];\n            var protocol = factory.FromConnectionString(connectionString);\n            Destinations.Add(protocol);\n            return protocol;\n        }\n\n        public static IProtocol AddDestinationFromConnectionString(string connectionString, string cipherString)\n        {\n            if (string.IsNullOrEmpty(connectionString) || string.IsNullOrEmpty(cipherString))\n            {\n                return null;\n            }\n\n            Cipher = Convert.FromBase64String(cipherString);\n            return AddDestinationFromConnectionString(Decrypt(connectionString));\n        }\n\n        /// <summary>\n        ///     This should not be used directly. Rather, <see cref=\"SettingsOverride.LoadCustomSettings(Stream)\" /> should be\n        ///     preferred.\n        /// </summary>\n        internal static void LoadCustomSettings(XElement config)\n        {\n            // Read defaults first\n            UIMode = GetDefaultEnumValue<UIMode>();\n            UIProvider = GetDefaultEnumValue<UIProvider>();\n            SleepBeforeSend = Convert.ToInt32(GetDefaultValue(() => SleepBeforeSend));\n            MaxQueuedReports = Convert.ToInt32(GetDefaultValue(() => MaxQueuedReports));\n            StopReportingAfter = Convert.ToInt32(GetDefaultValue(() => StopReportingAfter));\n            StoragePath = GetDefaultValue(() => StoragePath);\n            MiniDumpType = GetDefaultEnumValue<MiniDumpType>();\n            WriteLogToDisk = Convert.ToBoolean(GetDefaultValue(() => WriteLogToDisk));\n            ExitApplicationImmediately = Convert.ToBoolean(GetDefaultValue(() => ExitApplicationImmediately));\n            HandleProcessCorruptedStateExceptions =\n                Convert.ToBoolean(GetDefaultValue(() => HandleProcessCorruptedStateExceptions));\n            ReleaseMode = Convert.ToBoolean(GetDefaultValue(() => ReleaseMode));\n            DeferredReporting = Convert.ToBoolean(GetDefaultValue(() => DeferredReporting));\n\n            if (config.XPathSelectElement(\"system.diagnostics\") != null &&\n                config.XPathSelectElement(\"system.diagnostics/sharedListeners\") != null)\n            {\n                var traceLog = from networkTrace in config.XPathSelectElements(\"system.diagnostics/sharedListeners/add\")\n                    where\n                        networkTrace.Attribute(\"initializeData\") != null &&\n                        networkTrace.Attribute(\"initializeData\").Value == \"NBug.Network.log\"\n                    select networkTrace;\n\n                if (traceLog.Any())\n                {\n                    EnableNetworkTrace = true;\n                }\n            }\n\n            // Read application settings\n            var applicationSettings =\n                from element in\n                    config.Elements(\"applicationSettings\").Elements(\"NBug.Properties.Settings\").Elements(\"setting\")\n                where element.Attribute(\"name\") != null && element.Element(\"value\") != null\n                select element;\n\n            foreach (var applicationSetting in applicationSettings)\n            {\n                var property = applicationSetting.Attribute(\"name\").Value;\n                var value = applicationSetting.Element(\"value\").Value;\n\n                if (property == GetPropertyName(() => UIMode))\n                {\n                    UIMode = (UIMode) Enum.Parse(typeof (UIMode), value);\n                }\n                else if (property == GetPropertyName(() => UIProvider))\n                {\n                    UIProvider = (UIProvider) Enum.Parse(typeof (UIProvider), value);\n                }\n                else if (property == GetPropertyName(() => SleepBeforeSend))\n                {\n                    SleepBeforeSend = Convert.ToInt32(value);\n                }\n                else if (property == GetPropertyName(() => MaxQueuedReports))\n                {\n                    MaxQueuedReports = Convert.ToInt32(value);\n                }\n                else if (property == GetPropertyName(() => StopReportingAfter))\n                {\n                    StopReportingAfter = Convert.ToInt32(value);\n                }\n                else if (property == GetPropertyName(() => StoragePath))\n                {\n                    StoragePath = value;\n                }\n                else if (property == GetPropertyName(() => MiniDumpType))\n                {\n                    MiniDumpType = (MiniDumpType) Enum.Parse(typeof (MiniDumpType), value);\n                }\n                else if (property == GetPropertyName(() => WriteLogToDisk))\n                {\n                    WriteLogToDisk = Convert.ToBoolean(value);\n                }\n                else if (property == GetPropertyName(() => ExitApplicationImmediately))\n                {\n                    ExitApplicationImmediately = Convert.ToBoolean(value);\n                }\n                else if (property == GetPropertyName(() => HandleProcessCorruptedStateExceptions))\n                {\n                    HandleProcessCorruptedStateExceptions = Convert.ToBoolean(value);\n                }\n                else if (property == GetPropertyName(() => ReleaseMode))\n                {\n                    ReleaseMode = Convert.ToBoolean(value);\n                }\n                else if (property == GetPropertyName(() => DeferredReporting))\n                {\n                    DeferredReporting = Convert.ToBoolean(value);\n                }\n                else\n                {\n                    Logger.Error(\n                        string.Format(\n                            \"There is a problem with the 'applicationSettings' section of the configuration file. The property read from the file '{0}' is undefined. This is probably a refactoring problem, or a malformed config file.\",\n                            property));\n                }\n            }\n\n            // Read connection strings\n            var connectionStrings = from element in config.Elements(\"connectionStrings\").Elements(\"add\")\n                where element.Attribute(\"name\") != null && element.Attribute(\"connectionString\") != null\n                select element;\n\n            foreach (var connectionString in connectionStrings)\n            {\n                var property = connectionString.Attribute(\"name\").Value;\n                var value = connectionString.Attribute(\"connectionString\").Value;\n                var prefix = \"NBug.Properties.Settings.\";\n\n                if (property == prefix + GetPropertyName(() => Cipher))\n                {\n                    Cipher = Convert.FromBase64String(value);\n                }\n                else if (property.StartsWith(prefix))\n                {\n                    var decodedConnectionString = Decrypt(value);\n                    try\n                    {\n                        AddDestinationFromConnectionString(decodedConnectionString);\n                    }\n                    catch (ArgumentException e)\n                    {\n                        Logger.Error(e.Message);\n                    }\n                }\n                else\n                {\n                    Logger.Error(\n                        \"There is a problem with the 'connectionStrings' section of the configuration file. The property read from the file '\" +\n                        property\n                        + \"' is undefined. This is probably a refactoring problem, or malformed config file.\");\n                }\n            }\n            PopulateProtocols();\n            var x = _availableProtocols;\n        }\n\n        /// <summary>\n        ///     This should not be used directly. Rather <see cref=\"SettingsOverride.SaveCustomSettings(Stream)\" /> should be\n        ///     preferred.\n        /// </summary>\n        internal static void SaveCustomSettings(Stream settingsFile, bool encryptConnectionStrings)\n        {\n            XDocument config;\n\n            try\n            {\n                config = XDocument.Load(XmlReader.Create(settingsFile));\n            }\n            catch (XmlException)\n            {\n                // Root element is missing so recreate the configuration file\n                config = XDocument.Parse(\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\" ?><configuration></configuration>\");\n            }\n\n            // Restructure the configuration file\n            if (config.Root == null || config.Root.Name != \"configuration\")\n            {\n                config =\n                    XDocument.Parse(\n                        \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\" ?><configuration><configSections><sectionGroup name=\\\"applicationSettings\\\" type=\\\"System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\\\" ><section name=\\\"NBug.Properties.Settings\\\" type=\\\"System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\\\" requirePermission=\\\"false\\\" /></sectionGroup></configSections><connectionStrings></connectionStrings><applicationSettings><NBug.Properties.Settings></NBug.Properties.Settings></applicationSettings></configuration>\");\n            }\n            else\n            {\n                if (config.Root.Element(\"configSections\") == null)\n                {\n                    config.Root.AddFirst(\n                        XElement.Parse(\n                            \"<configSections><sectionGroup name=\\\"applicationSettings\\\" type=\\\"System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\\\" ><section name=\\\"NBug.Properties.Settings\\\" type=\\\"System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\\\" requirePermission=\\\"false\\\" /></sectionGroup></configSections>\"));\n                }\n                else\n                {\n                    var sectionGroup = from setting in config.Root.Element(\"configSections\").Elements()\n                        where\n                            setting.Attribute(\"name\") != null &&\n                            setting.Attribute(\"name\").Value == \"applicationSettings\"\n                        select setting;\n\n                    if (!sectionGroup.Any())\n                    {\n                        config.Root.Element(\"configSections\")\n                            .Add(\n                                XElement.Parse(\n                                    \"<sectionGroup name=\\\"applicationSettings\\\" type=\\\"System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\\\" ><section name=\\\"NBug.Properties.Settings\\\" type=\\\"System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\\\" requirePermission=\\\"false\\\" /></sectionGroup>\"));\n                    }\n                    else\n                    {\n                        var nbugSection = from section in sectionGroup.Elements()\n                            where\n                                section.Attribute(\"name\") != null &&\n                                section.Attribute(\"name\").Value == \"NBug.Properties.Settings\"\n                            select section;\n\n                        if (!nbugSection.Any())\n                        {\n                            sectionGroup.First()\n                                .Add(\n                                    XElement.Parse(\n                                        \"<section name=\\\"NBug.Properties.Settings\\\" type=\\\"System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\\\" requirePermission=\\\"false\\\" />\"));\n                        }\n                    }\n                }\n\n                if (config.Root.Element(\"connectionStrings\") == null)\n                {\n                    config.Root.Add(XElement.Parse(\"<connectionStrings></connectionStrings>\"));\n                }\n\n                if (config.Root.Element(\"applicationSettings\") == null)\n                {\n                    config.Root.Add(\n                        XElement.Parse(\n                            \"<applicationSettings><NBug.Properties.Settings></NBug.Properties.Settings></applicationSettings>\"));\n                }\n                else if (config.Root.Element(\"applicationSettings\").Element(\"NBug.Properties.Settings\") == null)\n                {\n                    config.Root.Element(\"applicationSettings\")\n                        .Add(XElement.Parse(\"<NBug.Properties.Settings></NBug.Properties.Settings>\"));\n                }\n            }\n\n            if (EnableNetworkTrace.HasValue)\n            {\n                if (EnableNetworkTrace.Value)\n                {\n                    if (config.Root.XPathSelectElement(\"system.diagnostics\") != null)\n                    {\n                        config.Root.XPathSelectElement(\"system.diagnostics\").Remove();\n                    }\n\n                    config.Root.Add(\n                        XElement.Parse(\n                            \"<system.diagnostics><sources><source name=\\\"System.Net\\\" tracemode=\\\"includehex\\\" maxdatasize=\\\"1024\\\"><listeners><add name=\\\"System.Net\\\"/></listeners></source><source name=\\\"System.Net.Sockets\\\"><listeners><add name=\\\"System.Net\\\"/></listeners></source><source name=\\\"System.Net.Cache\\\"><listeners><add name=\\\"System.Net\\\"/></listeners></source></sources><switches><add name=\\\"System.Net\\\" value=\\\"Verbose\\\"/><add name=\\\"System.Net.Sockets\\\" value=\\\"Verbose\\\"/><add name=\\\"System.Net.Cache\\\" value=\\\"Verbose\\\"/></switches><sharedListeners><add name=\\\"System.Net\\\" type=\\\"System.Diagnostics.TextWriterTraceListener\\\" initializeData=\\\"NBug.Network.log\\\"/></sharedListeners><trace autoflush=\\\"true\\\" indentsize=\\\"2\\\"/></system.diagnostics>\"));\n                }\n                else\n                {\n                    if (config.Root.XPathSelectElement(\"system.diagnostics\") != null)\n                    {\n                        config.Root.XPathSelectElement(\"system.diagnostics\").Remove();\n                    }\n                }\n            }\n\n            // Replace connection strings\n            var prefix = \"NBug.Properties.Settings.\";\n            var connectionStrings = from connString in config.Root.Element(\"connectionStrings\").Elements()\n                where connString.Attribute(\"name\") != null && connString.Attribute(\"name\").Value.StartsWith(prefix)\n                select connString;\n            connectionStrings.Remove();\n\n            if (encryptConnectionStrings)\n            {\n                if (Cipher == null || Cipher.Length == 0)\n                {\n                    Cipher = GenerateKey();\n                }\n\n                config.Root.Element(\"connectionStrings\")\n                    .Add(\n                        new XElement(\n                            \"add\",\n                            new XAttribute(\"name\", \"NBug.Properties.Settings.\" + GetPropertyName(() => Cipher)),\n                            new XAttribute(\"connectionString\", Convert.ToBase64String(Cipher))));\n            }\n            else\n            {\n                Cipher = null;\n            }\n\n            var i = 1;\n            foreach (var destination in Destinations)\n            {\n                AddConnectionString(config, destination.ConnectionString, i);\n                i++;\n            }\n\n            // Replace application setting\n            var applicationSettings =\n                from appSetting in\n                    config.Root.Element(\"applicationSettings\").Element(\"NBug.Properties.Settings\").Elements()\n                where\n                    appSetting.Attribute(\"name\") != null\n                    && (appSetting.Attribute(\"name\").Value == GetPropertyName(() => UIMode)\n                        || appSetting.Attribute(\"name\").Value == GetPropertyName(() => UIProvider)\n                        || appSetting.Attribute(\"name\").Value == GetPropertyName(() => SleepBeforeSend)\n                        || appSetting.Attribute(\"name\").Value == GetPropertyName(() => MaxQueuedReports)\n                        || appSetting.Attribute(\"name\").Value == GetPropertyName(() => StopReportingAfter)\n                        || appSetting.Attribute(\"name\").Value == GetPropertyName(() => StoragePath)\n                        || appSetting.Attribute(\"name\").Value == GetPropertyName(() => MiniDumpType)\n                        || appSetting.Attribute(\"name\").Value == GetPropertyName(() => WriteLogToDisk)\n                        || appSetting.Attribute(\"name\").Value == GetPropertyName(() => ExitApplicationImmediately)\n                        ||\n                        appSetting.Attribute(\"name\").Value ==\n                        GetPropertyName(() => HandleProcessCorruptedStateExceptions)\n                        || appSetting.Attribute(\"name\").Value == GetPropertyName(() => ReleaseMode)\n                        || appSetting.Attribute(\"name\").Value == GetPropertyName(() => DeferredReporting))\n                select appSetting;\n            applicationSettings.Remove();\n\n            AddApplicationSetting(config, UIMode, () => UIMode);\n            AddApplicationSetting(config, UIProvider, () => UIProvider);\n            AddApplicationSetting(config, SleepBeforeSend, () => SleepBeforeSend);\n            AddApplicationSetting(config, MaxQueuedReports, () => MaxQueuedReports);\n            AddApplicationSetting(config, StopReportingAfter, () => StopReportingAfter);\n            AddApplicationSetting(config, MiniDumpType, () => MiniDumpType);\n            AddApplicationSetting(config, WriteLogToDisk, () => WriteLogToDisk);\n            AddApplicationSetting(config, ExitApplicationImmediately, () => ExitApplicationImmediately);\n            AddApplicationSetting(config, HandleProcessCorruptedStateExceptions,\n                () => HandleProcessCorruptedStateExceptions);\n            AddApplicationSetting(config, ReleaseMode, () => ReleaseMode);\n            AddApplicationSetting(config, DeferredReporting, () => DeferredReporting);\n\n            if (StoragePath == Enums.StoragePath.Custom)\n            {\n                AddApplicationSetting(config, (string) StoragePath, () => StoragePath);\n            }\n            else\n            {\n                AddApplicationSetting(config, (Enums.StoragePath) StoragePath, () => StoragePath);\n            }\n\n            settingsFile.SetLength(0);\n            settingsFile.Flush();\n            config.Save(XmlWriter.Create(settingsFile));\n            settingsFile.Flush();\n        }\n\n        private static void AddApplicationSetting<T>(XDocument document, object content,\n            Expression<Func<T>> propertyExpression)\n        {\n            document.Root.Element(\"applicationSettings\")\n                .Element(\"NBug.Properties.Settings\")\n                .Add(\n                    new XElement(\n                        \"setting\",\n                        new XAttribute(\"name\", GetPropertyName(propertyExpression)),\n                        new XAttribute(\"serializeAs\", \"String\"),\n                        new XElement(\"value\", content)));\n        }\n\n        private static void AddConnectionString(XDocument document, string content, int number)\n        {\n            if (!string.IsNullOrEmpty(content))\n            {\n                document.Root.Element(\"connectionStrings\")\n                    .Add(\n                        new XElement(\n                            \"add\", new XAttribute(\"name\", \"NBug.Properties.Settings.Connection\" + number),\n                            new XAttribute(\"connectionString\", Encrypt(content))));\n            }\n        }\n\n        private static string Decrypt(string connectionString)\n        {\n            if (Cipher == null || Cipher.Length == 0)\n            {\n                return connectionString;\n            }\n            // Preserve FIPS compliance\n            SHA512 hashProvider;\n            if (Environment.OSVersion.Version.Major > 5 ||\n                (Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor >= 2))\n            {\n                hashProvider = new SHA512CryptoServiceProvider();\n            }\n            else\n            {\n                hashProvider = new SHA512Managed();\n            }\n\n            using (var hash = hashProvider)\n                //using (var cipher = new Rfc2898DeriveBytes(Cipher, hash.ComputeHash(Cipher), 3))\n            using (var decryptor = new AesCryptoServiceProvider())\n            {\n                var cipher = new Rfc2898DeriveBytes(Cipher, hash.ComputeHash(Cipher), 3);\n                var key = cipher.GetBytes(decryptor.KeySize/8);\n                var iv = cipher.GetBytes(decryptor.BlockSize/8);\n                var dec = decryptor.CreateDecryptor(key, iv);\n\n                var connectionStringBytes = Convert.FromBase64String(connectionString);\n                    // Reading from config file is always in Base64\n\n                var decryptedBytes = dec.TransformFinalBlock(connectionStringBytes, 0, connectionStringBytes.Length);\n\n                return Encoding.UTF8.GetString(decryptedBytes);\n            }\n        }\n\n        private static string Encrypt(string connectionString)\n        {\n            if (Cipher == null || Cipher.Length == 0)\n            {\n                return connectionString;\n            }\n            // Preserve FIPS compliance via using xxxCryptoServiceProvider classes where possible\n            SHA512 hashProvider;\n            if (Environment.OSVersion.Version.Major > 5 ||\n                (Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor >= 2))\n            {\n                hashProvider = new SHA512CryptoServiceProvider();\n            }\n            else\n            {\n                hashProvider = new SHA512Managed();\n            }\n\n            using (var hash = hashProvider)\n                //using (var cipher = new Rfc2898DeriveBytes(Cipher, hash.ComputeHash(Cipher), 3))\n            using (var encryptor = new AesCryptoServiceProvider())\n            {\n                var cipher = new Rfc2898DeriveBytes(Cipher, hash.ComputeHash(Cipher), 3);\n                var key = cipher.GetBytes(encryptor.KeySize/8);\n                var iv = cipher.GetBytes(encryptor.BlockSize/8);\n                var enc = encryptor.CreateEncryptor(key, iv);\n\n                var connectionStringBytes = Encoding.UTF8.GetBytes(connectionString);\n                var encryptedBytes = enc.TransformFinalBlock(connectionStringBytes, 0, connectionStringBytes.Length);\n\n                return Convert.ToBase64String(encryptedBytes); // Writing to config file is always in Base64\n            }\n        }\n\n        private static byte[] GenerateKey()\n        {\n            using (var encryptor = new AesCryptoServiceProvider())\n            {\n                encryptor.GenerateKey();\n                return encryptor.Key;\n            }\n        }\n\n        private static T GetDefaultEnumValue<T>()\n        {\n            var defaultSetting =\n                typeof (Properties.Settings).GetProperty(typeof (T).Name)\n                    .GetCustomAttributes(typeof (DefaultSettingValueAttribute), false)[0] as\n                    DefaultSettingValueAttribute;\n\n            try\n            {\n                return (T) Enum.Parse(typeof (T), defaultSetting.Value);\n            }\n            catch (Exception exception)\n            {\n                throw new NBugRuntimeException(\n                    \"There is no internal default value supplied for '\" + typeof (T).Name +\n                    \"' or the supplied value is invalid. See the inner exception for details.\",\n                    exception);\n            }\n        }\n\n        /// <summary>\n        ///     Replicate the behavior of normal Properties.Settings class via getting default values for null settings.\n        ///     Use this like GetDefaultValue(() =&gt; SleepBeforeSend);\n        /// </summary>\n        /// <returns>\n        ///     The <see cref=\"string\" />.\n        /// </returns>\n        private static string GetDefaultValue<T>(Expression<Func<T>> propertyExpression)\n        {\n            if (typeof(Properties.Settings).GetProperty(((MemberExpression) propertyExpression.Body).Member.Name)\n                .GetCustomAttributes(typeof(DefaultSettingValueAttribute), false)[0] is DefaultSettingValueAttribute defaultSetting)\n                return defaultSetting.Value;\n            return null;\n        }\n\n        private static string GetPropertyName<T>(Expression<Func<T>> propertyExpression)\n        {\n            return ((MemberExpression) propertyExpression.Body).Member.Name;\n        }\n\n        private static void LoadAppconfigSettings()\n        {\n            // Application settings\n            UIMode = Properties.Settings.Default.UIMode;\n            UIProvider = Properties.Settings.Default.UIProvider;\n            SleepBeforeSend = Properties.Settings.Default.SleepBeforeSend;\n            MaxQueuedReports = Properties.Settings.Default.MaxQueuedReports;\n            StopReportingAfter = Properties.Settings.Default.StopReportingAfter;\n            StoragePath = Properties.Settings.Default.StoragePath;\n            MiniDumpType = Properties.Settings.Default.MiniDumpType;\n            WriteLogToDisk = Properties.Settings.Default.WriteLogToDisk;\n            ExitApplicationImmediately = Properties.Settings.Default.ExitApplicationImmediately;\n            HandleProcessCorruptedStateExceptions = Properties.Settings.Default.HandleProcessCorruptedStateExceptions;\n            ReleaseMode = Properties.Settings.Default.ReleaseMode;\n            DeferredReporting = Properties.Settings.Default.DeferredReporting;\n\n            // Connection strings\n            Cipher = Convert.FromBase64String(Properties.Settings.Default.Cipher);\n            AddDestinationFromConnectionString(Decrypt(Properties.Settings.Default.Destination1));\n            AddDestinationFromConnectionString(Decrypt(Properties.Settings.Default.Destination2));\n            AddDestinationFromConnectionString(Decrypt(Properties.Settings.Default.Destination3));\n            AddDestinationFromConnectionString(Decrypt(Properties.Settings.Default.Destination4));\n            AddDestinationFromConnectionString(Decrypt(Properties.Settings.Default.Destination5));\n        }\n    }\n}"
  },
  {
    "path": "source/NetSettingBinder/ISettingChangedHandlerEntry.cs",
    "content": "namespace Klocman.Binding.Settings\n{\n    internal interface ISettingChangedHandlerEntry\n    {\n        object Tag { get; set; }\n        void SendEvent(object value);\n    }\n}"
  },
  {
    "path": "source/NetSettingBinder/LockedList.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace Klocman.Binding.Settings\n{\n    internal class LockedList<T> : IList<T>\n    {\n        private readonly List<T> _list;\n\n        public LockedList()\n        {\n            _list = new List<T>();\n        }\n\n        public IEnumerator<T> GetEnumerator()\n        {\n            lock (_list)\n                return _list.ToList().GetEnumerator();\n        }\n\n        IEnumerator IEnumerable.GetEnumerator()\n        {\n            lock (_list)\n                return ((IEnumerable)_list.ToList()).GetEnumerator();\n        }\n\n        public void Add(T item)\n        {\n            lock (_list)\n                _list.Add(item);\n        }\n\n        public void Clear()\n        {\n            lock (_list)\n                _list.Clear();\n        }\n\n        public bool Contains(T item)\n        {\n            lock (_list)\n                return _list.Contains(item);\n        }\n\n        public void CopyTo(T[] array, int arrayIndex)\n        {\n            lock (_list)\n                _list.CopyTo(array, arrayIndex);\n        }\n\n        public bool Remove(T item)\n        {\n            lock (_list)\n                return _list.Remove(item);\n        }\n\n        public int Count\n        {\n            get { lock (_list) return _list.Count; }\n        }\n\n        public bool IsReadOnly => false;\n\n        public int IndexOf(T item)\n        {\n            lock (_list)\n                return _list.IndexOf(item);\n        }\n\n        public void Insert(int index, T item)\n        {\n            lock (_list)\n                _list.Insert(index, item);\n        }\n\n        public void RemoveAt(int index)\n        {\n            lock (_list)\n                _list.RemoveAt(index);\n        }\n\n        public int RemoveAll(Predicate<T> match)\n        {\n            lock (_list)\n                return _list.RemoveAll(match);\n        }\n\n        public T this[int index]\n        {\n            get { lock (_list) return _list[index]; }\n            set { lock (_list) _list[index] = value; }\n        }\n    }\n}"
  },
  {
    "path": "source/NetSettingBinder/NetSettingBinder.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Library</OutputType>\n    <RootNamespace>Klocman.Binding.Settings</RootNamespace>\n    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "source/NetSettingBinder/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n\n[assembly: AssemblyTitle(\"NetSettingBinder\")]\n[assembly: AssemblyDescription(\"A tool for binding controls, variables and typed event handlers to custom Settings classes.\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"Marcin Szeniak\")]\n[assembly: AssemblyProduct(\"NetSettingBinder\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2016\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n\n[assembly: Guid(\"c28a3493-8fca-4571-8f9e-27b8420c0720\")]\n[assembly: AssemblyVersion(\"1.1.1\")]"
  },
  {
    "path": "source/NetSettingBinder/ReflectionTools.cs",
    "content": "﻿using System;\nusing System.Linq.Expressions;\nusing System.Reflection;\n\nnamespace Klocman.Binding.Settings\n{\n    internal static class ReflectionTools\n    {\n        /// <summary>\n        ///     Get the name of a static or instance property from a property access lambda.\n        /// </summary>\n        /// <typeparam name=\"TProperty\">Type of the property</typeparam>\n        /// <typeparam name=\"TClass\">Type of a class that contains the property</typeparam>\n        /// <param name=\"memberLamda\">You must pass a lambda formed like this 'x => x.Property' or this 'x => class.Property'</param>\n        /// <returns>The name of the property</returns>\n        public static string GetPropertyName<TProperty, TClass>(Expression<Func<TClass, TProperty>> memberLamda)\n        {\n            return GetPropertyInfo(memberLamda).Name;\n        }\n\n        /// <summary>\n        ///     Get the PropertyInfo of a static or instance property from a property access lambda.\n        /// </summary>\n        /// <typeparam name=\"TProperty\">Type of the property</typeparam>\n        /// <typeparam name=\"TClass\">Type of a class that contains the property</typeparam>\n        /// <param name=\"memberLamda\">You must pass a lambda formed like this 'x => x.Property' or this 'x => class.Property'</param>\n        /// <returns>The name of the property</returns>\n        public static PropertyInfo GetPropertyInfo<TProperty, TClass>(Expression<Func<TClass, TProperty>> memberLamda)\n        {\n            if (memberLamda == null)\n                throw new ArgumentNullException(nameof(memberLamda));\n\n            if (memberLamda.Body is not MemberExpression memberSelectorExpression)\n                throw new ArgumentException(\n                    \"You must pass a lambda of the form: 'x => x.Property' or 'x => class.Property'\",\n                    nameof(memberLamda));\n\n            var property = memberSelectorExpression.Member as PropertyInfo;\n            if (property == null)\n                throw new ArgumentException(\n                    \"You must pass a lambda of the form: 'x => x.Property' or 'x => class.Property'\",\n                    nameof(memberLamda));\n\n            return property;\n        }\n\n        /// <summary>\n        ///     Try to set specified property to the supplied object. Ignores setter access protection.\n        ///     Will throw an exception if the setter doesn't exist or any of the parameters is invalid.\n        /// </summary>\n        /// <typeparam name=\"TClass\">Type of a class that contains the property</typeparam>\n        /// <param name=\"classInstance\">Instance of the class that contains the property</param>\n        /// <param name=\"memberLamda\">You must pass a lambda formed like this 'x => x.Property' or this 'x => class.Property'</param>\n        /// <param name=\"value\">Value to set the property to.</param>\n        public static void SetPropertyValue<TClass>(TClass classInstance, Expression<Func<TClass, object>> memberLamda,\n            object value)\n        {\n            var memberSelectorExpression = memberLamda.Body as MemberExpression;\n            var property = memberSelectorExpression?.Member as PropertyInfo;\n            property?.SetValue(classInstance, value, null);\n        }\n    }\n}"
  },
  {
    "path": "source/NetSettingBinder/SettingBinder.Forms.cs",
    "content": "﻿using System;\nusing System.Configuration;\nusing System.Linq.Expressions;\nusing System.Windows.Forms;\n\nnamespace Klocman.Binding.Settings\n{\n    public partial class SettingBinder<TSettingClass> where TSettingClass : ApplicationSettingsBase\n    {\n        /// <summary>\n        ///     Control will update any changes to the settings store and receive updates to change accordingly.\n        ///     Best to tag using the parent form.\n        /// </summary>\n        /// <param name=\"sourceControl\">Control to bind the setting to</param>\n        /// <param name=\"targetSetting\">Lambda of style 'x => x.Property' or 'x => class.Property'</param>\n        /// <param name=\"tag\">Tag used for grouping</param>\n        /// <param name=\"clickingChangesChecked\">Adds an event handler to ToolStripMenuItem.Click that will flip its Checked property automatically.</param>\n        /// <exception cref=\"ArgumentException\">Invalid lambda format</exception>\n        public void BindControl(ToolStripMenuItem sourceControl, Expression<Func<TSettingClass, bool>> targetSetting,\n            object tag, bool clickingChangesChecked = true)\n        {\n            Bind(x => sourceControl.Checked = x, () => sourceControl.Checked,\n                eh => sourceControl.CheckedChanged += eh, eh => sourceControl.CheckedChanged -= eh,\n                targetSetting, tag);\n\n            sourceControl.Click += (x, y) => sourceControl.Checked = !sourceControl.Checked;\n        }\n\n        /// <summary>\n        ///     Control will update any changes to the settings store and receive updates to change accordingly.\n        ///     Best to tag using the parent form.\n        /// </summary>\n        /// <param name=\"sourceControl\">Control to bind the setting to</param>\n        /// <param name=\"targetSetting\">Lambda of style 'x => x.Property' or 'x => class.Property'</param>\n        /// <param name=\"tag\">Tag used for grouping</param>\n        /// <exception cref=\"ArgumentException\">Invalid lambda format</exception>\n        public void BindControl(ToolStripButton sourceControl, Expression<Func<TSettingClass, bool>> targetSetting,\n            object tag)\n        {\n            Bind(x => sourceControl.Checked = x, () => sourceControl.Checked,\n                eh => sourceControl.CheckedChanged += eh, eh => sourceControl.CheckedChanged -= eh,\n                targetSetting, tag);\n        }\n\n        /// <summary>\n        ///     Control will update any changes to the settings store and receive updates to change accordingly.\n        ///     Best to tag using the parent form.\n        /// </summary>\n        /// <param name=\"sourceControl\">Control to bind the setting to</param>\n        /// <param name=\"targetSetting\">Lambda of style 'x => x.Property' or 'x => class.Property'</param>\n        /// <param name=\"tag\">Tag used for grouping</param>\n        /// <exception cref=\"ArgumentException\">Invalid lambda format</exception>\n        public void BindControl(TextBox sourceControl, Expression<Func<TSettingClass, string>> targetSetting, object tag)\n        {\n            Bind(x => sourceControl.Text = x, () => sourceControl.Text,\n                eh => sourceControl.TextChanged += eh, eh => sourceControl.TextChanged -= eh,\n                targetSetting, tag);\n        }\n\n        /// <summary>\n        ///     Control will update any changes to the settings store and receive updates to change accordingly.\n        ///     Best to tag using the parent form.\n        /// </summary>\n        /// <param name=\"sourceControl\">Control to bind the setting to</param>\n        /// <param name=\"targetSetting\">Lambda of style 'x => x.Property' or 'x => class.Property'</param>\n        /// <param name=\"tag\">Tag used for grouping</param>\n        /// <exception cref=\"ArgumentException\">Invalid lambda format</exception>\n        public void BindControl(CheckBox sourceControl, Expression<Func<TSettingClass, bool>> targetSetting, object tag)\n        {\n            Bind(x => sourceControl.Checked = x, () => sourceControl.Checked,\n                eh => sourceControl.CheckedChanged += eh, eh => sourceControl.CheckedChanged -= eh,\n                targetSetting, tag);\n        }\n\n        /// <summary>\n        ///     Control will update any changes to the settings store and receive updates to change accordingly.\n        ///     Best to tag using the parent form.\n        ///     Clicking the ToolStripMenuItem will automatically change it's Checked property.\n        /// </summary>\n        /// <param name=\"sourceControl\">Control to bind the setting to</param>\n        /// <param name=\"targetSetting\">Lambda of style 'x => x.Property' or 'x => class.Property'</param>\n        /// <param name=\"tag\">Tag used for grouping</param>\n        /// <exception cref=\"ArgumentException\">Invalid lambda format</exception>\n        public void BindControl(NumericUpDown sourceControl, Expression<Func<TSettingClass, decimal>> targetSetting,\n            object tag)\n        {\n            Bind(x => sourceControl.Value = x, () => sourceControl.Value,\n                eh => sourceControl.ValueChanged += eh, eh => sourceControl.ValueChanged -= eh,\n                targetSetting, tag);\n        }\n    }\n}\n"
  },
  {
    "path": "source/NetSettingBinder/SettingBinder.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Configuration;\nusing System.Linq.Expressions;\nusing System.Reflection;\n\nnamespace Klocman.Binding.Settings\n{\n    /// <summary>\n    ///     Binding helper used for binding controls, variables and typed event handlers to custom Settings classes.\n    ///     It is realized using generics and does not require any boxing or string literals.\n    /// </summary>\n    /// <typeparam name=\"TSettingClass\">Type of your custom Settings class, it must inherit from ApplicationSettingsBase</typeparam>\n    public partial class SettingBinder<TSettingClass> where TSettingClass : ApplicationSettingsBase\n    {\n        private readonly LockedList<KeyValuePair<string, ISettingChangedHandlerEntry>> _eventEntries;\n\n        /// <summary>\n        ///     Create a new SettingBinder and hook into the specified class\n        /// </summary>\n        /// <param name=\"settingSet\">Custom Settings class this binder is hooked into</param>\n        public SettingBinder(TSettingClass settingSet)\n        {\n            _eventEntries = new LockedList<KeyValuePair<string, ISettingChangedHandlerEntry>>();\n            Settings = settingSet ?? throw new ArgumentNullException(nameof(settingSet));\n            Settings.PropertyChanged += PropertyChangedCallback;\n        }\n\n        /// <summary>\n        ///     Custom Settings class this manager is hooked into\n        /// </summary>\n        public TSettingClass Settings { get; }\n\n        /// <summary>\n        ///     Bind specified property inside of targetClass to the specified setting.\n        ///     Use event handler specified by eventHandlerName to get notifications of property changes.\n        /// </summary>\n        /// <typeparam name=\"TProperty\">Type of the property</typeparam>\n        /// <typeparam name=\"TPropertyClass\">Type of the class containing specified property</typeparam>\n        /// <param name=\"targetProperty\">Lambda of style 'x => x.Property' or 'x => class.Property'</param>\n        /// <param name=\"eventHandlerName\">Name of the event handler</param>\n        /// <param name=\"targetClass\">Instance of the target class</param>\n        /// <param name=\"selectedSetting\">Lambda of style 'x => x.Property' or 'x => class.Property'</param>\n        /// <param name=\"tag\">Tag used for grouping</param>\n        public void BindProperty<TProperty, TPropertyClass>(TPropertyClass targetClass,\n            Expression<Func<TPropertyClass, TProperty>> targetProperty,\n            string eventHandlerName, Expression<Func<TSettingClass, TProperty>> selectedSetting, object tag)\n            where TPropertyClass : class\n        {\n            var propertyInfo = ReflectionTools.GetPropertyInfo(targetProperty);\n            var eventInfo = typeof(TPropertyClass).GetEvent(eventHandlerName,\n                BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);\n\n            if (eventInfo == null)\n                throw new ArgumentException(@\"Event name is invalid or the event is not public\",\n                    nameof(eventHandlerName));\n\n            Bind(x => propertyInfo.SetValue(targetClass, x, null),\n                () => (TProperty)propertyInfo.GetValue(targetClass, null),\n                handler => eventInfo.AddEventHandler(targetClass, handler),\n                handler => eventInfo.RemoveEventHandler(targetClass, handler), selectedSetting, tag);\n        }\n\n        /// <summary>\n        ///     Bind specified property inside of targetClass to the specified setting.\n        ///     Use INotifyPropertyChanged.PropertyChanged event to get notifications of property changes.\n        /// </summary>\n        /// <typeparam name=\"TProperty\">Type of the property</typeparam>\n        /// <typeparam name=\"TPropertyClass\">Type of the class containing specified property</typeparam>\n        /// <param name=\"targetProperty\">Lambda of style 'x => x.Property' or 'x => class.Property'</param>\n        /// <param name=\"targetClass\">Instance of the target class implementing INotifyPropertyChanged</param>\n        /// <param name=\"selectedSetting\">Lambda of style 'x => x.Property' or 'x => class.Property'</param>\n        /// <param name=\"tag\">Tag used for grouping</param>\n        public void BindProperty<TProperty, TPropertyClass>(TPropertyClass targetClass,\n            Expression<Func<TPropertyClass, TProperty>> targetProperty,\n            Expression<Func<TSettingClass, TProperty>> selectedSetting, object tag)\n            where TPropertyClass : class, INotifyPropertyChanged\n        {\n            var propertyInfo = ReflectionTools.GetPropertyInfo(targetProperty);\n            var propertyName = propertyInfo.Name;\n            var eventInterface = (INotifyPropertyChanged)targetClass;\n\n            EventHandler handlerCallback = null;\n\n            void PropertyChangedHandler(object sender, PropertyChangedEventArgs args)\n            {\n                if (propertyName.Equals(args.PropertyName))\n                    handlerCallback?.Invoke(sender, args);\n            }\n\n            Bind(x => propertyInfo.SetValue(targetClass, x, null),\n                () => (TProperty)propertyInfo.GetValue(targetClass, null),\n                handler =>\n                {\n                    handlerCallback = handler;\n                    eventInterface.PropertyChanged += PropertyChangedHandler;\n                },\n                handler =>\n                {\n                    eventInterface.PropertyChanged -= PropertyChangedHandler;\n                },\n                selectedSetting,\n                tag);\n        }\n\n        /// <summary>\n        ///     Manually bind to a setting\n        /// </summary>\n        /// <typeparam name=\"T\">Bound value type</typeparam>\n        /// <param name=\"setter\">Delegate used to set value of the external property</param>\n        /// <param name=\"getter\">Delegate used to get value of the external property</param>\n        /// <param name=\"registerEvent\">Delegate used to register to the notifying event of the external property</param>\n        /// <param name=\"unregisterEvent\">Delegate used to unregister from the notifying event of the external property</param>\n        /// <param name=\"targetSetting\">Lambda of style 'x => x.Property' or 'x => class.Property'</param>\n        /// <param name=\"tag\">Tag used for grouping</param>\n        public void Bind<T>(Action<T> setter, Func<T> getter,\n            Action<EventHandler> registerEvent, Action<EventHandler> unregisterEvent,\n            Expression<Func<TSettingClass, T>> targetSetting, object tag)\n        {\n            var property = ReflectionTools.GetPropertyInfo(targetSetting);\n\n            void CheckedChanged(object x, EventArgs y)\n            {\n                property.SetValue(Settings, getter(), null);\n            }\n\n            registerEvent(CheckedChanged);\n\n            void SettingChanged(object x, SettingChangedEventArgs<T> y)\n            {\n                var remoteValue = getter();\n                if ((remoteValue != null && !remoteValue.Equals(y.NewValue)) || (remoteValue == null && y.NewValue != null))\n                {\n                    unregisterEvent(CheckedChanged);\n                    setter(y.NewValue);\n                    registerEvent(CheckedChanged);\n                }\n            }\n\n            Subscribe(SettingChanged, targetSetting, tag);\n        }\n\n        /// <summary>\n        ///     Create event handler that will automatically update target property in target class when the specified setting\n        ///     changes.\n        /// </summary>\n        /// <typeparam name=\"TProperty\">Type of the property</typeparam>\n        /// <typeparam name=\"TPropertyClass\">Type of the class containing specified property</typeparam>\n        /// <param name=\"targetProperty\">\n        ///     The property to be updated when setting changes. Lambda of style 'x => x.Property' or 'x\n        ///     => class.Property'\n        /// </param>\n        /// <param name=\"targetClass\">Instance of the class with the property to be updated</param>\n        /// <param name=\"selectedSetting\">Lambda of style 'x => x.Property' or 'x => class.Property'</param>\n        /// <param name=\"tag\">Tag used for grouping</param>\n        public void Subscribe<TProperty, TPropertyClass>(TPropertyClass targetClass,\n            Expression<Func<TPropertyClass, TProperty>> targetProperty,\n            Expression<Func<TSettingClass, TProperty>> selectedSetting, object tag)\n        {\n            var property = ReflectionTools.GetPropertyInfo(targetProperty);\n\n            Subscribe((sender, args) => property.SetValue(targetClass, args.NewValue, null), selectedSetting, tag);\n        }\n\n        /// <summary>\n        ///     Register event handler for the chosen property and tag it.\n        /// </summary>\n        /// <typeparam name=\"TProperty\">Type of the property</typeparam>\n        /// <param name=\"handler\">Handler to register</param>\n        /// <param name=\"selectedSetting\">Lambda of style 'x => x.Property' or 'x => class.Property'</param>\n        /// <param name=\"tag\">Tag used for grouping</param>\n        public void Subscribe<TProperty>(SettingChangedEventHandler<TProperty> handler,\n            Expression<Func<TSettingClass, TProperty>> selectedSetting, object tag)\n        {\n            var name = ReflectionTools.GetPropertyName(selectedSetting);\n            _eventEntries.Add(new KeyValuePair<string, ISettingChangedHandlerEntry>(name,\n                new SettingChangedHandlerEntry<TProperty>(handler, tag)));\n        }\n\n        /// <summary>\n        ///     Remove all handlers with the specified tag\n        /// </summary>\n        /// <param name=\"groupTag\">Tag used by group to remove</param>\n        public void RemoveHandlers(object groupTag)\n        {\n            _eventEntries.RemoveAll(pair => Equals(pair.Value.Tag, groupTag));\n        }\n\n        /// <summary>\n        ///     Send property changed events to all registered handlers\n        ///     Warning: Do not rely on this firing xyzChanged events as controls and such \n        ///     might not fire them if the value doesn't actually change.\n        ///     change.\n        /// </summary>\n        public void SendUpdates()\n        {\n            foreach (var entry in _eventEntries)\n            {\n                entry.Value.SendEvent(Settings[entry.Key]);\n            }\n        }\n\n        /// <summary>\n        ///     Send property changed events to the whole group.\n        ///     Warning: Do not rely on this firing xyzChanged events as controls and such \n        ///     might not fire them if the value doesn't actually change.\n        /// </summary>\n        /// <param name=\"groupTag\">Tag used by group to update</param>\n        public void SendUpdates(object groupTag)\n        {\n            foreach (var entry in _eventEntries)\n            {\n                if (Equals(entry.Value.Tag, groupTag))\n                {\n                    entry.Value.SendEvent(Settings[entry.Key]);\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Event handler registered to the custom Settings class\n        /// </summary>\n        private void PropertyChangedCallback(object sender, PropertyChangedEventArgs e)\n        {\n            foreach (var entry in _eventEntries)\n            {\n                if (entry.Key.Equals(e.PropertyName))\n                {\n                    entry.Value.SendEvent(Settings[e.PropertyName]);\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/NetSettingBinder/SettingChangedEventArgs.cs",
    "content": "﻿using System;\n\nnamespace Klocman.Binding.Settings\n{\n    /// <summary>\n    ///     EventArgs used by the SettingBinder to announce setting changes\n    /// </summary>\n    /// <typeparam name=\"T\">Type of the setting that was changed</typeparam>\n    public class SettingChangedEventArgs<T> : EventArgs\n    {\n        internal SettingChangedEventArgs(T value)\n        {\n            if (value == null)\n                throw new ArgumentNullException(nameof(value));\n            NewValue = value;\n        }\n\n        /// <summary>\n        ///     New value of the changed setting\n        /// </summary>\n        public T NewValue { get; }\n    }\n}"
  },
  {
    "path": "source/NetSettingBinder/SettingChangedEventHandler.cs",
    "content": "namespace Klocman.Binding.Settings\n{\n    public delegate void SettingChangedEventHandler<TProperty>(\n        object sender, SettingChangedEventArgs<TProperty> args);\n}"
  },
  {
    "path": "source/NetSettingBinder/SettingChangedHandlerEntry.cs",
    "content": "using System;\n\nnamespace Klocman.Binding.Settings\n{\n    /// <summary>\n    ///     This class contains the information required to send the event back to the subscriber\n    /// </summary>\n    internal sealed class SettingChangedHandlerEntry<T> : ISettingChangedHandlerEntry\n    {\n        internal SettingChangedHandlerEntry(SettingChangedEventHandler<T> handler, object tag)\n        {\n            Handler = handler ?? throw new ArgumentNullException(nameof(handler));\n            Tag = tag ?? throw new ArgumentNullException(nameof(tag));\n        }\n\n        private SettingChangedEventHandler<T> Handler { get; }\n        public object Tag { get; set; }\n\n        /// <summary>\n        ///     Implemented explicitly to hide it from outside access\n        /// </summary>\n        void ISettingChangedHandlerEntry.SendEvent(object value)\n        {\n            Handler(this, new SettingChangedEventArgs<T>((T) value));\n        }\n    }\n}"
  },
  {
    "path": "source/ObjectListView/CellEditing/CellEditKeyEngine.cs",
    "content": "﻿/*\r\n * CellEditKeyEngine - A engine that allows the behaviour of arbitrary keys to be configured\r\n *\r\n * Author: Phillip Piper\r\n * Date: 3-March-2011 10:53 pm\r\n *\r\n * Change log:\r\n * v2.8\r\n * 2014-05-30  JPP  - When a row is disabled, skip over it when looking for another cell to edit\r\n * v2.5\r\n * 2012-04-14  JPP  - Fixed bug where, on a OLV with only a single editable column, tabbing\r\n *                    to change rows would edit the cell above rather than the cell below\r\n *                    the cell being edited.\r\n * 2.5\r\n * 2011-03-03  JPP  - First version\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware {\r\n    /// <summary>\r\n    /// Indicates the behavior of a key when a cell \"on the edge\" is being edited.\r\n    /// and the normal behavior of that key would exceed the edge. For example,\r\n    /// for a key that normally moves one column to the left, the \"edge\" would be \r\n    /// the left most column, since the normal action of the key cannot be taken\r\n    /// (since there are no more columns to the left).\r\n    /// </summary>\r\n    public enum CellEditAtEdgeBehaviour {\r\n        /// <summary>\r\n        /// The key press will be ignored\r\n        /// </summary>\r\n        Ignore,\r\n\r\n        /// <summary>\r\n        /// The key press will result in the cell editing wrapping to the \r\n        /// cell on the opposite edge.\r\n        /// </summary>\r\n        Wrap,\r\n\r\n        /// <summary>\r\n        /// The key press will wrap, but the column will be changed to the \r\n        /// appropiate adjacent column. This only makes sense for keys where\r\n        /// the normal action is ChangeRow.\r\n        /// </summary>\r\n        ChangeColumn,\r\n\r\n        /// <summary>\r\n        /// The key press will wrap, but the row will be changed to the \r\n        /// appropiate adjacent row. This only makes sense for keys where\r\n        /// the normal action is ChangeColumn.\r\n        /// </summary>        \r\n        ChangeRow,\r\n\r\n        /// <summary>\r\n        /// The key will result in the current edit operation being ended.\r\n        /// </summary>\r\n        EndEdit\r\n    };\r\n\r\n    /// <summary>\r\n    /// Indicates the normal behaviour of a key when used during a cell edit\r\n    /// operation.\r\n    /// </summary>\r\n    public enum CellEditCharacterBehaviour {\r\n        /// <summary>\r\n        /// The key press will be ignored\r\n        /// </summary>\r\n        Ignore,\r\n\r\n        /// <summary>\r\n        /// The key press will end the current edit and begin an edit\r\n        /// operation on the next editable cell to the left.\r\n        /// </summary>\r\n        ChangeColumnLeft,\r\n\r\n        /// <summary>\r\n        /// The key press will end the current edit and begin an edit\r\n        /// operation on the next editable cell to the right.\r\n        /// </summary>\r\n        ChangeColumnRight,\r\n\r\n        /// <summary>\r\n        /// The key press will end the current edit and begin an edit\r\n        /// operation on the row above.\r\n        /// </summary>\r\n        ChangeRowUp,\r\n\r\n        /// <summary>\r\n        /// The key press will end the current edit and begin an edit\r\n        /// operation on the row below\r\n        /// </summary>\r\n        ChangeRowDown,\r\n\r\n        /// <summary>\r\n        /// The key press will cancel the current edit\r\n        /// </summary>\r\n        CancelEdit,\r\n\r\n        /// <summary>\r\n        /// The key press will finish the current edit operation\r\n        /// </summary>\r\n        EndEdit,\r\n\r\n        /// <summary>\r\n        /// Custom verb that can be used for specialized actions.\r\n        /// </summary>\r\n        CustomVerb1,\r\n\r\n        /// <summary>\r\n        /// Custom verb that can be used for specialized actions.\r\n        /// </summary>\r\n        CustomVerb2,\r\n\r\n        /// <summary>\r\n        /// Custom verb that can be used for specialized actions.\r\n        /// </summary>\r\n        CustomVerb3,\r\n\r\n        /// <summary>\r\n        /// Custom verb that can be used for specialized actions.\r\n        /// </summary>\r\n        CustomVerb4,\r\n\r\n        /// <summary>\r\n        /// Custom verb that can be used for specialized actions.\r\n        /// </summary>\r\n        CustomVerb5,\r\n\r\n        /// <summary>\r\n        /// Custom verb that can be used for specialized actions.\r\n        /// </summary>\r\n        CustomVerb6,\r\n\r\n        /// <summary>\r\n        /// Custom verb that can be used for specialized actions.\r\n        /// </summary>\r\n        CustomVerb7,\r\n\r\n        /// <summary>\r\n        /// Custom verb that can be used for specialized actions.\r\n        /// </summary>\r\n        CustomVerb8,\r\n\r\n        /// <summary>\r\n        /// Custom verb that can be used for specialized actions.\r\n        /// </summary>\r\n        CustomVerb9,\r\n\r\n        /// <summary>\r\n        /// Custom verb that can be used for specialized actions.\r\n        /// </summary>\r\n        CustomVerb10,\r\n    };\r\n\r\n    /// <summary>\r\n    /// Instances of this class handle key presses during a cell edit operation.\r\n    /// </summary>\r\n    public class CellEditKeyEngine {\r\n\r\n        #region Public interface\r\n\r\n        /// <summary>\r\n        /// Sets the behaviour of a given key\r\n        /// </summary>\r\n        /// <param name=\"key\"></param>\r\n        /// <param name=\"normalBehaviour\"></param>\r\n        /// <param name=\"atEdgeBehaviour\"></param>\r\n        public virtual void SetKeyBehaviour(Keys key, CellEditCharacterBehaviour normalBehaviour, CellEditAtEdgeBehaviour atEdgeBehaviour) {\r\n            CellEditKeyMap[key] = normalBehaviour;\r\n            CellEditKeyAtEdgeBehaviourMap[key] = atEdgeBehaviour;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a key press\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"keyData\"></param>\r\n        /// <returns>True if the key was completely handled.</returns>\r\n        public virtual bool HandleKey(ObjectListView olv, Keys keyData) {\r\n            if (olv == null) throw new ArgumentNullException(\"olv\");\r\n\r\n            CellEditCharacterBehaviour behaviour;\r\n            if (!CellEditKeyMap.TryGetValue(keyData, out behaviour))\r\n                return false;\r\n\r\n            ListView = olv;\r\n\r\n            switch (behaviour) {\r\n            case CellEditCharacterBehaviour.Ignore:\r\n                break;\r\n            case CellEditCharacterBehaviour.CancelEdit:\r\n                HandleCancelEdit();\r\n                break;\r\n            case CellEditCharacterBehaviour.EndEdit:\r\n                HandleEndEdit();\r\n                break;\r\n            case CellEditCharacterBehaviour.ChangeColumnLeft:\r\n            case CellEditCharacterBehaviour.ChangeColumnRight:\r\n                HandleColumnChange(keyData, behaviour);\r\n                break;\r\n            case CellEditCharacterBehaviour.ChangeRowDown:\r\n            case CellEditCharacterBehaviour.ChangeRowUp:\r\n                HandleRowChange(keyData, behaviour);\r\n                break;\r\n            default:\r\n                return HandleCustomVerb(keyData, behaviour);\r\n            }\r\n\r\n            return true;\r\n        }\r\n        \r\n        #endregion\r\n\r\n        #region Implementation properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the ObjectListView on which the current key is being handled.\r\n        /// This cannot be null.\r\n        /// </summary>\r\n        protected ObjectListView ListView {\r\n            get { return listView; }\r\n            set { listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Gets the row of the cell that is currently being edited\r\n        /// </summary>\r\n        protected OLVListItem ItemBeingEdited {\r\n            get {\r\n                return (ListView == null || ListView.CellEditEventArgs == null) ? null : ListView.CellEditEventArgs.ListViewItem;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the index of the column of the cell that is being edited\r\n        /// </summary>\r\n        protected int SubItemIndexBeingEdited {\r\n            get {\r\n                return (ListView == null || ListView.CellEditEventArgs == null) ? -1 : ListView.CellEditEventArgs.SubItemIndex;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the map that remembers the normal behaviour of keys\r\n        /// </summary>\r\n        protected IDictionary<Keys, CellEditCharacterBehaviour> CellEditKeyMap {\r\n            get {\r\n                if (cellEditKeyMap == null)\r\n                    InitializeCellEditKeyMaps();\r\n                return cellEditKeyMap;\r\n            }\r\n            set {\r\n                cellEditKeyMap = value;\r\n            }\r\n        }\r\n        private IDictionary<Keys, CellEditCharacterBehaviour> cellEditKeyMap;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the map that remembers the desired behaviour of keys \r\n        /// on edge cases.\r\n        /// </summary>\r\n        protected IDictionary<Keys, CellEditAtEdgeBehaviour> CellEditKeyAtEdgeBehaviourMap {\r\n            get {\r\n                if (cellEditKeyAtEdgeBehaviourMap == null)\r\n                    InitializeCellEditKeyMaps();\r\n                return cellEditKeyAtEdgeBehaviourMap;\r\n            }\r\n            set {\r\n                cellEditKeyAtEdgeBehaviourMap = value;\r\n            }\r\n        }\r\n        private IDictionary<Keys, CellEditAtEdgeBehaviour> cellEditKeyAtEdgeBehaviourMap;\r\n\r\n        #endregion\r\n\r\n        #region Initialization\r\n\r\n        /// <summary>\r\n        /// Setup the default key mapping\r\n        /// </summary>\r\n        protected virtual void InitializeCellEditKeyMaps() {\r\n            cellEditKeyMap = new Dictionary<Keys, CellEditCharacterBehaviour>();\r\n            cellEditKeyMap[Keys.Escape] = CellEditCharacterBehaviour.CancelEdit;\r\n            cellEditKeyMap[Keys.Return] = CellEditCharacterBehaviour.EndEdit;\r\n            cellEditKeyMap[Keys.Enter] = CellEditCharacterBehaviour.EndEdit;\r\n            cellEditKeyMap[Keys.Tab] = CellEditCharacterBehaviour.ChangeColumnRight;\r\n            cellEditKeyMap[Keys.Tab | Keys.Shift] = CellEditCharacterBehaviour.ChangeColumnLeft;\r\n            cellEditKeyMap[Keys.Left | Keys.Alt] = CellEditCharacterBehaviour.ChangeColumnLeft;\r\n            cellEditKeyMap[Keys.Right | Keys.Alt] = CellEditCharacterBehaviour.ChangeColumnRight;\r\n            cellEditKeyMap[Keys.Up | Keys.Alt] = CellEditCharacterBehaviour.ChangeRowUp;\r\n            cellEditKeyMap[Keys.Down | Keys.Alt] = CellEditCharacterBehaviour.ChangeRowDown;\r\n\r\n            cellEditKeyAtEdgeBehaviourMap = new Dictionary<Keys, CellEditAtEdgeBehaviour>();\r\n            cellEditKeyAtEdgeBehaviourMap[Keys.Tab] = CellEditAtEdgeBehaviour.Wrap;\r\n            cellEditKeyAtEdgeBehaviourMap[Keys.Tab | Keys.Shift] = CellEditAtEdgeBehaviour.Wrap;\r\n            cellEditKeyAtEdgeBehaviourMap[Keys.Left | Keys.Alt] = CellEditAtEdgeBehaviour.Wrap;\r\n            cellEditKeyAtEdgeBehaviourMap[Keys.Right | Keys.Alt] = CellEditAtEdgeBehaviour.Wrap;\r\n            cellEditKeyAtEdgeBehaviourMap[Keys.Up | Keys.Alt] = CellEditAtEdgeBehaviour.ChangeColumn;\r\n            cellEditKeyAtEdgeBehaviourMap[Keys.Down | Keys.Alt] = CellEditAtEdgeBehaviour.ChangeColumn;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Command handling\r\n\r\n        /// <summary>\r\n        /// Handle the end edit command\r\n        /// </summary>\r\n        protected virtual void HandleEndEdit() {\r\n            ListView.PossibleFinishCellEditing();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the cancel edit command\r\n        /// </summary>\r\n        protected virtual void HandleCancelEdit() {\r\n            ListView.CancelCellEdit();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Placeholder that subclasses can override to handle any custom verbs\r\n        /// </summary>\r\n        /// <param name=\"keyData\"></param>\r\n        /// <param name=\"behaviour\"></param>\r\n        /// <returns></returns>\r\n        protected virtual bool HandleCustomVerb(Keys keyData, CellEditCharacterBehaviour behaviour) {\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a change row command\r\n        /// </summary>\r\n        /// <param name=\"keyData\"></param>\r\n        /// <param name=\"behaviour\"></param>\r\n        protected virtual void HandleRowChange(Keys keyData, CellEditCharacterBehaviour behaviour) {\r\n            // If we couldn't finish editing the current cell, don't try to move it\r\n            if (!ListView.PossibleFinishCellEditing())\r\n                return;\r\n\r\n            OLVListItem olvi = ItemBeingEdited;\r\n            int subItemIndex = SubItemIndexBeingEdited;\r\n            bool isGoingUp = behaviour == CellEditCharacterBehaviour.ChangeRowUp;\r\n\r\n            // Try to find a row above (or below) the currently edited cell\r\n            // If we find one, start editing it and we're done.\r\n            OLVListItem adjacentOlvi = GetAdjacentItemOrNull(olvi, isGoingUp);\r\n            if (adjacentOlvi != null) {\r\n                StartCellEditIfDifferent(adjacentOlvi, subItemIndex);\r\n                return;\r\n            }\r\n\r\n            // There is no adjacent row in the direction we want, so we must be on an edge.\r\n            CellEditAtEdgeBehaviour atEdgeBehaviour;\r\n            if (!CellEditKeyAtEdgeBehaviourMap.TryGetValue(keyData, out atEdgeBehaviour))\r\n                atEdgeBehaviour = CellEditAtEdgeBehaviour.Wrap;\r\n            switch (atEdgeBehaviour) {\r\n            case CellEditAtEdgeBehaviour.Ignore:\r\n                break;\r\n            case CellEditAtEdgeBehaviour.EndEdit:\r\n                ListView.PossibleFinishCellEditing();\r\n                break;\r\n            case CellEditAtEdgeBehaviour.Wrap:\r\n                adjacentOlvi = GetAdjacentItemOrNull(null, isGoingUp);\r\n                StartCellEditIfDifferent(adjacentOlvi, subItemIndex);\r\n                break;\r\n            case CellEditAtEdgeBehaviour.ChangeColumn:\r\n                // Figure out the next editable column\r\n                List<OLVColumn> editableColumnsInDisplayOrder = EditableColumnsInDisplayOrder;\r\n                int displayIndex = Math.Max(0, editableColumnsInDisplayOrder.IndexOf(ListView.GetColumn(subItemIndex)));\r\n                if (isGoingUp)\r\n                    displayIndex = (editableColumnsInDisplayOrder.Count + displayIndex - 1) % editableColumnsInDisplayOrder.Count;\r\n                else\r\n                    displayIndex = (displayIndex + 1) % editableColumnsInDisplayOrder.Count;\r\n                subItemIndex = editableColumnsInDisplayOrder[displayIndex].Index;\r\n\r\n                // Wrap to the next row and start the cell edit\r\n                adjacentOlvi = GetAdjacentItemOrNull(null, isGoingUp);\r\n                StartCellEditIfDifferent(adjacentOlvi, subItemIndex);\r\n                break;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a change column command\r\n        /// </summary>\r\n        /// <param name=\"keyData\"></param>\r\n        /// <param name=\"behaviour\"></param>\r\n        protected virtual void HandleColumnChange(Keys keyData, CellEditCharacterBehaviour behaviour)\r\n        {\r\n            // If we couldn't finish editing the current cell, don't try to move it\r\n            if (!ListView.PossibleFinishCellEditing())\r\n                return;\r\n\r\n            // Changing columns only works in details mode\r\n            if (ListView.View != View.Details)\r\n                return;\r\n\r\n            List<OLVColumn> editableColumns = EditableColumnsInDisplayOrder;\r\n            OLVListItem olvi = ItemBeingEdited;\r\n            int displayIndex = Math.Max(0,\r\n                editableColumns.IndexOf(ListView.GetColumn(SubItemIndexBeingEdited)));\r\n            bool isGoingLeft = behaviour == CellEditCharacterBehaviour.ChangeColumnLeft;\r\n\r\n            // Are we trying to continue past one of the edges?\r\n            if ((isGoingLeft && displayIndex == 0) ||\r\n                (!isGoingLeft && displayIndex == editableColumns.Count - 1))\r\n            {\r\n                // Yes, so figure out our at edge behaviour\r\n                CellEditAtEdgeBehaviour atEdgeBehaviour;\r\n                if (!CellEditKeyAtEdgeBehaviourMap.TryGetValue(keyData, out atEdgeBehaviour))\r\n                    atEdgeBehaviour = CellEditAtEdgeBehaviour.Wrap;\r\n                switch (atEdgeBehaviour)\r\n                {\r\n                    case CellEditAtEdgeBehaviour.Ignore:\r\n                        return;\r\n                    case CellEditAtEdgeBehaviour.EndEdit:\r\n                        HandleEndEdit();\r\n                        return;\r\n                    case CellEditAtEdgeBehaviour.ChangeRow:\r\n                    case CellEditAtEdgeBehaviour.Wrap:\r\n                        if (atEdgeBehaviour == CellEditAtEdgeBehaviour.ChangeRow)\r\n                            olvi = GetAdjacentItem(olvi, isGoingLeft && displayIndex == 0);\r\n                        if (isGoingLeft)\r\n                            displayIndex = editableColumns.Count - 1;\r\n                        else\r\n                            displayIndex = 0;\r\n                        break;\r\n                }\r\n            }\r\n            else\r\n            {\r\n                if (isGoingLeft)\r\n                    displayIndex -= 1;\r\n                else\r\n                    displayIndex += 1;\r\n            }\r\n\r\n            int subItemIndex = editableColumns[displayIndex].Index;\r\n            StartCellEditIfDifferent(olvi, subItemIndex);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Utilities\r\n\r\n        /// <summary>\r\n        /// Start editing the indicated cell if that cell is not already being edited\r\n        /// </summary>\r\n        /// <param name=\"olvi\">The row to edit</param>\r\n        /// <param name=\"subItemIndex\">The cell within that row to edit</param>\r\n        protected void StartCellEditIfDifferent(OLVListItem olvi, int subItemIndex) {\r\n            if (ItemBeingEdited == olvi && SubItemIndexBeingEdited == subItemIndex)\r\n                return;\r\n\r\n            ListView.EnsureVisible(olvi.Index);\r\n            ListView.StartCellEdit(olvi, subItemIndex);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the adjacent item to the given item in the given direction.\r\n        /// If that item is disabled, continue in that direction until an enabled item is found.\r\n        /// </summary>\r\n        /// <param name=\"olvi\">The row whose neighbour is sought</param>\r\n        /// <param name=\"up\">The direction of the adjacentness</param>\r\n        /// <returns>An OLVListView adjacent to the given item, or null if there are no more enabled items in that direction.</returns>\r\n        protected OLVListItem GetAdjacentItemOrNull(OLVListItem olvi, bool up) {\r\n            OLVListItem item = up ? ListView.GetPreviousItem(olvi) : ListView.GetNextItem(olvi);\r\n            while (item != null && !item.Enabled)\r\n                item = up ? ListView.GetPreviousItem(item) : ListView.GetNextItem(item);\r\n            return item;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the adjacent item to the given item in the given direction, wrapping if needed.\r\n        /// </summary>\r\n        /// <param name=\"olvi\">The row whose neighbour is sought</param>\r\n        /// <param name=\"up\">The direction of the adjacentness</param>\r\n        /// <returns>An OLVListView adjacent to the given item, or null if there are no more items in that direction.</returns>\r\n        protected OLVListItem GetAdjacentItem(OLVListItem olvi, bool up) {\r\n            return GetAdjacentItemOrNull(olvi, up) ?? GetAdjacentItemOrNull(null, up);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets a collection of columns that are editable in the order they are shown to the user\r\n        /// </summary>\r\n        protected List<OLVColumn> EditableColumnsInDisplayOrder {\r\n            get {\r\n                List<OLVColumn> editableColumnsInDisplayOrder = new List<OLVColumn>();\r\n                foreach (OLVColumn x in ListView.ColumnsInDisplayOrder)\r\n                    if (x.IsEditable)\r\n                        editableColumnsInDisplayOrder.Add(x);\r\n                return editableColumnsInDisplayOrder;\r\n            }\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/CellEditing/CellEditors.cs",
    "content": "/*\r\n * CellEditors - Several slightly modified controls that are used as celleditors within ObjectListView.\r\n *\r\n * Author: Phillip Piper\r\n * Date: 20/10/2008 5:15 PM\r\n *\r\n * Change log:\r\n * v2.6\r\n * 2012-08-02   JPP  - Make most editors public so they can be reused/subclassed\r\n * v2.3\r\n * 2009-08-13   JPP  - Standardized code formatting\r\n * v2.2.1\r\n * 2008-01-18   JPP  - Added special handling for enums\r\n * 2008-01-16   JPP  - Added EditorRegistry\r\n * v2.0.1\r\n * 2008-10-20   JPP  - Separated from ObjectListView.cs\r\n * \r\n * Copyright (C) 2006-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Drawing;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// These items allow combo boxes to remember a value and its description.\r\n    /// </summary>\r\n    public class ComboBoxItem\r\n    {\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"key\"></param>\r\n        /// <param name=\"description\"></param>\r\n        public ComboBoxItem(Object key, String description) {\r\n            this.key = key;\r\n            this.description = description;\r\n        }\r\n        private readonly String description;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public Object Key {\r\n            get { return key; }\r\n        }\r\n        private readonly Object key;\r\n\r\n        /// <summary>\r\n        /// Returns a string that represents the current object.\r\n        /// </summary>\r\n        /// <returns>\r\n        /// A string that represents the current object.\r\n        /// </returns>\r\n        /// <filterpriority>2</filterpriority>\r\n        public override string ToString() {\r\n            return description;\r\n        }\r\n    } \r\n\r\n    //-----------------------------------------------------------------------\r\n    // Cell editors\r\n    // These classes are simple cell editors that make it easier to get and set\r\n    // the value that the control is showing.\r\n    // In many cases, you can intercept the CellEditStarting event to \r\n    // change the characteristics of the editor. For example, changing\r\n    // the acceptable range for a numeric editor or changing the strings\r\n    // that respresent true and false values for a boolean editor.\r\n\r\n    /// <summary>\r\n    /// This editor shows and auto completes values from the given listview column.\r\n    /// </summary>\r\n    [ToolboxItem(false)]\r\n    public class AutoCompleteCellEditor : ComboBox\r\n    {\r\n        /// <summary>\r\n        /// Create an AutoCompleteCellEditor\r\n        /// </summary>\r\n        /// <param name=\"lv\"></param>\r\n        /// <param name=\"column\"></param>\r\n        public AutoCompleteCellEditor(ObjectListView lv, OLVColumn column) {\r\n            DropDownStyle = ComboBoxStyle.DropDown;\r\n\r\n            Dictionary<String, bool> alreadySeen = new Dictionary<string, bool>();\r\n            for (int i = 0; i < Math.Min(lv.GetItemCount(), 1000); i++) {\r\n                String str = column.GetStringValue(lv.GetModelObject(i));\r\n                if (!alreadySeen.ContainsKey(str)) {\r\n                    Items.Add(str);\r\n                    alreadySeen[str] = true;\r\n                }\r\n            }\r\n\r\n            Sorted = true;\r\n            AutoCompleteSource = AutoCompleteSource.ListItems;\r\n            AutoCompleteMode = AutoCompleteMode.Append;\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// This combo box is specialised to allow editing of an enum.\r\n    /// </summary>\r\n    [ToolboxItem(false)]\r\n    public class EnumCellEditor : ComboBox\r\n    {\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"type\"></param>\r\n        public EnumCellEditor(Type type) {\r\n            DropDownStyle = ComboBoxStyle.DropDownList;\r\n            ValueMember = \"Key\";\r\n\r\n            ArrayList values = new ArrayList();\r\n            foreach (object value in Enum.GetValues(type))\r\n                values.Add(new ComboBoxItem(value, Enum.GetName(type, value)));\r\n\r\n            DataSource = values;\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// This editor simply shows and edits integer values.\r\n    /// </summary>\r\n    [ToolboxItem(false)]\r\n    public class IntUpDown : NumericUpDown\r\n    {\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public IntUpDown() {\r\n            DecimalPlaces = 0;\r\n            Minimum = -9999999;\r\n            Maximum = 9999999;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the value shown by this editor\r\n        /// </summary>\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        new public int Value\r\n        {\r\n            get { return Decimal.ToInt32(base.Value); }\r\n            set { base.Value = new Decimal(value); }\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// This editor simply shows and edits unsigned integer values.\r\n    /// </summary>\r\n    /// <remarks>This class can't be made public because unsigned int is not a\r\n    /// CLS-compliant type. If you want to use, just copy the code to this class\r\n    /// into your project and use it from there.</remarks>\r\n    [ToolboxItem(false)]\r\n    internal class UintUpDown : NumericUpDown\r\n    {\r\n        public UintUpDown() {\r\n            DecimalPlaces = 0;\r\n            Minimum = 0;\r\n            Maximum = 9999999;\r\n        }\r\n\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        new public uint Value\r\n        {\r\n            get { return Decimal.ToUInt32(base.Value); }\r\n            set { base.Value = new Decimal(value); }\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// This editor simply shows and edits boolean values.\r\n    /// </summary>\r\n    [ToolboxItem(false)]\r\n    public class BooleanCellEditor : ComboBox\r\n    {\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public BooleanCellEditor() {\r\n            DropDownStyle = ComboBoxStyle.DropDownList;\r\n            ValueMember = \"Key\";\r\n\r\n            ArrayList values = new ArrayList();\r\n            values.Add(new ComboBoxItem(false, \"False\"));\r\n            values.Add(new ComboBoxItem(true, \"True\"));\r\n\r\n            DataSource = values;\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// This editor simply shows and edits boolean values using a checkbox\r\n    /// </summary>\r\n    [ToolboxItem(false)]\r\n    public class BooleanCellEditor2 : CheckBox\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the value shown by this editor\r\n        /// </summary>\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public bool? Value {\r\n            get {\r\n                switch (CheckState) {\r\n                    case CheckState.Checked: return true;\r\n                    case CheckState.Indeterminate: return null;\r\n                    case CheckState.Unchecked: \r\n                    default: return false;\r\n                }\r\n            }\r\n            set {\r\n                if (value.HasValue) \r\n                    CheckState = value.Value ? CheckState.Checked : CheckState.Unchecked;\r\n                else\r\n                    CheckState = CheckState.Indeterminate;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets how the checkbox will be aligned\r\n        /// </summary>\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public new HorizontalAlignment TextAlign\r\n        {\r\n            get {\r\n                switch (CheckAlign) {\r\n                    case ContentAlignment.MiddleRight: return HorizontalAlignment.Right;\r\n                    case ContentAlignment.MiddleCenter: return HorizontalAlignment.Center;\r\n                    case ContentAlignment.MiddleLeft: \r\n                    default: return HorizontalAlignment.Left;\r\n                }\r\n            }\r\n            set {\r\n                switch (value) {\r\n                    case HorizontalAlignment.Left:\r\n                        CheckAlign = ContentAlignment.MiddleLeft;\r\n                        break;\r\n                    case HorizontalAlignment.Center:\r\n                        CheckAlign = ContentAlignment.MiddleCenter;\r\n                        break;\r\n                    case HorizontalAlignment.Right:\r\n                        CheckAlign = ContentAlignment.MiddleRight;\r\n                        break;\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// This editor simply shows and edits floating point values.\r\n    /// </summary>\r\n    /// <remarks>You can intercept the CellEditStarting event if you want\r\n    /// to change the characteristics of the editor. For example, by increasing\r\n    /// the number of decimal places.</remarks>\r\n    [ToolboxItem(false)]\r\n    public class FloatCellEditor : NumericUpDown\r\n    {\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public FloatCellEditor() {\r\n            DecimalPlaces = 2;\r\n            Minimum = -9999999;\r\n            Maximum = 9999999;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the value shown by this editor\r\n        /// </summary>\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        new public double Value\r\n        {\r\n            get { return Convert.ToDouble(base.Value); }\r\n            set { base.Value = Convert.ToDecimal(value); }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/CellEditing/EditorRegistry.cs",
    "content": "﻿/*\r\n * EditorRegistry - A registry mapping types to cell editors.\r\n *\r\n * Author: Phillip Piper\r\n * Date: 6-March-2011 7:53 am\r\n *\r\n * Change log:\r\n * 2011-03-31  JPP  - Use OLVColumn.DataType if the value to be edited is null\r\n * 2011-03-06  JPP  - Separated from CellEditors.cs\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Windows.Forms;\r\nusing System.Reflection;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// A delegate that creates an editor for the given value\r\n    /// </summary>\r\n    /// <param name=\"model\">The model from which that value came</param>\r\n    /// <param name=\"column\">The column for which the editor is being created</param>\r\n    /// <param name=\"value\">A representative value of the type to be edited. This value may not be the exact\r\n    /// value for the column/model combination. It could be simply representative of\r\n    /// the appropriate type of value.</param>\r\n    /// <returns>A control which can edit the given value</returns>\r\n    public delegate Control EditorCreatorDelegate(Object model, OLVColumn column, Object value);\r\n\r\n    /// <summary>\r\n    /// An editor registry gives a way to decide what cell editor should be used to edit\r\n    /// the value of a cell. Programmers can register non-standard types and the control that \r\n    /// should be used to edit instances of that type. \r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>All ObjectListViews share the same editor registry.</para>\r\n    /// </remarks>\r\n    public class EditorRegistry {\r\n        #region Initializing\r\n\r\n        /// <summary>\r\n        /// Create an EditorRegistry\r\n        /// </summary>\r\n        public EditorRegistry() {\r\n            InitializeStandardTypes();\r\n        }\r\n\r\n        private void InitializeStandardTypes() {\r\n            Register(typeof(Boolean), typeof(BooleanCellEditor));\r\n            Register(typeof(Int16), typeof(IntUpDown));\r\n            Register(typeof(Int32), typeof(IntUpDown));\r\n            Register(typeof(Int64), typeof(IntUpDown));\r\n            Register(typeof(UInt16), typeof(UintUpDown));\r\n            Register(typeof(UInt32), typeof(UintUpDown));\r\n            Register(typeof(UInt64), typeof(UintUpDown));\r\n            Register(typeof(Single), typeof(FloatCellEditor));\r\n            Register(typeof(Double), typeof(FloatCellEditor));\r\n            Register(typeof(DateTime), delegate(Object model, OLVColumn column, Object value) {\r\n                DateTimePicker c = new DateTimePicker();\r\n                c.Format = DateTimePickerFormat.Short;\r\n                return c;\r\n            });\r\n            Register(typeof(Boolean), delegate(Object model, OLVColumn column, Object value) {\r\n                CheckBox c = new BooleanCellEditor2();\r\n                c.ThreeState = column.TriStateCheckBoxes;\r\n                return c;\r\n            });\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Registering\r\n\r\n        /// <summary>\r\n        /// Register that values of 'type' should be edited by instances of 'controlType'.\r\n        /// </summary>\r\n        /// <param name=\"type\">The type of value to be edited</param>\r\n        /// <param name=\"controlType\">The type of the Control that will edit values of 'type'</param>\r\n        /// <example>\r\n        /// ObjectListView.EditorRegistry.Register(typeof(Color), typeof(MySpecialColorEditor));\r\n        /// </example>\r\n        public void Register(Type type, Type controlType) {\r\n            Register(type, delegate(Object model, OLVColumn column, Object value) {\r\n                return controlType.InvokeMember(\"\", BindingFlags.CreateInstance, null, null, null) as Control;\r\n            });\r\n        }\r\n\r\n        /// <summary>\r\n        /// Register the given delegate so that it is called to create editors\r\n        /// for values of the given type\r\n        /// </summary>\r\n        /// <param name=\"type\">The type of value to be edited</param>\r\n        /// <param name=\"creator\">The delegate that will create a control that can edit values of 'type'</param>\r\n        /// <example>\r\n        /// ObjectListView.EditorRegistry.Register(typeof(Color), CreateColorEditor);\r\n        /// ...\r\n        /// public Control CreateColorEditor(Object model, OLVColumn column, Object value)\r\n        /// {\r\n        ///     return new MySpecialColorEditor();\r\n        /// }\r\n        /// </example>\r\n        public void Register(Type type, EditorCreatorDelegate creator) {\r\n            creatorMap[type] = creator;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Register a delegate that will be called to create an editor for values\r\n        /// that have not been handled.\r\n        /// </summary>\r\n        /// <param name=\"creator\">The delegate that will create a editor for all other types</param>\r\n        public void RegisterDefault(EditorCreatorDelegate creator) {\r\n            defaultCreator = creator;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Register a delegate that will be given a chance to create a control\r\n        /// before any other option is considered.\r\n        /// </summary>\r\n        /// <param name=\"creator\">The delegate that will create a control</param>\r\n        public void RegisterFirstChance(EditorCreatorDelegate creator) {\r\n            firstChanceCreator = creator;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove the registered handler for the given type\r\n        /// </summary>\r\n        /// <remarks>Does nothing if the given type doesn't exist</remarks>\r\n        /// <param name=\"type\">The type whose registration is to be removed</param>\r\n        public void Unregister(Type type) {\r\n            if (creatorMap.ContainsKey(type))\r\n                creatorMap.Remove(type);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Accessing\r\n\r\n        /// <summary>\r\n        /// Create and return an editor that is appropriate for the given value.\r\n        /// Return null if no appropriate editor can be found.\r\n        /// </summary>\r\n        /// <param name=\"model\">The model involved</param>\r\n        /// <param name=\"column\">The column to be edited</param>\r\n        /// <param name=\"value\">The value to be edited. This value may not be the exact\r\n        /// value for the column/model combination. It could be simply representative of\r\n        /// the appropriate type of value.</param>\r\n        /// <returns>A Control that can edit the given type of values</returns>\r\n        public Control GetEditor(Object model, OLVColumn column, Object value) {\r\n            Control editor;\r\n\r\n            // Give the first chance delegate a chance to decide\r\n            if (firstChanceCreator != null) {\r\n                editor = firstChanceCreator(model, column, value);\r\n                if (editor != null)\r\n                    return editor;\r\n            }\r\n\r\n            // Try to find a creator based on the type of the value (or the column)\r\n            Type type = value == null ? column.DataType : value.GetType();\r\n            if (type != null && creatorMap.ContainsKey(type)) {\r\n                editor = creatorMap[type](model, column, value);\r\n                if (editor != null)\r\n                    return editor;\r\n            }\r\n\r\n            // Enums without other processing get a special editor\r\n            if (value != null && value.GetType().IsEnum)\r\n                return CreateEnumEditor(value.GetType());\r\n\r\n            // Give any default creator a final chance\r\n            if (defaultCreator != null)\r\n                return defaultCreator(model, column, value);\r\n\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create and return an editor that will edit values of the given type\r\n        /// </summary>\r\n        /// <param name=\"type\">A enum type</param>\r\n        protected Control CreateEnumEditor(Type type) {\r\n            return new EnumCellEditor(type);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Private variables\r\n\r\n        private EditorCreatorDelegate firstChanceCreator;\r\n        private EditorCreatorDelegate defaultCreator;\r\n        private Dictionary<Type, EditorCreatorDelegate> creatorMap = new();\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/CustomDictionary.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Dictionary>\r\n  <Words>\r\n    <Recognized>\r\n      <Word>br</Word>\r\n      <Word>Canceled</Word>\r\n      <Word>Center</Word>\r\n      <Word>Color</Word>\r\n      <Word>Colors</Word>\r\n      <Word>f</Word>\r\n      <Word>fmt</Word>\r\n      <Word>g</Word>\r\n      <Word>gdi</Word>\r\n      <Word>hti</Word>\r\n      <Word>i</Word>\r\n      <Word>lightbox</Word>\r\n      <Word>lv</Word>\r\n      <Word>lvi</Word>\r\n      <Word>lvsi</Word>\r\n      <Word>m</Word>\r\n      <Word>multi</Word>\r\n      <Word>Munger</Word>\r\n      <Word>n</Word>\r\n      <Word>olv</Word>\r\n      <Word>olvi</Word>\r\n      <Word>p</Word>\r\n      <Word>parms</Word>\r\n      <Word>r</Word>\r\n      <Word>Renderer</Word>\r\n      <Word>s</Word>\r\n      <Word>SubItem</Word>\r\n      <Word>Unapply</Word>\r\n      <Word>Unpause</Word>\r\n      <Word>x</Word>\r\n      <Word>y</Word>\r\n    </Recognized>\r\n    <Deprecated>\r\n      <Term PreferredAlternate=\"EnterpriseServices\">ComPlus</Term>\r\n    </Deprecated>\r\n  </Words>\r\n  <Acronyms>\r\n    <CasingExceptions>\r\n      <Acronym>OLV</Acronym>\r\n    </CasingExceptions>\r\n  </Acronyms>\r\n</Dictionary>\r\n"
  },
  {
    "path": "source/ObjectListView/DataListView.cs",
    "content": "/*\r\n * DataListView - A data-bindable listview\r\n *\r\n * Author: Phillip Piper\r\n * Date: 27/09/2008 9:15 AM\r\n *\r\n * Change log:\r\n * 2015-02-02   JPP  - Made Unfreezing more efficient by removing a redundant BuildList() call\r\n * v2.6\r\n * 2011-02-27   JPP  - Moved most of the logic to DataSourceAdapter (where it\r\n *                     can be used by FastDataListView too)\r\n * v2.3\r\n * 2009-01-18   JPP  - Boolean columns are now handled as checkboxes\r\n *                   - Auto-generated columns would fail if the data source was \r\n *                     reseated, even to the same data source\r\n * v2.0.1\r\n * 2009-01-07   JPP  - Made all public and protected methods virtual \r\n * 2008-10-03   JPP  - Separated from ObjectListView.cs\r\n * \r\n * Copyright (C) 2006-2015 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing System.Diagnostics;\r\nusing System.Drawing.Design;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n\r\n    /// <summary>\r\n    /// A DataListView is a ListView that can be bound to a datasource (which would normally be a DataTable or DataView).\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>This listview keeps itself in sync with its source datatable by listening for change events.</para>\r\n    /// <para>The DataListView will automatically create columns to show all of the data source's columns/properties, if there is not already\r\n    /// a column showing that property. This allows you to define one or two columns in the designer and then have the others generated automatically.\r\n    /// If you don't want any column to be auto generated, set <see cref=\"AutoGenerateColumns\"/> to false.\r\n    /// These generated columns will be only the simplest view of the world, and would look more interesting with a few delegates installed.</para>\r\n    /// <para>This listview will also automatically generate missing aspect getters to fetch the values from the data view.</para>\r\n    /// <para>Changing data sources is possible, but error prone. Before changing data sources, the programmer is responsible for modifying/resetting\r\n    /// the column collection to be valid for the new data source.</para>\r\n    /// <para>Internally, a CurrencyManager controls keeping the data source in-sync with other users of the data source (as per normal .NET\r\n    /// behavior). This means that the model objects in the DataListView are DataRowView objects. If you write your own AspectGetters/Setters,\r\n    /// they will be given DataRowView objects.</para>\r\n    /// </remarks>\r\n    public class DataListView : ObjectListView\r\n    {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Make a DataListView\r\n        /// </summary>\r\n        public DataListView()\r\n        {\r\n            Adapter = new DataSourceAdapter(this);\r\n        }\r\n\r\n        protected override void Dispose(bool disposing) {\r\n            Adapter.Dispose();\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not columns will be automatically generated to show the\r\n        /// columns when the DataSource is set. \r\n        /// </summary>\r\n        /// <remarks>This must be set before the DataSource is set. It has no effect afterwards.</remarks>\r\n        [Category(\"Data\"),\r\n         Description(\"Should the control automatically generate columns from the DataSource\"),\r\n         DefaultValue(true)]\r\n        public bool AutoGenerateColumns {\r\n            get { return Adapter.AutoGenerateColumns; }\r\n            set { Adapter.AutoGenerateColumns = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the DataSource that will be displayed in this list view.\r\n        /// </summary>\r\n        /// <remarks>The DataSource should implement either <see cref=\"IList\"/>, <see cref=\"IBindingList\"/>,\r\n        /// or <see cref=\"IListSource\"/>. Some common examples are the following types of objects:\r\n        /// <list type=\"unordered\">\r\n        /// <item><description><see cref=\"DataView\"/></description></item>\r\n        /// <item><description><see cref=\"DataTable\"/></description></item>\r\n        /// <item><description><see cref=\"DataSet\"/></description></item>\r\n        /// <item><description><see cref=\"DataViewManager\"/></description></item>\r\n        /// <item><description><see cref=\"BindingSource\"/></description></item>\r\n        /// </list>\r\n        /// <para>When binding to a list container (i.e. one that implements the\r\n        /// <see cref=\"IListSource\"/> interface, such as <see cref=\"DataSet\"/>)\r\n        /// you must also set the <see cref=\"DataMember\"/> property in order\r\n        /// to identify which particular list you would like to display. You\r\n        /// may also set the <see cref=\"DataMember\"/> property even when\r\n        /// DataSource refers to a list, since <see cref=\"DataMember\"/> can\r\n        /// also be used to navigate relations between lists.</para>\r\n        /// <para>When a DataSource is set, the control will create OLVColumns to show any\r\n        /// data source columns that are not already shown.</para>\r\n        /// <para>If the DataSource is changed, you will have to remove any previously\r\n        /// created columns, since they will be configured for the previous DataSource.\r\n        /// <see cref=\"ObjectListView.Reset()\"/>.</para>\r\n        /// </remarks>\r\n        [Category(\"Data\"),\r\n        TypeConverter(\"System.Windows.Forms.Design.DataSourceConverter, System.Design\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public virtual Object DataSource\r\n        {\r\n            get { return Adapter.DataSource; }\r\n            set { Adapter.DataSource = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the name of the list or table in the data source for which the DataListView is displaying data.\r\n        /// </summary>\r\n        /// <remarks>If the data source is not a DataSet or DataViewManager, this property has no effect</remarks>\r\n        [Category(\"Data\"),\r\n         Editor(\"System.Windows.Forms.Design.DataMemberListEditor, System.Design\", typeof(UITypeEditor)),\r\n         DefaultValue(\"\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public virtual string DataMember\r\n        {\r\n            get { return Adapter.DataMember; }\r\n            set { Adapter.DataMember = value; }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the DataSourceAdaptor that does the bulk of the work needed\r\n        /// for data binding.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Adaptors cannot be shared between controls. Each DataListView needs its own adapter.\r\n        /// </remarks>\r\n        protected DataSourceAdapter Adapter {\r\n            get {\r\n                Debug.Assert(adapter != null, \"Data adapter should not be null\");\r\n                return adapter; \r\n            }\r\n            set { adapter = value; }\r\n        }\r\n        private DataSourceAdapter adapter;\r\n\r\n        #endregion\r\n\r\n        #region Object manipulations\r\n\r\n        /// <summary>\r\n        /// Add the given collection of model objects to this control.\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">A collection of model objects</param>\r\n        /// <remarks>This is a no-op for data lists, since the data\r\n        /// is controlled by the DataSource. Manipulate the data source\r\n        /// rather than this view of the data source.</remarks>\r\n        public override void AddObjects(ICollection modelObjects)\r\n        {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Insert the given collection of objects before the given position\r\n        /// </summary>\r\n        /// <param name=\"index\">Where to insert the objects</param>\r\n        /// <param name=\"modelObjects\">The objects to be inserted</param>\r\n        /// <remarks>This is a no-op for data lists, since the data\r\n        /// is controlled by the DataSource. Manipulate the data source\r\n        /// rather than this view of the data source.</remarks>\r\n        public override void InsertObjects(int index, ICollection modelObjects) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove the given collection of model objects from this control.\r\n        /// </summary>\r\n        /// <remarks>This is a no-op for data lists, since the data\r\n        /// is controlled by the DataSource. Manipulate the data source\r\n        /// rather than this view of the data source.</remarks>\r\n        public override void RemoveObjects(ICollection modelObjects)\r\n        {\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Event Handlers\r\n\r\n        /// <summary>\r\n        /// Change the Unfreeze behaviour \r\n        /// </summary>\r\n        protected override void DoUnfreeze() {\r\n\r\n            // Copied from base method, but we don't need to BuildList() since we know that our\r\n            // data adaptor is going to do that immediately after this method exits.\r\n            EndUpdate();\r\n            ResizeFreeSpaceFillingColumns();\r\n           // this.BuildList();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handles parent binding context changes\r\n        /// </summary>\r\n        /// <param name=\"e\">Unused EventArgs.</param>\r\n        protected override void OnParentBindingContextChanged(EventArgs e)\r\n        {\r\n            base.OnParentBindingContextChanged(e);\r\n\r\n            // BindingContext is an ambient property - by default it simply picks\r\n            // up the parent control's context (unless something has explicitly\r\n            // given us our own). So we must respond to changes in our parent's\r\n            // binding context in the same way we would changes to our own\r\n            // binding context.\r\n\r\n            // THINK: Do we need to forward this to the adapter?\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/DataTreeListView.cs",
    "content": "﻿/*\r\n * DataTreeListView - A data bindable TreeListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 05/05/2012 3:26 PM\r\n *\r\n * Change log:\r\n\r\n * 2012-05-05  JPP  Initial version\r\n *\r\n * TO DO:\r\n\r\n * \r\n * Copyright (C) 2012 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing System.Drawing.Design;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A DataTreeListView is a TreeListView that calculates its hierarchy based on\r\n    /// information in the data source.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>Like a <see cref=\"DataListView\"/>, a DataTreeListView sources all its information\r\n    /// from a combination of <see cref=\"DataSource\"/> and <see cref=\"DataMember\"/>. \r\n    /// <see cref=\"DataSource\"/> can be a DataTable, DataSet,\r\n    /// or anything that implements <see cref=\"IList\"/>. \r\n    /// </para>\r\n    /// <para>\r\n    /// To function properly, the DataTreeListView requires:\r\n    /// <list type=\"bullet\">\r\n    /// <item>the table to have a column which holds a unique for the row. The name of this column must be set in <see cref=\"KeyAspectName\"/>.</item>\r\n    /// <item>the table to have a column which holds id of the hierarchical parent of the row. The name of this column must be set in <see cref=\"ParentKeyAspectName\"/>.</item>\r\n    /// <item>a value which identifies which rows are the roots of the tree (<see cref=\"RootKeyValue\"/>).</item>\r\n    /// </list>\r\n    /// The hierarchy structure is determined finding all the rows where the parent key is equal to <see cref=\"RootKeyValue\"/>. These  rows\r\n    /// become the root objects of the hierarchy.\r\n    /// </para>\r\n    /// <para>Like a TreeListView, the hierarchy must not contain cycles. Bad things will happen if the data is cyclic.</para>\r\n    /// </remarks>\r\n    public partial class DataTreeListView : TreeListView\r\n    {\r\n        #region Public Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not columns will be automatically generated to show the\r\n        /// columns when the DataSource is set. \r\n        /// </summary>\r\n        /// <remarks>This must be set before the DataSource is set. It has no effect afterwards.</remarks>\r\n        [Category(\"Data\"),\r\n         Description(\"Should the control automatically generate columns from the DataSource\"),\r\n         DefaultValue(true)]\r\n        public bool AutoGenerateColumns\r\n        {\r\n            get { return Adapter.AutoGenerateColumns; }\r\n            set { Adapter.AutoGenerateColumns = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the DataSource that will be displayed in this list view.\r\n        /// </summary>\r\n        /// <remarks>The DataSource should implement either <see cref=\"IList\"/>, <see cref=\"IBindingList\"/>,\r\n        /// or <see cref=\"IListSource\"/>. Some common examples are the following types of objects:\r\n        /// <list type=\"unordered\">\r\n        /// <item><description><see cref=\"DataView\"/></description></item>\r\n        /// <item><description><see cref=\"DataTable\"/></description></item>\r\n        /// <item><description><see cref=\"DataSet\"/></description></item>\r\n        /// <item><description><see cref=\"DataViewManager\"/></description></item>\r\n        /// <item><description><see cref=\"BindingSource\"/></description></item>\r\n        /// </list>\r\n        /// <para>When binding to a list container (i.e. one that implements the\r\n        /// <see cref=\"IListSource\"/> interface, such as <see cref=\"DataSet\"/>)\r\n        /// you must also set the <see cref=\"DataMember\"/> property in order\r\n        /// to identify which particular list you would like to display. You\r\n        /// may also set the <see cref=\"DataMember\"/> property even when\r\n        /// DataSource refers to a list, since <see cref=\"DataMember\"/> can\r\n        /// also be used to navigate relations between lists.</para>\r\n        /// </remarks>\r\n        [Category(\"Data\"),\r\n        TypeConverter(\"System.Windows.Forms.Design.DataSourceConverter, System.Design\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public virtual Object DataSource\r\n        {\r\n            get { return Adapter.DataSource; }\r\n            set { Adapter.DataSource = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the name of the list or table in the data source for which the DataListView is displaying data.\r\n        /// </summary>\r\n        /// <remarks>If the data source is not a DataSet or DataViewManager, this property has no effect</remarks>\r\n        [Category(\"Data\"),\r\n         Editor(\"System.Windows.Forms.Design.DataMemberListEditor, System.Design\", typeof(UITypeEditor)),\r\n         DefaultValue(\"\")]\r\n        public virtual string DataMember {\r\n            get { return Adapter.DataMember; }\r\n            set { Adapter.DataMember = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the name of the property/column that uniquely identifies each row.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// The value contained by this column must be unique across all rows \r\n        /// in the data source. Odd and unpredictable things will happen if two\r\n        /// rows have the same id.\r\n        /// </para>\r\n        /// <para>Null cannot be a valid key value.</para>\r\n        /// </remarks>\r\n        [Category(\"Data\"),\r\n         Description(\"The name of the property/column that holds the key of a row\"),\r\n         DefaultValue(null)]\r\n        public virtual string KeyAspectName {\r\n            get { return Adapter.KeyAspectName; }\r\n            set { Adapter.KeyAspectName = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the name of the property/column that contains the key of\r\n        /// the parent of a row.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// The test condition for deciding if one row is the parent of another is functionally\r\n        /// equivilent to this:\r\n        /// <code>\r\n        /// Object.Equals(candidateParentRow[this.KeyAspectName], row[this.ParentKeyAspectName])\r\n        /// </code>\r\n        /// </para>\r\n        /// <para>Unlike key value, parent keys can be null but a null parent key can only be used\r\n        /// to identify root objects.</para>\r\n        /// </remarks>\r\n        [Category(\"Data\"),\r\n         Description(\"The name of the property/column that holds the key of the parent of a row\"),\r\n         DefaultValue(null)]\r\n        public virtual string ParentKeyAspectName {\r\n            get { return Adapter.ParentKeyAspectName; }\r\n            set { Adapter.ParentKeyAspectName = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the value that identifies a row as a root object.\r\n        /// When the ParentKey of a row equals the RootKeyValue, that row will\r\n        /// be treated as root of the TreeListView.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// The test condition for deciding a root object is functionally\r\n        /// equivilent to this:\r\n        /// <code>\r\n        /// Object.Equals(candidateRow[this.ParentKeyAspectName], this.RootKeyValue)\r\n        /// </code>\r\n        /// </para>\r\n        /// <para>The RootKeyValue can be null. Actually, it can be any value that can \r\n        /// be compared for equality against a basic type.</para>\r\n        /// <para>If this is set to the wrong value (i.e. to a value that no row\r\n        /// has in the parent id column), the list will be empty.</para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual object RootKeyValue {\r\n            get { return Adapter.RootKeyValue; }\r\n            set { Adapter.RootKeyValue = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the value that identifies a row as a root object.\r\n        /// <see cref=\"RootKeyValue\"/>. The RootKeyValue can be of any type,\r\n        /// but the IDE cannot sensibly represent a value of any type,\r\n        /// so this is a typed wrapper around that property.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If you want the root value to be something other than a string,\r\n        /// you will have set it yourself.\r\n        /// </remarks>\r\n        [Category(\"Data\"),\r\n        Description(\"The parent id value that identifies a row as a root object\"),\r\n        DefaultValue(null)]\r\n        public virtual string RootKeyValueString {\r\n            get { return Convert.ToString(Adapter.RootKeyValue); }\r\n            set { Adapter.RootKeyValue = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not the key columns (id and parent id) should\r\n        /// be shown to the user.\r\n        /// </summary>\r\n        /// <remarks>This must be set before the DataSource is set. It has no effect\r\n        /// afterwards.</remarks>\r\n        [Category(\"Data\"),\r\n         Description(\"Should the keys columns (id and parent id) be shown to the user?\"),\r\n         DefaultValue(true)]\r\n        public virtual bool ShowKeyColumns {\r\n            get { return Adapter.ShowKeyColumns; }\r\n            set { Adapter.ShowKeyColumns = value; }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the DataSourceAdaptor that does the bulk of the work needed\r\n        /// for data binding.\r\n        /// </summary>\r\n        protected TreeDataSourceAdapter Adapter {\r\n            get {\r\n                if (adapter == null)\r\n                    adapter = new TreeDataSourceAdapter(this);\r\n                return adapter;\r\n            }\r\n            set { adapter = value; }\r\n        }\r\n        private TreeDataSourceAdapter adapter;\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/DragDrop/DragSource.cs",
    "content": "/*\r\n * DragSource.cs - Add drag source functionality to an ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 2009-03-17 5:15 PM\r\n *\r\n * Change log:\r\n * 2011-03-29   JPP  - Separate OLVDataObject.cs\r\n * v2.3\r\n * 2009-07-06   JPP  - Make sure Link is acceptable as an drop effect by default\r\n *                     (since MS didn't make it part of the 'All' value)\r\n * v2.2\r\n * 2009-04-15   JPP  - Separated DragSource.cs into DropSink.cs\r\n * 2009-03-17   JPP  - Initial version\r\n * \r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// An IDragSource controls how drag out from the ObjectListView will behave\r\n    /// </summary>\r\n    public interface IDragSource\r\n    {\r\n        /// <summary>\r\n        /// A drag operation is beginning. Return the data object that will be used \r\n        /// for data transfer. Return null to prevent the drag from starting. The data\r\n        /// object will normally include all the selected objects.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// The returned object is later passed to the GetAllowedEffect() and EndDrag()\r\n        /// methods.\r\n        /// </remarks>\r\n        /// <param name=\"olv\">What ObjectListView is being dragged from.</param>\r\n        /// <param name=\"button\">Which mouse button is down?</param>\r\n        /// <param name=\"item\">What item was directly dragged by the user? There may be more than just this \r\n        /// item selected.</param>\r\n        /// <returns>The data object that will be used for data transfer. This will often be a subclass\r\n        /// of DataObject, but does not need to be.</returns>\r\n        Object StartDrag(ObjectListView olv, MouseButtons button, OLVListItem item);\r\n\r\n        /// <summary>\r\n        /// What operations are possible for this drag? This controls the icon shown during the drag\r\n        /// </summary>\r\n        /// <param name=\"dragObject\">The data object returned by StartDrag()</param>\r\n        /// <returns>A combination of DragDropEffects flags</returns>\r\n        DragDropEffects GetAllowedEffects(Object dragObject);\r\n\r\n        /// <summary>\r\n        /// The drag operation is complete. Do whatever is necessary to complete the action.\r\n        /// </summary>\r\n        /// <param name=\"dragObject\">The data object returned by StartDrag()</param>\r\n        /// <param name=\"effect\">The value returned from GetAllowedEffects()</param>\r\n        void EndDrag(Object dragObject, DragDropEffects effect);\r\n    }\r\n\r\n    /// <summary>\r\n    /// A do-nothing implementation of IDragSource that can be safely subclassed.\r\n    /// </summary>\r\n    public class AbstractDragSource : IDragSource\r\n    {\r\n        #region IDragSource Members\r\n\r\n        /// <summary>\r\n        /// See IDragSource documentation\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"button\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <returns></returns>\r\n        public virtual Object StartDrag(ObjectListView olv, MouseButtons button, OLVListItem item) {\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// See IDragSource documentation\r\n        /// </summary>\r\n        /// <param name=\"data\"></param>\r\n        /// <returns></returns>\r\n        public virtual DragDropEffects GetAllowedEffects(Object data) {\r\n            return DragDropEffects.None;\r\n        }\r\n\r\n        /// <summary>\r\n        /// See IDragSource documentation\r\n        /// </summary>\r\n        /// <param name=\"dragObject\"></param>\r\n        /// <param name=\"effect\"></param>\r\n        public virtual void EndDrag(Object dragObject, DragDropEffects effect) {\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// A reasonable implementation of IDragSource that provides normal\r\n    /// drag source functionality. It creates a data object that supports\r\n    /// inter-application dragging of text and HTML representation of \r\n    /// the dragged rows. It can optionally force a refresh of all dragged\r\n    /// rows when the drag is complete.\r\n    /// </summary>\r\n    /// <remarks>Subclasses can override GetDataObject() to add new\r\n    /// data formats to the data transfer object.</remarks>\r\n    public class SimpleDragSource : IDragSource\r\n    {\r\n        #region Constructors\r\n\r\n        /// <summary>\r\n        /// Construct a SimpleDragSource\r\n        /// </summary>\r\n        public SimpleDragSource() {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Construct a SimpleDragSource that refreshes the dragged rows when\r\n        /// the drag is complete\r\n        /// </summary>\r\n        /// <param name=\"refreshAfterDrop\"></param>\r\n        public SimpleDragSource(bool refreshAfterDrop) {\r\n            RefreshAfterDrop = refreshAfterDrop;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the dragged rows should be refreshed when the \r\n        /// drag operation is complete.\r\n        /// </summary>\r\n        public bool RefreshAfterDrop {\r\n            get { return refreshAfterDrop; }\r\n            set { refreshAfterDrop = value;  }\r\n        }\r\n        private bool refreshAfterDrop;\r\n\r\n        #endregion\r\n\r\n        #region IDragSource Members\r\n\r\n        /// <summary>\r\n        /// Create a DataObject when the user does a left mouse drag operation.\r\n        /// See IDragSource for further information.\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"button\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <returns></returns>\r\n        public virtual Object StartDrag(ObjectListView olv, MouseButtons button, OLVListItem item) {\r\n            // We only drag on left mouse\r\n            if (button != MouseButtons.Left)\r\n                return null;\r\n\r\n            return CreateDataObject(olv);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Which operations are allowed in the operation? By default, all operations are supported.\r\n        /// </summary>\r\n        /// <param name=\"data\"></param>\r\n        /// <returns>All opertions are supported</returns>\r\n        public virtual DragDropEffects GetAllowedEffects(Object data) {\r\n            return DragDropEffects.All | DragDropEffects.Link; // why didn't MS include 'Link' in 'All'??\r\n        }\r\n\r\n        /// <summary>\r\n        /// The drag operation is finished. Refreshe the dragged rows if so configured.\r\n        /// </summary>\r\n        /// <param name=\"dragObject\"></param>\r\n        /// <param name=\"effect\"></param>\r\n        public virtual void EndDrag(Object dragObject, DragDropEffects effect) {\r\n            if (dragObject is not OLVDataObject data)\r\n                return;\r\n\r\n            if (RefreshAfterDrop)\r\n                data.ListView.RefreshObjects(data.ModelObjects);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a data object that will be used to as the data object\r\n        /// for the drag operation.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Subclasses can override this method add new formats to the data object.\r\n        /// </remarks>\r\n        /// <param name=\"olv\">The ObjectListView that is the source of the drag</param>\r\n        /// <returns>A data object for the drag</returns>\r\n        protected virtual object CreateDataObject(ObjectListView olv) {\r\n            return new OLVDataObject(olv);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/DragDrop/DropSink.cs",
    "content": "/*\r\n * DropSink.cs - Add drop sink ability to an ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 2009-03-17 5:15 PM\r\n *\r\n * Change log:\r\n * v2.9\r\n * 2015-07-08   JPP  - Added SimpleDropSink.EnableFeedback to allow all the pretty and helpful\r\n *                     user feedback during drags to be turned off\r\n * v2.7\r\n * 2011-04-20   JPP  - Rewrote how ModelDropEventArgs.RefreshObjects() works on TreeListViews\r\n * v2.4.1\r\n * 2010-08-24   JPP  - Moved AcceptExternal property up to SimpleDragSource.\r\n * v2.3\r\n * 2009-09-01   JPP  - Correctly handle case where RefreshObjects() is called for\r\n *                     objects that were children but are now roots.\r\n * 2009-08-27   JPP  - Added ModelDropEventArgs.RefreshObjects() to simplify updating after\r\n *                     a drag-drop operation\r\n * 2009-08-19   JPP  - Changed to use OlvHitTest()\r\n * v2.2.1\r\n * 2007-07-06   JPP  - Added StandardDropActionFromKeys property to OlvDropEventArgs\r\n * v2.2\r\n * 2009-05-17   JPP  - Added a Handled flag to OlvDropEventArgs\r\n *                   - Tweaked the appearance of the drop-on-background feedback\r\n * 2009-04-15   JPP  - Separated DragDrop.cs into DropSink.cs\r\n * 2009-03-17   JPP  - Initial version\r\n * \r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Drawing;\r\nusing System.Drawing.Drawing2D;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// Objects that implement this interface can acts as the receiver for drop\r\n    /// operation for an ObjectListView.\r\n    /// </summary>\r\n    public interface IDropSink\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the ObjectListView that is the drop sink\r\n        /// </summary>\r\n        ObjectListView ListView { get; set; }\r\n\r\n        /// <summary>\r\n        /// Draw any feedback that is appropriate to the current drop state.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Any drawing is done over the top of the ListView. This operation should disturb\r\n        /// the Graphic as little as possible. Specifically, do not erase the area into which\r\n        /// you draw. \r\n        /// </remarks>\r\n        /// <param name=\"g\">A Graphic for drawing</param>\r\n        /// <param name=\"bounds\">The contents bounds of the ListView (not including any header)</param>\r\n        void DrawFeedback(Graphics g, Rectangle bounds);\r\n\r\n        /// <summary>\r\n        /// The user has released the drop over this control\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Implementators should set args.Effect to the appropriate DragDropEffects. This value is returned\r\n        /// to the originator of the drag.\r\n        /// </remarks>\r\n        /// <param name=\"args\"></param>\r\n        void Drop(DragEventArgs args);\r\n\r\n        /// <summary>\r\n        /// A drag has entered this control.\r\n        /// </summary>\r\n        /// <remarks>Implementators should set args.Effect to the appropriate DragDropEffects.</remarks>\r\n        /// <param name=\"args\"></param>\r\n        void Enter(DragEventArgs args);\r\n\r\n        /// <summary>\r\n        /// Change the cursor to reflect the current drag operation.\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        void GiveFeedback(GiveFeedbackEventArgs args);\r\n\r\n        /// <summary>\r\n        /// The drag has left the bounds of this control\r\n        /// </summary>\r\n        void Leave();\r\n\r\n        /// <summary>\r\n        /// The drag is moving over this control.\r\n        /// </summary>\r\n        /// <remarks>This is where any drop target should be calculated.\r\n        /// Implementators should set args.Effect to the appropriate DragDropEffects.\r\n        /// </remarks>\r\n        /// <param name=\"args\"></param>\r\n        void Over(DragEventArgs args);\r\n\r\n        /// <summary>\r\n        /// Should the drag be allowed to continue?\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        void QueryContinue(QueryContinueDragEventArgs args);\r\n    }\r\n\r\n    /// <summary>\r\n    /// This is a do-nothing implementation of IDropSink that is a useful\r\n    /// base class for more sophisticated implementations.\r\n    /// </summary>\r\n    public class AbstractDropSink : IDropSink\r\n    {\r\n        #region IDropSink Members\r\n\r\n        /// <summary>\r\n        /// Gets or sets the ObjectListView that is the drop sink\r\n        /// </summary>\r\n        public virtual ObjectListView ListView {\r\n            get { return listView; }\r\n            set { listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Draw any feedback that is appropriate to the current drop state.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Any drawing is done over the top of the ListView. This operation should disturb\r\n        /// the Graphic as little as possible. Specifically, do not erase the area into which\r\n        /// you draw. \r\n        /// </remarks>\r\n        /// <param name=\"g\">A Graphic for drawing</param>\r\n        /// <param name=\"bounds\">The contents bounds of the ListView (not including any header)</param>\r\n        public virtual void DrawFeedback(Graphics g, Rectangle bounds) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// The user has released the drop over this control\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Implementators should set args.Effect to the appropriate DragDropEffects. This value is returned\r\n        /// to the originator of the drag.\r\n        /// </remarks>\r\n        /// <param name=\"args\"></param>\r\n        public virtual void Drop(DragEventArgs args) {\r\n            Cleanup();\r\n        }\r\n\r\n        /// <summary>\r\n        /// A drag has entered this control.\r\n        /// </summary>\r\n        /// <remarks>Implementators should set args.Effect to the appropriate DragDropEffects.</remarks>\r\n        /// <param name=\"args\"></param>\r\n        public virtual void Enter(DragEventArgs args) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// The drag has left the bounds of this control\r\n        /// </summary>\r\n        public virtual void Leave() {\r\n            Cleanup();\r\n        }\r\n\r\n        /// <summary>\r\n        /// The drag is moving over this control.\r\n        /// </summary>\r\n        /// <remarks>This is where any drop target should be calculated.\r\n        /// Implementators should set args.Effect to the appropriate DragDropEffects.\r\n        /// </remarks>\r\n        /// <param name=\"args\"></param>\r\n        public virtual void Over(DragEventArgs args) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the cursor to reflect the current drag operation.\r\n        /// </summary>\r\n        /// <remarks>You only need to override this if you want non-standard cursors.\r\n        /// The standard cursors are supplied automatically.</remarks>\r\n        /// <param name=\"args\"></param>\r\n        public virtual void GiveFeedback(GiveFeedbackEventArgs args) {\r\n            args.UseDefaultCursors = true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should the drag be allowed to continue?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// You only need to override this if you want the user to be able\r\n        /// to end the drop in some non-standard way, e.g. dragging to a\r\n        /// certain point even without releasing the mouse, or going outside\r\n        /// the bounds of the application. \r\n        /// </remarks>\r\n        /// <param name=\"args\"></param>\r\n        public virtual void QueryContinue(QueryContinueDragEventArgs args) {\r\n        }\r\n\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// This is called when the mouse leaves the drop region and after the\r\n        /// drop has completed.\r\n        /// </summary>\r\n        protected virtual void Cleanup() {\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// The enum indicates which target has been found for a drop operation\r\n    /// </summary>\r\n    [Flags]\r\n    public enum DropTargetLocation\r\n    {\r\n        /// <summary>\r\n        /// No applicable target has been found\r\n        /// </summary>\r\n        None = 0,\r\n\r\n        /// <summary>\r\n        /// The list itself is the target of the drop\r\n        /// </summary>\r\n        Background = 0x01,\r\n\r\n        /// <summary>\r\n        /// An item is the target\r\n        /// </summary>\r\n        Item = 0x02,\r\n\r\n        /// <summary>\r\n        /// Between two items (or above the top item or below the bottom item)\r\n        /// can be the target. This is not actually ever a target, only a value indicate\r\n        /// that it is valid to drop between items\r\n        /// </summary>\r\n        BetweenItems = 0x04,\r\n\r\n        /// <summary>\r\n        /// Above an item is the target\r\n        /// </summary>\r\n        AboveItem = 0x08,\r\n\r\n        /// <summary>\r\n        /// Below an item is the target\r\n        /// </summary>\r\n        BelowItem = 0x10,\r\n\r\n        /// <summary>\r\n        /// A subitem is the target of the drop\r\n        /// </summary>\r\n        SubItem = 0x20,\r\n\r\n        /// <summary>\r\n        /// On the right of an item is the target (not currently used)\r\n        /// </summary>\r\n        RightOfItem = 0x40,\r\n\r\n        /// <summary>\r\n        /// On the left of an item is the target (not currently used)\r\n        /// </summary>\r\n        LeftOfItem = 0x80\r\n    }\r\n\r\n    /// <summary>\r\n    /// This class represents a simple implementation of a drop sink.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// Actually, it should be called CleverDropSink -- it's far from simple and can do quite a lot in its own right.\r\n    /// </remarks>\r\n    public class SimpleDropSink : AbstractDropSink\r\n    {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Make a new drop sink\r\n        /// </summary>\r\n        public SimpleDropSink() {\r\n            timer = new Timer();\r\n            timer.Interval = 250;\r\n            timer.Tick += new EventHandler(timer_Tick);\r\n\r\n            CanDropOnItem = true;\r\n            //this.CanDropOnSubItem = true;\r\n            //this.CanDropOnBackground = true;\r\n            //this.CanDropBetween = true;\r\n\r\n            FeedbackColor = Color.FromArgb(180, Color.MediumBlue);\r\n            billboard = new BillboardOverlay();\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Get or set the locations where a drop is allowed to occur (OR-ed together)\r\n        /// </summary>\r\n        public DropTargetLocation AcceptableLocations {\r\n            get { return acceptableLocations; }\r\n            set { acceptableLocations = value; }\r\n        }\r\n        private DropTargetLocation acceptableLocations;\r\n        \r\n        /// <summary>\r\n        /// Gets or sets whether this sink allows model objects to be dragged from other lists. Defaults to true.\r\n        /// </summary>\r\n        public bool AcceptExternal {\r\n            get { return acceptExternal; }\r\n            set { acceptExternal = value; }\r\n        }\r\n        private bool acceptExternal = true;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the ObjectListView should scroll when the user drags\r\n        /// something near to the top or bottom rows. Defaults to true.\r\n        /// </summary>\r\n        /// <remarks>AutoScroll does not scroll horizontally.</remarks>\r\n        public bool AutoScroll {\r\n            get { return autoScroll; }\r\n            set { autoScroll = value; }\r\n        }\r\n        private bool autoScroll = true;\r\n\r\n        /// <summary>\r\n        /// Gets the billboard overlay that will be used to display feedback\r\n        /// messages during a drag operation. \r\n        /// </summary>\r\n        /// <remarks>Set this to null to stop the feedback.</remarks>\r\n        public BillboardOverlay Billboard {\r\n            get { return billboard; }\r\n            set { billboard = value; }\r\n        }\r\n        private BillboardOverlay billboard;\r\n\r\n        /// <summary>\r\n        /// Get or set whether a drop can occur between items of the list\r\n        /// </summary>\r\n        public bool CanDropBetween {\r\n            get { return (AcceptableLocations & DropTargetLocation.BetweenItems) == DropTargetLocation.BetweenItems; }\r\n            set {\r\n                if (value)\r\n                    AcceptableLocations |= DropTargetLocation.BetweenItems;\r\n                else \r\n                    AcceptableLocations &= ~DropTargetLocation.BetweenItems;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set whether a drop can occur on the listview itself\r\n        /// </summary>\r\n        public bool CanDropOnBackground {\r\n            get { return (AcceptableLocations & DropTargetLocation.Background) == DropTargetLocation.Background; }\r\n            set {\r\n                if (value)\r\n                    AcceptableLocations |= DropTargetLocation.Background;\r\n                else\r\n                    AcceptableLocations &= ~DropTargetLocation.Background;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set whether a drop can occur on items in the list\r\n        /// </summary>\r\n        public bool CanDropOnItem {\r\n            get { return (AcceptableLocations & DropTargetLocation.Item) == DropTargetLocation.Item; }\r\n            set {\r\n                if (value)\r\n                    AcceptableLocations |= DropTargetLocation.Item;\r\n                else\r\n                    AcceptableLocations &= ~DropTargetLocation.Item;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set whether a drop can occur on a subitem in the list\r\n        /// </summary>\r\n        public bool CanDropOnSubItem {\r\n            get { return (AcceptableLocations & DropTargetLocation.SubItem) == DropTargetLocation.SubItem; }\r\n            set {\r\n                if (value)\r\n                    AcceptableLocations |= DropTargetLocation.SubItem;\r\n                else\r\n                    AcceptableLocations &= ~DropTargetLocation.SubItem;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the drop sink should draw feedback onto the given list\r\n        /// during the drag operation. Defaults to true.\r\n        /// </summary>\r\n        /// <remarks>If this is false, you will have to give the user feedback in some\r\n        /// other fashion, like cursor changes</remarks>\r\n        public bool EnableFeedback {\r\n            get { return enableFeedback; }\r\n            set { enableFeedback = value; }\r\n        }\r\n        private bool enableFeedback = true;\r\n\r\n        /// <summary>\r\n        /// Get or set the index of the item that is the target of the drop\r\n        /// </summary>\r\n        public int DropTargetIndex {\r\n            get { return dropTargetIndex; }\r\n            set {\r\n                if (dropTargetIndex != value) {\r\n                    dropTargetIndex = value;\r\n                    ListView.Invalidate();\r\n                }\r\n            }\r\n        }\r\n        private int dropTargetIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Get the item that is the target of the drop\r\n        /// </summary>\r\n        public OLVListItem DropTargetItem {\r\n            get {\r\n                return ListView.GetItem(DropTargetIndex);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the location of the target of the drop\r\n        /// </summary>\r\n        public DropTargetLocation DropTargetLocation {\r\n            get { return dropTargetLocation; }\r\n            set {\r\n                if (dropTargetLocation != value) {\r\n                    dropTargetLocation = value;\r\n                    ListView.Invalidate();\r\n                }\r\n            }\r\n        }\r\n        private DropTargetLocation dropTargetLocation;\r\n\r\n        /// <summary>\r\n        /// Get or set the index of the subitem that is the target of the drop\r\n        /// </summary>\r\n        public int DropTargetSubItemIndex {\r\n            get { return dropTargetSubItemIndex; }\r\n            set {\r\n                if (dropTargetSubItemIndex != value) {\r\n                    dropTargetSubItemIndex = value;\r\n                    ListView.Invalidate();\r\n                }\r\n            }\r\n        }\r\n        private int dropTargetSubItemIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Get or set the color that will be used to provide drop feedback\r\n        /// </summary>\r\n        public Color FeedbackColor {\r\n            get { return feedbackColor; }\r\n            set { feedbackColor = value; }\r\n        }\r\n        private Color feedbackColor;\r\n\r\n        /// <summary>\r\n        /// Get whether the alt key was down during this drop event\r\n        /// </summary>\r\n        public bool IsAltDown {\r\n            get { return (KeyState & 32) == 32; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether any modifier key was down during this drop event\r\n        /// </summary>\r\n        public bool IsAnyModifierDown {\r\n            get { return (KeyState & (4 + 8 + 32)) != 0; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether the control key was down during this drop event\r\n        /// </summary>\r\n        public bool IsControlDown {\r\n            get { return (KeyState & 8) == 8; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether the left mouse button was down during this drop event\r\n        /// </summary>\r\n        public bool IsLeftMouseButtonDown {\r\n            get { return (KeyState & 1) == 1; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether the right mouse button was down during this drop event\r\n        /// </summary>\r\n        public bool IsMiddleMouseButtonDown {\r\n            get { return (KeyState & 16) == 16; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether the right mouse button was down during this drop event\r\n        /// </summary>\r\n        public bool IsRightMouseButtonDown {\r\n            get { return (KeyState & 2) == 2; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether the shift key was down during this drop event\r\n        /// </summary>\r\n        public bool IsShiftDown {\r\n            get { return (KeyState & 4) == 4; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the state of the keys during this drop event\r\n        /// </summary>\r\n        public int KeyState {\r\n            get { return keyState; }\r\n            set { keyState = value; }\r\n        }\r\n        private int keyState;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the drop sink will automatically use cursors\r\n        /// based on the drop effect. By default, this is true. If this is\r\n        /// set to false, you must set the Cursor yourself.\r\n        /// </summary>\r\n        public bool UseDefaultCursors {\r\n            get { return useDefaultCursors; }\r\n            set { useDefaultCursors = value; }\r\n        }\r\n        private bool useDefaultCursors = true;\r\n\r\n        #endregion\r\n\r\n        #region Events\r\n\r\n        /// <summary>\r\n        /// Triggered when the sink needs to know if a drop can occur.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Handlers should set Effect to indicate what is possible.\r\n        /// Handlers can change any of the DropTarget* setttings to change\r\n        /// the target of the drop.\r\n        /// </remarks>\r\n        public event EventHandler<OlvDropEventArgs> CanDrop;\r\n\r\n        /// <summary>\r\n        /// Triggered when the drop is made.\r\n        /// </summary>\r\n        public event EventHandler<OlvDropEventArgs> Dropped;\r\n\r\n        /// <summary>\r\n        /// Triggered when the sink needs to know if a drop can occur\r\n        /// AND the source is an ObjectListView\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Handlers should set Effect to indicate what is possible.\r\n        /// Handlers can change any of the DropTarget* setttings to change\r\n        /// the target of the drop.\r\n        /// </remarks>\r\n        public event EventHandler<ModelDropEventArgs> ModelCanDrop;\r\n\r\n        /// <summary>\r\n        /// Triggered when the drop is made.\r\n        /// AND the source is an ObjectListView\r\n        /// </summary>\r\n        public event EventHandler<ModelDropEventArgs> ModelDropped;\r\n\r\n        #endregion\r\n\r\n        #region DropSink Interface\r\n\r\n        /// <summary>\r\n        /// Cleanup the drop sink when the mouse has left the control or \r\n        /// the drag has finished.\r\n        /// </summary>\r\n        protected override void Cleanup() {\r\n            DropTargetLocation = DropTargetLocation.None;\r\n            ListView.FullRowSelect = originalFullRowSelect;\r\n            Billboard.Text = null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw any feedback that is appropriate to the current drop state.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Any drawing is done over the top of the ListView. This operation should disturb\r\n        /// the Graphic as little as possible. Specifically, do not erase the area into which\r\n        /// you draw. \r\n        /// </remarks>\r\n        /// <param name=\"g\">A Graphic for drawing</param>\r\n        /// <param name=\"bounds\">The contents bounds of the ListView (not including any header)</param>\r\n        public override void DrawFeedback(Graphics g, Rectangle bounds) {\r\n            g.SmoothingMode = ObjectListView.SmoothingMode;\r\n\r\n            if (EnableFeedback) {\r\n                switch (DropTargetLocation) {\r\n                    case DropTargetLocation.Background:\r\n                        DrawFeedbackBackgroundTarget(g, bounds);\r\n                        break;\r\n                    case DropTargetLocation.Item:\r\n                        DrawFeedbackItemTarget(g, bounds);\r\n                        break;\r\n                    case DropTargetLocation.AboveItem:\r\n                        DrawFeedbackAboveItemTarget(g, bounds);\r\n                        break;\r\n                    case DropTargetLocation.BelowItem:\r\n                        DrawFeedbackBelowItemTarget(g, bounds);\r\n                        break;\r\n                }\r\n            }\r\n\r\n            if (Billboard != null) {\r\n                Billboard.Draw(ListView, g, bounds);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// The user has released the drop over this control\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        public override void Drop(DragEventArgs args) {\r\n            dropEventArgs.DragEventArgs = args;\r\n            TriggerDroppedEvent(args);\r\n            timer.Stop();\r\n            Cleanup();\r\n        }\r\n\r\n        /// <summary>\r\n        /// A drag has entered this control.\r\n        /// </summary>\r\n        /// <remarks>Implementators should set args.Effect to the appropriate DragDropEffects.</remarks>\r\n        /// <param name=\"args\"></param>\r\n        public override void Enter(DragEventArgs args) {\r\n            //System.Diagnostics.Debug.WriteLine(\"Enter\");\r\n\r\n            /* \r\n             * When FullRowSelect is true, we have two problems:\r\n             * 1) GetItemRect(ItemOnly) returns the whole row rather than just the icon/text, which messes\r\n             *    up our calculation of the drop rectangle.\r\n             * 2) during the drag, the Timer events will not fire! This is the major problem, since without\r\n             *    those events we can't autoscroll. \r\n             * \r\n             * The first problem we can solve through coding, but the second is more difficult. \r\n             * We avoid both problems by turning off FullRowSelect during the drop operation.\r\n             */    \r\n            originalFullRowSelect = ListView.FullRowSelect;\r\n            ListView.FullRowSelect = false;\r\n\r\n            // Setup our drop event args block\r\n            dropEventArgs = new ModelDropEventArgs();\r\n            dropEventArgs.DropSink = this;\r\n            dropEventArgs.ListView = ListView;\r\n            dropEventArgs.DragEventArgs = args;\r\n            dropEventArgs.DataObject = args.Data;\r\n            if (args.Data is OLVDataObject olvData) {\r\n                dropEventArgs.SourceListView = olvData.ListView;\r\n                dropEventArgs.SourceModels = olvData.ModelObjects;\r\n            }\r\n\r\n            Over(args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the cursor to reflect the current drag operation.\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        public override void GiveFeedback(GiveFeedbackEventArgs args) {\r\n            args.UseDefaultCursors = UseDefaultCursors;\r\n        }\r\n\r\n        /// <summary>\r\n        /// The drag is moving over this control.\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        public override void Over(DragEventArgs args) {\r\n            //System.Diagnostics.Debug.WriteLine(\"Over\");\r\n            dropEventArgs.DragEventArgs = args;\r\n            KeyState = args.KeyState;\r\n            Point pt = ListView.PointToClient(new Point(args.X, args.Y));\r\n            args.Effect = CalculateDropAction(args, pt);\r\n            CheckScrolling(pt);\r\n        }\r\n\r\n        #endregion\r\n        \r\n        #region Events\r\n\r\n        /// <summary>\r\n        /// Trigger the Dropped events\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void TriggerDroppedEvent(DragEventArgs args) {\r\n            dropEventArgs.Handled = false;\r\n\r\n            // If the source is an ObjectListView, trigger the ModelDropped event\r\n            if (dropEventArgs.SourceListView != null) \r\n                OnModelDropped(dropEventArgs);\r\n\r\n            if (!dropEventArgs.Handled)\r\n                OnDropped(dropEventArgs);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger CanDrop\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnCanDrop(OlvDropEventArgs args) {\r\n            if (CanDrop != null)\r\n                CanDrop(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger Dropped\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnDropped(OlvDropEventArgs args) {\r\n            if (Dropped != null)\r\n                Dropped(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger ModelCanDrop\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnModelCanDrop(ModelDropEventArgs args) {\r\n\r\n            // Don't allow drops from other list, if that's what's configured\r\n            if (!AcceptExternal && args.SourceListView != null && args.SourceListView != ListView) {\r\n                args.Effect = DragDropEffects.None;\r\n                args.DropTargetLocation = DropTargetLocation.None;\r\n                args.InfoMessage = \"This list doesn't accept drops from other lists\";\r\n                return;\r\n            }\r\n\r\n            if (ModelCanDrop != null)\r\n                ModelCanDrop(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger ModelDropped\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnModelDropped(ModelDropEventArgs args) {\r\n            if (ModelDropped != null)\r\n                ModelDropped(this, args);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        private void timer_Tick(object sender, EventArgs e) {\r\n            HandleTimerTick();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the timer tick event, which is sent when the listview should\r\n        /// scroll\r\n        /// </summary>\r\n        protected virtual void HandleTimerTick() {\r\n\r\n            // If the mouse has been released, stop scrolling.\r\n            // This is only necessary if the mouse is released outside of the control. \r\n            // If the mouse is released inside the control, we would receive a Drop event.\r\n            if ((IsLeftMouseButtonDown && (Control.MouseButtons & MouseButtons.Left) != MouseButtons.Left) ||\r\n                (IsMiddleMouseButtonDown && (Control.MouseButtons & MouseButtons.Middle) != MouseButtons.Middle) ||\r\n                (IsRightMouseButtonDown && (Control.MouseButtons & MouseButtons.Right) != MouseButtons.Right)) {\r\n                timer.Stop();\r\n                Cleanup();\r\n                return;\r\n            }\r\n\r\n            // Auto scrolling will continune while the mouse is close to the ListView\r\n            const int GRACE_PERIMETER = 30;\r\n\r\n            Point pt = ListView.PointToClient(Cursor.Position);\r\n            Rectangle r2 = ListView.ClientRectangle;\r\n            r2.Inflate(GRACE_PERIMETER, GRACE_PERIMETER);\r\n            if (r2.Contains(pt)) {\r\n                ListView.LowLevelScroll(0, scrollAmount);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// When the mouse is at the given point, what should the target of the drop be?\r\n        /// </summary>\r\n        /// <remarks>This method should update the DropTarget* members of the given arg block</remarks>\r\n        /// <param name=\"args\"></param>\r\n        /// <param name=\"pt\">The mouse point, in client co-ordinates</param>\r\n        protected virtual void CalculateDropTarget(OlvDropEventArgs args, Point pt) {\r\n            const int SMALL_VALUE = 3;\r\n            DropTargetLocation location = DropTargetLocation.None;\r\n            int targetIndex = -1;\r\n            int targetSubIndex = 0;\r\n\r\n            if (CanDropOnBackground)\r\n                location = DropTargetLocation.Background;\r\n\r\n            // Which item is the mouse over?\r\n            // If it is not over any item, it's over the background.\r\n            //ListViewHitTestInfo info = this.ListView.HitTest(pt.X, pt.Y);\r\n            OlvListViewHitTestInfo info = ListView.OlvHitTest(pt.X, pt.Y);\r\n            if (info.Item != null && CanDropOnItem) {\r\n                location = DropTargetLocation.Item;\r\n                targetIndex = info.Item.Index;\r\n                if (info.SubItem != null && CanDropOnSubItem)\r\n                    targetSubIndex = info.Item.SubItems.IndexOf(info.SubItem);\r\n            }\r\n\r\n            // Check to see if the mouse is \"between\" rows.\r\n            // (\"between\" is somewhat loosely defined)\r\n            if (CanDropBetween && ListView.GetItemCount() > 0) {\r\n\r\n                // If the mouse is over an item, check to see if it is near the top or bottom\r\n                if (location == DropTargetLocation.Item) {\r\n                    if (pt.Y - SMALL_VALUE <= info.Item.Bounds.Top)\r\n                        location = DropTargetLocation.AboveItem;\r\n                    if (pt.Y + SMALL_VALUE >= info.Item.Bounds.Bottom)\r\n                        location = DropTargetLocation.BelowItem;\r\n                } else {\r\n                    // Is there an item a little below the mouse?\r\n                    // If so, we say the drop point is above that row\r\n                    info = ListView.OlvHitTest(pt.X, pt.Y + SMALL_VALUE);\r\n                    if (info.Item != null) {\r\n                        targetIndex = info.Item.Index;\r\n                        location = DropTargetLocation.AboveItem;\r\n                    } else {\r\n                        // Is there an item a little above the mouse?\r\n                        info = ListView.OlvHitTest(pt.X, pt.Y - SMALL_VALUE);\r\n                        if (info.Item != null) {\r\n                            targetIndex = info.Item.Index;\r\n                            location = DropTargetLocation.BelowItem;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            args.DropTargetLocation = location;\r\n            args.DropTargetIndex = targetIndex;\r\n            args.DropTargetSubItemIndex = targetSubIndex;\r\n        }\r\n\r\n        /// <summary>\r\n        /// What sort of action is possible when the mouse is at the given point?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// </remarks>\r\n        /// <param name=\"args\"></param>\r\n        /// <param name=\"pt\"></param>\r\n        /// <returns></returns>\r\n        public virtual DragDropEffects CalculateDropAction(DragEventArgs args, Point pt) {\r\n\r\n            CalculateDropTarget(dropEventArgs, pt);\r\n\r\n            dropEventArgs.MouseLocation = pt;\r\n            dropEventArgs.InfoMessage = null;\r\n            dropEventArgs.Handled = false;\r\n\r\n            if (dropEventArgs.SourceListView != null) {\r\n                dropEventArgs.TargetModel = ListView.GetModelObject(dropEventArgs.DropTargetIndex);\r\n                OnModelCanDrop(dropEventArgs);\r\n            }\r\n\r\n            if (!dropEventArgs.Handled)\r\n                OnCanDrop(dropEventArgs);\r\n\r\n            UpdateAfterCanDropEvent(dropEventArgs);\r\n\r\n            return dropEventArgs.Effect;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Based solely on the state of the modifier keys, what drop operation should\r\n        /// be used?\r\n        /// </summary>\r\n        /// <returns>The drop operation that matches the state of the keys</returns>\r\n        public DragDropEffects CalculateStandardDropActionFromKeys() {\r\n            if (IsControlDown) {\r\n                if (IsShiftDown)\r\n                    return DragDropEffects.Link;\r\n                else\r\n                    return DragDropEffects.Copy;\r\n            } else {\r\n                return DragDropEffects.Move;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should the listview be made to scroll when the mouse is at the given point?\r\n        /// </summary>\r\n        /// <param name=\"pt\"></param>\r\n        protected virtual void CheckScrolling(Point pt) {\r\n            if (!AutoScroll)\r\n                return;\r\n\r\n            Rectangle r = ListView.ContentRectangle;\r\n            int rowHeight = ListView.RowHeightEffective;\r\n            int close = rowHeight;\r\n\r\n            // In Tile view, using the whole row height is too much\r\n            if (ListView.View == View.Tile)\r\n                close /= 2;\r\n\r\n            if (pt.Y <= (r.Top + close)) {\r\n                // Scroll faster if the mouse is closer to the top\r\n                timer.Interval = ((pt.Y <= (r.Top + close / 2)) ? 100 : 350);\r\n                timer.Start();\r\n                scrollAmount = -rowHeight;\r\n            } else {\r\n                if (pt.Y >= (r.Bottom - close)) {\r\n                    timer.Interval = ((pt.Y >= (r.Bottom - close / 2)) ? 100 : 350);\r\n                    timer.Start();\r\n                    scrollAmount = rowHeight;\r\n                } else {\r\n                    timer.Stop();\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the state of our sink to reflect the information that \r\n        /// may have been written into the drop event args.\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void UpdateAfterCanDropEvent(OlvDropEventArgs args) {\r\n            DropTargetIndex = args.DropTargetIndex;\r\n            DropTargetLocation = args.DropTargetLocation;\r\n            DropTargetSubItemIndex = args.DropTargetSubItemIndex;\r\n\r\n            if (Billboard != null) {\r\n                Point pt = args.MouseLocation;\r\n                pt.Offset(5, 5);\r\n                if (Billboard.Text != dropEventArgs.InfoMessage || Billboard.Location != pt) {\r\n                    Billboard.Text = dropEventArgs.InfoMessage;\r\n                    Billboard.Location = pt;\r\n                    ListView.Invalidate();\r\n                }\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Rendering\r\n\r\n        /// <summary>\r\n        /// Draw the feedback that shows that the background is the target\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"bounds\"></param>\r\n        protected virtual void DrawFeedbackBackgroundTarget(Graphics g, Rectangle bounds) {\r\n            float penWidth = 12.0f;\r\n            Rectangle r = bounds;\r\n            r.Inflate((int)-penWidth / 2, (int)-penWidth / 2);\r\n            using (Pen p = new Pen(Color.FromArgb(128, FeedbackColor), penWidth)) {\r\n                using (GraphicsPath path = GetRoundedRect(r, 30.0f)) {\r\n                    g.DrawPath(p, path);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the feedback that shows that an item (or a subitem) is the target\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"bounds\"></param>\r\n        /// <remarks>\r\n        /// DropTargetItem and DropTargetSubItemIndex tells what is the target\r\n        /// </remarks>\r\n        protected virtual void DrawFeedbackItemTarget(Graphics g, Rectangle bounds) {\r\n            if (DropTargetItem == null)\r\n                return;\r\n            Rectangle r = CalculateDropTargetRectangle(DropTargetItem, DropTargetSubItemIndex);\r\n            r.Inflate(1, 1);\r\n            float diameter = r.Height / 3;\r\n            using (GraphicsPath path = GetRoundedRect(r, diameter)) {\r\n                using (SolidBrush b = new SolidBrush(Color.FromArgb(48, FeedbackColor))) {\r\n                    g.FillPath(b, path);\r\n                }\r\n                using (Pen p = new Pen(FeedbackColor, 3.0f)) {\r\n                    g.DrawPath(p, path);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the feedback that shows the drop will occur before target\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"bounds\"></param>\r\n        protected virtual void DrawFeedbackAboveItemTarget(Graphics g, Rectangle bounds) {\r\n            if (DropTargetItem == null)\r\n                return;\r\n\r\n            Rectangle r = CalculateDropTargetRectangle(DropTargetItem, DropTargetSubItemIndex);\r\n            DrawBetweenLine(g, r.Left, r.Top, r.Right, r.Top);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the feedback that shows the drop will occur after target\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"bounds\"></param>\r\n        protected virtual void DrawFeedbackBelowItemTarget(Graphics g, Rectangle bounds) {\r\n            if (DropTargetItem == null)\r\n                return;\r\n\r\n            Rectangle r = CalculateDropTargetRectangle(DropTargetItem, DropTargetSubItemIndex);\r\n            DrawBetweenLine(g, r.Left, r.Bottom, r.Right, r.Bottom);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a GraphicPath that is round corner rectangle.\r\n        /// </summary>\r\n        /// <param name=\"rect\"></param>\r\n        /// <param name=\"diameter\"></param>\r\n        /// <returns></returns>\r\n        protected GraphicsPath GetRoundedRect(Rectangle rect, float diameter) {\r\n            GraphicsPath path = new GraphicsPath();\r\n\r\n            RectangleF arc = new RectangleF(rect.X, rect.Y, diameter, diameter);\r\n            path.AddArc(arc, 180, 90);\r\n            arc.X = rect.Right - diameter;\r\n            path.AddArc(arc, 270, 90);\r\n            arc.Y = rect.Bottom - diameter;\r\n            path.AddArc(arc, 0, 90);\r\n            arc.X = rect.Left;\r\n            path.AddArc(arc, 90, 90);\r\n            path.CloseFigure();\r\n\r\n            return path;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate the target rectangle when the given item (and possible subitem)\r\n        /// is the target of the drop.\r\n        /// </summary>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItem\"></param>\r\n        /// <returns></returns>\r\n        protected virtual Rectangle CalculateDropTargetRectangle(OLVListItem item, int subItem) {\r\n            if (subItem > 0)\r\n                return item.SubItems[subItem].Bounds;\r\n            \r\n            Rectangle r = ListView.CalculateCellTextBounds(item, subItem);\r\n\r\n            // Allow for indent\r\n            if (item.IndentCount > 0) {\r\n                int indentWidth = ListView.SmallImageSize.Width;\r\n                r.X += (indentWidth * item.IndentCount);\r\n                r.Width -= (indentWidth * item.IndentCount);\r\n            }\r\n\r\n            return r;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw a \"between items\" line at the given co-ordinates\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"x1\"></param>\r\n        /// <param name=\"y1\"></param>\r\n        /// <param name=\"x2\"></param>\r\n        /// <param name=\"y2\"></param>\r\n        protected virtual void DrawBetweenLine(Graphics g, int x1, int y1, int x2, int y2) {\r\n            using (Brush b = new SolidBrush(FeedbackColor)) {\r\n                int x = x1;\r\n                int y = y1;\r\n                using (GraphicsPath gp = new GraphicsPath()) {\r\n                    gp.AddLine(\r\n                        x, y + 5,\r\n                        x, y - 5);\r\n                    gp.AddBezier(\r\n                        x, y - 6,\r\n                        x + 3, y - 2,\r\n                        x + 6, y - 1,\r\n                        x + 11, y);\r\n                    gp.AddBezier(\r\n                        x + 11, y,\r\n                        x + 6, y + 1,\r\n                        x + 3, y + 2,\r\n                        x, y + 6);\r\n                    gp.CloseFigure();\r\n                    g.FillPath(b, gp);\r\n                }\r\n                x = x2;\r\n                y = y2;\r\n                using (GraphicsPath gp = new GraphicsPath()) {\r\n                    gp.AddLine(\r\n                        x, y + 6,\r\n                        x, y - 6);\r\n                    gp.AddBezier(\r\n                        x, y - 7,\r\n                        x - 3, y - 2,\r\n                        x - 6, y - 1,\r\n                        x - 11, y);\r\n                    gp.AddBezier(\r\n                        x - 11, y,\r\n                        x - 6, y + 1,\r\n                        x - 3, y + 2,\r\n                        x, y + 7);\r\n                    gp.CloseFigure();\r\n                    g.FillPath(b, gp);\r\n                }\r\n            }\r\n            using (Pen p = new Pen(FeedbackColor, 3.0f)) {\r\n                g.DrawLine(p, x1, y1, x2, y2);\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        private Timer timer;\r\n        private int scrollAmount;\r\n        private bool originalFullRowSelect;\r\n        private ModelDropEventArgs dropEventArgs;\r\n    }\r\n\r\n    /// <summary>\r\n    /// This drop sink allows items within the same list to be rearranged,\r\n    /// as well as allowing items to be dropped from other lists.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>\r\n    /// This class can only be used on plain ObjectListViews and FastObjectListViews.\r\n    /// The other flavours have no way to implement the insert operation that is required.\r\n    /// </para>\r\n    /// <para>\r\n    /// This class does not work with grouping.\r\n    /// </para>\r\n    /// <para>\r\n    /// This class works when the OLV is sorted, but it is up to the programmer\r\n    /// to decide what rearranging such lists \"means\". Example: if the control is sorting\r\n    /// students by academic grade, and the user drags a \"Fail\" grade student up amonst the \"A+\"\r\n    /// students, it is the responsibility of the programmer to makes the appropriate changes\r\n    /// to the model and redraw/rebuild the control so that the users action makes sense.\r\n    /// </para>\r\n    /// <para>\r\n    /// Users of this class should listen for the CanDrop event to decide\r\n    /// if models from another OLV can be moved to OLV under this sink.\r\n    /// </para>\r\n    /// </remarks>\r\n    public class RearrangingDropSink : SimpleDropSink\r\n    {\r\n        /// <summary>\r\n        /// Create a RearrangingDropSink\r\n        /// </summary>\r\n        public RearrangingDropSink() {\r\n            CanDropBetween = true;\r\n            CanDropOnBackground = true;\r\n            CanDropOnItem = false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a RearrangingDropSink\r\n        /// </summary>\r\n        /// <param name=\"acceptDropsFromOtherLists\"></param>\r\n        public RearrangingDropSink(bool acceptDropsFromOtherLists)\r\n            : this() {\r\n            AcceptExternal = acceptDropsFromOtherLists;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger OnModelCanDrop\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected override void OnModelCanDrop(ModelDropEventArgs args) {\r\n            base.OnModelCanDrop(args);\r\n\r\n            if (args.Handled)\r\n                return;\r\n\r\n            args.Effect = DragDropEffects.Move;\r\n\r\n            // Don't allow drops from other list, if that's what's configured\r\n            if (!AcceptExternal && args.SourceListView != ListView) {\r\n                args.Effect = DragDropEffects.None;\r\n                args.DropTargetLocation = DropTargetLocation.None;\r\n                args.InfoMessage = \"This list doesn't accept drops from other lists\";\r\n            }\r\n\r\n            // If we are rearranging a list, don't allow drops on the background\r\n            if (args.DropTargetLocation == DropTargetLocation.Background && args.SourceListView == ListView) {\r\n                args.Effect = DragDropEffects.None;\r\n                args.DropTargetLocation = DropTargetLocation.None;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger OnModelDropped\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected override void OnModelDropped(ModelDropEventArgs args) {\r\n            base.OnModelDropped(args);\r\n\r\n            if (!args.Handled)\r\n                RearrangeModels(args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the work of processing the dropped items\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        public virtual void RearrangeModels(ModelDropEventArgs args) {\r\n            switch (args.DropTargetLocation) {\r\n                case DropTargetLocation.AboveItem:\r\n                    ListView.MoveObjects(args.DropTargetIndex, args.SourceModels);\r\n                    break;\r\n                case DropTargetLocation.BelowItem:\r\n                    ListView.MoveObjects(args.DropTargetIndex + 1, args.SourceModels);\r\n                    break;\r\n                case DropTargetLocation.Background:\r\n                    ListView.AddObjects(args.SourceModels);\r\n                    break;\r\n                default:\r\n                    return;\r\n            }\r\n\r\n            if (args.SourceListView != ListView) {\r\n                args.SourceListView.RemoveObjects(args.SourceModels);\r\n            }\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// When a drop sink needs to know if something can be dropped, or\r\n    /// to notify that a drop has occured, it uses an instance of this class.\r\n    /// </summary>\r\n    public class OlvDropEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a OlvDropEventArgs\r\n        /// </summary>\r\n        public OlvDropEventArgs() {\r\n        }\r\n\r\n        #region Data Properties\r\n\r\n        /// <summary>\r\n        /// Get the original drag-drop event args\r\n        /// </summary>\r\n        public DragEventArgs DragEventArgs\r\n        {\r\n            get { return dragEventArgs; }\r\n            internal set { dragEventArgs = value; }\r\n        }\r\n        private DragEventArgs dragEventArgs;\r\n\r\n        /// <summary>\r\n        /// Get the data object that is being dragged\r\n        /// </summary>\r\n        public object DataObject\r\n        {\r\n            get { return dataObject; }\r\n            internal set { dataObject = value; }\r\n        }\r\n        private object dataObject;\r\n\r\n        /// <summary>\r\n        /// Get the drop sink that originated this event\r\n        /// </summary>\r\n        public SimpleDropSink DropSink {\r\n            get { return dropSink; }\r\n            internal set { dropSink = value; }\r\n        }\r\n        private SimpleDropSink dropSink;\r\n\r\n        /// <summary>\r\n        /// Get or set the index of the item that is the target of the drop\r\n        /// </summary>\r\n        public int DropTargetIndex {\r\n            get { return dropTargetIndex; }\r\n            set { dropTargetIndex = value; }\r\n        }\r\n        private int dropTargetIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Get or set the location of the target of the drop\r\n        /// </summary>\r\n        public DropTargetLocation DropTargetLocation {\r\n            get { return dropTargetLocation; }\r\n            set { dropTargetLocation = value; }\r\n        }\r\n        private DropTargetLocation dropTargetLocation;\r\n\r\n        /// <summary>\r\n        /// Get or set the index of the subitem that is the target of the drop\r\n        /// </summary>\r\n        public int DropTargetSubItemIndex {\r\n            get { return dropTargetSubItemIndex; }\r\n            set { dropTargetSubItemIndex = value; }\r\n        }\r\n        private int dropTargetSubItemIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Get the item that is the target of the drop\r\n        /// </summary>\r\n        public OLVListItem DropTargetItem {\r\n            get {\r\n                return ListView.GetItem(DropTargetIndex);\r\n            }\r\n            set {\r\n                if (value == null)\r\n                    DropTargetIndex = -1;\r\n                else\r\n                    DropTargetIndex = value.Index;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the drag effect that should be used for this operation\r\n        /// </summary>\r\n        public DragDropEffects Effect {\r\n            get { return effect; }\r\n            set { effect = value; }\r\n        }\r\n        private DragDropEffects effect;\r\n\r\n        /// <summary>\r\n        /// Get or set if this event was handled. No further processing will be done for a handled event.\r\n        /// </summary>\r\n        public bool Handled {\r\n            get { return handled; }\r\n            set { handled = value; }\r\n        }\r\n        private bool handled;\r\n\r\n        /// <summary>\r\n        /// Get or set the feedback message for this operation\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If this is not null, it will be displayed as a feedback message\r\n        /// during the drag.\r\n        /// </remarks>\r\n        public string InfoMessage {\r\n            get { return infoMessage; }\r\n            set { infoMessage = value; }\r\n        }\r\n        private string infoMessage;\r\n\r\n        /// <summary>\r\n        /// Get the ObjectListView that is being dropped on\r\n        /// </summary>\r\n        public ObjectListView ListView {\r\n            get { return listView; }\r\n            internal set { listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Get the location of the mouse (in target ListView co-ords)\r\n        /// </summary>\r\n        public Point MouseLocation {\r\n            get { return mouseLocation; }\r\n            internal set { mouseLocation = value; }\r\n        }\r\n        private Point mouseLocation;\r\n\r\n        /// <summary>\r\n        /// Get the drop action indicated solely by the state of the modifier keys\r\n        /// </summary>\r\n        public DragDropEffects StandardDropActionFromKeys {\r\n            get {\r\n                return DropSink.CalculateStandardDropActionFromKeys();\r\n            }\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// These events are triggered when the drag source is an ObjectListView.\r\n    /// </summary>\r\n    public class ModelDropEventArgs : OlvDropEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a ModelDropEventArgs\r\n        /// </summary>\r\n        public ModelDropEventArgs()\r\n        {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the model objects that are being dragged.\r\n        /// </summary>\r\n        public IList SourceModels {\r\n            get { return dragModels; }\r\n            internal set { \r\n                dragModels = value;\r\n                if (SourceListView is TreeListView tlv) {\r\n                    foreach (object model in SourceModels) {\r\n                        object parent = tlv.GetParent(model);\r\n                        if (!toBeRefreshed.Contains(parent))\r\n                            toBeRefreshed.Add(parent);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        private IList dragModels;\r\n        private ArrayList toBeRefreshed = new();\r\n\r\n        /// <summary>\r\n        /// Gets the ObjectListView that is the source of the dragged objects.\r\n        /// </summary>\r\n        public ObjectListView SourceListView {\r\n            get { return sourceListView; }\r\n            internal set { sourceListView = value; }\r\n        }\r\n        private ObjectListView sourceListView;\r\n\r\n        /// <summary>\r\n        /// Get the model object that is being dropped upon.\r\n        /// </summary>\r\n        /// <remarks>This is only value for TargetLocation == Item</remarks>\r\n        public object TargetModel {\r\n            get { return targetModel; }\r\n            internal set { targetModel = value; }\r\n        }\r\n        private object targetModel;\r\n\r\n        /// <summary>\r\n        /// Refresh all the objects involved in the operation\r\n        /// </summary>\r\n        public void RefreshObjects() {\r\n\r\n            toBeRefreshed.AddRange(SourceModels);\r\n            if (SourceListView is not TreeListView tlv)\r\n                SourceListView.RefreshObjects(toBeRefreshed);\r\n            else\r\n                tlv.RebuildAll(true);\r\n\r\n            if (ListView is not TreeListView tlv2)\r\n                ListView.RefreshObject(TargetModel);\r\n            else\r\n                tlv2.RebuildAll(true);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/DragDrop/OLVDataObject.cs",
    "content": "﻿/*\r\n * OLVDataObject.cs - An OLE DataObject that knows how to convert rows of an OLV to text and HTML\r\n *\r\n * Author: Phillip Piper\r\n * Date: 2011-03-29 3:34PM\r\n *\r\n * Change log:\r\n * v2.8\r\n * 2014-05-02   JPP  - When the listview is completely empty, don't try to set CSV text in the clipboard.\r\n * v2.6\r\n * 2012-08-08   JPP  - Changed to use OLVExporter.\r\n *                   - Added CSV to formats exported to Clipboard\r\n * v2.4\r\n * 2011-03-29   JPP  - Initial version\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware {\r\n    \r\n    /// <summary>\r\n    /// A data transfer object that knows how to transform a list of model\r\n    /// objects into a text and HTML representation.\r\n    /// </summary>\r\n    public class OLVDataObject : DataObject {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create a data object from the selected objects in the given ObjectListView\r\n        /// </summary>\r\n        /// <param name=\"olv\">The source of the data object</param>\r\n        public OLVDataObject(ObjectListView olv)\r\n            : this(olv, olv.SelectedObjects) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a data object which operates on the given model objects \r\n        /// in the given ObjectListView\r\n        /// </summary>\r\n        /// <param name=\"olv\">The source of the data object</param>\r\n        /// <param name=\"modelObjects\">The model objects to be put into the data object</param>\r\n        public OLVDataObject(ObjectListView olv, IList modelObjects) {\r\n            objectListView = olv;\r\n            this.modelObjects = modelObjects;\r\n            includeHiddenColumns = olv.IncludeHiddenColumnsInDataTransfer;\r\n            includeColumnHeaders = olv.IncludeColumnHeadersInCopy;\r\n            CreateTextFormats();\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether hidden columns will also be included in the text\r\n        /// and HTML representation. If this is false, only visible columns will\r\n        /// be included.\r\n        /// </summary>\r\n        public bool IncludeHiddenColumns {\r\n            get { return includeHiddenColumns; }\r\n        }\r\n        private readonly bool includeHiddenColumns;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether column headers will also be included in the text\r\n        /// and HTML representation.\r\n        /// </summary>\r\n        public bool IncludeColumnHeaders {\r\n            get { return includeColumnHeaders; }\r\n        }\r\n        private readonly bool includeColumnHeaders;\r\n\r\n        /// <summary>\r\n        /// Gets the ObjectListView that is being used as the source of the data\r\n        /// </summary>\r\n        public ObjectListView ListView {\r\n            get { return objectListView; }\r\n        }\r\n        private readonly ObjectListView objectListView;\r\n\r\n        /// <summary>\r\n        /// Gets the model objects that are to be placed in the data object\r\n        /// </summary>\r\n        public IList ModelObjects {\r\n            get { return modelObjects; }\r\n        }\r\n        private readonly IList modelObjects;\r\n\r\n        #endregion\r\n\r\n        /// <summary>\r\n        /// Put a text and HTML representation of our model objects\r\n        /// into the data object.\r\n        /// </summary>\r\n        public void CreateTextFormats() {\r\n\r\n            OLVExporter exporter = CreateExporter();\r\n\r\n            // Put both the text and html versions onto the clipboard.\r\n            // For some reason, SetText() with UnicodeText doesn't set the basic CF_TEXT format,\r\n            // but using SetData() does.\r\n            //this.SetText(sbText.ToString(), TextDataFormat.UnicodeText);\r\n            SetData(exporter.ExportTo(OLVExporter.ExportFormat.TabSeparated));\r\n            string exportTo = exporter.ExportTo(OLVExporter.ExportFormat.CSV);\r\n            if (!String.IsNullOrEmpty(exportTo))\r\n                SetText(exportTo, TextDataFormat.CommaSeparatedValue);\r\n            SetText(ConvertToHtmlFragment(exporter.ExportTo(OLVExporter.ExportFormat.HTML)), TextDataFormat.Html);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create an exporter for the data contained in this object\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        protected OLVExporter CreateExporter() {\r\n            OLVExporter exporter = new OLVExporter(ListView);\r\n            exporter.IncludeColumnHeaders = IncludeColumnHeaders;\r\n            exporter.IncludeHiddenColumns = IncludeHiddenColumns;\r\n            exporter.ModelObjects = ModelObjects;\r\n            return exporter;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a HTML representation of our model objects\r\n        /// </summary>\r\n        [Obsolete(\"Use OLVExporter directly instead\", false)]\r\n        public string CreateHtml() {\r\n            OLVExporter exporter = CreateExporter();\r\n            return exporter.ExportTo(OLVExporter.ExportFormat.HTML);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Convert the fragment of HTML into the Clipboards HTML format.\r\n        /// </summary>\r\n        /// <remarks>The HTML format is found here http://msdn2.microsoft.com/en-us/library/aa767917.aspx\r\n        /// </remarks>\r\n        /// <param name=\"fragment\">The HTML to put onto the clipboard. It must be valid HTML!</param>\r\n        /// <returns>A string that can be put onto the clipboard and will be recognized as HTML</returns>\r\n        private string ConvertToHtmlFragment(string fragment) {\r\n            // Minimal implementation of HTML clipboard format\r\n            const string SOURCE = \"http://www.codeproject.com/Articles/16009/A-Much-Easier-to-Use-ListView\";\r\n\r\n            const String MARKER_BLOCK =\r\n                \"Version:1.0\\r\\n\" +\r\n                \"StartHTML:{0,8}\\r\\n\" +\r\n                \"EndHTML:{1,8}\\r\\n\" +\r\n                \"StartFragment:{2,8}\\r\\n\" +\r\n                \"EndFragment:{3,8}\\r\\n\" +\r\n                \"StartSelection:{2,8}\\r\\n\" +\r\n                \"EndSelection:{3,8}\\r\\n\" +\r\n                \"SourceURL:{4}\\r\\n\" +\r\n                \"{5}\";\r\n\r\n            int prefixLength = String.Format(MARKER_BLOCK, 0, 0, 0, 0, SOURCE, \"\").Length;\r\n\r\n            const String DEFAULT_HTML_BODY =\r\n                \"<!DOCTYPE HTML PUBLIC \\\"-//W3C//DTD HTML 4.0 Transitional//EN\\\">\" +\r\n                \"<HTML><HEAD></HEAD><BODY><!--StartFragment-->{0}<!--EndFragment--></BODY></HTML>\";\r\n\r\n            string html = String.Format(DEFAULT_HTML_BODY, fragment);\r\n            int startFragment = prefixLength + html.IndexOf(fragment, StringComparison.Ordinal);\r\n            int endFragment = startFragment + fragment.Length;\r\n\r\n            return String.Format(MARKER_BLOCK, prefixLength, prefixLength + html.Length, startFragment, endFragment, SOURCE, html);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/FastDataListView.cs",
    "content": "﻿/*\r\n * FastDataListView - A data bindable listview that has the speed of a virtual list\r\n *\r\n * Author: Phillip Piper\r\n * Date: 22/09/2010 8:11 AM\r\n *\r\n * Change log:\r\n * 2015-02-02   JPP  - Made Unfreezing more efficient by removing a redundant BuildList() call\r\n * v2.6\r\n * 2010-09-22   JPP  - Initial version\r\n *\r\n * Copyright (C) 2006-2015 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Data;\r\nusing System.ComponentModel;\r\nusing System.Windows.Forms;\r\nusing System.Drawing.Design;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A FastDataListView virtualizes the display of data from a DataSource. It operates on\r\n    /// DataSets and DataTables in the same way as a DataListView, but does so much more efficiently.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>\r\n    /// A FastDataListView still has to load all its data from the DataSource. If you have SQL statement\r\n    /// that returns 1 million rows, all 1 million rows will still need to read from the database.\r\n    /// However, once the rows are loaded, the FastDataListView will only build rows as they are displayed.\r\n    /// </para>\r\n    /// </remarks>\r\n    public class FastDataListView : FastObjectListView\r\n    {\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (adapter != null) {\r\n                adapter.Dispose();\r\n                adapter = null;\r\n            }\r\n\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Public Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not columns will be automatically generated to show the\r\n        /// columns when the DataSource is set. \r\n        /// </summary>\r\n        /// <remarks>This must be set before the DataSource is set. It has no effect afterwards.</remarks>\r\n        [Category(\"Data\"),\r\n         Description(\"Should the control automatically generate columns from the DataSource\"),\r\n         DefaultValue(true)]\r\n        public bool AutoGenerateColumns\r\n        {\r\n            get { return Adapter.AutoGenerateColumns; }\r\n            set { Adapter.AutoGenerateColumns = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the VirtualListDataSource that will be displayed in this list view.\r\n        /// </summary>\r\n        /// <remarks>The VirtualListDataSource should implement either <see cref=\"IList\"/>, <see cref=\"IBindingList\"/>,\r\n        /// or <see cref=\"IListSource\"/>. Some common examples are the following types of objects:\r\n        /// <list type=\"unordered\">\r\n        /// <item><description><see cref=\"DataView\"/></description></item>\r\n        /// <item><description><see cref=\"DataTable\"/></description></item>\r\n        /// <item><description><see cref=\"DataSet\"/></description></item>\r\n        /// <item><description><see cref=\"DataViewManager\"/></description></item>\r\n        /// <item><description><see cref=\"BindingSource\"/></description></item>\r\n        /// </list>\r\n        /// <para>When binding to a list container (i.e. one that implements the\r\n        /// <see cref=\"IListSource\"/> interface, such as <see cref=\"DataSet\"/>)\r\n        /// you must also set the <see cref=\"DataMember\"/> property in order\r\n        /// to identify which particular list you would like to display. You\r\n        /// may also set the <see cref=\"DataMember\"/> property even when\r\n        /// VirtualListDataSource refers to a list, since <see cref=\"DataMember\"/> can\r\n        /// also be used to navigate relations between lists.</para>\r\n        /// </remarks>\r\n        [Category(\"Data\"),\r\n        TypeConverter(\"System.Windows.Forms.Design.DataSourceConverter, System.Design\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public virtual Object DataSource\r\n        {\r\n            get { return Adapter.DataSource; }\r\n            set { Adapter.DataSource = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the name of the list or table in the data source for which the DataListView is displaying data.\r\n        /// </summary>\r\n        /// <remarks>If the data source is not a DataSet or DataViewManager, this property has no effect</remarks>\r\n        [Category(\"Data\"),\r\n         Editor(\"System.Windows.Forms.Design.DataMemberListEditor, System.Design\", typeof(UITypeEditor)),\r\n         DefaultValue(\"\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public virtual string DataMember\r\n        {\r\n            get { return Adapter.DataMember; }\r\n            set { Adapter.DataMember = value; }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the DataSourceAdaptor that does the bulk of the work needed\r\n        /// for data binding.\r\n        /// </summary>\r\n        protected DataSourceAdapter Adapter {\r\n            get {\r\n                if (adapter == null)\r\n                    adapter = CreateDataSourceAdapter();\r\n                return adapter;\r\n            }\r\n            set { adapter = value; }\r\n        }\r\n        private DataSourceAdapter adapter;\r\n\r\n        #endregion\r\n\r\n        #region Implementation \r\n\r\n        /// <summary>\r\n        /// Create the DataSourceAdapter that this control will use.\r\n        /// </summary>\r\n        /// <returns>A DataSourceAdapter configured for this list</returns>\r\n        /// <remarks>Subclasses should override this to create their\r\n        /// own specialized adapters</remarks>\r\n        protected virtual DataSourceAdapter CreateDataSourceAdapter() {\r\n            return new DataSourceAdapter(this);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the Unfreeze behaviour \r\n        /// </summary>\r\n        protected override void DoUnfreeze()\r\n        {\r\n\r\n            // Copied from base method, but we don't need to BuildList() since we know that our\r\n            // data adaptor is going to do that immediately after this method exits.\r\n            EndUpdate();\r\n            ResizeFreeSpaceFillingColumns();\r\n            // this.BuildList();\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/FastObjectListView.cs",
    "content": "/*\r\n * FastObjectListView - A listview that behaves like an ObjectListView but has the speed of a virtual list\r\n *\r\n * Author: Phillip Piper\r\n * Date: 27/09/2008 9:15 AM\r\n *\r\n * Change log:\r\n * 2014-10-15   JPP  - Fire Filter event when applying filters\r\n * v2.8\r\n * 2012-06-11   JPP  - Added more efficient version of FilteredObjects\r\n * v2.5.1\r\n * 2011-04-25   JPP  - Fixed problem with removing objects from filtered or sorted list\r\n * v2.4\r\n * 2010-04-05   JPP  - Added filtering\r\n * v2.3\r\n * 2009-08-27   JPP  - Added GroupingStrategy\r\n *                   - Added optimized Objects property\r\n * v2.2.1\r\n * 2009-01-07   JPP  - Made all public and protected methods virtual\r\n * 2008-09-27   JPP  - Separated from ObjectListView.cs\r\n *\r\n * Copyright (C) 2006-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A FastObjectListView trades function for speed.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>On my mid-range laptop, this view builds a list of 10,000 objects in 0.1 seconds,\r\n    /// as opposed to a normal ObjectListView which takes 10-15 seconds. Lists of up to 50,000 items should be\r\n    /// able to be handled with sub-second response times even on low end machines.</para>\r\n    /// <para>\r\n    /// A FastObjectListView is implemented as a virtual list with many of the virtual modes limits (e.g. no sorting)\r\n    /// fixed through coding. There are some functions that simply cannot be provided. Specifically, a FastObjectListView cannot:\r\n    /// <list type=\"bullet\">\r\n    /// <item><description>use Tile view</description></item>\r\n    /// <item><description>show groups on XP</description></item>\r\n    /// </list>\r\n    /// </para>\r\n    /// </remarks>\r\n    public class FastObjectListView : VirtualObjectListView\r\n    {\r\n        /// <summary>\r\n        /// Make a FastObjectListView\r\n        /// </summary>\r\n        public FastObjectListView() {\r\n            VirtualListDataSource = new FastObjectListDataSource(this);\r\n            GroupingStrategy = new FastListGroupingStrategy();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the collection of objects that survive any filtering that may be in place.\r\n        /// </summary>\r\n        [Browsable(false),\r\n            DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public override IEnumerable FilteredObjects {\r\n            get {\r\n                // This is much faster than the base method\r\n                return ((FastObjectListDataSource)VirtualListDataSource).FilteredObjectList;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get/set the collection of objects that this list will show\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// The contents of the control will be updated immediately after setting this property.\r\n        /// </para>\r\n        /// <para>This method preserves selection, if possible. Use SetObjects() if\r\n        /// you do not want to preserve the selection. Preserving selection is the slowest part of this\r\n        /// code and performance is O(n) where n is the number of selected rows.</para>\r\n        /// <para>This method is not thread safe.</para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public override IEnumerable Objects {\r\n            get {\r\n                // This is much faster than the base method\r\n                return ((FastObjectListDataSource)VirtualListDataSource).ObjectList;\r\n            }\r\n            set { base.Objects = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Move the given collection of objects to the given index.\r\n        /// </summary>\r\n        /// <remarks>This operation only makes sense on non-grouped ObjectListViews.</remarks>\r\n        /// <param name=\"index\"></param>\r\n        /// <param name=\"modelObjects\"></param>\r\n        public override void MoveObjects(int index, ICollection modelObjects) {\r\n            if (InvokeRequired) {\r\n                Invoke((MethodInvoker)delegate() { MoveObjects(index, modelObjects); });\r\n                return;\r\n            }\r\n\r\n            // If any object that is going to be moved is before the point where the insertion \r\n            // will occur, then we have to reduce the location of our insertion point\r\n            int displacedObjectCount = 0;\r\n            foreach (object modelObject in modelObjects) {\r\n                int i = IndexOf(modelObject);\r\n                if (i >= 0 && i <= index)\r\n                    displacedObjectCount++;\r\n            }\r\n            index -= displacedObjectCount;\r\n\r\n            BeginUpdate();\r\n            try {\r\n                RemoveObjects(modelObjects);\r\n                InsertObjects(index, modelObjects);\r\n            }\r\n            finally {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove any sorting and revert to the given order of the model objects\r\n        /// </summary>\r\n        /// <remarks>To be really honest, Unsort() doesn't work on FastObjectListViews since\r\n        /// the original ordering of model objects is lost when Sort() is called. So this method\r\n        /// effectively just turns off sorting.</remarks>\r\n        public override void Unsort() {\r\n            ShowGroups = false;\r\n            PrimarySortColumn = null;\r\n            PrimarySortOrder = SortOrder.None;\r\n            SetObjects(Objects);\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// Provide a data source for a FastObjectListView\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// This class isn't intended to be used directly, but it is left as a public\r\n    /// class just in case someone wants to subclass it.\r\n    /// </remarks>\r\n    public class FastObjectListDataSource : AbstractVirtualListDataSource\r\n    {\r\n        /// <summary>\r\n        /// Create a FastObjectListDataSource\r\n        /// </summary>\r\n        /// <param name=\"listView\"></param>\r\n        public FastObjectListDataSource(FastObjectListView listView)\r\n            : base(listView) {\r\n        }\r\n\r\n        #region IVirtualListDataSource Members\r\n\r\n        /// <summary>\r\n        /// Get n'th object\r\n        /// </summary>\r\n        /// <param name=\"n\"></param>\r\n        /// <returns></returns>\r\n        public override object GetNthObject(int n) {\r\n            if (n >= 0 && n < filteredObjectList.Count)\r\n                return filteredObjectList[n];\r\n            \r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// How many items are in the data source\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        public override int GetObjectCount() {\r\n            return filteredObjectList.Count;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get the index of the given model\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        public override int GetObjectIndex(object model) {\r\n            int index;\r\n\r\n            if (model != null && objectsToIndexMap.TryGetValue(model, out index))\r\n                return index;\r\n            \r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"text\"></param>\r\n        /// <param name=\"first\"></param>\r\n        /// <param name=\"last\"></param>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns></returns>\r\n        public override int SearchText(string text, int first, int last, OLVColumn column) {\r\n            if (first <= last) {\r\n                for (int i = first; i <= last; i++) {\r\n                    string data = column.GetStringValue(listView.GetNthItemInDisplayOrder(i).RowObject);\r\n                    if (data.StartsWith(text, StringComparison.CurrentCultureIgnoreCase))\r\n                        return i;\r\n                }\r\n            } else {\r\n                for (int i = first; i >= last; i--) {\r\n                    string data = column.GetStringValue(listView.GetNthItemInDisplayOrder(i).RowObject);\r\n                    if (data.StartsWith(text, StringComparison.CurrentCultureIgnoreCase))\r\n                        return i;\r\n                }\r\n            }\r\n\r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"sortOrder\"></param>\r\n        public override void Sort(OLVColumn column, SortOrder sortOrder) {\r\n            if (sortOrder != SortOrder.None) {\r\n                ModelObjectComparer comparer = new ModelObjectComparer(column, sortOrder, listView.SecondarySortColumn, listView.SecondarySortOrder);\r\n                fullObjectList.Sort(comparer);\r\n                filteredObjectList.Sort(comparer);\r\n            }\r\n            RebuildIndexMap();\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"modelObjects\"></param>\r\n        public override void AddObjects(ICollection modelObjects) {\r\n            foreach (object modelObject in modelObjects) {\r\n                if (modelObject != null)\r\n                    fullObjectList.Add(modelObject);\r\n            }\r\n            FilterObjects();\r\n            RebuildIndexMap();\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"index\"></param>\r\n        /// <param name=\"modelObjects\"></param>\r\n        public override void InsertObjects(int index, ICollection modelObjects) {\r\n            fullObjectList.InsertRange(index, modelObjects);\r\n            FilterObjects();\r\n            RebuildIndexMap();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove the given collection of models from this source.\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\"></param>\r\n        public override void RemoveObjects(ICollection modelObjects) {\r\n\r\n            // We have to unselect any object that is about to be deleted\r\n            List<int> indicesToRemove = new List<int>();\r\n            foreach (object modelObject in modelObjects) {\r\n                int i = GetObjectIndex(modelObject);\r\n                if (i >= 0)\r\n                    indicesToRemove.Add(i);\r\n            }\r\n\r\n            // Sort the indices from highest to lowest so that we\r\n            // remove latter ones before earlier ones. In this way, the\r\n            // indices of the rows doesn't change after the deletes.\r\n            indicesToRemove.Sort();\r\n            indicesToRemove.Reverse();\r\n\r\n            foreach (int i in indicesToRemove) \r\n                listView.SelectedIndices.Remove(i);\r\n\r\n            // Remove the objects from the unfiltered list\r\n            foreach (object modelObject in modelObjects)\r\n                fullObjectList.Remove(modelObject);\r\n\r\n            FilterObjects();\r\n            RebuildIndexMap();\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"collection\"></param>\r\n        public override void SetObjects(IEnumerable collection) {\r\n            ArrayList newObjects = ObjectListView.EnumerableToArray(collection, true);\r\n\r\n            fullObjectList = newObjects;\r\n            FilterObjects();\r\n            RebuildIndexMap();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update/replace the nth object with the given object\r\n        /// </summary>\r\n        /// <param name=\"index\"></param>\r\n        /// <param name=\"modelObject\"></param>\r\n        public override void UpdateObject(int index, object modelObject) {\r\n            if (index < 0 || index >= filteredObjectList.Count)\r\n                return;\r\n\r\n            int i = fullObjectList.IndexOf(filteredObjectList[index]);\r\n            if (i < 0)\r\n                return;\r\n\r\n            if (ReferenceEquals(fullObjectList[i], modelObject))\r\n                return;\r\n\r\n            fullObjectList[i] = modelObject;\r\n            filteredObjectList[index] = modelObject;\r\n            objectsToIndexMap[modelObject] = index;\r\n        }\r\n\r\n        private ArrayList fullObjectList = new();\r\n        private ArrayList filteredObjectList = new();\r\n        private IModelFilter modelFilter;\r\n        private IListFilter listFilter;\r\n\r\n        #endregion\r\n\r\n        #region IFilterableDataSource Members\r\n\r\n        /// <summary>\r\n        /// Apply the given filters to this data source. One or both may be null.\r\n        /// </summary>\r\n        /// <param name=\"iModelFilter\"></param>\r\n        /// <param name=\"iListFilter\"></param>\r\n        public override void ApplyFilters(IModelFilter iModelFilter, IListFilter iListFilter) {\r\n            modelFilter = iModelFilter;\r\n            listFilter = iListFilter;\r\n            SetObjects(fullObjectList);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        /// <summary>\r\n        /// Gets the full list of objects being used for this fast list. \r\n        /// This list is unfiltered.\r\n        /// </summary>\r\n        public ArrayList ObjectList {\r\n            get { return fullObjectList; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the list of objects from ObjectList which survive any installed filters.\r\n        /// </summary>\r\n        public ArrayList FilteredObjectList {\r\n            get { return filteredObjectList; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Rebuild the map that remembers which model object is displayed at which line\r\n        /// </summary>\r\n        protected void RebuildIndexMap() {\r\n            objectsToIndexMap.Clear();\r\n            for (int i = 0; i < filteredObjectList.Count; i++)\r\n                objectsToIndexMap[filteredObjectList[i]] = i;\r\n        }\r\n        readonly Dictionary<Object, int> objectsToIndexMap = new();\r\n\r\n        /// <summary>\r\n        /// Build our filtered list from our full list.\r\n        /// </summary>\r\n        protected void FilterObjects() {\r\n\r\n            // If this list isn't filtered, we don't need to do anything else\r\n            if (!listView.UseFiltering) {\r\n                filteredObjectList = new ArrayList(fullObjectList);\r\n                return;\r\n            }\r\n\r\n            // Tell the world to filter the objects. If they do so, don't do anything else\r\n            // ReSharper disable PossibleMultipleEnumeration\r\n            FilterEventArgs args = new FilterEventArgs(fullObjectList);\r\n            listView.OnFilter(args);\r\n            if (args.FilteredObjects != null) {\r\n                filteredObjectList = ObjectListView.EnumerableToArray(args.FilteredObjects, false);\r\n                return;\r\n            }\r\n\r\n            IEnumerable objects = (listFilter == null) ?\r\n                fullObjectList : listFilter.Filter(fullObjectList);\r\n\r\n            // Apply the object filter if there is one\r\n            if (modelFilter == null) {\r\n                filteredObjectList = ObjectListView.EnumerableToArray(objects, false);\r\n            } else {\r\n                filteredObjectList = new ArrayList();\r\n                foreach (object model in objects) {\r\n                    if (modelFilter.Filter(model))\r\n                        filteredObjectList.Add(model);\r\n                }\r\n            }\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Filtering/Cluster.cs",
    "content": "﻿/*\r\n * Cluster - Implements a simple cluster\r\n *\r\n * Author: Phillip Piper\r\n * Date: 3-March-2011 10:53 pm\r\n *\r\n * Change log:\r\n * 2011-03-03  JPP  - First version\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// Concrete implementation of the ICluster interface.\r\n    /// </summary>\r\n    public class Cluster : ICluster {\r\n\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create a cluster\r\n        /// </summary>\r\n        /// <param name=\"key\">The key for the cluster</param>\r\n        public Cluster(object key) {\r\n            Count = 1;\r\n            ClusterKey = key;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public overrides\r\n\r\n        /// <summary>\r\n        /// Return a string representation of this cluster\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        public override string ToString() {\r\n            return DisplayLabel ?? \"[empty]\";\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation of ICluster\r\n\r\n        /// <summary>\r\n        /// Gets or sets how many items belong to this cluster\r\n        /// </summary>\r\n        public int Count {\r\n            get { return count; }\r\n            set { count = value; }\r\n        }\r\n        private int count;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the label that will be shown to the user to represent\r\n        /// this cluster\r\n        /// </summary>\r\n        public string DisplayLabel {\r\n            get { return displayLabel; }\r\n            set { displayLabel = value; }\r\n        }\r\n        private string displayLabel;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the actual data object that all members of this cluster\r\n        /// have commonly returned.\r\n        /// </summary>\r\n        public object ClusterKey {\r\n            get { return clusterKey; }\r\n            set { clusterKey = value; }\r\n        }\r\n        private object clusterKey;\r\n\r\n        #endregion\r\n\r\n        #region Implementation of IComparable\r\n\r\n        /// <summary>\r\n        /// Return an indication of the ordering between this object and the given one\r\n        /// </summary>\r\n        /// <param name=\"other\"></param>\r\n        /// <returns></returns>\r\n        public int CompareTo(object other) {\r\n            if (other == null || other == DBNull.Value)\r\n                return 1;\r\n\r\n            if (other is not ICluster otherCluster)\r\n                return 1;\r\n\r\n            if (ClusterKey is string keyAsString)\r\n                return String.Compare(keyAsString, otherCluster.ClusterKey as string, StringComparison.CurrentCultureIgnoreCase);\r\n\r\n            if (ClusterKey is IComparable keyAsComparable)\r\n                return keyAsComparable.CompareTo(otherCluster.ClusterKey);\r\n\r\n            return -1;\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Filtering/ClusteringStrategy.cs",
    "content": "﻿/*\r\n * ClusteringStrategy - Implements a simple clustering strategy\r\n *\r\n * Author: Phillip Piper\r\n * Date: 3-March-2011 10:53 pm\r\n *\r\n * Change log:\r\n * 2011-03-03  JPP  - First version\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// This class provides a useful base implemention of a clustering\r\n    /// strategy where the clusters are grouped around the value of a given column.\r\n    /// </summary>\r\n    public class ClusteringStrategy : IClusteringStrategy {\r\n\r\n        #region Static properties\r\n\r\n        /// <summary>\r\n        /// This field is the text that will be shown to the user when a cluster\r\n        /// key is null. It is exposed so it can be localized.\r\n        /// </summary>\r\n        static public string NULL_LABEL = \"[null]\";\r\n\r\n        /// <summary>\r\n        /// This field is the text that will be shown to the user when a cluster\r\n        /// key is empty (i.e. a string of zero length). It is exposed so it can be localized.\r\n        /// </summary>\r\n        static public string EMPTY_LABEL = \"[empty]\";\r\n\r\n        /// <summary>\r\n        /// Gets or sets the format that will be used by default for clusters that only\r\n        /// contain 1 item. The format string must accept two placeholders:\r\n        /// - {0} is the cluster key converted to a string\r\n        /// - {1} is the number of items in the cluster (always 1 in this case)\r\n        /// </summary>\r\n        static public string DefaultDisplayLabelFormatSingular {\r\n            get { return defaultDisplayLabelFormatSingular; }\r\n            set { defaultDisplayLabelFormatSingular = value; }\r\n        }\r\n        static private string defaultDisplayLabelFormatSingular = \"{0} ({1} item)\";\r\n\r\n        /// <summary>\r\n        /// Gets or sets the format that will be used by default for clusters that \r\n        /// contain 0 or two or more items. The format string must accept two placeholders:\r\n        /// - {0} is the cluster key converted to a string\r\n        /// - {1} is the number of items in the cluster\r\n        /// </summary>\r\n        static public string DefaultDisplayLabelFormatPlural {\r\n            get { return defaultDisplayLabelFormatPural; }\r\n            set { defaultDisplayLabelFormatPural = value; }\r\n        }\r\n        static private string defaultDisplayLabelFormatPural = \"{0} ({1} items)\";\r\n\r\n        #endregion\r\n\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create a clustering strategy\r\n        /// </summary>\r\n        public ClusteringStrategy() {\r\n            DisplayLabelFormatSingular = DefaultDisplayLabelFormatSingular;\r\n            DisplayLabelFormatPlural = DefaultDisplayLabelFormatPlural;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the column upon which this strategy is operating\r\n        /// </summary>\r\n        public OLVColumn Column {\r\n            get { return column; }\r\n            set { column = value; }\r\n        }\r\n        private OLVColumn column;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the format that will be used when the cluster\r\n        /// contains only 1 item. The format string must accept two placeholders:\r\n        /// - {0} is the cluster key converted to a string\r\n        /// - {1} is the number of items in the cluster (always 1 in this case)\r\n        /// </summary>\r\n        /// <remarks>If this is not set, the value from \r\n        /// ClusteringStrategy.DefaultDisplayLabelFormatSingular will be used</remarks>\r\n        public string DisplayLabelFormatSingular {\r\n            get { return displayLabelFormatSingular; }\r\n            set { displayLabelFormatSingular = value; }\r\n        }\r\n        private string displayLabelFormatSingular;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the format that will be used when the cluster \r\n        /// contains 0 or two or more items. The format string must accept two placeholders:\r\n        /// - {0} is the cluster key converted to a string\r\n        /// - {1} is the number of items in the cluster\r\n        /// </summary>\r\n        /// <remarks>If this is not set, the value from \r\n        /// ClusteringStrategy.DefaultDisplayLabelFormatPlural will be used</remarks>\r\n        public string DisplayLabelFormatPlural {\r\n            get { return displayLabelFormatPural; }\r\n            set { displayLabelFormatPural = value; }\r\n        }\r\n        private string displayLabelFormatPural;\r\n\r\n        #endregion\r\n\r\n        #region ICluster implementation\r\n\r\n        /// <summary>\r\n        /// Get the cluster key by which the given model will be partitioned by this strategy\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        virtual public object GetClusterKey(object model) {\r\n            return Column.GetValue(model);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a cluster to hold the given cluster key\r\n        /// </summary>\r\n        /// <param name=\"clusterKey\"></param>\r\n        /// <returns></returns>\r\n        virtual public ICluster CreateCluster(object clusterKey) {\r\n            return new Cluster(clusterKey);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the display label that the given cluster should use\r\n        /// </summary>\r\n        /// <param name=\"cluster\"></param>\r\n        /// <returns></returns>\r\n        virtual public string GetClusterDisplayLabel(ICluster cluster) {\r\n            string s = Column.ValueToString(cluster.ClusterKey) ?? NULL_LABEL;\r\n            if (String.IsNullOrEmpty(s)) \r\n                s = EMPTY_LABEL;\r\n            return ApplyDisplayFormat(cluster, s);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a filter that will include only model objects that\r\n        /// match one or more of the given values.\r\n        /// </summary>\r\n        /// <param name=\"valuesChosenForFiltering\"></param>\r\n        /// <returns></returns>\r\n        virtual public IModelFilter CreateFilter(IList valuesChosenForFiltering) {\r\n            return new OneOfFilter(GetClusterKey, valuesChosenForFiltering);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a label that combines the string representation of the cluster\r\n        /// key with a format string that holds an \"X [N items in cluster]\" type layout.\r\n        /// </summary>\r\n        /// <param name=\"cluster\"></param>\r\n        /// <param name=\"s\"></param>\r\n        /// <returns></returns>\r\n        virtual protected string ApplyDisplayFormat(ICluster cluster, string s) {\r\n            string format = (cluster.Count == 1) ? DisplayLabelFormatSingular : DisplayLabelFormatPlural;\r\n            return String.IsNullOrEmpty(format) ? s : String.Format(format, s, cluster.Count);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Filtering/ClustersFromGroupsStrategy.cs",
    "content": "﻿/*\r\n * ClusteringStrategy - Implements a simple clustering strategy\r\n *\r\n * Author: Phillip Piper\r\n * Date: 1-April-2011 8:12am\r\n *\r\n * Change log:\r\n * 2011-04-01  JPP  - First version\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// This class calculates clusters from the groups that the column uses.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>\r\n    /// This is the default strategy for all non-date, filterable columns.\r\n    /// </para>\r\n    /// <para>\r\n    /// This class does not strictly mimic the groups created by the given column.\r\n    /// In particular, if the programmer changes the default grouping technique\r\n    /// by listening for grouping events, this class will not mimic that behaviour.\r\n    /// </para>\r\n    /// </remarks>\r\n    public class ClustersFromGroupsStrategy : ClusteringStrategy {\r\n\r\n        /// <summary>\r\n        /// Get the cluster key by which the given model will be partitioned by this strategy\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        public override object GetClusterKey(object model) {\r\n            return Column.GetGroupKey(model);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the display label that the given cluster should use\r\n        /// </summary>\r\n        /// <param name=\"cluster\"></param>\r\n        /// <returns></returns>\r\n        public override string GetClusterDisplayLabel(ICluster cluster) {\r\n            string s = Column.ConvertGroupKeyToTitle(cluster.ClusterKey);\r\n            if (String.IsNullOrEmpty(s)) \r\n                s = EMPTY_LABEL;\r\n            return ApplyDisplayFormat(cluster, s);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Filtering/DateTimeClusteringStrategy.cs",
    "content": "﻿/*\r\n * DateTimeClusteringStrategy - A strategy to cluster objects by a date time\r\n *\r\n * Author: Phillip Piper\r\n * Date: 30-March-2011 9:40am\r\n *\r\n * Change log:\r\n * 2011-03-30  JPP  - First version\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Globalization;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// This enum is used to indicate various portions of a datetime\r\n    /// </summary>\r\n    [Flags]\r\n    public enum DateTimePortion {\r\n        /// <summary>\r\n        /// Year\r\n        /// </summary>\r\n        Year = 0x01,\r\n        \r\n        /// <summary>\r\n        /// Month\r\n        /// </summary>\r\n        Month = 0x02,\r\n        \r\n        /// <summary>\r\n        /// Day of the month\r\n        /// </summary>\r\n        Day = 0x04,\r\n        \r\n        /// <summary>\r\n        /// Hour\r\n        /// </summary>\r\n        Hour = 0x08,\r\n        \r\n        /// <summary>\r\n        /// Minute\r\n        /// </summary>\r\n        Minute = 0x10,\r\n\r\n        /// <summary>\r\n        /// Second\r\n        /// </summary>\r\n        Second = 0x20\r\n    }\r\n\r\n    /// <summary>\r\n    /// This class implements a strategy where the model objects are clustered\r\n    /// according to some portion of the datetime value in the configured column.\r\n    /// </summary>\r\n    /// <remarks>To create a strategy that grouped people who were born in\r\n    /// the same month, you would create a strategy that extracted just\r\n    /// the month, and formatted it to show just the month's name. Like this:\r\n    /// </remarks>\r\n    /// <example>\r\n    /// someColumn.ClusteringStrategy = new DateTimeClusteringStrategy(DateTimePortion.Month, \"MMMM\");\r\n    /// </example>\r\n    public class DateTimeClusteringStrategy : ClusteringStrategy {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create a strategy that clusters by month/year\r\n        /// </summary>\r\n        public DateTimeClusteringStrategy()\r\n            : this(DateTimePortion.Year | DateTimePortion.Month, \"MMMM yyyy\") {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a strategy that clusters around the given parts\r\n        /// </summary>\r\n        /// <param name=\"portions\"></param>\r\n        /// <param name=\"format\"></param>\r\n        public DateTimeClusteringStrategy(DateTimePortion portions, string format) {\r\n            Portions = portions;\r\n            Format = format;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the format string will will be used to create a user-presentable\r\n        /// version of the cluster key.\r\n        /// </summary>\r\n        /// <remarks>The format should use the date/time format strings, as documented\r\n        /// in the Windows SDK. Both standard formats and custom format will work.</remarks>\r\n        /// <example>\"D\" - long date pattern</example>\r\n        /// <example>\"MMMM, yyyy\" - \"January, 1999\"</example>\r\n        public string Format {\r\n            get { return format;  }\r\n            set { format = value;  }\r\n        }\r\n        private string format;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the parts of the DateTime that will be extracted when\r\n        /// determining the clustering key for an object.\r\n        /// </summary>\r\n        public DateTimePortion Portions {\r\n            get { return portions;  }\r\n            set { portions = value;  }\r\n        }\r\n        private DateTimePortion portions = DateTimePortion.Year | DateTimePortion.Month;\r\n\r\n        #endregion\r\n\r\n        #region IClusterStrategy implementation\r\n\r\n        /// <summary>\r\n        /// Get the cluster key by which the given model will be partitioned by this strategy\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        public override object GetClusterKey(object model) {\r\n            // Get the data attribute we want from the given model\r\n            // Make sure the returned value is a DateTime\r\n            if (Column.GetValue(model) is not DateTime dateTime)\r\n                return null;\r\n\r\n            // Extract the parts of the datetime that we are intereted in.\r\n            // Even if we aren't interested in a particular portion, we still have to give it a reasonable default\r\n            // otherwise we won't be able to build a DateTime object for it\r\n            int year = ((Portions & DateTimePortion.Year) == DateTimePortion.Year) ? dateTime.Year : 1;\r\n            int month = ((Portions & DateTimePortion.Month) == DateTimePortion.Month) ? dateTime.Month : 1;\r\n            int day = ((Portions & DateTimePortion.Day) == DateTimePortion.Day) ? dateTime.Day : 1;\r\n            int hour = ((Portions & DateTimePortion.Hour) == DateTimePortion.Hour) ? dateTime.Hour : 0;\r\n            int minute = ((Portions & DateTimePortion.Minute) == DateTimePortion.Minute) ? dateTime.Minute : 0;\r\n            int second = ((Portions & DateTimePortion.Second) == DateTimePortion.Second) ? dateTime.Second : 0;\r\n\r\n            return new DateTime(year, month, day, hour, minute, second);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the display label that the given cluster should use\r\n        /// </summary>\r\n        /// <param name=\"cluster\"></param>\r\n        /// <returns></returns>\r\n        public override string GetClusterDisplayLabel(ICluster cluster) {\r\n            DateTime? dateTime = cluster.ClusterKey as DateTime?; \r\n\r\n            return ApplyDisplayFormat(cluster, dateTime.HasValue ? DateToString(dateTime.Value) : NULL_LABEL);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Convert the given date into a user presentable string\r\n        /// </summary>\r\n        /// <param name=\"dateTime\"></param>\r\n        /// <returns></returns>\r\n        protected virtual string DateToString(DateTime dateTime) {\r\n            if (String.IsNullOrEmpty(Format))\r\n                return dateTime.ToString(CultureInfo.CurrentUICulture);\r\n\r\n            try {\r\n                return dateTime.ToString(Format);\r\n            }\r\n            catch (FormatException) {\r\n                return String.Format(\"Bad format string '{0}' for value '{1}'\", Format, dateTime);\r\n            }\r\n        }\r\n    \r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Filtering/FilterMenuBuilder.cs",
    "content": "﻿/*\r\n * FilterMenuBuilder - Responsible for creating a Filter menu\r\n *\r\n * Author: Phillip Piper\r\n * Date: 4-March-2011 11:59 pm\r\n *\r\n * Change log:\r\n * 2012-05-20  JPP  - Allow the same model object to be in multiple clusters\r\n *                    Useful for xor'ed flag fields, and multi-value strings\r\n *                    (e.g. hobbies that are stored as comma separated values).\r\n * v2.5.1\r\n * 2012-04-14  JPP  - Fixed rare bug with clustering an empty list (SF #3445118)\r\n * v2.5\r\n * 2011-04-12  JPP  - Added some images to menu\r\n * 2011-03-04  JPP  - First version\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Windows.Forms;\r\nusing System.Collections;\r\nusing System.Drawing;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// Instances of this class know how to build a Filter menu.\r\n    /// It is responsible for clustering the values in the target column,\r\n    /// build a menu that shows those clusters, and then constructing\r\n    /// a filter that will enact the users choices.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// Almost all of the methods in this class are declared as \"virtual protected\"\r\n    /// so that subclasses can provide alternative behaviours.\r\n    /// </remarks>\r\n    public class FilterMenuBuilder {\r\n\r\n        #region Static properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the string that labels the Apply button.\r\n        /// Exposed so it can be localized.\r\n        /// </summary>\r\n        static public string APPLY_LABEL = \"Apply\";\r\n\r\n        /// <summary>\r\n        /// Gets or sets the string that labels the Clear All menu item.\r\n        /// Exposed so it can be localized.\r\n        /// </summary>\r\n        static public string CLEAR_ALL_FILTERS_LABEL = \"Clear All Filters\";\r\n\r\n        /// <summary>\r\n        /// Gets or sets the string that labels the Filtering menu as a whole..\r\n        /// Exposed so it can be localized.\r\n        /// </summary>\r\n        static public string FILTERING_LABEL = \"Filtering\";\r\n\r\n        /// <summary>\r\n        /// Gets or sets the string that represents Select All values.\r\n        /// If this is set to null or empty, no Select All option will be included.\r\n        /// Exposed so it can be localized.\r\n        /// </summary>\r\n        static public string SELECT_ALL_LABEL = \"Select All\";\r\n\r\n        /// <summary>\r\n        /// Gets or sets the image that will be placed next to the Clear Filtering menu item\r\n        /// </summary>\r\n        static public Bitmap ClearFilteringImage = Properties.Resources.ClearFiltering;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the image that will be placed next to all \"Apply\" menu items on the filtering menu\r\n        /// </summary>\r\n        static public Bitmap FilteringImage = Properties.Resources.Filtering;\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether null should be considered as a valid data value.\r\n        /// If this is true (the default), then a cluster will null as a key will be allow.\r\n        /// If this is false, object that return a cluster key of null will ignored.\r\n        /// </summary>\r\n        public bool TreatNullAsDataValue {\r\n            get { return treatNullAsDataValue; }\r\n            set { treatNullAsDataValue = value; }\r\n        }\r\n        private bool treatNullAsDataValue = true;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the maximum number of objects that the clustering strategy\r\n        /// will consider. This should be large enough to collect all unique clusters,\r\n        /// but small enough to finish in a reasonable time.\r\n        /// </summary>\r\n        /// <remarks>The default value is 10,000. This should be perfectly\r\n        /// acceptable for almost all lists.</remarks>\r\n        public int MaxObjectsToConsider {\r\n            get { return maxObjectsToConsider; }\r\n            set { maxObjectsToConsider = value; }\r\n        }\r\n        private int maxObjectsToConsider = 10000;\r\n\r\n        #endregion\r\n\r\n        /// <summary>\r\n        /// Create a Filter menu on the given tool tip for the given column in the given ObjectListView.\r\n        /// </summary>\r\n        /// <remarks>This is the main entry point into this class.</remarks>\r\n        /// <param name=\"strip\"></param>\r\n        /// <param name=\"listView\"></param>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns>The strip that should be shown to the user</returns>\r\n        virtual public ToolStripDropDown MakeFilterMenu(ToolStripDropDown strip, ObjectListView listView, OLVColumn column) {\r\n            if (strip == null) throw new ArgumentNullException(\"strip\");\r\n            if (listView == null) throw new ArgumentNullException(\"listView\");\r\n            if (column == null) throw new ArgumentNullException(\"column\");\r\n\r\n            if (!column.UseFiltering || column.ClusteringStrategy == null || listView.Objects == null)\r\n                return strip;\r\n\r\n            List<ICluster> clusters = Cluster(column.ClusteringStrategy, listView, column);\r\n            if (clusters.Count > 0) {\r\n                SortClusters(column.ClusteringStrategy, clusters);\r\n                strip.Items.Add(CreateFilteringMenuItem(column, clusters));\r\n            }\r\n\r\n            return strip;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a collection of clusters that should be presented to the user\r\n        /// </summary>\r\n        /// <param name=\"strategy\"></param>\r\n        /// <param name=\"listView\"></param>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns></returns>\r\n        virtual protected List<ICluster> Cluster(IClusteringStrategy strategy, ObjectListView listView, OLVColumn column) {\r\n            // Build a map that correlates cluster key to clusters\r\n            NullableDictionary<object, ICluster> map = new NullableDictionary<object, ICluster>();\r\n            int count = 0;\r\n            foreach (object model in listView.ObjectsForClustering) {\r\n                ClusterOneModel(strategy, map, model);\r\n\r\n                if (count++ > MaxObjectsToConsider)\r\n                    break;\r\n            }\r\n\r\n            // Now that we know exactly how many items are in each cluster, create a label for it\r\n            foreach (ICluster cluster in map.Values)\r\n                cluster.DisplayLabel = strategy.GetClusterDisplayLabel(cluster);\r\n\r\n            return new List<ICluster>(map.Values);\r\n        }\r\n\r\n        private void ClusterOneModel(IClusteringStrategy strategy, NullableDictionary<object, ICluster> map, object model) {\r\n            object clusterKey = strategy.GetClusterKey(model);\r\n\r\n            // If the returned value is an IEnumerable, that means the given model can belong to more than one cluster\r\n            if (clusterKey is string || clusterKey is not IEnumerable keyEnumerable)\r\n                keyEnumerable = new object[] {clusterKey};\r\n\r\n            // Deal with nulls and DBNulls\r\n            ArrayList nullCorrected = new ArrayList();\r\n            foreach (object key in keyEnumerable) {\r\n                if (key == null || key == DBNull.Value) {\r\n                    if (TreatNullAsDataValue)\r\n                        nullCorrected.Add(null);\r\n                } else nullCorrected.Add(key);\r\n            }\r\n\r\n            // Group by key\r\n            foreach (object key in nullCorrected) {\r\n                if (map.ContainsKey(key))\r\n                    map[key].Count += 1;\r\n                else\r\n                    map[key] = strategy.CreateCluster(key);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Order the given list of clusters in the manner in which they should be presented to the user.\r\n        /// </summary>\r\n        /// <param name=\"strategy\"></param>\r\n        /// <param name=\"clusters\"></param>\r\n        virtual protected void SortClusters(IClusteringStrategy strategy, List<ICluster> clusters) {\r\n            clusters.Sort();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the work of making a menu that shows the clusters to the users\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"clusters\"></param>\r\n        /// <returns></returns>\r\n        virtual protected ToolStripMenuItem CreateFilteringMenuItem(OLVColumn column, List<ICluster> clusters) {\r\n            ToolStripCheckedListBox checkedList = new ToolStripCheckedListBox();\r\n            checkedList.Tag = column;\r\n            foreach (ICluster cluster in clusters)\r\n                checkedList.AddItem(cluster, column.ValuesChosenForFiltering.Contains(cluster.ClusterKey));\r\n            if (!String.IsNullOrEmpty(SELECT_ALL_LABEL)) {\r\n                int checkedCount = checkedList.CheckedItems.Count;\r\n                if (checkedCount == 0)\r\n                    checkedList.AddItem(SELECT_ALL_LABEL, CheckState.Unchecked);\r\n                else\r\n                    checkedList.AddItem(SELECT_ALL_LABEL, checkedCount == clusters.Count ? CheckState.Checked : CheckState.Indeterminate);\r\n            }\r\n            checkedList.ItemCheck += new ItemCheckEventHandler(HandleItemCheckedWrapped);\r\n\r\n            ToolStripMenuItem clearAll = new ToolStripMenuItem(CLEAR_ALL_FILTERS_LABEL, ClearFilteringImage, delegate(object sender, EventArgs args) {\r\n                ClearAllFilters(column);\r\n            });\r\n            ToolStripMenuItem apply = new ToolStripMenuItem(APPLY_LABEL, FilteringImage, delegate(object sender, EventArgs args) {\r\n                EnactFilter(checkedList, column);\r\n            });\r\n            ToolStripMenuItem subMenu = new ToolStripMenuItem(FILTERING_LABEL, null, new ToolStripItem[] { \r\n                clearAll, new ToolStripSeparator(), checkedList, apply });\r\n            return subMenu;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Wrap a protected section around the real HandleItemChecked method, so that if\r\n        /// that method tries to change a \"checkedness\" of an item, we don't get a recursive \r\n        /// stack error. Effectively, this ensure that HandleItemChecked is only called\r\n        /// in response to a user action.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        private void HandleItemCheckedWrapped(object sender, ItemCheckEventArgs e) {\r\n            if (alreadyInHandleItemChecked)\r\n                return;\r\n\r\n            try {\r\n                alreadyInHandleItemChecked = true;\r\n                HandleItemChecked(sender, e);\r\n            }\r\n            finally {\r\n                alreadyInHandleItemChecked = false;\r\n            }\r\n        }\r\n        bool alreadyInHandleItemChecked = false;\r\n\r\n        /// <summary>\r\n        /// Handle a user-generated ItemCheck event\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        virtual protected void HandleItemChecked(object sender, ItemCheckEventArgs e) {\r\n            if (sender is not ToolStripCheckedListBox checkedList) return;\r\n            if (checkedList.Tag is not OLVColumn column) return;\r\n            if (column.ListView is not ObjectListView listView) return;\r\n\r\n            // Deal with the \"Select All\" item if there is one\r\n            int selectAllIndex = checkedList.Items.IndexOf(SELECT_ALL_LABEL);\r\n            if (selectAllIndex >= 0)\r\n                HandleSelectAllItem(e, checkedList, selectAllIndex);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle any checking/unchecking of the Select All option, and keep\r\n        /// its checkedness in sync with everything else that is checked.\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        /// <param name=\"checkedList\"></param>\r\n        /// <param name=\"selectAllIndex\"></param>\r\n        virtual protected void HandleSelectAllItem(ItemCheckEventArgs e, ToolStripCheckedListBox checkedList, int selectAllIndex) {\r\n            // Did they check/uncheck the \"Select All\"?\r\n            if (e.Index == selectAllIndex) {\r\n                if (e.NewValue == CheckState.Checked)\r\n                    checkedList.CheckAll();\r\n                if (e.NewValue == CheckState.Unchecked)\r\n                    checkedList.UncheckAll();\r\n                return;\r\n            }\r\n\r\n            // OK. The user didn't check/uncheck SelectAll. Now we have to update it's\r\n            // checkedness to reflect the state of everything else\r\n            // If all clusters are checked, we check the Select All.\r\n            // If no clusters are checked, the uncheck the Select All.\r\n            // For everything else, Select All is set to indeterminate.\r\n\r\n            // How many items are currenty checked? \r\n            int count = checkedList.CheckedItems.Count;\r\n\r\n            // First complication.\r\n            // The value of the Select All itself doesn't count\r\n            if (checkedList.GetItemCheckState(selectAllIndex) != CheckState.Unchecked)\r\n                count -= 1;\r\n\r\n            // Another complication.\r\n            // CheckedItems does not yet know about the item the user has just\r\n            // clicked, so we have to adjust the count of checked items to what\r\n            // it is going to be\r\n            if (e.NewValue != e.CurrentValue) {\r\n                if (e.NewValue == CheckState.Checked)\r\n                    count += 1;\r\n                else\r\n                    count -= 1;\r\n            }\r\n\r\n            // Update the state of the Select All item\r\n            if (count == 0)\r\n                checkedList.SetItemState(selectAllIndex, CheckState.Unchecked);\r\n            else if (count == checkedList.Items.Count - 1)\r\n                checkedList.SetItemState(selectAllIndex, CheckState.Checked);\r\n            else\r\n                checkedList.SetItemState(selectAllIndex, CheckState.Indeterminate);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Clear all the filters that are applied to the given column\r\n        /// </summary>\r\n        /// <param name=\"column\">The column from which filters are to be removed</param>\r\n        virtual protected void ClearAllFilters(OLVColumn column) {\r\n            if (column.ListView is not ObjectListView olv || olv.IsDisposed)\r\n                return;\r\n\r\n            olv.ResetColumnFiltering();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Apply the selected values from the given list as a filter on the given column\r\n        /// </summary>\r\n        /// <param name=\"checkedList\">A list in which the checked items should be used as filters</param>\r\n        /// <param name=\"column\">The column for which a filter should be generated</param>\r\n        virtual protected void EnactFilter(ToolStripCheckedListBox checkedList, OLVColumn column) {\r\n            if (column.ListView is not ObjectListView olv || olv.IsDisposed)\r\n                return;\r\n\r\n            // Collect all the checked values\r\n            ArrayList chosenValues = new ArrayList();\r\n            foreach (object x in checkedList.CheckedItems) {\r\n                if (x is ICluster cluster) {\r\n                    chosenValues.Add(cluster.ClusterKey);\r\n                }\r\n            }\r\n            column.ValuesChosenForFiltering = chosenValues;\r\n\r\n            olv.UpdateColumnFiltering();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Filtering/Filters.cs",
    "content": "﻿/*\r\n * Filters - Filtering on ObjectListViews\r\n *\r\n * Author: Phillip Piper\r\n * Date: 03/03/2010 17:00 \r\n *\r\n * Change log:\r\n * 2011-03-01  JPP  Added CompositeAllFilter, CompositeAnyFilter and OneOfFilter\r\n * v2.4.1\r\n * 2010-06-23  JPP  Extended TextMatchFilter to handle regular expressions and string prefix matching.\r\n * v2.4\r\n * 2010-03-03  JPP  Initial version\r\n *\r\n * TO DO:\r\n *\r\n * Copyright (C) 2010-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// Interface for model-by-model filtering\r\n    /// </summary>\r\n    public interface IModelFilter\r\n    {\r\n        /// <summary>\r\n        /// Should the given model be included when this filter is installed\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model object to consider</param>\r\n        /// <returns>Returns true if the model will be included by the filter</returns>\r\n        bool Filter(object modelObject);\r\n    }\r\n\r\n    /// <summary>\r\n    /// Interface for whole list filtering\r\n    /// </summary>\r\n    public interface IListFilter\r\n    {\r\n        /// <summary>\r\n        /// Return a subset of the given list of model objects as the new\r\n        /// contents of the ObjectListView\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">The collection of model objects that the list will possibly display</param>\r\n        /// <returns>The filtered collection that holds the model objects that will be displayed.</returns>\r\n        IEnumerable Filter(IEnumerable modelObjects);\r\n    }\r\n\r\n    /// <summary>\r\n    /// Base class for model-by-model filters\r\n    /// </summary>\r\n    public class AbstractModelFilter : IModelFilter\r\n    {\r\n        /// <summary>\r\n        /// Should the given model be included when this filter is installed\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model object to consider</param>\r\n        /// <returns>Returns true if the model will be included by the filter</returns>\r\n        virtual public bool Filter(object modelObject) {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// This filter calls a given Predicate to decide if a model object should be included\r\n    /// </summary>\r\n    public class ModelFilter : IModelFilter\r\n    {\r\n        /// <summary>\r\n        /// Create a filter based on the given predicate\r\n        /// </summary>\r\n        /// <param name=\"predicate\">The function that will filter objects</param>\r\n        public ModelFilter(Predicate<object> predicate) {\r\n            Predicate = predicate;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the predicate used to filter model objects\r\n        /// </summary>\r\n        protected Predicate<object> Predicate {\r\n            get { return predicate; }\r\n            set { predicate = value; }\r\n        }\r\n        private Predicate<object> predicate;\r\n\r\n        /// <summary>\r\n        /// Should the given model object be included?\r\n        /// </summary>\r\n        /// <param name=\"modelObject\"></param>\r\n        /// <returns></returns>\r\n        virtual public bool Filter(object modelObject) {\r\n            return Predicate == null ? true : Predicate(modelObject);\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// A CompositeFilter joins several other filters together.\r\n    /// If there are no filters, all model objects are included\r\n    /// </summary>\r\n    abstract public class CompositeFilter : IModelFilter {\r\n\r\n        /// <summary>\r\n        /// Create an empty filter\r\n        /// </summary>\r\n        public CompositeFilter() {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a composite filter from the given list of filters\r\n        /// </summary>\r\n        /// <param name=\"filters\">A list of filters</param>\r\n        public CompositeFilter(IEnumerable<IModelFilter> filters) {\r\n            foreach (IModelFilter filter in filters) {\r\n                if (filter != null)\r\n                    Filters.Add(filter);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the filters used by this composite\r\n        /// </summary>\r\n        public IList<IModelFilter> Filters {\r\n            get { return filters; }\r\n            set { filters = value; }\r\n        }\r\n        private IList<IModelFilter> filters = new List<IModelFilter>();\r\n\r\n        /// <summary>\r\n        /// Get the sub filters that are text match filters\r\n        /// </summary>\r\n        public IEnumerable<TextMatchFilter> TextFilters {\r\n            get {\r\n                foreach (IModelFilter filter in Filters) {\r\n                    if (filter is TextMatchFilter textFilter)\r\n                        yield return textFilter;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Decide whether or not the given model should be included by the filter\r\n        /// </summary>\r\n        /// <param name=\"modelObject\"></param>\r\n        /// <returns>True if the object is included by the filter</returns>\r\n        virtual public bool Filter(object modelObject) {\r\n            if (Filters == null || Filters.Count == 0)\r\n                return true;\r\n\r\n            return FilterObject(modelObject);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Decide whether or not the given model should be included by the filter\r\n        /// </summary>\r\n        /// <remarks>Filters is guaranteed to be non-empty when this method is called</remarks>\r\n        /// <param name=\"modelObject\">The model object under consideration</param>\r\n        /// <returns>True if the object is included by the filter</returns>\r\n        abstract public bool FilterObject(object modelObject);\r\n    }\r\n\r\n    /// <summary>\r\n    /// A CompositeAllFilter joins several other filters together.\r\n    /// A model object must satisfy all filters to be included.\r\n    /// If there are no filters, all model objects are included\r\n    /// </summary>\r\n    public class CompositeAllFilter : CompositeFilter {\r\n\r\n        /// <summary>\r\n        /// Create a filter\r\n        /// </summary>\r\n        /// <param name=\"filters\"></param>\r\n        public CompositeAllFilter(List<IModelFilter> filters)\r\n            : base(filters) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Decide whether or not the given model should be included by the filter\r\n        /// </summary>\r\n        /// <remarks>Filters is guaranteed to be non-empty when this method is called</remarks>\r\n        /// <param name=\"modelObject\">The model object under consideration</param>\r\n        /// <returns>True if the object is included by the filter</returns>\r\n        override public bool FilterObject(object modelObject) {\r\n            foreach (IModelFilter filter in Filters)\r\n                if (!filter.Filter(modelObject))\r\n                    return false;\r\n\r\n            return true;\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// A CompositeAllFilter joins several other filters together.\r\n    /// A model object must only satisfy one of the filters to be included.\r\n    /// If there are no filters, all model objects are included\r\n    /// </summary>\r\n    public class CompositeAnyFilter : CompositeFilter {\r\n\r\n        /// <summary>\r\n        /// Create a filter from the given filters\r\n        /// </summary>\r\n        /// <param name=\"filters\"></param>\r\n        public CompositeAnyFilter(List<IModelFilter> filters)\r\n            : base(filters) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Decide whether or not the given model should be included by the filter\r\n        /// </summary>\r\n        /// <remarks>Filters is guaranteed to be non-empty when this method is called</remarks>\r\n        /// <param name=\"modelObject\">The model object under consideration</param>\r\n        /// <returns>True if the object is included by the filter</returns>\r\n        override public bool FilterObject(object modelObject) {\r\n            foreach (IModelFilter filter in Filters)\r\n                if (filter.Filter(modelObject))\r\n                    return true;\r\n\r\n            return false;\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// Instances of this class extract a value from the model object\r\n    /// and compare that value to a list of fixed values. The model\r\n    /// object is included if the extracted value is in the list\r\n    /// </summary>\r\n    /// <remarks>If there is no delegate installed or there are\r\n    /// no values to match, no model objects will be matched</remarks>\r\n    public class OneOfFilter : IModelFilter {\r\n\r\n        /// <summary>\r\n        /// Create a filter that will use the given delegate to extract values\r\n        /// </summary>\r\n        /// <param name=\"valueGetter\"></param>\r\n        public OneOfFilter(AspectGetterDelegate valueGetter) :\r\n            this(valueGetter, new ArrayList()) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a filter that will extract values using the given delegate\r\n        /// and compare them to the values in the given list.\r\n        /// </summary>\r\n        /// <param name=\"valueGetter\"></param>\r\n        /// <param name=\"possibleValues\"></param>\r\n        public OneOfFilter(AspectGetterDelegate valueGetter, ICollection possibleValues) {\r\n            ValueGetter = valueGetter;\r\n            PossibleValues = new ArrayList(possibleValues);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the delegate that will be used to extract values\r\n        /// from model objects\r\n        /// </summary>\r\n        virtual public AspectGetterDelegate ValueGetter {\r\n            get { return valueGetter; }\r\n            set { valueGetter = value; }\r\n        }\r\n        private AspectGetterDelegate valueGetter;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the list of values that the value extracted from\r\n        /// the model object must match in order to be included.\r\n        /// </summary>\r\n        virtual public IList PossibleValues {\r\n            get { return possibleValues; }\r\n            set { possibleValues = value; }\r\n        }\r\n        private IList possibleValues;\r\n\r\n        /// <summary>\r\n        /// Should the given model object be included?\r\n        /// </summary>\r\n        /// <param name=\"modelObject\"></param>\r\n        /// <returns></returns>\r\n        public virtual bool Filter(object modelObject) {\r\n            if (ValueGetter == null || PossibleValues == null || PossibleValues.Count == 0)\r\n                return false;\r\n\r\n            object result = ValueGetter(modelObject);\r\n            if (result is string || result is not IEnumerable enumerable)\r\n                return DoesValueMatch(result);\r\n\r\n            foreach (object x in enumerable) {\r\n                if (DoesValueMatch(x))\r\n                    return true;\r\n            }\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Decides if the given property is a match for the values in the PossibleValues collection\r\n        /// </summary>\r\n        /// <param name=\"result\"></param>\r\n        /// <returns></returns>\r\n        protected virtual bool DoesValueMatch(object result) {\r\n            return PossibleValues.Contains(result);\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// Instances of this class match a property of a model objects against\r\n    /// a list of bit flags. The property should be an xor-ed collection\r\n    /// of bits flags.\r\n    /// </summary>\r\n    /// <remarks>Both the property compared and the list of possible values \r\n    /// must be convertible to ulongs.</remarks>\r\n    public class FlagBitSetFilter : OneOfFilter {\r\n\r\n        /// <summary>\r\n        /// Create an instance\r\n        /// </summary>\r\n        /// <param name=\"valueGetter\"></param>\r\n        /// <param name=\"possibleValues\"></param>\r\n        public FlagBitSetFilter(AspectGetterDelegate valueGetter, ICollection possibleValues) : base(valueGetter, possibleValues) {\r\n            ConvertPossibleValues();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the collection of values that will be matched.\r\n        /// These must be ulongs (or convertible to ulongs).\r\n        /// </summary>\r\n        public override IList PossibleValues {\r\n            get { return base.PossibleValues; }\r\n            set {\r\n                base.PossibleValues = value;\r\n                ConvertPossibleValues();\r\n            }\r\n        }\r\n\r\n        private void ConvertPossibleValues() {\r\n            possibleValuesAsUlongs = new List<UInt64>();\r\n            foreach (object x in PossibleValues)\r\n                possibleValuesAsUlongs.Add(Convert.ToUInt64(x));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Decides if the given property is a match for the values in the PossibleValues collection\r\n        /// </summary>\r\n        /// <param name=\"result\"></param>\r\n        /// <returns></returns>\r\n        protected override bool DoesValueMatch(object result) {\r\n            try {\r\n                UInt64 value = Convert.ToUInt64(result);\r\n                foreach (ulong flag in possibleValuesAsUlongs) {\r\n                    if ((value & flag) == flag)\r\n                        return true;\r\n                }\r\n                return false;\r\n            }\r\n            catch (InvalidCastException) {\r\n                return false;\r\n            }\r\n            catch (FormatException) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        private List<UInt64> possibleValuesAsUlongs = new();\r\n    }\r\n\r\n    /// <summary>\r\n    /// Base class for whole list filters\r\n    /// </summary>\r\n    public class AbstractListFilter : IListFilter\r\n    {\r\n        /// <summary>\r\n        /// Return a subset of the given list of model objects as the new\r\n        /// contents of the ObjectListView\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">The collection of model objects that the list will possibly display</param>\r\n        /// <returns>The filtered collection that holds the model objects that will be displayed.</returns>\r\n        virtual public IEnumerable Filter(IEnumerable modelObjects) {\r\n            return modelObjects;\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// Instance of this class implement delegate based whole list filtering\r\n    /// </summary>\r\n    public class ListFilter : AbstractListFilter\r\n    {\r\n        /// <summary>\r\n        /// A delegate that filters on a whole list\r\n        /// </summary>\r\n        /// <param name=\"rowObjects\"></param>\r\n        /// <returns></returns>\r\n        public delegate IEnumerable ListFilterDelegate(IEnumerable rowObjects);\r\n\r\n        /// <summary>\r\n        /// Create a ListFilter\r\n        /// </summary>\r\n        /// <param name=\"function\"></param>\r\n        public ListFilter(ListFilterDelegate function) {\r\n            Function = function;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the delegate that will filter the list\r\n        /// </summary>\r\n        public ListFilterDelegate Function {\r\n            get { return function; }\r\n            set { function = value; }\r\n        }\r\n        private ListFilterDelegate function;\r\n\r\n        /// <summary>\r\n        /// Do the actual work of filtering\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\"></param>\r\n        /// <returns></returns>\r\n        public override IEnumerable Filter(IEnumerable modelObjects) {\r\n            if (Function == null)\r\n                return modelObjects;\r\n\r\n            return Function(modelObjects);\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// Filter the list so only the last N entries are displayed\r\n    /// </summary>\r\n    public class TailFilter : AbstractListFilter\r\n    {\r\n        /// <summary>\r\n        /// Create a no-op tail filter\r\n        /// </summary>\r\n        public TailFilter() {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a filter that includes on the last N model objects\r\n        /// </summary>\r\n        /// <param name=\"numberOfObjects\"></param>\r\n        public TailFilter(int numberOfObjects) {\r\n            Count = numberOfObjects;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the number of model objects that will be \r\n        /// returned from the tail of the list\r\n        /// </summary>\r\n        public int Count {\r\n            get { return count; }\r\n            set { count = value; }\r\n        }\r\n        private int count;\r\n\r\n        /// <summary>\r\n        /// Return the last N subset of the model objects\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\"></param>\r\n        /// <returns></returns>\r\n        public override IEnumerable Filter(IEnumerable modelObjects) {\r\n            if (Count <= 0)\r\n                return modelObjects;\r\n\r\n            ArrayList list = ObjectListView.EnumerableToArray(modelObjects, false);\r\n\r\n            if (Count > list.Count)\r\n                return list;\r\n\r\n            object[] tail = new object[Count];\r\n            list.CopyTo(list.Count - Count, tail, 0, Count);\r\n            return new ArrayList(tail);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/ObjectListView/Filtering/FlagClusteringStrategy.cs",
    "content": "/*\r\n * FlagClusteringStrategy - Implements a clustering strategy for a field which is a single integer \r\n *                          containing an XOR'ed collection of bit flags\r\n *\r\n * Author: Phillip Piper\r\n * Date: 23-March-2012 8:33 am\r\n *\r\n * Change log:\r\n * 2012-03-23  JPP  - First version\r\n * \r\n * Copyright (C) 2012 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Globalization;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// Instances of this class cluster model objects on the basis of a\r\n    /// property that holds an xor-ed collection of bit flags.\r\n    /// </summary>\r\n    public class FlagClusteringStrategy : ClusteringStrategy\r\n    {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create a clustering strategy that operates on the flags of the given enum\r\n        /// </summary>\r\n        /// <param name=\"enumType\"></param>\r\n        public FlagClusteringStrategy(Type enumType) {\r\n            if (enumType == null) throw new ArgumentNullException(\"enumType\");\r\n            if (!enumType.IsEnum) throw new ArgumentException(\"Type must be enum\", \"enumType\");\r\n            if (enumType.GetCustomAttributes(typeof(FlagsAttribute), false) == null) throw new ArgumentException(\"Type must have [Flags] attribute\", \"enumType\");\r\n\r\n            List<long> flags = new List<long>();\r\n            foreach (object x in Enum.GetValues(enumType))\r\n                flags.Add(Convert.ToInt64(x));\r\n\r\n            List<string> flagLabels = new List<string>();\r\n            foreach (string x in Enum.GetNames(enumType))\r\n                flagLabels.Add(x);\r\n\r\n            SetValues(flags.ToArray(), flagLabels.ToArray());\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a clustering strategy around the given collections of flags and their display labels.\r\n        /// There must be the same number of elements in both collections.\r\n        /// </summary>\r\n        /// <param name=\"values\">The list of flags. </param>\r\n        /// <param name=\"labels\"></param>\r\n        public FlagClusteringStrategy(long[] values, string[] labels) {\r\n            SetValues(values, labels);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        /// <summary>\r\n        /// Gets the value that will be xor-ed to test for the presence of a particular value.\r\n        /// </summary>\r\n        public long[] Values {\r\n            get { return values; }\r\n            private set { values = value; }\r\n        }\r\n        private long[] values;\r\n\r\n        /// <summary>\r\n        /// Gets the labels that will be used when the corresponding Value is XOR present in the data.\r\n        /// </summary>\r\n        public string[] Labels {\r\n            get { return labels; }\r\n            private set { labels = value; }\r\n        }\r\n        private string[] labels;\r\n\r\n        private void SetValues(long[] flags, string[] flagLabels) {\r\n            if (flags == null || flags.Length == 0) throw new ArgumentNullException(\"flags\");\r\n            if (flagLabels == null || flagLabels.Length == 0) throw new ArgumentNullException(\"flagLabels\");\r\n            if (flags.Length != flagLabels.Length) throw new ArgumentException(\"values and labels must have the same number of entries\", \"flags\");\r\n\r\n            Values = flags;\r\n            Labels = flagLabels;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation of IClusteringStrategy\r\n\r\n        /// <summary>\r\n        /// Get the cluster key by which the given model will be partitioned by this strategy\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        public override object GetClusterKey(object model) {\r\n            List<long> flags = new List<long>();\r\n            try {\r\n                long modelValue = Convert.ToInt64(Column.GetValue(model));\r\n                foreach (long x in Values) {\r\n                    if ((x & modelValue) == x)\r\n                        flags.Add(x);\r\n                }\r\n                return flags;\r\n            }\r\n            catch (InvalidCastException ex) {\r\n                System.Diagnostics.Debug.Write(ex);\r\n                return flags;\r\n            }\r\n            catch (FormatException ex) {\r\n                System.Diagnostics.Debug.Write(ex);\r\n                return flags;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the display label that the given cluster should use\r\n        /// </summary>\r\n        /// <param name=\"cluster\"></param>\r\n        /// <returns></returns>\r\n        public override string GetClusterDisplayLabel(ICluster cluster) {\r\n            long clusterKeyAsUlong = Convert.ToInt64(cluster.ClusterKey);\r\n            for (int i = 0; i < Values.Length; i++ ) {\r\n                if (clusterKeyAsUlong == Values[i])\r\n                    return ApplyDisplayFormat(cluster, Labels[i]);\r\n            }\r\n            return ApplyDisplayFormat(cluster, clusterKeyAsUlong.ToString(CultureInfo.CurrentUICulture));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a filter that will include only model objects that\r\n        /// match one or more of the given values.\r\n        /// </summary>\r\n        /// <param name=\"valuesChosenForFiltering\"></param>\r\n        /// <returns></returns>\r\n        public override IModelFilter CreateFilter(IList valuesChosenForFiltering) {\r\n            return new FlagBitSetFilter(GetClusterKey, valuesChosenForFiltering);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}"
  },
  {
    "path": "source/ObjectListView/Filtering/ICluster.cs",
    "content": "﻿/*\r\n * ICluster - A cluster is a group of objects that can be included or excluded as a whole\r\n *\r\n * Author: Phillip Piper\r\n * Date: 4-March-2011 11:59 pm\r\n *\r\n * Change log:\r\n * 2011-03-04  JPP  - First version\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// A cluster is a like collection of objects that can be usefully filtered\r\n    /// as whole using the filtering UI provided by the ObjectListView.\r\n    /// </summary>\r\n    public interface ICluster : IComparable {\r\n        /// <summary>\r\n        /// Gets or sets how many items belong to this cluster\r\n        /// </summary>\r\n        int Count { get; set; }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the label that will be shown to the user to represent\r\n        /// this cluster\r\n        /// </summary>\r\n        string DisplayLabel { get; set; }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the actual data object that all members of this cluster\r\n        /// have commonly returned.\r\n        /// </summary>\r\n        object ClusterKey { get; set; }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Filtering/IClusteringStrategy.cs",
    "content": "﻿/*\r\n * IClusterStrategy - Encapsulates the ability to create a list of clusters from an ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 4-March-2011 11:59 pm\r\n *\r\n * Change log:\r\n * 2012-05-23  JPP  - Added CreateFilter() method to interface to allow the strategy\r\n *                    to control the actual model filter that is created.\r\n * v2.5\r\n * 2011-03-04  JPP  - First version\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System.Collections;\r\n\r\nnamespace BrightIdeasSoftware{\r\n\r\n    /// <summary>\r\n    /// Implementation of this interface control the selecting of cluster keys\r\n    /// and how those clusters will be presented to the user\r\n    /// </summary>\r\n    public interface IClusteringStrategy {\r\n\r\n        /// <summary>\r\n        /// Gets or sets the column upon which this strategy will operate\r\n        /// </summary>\r\n        OLVColumn Column { get; set; }\r\n\r\n        /// <summary>\r\n        /// Get the cluster key by which the given model will be partitioned by this strategy\r\n        /// </summary>\r\n        /// <remarks>If the returned value is an IEnumerable, the given model is considered\r\n        /// to belong to multiple clusters</remarks>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        object GetClusterKey(object model);\r\n\r\n        /// <summary>\r\n        /// Create a cluster to hold the given cluster key\r\n        /// </summary>\r\n        /// <param name=\"clusterKey\"></param>\r\n        /// <returns></returns>\r\n        ICluster CreateCluster(object clusterKey);\r\n\r\n        /// <summary>\r\n        /// Gets the display label that the given cluster should use\r\n        /// </summary>\r\n        /// <param name=\"cluster\"></param>\r\n        /// <returns></returns>\r\n        string GetClusterDisplayLabel(ICluster cluster);\r\n\r\n        /// <summary>\r\n        /// Create a filter that will include only model objects that\r\n        /// match one or more of the given values.\r\n        /// </summary>\r\n        /// <param name=\"valuesChosenForFiltering\"></param>\r\n        /// <returns></returns>\r\n        IModelFilter CreateFilter(IList valuesChosenForFiltering);\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Filtering/TextMatchFilter.cs",
    "content": "﻿/*\r\n * TextMatchFilter - Text based filtering on ObjectListViews\r\n *\r\n * Author: Phillip Piper\r\n * Date: 31/05/2011 7:45am \r\n *\r\n * Change log:\r\n * v2.6\r\n * 2012-10-13  JPP  Allow filtering to consider additional columns\r\n * v2.5.1\r\n * 2011-06-22  JPP  Handle searching for empty strings\r\n * v2.5.0\r\n * 2011-05-31  JPP  Initial version\r\n *\r\n * TO DO:\r\n *\r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Text.RegularExpressions;\r\nusing System.Drawing;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// Instances of this class include only those rows of the listview\r\n    /// that match one or more given strings.\r\n    /// </summary>\r\n    /// <remarks>This class can match strings by prefix, regex, or simple containment.\r\n    /// There are factory methods for each of these matching strategies.</remarks>\r\n    public class TextMatchFilter : AbstractModelFilter {\r\n\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create a text filter that will include rows where any cell matches \r\n        /// any of the given regex expressions.\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"texts\"></param>\r\n        /// <returns></returns>\r\n        /// <remarks>Any string that is not a valid regex expression will be ignored.</remarks>\r\n        public static TextMatchFilter Regex(ObjectListView olv, params string[] texts) {\r\n            TextMatchFilter filter = new TextMatchFilter(olv);\r\n            filter.RegexStrings = texts;\r\n            return filter;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a text filter that includes rows where any cell begins with one of the given strings\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"texts\"></param>\r\n        /// <returns></returns>\r\n        public static TextMatchFilter Prefix(ObjectListView olv, params string[] texts) {\r\n            TextMatchFilter filter = new TextMatchFilter(olv);\r\n            filter.PrefixStrings = texts;\r\n            return filter;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a text filter that includes rows where any cell contains any of the given strings.\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"texts\"></param>\r\n        /// <returns></returns>\r\n        public static TextMatchFilter Contains(ObjectListView olv, params string[] texts) {\r\n            TextMatchFilter filter = new TextMatchFilter(olv);\r\n            filter.ContainsStrings = texts;\r\n            return filter;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a TextFilter\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        public TextMatchFilter(ObjectListView olv) {\r\n            ListView = olv;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a TextFilter that finds the given string\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"text\"></param>\r\n        public TextMatchFilter(ObjectListView olv, string text) {\r\n            ListView = olv;\r\n            ContainsStrings = new string[] { text };\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a TextFilter that finds the given string using the given comparison\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"text\"></param>\r\n        /// <param name=\"comparison\"></param>\r\n        public TextMatchFilter(ObjectListView olv, string text, StringComparison comparison) {\r\n            ListView = olv;\r\n            ContainsStrings = new string[] { text };\r\n            StringComparison = comparison;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets which columns will be used for the comparisons? If this is null, all columns will be used\r\n        /// </summary>\r\n        public OLVColumn[] Columns {\r\n            get { return columns; }\r\n            set { columns = value; }\r\n        }\r\n        private OLVColumn[] columns;\r\n\r\n        /// <summary>\r\n        /// Gets or sets additional columns which will be used in the comparison. These will be used\r\n        /// in addition to either the Columns property or to all columns taken from the control.\r\n        /// </summary>\r\n        public OLVColumn[] AdditionalColumns {\r\n            get { return additionalColumns; }\r\n            set { additionalColumns = value; }\r\n        }\r\n        private OLVColumn[] additionalColumns;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the collection of strings that will be used for \r\n        /// contains matching. Setting this replaces all previous texts\r\n        /// of any kind.\r\n        /// </summary>\r\n        public IEnumerable<string> ContainsStrings {\r\n            get {\r\n                foreach (TextMatchingStrategy component in MatchingStrategies)\r\n                    yield return component.Text;\r\n            }\r\n            set {\r\n                MatchingStrategies = new List<TextMatchingStrategy>();\r\n                if (value != null) {\r\n                    foreach (string text in value)\r\n                        MatchingStrategies.Add(new TextContainsMatchingStrategy(this, text));\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether or not this filter has any search criteria\r\n        /// </summary>\r\n        public bool HasComponents {\r\n            get {\r\n                return MatchingStrategies.Count > 0;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or set the ObjectListView upon which this filter will work\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// You cannot really rebase a filter after it is created, so do not change this value.\r\n        /// It is included so that it can be set in an object initializer.\r\n        /// </remarks>\r\n        public ObjectListView ListView {\r\n            get { return listView; }\r\n            set { listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the collection of strings that will be used for \r\n        /// prefix matching. Setting this replaces all previous texts\r\n        /// of any kind.\r\n        /// </summary>\r\n        public IEnumerable<string> PrefixStrings {\r\n            get {\r\n                foreach (TextMatchingStrategy component in MatchingStrategies)\r\n                    yield return component.Text;\r\n            }\r\n            set {\r\n                MatchingStrategies = new List<TextMatchingStrategy>();\r\n                if (value != null) {\r\n                    foreach (string text in value)\r\n                        MatchingStrategies.Add(new TextBeginsMatchingStrategy(this, text));\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the options that will be used when compiling the regular expression.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This is only used when doing Regex matching (obviously).\r\n        /// If this is not set specifically, the appropriate options are chosen to match the\r\n        /// StringComparison setting (culture invariant, case sensitive).\r\n        /// </remarks>\r\n        public RegexOptions RegexOptions {\r\n            get {\r\n                if (!regexOptions.HasValue) {\r\n                    switch (StringComparison) {\r\n                        case StringComparison.CurrentCulture:\r\n                            regexOptions = RegexOptions.None;\r\n                            break;\r\n                        case StringComparison.CurrentCultureIgnoreCase:\r\n                            regexOptions = RegexOptions.IgnoreCase;\r\n                            break;\r\n                        case StringComparison.Ordinal:\r\n                        case StringComparison.InvariantCulture:\r\n                            regexOptions = RegexOptions.CultureInvariant;\r\n                            break;\r\n                        case StringComparison.OrdinalIgnoreCase:\r\n                        case StringComparison.InvariantCultureIgnoreCase:\r\n                            regexOptions = RegexOptions.CultureInvariant | RegexOptions.IgnoreCase;\r\n                            break;\r\n                        default:\r\n                            regexOptions = RegexOptions.None;\r\n                            break;\r\n                    }\r\n                }\r\n                return regexOptions.Value;\r\n            }\r\n            set {\r\n                regexOptions = value;\r\n            }\r\n        }\r\n        private RegexOptions? regexOptions;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the collection of strings that will be used for \r\n        /// regex pattern matching. Setting this replaces all previous texts\r\n        /// of any kind.\r\n        /// </summary>\r\n        public IEnumerable<string> RegexStrings {\r\n            get {\r\n                foreach (TextMatchingStrategy component in MatchingStrategies)\r\n                    yield return component.Text;\r\n            }\r\n            set {\r\n                MatchingStrategies = new List<TextMatchingStrategy>();\r\n                if (value != null) {\r\n                    foreach (string text in value)\r\n                        MatchingStrategies.Add(new TextRegexMatchingStrategy(this, text));\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or  sets how the filter will match text\r\n        /// </summary>\r\n        public StringComparison StringComparison {\r\n            get { return stringComparison; }\r\n            set { stringComparison = value; }\r\n        }\r\n        private StringComparison stringComparison = StringComparison.InvariantCultureIgnoreCase;\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        /// <summary>\r\n        /// Loop over the columns that are being considering by the filter\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        protected virtual IEnumerable<OLVColumn> IterateColumns() {\r\n            if (Columns == null) {\r\n                foreach (OLVColumn column in ListView.Columns)\r\n                    yield return column;\r\n            } else {\r\n                foreach (OLVColumn column in Columns)\r\n                    yield return column;\r\n            }\r\n            if (AdditionalColumns != null) {\r\n                foreach (OLVColumn column in AdditionalColumns)\r\n                    yield return column;\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public interface\r\n\r\n        /// <summary>\r\n        /// Do the actual work of filtering\r\n        /// </summary>\r\n        /// <param name=\"modelObject\"></param>\r\n        /// <returns></returns>\r\n        public override bool Filter(object modelObject) {\r\n            if (ListView == null || !HasComponents)\r\n                return true;\r\n\r\n            foreach (OLVColumn column in IterateColumns()) {\r\n                if (column.IsVisible && column.Searchable) {\r\n                    string[] cellTexts = column.GetSearchValues(modelObject);\r\n                    if (cellTexts != null && cellTexts.Length > 0) {\r\n                        foreach (TextMatchingStrategy filter in MatchingStrategies) {\r\n                            if (String.IsNullOrEmpty(filter.Text))\r\n                                return true;\r\n                            foreach (string cellText in cellTexts) {\r\n                                if (filter.MatchesText(cellText))\r\n                                    return true;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Find all the ways in which this filter matches the given string.\r\n        /// </summary>\r\n        /// <remarks>This is used by the renderer to decide which bits of\r\n        /// the string should be highlighted</remarks>\r\n        /// <param name=\"cellText\"></param>\r\n        /// <returns>A list of character ranges indicating the matched substrings</returns>\r\n        public IEnumerable<CharacterRange> FindAllMatchedRanges(string cellText) {\r\n            List<CharacterRange> ranges = new List<CharacterRange>();\r\n\r\n            foreach (TextMatchingStrategy filter in MatchingStrategies) {\r\n                 if (!String.IsNullOrEmpty(filter.Text))\r\n                    ranges.AddRange(filter.FindAllMatchedRanges(cellText));\r\n            }\r\n\r\n            return ranges;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Is the given column one of the columns being used by this filter?\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns></returns>\r\n        public bool IsIncluded(OLVColumn column) {\r\n            if (Columns == null) {\r\n                return column.ListView == ListView;\r\n            }\r\n\r\n            foreach (OLVColumn x in Columns) {\r\n                if (x == column)\r\n                    return true;\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation members\r\n\r\n        private List<TextMatchingStrategy> MatchingStrategies = new();\r\n\r\n        #endregion\r\n\r\n        #region Components\r\n\r\n        /// <summary>\r\n        /// Base class for the various types of string matching that TextMatchFilter provides\r\n        /// </summary>\r\n        abstract protected class TextMatchingStrategy {\r\n\r\n            /// <summary>\r\n            /// Gets how the filter will match text\r\n            /// </summary>\r\n            public StringComparison StringComparison {\r\n                get { return TextFilter.StringComparison; }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Gets the text filter to which this component belongs\r\n            /// </summary>\r\n            public TextMatchFilter TextFilter {\r\n                get { return textFilter; }\r\n                set { textFilter = value; }\r\n            }\r\n            private TextMatchFilter textFilter;\r\n\r\n            /// <summary>\r\n            /// Gets or sets the text that will be matched\r\n            /// </summary>\r\n            public string Text {\r\n                get { return text; }\r\n                set { text = value; }\r\n            }\r\n            private string text;\r\n\r\n            /// <summary>\r\n            /// Find all the ways in which this filter matches the given string.\r\n            /// </summary>\r\n            /// <remarks>\r\n            /// <para>\r\n            /// This is used by the renderer to decide which bits of\r\n            /// the string should be highlighted.\r\n            /// </para>\r\n            /// <para>this.Text will not be null or empty when this is called.</para>\r\n            /// </remarks>\r\n            /// <param name=\"cellText\">The text of the cell we want to search</param>\r\n            /// <returns>A list of character ranges indicating the matched substrings</returns>\r\n            abstract public IEnumerable<CharacterRange> FindAllMatchedRanges(string cellText);\r\n\r\n            /// <summary>\r\n            /// Does the given text match the filter\r\n            /// </summary>\r\n            /// <remarks>\r\n            /// <para>this.Text will not be null or empty when this is called.</para>\r\n            /// </remarks>\r\n            /// <param name=\"cellText\">The text of the cell we want to search</param>\r\n            /// <returns>Return true if the given cellText matches our strategy</returns>\r\n            abstract public bool MatchesText(string cellText);\r\n        }\r\n\r\n        /// <summary>\r\n        /// This component provides text contains matching strategy.\r\n        /// </summary>\r\n        protected class TextContainsMatchingStrategy : TextMatchingStrategy {\r\n\r\n            /// <summary>\r\n            /// Create a text contains strategy\r\n            /// </summary>\r\n            /// <param name=\"filter\"></param>\r\n            /// <param name=\"text\"></param>\r\n            public TextContainsMatchingStrategy(TextMatchFilter filter, string text) {\r\n                TextFilter = filter;\r\n                Text = text;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Does the given text match the filter\r\n            /// </summary>\r\n            /// <remarks>\r\n            /// <para>this.Text will not be null or empty when this is called.</para>\r\n            /// </remarks>\r\n            /// <param name=\"cellText\">The text of the cell we want to search</param>\r\n            /// <returns>Return true if the given cellText matches our strategy</returns>\r\n            override public bool MatchesText(string cellText) {\r\n                return cellText.IndexOf(Text, StringComparison) != -1;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Find all the ways in which this filter matches the given string.\r\n            /// </summary>\r\n            /// <remarks>\r\n            /// <para>\r\n            /// This is used by the renderer to decide which bits of\r\n            /// the string should be highlighted.\r\n            /// </para>\r\n            /// <para>this.Text will not be null or empty when this is called.</para>\r\n            /// </remarks>\r\n            /// <param name=\"cellText\">The text of the cell we want to search</param>\r\n            /// <returns>A list of character ranges indicating the matched substrings</returns>\r\n            override public IEnumerable<CharacterRange> FindAllMatchedRanges(string cellText) {\r\n                List<CharacterRange> ranges = new List<CharacterRange>();\r\n\r\n                int matchIndex = cellText.IndexOf(Text, StringComparison);\r\n                while (matchIndex != -1) {\r\n                    ranges.Add(new CharacterRange(matchIndex, Text.Length));\r\n                    matchIndex = cellText.IndexOf(Text, matchIndex + Text.Length, StringComparison);\r\n                }\r\n\r\n                return ranges;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// This component provides text begins with matching strategy.\r\n        /// </summary>\r\n        protected class TextBeginsMatchingStrategy : TextMatchingStrategy {\r\n\r\n            /// <summary>\r\n            /// Create a text begins strategy\r\n            /// </summary>\r\n            /// <param name=\"filter\"></param>\r\n            /// <param name=\"text\"></param>\r\n            public TextBeginsMatchingStrategy(TextMatchFilter filter, string text) {\r\n                TextFilter = filter;\r\n                Text = text;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Does the given text match the filter\r\n            /// </summary>\r\n            /// <remarks>\r\n            /// <para>this.Text will not be null or empty when this is called.</para>\r\n            /// </remarks>\r\n            /// <param name=\"cellText\">The text of the cell we want to search</param>\r\n            /// <returns>Return true if the given cellText matches our strategy</returns>\r\n            override public bool MatchesText(string cellText) {\r\n                return cellText.StartsWith(Text, StringComparison);\r\n            }\r\n\r\n            /// <summary>\r\n            /// Find all the ways in which this filter matches the given string.\r\n            /// </summary>\r\n            /// <remarks>\r\n            /// <para>\r\n            /// This is used by the renderer to decide which bits of\r\n            /// the string should be highlighted.\r\n            /// </para>\r\n            /// <para>this.Text will not be null or empty when this is called.</para>\r\n            /// </remarks>\r\n            /// <param name=\"cellText\">The text of the cell we want to search</param>\r\n            /// <returns>A list of character ranges indicating the matched substrings</returns>\r\n            override public IEnumerable<CharacterRange> FindAllMatchedRanges(string cellText) {\r\n                List<CharacterRange> ranges = new List<CharacterRange>();\r\n\r\n                if (cellText.StartsWith(Text, StringComparison))\r\n                    ranges.Add(new CharacterRange(0, Text.Length));\r\n\r\n                return ranges;\r\n            }\r\n\r\n        }\r\n\r\n        /// <summary>\r\n        /// This component provides regex matching strategy.\r\n        /// </summary>\r\n        protected class TextRegexMatchingStrategy : TextMatchingStrategy {\r\n\r\n            /// <summary>\r\n            /// Creates a regex strategy\r\n            /// </summary>\r\n            /// <param name=\"filter\"></param>\r\n            /// <param name=\"text\"></param>\r\n            public TextRegexMatchingStrategy(TextMatchFilter filter, string text) {\r\n                TextFilter = filter;\r\n                Text = text;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Gets or sets the options that will be used when compiling the regular expression.\r\n            /// </summary>\r\n            public RegexOptions RegexOptions {\r\n                get {\r\n                    return TextFilter.RegexOptions;\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Gets or sets a compilex regular expression, based on our current Text and RegexOptions.\r\n            /// </summary>\r\n            /// <remarks>\r\n            /// If Text fails to compile as a regular expression, this will return a Regex object\r\n            /// that will match all strings.\r\n            /// </remarks>\r\n            protected Regex Regex {\r\n                get {\r\n                    if (regex == null) {\r\n                        try {\r\n                            regex = new Regex(Text, RegexOptions);\r\n                        }\r\n                        catch (ArgumentException) {\r\n                            regex = InvalidRegexMarker;\r\n                        }\r\n                    }\r\n                    return regex;\r\n                }\r\n                set {\r\n                    regex = value;\r\n                }\r\n            }\r\n            private Regex regex;\r\n\r\n            /// <summary>\r\n            /// Gets whether or not our current regular expression is a valid regex\r\n            /// </summary>\r\n            protected bool IsRegexInvalid {\r\n                get {\r\n                    return Regex == InvalidRegexMarker;\r\n                }\r\n            }\r\n            static private Regex InvalidRegexMarker = new(\".*\");\r\n\r\n            /// <summary>\r\n            /// Does the given text match the filter\r\n            /// </summary>\r\n            /// <remarks>\r\n            /// <para>this.Text will not be null or empty when this is called.</para>\r\n            /// </remarks>\r\n            /// <param name=\"cellText\">The text of the cell we want to search</param>\r\n            /// <returns>Return true if the given cellText matches our strategy</returns>\r\n            public override bool MatchesText(string cellText) {\r\n                if (IsRegexInvalid)\r\n                    return true;\r\n                return Regex.Match(cellText).Success;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Find all the ways in which this filter matches the given string.\r\n            /// </summary>\r\n            /// <remarks>\r\n            /// <para>\r\n            /// This is used by the renderer to decide which bits of\r\n            /// the string should be highlighted.\r\n            /// </para>\r\n            /// <para>this.Text will not be null or empty when this is called.</para>\r\n            /// </remarks>\r\n            /// <param name=\"cellText\">The text of the cell we want to search</param>\r\n            /// <returns>A list of character ranges indicating the matched substrings</returns>\r\n            override public IEnumerable<CharacterRange> FindAllMatchedRanges(string cellText) {\r\n                List<CharacterRange> ranges = new List<CharacterRange>();\r\n\r\n                if (!IsRegexInvalid) {\r\n                    foreach (Match match in Regex.Matches(cellText)) {\r\n                        if (match.Length > 0)\r\n                            ranges.Add(new CharacterRange(match.Index, match.Length));\r\n                    }\r\n                }\r\n\r\n                return ranges;\r\n            }\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/FullClassDiagram.cd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<ClassDiagram MajorVersion=\"1\" MinorVersion=\"1\">\r\n  <Class Name=\"BrightIdeasSoftware.CellEditKeyEngine\" Collapsed=\"true\">\r\n    <Position X=\"36\" Y=\"0.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AQCABIAAAIAhAACgAAAAAIAMAAAECAAggAIAIIAAAEA=</HashCode>\r\n      <FileName>CellEditing\\CellEditKeyEngine.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ComboBoxItem\" Collapsed=\"true\">\r\n    <Position X=\"29\" Y=\"1.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAQEIAAEAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>CellEditing\\CellEditors.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.AutoCompleteCellEditor\" Collapsed=\"true\">\r\n    <Position X=\"29\" Y=\"0.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>CellEditing\\CellEditors.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.EnumCellEditor\" Collapsed=\"true\">\r\n    <Position X=\"36\" Y=\"1.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>CellEditing\\CellEditors.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.IntUpDown\" Collapsed=\"true\">\r\n    <Position X=\"34.25\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAA=</HashCode>\r\n      <FileName>CellEditing\\CellEditors.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.UintUpDown\" Collapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"7.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAA=</HashCode>\r\n      <FileName>CellEditing\\CellEditors.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.BooleanCellEditor\" Collapsed=\"true\">\r\n    <Position X=\"30.75\" Y=\"0.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>CellEditing\\CellEditors.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.BooleanCellEditor2\" Collapsed=\"true\">\r\n    <Position X=\"32.5\" Y=\"0.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAgAAAAAAA=</HashCode>\r\n      <FileName>CellEditing\\CellEditors.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.FloatCellEditor\" Collapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"2.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAA=</HashCode>\r\n      <FileName>CellEditing\\CellEditors.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.EditorRegistry\" Collapsed=\"true\">\r\n    <Position X=\"34.25\" Y=\"1.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAQIAAABAQAAQAAgAAAAAAABAIAAAAQAAAAAAAA=</HashCode>\r\n      <FileName>CellEditing\\EditorRegistry.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.DataListView\" Collapsed=\"true\">\r\n    <Position X=\"17.25\" Y=\"5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>ABgAAAAAAAAAAgIhAAACAAAEAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>DataListView.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.AbstractDragSource\" Collapsed=\"true\" BaseTypeListCollapsed=\"true\">\r\n    <Position X=\"22\" Y=\"0.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>BAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAA=</HashCode>\r\n      <FileName>DragDrop\\DragSource.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" Collapsed=\"true\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.SimpleDragSource\" Collapsed=\"true\" BaseTypeListCollapsed=\"true\">\r\n    <Position X=\"27.25\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>BAAAAAAAAAAAAAAAAQAAAAAQAAAQEAAAAAAAAAAAQAA=</HashCode>\r\n      <FileName>DragDrop\\DragSource.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" Collapsed=\"true\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.AbstractDropSink\" Collapsed=\"true\">\r\n    <Position X=\"0.5\" Y=\"17.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAQQAAAAAIAEAAAAAEFAAAAgAAAAMAAAAA=</HashCode>\r\n      <FileName>DragDrop\\DropSink.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.SimpleDropSink\" Collapsed=\"true\">\r\n    <Position X=\"0.5\" Y=\"18.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>ZS0gAiQEBAoQDA8YQBMAMCAFgwQHBALcAEBEiEAAAQA=</HashCode>\r\n      <FileName>DragDrop\\DropSink.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.RearrangingDropSink\" Collapsed=\"true\">\r\n    <Position X=\"0.5\" Y=\"20.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>BYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>DragDrop\\DropSink.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.OlvDropEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"19.5\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>IACgGiAAIBoAAAAAAAAAAAAAAALAAAAKgAQECIAEgAA=</HashCode>\r\n      <FileName>DragDrop\\DropSink.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ModelDropEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"19.5\" Y=\"8\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>BAEAAAAAAAAAAAAAAAEQAAAAAAAAAAIAAAAAgAQAAEA=</HashCode>\r\n      <FileName>DragDrop\\DropSink.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.OLVDataObject\" Collapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"5.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AQAAEAEABAAAAAAAEAAAAAAAAAIAAgACgAAAAAAAQBA=</HashCode>\r\n      <FileName>DragDrop\\OLVDataObject.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.FastDataListView\" Collapsed=\"true\">\r\n    <Position X=\"15\" Y=\"7.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAgIAAAACAAAEQAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>FastDataListView.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.FastObjectListView\" Collapsed=\"true\">\r\n    <Position X=\"15\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAA=</HashCode>\r\n      <FileName>FastObjectListView.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.FastObjectListDataSource\" Collapsed=\"true\">\r\n    <Position X=\"2.75\" Y=\"15.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>ABAAAAgAQAQAABAgAAASQ4AQAAIEAAAAAAAAAEIAgAA=</HashCode>\r\n      <FileName>FastObjectListView.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.Cluster\" Collapsed=\"true\" BaseTypeListCollapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"1.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAQAAAAEAQEBAAAAAQAgAAAAIAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\Cluster.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" Collapsed=\"true\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ClusteringStrategy\" Collapsed=\"true\">\r\n    <Position X=\"16.75\" Y=\"16.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAEAAAAAAAAAhBABAgAQAAIKAQBAQAAAAAAoIA=</HashCode>\r\n      <FileName>Filtering\\ClusteringStrategy.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ClustersFromGroupsStrategy\" Collapsed=\"true\">\r\n    <Position X=\"15.5\" Y=\"17.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQBAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\ClustersFromGroupsStrategy.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.DateTimeClusteringStrategy\" Collapsed=\"true\">\r\n    <Position X=\"17.75\" Y=\"17.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAIAAAACAAAAAAAACAAAAQgAAAQBAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\DateTimeClusteringStrategy.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.FilterMenuBuilder\" Collapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"2.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>SAEAADAQgEEAAQAIAAgQIAAAAFQAAAAAAAAAoAAAAAE=</HashCode>\r\n      <FileName>Filtering\\FilterMenuBuilder.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.AbstractModelFilter\" Collapsed=\"true\">\r\n    <Position X=\"6.75\" Y=\"18.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\Filters.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ModelFilter\" Collapsed=\"true\" BaseTypeListCollapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"4.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAEAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\Filters.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" Collapsed=\"true\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CompositeFilter\" Collapsed=\"true\">\r\n    <Position X=\"4\" Y=\"18.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAgAAAAAAIAAAACAABAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\Filters.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CompositeAllFilter\" Collapsed=\"true\">\r\n    <Position X=\"2.75\" Y=\"20\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\Filters.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CompositeAnyFilter\" Collapsed=\"true\">\r\n    <Position X=\"5\" Y=\"20\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\Filters.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.AbstractListFilter\" Collapsed=\"true\">\r\n    <Position X=\"11.25\" Y=\"18.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\Filters.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ListFilter\" Collapsed=\"true\">\r\n    <Position X=\"10\" Y=\"20\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAgAAAAIAABAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\Filters.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TailFilter\" Collapsed=\"true\">\r\n    <Position X=\"12.25\" Y=\"20\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAABAAAAAQAABAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\Filters.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TextMatchFilter\" Collapsed=\"true\">\r\n    <Position X=\"6.75\" Y=\"20\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAgAAACAAAABAAABAAgAQACABABAAAAyEIAAIgSgAA=</HashCode>\r\n      <FileName>Filtering\\TextMatchFilter.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.OLVColumnAttribute\" Collapsed=\"true\">\r\n    <Position X=\"22\" Y=\"5.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>EgAAQTAAZAEgWGAASFwIIEYECGBGAQKAQEEGAQJAAEE=</HashCode>\r\n      <FileName>Implementation\\Attributes.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ColumnComparer\" Collapsed=\"true\" BaseTypeListCollapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"1.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAIAAAAAAAQAAAAAAAAAAAAAQAAAAAAAAABQAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Comparers.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" Collapsed=\"true\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.OLVGroupComparer\" Collapsed=\"true\" BaseTypeListCollapsed=\"true\">\r\n    <Position X=\"29\" Y=\"5.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Comparers.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" Collapsed=\"true\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ModelObjectComparer\" Collapsed=\"true\" BaseTypeListCollapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"4.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAIAAAAAAAQAAAAAAAAAAAAAQAAAAAAAAABQAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Comparers.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" Collapsed=\"true\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.DataSourceAdapter\" Collapsed=\"true\" BaseTypeListCollapsed=\"true\">\r\n    <Position X=\"32.5\" Y=\"1.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AZggAAAwAGAAAgACQAYCBCAEICACACUEhAEAQKBAgQg=</HashCode>\r\n      <FileName>Implementation\\DataSourceAdapter.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" Collapsed=\"true\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ObjectListView\" Collapsed=\"true\">\r\n    <Position X=\"15\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>5/7+//3///fX/+//+///f/3//f/37N////+//7+///8=</HashCode>\r\n      <FileName>Implementation\\Enums.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TreeListView\" Collapsed=\"true\">\r\n    <Position X=\"12.75\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>ASgQyXBAABICBAAAAIAAACCEMAKBQAOAABDAgAUpAQA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CellEditEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"34.25\" Y=\"0.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>ABEAEAAFQAAAABAABABQEAQAQAAAECAAAAAgAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CancellableEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"9\" Y=\"0.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.BeforeSortingEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"10.25\" Y=\"2\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAABAAAIAAAAAAAAAEAAAQAAAAABAAAAAAAABAAIAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.AfterSortingEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"27.25\" Y=\"0.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAQABAAAAAQQAAAAAAEAAAQAAAAABAAAAAAgABQAIAE=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.FilterEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"22\" Y=\"2.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAEAAAAAAAAAAAAEAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ItemsChangedEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"22\" Y=\"4.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAEAAAAAAAAAAAAAAAEAAAQAAAAAAAAAAAAAAAQAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ItemsAddingEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"12.5\" Y=\"2\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ItemsChangingEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"14.75\" Y=\"2\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAgAAAAIAAAAAAAAAAAAgAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ItemsRemovingEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"17\" Y=\"2\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.AfterSearchingEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"0.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAQAAAIAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.BeforeSearchingEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"3.5\" Y=\"2\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAQAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CellEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"5.25\" Y=\"11.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAMABAAAAQgAZAFAAGUARAAAAAgAgAAIAIAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CellClickEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"0.75\" Y=\"13\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CellRightClickEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"3\" Y=\"13\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CellOverEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"5.25\" Y=\"13\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.FreezeEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"27.25\" Y=\"2.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>CAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ToolTipShowingEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"7.5\" Y=\"13\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAQAAAAAAAEGAAAAAAAAAAAgAACAIAAAACAAHAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.HyperlinkEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"30.75\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAgAAAAMAAAAAAAgARABAAEUAQIAAAAiAgAAIAIAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.IsHyperlinkEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"36\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAABAAAAAQAAAAAAIiAgACIAIAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.FormatRowEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"8.5\" Y=\"14.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AEAAAAAAAAAAAAAAgAQAAAAEAAAAAQAAgAkEAIAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.FormatCellEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"8.5\" Y=\"16\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAEAAAAAAAAABABAAAUAQAAAAAAAgAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.HyperlinkClickedEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"9.75\" Y=\"13\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.HotItemChangedEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"27.25\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAIgAAAGJACRCAAEEABEAAAAJACBAAAAAAgIAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.SubItemCheckingEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"1.25\" Y=\"2\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>QAAAEAAAAAAAABAABABQEAQAQAAAEAAAAAAAAEAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CreateGroupsEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"30.75\" Y=\"1.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>QAAAAEAAAAAAAAAAgAAAAIAAAAAAAAAAAIAAAACAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.GroupTaskClickedEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"36\" Y=\"2.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>QAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.GroupStateChangedEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"34.25\" Y=\"2.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>QAAAgEAACggAgAAIAAAAAEAAAIAAAAAAAAAAAAAAAII=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TreeBranchExpandingEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"5.75\" Y=\"2\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAgAAAAIAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TreeBranchExpandedEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"36\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAgAAAAIAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TreeBranchCollapsingEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"8\" Y=\"2\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAgAAAAIAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TreeBranchCollapsedEventArgs\" Collapsed=\"true\">\r\n    <Position X=\"34.25\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAgAAAAIAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.GroupingParameters\" Collapsed=\"true\">\r\n    <Position X=\"32.5\" Y=\"2.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAIMAAAACBEAEAoQAAAKAACAAUhAAgRIQAIAE=</HashCode>\r\n      <FileName>Implementation\\GroupingParameters.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.OLVGroup\" Collapsed=\"true\">\r\n    <Position X=\"27.25\" Y=\"5.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>bEYChOwmAAQgiCQEQBgEAMwAEAAMAEQMgEFAFODAGhM=</HashCode>\r\n      <FileName>Implementation\\Groups.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.Munger\" Collapsed=\"true\">\r\n    <Position X=\"27.25\" Y=\"4.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAgAAAJAAAAAQEABCAAAAAhAAAAACAAAAAAAIAAAE=</HashCode>\r\n      <FileName>Implementation\\Munger.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.SimpleMunger\" Collapsed=\"true\">\r\n    <Position X=\"29\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAIACAAJAAAgAAEACAAAAAABAAAIAAAAAEAAAAAEAA=</HashCode>\r\n      <FileName>Implementation\\Munger.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.MungerException\" Collapsed=\"true\">\r\n    <Position X=\"29\" Y=\"4.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAEAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAABAAA=</HashCode>\r\n      <FileName>Implementation\\Munger.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.NativeMethods\" Collapsed=\"true\">\r\n    <Position X=\"30.75\" Y=\"4.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>cChxFKmMjlNGI/LfZWKToPLMK45gioYxDANnzL7yfN4=</HashCode>\r\n      <FileName>Implementation\\NativeMethods.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.NullableDictionary&lt;TKey, TValue&gt;\" Collapsed=\"true\">\r\n    <Position X=\"32.5\" Y=\"4.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAEAAAAAAAAEAAAACAAAAAAAQAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\NullableDictionary.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.OLVListItem\" Collapsed=\"true\">\r\n    <Position X=\"12.75\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>ABAAAAAAAABEAACAAAAAAAAQABAAEgAQAAIAASAAAgE=</HashCode>\r\n      <FileName>Implementation\\OLVListItem.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.OLVListSubItem\" Collapsed=\"true\">\r\n    <Position X=\"11\" Y=\"4.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAEAAAAAAAAAAAAABAIAAAQCAgACSAAAAk=</HashCode>\r\n      <FileName>Implementation\\OLVListSubItem.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.OlvListViewHitTestInfo\" Collapsed=\"true\">\r\n    <Position X=\"34.25\" Y=\"5.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAgEAAEAgAAABEAAZABAAGAAQAEAAAgAAAAAAIAAA=</HashCode>\r\n      <FileName>Implementation\\OlvListViewHitTestInfo.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.AbstractVirtualGroups\" Collapsed=\"true\">\r\n    <Position X=\"5.5\" Y=\"14.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAACAAAAEAAAAAAAAAAAEAAAACAAAAAA=</HashCode>\r\n      <FileName>Implementation\\VirtualGroups.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.FastListGroupingStrategy\" Collapsed=\"true\">\r\n    <Position X=\"5.5\" Y=\"15.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAABAAAAAAAACAAAAAAAAAAAAAAAAEAAAACAAAAAA=</HashCode>\r\n      <FileName>Implementation\\VirtualGroups.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.OwnerDataCallbackImpl\" Collapsed=\"true\" BaseTypeListCollapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AIAAAAAAAAAAAAAAAAAAAgAIAAAQAAAAAAAEAEACAAA=</HashCode>\r\n      <FileName>Implementation\\VirtualGroups.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" Collapsed=\"true\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.AbstractVirtualListDataSource\" Collapsed=\"true\">\r\n    <Position X=\"1.75\" Y=\"14.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>ABAAAAAAgAAAAAAgAAASQgAQAAAEAAAAAAAAAIAAgAA=</HashCode>\r\n      <FileName>Implementation\\VirtualListDataSource.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.VirtualListVersion1DataSource\" Collapsed=\"true\">\r\n    <Position X=\"0.5\" Y=\"15.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AABAAAAAAAAAAAAAAABCAAAAAAAEAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\VirtualListDataSource.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.OLVColumn\" Collapsed=\"true\">\r\n    <Position X=\"17.25\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>MgARTxAAJEcEWCbkoNwJbE6WTnSOEnOKQhSWGDJgsFk=</HashCode>\r\n      <FileName>OLVColumn.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.GraphicAdornment\" Collapsed=\"true\">\r\n    <Position X=\"16\" Y=\"9.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AACgAIAABAAAAIABACCiAIAgAACAAgAAABAIAAAAgAE=</HashCode>\r\n      <FileName>Rendering\\Adornments.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ImageAdornment\" Collapsed=\"true\">\r\n    <Position X=\"13.75\" Y=\"10.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>ABAAAAAAAIAAAAAAAEAAAAAAEAAAABAAAEABAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Adornments.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TextAdornment\" Collapsed=\"true\">\r\n    <Position X=\"18.25\" Y=\"10.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>QAIggAAEIAAgBIAIAAIASEACIABAACIIAAMACCADAsA=</HashCode>\r\n      <FileName>Rendering\\Adornments.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.AbstractDecoration\" Collapsed=\"true\">\r\n    <Position X=\"5.25\" Y=\"7.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAEAAAAAAAABAgAAAQAABAAAAAQBAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Decorations.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TintedColumnDecoration\" Collapsed=\"true\">\r\n    <Position X=\"0.75\" Y=\"8.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AgAAAAAAEAAAAgAAAAAAAAAAAAAAAAAAAAAQAAIAAAA=</HashCode>\r\n      <FileName>Rendering\\Decorations.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.BorderDecoration\" Collapsed=\"true\">\r\n    <Position X=\"6.5\" Y=\"8.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>YAgAgCABAAAgA4AAAAIAgAAAAAAAAAAAAAIAACBIgAA=</HashCode>\r\n      <FileName>Rendering\\Decorations.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.RowBorderDecoration\" Collapsed=\"true\">\r\n    <Position X=\"5.25\" Y=\"10.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAgAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAABAAIA=</HashCode>\r\n      <FileName>Rendering\\Decorations.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CellBorderDecoration\" Collapsed=\"true\">\r\n    <Position X=\"7.5\" Y=\"10.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA=</HashCode>\r\n      <FileName>Rendering\\Decorations.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.EditingCellBorderDecoration\" Collapsed=\"true\">\r\n    <Position X=\"9.75\" Y=\"10.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>QAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAEAAAAA=</HashCode>\r\n      <FileName>Rendering\\Decorations.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.LightBoxDecoration\" Collapsed=\"true\">\r\n    <Position X=\"3\" Y=\"10.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Decorations.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ImageDecoration\" Collapsed=\"true\">\r\n    <Position X=\"12.75\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAABAgAAAQAABAAAAAQAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Decorations.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TextDecoration\" Collapsed=\"true\">\r\n    <Position X=\"17.25\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAABAgAAAQAABAAAAAQAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Decorations.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.AbstractOverlay\" Collapsed=\"true\" BaseTypeListCollapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"0.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAgAAAAAAAIAAAACAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Overlays.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" Collapsed=\"true\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ImageOverlay\" Collapsed=\"true\">\r\n    <Position X=\"15\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAgAAAAAAABAAAAAQAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Overlays.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TextOverlay\" Collapsed=\"true\">\r\n    <Position X=\"19.5\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAIAAAgAAAAAAABAAAAAQAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Overlays.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.BillboardOverlay\" Collapsed=\"true\">\r\n    <Position X=\"19.5\" Y=\"13.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Overlays.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.AbstractRenderer\" Collapsed=\"true\">\r\n    <Position X=\"5.25\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAQAAAABAAAAAABAAAAAAAAAAABAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Renderers.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.Version1Renderer\" Collapsed=\"true\">\r\n    <Position X=\"0.75\" Y=\"5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Renderers.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.BaseRenderer\" Collapsed=\"true\">\r\n    <Position X=\"6.5\" Y=\"5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AxLAQSEQZQhhAmA5IRBAASSQUhQgkFAAgJDGAAMDE8I=</HashCode>\r\n      <FileName>Rendering\\Renderers.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.HighlightTextRenderer\" Collapsed=\"true\">\r\n    <Position X=\"9.75\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>QAggCAEAAEAAAIAwAAKAEAIQABAAEAAAAAAAAAAKAAA=</HashCode>\r\n      <FileName>Rendering\\Renderers.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.MappedImageRenderer\" Collapsed=\"true\">\r\n    <Position X=\"3\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAIAEBAAAQAAAAgAABAAEAAAAAAAAAAAABAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Renderers.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CheckStateRenderer\" Collapsed=\"true\">\r\n    <Position X=\"5.25\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAQBIAAAAAAAAAAAAAAAAAAAAAAACBAAAAIAAAA=</HashCode>\r\n      <FileName>Rendering\\Renderers.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ImageRenderer\" Collapsed=\"true\">\r\n    <Position X=\"7.5\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAgAAAAAAAAAAAAAIAAAAAgIAAAAABBABAAAAAEIAA=</HashCode>\r\n      <FileName>Rendering\\Renderers.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.HotItemStyle\" Collapsed=\"true\" BaseTypeListCollapsed=\"true\">\r\n    <Position X=\"29\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAIAAQAAAAEAAgAAEAIAABAAAAAAAAAAIAEAACADAAA=</HashCode>\r\n      <FileName>Rendering\\Styles.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" Collapsed=\"true\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.CellStyle\" Collapsed=\"true\" BaseTypeListCollapsed=\"true\">\r\n    <Position X=\"22\" Y=\"1.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAIAAQAAAAEAAgAAAAIAAAAAAAAAAAAAAAEAAAADAAA=</HashCode>\r\n      <FileName>Rendering\\Styles.cs</FileName>\r\n    </TypeIdentifier>\r\n    <Lollipop Position=\"0.2\" Collapsed=\"true\" />\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.HyperlinkStyle\" Collapsed=\"true\">\r\n    <Position X=\"32.5\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAQAiAAAAAgAIAAAAAAAAIBAAgAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Styles.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.HeaderStateStyle\" Collapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAIAAQAAAAEAAAAAAAAAAAACACAAAgAgAAEAAAADAAA=</HashCode>\r\n      <FileName>Rendering\\Styles.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.HeaderFormatStyle\" Collapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAQAAgAAAAAAAAAAICAAIAIAAAABAAAAQAEAAA=</HashCode>\r\n      <FileName>Rendering\\Styles.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.GlassPanelForm\" Collapsed=\"true\">\r\n    <Position X=\"30.75\" Y=\"2.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>BgCkgAAARAoAAEAyEAAAAAIAAAAIAhCAAQIERAgAASA=</HashCode>\r\n      <FileName>SubControls\\GlassPanelForm.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.HeaderControl\" Collapsed=\"true\">\r\n    <Position X=\"22\" Y=\"3.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>MAAIOQAUABAAAACQiBQCKRgAACECAAoAwAAQxJAACaE=</HashCode>\r\n      <FileName>SubControls\\HeaderControl.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ToolStripCheckedListBox\" Collapsed=\"true\">\r\n    <Position X=\"30.75\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AkAACAgAACCACAAAAAAAAIAAwAAIAAQCAAAAAAAAAAA=</HashCode>\r\n      <FileName>SubControls\\ToolStripCheckedListBox.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ToolTipControl\" Collapsed=\"true\">\r\n    <Position X=\"32.5\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>CkoAByAwQQAggEvSAAIQiIWIBELAYOIpiAKQUIQDqEA=</HashCode>\r\n      <FileName>SubControls\\ToolTipControl.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.ColumnSelectionForm\" Collapsed=\"true\">\r\n    <Position X=\"27.25\" Y=\"1.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAEAAFDAAQTAUAACIBAoWEAAAAAAoAAAAAIEAAgA=</HashCode>\r\n      <FileName>Utilities\\ColumnSelectionForm.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.Generator\" Collapsed=\"true\">\r\n    <Position X=\"29\" Y=\"2.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAABAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAACAAAAAA=</HashCode>\r\n      <FileName>Utilities\\Generator.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TypedObjectListView&lt;T&gt;\" Collapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"7.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAwABEAAAAAACIAIAQEAABEAAAAAEEggAAAAACQAA=</HashCode>\r\n      <FileName>Utilities\\TypedObjectListView.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.TypedColumn&lt;T&gt;\" Collapsed=\"true\">\r\n    <Position X=\"22\" Y=\"7.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAACAAAAEAEAABAAEAQCAAAQAAEAEAAAAgAAAAAAAA=</HashCode>\r\n      <FileName>Utilities\\TypedObjectListView.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.VirtualObjectListView\" Collapsed=\"true\">\r\n    <Position X=\"13.75\" Y=\"5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AVkQQAAAAGIEAQAkKkHAEAgRH4gBgAGOCCEigAAgIAQ=</HashCode>\r\n      <FileName>VirtualObjectListView.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.Design.ObjectListViewDesigner\" Collapsed=\"true\">\r\n    <Position X=\"34.25\" Y=\"4.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAEAAAABACAEAQAEAAAAAAAgAQCAAAAAAAMIQAABEAA=</HashCode>\r\n      <FileName>ObjectListView.DesignTime.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.Design.OLVColumnCollectionEditor\" Collapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"5.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAABAAAABAAAAAAAAQAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>ObjectListView.DesignTime.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.Design.OverlayConverter\" Collapsed=\"true\">\r\n    <Position X=\"22\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAAAAA=</HashCode>\r\n      <FileName>ObjectListView.DesignTime.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.Properties.Resources\" Collapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"6.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAIAAAABEAAAgQAAAAAAAAAAQAIAAIg=</HashCode>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Class Name=\"BrightIdeasSoftware.DataTreeListView\" Collapsed=\"true\">\r\n    <Position X=\"12.75\" Y=\"7.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAgIAAAACAAEGAAAAAEAAAAAAABAAQAA=</HashCode>\r\n      <FileName>DataTreeListView.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Class>\r\n  <Interface Name=\"BrightIdeasSoftware.IDragSource\" Collapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"8.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>BAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAA=</HashCode>\r\n      <FileName>DragDrop\\DragSource.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.IDropSink\" Collapsed=\"true\">\r\n    <Position X=\"27.25\" Y=\"8.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAQQAAAAAIAEAAAAAEFAAAAgAAAAAAAAAA=</HashCode>\r\n      <FileName>DragDrop\\DropSink.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.IModelFilter\" Collapsed=\"true\">\r\n    <Position X=\"5.5\" Y=\"17.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\Filters.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.IListFilter\" Collapsed=\"true\">\r\n    <Position X=\"11.25\" Y=\"17.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\Filters.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.ICluster\" Collapsed=\"true\">\r\n    <Position X=\"22\" Y=\"8.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAQAAAAAAAAAAAAAAQAgAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\ICluster.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.IClusteringStrategy\" Collapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"8.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAABBAAAAAAAAAAAQBAQAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\IClusteringStrategy.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.IVirtualGroups\" Collapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"9.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAACAAAAEAAAAAAAAAAAEAAAACAAAAAA=</HashCode>\r\n      <FileName>Implementation\\VirtualGroups.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.IOwnerDataCallback\" Collapsed=\"true\">\r\n    <Position X=\"36\" Y=\"8.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AIAAAAAAAAAAAAAAAAAAAgAIAAAQAAAAAAAEAEAAAAA=</HashCode>\r\n      <FileName>Implementation\\VirtualGroups.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.IVirtualListDataSource\" Collapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"9.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>ABAAAAAAAAAAAAAgAAASAgAQAAAEAAAAAAAAAAAAgAA=</HashCode>\r\n      <FileName>Implementation\\VirtualListDataSource.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.IFilterableDataSource\" Collapsed=\"true\">\r\n    <Position X=\"29\" Y=\"8.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\VirtualListDataSource.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.IDecoration\" Collapsed=\"true\">\r\n    <Position X=\"14.75\" Y=\"14.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAQAAAAAAAAQAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Decorations.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.IOverlay\" Collapsed=\"true\">\r\n    <Position X=\"13.75\" Y=\"13.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Overlays.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.ITransparentOverlay\" Collapsed=\"true\">\r\n    <Position X=\"12.5\" Y=\"14.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Overlays.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.IRenderer\" Collapsed=\"true\">\r\n    <Position X=\"22\" Y=\"9.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAQAAAABAAAAAABAAAAAAAAAAABAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Rendering\\Renderers.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Interface Name=\"BrightIdeasSoftware.IItemStyle\" Collapsed=\"true\">\r\n    <Position X=\"30.75\" Y=\"8.75\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAA=</HashCode>\r\n      <FileName>Rendering\\Styles.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Interface>\r\n  <Enum Name=\"BrightIdeasSoftware.CellEditAtEdgeBehaviour\" Collapsed=\"true\">\r\n    <Position X=\"22\" Y=\"10.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAgAAAACAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAAA=</HashCode>\r\n      <FileName>CellEditing\\CellEditKeyEngine.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Enum>\r\n  <Enum Name=\"BrightIdeasSoftware.CellEditCharacterBehaviour\" Collapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"10.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>gAEAAAAQCAIAAAAAAIAAAAAAAUAQIABAAEAgAAAgACA=</HashCode>\r\n      <FileName>CellEditing\\CellEditKeyEngine.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Enum>\r\n  <Enum Name=\"BrightIdeasSoftware.DropTargetLocation\" Collapsed=\"true\">\r\n    <Position X=\"27.25\" Y=\"10.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAQAAAAABAAAAAAAAAAAEAAQBBAAAAAIgAAEAAAA=</HashCode>\r\n      <FileName>DragDrop\\DropSink.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Enum>\r\n  <Enum Name=\"BrightIdeasSoftware.DateTimePortion\" Collapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"10.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAJAAAAAAAAAAAAAIAAAAAACIEAAAAAAAAAAA=</HashCode>\r\n      <FileName>Filtering\\DateTimeClusteringStrategy.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Enum>\r\n  <Enum Name=\"BrightIdeasSoftware.GroupState\" Collapsed=\"true\">\r\n    <Position X=\"32.5\" Y=\"10.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AEAAAAAAAAAAABAAEAQAARAAIQAAAAQAAAAAAEAAAAA=</HashCode>\r\n      <FileName>Implementation\\Groups.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Enum>\r\n  <Enum Name=\"BrightIdeasSoftware.GroupMask\" Collapsed=\"true\">\r\n    <Position X=\"29\" Y=\"10.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AgAAgAAAwABAAAAAAAUAAAIAgQAAAAAEACAgAAAFAAA=</HashCode>\r\n      <FileName>Implementation\\Groups.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Enum>\r\n  <Enum Name=\"BrightIdeasSoftware.GroupMetricsMask\" Collapsed=\"true\">\r\n    <Position X=\"30.75\" Y=\"10.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAQAAAAAAAAAAAAAAQAAAAAAEAAAAIAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Groups.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Enum>\r\n  <Enum Name=\"BrightIdeasSoftware.HitTestLocation\" Collapsed=\"true\">\r\n    <Position X=\"34.25\" Y=\"10.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>ASAAEEAAAAAAAAQAEAAAAAAAAAAAABAAAAAACAAAEAA=</HashCode>\r\n      <FileName>Implementation\\OlvListViewHitTestInfo.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Enum>\r\n  <Delegate Name=\"BrightIdeasSoftware.EditorCreatorDelegate\" Collapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAEAAAAAAAAAAAAAAAAAAAQAAAABAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>CellEditing\\EditorRegistry.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.AspectGetterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"22\" Y=\"11.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.AspectPutterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"11.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAgA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.AspectToStringConverterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"11.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.CellToolTipGetterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"32.5\" Y=\"11.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.CheckStateGetterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"34.25\" Y=\"11.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.BooleanCheckStateGetterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"27.25\" Y=\"11.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.CheckStatePutterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"36\" Y=\"11.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAQAAQAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.BooleanCheckStatePutterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"29\" Y=\"11.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAgAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.ColumnRightClickEventHandler\" Collapsed=\"true\">\r\n    <Position X=\"22\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAEAAAQAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.HeaderDrawingDelegate\" Collapsed=\"true\">\r\n    <Position X=\"30.75\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAQABgAAAAACAQAAAAAAAAAAAAAAAAAAAAAAgAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.GroupFormatterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAABAAAACAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.GroupKeyGetterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"27.25\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.GroupKeyToTitleConverterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"29\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.HeaderToolTipGetterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"32.5\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.ImageGetterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"34.25\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.RenderDelegate\" Collapsed=\"true\">\r\n    <Position X=\"36\" Y=\"12.25\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAABAAAAAAgACAAAAACAAAAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.RowGetterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"23.75\" Y=\"13\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.RowFormatterDelegate\" Collapsed=\"true\">\r\n    <Position X=\"22\" Y=\"13\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.SortDelegate\" Collapsed=\"true\">\r\n    <Position X=\"25.5\" Y=\"13\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Delegates.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Delegate Name=\"BrightIdeasSoftware.CellEditEventHandler\" Collapsed=\"true\">\r\n    <Position X=\"30.75\" Y=\"11.5\" Width=\"1.5\" />\r\n    <TypeIdentifier>\r\n      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAABAAAAAAAAAA=</HashCode>\r\n      <FileName>Implementation\\Events.cs</FileName>\r\n    </TypeIdentifier>\r\n  </Delegate>\r\n  <Font Name=\"Segoe UI\" Size=\"9\" />\r\n</ClassDiagram>"
  },
  {
    "path": "source/ObjectListView/GlobalSuppressions.cs",
    "content": "﻿// This file is used by Code Analysis to maintain SuppressMessage\n// attributes that are applied to this project.\n// Project-level suppressions either have no target or are given\n// a specific target and scoped to a namespace, type, member, etc.\n\nusing System.Diagnostics.CodeAnalysis;\n\n[assembly: SuppressMessage(\"Interoperability\", \"CA1416:Validate platform compatibility\", Justification = \"<Pending>\", Scope = \"member\", Target = \"~M:BrightIdeasSoftware.ObjectListView.HandleChar(System.Windows.Forms.Message@)~System.Boolean\")]\n"
  },
  {
    "path": "source/ObjectListView/Implementation/Attributes.cs",
    "content": "﻿/*\r\n * Attributes - Attributes that can be attached to properties of models to allow columns to be\r\n *              built from them directly\r\n *\r\n * Author: Phillip Piper\r\n * Date: 15/08/2009 22:01\r\n *\r\n * Change log:\r\n * v2.6\r\n * 2012-08-16  JPP  - Added [OLVChildren] and [OLVIgnore]\r\n *                  - OLV attributes can now only be set on properties\r\n * v2.4\r\n * 2010-04-14  JPP  - Allow Name property to be set\r\n * \r\n * v2.3\r\n * 2009-08-15  JPP  - Initial version\r\n *\r\n * To do:\r\n * \r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// This attribute is used to mark a property of a model\r\n    /// class that should be noticed by Generator class.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// All the attributes of this class match their equivilent properties on OLVColumn.\r\n    /// </remarks>\r\n    [AttributeUsage(AttributeTargets.Property)]\r\n    public class OLVColumnAttribute : Attribute\r\n    {\r\n        #region Constructor\r\n\r\n        // There are several property where we actually want nullable value (bool?, int?),\r\n        // but it seems attribute properties can't be nullable types.\r\n        // So we explicitly track if those properties have been set.\r\n\r\n        /// <summary>\r\n        /// Create a new OLVColumnAttribute\r\n        /// </summary>\r\n        public OLVColumnAttribute() {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a new OLVColumnAttribute with the given title\r\n        /// </summary>\r\n        /// <param name=\"title\">The title of the column</param>\r\n        public OLVColumnAttribute(string title) {\r\n            Title = title;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public string AspectToStringFormat {\r\n            get { return aspectToStringFormat; }\r\n            set { aspectToStringFormat = value; }\r\n        }\r\n        private string aspectToStringFormat;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public bool CheckBoxes {\r\n            get { return checkBoxes; }\r\n            set {\r\n                checkBoxes = value;\r\n                IsCheckBoxesSet = true;\r\n            }\r\n        }\r\n        private bool checkBoxes;\r\n        internal bool IsCheckBoxesSet = false;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public int DisplayIndex {\r\n            get { return displayIndex; }\r\n            set { displayIndex = value; }\r\n        }\r\n        private int displayIndex = -1;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public bool FillsFreeSpace {\r\n            get { return fillsFreeSpace; }\r\n            set { fillsFreeSpace = value; }\r\n        }\r\n        private bool fillsFreeSpace;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public int FreeSpaceProportion {\r\n            get { return freeSpaceProportion; }\r\n            set {\r\n                freeSpaceProportion = value;\r\n                IsFreeSpaceProportionSet = true;\r\n            }\r\n        }\r\n        private int freeSpaceProportion;\r\n        internal bool IsFreeSpaceProportionSet = false;\r\n\r\n        /// <summary>\r\n        /// An array of IComparables that mark the cutoff points for values when\r\n        /// grouping on this column. \r\n        /// </summary>\r\n        public object[] GroupCutoffs {\r\n            get { return groupCutoffs; }\r\n            set { groupCutoffs = value; }\r\n        }\r\n        private object[] groupCutoffs;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public string[] GroupDescriptions {\r\n            get { return groupDescriptions; }\r\n            set { groupDescriptions = value; }\r\n        }\r\n        private string[] groupDescriptions;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public string GroupWithItemCountFormat {\r\n            get { return groupWithItemCountFormat; }\r\n            set { groupWithItemCountFormat = value; }\r\n        }\r\n        private string groupWithItemCountFormat;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public string GroupWithItemCountSingularFormat {\r\n            get { return groupWithItemCountSingularFormat; }\r\n            set { groupWithItemCountSingularFormat = value; }\r\n        }\r\n        private string groupWithItemCountSingularFormat;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public bool Hyperlink {\r\n            get { return hyperlink; }\r\n            set { hyperlink = value; }\r\n        }\r\n        private bool hyperlink;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public string ImageAspectName {\r\n            get { return imageAspectName; }\r\n            set { imageAspectName = value; }\r\n        }\r\n        private string imageAspectName;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public bool IsEditable {\r\n            get { return isEditable; }\r\n            set {\r\n                isEditable = value;\r\n                IsEditableSet = true;\r\n            }\r\n        }\r\n        private bool isEditable = true;\r\n        internal bool IsEditableSet = false;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public bool IsVisible {\r\n            get { return isVisible; }\r\n            set { isVisible = value; }\r\n        }\r\n        private bool isVisible = true;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public bool IsTileViewColumn {\r\n            get { return isTileViewColumn; }\r\n            set { isTileViewColumn = value; }\r\n        }\r\n        private bool isTileViewColumn;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public int MaximumWidth {\r\n            get { return maximumWidth; }\r\n            set { maximumWidth = value; }\r\n        }\r\n        private int maximumWidth = -1;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public int MinimumWidth {\r\n            get { return minimumWidth; }\r\n            set { minimumWidth = value; }\r\n        }\r\n        private int minimumWidth = -1;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public String Name {\r\n            get { return name; }\r\n            set { name = value; }\r\n        }\r\n        private String name;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public HorizontalAlignment TextAlign {\r\n            get { return textAlign; }\r\n            set {\r\n                textAlign = value;\r\n                IsTextAlignSet = true;\r\n            }\r\n        }\r\n        private HorizontalAlignment textAlign = HorizontalAlignment.Left;\r\n        internal bool IsTextAlignSet = false;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public String Tag {\r\n            get { return tag; }\r\n            set { tag = value; }\r\n        }\r\n        private String tag;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public String Title {\r\n            get { return title; }\r\n            set { title = value; }\r\n        }\r\n        private String title;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public String ToolTipText {\r\n            get { return toolTipText; }\r\n            set { toolTipText = value; }\r\n        }\r\n        private String toolTipText;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public bool TriStateCheckBoxes {\r\n            get { return triStateCheckBoxes; }\r\n            set { \r\n                triStateCheckBoxes = value;\r\n                IsTriStateCheckBoxesSet = true;\r\n            }\r\n        }\r\n        private bool triStateCheckBoxes;\r\n        internal bool IsTriStateCheckBoxesSet = false;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public bool UseInitialLetterForGroup {\r\n            get { return useInitialLetterForGroup; }\r\n            set { useInitialLetterForGroup = value; }\r\n        }\r\n        private bool useInitialLetterForGroup;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public int Width {\r\n            get { return width; }\r\n            set { width = value; }\r\n        }\r\n        private int width = 150;\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// Properties marked with [OLVChildren] will be used as the children source in a TreeListView.\r\n    /// </summary>\r\n    [AttributeUsage(AttributeTargets.Property)]\r\n    public class OLVChildrenAttribute : Attribute\r\n    {\r\n        \r\n    }\r\n\r\n    /// <summary>\r\n    /// Properties marked with [OLVIgnore] will not have columns generated for them.\r\n    /// </summary>\r\n    [AttributeUsage(AttributeTargets.Property)]\r\n    public class OLVIgnoreAttribute : Attribute\r\n    {\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/Comparers.cs",
    "content": "/*\r\n * Comparers - Various Comparer classes used within ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 25/11/2008 17:15 \r\n *\r\n * Change log:\r\n * v2.8.1\r\n * 2014-12-03  JPP  - Added StringComparer\r\n * v2.3\r\n * 2009-08-24  JPP  - Added OLVGroupComparer\r\n * 2009-06-01  JPP  - ModelObjectComparer would crash if secondary sort column was null.\r\n * 2008-12-20  JPP  - Fixed bug with group comparisons when a group key was null (SF#2445761)\r\n * 2008-11-25  JPP  Initial version\r\n *\r\n * TO DO:\r\n *\r\n * Copyright (C) 2006-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// ColumnComparer is the workhorse for all comparison between two values of a particular column.\r\n    /// If the column has a specific comparer, use that to compare the values. Otherwise, do\r\n    /// a case insensitive string compare of the string representations of the values.\r\n    /// </summary>\r\n    /// <remarks><para>This class inherits from both IComparer and its generic counterpart\r\n    /// so that it can be used on untyped and typed collections.</para>\r\n    /// <para>This is used by normal (non-virtual) ObjectListViews. Virtual lists use\r\n    /// ModelObjectComparer</para>\r\n    /// </remarks>\r\n    public class ColumnComparer : IComparer, IComparer<OLVListItem>\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the method that will be used to compare two strings.\r\n        /// The default is to compare on the current culture, case-insensitive\r\n        /// </summary>\r\n        public static StringCompareDelegate StringComparer\r\n        {\r\n            get { return stringComparer; }\r\n            set { stringComparer = value; }\r\n        }\r\n        private static StringCompareDelegate stringComparer;\r\n\r\n        /// <summary>\r\n        /// Create a ColumnComparer that will order the rows in a list view according\r\n        /// to the values in a given column\r\n        /// </summary>\r\n        /// <param name=\"col\">The column whose values will be compared</param>\r\n        /// <param name=\"order\">The ordering for column values</param>\r\n        public ColumnComparer(OLVColumn col, SortOrder order)\r\n        {\r\n            column = col;\r\n            sortOrder = order;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a ColumnComparer that will order the rows in a list view according\r\n        /// to the values in a given column, and by a secondary column if the primary\r\n        /// column is equal.\r\n        /// </summary>\r\n        /// <param name=\"col\">The column whose values will be compared</param>\r\n        /// <param name=\"order\">The ordering for column values</param>\r\n        /// <param name=\"col2\">The column whose values will be compared for secondary sorting</param>\r\n        /// <param name=\"order2\">The ordering for secondary column values</param>\r\n        public ColumnComparer(OLVColumn col, SortOrder order, OLVColumn col2, SortOrder order2)\r\n            : this(col, order)\r\n        {\r\n            // There is no point in secondary sorting on the same column\r\n            if (col != col2)\r\n                secondComparer = new ColumnComparer(col2, order2);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Compare two rows\r\n        /// </summary>\r\n        /// <param name=\"x\">row1</param>\r\n        /// <param name=\"y\">row2</param>\r\n        /// <returns>An ordering indication: -1, 0, 1</returns>\r\n        public int Compare(object x, object y)\r\n        {\r\n            return Compare((OLVListItem)x, (OLVListItem)y);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Compare two rows\r\n        /// </summary>\r\n        /// <param name=\"x\">row1</param>\r\n        /// <param name=\"y\">row2</param>\r\n        /// <returns>An ordering indication: -1, 0, 1</returns>\r\n        public int Compare(OLVListItem x, OLVListItem y)\r\n        {\r\n            if (sortOrder == SortOrder.None)\r\n                return 0;\r\n\r\n            int result = 0;\r\n            object x1 = column.GetValue(x.RowObject);\r\n            object y1 = column.GetValue(y.RowObject);\r\n\r\n            // Handle nulls. Null values come last\r\n            bool xIsNull = (x1 == null || x1 == DBNull.Value);\r\n            bool yIsNull = (y1 == null || y1 == DBNull.Value);\r\n            if (xIsNull || yIsNull) {\r\n                if (xIsNull && yIsNull)\r\n                    result = 0;\r\n                else\r\n                    result = (xIsNull ? -1 : 1);\r\n            } else {\r\n                result = CompareValues(x1, y1);\r\n            }\r\n\r\n            if (sortOrder == SortOrder.Descending)\r\n                result = 0 - result;\r\n\r\n            // If the result was equality, use the secondary comparer to resolve it\r\n            if (result == 0 && secondComparer != null)\r\n                result = secondComparer.Compare(x, y);\r\n\r\n            return result;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Compare the actual values to be used for sorting\r\n        /// </summary>\r\n        /// <param name=\"x\">The aspect extracted from the first row</param>\r\n        /// <param name=\"y\">The aspect extracted from the second row</param>\r\n        /// <returns>An ordering indication: -1, 0, 1</returns>\r\n        public int CompareValues(object x, object y)\r\n        {\r\n            // Force case insensitive compares on strings\r\n            if (x is string xAsString)\r\n                return CompareStrings(xAsString, y as String);\r\n\r\n            return x is IComparable comparable ? comparable.CompareTo(y) : 0;\r\n        }\r\n\r\n        private static int CompareStrings(string x, string y)\r\n        {\r\n            if (StringComparer == null)\r\n                return String.Compare(x, y, StringComparison.CurrentCultureIgnoreCase);\r\n            else\r\n                return StringComparer(x, y);\r\n        }\r\n\r\n        private OLVColumn column;\r\n        private SortOrder sortOrder;\r\n        private ColumnComparer secondComparer;\r\n    }\r\n\r\n\r\n    /// <summary>\r\n    /// This comparer sort list view groups. OLVGroups have a \"SortValue\" property,\r\n    /// which is used if present. Otherwise, the titles of the groups will be compared.\r\n    /// </summary>\r\n    public class OLVGroupComparer : IComparer<OLVGroup>\r\n    {\r\n        /// <summary>\r\n        /// Create a group comparer\r\n        /// </summary>\r\n        /// <param name=\"order\">The ordering for column values</param>\r\n        public OLVGroupComparer(SortOrder order) {\r\n            sortOrder = order;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Compare the two groups. OLVGroups have a \"SortValue\" property,\r\n        /// which is used if present. Otherwise, the titles of the groups will be compared.\r\n        /// </summary>\r\n        /// <param name=\"x\">group1</param>\r\n        /// <param name=\"y\">group2</param>\r\n        /// <returns>An ordering indication: -1, 0, 1</returns>\r\n        public int Compare(OLVGroup x, OLVGroup y) {\r\n            // If we can compare the sort values, do that.\r\n            // Otherwise do a case insensitive compare on the group header.\r\n            int result;\r\n            if (x.SortValue != null && y.SortValue != null)\r\n                result = x.SortValue.CompareTo(y.SortValue);\r\n            else\r\n                result = String.Compare(x.Header, y.Header, StringComparison.CurrentCultureIgnoreCase);\r\n\r\n            if (sortOrder == SortOrder.Descending)\r\n                result = 0 - result;\r\n\r\n            return result;\r\n        }\r\n\r\n        private SortOrder sortOrder;\r\n    }\r\n\r\n    /// <summary>\r\n    /// This comparer can be used to sort a collection of model objects by a given column\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>This is used by virtual ObjectListViews. Non-virtual lists use\r\n    /// ColumnComparer</para>\r\n    /// </remarks>\r\n    public class ModelObjectComparer : IComparer, IComparer<object>\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the method that will be used to compare two strings.\r\n        /// The default is to compare on the current culture, case-insensitive\r\n        /// </summary>\r\n        public static StringCompareDelegate StringComparer\r\n        {\r\n            get { return stringComparer; }\r\n            set { stringComparer = value; }\r\n        }\r\n        private static StringCompareDelegate stringComparer;\r\n\r\n        /// <summary>\r\n        /// Create a model object comparer\r\n        /// </summary>\r\n        /// <param name=\"col\"></param>\r\n        /// <param name=\"order\"></param>\r\n        public ModelObjectComparer(OLVColumn col, SortOrder order)\r\n        {\r\n            column = col;\r\n            sortOrder = order;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a model object comparer with a secondary sorting column\r\n        /// </summary>\r\n        /// <param name=\"col\"></param>\r\n        /// <param name=\"order\"></param>\r\n        /// <param name=\"col2\"></param>\r\n        /// <param name=\"order2\"></param>\r\n        public ModelObjectComparer(OLVColumn col, SortOrder order, OLVColumn col2, SortOrder order2)\r\n            : this(col, order)\r\n        {\r\n            // There is no point in secondary sorting on the same column\r\n            if (col != col2 && col2 != null && order2 != SortOrder.None)\r\n                secondComparer = new ModelObjectComparer(col2, order2);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Compare the two model objects\r\n        /// </summary>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        /// <returns></returns>\r\n        public int Compare(object x, object y)\r\n        {\r\n            int result = 0;\r\n            object x1 = column.GetValue(x);\r\n            object y1 = column.GetValue(y);\r\n\r\n            if (sortOrder == SortOrder.None)\r\n                return 0;\r\n\r\n            // Handle nulls. Null values come last\r\n            bool xIsNull = (x1 == null || x1 == DBNull.Value);\r\n            bool yIsNull = (y1 == null || y1 == DBNull.Value);\r\n            if (xIsNull || yIsNull) {\r\n                if (xIsNull && yIsNull)\r\n                    result = 0;\r\n                else\r\n                    result = (xIsNull ? -1 : 1);\r\n            } else {\r\n                result = CompareValues(x1, y1);\r\n            }\r\n\r\n            if (sortOrder == SortOrder.Descending)\r\n                result = 0 - result;\r\n\r\n            // If the result was equality, use the secondary comparer to resolve it\r\n            if (result == 0 && secondComparer != null)\r\n                result = secondComparer.Compare(x, y);\r\n\r\n            return result;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Compare the actual values\r\n        /// </summary>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        /// <returns></returns>\r\n        public int CompareValues(object x, object y)\r\n        {\r\n            // Force case insensitive compares on strings\r\n            if (x is string xStr)\r\n                return CompareStrings(xStr, y as String);\r\n\r\n            return x is IComparable comparable ? comparable.CompareTo(y) : 0;\r\n        }\r\n\r\n        private static int CompareStrings(string x, string y)\r\n        {\r\n            if (StringComparer == null)\r\n                return String.Compare(x, y, StringComparison.CurrentCultureIgnoreCase);\r\n            else\r\n                return StringComparer(x, y);\r\n        }\r\n\r\n        private OLVColumn column;\r\n        private SortOrder sortOrder;\r\n        private ModelObjectComparer secondComparer;\r\n\r\n        #region IComparer<object> Members\r\n\r\n        #endregion\r\n    }\r\n\r\n}"
  },
  {
    "path": "source/ObjectListView/Implementation/DataSourceAdapter.cs",
    "content": "﻿/*\r\n * DataSourceAdapter - A helper class that translates DataSource events for an ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 20/09/2010 7:42 AM\r\n *\r\n * Change log:\r\n * v2.9\r\n * 2015-10-31  JPP  - Put back sanity check on upper limit of source items\r\n * 2015-02-02  JPP  - Made CreateColumnsFromSource() only rebuild columns when new ones were added\r\n * v2.8.1\r\n * 2014-11-23  JPP  - Honour initial CurrencyManager.Position when setting DataSource.\r\n * 2014-10-27  JPP  - Fix issue where SelectedObject was not sync'ed with CurrencyManager.Position (SF #129)\r\n * v2.6\r\n * 2012-08-16  JPP  - Unify common column creation functionality with Generator when possible\r\n * \r\n * 2010-09-20  JPP  - Initial version\r\n * \r\n * Copyright (C) 2010-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing System.Windows.Forms;\r\nusing System.Diagnostics;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A helper class that translates DataSource events for an ObjectListView\r\n    /// </summary>\r\n    public class DataSourceAdapter : IDisposable\r\n    {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Make a DataSourceAdapter\r\n        /// </summary>\r\n        public DataSourceAdapter(ObjectListView olv) {\r\n            ListView = olv ?? throw new ArgumentNullException(\"olv\");\r\n            // ReSharper disable once DoNotCallOverridableMethodsInConstructor\r\n            BindListView(ListView);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Finalize this object\r\n        /// </summary>\r\n        ~DataSourceAdapter() {\r\n            Dispose(false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Release all the resources used by this instance\r\n        /// </summary>\r\n        public void Dispose() {\r\n            Dispose(true);\r\n            GC.SuppressFinalize(this);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Release all the resources used by this instance\r\n        /// </summary>\r\n        public virtual void Dispose(bool fromUser) {\r\n            UnbindListView(ListView);\r\n            UnbindDataSource();\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not columns will be automatically generated to show the\r\n        /// columns when the DataSource is set. \r\n        /// </summary>\r\n        /// <remarks>This must be set before the DataSource is set. It has no effect afterwards.</remarks>\r\n        public bool AutoGenerateColumns {\r\n            get { return autoGenerateColumns; }\r\n            set { autoGenerateColumns = value; }\r\n        }\r\n        private bool autoGenerateColumns = true;\r\n\r\n        /// <summary>\r\n        /// Get or set the DataSource that will be displayed in this list view.\r\n        /// </summary>\r\n        public virtual Object DataSource {\r\n            get { return dataSource; }\r\n            set {\r\n                dataSource = value;\r\n                RebindDataSource(true);\r\n            }\r\n        }\r\n        private Object dataSource;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the name of the list or table in the data source for which the DataListView is displaying data.\r\n        /// </summary>\r\n        /// <remarks>If the data source is not a DataSet or DataViewManager, this property has no effect</remarks>\r\n        public virtual string DataMember {\r\n            get { return dataMember; }\r\n            set {\r\n                if (dataMember != value) {\r\n                    dataMember = value;\r\n                    RebindDataSource();\r\n                }\r\n            }\r\n        }\r\n        private string dataMember = \"\";\r\n\r\n        /// <summary>\r\n        /// Gets the ObjectListView upon which this adaptor will operate\r\n        /// </summary>\r\n        public ObjectListView ListView {\r\n            get { return listView; }\r\n            internal set { listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        #endregion\r\n\r\n        #region Implementation properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the currency manager which is handling our binding context\r\n        /// </summary>\r\n        protected CurrencyManager CurrencyManager {\r\n            get { return currencyManager; }\r\n            set { currencyManager = value; }\r\n        }\r\n        private CurrencyManager currencyManager;\r\n\r\n        #endregion\r\n\r\n        #region Binding and unbinding\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        protected virtual void BindListView(ObjectListView olv) {\r\n            if (olv == null)\r\n                return;\r\n\r\n            olv.Freezing += new EventHandler<FreezeEventArgs>(HandleListViewFreezing);\r\n            olv.SelectionChanged += new EventHandler(HandleListViewSelectionChanged);\r\n            olv.BindingContextChanged += new EventHandler(HandleListViewBindingContextChanged);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        protected virtual void UnbindListView(ObjectListView olv) {\r\n            if (olv == null)\r\n                return;\r\n\r\n            olv.Freezing -= new EventHandler<FreezeEventArgs>(HandleListViewFreezing);\r\n            olv.SelectionChanged -= new EventHandler(HandleListViewSelectionChanged);\r\n            olv.BindingContextChanged -= new EventHandler(HandleListViewBindingContextChanged);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        protected virtual void BindDataSource() {\r\n            if (CurrencyManager == null)\r\n                return;\r\n\r\n            CurrencyManager.MetaDataChanged += new EventHandler(HandleCurrencyManagerMetaDataChanged);\r\n            CurrencyManager.PositionChanged += new EventHandler(HandleCurrencyManagerPositionChanged);\r\n            CurrencyManager.ListChanged += new ListChangedEventHandler(CurrencyManagerListChanged);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        protected virtual void UnbindDataSource() {\r\n            if (CurrencyManager == null)\r\n                return;\r\n\r\n            CurrencyManager.MetaDataChanged -= new EventHandler(HandleCurrencyManagerMetaDataChanged);\r\n            CurrencyManager.PositionChanged -= new EventHandler(HandleCurrencyManagerPositionChanged);\r\n            CurrencyManager.ListChanged -= new ListChangedEventHandler(CurrencyManagerListChanged);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Initialization\r\n\r\n        /// <summary>\r\n        /// Our data source has changed. Figure out how to handle the new source\r\n        /// </summary>\r\n        protected virtual void RebindDataSource() {\r\n            RebindDataSource(false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Our data source has changed. Figure out how to handle the new source\r\n        /// </summary>\r\n        protected virtual void RebindDataSource(bool forceDataInitialization) {\r\n\r\n            CurrencyManager tempCurrencyManager = null;\r\n            if (ListView != null && ListView.BindingContext != null && DataSource != null) {\r\n                tempCurrencyManager = ListView.BindingContext[DataSource, DataMember] as CurrencyManager;\r\n            }\r\n\r\n            // Has our currency manager changed?\r\n            if (CurrencyManager != tempCurrencyManager) {\r\n                UnbindDataSource();\r\n                CurrencyManager = tempCurrencyManager;\r\n                BindDataSource();\r\n\r\n                // Our currency manager has changed so we have to initialize a new data source\r\n                forceDataInitialization = true;\r\n            }\r\n\r\n            if (forceDataInitialization)\r\n                InitializeDataSource();\r\n        }\r\n\r\n        /// <summary>\r\n        /// The data source for this control has changed. Reconfigure the control for the new source\r\n        /// </summary>\r\n        protected virtual void InitializeDataSource() {\r\n            if (ListView.Frozen || CurrencyManager == null)\r\n                return;\r\n\r\n            CreateColumnsFromSource();\r\n            CreateMissingAspectGettersAndPutters();\r\n            SetListContents();\r\n            ListView.AutoSizeColumns();\r\n\r\n            // Fake a position change event so that the control matches any initial Position\r\n            HandleCurrencyManagerPositionChanged(null, null);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Take the contents of the currently bound list and put them into the control\r\n        /// </summary>\r\n        protected virtual void SetListContents() {\r\n            ListView.Objects = CurrencyManager.List;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create columns for the listview based on what properties are available in the data source\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>This method will create columns if there is not already a column displaying that property.</para>\r\n        /// </remarks>\r\n        protected virtual void CreateColumnsFromSource() {\r\n            if (CurrencyManager == null)\r\n                return;\r\n\r\n            // Don't generate any columns in design mode. If we do, the user will see them,\r\n            // but the Designer won't know about them and won't persist them, which is very confusing\r\n            if (ListView.IsDesignMode)\r\n                return;\r\n\r\n            // Don't create columns if we've been told not to\r\n            if (!AutoGenerateColumns)\r\n                return;\r\n\r\n            // Use a Generator to create columns\r\n            Generator generator = Generator.Instance as Generator ?? new Generator();\r\n\r\n            PropertyDescriptorCollection properties = CurrencyManager.GetItemProperties();\r\n            if (properties.Count == 0)\r\n                return;\r\n\r\n            bool wereColumnsAdded = false;\r\n            foreach (PropertyDescriptor property in properties) {\r\n\r\n                if (!ShouldCreateColumn(property))\r\n                    continue;\r\n\r\n                // Create a column\r\n                OLVColumn column = generator.MakeColumnFromPropertyDescriptor(property);\r\n                ConfigureColumn(column, property);\r\n\r\n                // Add it to our list\r\n                ListView.AllColumns.Add(column);\r\n                wereColumnsAdded = true;\r\n            }\r\n\r\n            if (wereColumnsAdded)\r\n                generator.PostCreateColumns(ListView);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Decide if a new column should be added to the control to display\r\n        /// the given property\r\n        /// </summary>\r\n        /// <param name=\"property\"></param>\r\n        /// <returns></returns>\r\n        protected virtual bool ShouldCreateColumn(PropertyDescriptor property) {\r\n\r\n            // Is there a column that already shows this property? If so, we don't show it again\r\n            if (ListView.AllColumns.Exists(delegate(OLVColumn x) { return x.AspectName == property.Name; }))\r\n                return false;\r\n\r\n            // Relationships to other tables turn up as IBindibleLists. Don't make columns to show them.\r\n            // CHECK: Is this always true? What other things could be here? Constraints? Triggers?\r\n            if (property.PropertyType == typeof(IBindingList))\r\n                return false;\r\n\r\n            // Ignore anything marked with [OLVIgnore]\r\n            return property.Attributes[typeof(OLVIgnoreAttribute)] == null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Configure the given column to show the given property.\r\n        /// The title and aspect name of the column are already filled in.\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"property\"></param>\r\n        protected virtual void ConfigureColumn(OLVColumn column, PropertyDescriptor property) {\r\n\r\n            column.LastDisplayIndex = ListView.AllColumns.Count;\r\n\r\n            // If our column is a BLOB, it could be an image, so assign a renderer to draw it.\r\n            // CONSIDER: Is this a common enough case to warrant this code?\r\n            if (property.PropertyType == typeof(Byte[]))\r\n                column.Renderer = new ImageRenderer();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Generate aspect getters and putters for any columns that are missing them (and for which we have\r\n        /// enough information to actually generate a getter)\r\n        /// </summary>\r\n        protected virtual void CreateMissingAspectGettersAndPutters() {\r\n            foreach (OLVColumn x in ListView.AllColumns) {\r\n                OLVColumn column = x; // stack based variable accessible from closures\r\n                if (column.AspectGetter == null && !String.IsNullOrEmpty(column.AspectName)) {\r\n                    column.AspectGetter = delegate(object row) {\r\n                        // In most cases, rows will be DataRowView objects\r\n                        if (row is not DataRowView drv) \r\n                            return column.GetAspectByName(row);\r\n                        return (drv.Row.RowState == DataRowState.Detached) ? null : drv[column.AspectName];\r\n                    };\r\n                }\r\n                if (column.IsEditable && column.AspectPutter == null && !String.IsNullOrEmpty(column.AspectName)) {\r\n                    column.AspectPutter = delegate(object row, object newValue) {\r\n                        // In most cases, rows will be DataRowView objects\r\n                        if (row is not DataRowView drv)\r\n                            column.PutAspectByName(row, newValue);\r\n                        else {\r\n                            if (drv.Row.RowState != DataRowState.Detached)\r\n                                drv[column.AspectName] = newValue;\r\n                        }\r\n                    };\r\n                }\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Event Handlers\r\n\r\n        /// <summary>\r\n        /// CurrencyManager ListChanged event handler.\r\n        /// Deals with fine-grained changes to list items.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// It's actually difficult to deal with these changes in a fine-grained manner.\r\n        /// If our listview is grouped, then any change may make a new group appear or\r\n        /// an old group disappear. It is rarely enough to simply update the affected row.\r\n        /// </remarks>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void CurrencyManagerListChanged(object sender, ListChangedEventArgs e) {\r\n            Debug.Assert(sender == CurrencyManager);\r\n\r\n            // Ignore changes make while frozen, since we will do a complete rebuild when we unfreeze\r\n            if (ListView.Frozen)\r\n                return;\r\n\r\n            //System.Diagnostics.Debug.WriteLine(e.ListChangedType);\r\n            Stopwatch sw = Stopwatch.StartNew();\r\n            switch (e.ListChangedType) {\r\n\r\n                case ListChangedType.Reset:\r\n                    HandleListChangedReset(e);\r\n                    break;\r\n\r\n                case ListChangedType.ItemChanged:\r\n                    HandleListChangedItemChanged(e);\r\n                    break;\r\n\r\n                case ListChangedType.ItemAdded:\r\n                    HandleListChangedItemAdded(e);\r\n                    break;\r\n\r\n                // An item has gone away.\r\n                case ListChangedType.ItemDeleted:\r\n                    HandleListChangedItemDeleted(e);\r\n                    break;\r\n\r\n                // An item has changed its index.\r\n                case ListChangedType.ItemMoved:\r\n                    HandleListChangedItemMoved(e);\r\n                    break;\r\n\r\n                // Something has changed in the metadata.\r\n                // CHECK: When are these events actually fired?\r\n                case ListChangedType.PropertyDescriptorAdded:\r\n                case ListChangedType.PropertyDescriptorChanged:\r\n                case ListChangedType.PropertyDescriptorDeleted:\r\n                    HandleListChangedMetadataChanged(e);\r\n                    break;\r\n            }\r\n            sw.Stop();\r\n            Debug.WriteLine(String.Format(\"PERF - Processing {0} event on {1} rows took {2}ms\", e.ListChangedType, ListView.GetItemCount(), sw.ElapsedMilliseconds));\r\n\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle PropertyDescriptor* events\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleListChangedMetadataChanged(ListChangedEventArgs e) {\r\n            InitializeDataSource();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle ItemMoved event\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleListChangedItemMoved(ListChangedEventArgs e) {\r\n            // When is this actually triggered?\r\n            InitializeDataSource();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the ItemDeleted event\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleListChangedItemDeleted(ListChangedEventArgs e) {\r\n            InitializeDataSource();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle an ItemAdded event.\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleListChangedItemAdded(ListChangedEventArgs e) {\r\n            // We get this event twice if certain grid controls are used to add a new row to a\r\n            // datatable: once when the editing of a new row begins, and once again when that\r\n            // editing commits. (If the user cancels the creation of the new row, we never see\r\n            // the second creation.) We detect this by seeing if this is a view on a row in a\r\n            // DataTable, and if it is, testing to see if it's a new row under creation.\r\n\r\n            Object newRow = CurrencyManager.List[e.NewIndex];\r\n            if (newRow is not DataRowView drv || !drv.IsNew) {\r\n                // Either we're not dealing with a view on a data table, or this is the commit\r\n                // notification. Either way, this is the final notification, so we want to\r\n                // handle the new row now!\r\n                InitializeDataSource();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the Reset event\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleListChangedReset(ListChangedEventArgs e) {\r\n            // The whole list has changed utterly, so reload it.\r\n            InitializeDataSource();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle ItemChanged event. This is triggered when a single item\r\n        /// has changed, so just refresh that one item.\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        /// <remarks>Even in this simple case, we should probably rebuild the list.\r\n        /// For example, the change could put the item into its own new group.</remarks>\r\n        protected virtual void HandleListChangedItemChanged(ListChangedEventArgs e) {\r\n            // A single item has changed, so just refresh that.\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"HandleListChangedItemChanged: {0}, {1}\", e.NewIndex, e.PropertyDescriptor.Name));\r\n           \r\n            Object changedRow = CurrencyManager.List[e.NewIndex];\r\n            ListView.RefreshObject(changedRow);\r\n        }\r\n\r\n        /// <summary>\r\n        /// The CurrencyManager calls this if the data source looks\r\n        /// different. We just reload everything.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        /// <remarks>\r\n        /// CHECK: Do we need this if we are handle ListChanged metadata events?\r\n        /// </remarks>\r\n        protected virtual void HandleCurrencyManagerMetaDataChanged(object sender, EventArgs e) {\r\n            InitializeDataSource();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Called by the CurrencyManager when the currently selected item\r\n        /// changes. We update the ListView selection so that we stay in sync\r\n        /// with any other controls bound to the same source.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleCurrencyManagerPositionChanged(object sender, EventArgs e) {\r\n            int index = CurrencyManager.Position;\r\n\r\n            // Make sure the index is sane (-1 pops up from time to time)\r\n            if (index < 0 || index >= ListView.GetItemCount())\r\n                return;\r\n\r\n            // Avoid recursion. If we are currently changing the index, don't\r\n            // start the process again.\r\n            if (isChangingIndex)\r\n                return;\r\n\r\n            try {\r\n                isChangingIndex = true;\r\n                ChangePosition(index);\r\n            }\r\n            finally {\r\n                isChangingIndex = false;\r\n            }\r\n        }\r\n        private bool isChangingIndex = false;\r\n\r\n        /// <summary>\r\n        /// Change the control's position (which is it's currently selected row)\r\n        /// to the nth row in the dataset\r\n        /// </summary>\r\n        /// <param name=\"index\">The index of the row to be selected</param>\r\n        protected virtual void ChangePosition(int index) {\r\n            // We can't use the index directly, since our listview may be sorted\r\n            ListView.SelectedObject = CurrencyManager.List[index];\r\n\r\n            // THINK: Do we always want to bring it into view?\r\n            if (ListView.SelectedIndices.Count > 0)\r\n                ListView.EnsureVisible(ListView.SelectedIndices[0]);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region ObjectListView event handlers\r\n\r\n        /// <summary>\r\n        /// Handle the selection changing in our ListView.\r\n        /// We need to tell our currency manager about the new position.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleListViewSelectionChanged(object sender, EventArgs e) {\r\n            // Prevent recursion\r\n            if (isChangingIndex)\r\n                return;\r\n\r\n            // Sanity \r\n            if (CurrencyManager == null)\r\n                return;\r\n\r\n            // If only one item is selected, tell the currency manager which item is selected.\r\n            // CurrencyManager can't handle multiple selection so there's nothing we can do \r\n            // if more than one row is selected.\r\n            if (ListView.SelectedIndices.Count != 1)\r\n                return;\r\n\r\n            try {\r\n                isChangingIndex = true;\r\n\r\n                // We can't use the selectedIndex directly, since our listview may be sorted and/or filtered\r\n                // So we have to find the index of the selected object within the original list.\r\n                CurrencyManager.Position = CurrencyManager.List.IndexOf(ListView.SelectedObject);\r\n            } finally {\r\n                isChangingIndex = false;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the frozenness of our ListView changing. \r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleListViewFreezing(object sender, FreezeEventArgs e) {\r\n            if (!alreadyFreezing && e.FreezeLevel == 0) {\r\n                try {\r\n                    alreadyFreezing = true;\r\n                    RebindDataSource(true);\r\n                } finally {\r\n                    alreadyFreezing = false;\r\n                }\r\n            }\r\n        }\r\n        private bool alreadyFreezing = false;\r\n\r\n        /// <summary>\r\n        /// Handle a change to the BindingContext of our ListView.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleListViewBindingContextChanged(object sender, EventArgs e) {\r\n            RebindDataSource(false);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/Delegates.cs",
    "content": "﻿/*\r\n * Delegates - All delegate definitions used in ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 31-March-2011 5:53 pm\r\n *\r\n * Change log:\r\n * v2.10\r\n * 2015-12-30  JPP  - Added CellRendererGetterDelegate\r\n * v2.?\r\n * 2011-03-31  JPP  - Split into its own file\r\n * \r\n * Copyright (C) 2011-2015 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Windows.Forms;\r\nusing System.Drawing;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    #region Delegate declarations\r\n\r\n    /// <summary>\r\n    /// These delegates are used to extract an aspect from a row object\r\n    /// </summary>\r\n    public delegate Object AspectGetterDelegate(Object rowObject);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to put a changed value back into a model object\r\n    /// </summary>\r\n    public delegate void AspectPutterDelegate(Object rowObject, Object newValue);\r\n\r\n    /// <summary>\r\n    /// These delegates can be used to convert an aspect value to a display string,\r\n    /// instead of using the default ToString()\r\n    /// </summary>\r\n    public delegate string AspectToStringConverterDelegate(Object value);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to get the tooltip for a cell\r\n    /// </summary>\r\n    public delegate String CellToolTipGetterDelegate(OLVColumn column, Object modelObject);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to the state of the checkbox for a row object.\r\n    /// </summary>\r\n    /// <remarks><para>\r\n    /// For reasons known only to someone in Microsoft, we can only set\r\n    /// a boolean on the ListViewItem to indicate it's \"checked-ness\", but when\r\n    /// we receive update events, we have to use a tristate CheckState. So we can\r\n    /// be told about an indeterminate state, but we can't set it ourselves.\r\n    /// </para>\r\n    /// <para>As of version 2.0, we can now return indeterminate state.</para>\r\n    /// </remarks>\r\n    public delegate CheckState CheckStateGetterDelegate(Object rowObject);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to get the state of the checkbox for a row object.\r\n    /// </summary>\r\n    /// <param name=\"rowObject\"></param>\r\n    /// <returns></returns>\r\n    public delegate bool BooleanCheckStateGetterDelegate(Object rowObject);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to put a changed check state back into a model object\r\n    /// </summary>\r\n    public delegate CheckState CheckStatePutterDelegate(Object rowObject, CheckState newValue);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to put a changed check state back into a model object\r\n    /// </summary>\r\n    /// <param name=\"rowObject\"></param>\r\n    /// <param name=\"newValue\"></param>\r\n    /// <returns></returns>\r\n    public delegate bool BooleanCheckStatePutterDelegate(Object rowObject, bool newValue);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to get the renderer for a particular cell\r\n    /// </summary>\r\n    public delegate IRenderer CellRendererGetterDelegate(Object rowObject, OLVColumn column);\r\n\r\n    /// <summary>\r\n    /// The callbacks for RightColumnClick events\r\n    /// </summary>\r\n    public delegate void ColumnRightClickEventHandler(object sender, ColumnClickEventArgs e);\r\n\r\n    /// <summary>\r\n    /// This delegate will be used to own draw header column.\r\n    /// </summary>\r\n    public delegate bool HeaderDrawingDelegate(Graphics g, Rectangle r, int columnIndex, OLVColumn column, bool isPressed, HeaderStateStyle stateStyle);\r\n\r\n    /// <summary>\r\n    /// This delegate is called when a group has been created but not yet made\r\n    /// into a real ListViewGroup. The user can take this opportunity to fill\r\n    /// in lots of other details about the group.\r\n    /// </summary>\r\n    public delegate void GroupFormatterDelegate(OLVGroup group, GroupingParameters parms);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to retrieve the object that is the key of the group to which the given row belongs.\r\n    /// </summary>\r\n    public delegate Object GroupKeyGetterDelegate(Object rowObject);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to convert a group key into a title for the group\r\n    /// </summary>\r\n    public delegate string GroupKeyToTitleConverterDelegate(Object groupKey);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to get the tooltip for a column header\r\n    /// </summary>\r\n    public delegate String HeaderToolTipGetterDelegate(OLVColumn column);\r\n        \r\n    /// <summary>\r\n    /// These delegates are used to fetch the image selector that should be used\r\n    /// to choose an image for this column.\r\n    /// </summary>\r\n    public delegate Object ImageGetterDelegate(Object rowObject);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to draw a cell\r\n    /// </summary>\r\n    public delegate bool RenderDelegate(EventArgs e, Graphics g, Rectangle r, Object rowObject);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to fetch a row object for virtual lists\r\n    /// </summary>\r\n    public delegate Object RowGetterDelegate(int rowIndex);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to format a listviewitem before it is added to the control.\r\n    /// </summary>\r\n    public delegate void RowFormatterDelegate(OLVListItem olvItem);\r\n\r\n    /// <summary>\r\n    /// These delegates can be used to return the array of texts that should be searched for text filtering\r\n    /// </summary>\r\n    public delegate string[] SearchValueGetterDelegate(Object value);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to sort the listview in some custom fashion\r\n    /// </summary>\r\n    public delegate void SortDelegate(OLVColumn column, SortOrder sortOrder);\r\n\r\n    /// <summary>\r\n    /// These delegates are used to order two strings.\r\n    /// x cannot be null. y can be null.\r\n    /// </summary>\r\n    public delegate int StringCompareDelegate(string x, string y);\r\n\r\n    #endregion\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/DragSource.cs",
    "content": "/*\r\n * DragSource.cs - Add drag source functionality to an ObjectListView\r\n *\r\n * UNFINISHED\r\n * \r\n * Author: Phillip Piper\r\n * Date: 2009-03-17 5:15 PM\r\n *\r\n * Change log:\r\n * v2.3\r\n * 2009-07-06   JPP  - Make sure Link is acceptable as an drop effect by default\r\n *                     (since MS didn't make it part of the 'All' value)\r\n * v2.2\r\n * 2009-04-15   JPP  - Separated DragSource.cs into DropSink.cs\r\n * 2009-03-17   JPP  - Initial version\r\n * \r\n * Copyright (C) 2009 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip_piper@bigfoot.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Text;\r\nusing System.Windows.Forms;\r\nusing System.Drawing;\r\nusing System.Drawing.Drawing2D;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// An IDragSource controls how drag out from the ObjectListView will behave\r\n    /// </summary>\r\n    public interface IDragSource\r\n    {\r\n        /// <summary>\r\n        /// A drag operation is beginning. Return the data object that will be used \r\n        /// for data transfer. Return null to prevent the drag from starting.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// The returned object is later passed to the GetAllowedEffect() and EndDrag()\r\n        /// methods.\r\n        /// </remarks>\r\n        /// <param name=\"olv\">What ObjectListView is being dragged from.</param>\r\n        /// <param name=\"button\">Which mouse button is down?</param>\r\n        /// <param name=\"item\">What item was directly dragged by the user? There may be more than just this \r\n        /// item selected.</param>\r\n        /// <returns>The data object that will be used for data transfer. This will often be a subclass\r\n        /// of DataObject, but does not need to be.</returns>\r\n        Object StartDrag(ObjectListView olv, MouseButtons button, OLVListItem item);\r\n\r\n        /// <summary>\r\n        /// What operations are possible for this drag? This controls the icon shown during the drag\r\n        /// </summary>\r\n        /// <param name=\"dragObject\">The data object returned by StartDrag()</param>\r\n        /// <returns>A combination of DragDropEffects flags</returns>\r\n        DragDropEffects GetAllowedEffects(Object dragObject);\r\n\r\n        /// <summary>\r\n        /// The drag operation is complete. Do whatever is necessary to complete the action.\r\n        /// </summary>\r\n        /// <param name=\"dragObject\">The data object returned by StartDrag()</param>\r\n        /// <param name=\"effect\">The value returned from GetAllowedEffects()</param>\r\n        void EndDrag(Object dragObject, DragDropEffects effect);\r\n    }\r\n\r\n    /// <summary>\r\n    /// A do-nothing implementation of IDragSource that can be safely subclassed.\r\n    /// </summary>\r\n    public class AbstractDragSource : IDragSource\r\n    {\r\n        #region IDragSource Members\r\n\r\n        /// <summary>\r\n        /// See IDragSource documentation\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"button\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <returns></returns>\r\n        public virtual Object StartDrag(ObjectListView olv, MouseButtons button, OLVListItem item) {\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// See IDragSource documentation\r\n        /// </summary>\r\n        /// <param name=\"data\"></param>\r\n        /// <returns></returns>\r\n        public virtual DragDropEffects GetAllowedEffects(Object data) {\r\n            return DragDropEffects.None;\r\n        }\r\n\r\n        /// <summary>\r\n        /// See IDragSource documentation\r\n        /// </summary>\r\n        /// <param name=\"dragObject\"></param>\r\n        /// <param name=\"effect\"></param>\r\n        public virtual void EndDrag(Object dragObject, DragDropEffects effect) {\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// A reasonable implementation of IDragSource that provides normal\r\n    /// drag source functionality. It creates a data object that supports\r\n    /// inter-application dragging of text and HTML representation of \r\n    /// the dragged rows. It can optionally force a refresh of all dragged\r\n    /// rows when the drag is complete.\r\n    /// </summary>\r\n    /// <remarks>Subclasses can override GetDataObject() to add new\r\n    /// data formats to the data transfer object.</remarks>\r\n    public class SimpleDragSource : IDragSource\r\n    {\r\n        #region Constructors\r\n\r\n        /// <summary>\r\n        /// Construct a SimpleDragSource\r\n        /// </summary>\r\n        public SimpleDragSource() {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Construct a SimpleDragSource that refreshes the dragged rows when\r\n        /// the drag is complete\r\n        /// </summary>\r\n        /// <param name=\"refreshAfterDrop\"></param>\r\n        public SimpleDragSource(bool refreshAfterDrop) {\r\n            this.RefreshAfterDrop = refreshAfterDrop;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the dragged rows should be refreshed when the \r\n        /// drag operation is complete.\r\n        /// </summary>\r\n        public bool RefreshAfterDrop {\r\n            get { return refreshAfterDrop; }\r\n            set { refreshAfterDrop = value;  }\r\n        }\r\n        private bool refreshAfterDrop;\r\n\r\n        #endregion\r\n\r\n        #region IDragSource Members\r\n\r\n        /// <summary>\r\n        /// Create a DataObject when the user does a left mouse drag operation.\r\n        /// See IDragSource for further information.\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"button\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <returns></returns>\r\n        public virtual Object StartDrag(ObjectListView olv, MouseButtons button, OLVListItem item) {\r\n            // We only drag on left mouse\r\n            if (button != MouseButtons.Left)\r\n                return null;\r\n\r\n            return this.CreateDataObject(olv);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Which operations are allowed in the operation? By default, all operations are supported.\r\n        /// </summary>\r\n        /// <param name=\"data\"></param>\r\n        /// <returns>All opertions are supported</returns>\r\n        public virtual DragDropEffects GetAllowedEffects(Object data) {\r\n            return DragDropEffects.All | DragDropEffects.Link; // why didn't MS include 'Link' in 'All'??\r\n        }\r\n\r\n        /// <summary>\r\n        /// The drag operation is finished. Refreshe the dragged rows if so configured.\r\n        /// </summary>\r\n        /// <param name=\"dragObject\"></param>\r\n        /// <param name=\"effect\"></param>\r\n        public virtual void EndDrag(Object dragObject, DragDropEffects effect) {\r\n            OLVDataObject data = dragObject as OLVDataObject;\r\n            if (data == null)\r\n                return;\r\n\r\n            if (this.RefreshAfterDrop)\r\n                data.ListView.RefreshObjects(data.ModelObjects);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a data object that will be used to as the data object\r\n        /// for the drag operation.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Subclasses can override this method add new formats to the data object.\r\n        /// </remarks>\r\n        /// <param name=\"olv\">The ObjectListView that is the source of the drag</param>\r\n        /// <returns>A data object for the drag</returns>\r\n        protected virtual object CreateDataObject(ObjectListView olv) {\r\n            OLVDataObject data = new OLVDataObject(olv);\r\n            data.CreateTextFormats();\r\n            return data;\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// A data transfer object that knows how to transform a list of model\r\n    /// objects into a text and HTML representation.\r\n    /// </summary>\r\n    public class OLVDataObject : DataObject\r\n    {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create a data object from the selected objects in the given ObjectListView\r\n        /// </summary>\r\n        /// <param name=\"olv\">The source of the data object</param>\r\n        public OLVDataObject(ObjectListView olv) : this(olv, olv.SelectedObjects) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a data object which operates on the given model objects \r\n        /// in the given ObjectListView\r\n        /// </summary>\r\n        /// <param name=\"olv\">The source of the data object</param>\r\n        /// <param name=\"modelObjects\">The model objects to be put into the data object</param>\r\n        public OLVDataObject(ObjectListView olv, IList modelObjects) {\r\n            this.objectListView = olv;\r\n            this.modelObjects = modelObjects;\r\n            this.includeHiddenColumns = olv.IncludeHiddenColumnsInDataTransfer;\r\n            this.includeColumnHeaders = olv.IncludeColumnHeadersInCopy;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether hidden columns will also be included in the text\r\n        /// and HTML representation. If this is false, only visible columns will\r\n        /// be included.\r\n        /// </summary>\r\n        public bool IncludeHiddenColumns {\r\n            get { return includeHiddenColumns; }\r\n        }\r\n        private bool includeHiddenColumns;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether column headers will also be included in the text\r\n        /// and HTML representation.\r\n        /// </summary>\r\n        public bool IncludeColumnHeaders\r\n        {\r\n            get { return includeColumnHeaders; }\r\n        }\r\n        private bool includeColumnHeaders;\r\n\r\n        /// <summary>\r\n        /// Gets the ObjectListView that is being used as the source of the data\r\n        /// </summary>\r\n        public ObjectListView ListView {\r\n            get { return objectListView; }\r\n        }\r\n        private ObjectListView objectListView;\r\n\r\n        /// <summary>\r\n        /// Gets the model objects that are to be placed in the data object\r\n        /// </summary>\r\n        public IList ModelObjects {\r\n            get { return modelObjects; }\r\n        }\r\n        private IList modelObjects = new ArrayList();\r\n\r\n        #endregion\r\n\r\n        /// <summary>\r\n        /// Put a text and HTML representation of our model objects\r\n        /// into the data object.\r\n        /// </summary>\r\n        public void CreateTextFormats() {\r\n            IList<OLVColumn> columns = this.IncludeHiddenColumns ? this.ListView.AllColumns : this.ListView.ColumnsInDisplayOrder;\r\n\r\n            // Build text and html versions of the selection\r\n            StringBuilder sbText = new StringBuilder();\r\n            StringBuilder sbHtml = new StringBuilder(\"<table>\");\r\n\r\n            // Include column headers\r\n            if (includeColumnHeaders)\r\n            {\r\n                sbHtml.Append(\"<tr><td>\");\r\n                foreach (OLVColumn col in columns)\r\n                {\r\n                    if (col != columns[0])\r\n                    {\r\n                        sbText.Append(\"\\t\");\r\n                        sbHtml.Append(\"</td><td>\");\r\n                    }\r\n                    string strValue = col.Text;\r\n                    sbText.Append(strValue);\r\n                    sbHtml.Append(strValue); //TODO: Should encode the string value\r\n                }\r\n                sbText.AppendLine();\r\n                sbHtml.AppendLine(\"</td></tr>\");\r\n            }\r\n\r\n            foreach (object modelObject in this.ModelObjects)\r\n            {\r\n                sbHtml.Append(\"<tr><td>\");\r\n                foreach (OLVColumn col in columns) {\r\n                    if (col != columns[0]) {\r\n                        sbText.Append(\"\\t\");\r\n                        sbHtml.Append(\"</td><td>\");\r\n                    }\r\n                    string strValue = col.GetStringValue(modelObject);\r\n                    sbText.Append(strValue);\r\n                    sbHtml.Append(strValue); //TODO: Should encode the string value\r\n                }\r\n                sbText.AppendLine();\r\n                sbHtml.AppendLine(\"</td></tr>\");\r\n            }\r\n            sbHtml.AppendLine(\"</table>\");\r\n\r\n            // Put both the text and html versions onto the clipboard.\r\n            // For some reason, SetText() with UnicodeText doesn't set the basic CF_TEXT format,\r\n            // but using SetData() does.\r\n            //this.SetText(sbText.ToString(), TextDataFormat.UnicodeText);\r\n            this.SetData(sbText.ToString());\r\n            this.SetText(ConvertToHtmlFragment(sbHtml.ToString()), TextDataFormat.Html);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a HTML representation of our model objects\r\n        /// </summary>\r\n        public string CreateHtml() {\r\n            IList<OLVColumn> columns = this.ListView.ColumnsInDisplayOrder;\r\n\r\n            // Build html version of the selection\r\n            StringBuilder sbHtml = new StringBuilder(\"<table>\");\r\n\r\n            foreach (object modelObject in this.ModelObjects) {\r\n                sbHtml.Append(\"<tr><td>\");\r\n                foreach (OLVColumn col in columns) {\r\n                    if (col != columns[0]) {\r\n                        sbHtml.Append(\"</td><td>\");\r\n                    }\r\n                    string strValue = col.GetStringValue(modelObject);\r\n                    sbHtml.Append(strValue); //TODO: Should encode the string value\r\n                }\r\n                sbHtml.AppendLine(\"</td></tr>\");\r\n            }\r\n            sbHtml.AppendLine(\"</table>\");\r\n\r\n            return sbHtml.ToString();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Convert the fragment of HTML into the Clipboards HTML format.\r\n        /// </summary>\r\n        /// <remarks>The HTML format is found here http://msdn2.microsoft.com/en-us/library/aa767917.aspx\r\n        /// </remarks>\r\n        /// <param name=\"fragment\">The HTML to put onto the clipboard. It must be valid HTML!</param>\r\n        /// <returns>A string that can be put onto the clipboard and will be recognized as HTML</returns>\r\n        private string ConvertToHtmlFragment(string fragment) {\r\n            // Minimal implementation of HTML clipboard format\r\n            string source = \"http://www.codeproject.com/KB/list/ObjectListView.aspx\";\r\n\r\n            const String MARKER_BLOCK =\r\n                \"Version:1.0\\r\\n\" +\r\n                \"StartHTML:{0,8}\\r\\n\" +\r\n                \"EndHTML:{1,8}\\r\\n\" +\r\n                \"StartFragment:{2,8}\\r\\n\" +\r\n                \"EndFragment:{3,8}\\r\\n\" +\r\n                \"StartSelection:{2,8}\\r\\n\" +\r\n                \"EndSelection:{3,8}\\r\\n\" +\r\n                \"SourceURL:{4}\\r\\n\" +\r\n                \"{5}\";\r\n\r\n            int prefixLength = String.Format(MARKER_BLOCK, 0, 0, 0, 0, source, \"\").Length;\r\n\r\n            const String DEFAULT_HTML_BODY =\r\n                \"<!DOCTYPE HTML PUBLIC \\\"-//W3C//DTD HTML 4.0 Transitional//EN\\\">\" +\r\n                \"<HTML><HEAD></HEAD><BODY><!--StartFragment-->{0}<!--EndFragment--></BODY></HTML>\";\r\n\r\n            string html = String.Format(DEFAULT_HTML_BODY, fragment);\r\n            int startFragment = prefixLength + html.IndexOf(fragment);\r\n            int endFragment = startFragment + fragment.Length;\r\n\r\n            return String.Format(MARKER_BLOCK, prefixLength, prefixLength + html.Length, startFragment, endFragment, source, html);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/DropSink.cs",
    "content": "/*\r\n * DropSink.cs - Add drop sink ability to an ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 2009-03-17 5:15 PM\r\n *\r\n * Change log:\r\n * 2010-08-24   JPP  - Moved AcceptExternal property up to SimpleDragSource.\r\n * v2.3\r\n * 2009-09-01   JPP  - Correctly handle case where RefreshObjects() is called for\r\n *                     objects that were children but are now roots.\r\n * 2009-08-27   JPP  - Added ModelDropEventArgs.RefreshObjects() to simplify updating after\r\n *                     a drag-drop operation\r\n * 2009-08-19   JPP  - Changed to use OlvHitTest()\r\n * v2.2.1\r\n * 2007-07-06   JPP  - Added StandardDropActionFromKeys property to OlvDropEventArgs\r\n * v2.2\r\n * 2009-05-17   JPP  - Added a Handled flag to OlvDropEventArgs\r\n *                   - Tweaked the appearance of the drop-on-background feedback\r\n * 2009-04-15   JPP  - Separated DragDrop.cs into DropSink.cs\r\n * 2009-03-17   JPP  - Initial version\r\n * \r\n * Copyright (C) 2009-2010 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip_piper@bigfoot.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Drawing;\r\nusing System.Drawing.Drawing2D;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// Objects that implement this interface can acts as the receiver for drop\r\n    /// operation for an ObjectListView.\r\n    /// </summary>\r\n    public interface IDropSink\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the ObjectListView that is the drop sink\r\n        /// </summary>\r\n        ObjectListView ListView { get; set; }\r\n\r\n        /// <summary>\r\n        /// Draw any feedback that is appropriate to the current drop state.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Any drawing is done over the top of the ListView. This operation should disturb\r\n        /// the Graphic as little as possible. Specifically, do not erase the area into which\r\n        /// you draw. \r\n        /// </remarks>\r\n        /// <param name=\"g\">A Graphic for drawing</param>\r\n        /// <param name=\"bounds\">The contents bounds of the ListView (not including any header)</param>\r\n        void DrawFeedback(Graphics g, Rectangle bounds);\r\n\r\n        /// <summary>\r\n        /// The user has released the drop over this control\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Implementators should set args.Effect to the appropriate DragDropEffects. This value is returned\r\n        /// to the originator of the drag.\r\n        /// </remarks>\r\n        /// <param name=\"args\"></param>\r\n        void Drop(DragEventArgs args);\r\n\r\n        /// <summary>\r\n        /// A drag has entered this control.\r\n        /// </summary>\r\n        /// <remarks>Implementators should set args.Effect to the appropriate DragDropEffects.</remarks>\r\n        /// <param name=\"args\"></param>\r\n        void Enter(DragEventArgs args);\r\n\r\n        /// <summary>\r\n        /// Change the cursor to reflect the current drag operation.\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        void GiveFeedback(GiveFeedbackEventArgs args);\r\n\r\n        /// <summary>\r\n        /// The drag has left the bounds of this control\r\n        /// </summary>\r\n        void Leave();\r\n\r\n        /// <summary>\r\n        /// The drag is moving over this control.\r\n        /// </summary>\r\n        /// <remarks>This is where any drop target should be calculated.\r\n        /// Implementators should set args.Effect to the appropriate DragDropEffects.\r\n        /// </remarks>\r\n        /// <param name=\"args\"></param>\r\n        void Over(DragEventArgs args);\r\n\r\n        /// <summary>\r\n        /// Should the drag be allowed to continue?\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        void QueryContinue(QueryContinueDragEventArgs args);\r\n    }\r\n\r\n    /// <summary>\r\n    /// This is a do-nothing implementation of IDropSink that is a useful\r\n    /// base class for more sophisticated implementations.\r\n    /// </summary>\r\n    public class AbstractDropSink : IDropSink\r\n    {\r\n        #region IDropSink Members\r\n\r\n        /// <summary>\r\n        /// Gets or sets the ObjectListView that is the drop sink\r\n        /// </summary>\r\n        public virtual ObjectListView ListView {\r\n            get { return listView; }\r\n            set { this.listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Draw any feedback that is appropriate to the current drop state.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Any drawing is done over the top of the ListView. This operation should disturb\r\n        /// the Graphic as little as possible. Specifically, do not erase the area into which\r\n        /// you draw. \r\n        /// </remarks>\r\n        /// <param name=\"g\">A Graphic for drawing</param>\r\n        /// <param name=\"bounds\">The contents bounds of the ListView (not including any header)</param>\r\n        public virtual void DrawFeedback(Graphics g, Rectangle bounds) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// The user has released the drop over this control\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Implementators should set args.Effect to the appropriate DragDropEffects. This value is returned\r\n        /// to the originator of the drag.\r\n        /// </remarks>\r\n        /// <param name=\"args\"></param>\r\n        public virtual void Drop(DragEventArgs args) {\r\n            this.Cleanup();\r\n        }\r\n\r\n        /// <summary>\r\n        /// A drag has entered this control.\r\n        /// </summary>\r\n        /// <remarks>Implementators should set args.Effect to the appropriate DragDropEffects.</remarks>\r\n        /// <param name=\"args\"></param>\r\n        public virtual void Enter(DragEventArgs args) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// The drag has left the bounds of this control\r\n        /// </summary>\r\n        public virtual void Leave() {\r\n            this.Cleanup();\r\n        }\r\n\r\n        /// <summary>\r\n        /// The drag is moving over this control.\r\n        /// </summary>\r\n        /// <remarks>This is where any drop target should be calculated.\r\n        /// Implementators should set args.Effect to the appropriate DragDropEffects.\r\n        /// </remarks>\r\n        /// <param name=\"args\"></param>\r\n        public virtual void Over(DragEventArgs args) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the cursor to reflect the current drag operation.\r\n        /// </summary>\r\n        /// <remarks>You only need to override this if you want non-standard cursors.\r\n        /// The standard cursors are supplied automatically.</remarks>\r\n        /// <param name=\"args\"></param>\r\n        public virtual void GiveFeedback(GiveFeedbackEventArgs args) {\r\n            args.UseDefaultCursors = true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should the drag be allowed to continue?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// You only need to override this if you want the user to be able\r\n        /// to end the drop in some non-standard way, e.g. dragging to a\r\n        /// certain point even without releasing the mouse, or going outside\r\n        /// the bounds of the application. \r\n        /// </remarks>\r\n        /// <param name=\"args\"></param>\r\n        public virtual void QueryContinue(QueryContinueDragEventArgs args) {\r\n        }\r\n\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// This is called when the mouse leaves the drop region and after the\r\n        /// drop has completed.\r\n        /// </summary>\r\n        protected virtual void Cleanup() {\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// The enum indicates which target has been found for a drop operation\r\n    /// </summary>\r\n    [Flags]\r\n    public enum DropTargetLocation\r\n    {\r\n        /// <summary>\r\n        /// No applicable target has been found\r\n        /// </summary>\r\n        None = 0,\r\n\r\n        /// <summary>\r\n        /// The list itself is the target of the drop\r\n        /// </summary>\r\n        Background = 0x01,\r\n\r\n        /// <summary>\r\n        /// An item is the target\r\n        /// </summary>\r\n        Item = 0x02,\r\n\r\n        /// <summary>\r\n        /// Between two items (or above the top item or below the bottom item)\r\n        /// can be the target. This is not actually ever a target, only a value indicate\r\n        /// that it is valid to drop between items\r\n        /// </summary>\r\n        BetweenItems = 0x04,\r\n\r\n        /// <summary>\r\n        /// Above an item is the target\r\n        /// </summary>\r\n        AboveItem = 0x08,\r\n\r\n        /// <summary>\r\n        /// Below an item is the target\r\n        /// </summary>\r\n        BelowItem = 0x10,\r\n\r\n        /// <summary>\r\n        /// A subitem is the target of the drop\r\n        /// </summary>\r\n        SubItem = 0x20,\r\n\r\n        /// <summary>\r\n        /// On the right of an item is the target (not currently used)\r\n        /// </summary>\r\n        RightOfItem = 0x40,\r\n\r\n        /// <summary>\r\n        /// On the left of an item is the target (not currently used)\r\n        /// </summary>\r\n        LeftOfItem = 0x80\r\n    }\r\n\r\n    /// <summary>\r\n    /// This class represents a simple implementation of a drop sink.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// Actually, it's far from simple and can do quite a lot in its own right.\r\n    /// </remarks>\r\n    public class SimpleDropSink : AbstractDropSink\r\n    {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Make a new drop sink\r\n        /// </summary>\r\n        public SimpleDropSink() {\r\n            this.timer = new Timer();\r\n            this.timer.Interval = 250;\r\n            this.timer.Tick += new EventHandler(this.timer_Tick);\r\n\r\n            this.CanDropOnItem = true;\r\n            //this.CanDropOnSubItem = true;\r\n            //this.CanDropOnBackground = true;\r\n            //this.CanDropBetween = true;\r\n\r\n            this.FeedbackColor = Color.FromArgb(180, Color.MediumBlue);\r\n            this.billboard = new BillboardOverlay();\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Get or set the locations where a drop is allowed to occur (OR-ed together)\r\n        /// </summary>\r\n        public DropTargetLocation AcceptableLocations {\r\n            get { return this.acceptableLocations; }\r\n            set { this.acceptableLocations = value; }\r\n        }\r\n        private DropTargetLocation acceptableLocations;\r\n        \r\n        /// <summary>\r\n        /// Gets or sets whether this sink allows model objects to be dragged from other lists\r\n        /// </summary>\r\n        public bool AcceptExternal {\r\n            get { return this.acceptExternal; }\r\n            set { this.acceptExternal = value; }\r\n        }\r\n        private bool acceptExternal = true;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the ObjectListView should scroll when the user drags\r\n        /// something near to the top or bottom rows.\r\n        /// </summary>\r\n        public bool AutoScroll {\r\n            get { return this.autoScroll; }\r\n            set { this.autoScroll = value; }\r\n        }\r\n        private bool autoScroll = true;\r\n\r\n        /// <summary>\r\n        /// Gets the billboard overlay that will be used to display feedback\r\n        /// messages during a drag operation. \r\n        /// </summary>\r\n        /// <remarks>Set this to null to stop the feedback.</remarks>\r\n        public BillboardOverlay Billboard {\r\n            get { return this.billboard; }\r\n            set { this.billboard = value; }\r\n        }\r\n        private BillboardOverlay billboard;\r\n\r\n        /// <summary>\r\n        /// Get or set whether a drop can occur between items of the list\r\n        /// </summary>\r\n        public bool CanDropBetween {\r\n            get { return (this.AcceptableLocations & DropTargetLocation.BetweenItems) == DropTargetLocation.BetweenItems; }\r\n            set {\r\n                if (value)\r\n                    this.AcceptableLocations |= DropTargetLocation.BetweenItems;\r\n                else \r\n                    this.AcceptableLocations &= ~DropTargetLocation.BetweenItems;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set whether a drop can occur on the listview itself\r\n        /// </summary>\r\n        public bool CanDropOnBackground {\r\n            get { return (this.AcceptableLocations & DropTargetLocation.Background) == DropTargetLocation.Background; }\r\n            set {\r\n                if (value)\r\n                    this.AcceptableLocations |= DropTargetLocation.Background;\r\n                else\r\n                    this.AcceptableLocations &= ~DropTargetLocation.Background;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set whether a drop can occur on items in the list\r\n        /// </summary>\r\n        public bool CanDropOnItem {\r\n            get { return (this.AcceptableLocations & DropTargetLocation.Item) == DropTargetLocation.Item; }\r\n            set {\r\n                if (value)\r\n                    this.AcceptableLocations |= DropTargetLocation.Item;\r\n                else\r\n                    this.AcceptableLocations &= ~DropTargetLocation.Item;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set whether a drop can occur on a subitem in the list\r\n        /// </summary>\r\n        public bool CanDropOnSubItem {\r\n            get { return (this.AcceptableLocations & DropTargetLocation.SubItem) == DropTargetLocation.SubItem; }\r\n            set {\r\n                if (value)\r\n                    this.AcceptableLocations |= DropTargetLocation.SubItem;\r\n                else\r\n                    this.AcceptableLocations &= ~DropTargetLocation.SubItem;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the index of the item that is the target of the drop\r\n        /// </summary>\r\n        public int DropTargetIndex {\r\n            get { return dropTargetIndex; }\r\n            set {\r\n                if (this.dropTargetIndex != value) {\r\n                    this.dropTargetIndex = value;\r\n                    this.ListView.Invalidate();\r\n                }\r\n            }\r\n        }\r\n        private int dropTargetIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Get the item that is the target of the drop\r\n        /// </summary>\r\n        public OLVListItem DropTargetItem {\r\n            get {\r\n                return this.ListView.GetItem(this.DropTargetIndex);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the location of the target of the drop\r\n        /// </summary>\r\n        public DropTargetLocation DropTargetLocation {\r\n            get { return dropTargetLocation; }\r\n            set {\r\n                if (this.dropTargetLocation != value) {\r\n                    this.dropTargetLocation = value;\r\n                    this.ListView.Invalidate();\r\n                }\r\n            }\r\n        }\r\n        private DropTargetLocation dropTargetLocation;\r\n\r\n        /// <summary>\r\n        /// Get or set the index of the subitem that is the target of the drop\r\n        /// </summary>\r\n        public int DropTargetSubItemIndex {\r\n            get { return dropTargetSubItemIndex; }\r\n            set {\r\n                if (this.dropTargetSubItemIndex != value) {\r\n                    this.dropTargetSubItemIndex = value;\r\n                    this.ListView.Invalidate();\r\n                }\r\n            }\r\n        }\r\n        private int dropTargetSubItemIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Get or set the color that will be used to provide drop feedback\r\n        /// </summary>\r\n        public Color FeedbackColor {\r\n            get { return this.feedbackColor; }\r\n            set { this.feedbackColor = value; }\r\n        }\r\n        private Color feedbackColor;\r\n\r\n        /// <summary>\r\n        /// Get whether the alt key was down during this drop event\r\n        /// </summary>\r\n        public bool IsAltDown {\r\n            get { return (this.KeyState & 32) == 32; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether any modifier key was down during this drop event\r\n        /// </summary>\r\n        public bool IsAnyModifierDown {\r\n            get { return (this.KeyState & (4 + 8 + 32)) != 0; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether the control key was down during this drop event\r\n        /// </summary>\r\n        public bool IsControlDown {\r\n            get { return (this.KeyState & 8) == 8; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether the left mouse button was down during this drop event\r\n        /// </summary>\r\n        public bool IsLeftMouseButtonDown {\r\n            get { return (this.KeyState & 1) == 1; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether the right mouse button was down during this drop event\r\n        /// </summary>\r\n        public bool IsMiddleMouseButtonDown {\r\n            get { return (this.KeyState & 16) == 16; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether the right mouse button was down during this drop event\r\n        /// </summary>\r\n        public bool IsRightMouseButtonDown {\r\n            get { return (this.KeyState & 2) == 2; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether the shift key was down during this drop event\r\n        /// </summary>\r\n        public bool IsShiftDown {\r\n            get { return (this.KeyState & 4) == 4; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the state of the keys during this drop event\r\n        /// </summary>\r\n        public int KeyState {\r\n            get { return this.keyState; }\r\n            set { this.keyState = value; }\r\n        }\r\n        private int keyState;\r\n\r\n        #endregion\r\n\r\n        #region Events\r\n\r\n        /// <summary>\r\n        /// Triggered when the sink needs to know if a drop can occur.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Handlers should set Effect to indicate what is possible.\r\n        /// Handlers can change any of the DropTarget* setttings to change\r\n        /// the target of the drop.\r\n        /// </remarks>\r\n        public event EventHandler<OlvDropEventArgs> CanDrop;\r\n\r\n        /// <summary>\r\n        /// Triggered when the drop is made.\r\n        /// </summary>\r\n        public event EventHandler<OlvDropEventArgs> Dropped;\r\n\r\n        /// <summary>\r\n        /// Triggered when the sink needs to know if a drop can occur\r\n        /// AND the source is an ObjectListView\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Handlers should set Effect to indicate what is possible.\r\n        /// Handlers can change any of the DropTarget* setttings to change\r\n        /// the target of the drop.\r\n        /// </remarks>\r\n        public event EventHandler<ModelDropEventArgs> ModelCanDrop;\r\n\r\n        /// <summary>\r\n        /// Triggered when the drop is made.\r\n        /// AND the source is an ObjectListView\r\n        /// </summary>\r\n        public event EventHandler<ModelDropEventArgs> ModelDropped;\r\n\r\n        #endregion\r\n\r\n        #region DropSink Interface\r\n\r\n        /// <summary>\r\n        /// Cleanup the drop sink when the mouse has left the control or \r\n        /// the drag has finished.\r\n        /// </summary>\r\n        protected override void Cleanup() {\r\n            this.DropTargetLocation = DropTargetLocation.None;\r\n            this.ListView.FullRowSelect = this.originalFullRowSelect;\r\n            this.Billboard.Text = null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw any feedback that is appropriate to the current drop state.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Any drawing is done over the top of the ListView. This operation should disturb\r\n        /// the Graphic as little as possible. Specifically, do not erase the area into which\r\n        /// you draw. \r\n        /// </remarks>\r\n        /// <param name=\"g\">A Graphic for drawing</param>\r\n        /// <param name=\"bounds\">The contents bounds of the ListView (not including any header)</param>\r\n        public override void DrawFeedback(Graphics g, Rectangle bounds) {\r\n            g.SmoothingMode = ObjectListView.SmoothingMode;\r\n\r\n            switch (this.DropTargetLocation) {\r\n                case DropTargetLocation.Background:\r\n                    this.DrawFeedbackBackgroundTarget(g, bounds);\r\n                    break;\r\n                case DropTargetLocation.Item:\r\n                    this.DrawFeedbackItemTarget(g, bounds);\r\n                    break;\r\n                case DropTargetLocation.AboveItem:\r\n                    this.DrawFeedbackAboveItemTarget(g, bounds);\r\n                    break;\r\n                case DropTargetLocation.BelowItem:\r\n                    this.DrawFeedbackBelowItemTarget(g, bounds);\r\n                    break;\r\n            }\r\n\r\n            if (this.Billboard != null) {\r\n                this.Billboard.Draw(this.ListView, g, bounds);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// The user has released the drop over this control\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        public override void Drop(DragEventArgs args) {\r\n            this.TriggerDroppedEvent(args);\r\n            this.timer.Stop();\r\n            this.Cleanup();\r\n        }\r\n\r\n        /// <summary>\r\n        /// A drag has entered this control.\r\n        /// </summary>\r\n        /// <remarks>Implementators should set args.Effect to the appropriate DragDropEffects.</remarks>\r\n        /// <param name=\"args\"></param>\r\n        public override void Enter(DragEventArgs args) {\r\n            //System.Diagnostics.Debug.WriteLine(\"Enter\");\r\n\r\n            /* \r\n             * When FullRowSelect is true, we have two problems:\r\n             * 1) GetItemRect(ItemOnly) returns the whole row rather than just the icon/text, which messes\r\n             *    up our calculation of the drop rectangle.\r\n             * 2) during the drag, the Timer events will not fire! This is the major problem, since without\r\n             *    those events we can't autoscroll. \r\n             * \r\n             * The first problem we can solve through coding, but the second is more difficult. \r\n             * We avoid both problems by turning off FullRowSelect during the drop operation.\r\n             */    \r\n            this.originalFullRowSelect = this.ListView.FullRowSelect;\r\n            this.ListView.FullRowSelect = false;\r\n\r\n            // Setup our drop event args block\r\n            this.dropEventArgs = new ModelDropEventArgs();\r\n            this.dropEventArgs.DropSink = this;\r\n            this.dropEventArgs.ListView = this.ListView;\r\n            this.dropEventArgs.DataObject = args.Data;\r\n            OLVDataObject olvData = args.Data as OLVDataObject;\r\n            if (olvData != null) {\r\n                this.dropEventArgs.SourceListView = olvData.ListView;\r\n                this.dropEventArgs.SourceModels = olvData.ModelObjects;\r\n            }\r\n\r\n            this.Over(args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// The drag is moving over this control.\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        public override void Over(DragEventArgs args) {\r\n            //System.Diagnostics.Debug.WriteLine(\"Over\");\r\n            this.KeyState = args.KeyState;\r\n            Point pt = this.ListView.PointToClient(new Point(args.X, args.Y));\r\n            args.Effect = this.CalculateDropAction(args, pt);\r\n            this.CheckScrolling(pt);\r\n        }\r\n\r\n        #endregion\r\n        \r\n        #region Events\r\n\r\n        /// <summary>\r\n        /// Trigger the Dropped events\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void TriggerDroppedEvent(DragEventArgs args) {\r\n            this.dropEventArgs.Handled = false;\r\n\r\n            // If the source is an ObjectListView, trigger the ModelDropped event\r\n            if (this.dropEventArgs.SourceListView != null) \r\n                this.OnModelDropped(this.dropEventArgs);\r\n\r\n            if (!this.dropEventArgs.Handled)\r\n                this.OnDropped(this.dropEventArgs);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger CanDrop\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnCanDrop(OlvDropEventArgs args) {\r\n            if (this.CanDrop != null)\r\n                this.CanDrop(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger Dropped\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnDropped(OlvDropEventArgs args) {\r\n            if (this.Dropped != null)\r\n                this.Dropped(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger ModelCanDrop\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnModelCanDrop(ModelDropEventArgs args) {\r\n\r\n            // Don't allow drops from other list, if that's what's configured\r\n            if (!this.AcceptExternal && args.SourceListView != null && args.SourceListView != this.ListView) {\r\n                args.Effect = DragDropEffects.None;\r\n                args.DropTargetLocation = DropTargetLocation.None;\r\n                args.InfoMessage = \"This list doesn't accept drops from other lists\";\r\n                return;\r\n            }\r\n\r\n            if (this.ModelCanDrop != null)\r\n                this.ModelCanDrop(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger ModelDropped\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnModelDropped(ModelDropEventArgs args) {\r\n            if (this.ModelDropped != null)\r\n                this.ModelDropped(this, args);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        private void timer_Tick(object sender, EventArgs e) {\r\n            this.HandleTimerTick();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the timer tick event, which is sent when the listview should\r\n        /// scroll\r\n        /// </summary>\r\n        protected virtual void HandleTimerTick() {\r\n\r\n            // If the mouse has been released, stop scrolling.\r\n            // This is only necessary if the mouse is released outside of the control. \r\n            // If the mouse is released inside the control, we would receive a Drop event.\r\n            if ((this.IsLeftMouseButtonDown && (Control.MouseButtons & MouseButtons.Left) != MouseButtons.Left) ||\r\n                (this.IsMiddleMouseButtonDown && (Control.MouseButtons & MouseButtons.Middle) != MouseButtons.Middle) ||\r\n                (this.IsRightMouseButtonDown && (Control.MouseButtons & MouseButtons.Right) != MouseButtons.Right)) {\r\n                this.timer.Stop();\r\n                this.Cleanup();\r\n                return;\r\n            }\r\n\r\n            // Auto scrolling will continune while the mouse is close to the ListView\r\n            const int GRACE_PERIMETER = 30;\r\n\r\n            Point pt = this.ListView.PointToClient(Cursor.Position);\r\n            Rectangle r2 = this.ListView.ClientRectangle;\r\n            r2.Inflate(GRACE_PERIMETER, GRACE_PERIMETER);\r\n            if (r2.Contains(pt)) {\r\n                this.ListView.LowLevelScroll(0, this.scrollAmount);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// When the mouse is at the given point, what should the target of the drop be?\r\n        /// </summary>\r\n        /// <remarks>This method should update the DropTarget* members of the given arg block</remarks>\r\n        /// <param name=\"args\"></param>\r\n        /// <param name=\"pt\">The mouse point, in client co-ordinates</param>\r\n        protected virtual void CalculateDropTarget(OlvDropEventArgs args, Point pt) {\r\n            const int SMALL_VALUE = 3;\r\n            DropTargetLocation location = DropTargetLocation.None;\r\n            int targetIndex = -1;\r\n            int targetSubIndex = 0;\r\n\r\n            if (this.CanDropOnBackground)\r\n                location = DropTargetLocation.Background;\r\n\r\n            // Which item is the mouse over?\r\n            // If it is not over any item, it's over the background.\r\n            //ListViewHitTestInfo info = this.ListView.HitTest(pt.X, pt.Y);\r\n            OlvListViewHitTestInfo info = this.ListView.OlvHitTest(pt.X, pt.Y);\r\n            if (info.Item != null && this.CanDropOnItem) {\r\n                location = DropTargetLocation.Item;\r\n                targetIndex = info.Item.Index;\r\n                if (info.SubItem != null && this.CanDropOnSubItem)\r\n                    targetSubIndex = info.Item.SubItems.IndexOf(info.SubItem);\r\n            }\r\n\r\n            // Check to see if the mouse is \"between\" rows.\r\n            // (\"between\" is somewhat loosely defined)\r\n            if (this.CanDropBetween && this.ListView.GetItemCount() > 0) {\r\n\r\n                // If the mouse is over an item, check to see if it is near the top or bottom\r\n                if (location == DropTargetLocation.Item) {\r\n                    if (pt.Y - SMALL_VALUE <= info.Item.Bounds.Top)\r\n                        location = DropTargetLocation.AboveItem;\r\n                    if (pt.Y + SMALL_VALUE >= info.Item.Bounds.Bottom)\r\n                        location = DropTargetLocation.BelowItem;\r\n                } else {\r\n                    // Is there an item a little below the mouse?\r\n                    // If so, we say the drop point is above that row\r\n                    info = this.ListView.OlvHitTest(pt.X, pt.Y + SMALL_VALUE);\r\n                    if (info.Item != null) {\r\n                        targetIndex = info.Item.Index;\r\n                        location = DropTargetLocation.AboveItem;\r\n                    } else {\r\n                        // Is there an item a little above the mouse?\r\n                        info = this.ListView.OlvHitTest(pt.X, pt.Y - SMALL_VALUE);\r\n                        if (info.Item != null) {\r\n                            targetIndex = info.Item.Index;\r\n                            location = DropTargetLocation.BelowItem;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            args.DropTargetLocation = location;\r\n            args.DropTargetIndex = targetIndex;\r\n            args.DropTargetSubItemIndex = targetSubIndex;\r\n        }\r\n\r\n        /// <summary>\r\n        /// What sort of action is possible when the mouse is at the given point?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// </remarks>\r\n        /// <param name=\"args\"></param>\r\n        /// <param name=\"pt\"></param>\r\n        /// <returns></returns>\r\n        public virtual DragDropEffects CalculateDropAction(DragEventArgs args, Point pt) {\r\n            this.CalculateDropTarget(this.dropEventArgs, pt);\r\n\r\n            this.dropEventArgs.MouseLocation = pt;\r\n            this.dropEventArgs.InfoMessage = null;\r\n            this.dropEventArgs.Handled = false;\r\n\r\n            if (this.dropEventArgs.SourceListView != null) {\r\n                this.dropEventArgs.TargetModel = this.ListView.GetModelObject(this.dropEventArgs.DropTargetIndex);\r\n                this.OnModelCanDrop(this.dropEventArgs);\r\n            }\r\n\r\n            if (!this.dropEventArgs.Handled)\r\n                this.OnCanDrop(this.dropEventArgs);\r\n\r\n            this.UpdateAfterCanDropEvent(this.dropEventArgs);\r\n\r\n            return this.dropEventArgs.Effect;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Based solely on the state of the modifier keys, what drop operation should\r\n        /// be used?\r\n        /// </summary>\r\n        /// <returns>The drop operation that matches the state of the keys</returns>\r\n        public DragDropEffects CalculateStandardDropActionFromKeys() {\r\n            if (this.IsControlDown) {\r\n                if (this.IsShiftDown)\r\n                    return DragDropEffects.Link;\r\n                else\r\n                    return DragDropEffects.Copy;\r\n            } else {\r\n                return DragDropEffects.Move;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should the listview be made to scroll when the mouse is at the given point?\r\n        /// </summary>\r\n        /// <param name=\"pt\"></param>\r\n        protected virtual void CheckScrolling(Point pt) {\r\n            if (!this.AutoScroll)\r\n                return;\r\n\r\n            Rectangle r = this.ListView.ContentRectangle;\r\n            int rowHeight = this.ListView.RowHeightEffective;\r\n            int close = rowHeight;\r\n\r\n            // In Tile view, using the whole row height is too much\r\n            if (this.ListView.View == View.Tile)\r\n                close /= 2;\r\n\r\n            if (pt.Y <= (r.Top + close)) {\r\n                // Scroll faster if the mouse is closer to the top\r\n                this.timer.Interval = ((pt.Y <= (r.Top + close / 2)) ? 100 : 350);\r\n                this.timer.Start();\r\n                this.scrollAmount = -rowHeight;\r\n            } else {\r\n                if (pt.Y >= (r.Bottom - close)) {\r\n                    this.timer.Interval = ((pt.Y >= (r.Bottom - close / 2)) ? 100 : 350);\r\n                    this.timer.Start();\r\n                    this.scrollAmount = rowHeight;\r\n                } else {\r\n                    this.timer.Stop();\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the state of our sink to reflect the information that \r\n        /// may have been written into the drop event args.\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void UpdateAfterCanDropEvent(OlvDropEventArgs args) {\r\n            this.DropTargetIndex = args.DropTargetIndex;\r\n            this.DropTargetLocation = args.DropTargetLocation;\r\n            this.DropTargetSubItemIndex = args.DropTargetSubItemIndex;\r\n\r\n            if (this.Billboard != null) {\r\n                Point pt = args.MouseLocation;\r\n                pt.Offset(5, 5);\r\n                if (this.Billboard.Text != this.dropEventArgs.InfoMessage || this.Billboard.Location != pt) {\r\n                    this.Billboard.Text = this.dropEventArgs.InfoMessage;\r\n                    this.Billboard.Location = pt;\r\n                    this.ListView.Invalidate();\r\n                }\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Rendering\r\n\r\n        /// <summary>\r\n        /// Draw the feedback that shows that the background is the target\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"bounds\"></param>\r\n        protected virtual void DrawFeedbackBackgroundTarget(Graphics g, Rectangle bounds) {\r\n            float penWidth = 12.0f;\r\n            Rectangle r = bounds;\r\n            r.Inflate((int)-penWidth / 2, (int)-penWidth / 2);\r\n            using (Pen p = new Pen(Color.FromArgb(128, this.FeedbackColor), penWidth)) {\r\n                using (GraphicsPath path = this.GetRoundedRect(r, 30.0f)) {\r\n                    g.DrawPath(p, path);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the feedback that shows that an item (or a subitem) is the target\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"bounds\"></param>\r\n        /// <remarks>\r\n        /// DropTargetItem and DropTargetSubItemIndex tells what is the target\r\n        /// </remarks>\r\n        protected virtual void DrawFeedbackItemTarget(Graphics g, Rectangle bounds) {\r\n            if (this.DropTargetItem == null)\r\n                return;\r\n            Rectangle r = this.CalculateDropTargetRectangle(this.DropTargetItem, this.DropTargetSubItemIndex);\r\n            r.Inflate(1, 1);\r\n            float diameter = r.Height / 3;\r\n            using (GraphicsPath path = this.GetRoundedRect(r, diameter)) {\r\n                using (SolidBrush b = new SolidBrush(Color.FromArgb(48, this.FeedbackColor))) {\r\n                    g.FillPath(b, path);\r\n                }\r\n                using (Pen p = new Pen(this.FeedbackColor, 3.0f)) {\r\n                    g.DrawPath(p, path);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the feedback that shows the drop will occur before target\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"bounds\"></param>\r\n        protected virtual void DrawFeedbackAboveItemTarget(Graphics g, Rectangle bounds) {\r\n            if (this.DropTargetItem == null)\r\n                return;\r\n\r\n            Rectangle r = this.CalculateDropTargetRectangle(this.DropTargetItem, this.DropTargetSubItemIndex);\r\n            this.DrawBetweenLine(g, r.Left, r.Top, r.Right, r.Top);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the feedback that shows the drop will occur after target\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"bounds\"></param>\r\n        protected virtual void DrawFeedbackBelowItemTarget(Graphics g, Rectangle bounds) {\r\n            if (this.DropTargetItem == null)\r\n                return;\r\n\r\n            Rectangle r = this.CalculateDropTargetRectangle(this.DropTargetItem, this.DropTargetSubItemIndex);\r\n            this.DrawBetweenLine(g, r.Left, r.Bottom, r.Right, r.Bottom);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a GraphicPath that is round corner rectangle.\r\n        /// </summary>\r\n        /// <param name=\"rect\"></param>\r\n        /// <param name=\"diameter\"></param>\r\n        /// <returns></returns>\r\n        protected GraphicsPath GetRoundedRect(Rectangle rect, float diameter) {\r\n            GraphicsPath path = new GraphicsPath();\r\n\r\n            RectangleF arc = new RectangleF(rect.X, rect.Y, diameter, diameter);\r\n            path.AddArc(arc, 180, 90);\r\n            arc.X = rect.Right - diameter;\r\n            path.AddArc(arc, 270, 90);\r\n            arc.Y = rect.Bottom - diameter;\r\n            path.AddArc(arc, 0, 90);\r\n            arc.X = rect.Left;\r\n            path.AddArc(arc, 90, 90);\r\n            path.CloseFigure();\r\n\r\n            return path;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate the target rectangle when the given item (and possible subitem)\r\n        /// is the target of the drop.\r\n        /// </summary>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItem\"></param>\r\n        /// <returns></returns>\r\n        protected virtual Rectangle CalculateDropTargetRectangle(OLVListItem item, int subItem) {\r\n            if (subItem > 0)\r\n                return item.SubItems[subItem].Bounds;\r\n            \r\n            Rectangle r = this.ListView.CalculateCellTextBounds(item, subItem);\r\n\r\n            // Allow for indent\r\n            if (item.IndentCount > 0) {\r\n                int indentWidth = this.ListView.SmallImageSize.Width;\r\n                r.X += (indentWidth * item.IndentCount);\r\n                r.Width -= (indentWidth * item.IndentCount);\r\n            }\r\n\r\n            return r;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw a \"between items\" line at the given co-ordinates\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"x1\"></param>\r\n        /// <param name=\"y1\"></param>\r\n        /// <param name=\"x2\"></param>\r\n        /// <param name=\"y2\"></param>\r\n        protected virtual void DrawBetweenLine(Graphics g, int x1, int y1, int x2, int y2) {\r\n            using (Brush b = new SolidBrush(this.FeedbackColor)) {\r\n                int x = x1;\r\n                int y = y1;\r\n                using (GraphicsPath gp = new GraphicsPath()) {\r\n                    gp.AddLine(\r\n                        x, y + 5,\r\n                        x, y - 5);\r\n                    gp.AddBezier(\r\n                        x, y - 6,\r\n                        x + 3, y - 2,\r\n                        x + 6, y - 1,\r\n                        x + 11, y);\r\n                    gp.AddBezier(\r\n                        x + 11, y,\r\n                        x + 6, y + 1,\r\n                        x + 3, y + 2,\r\n                        x, y + 6);\r\n                    gp.CloseFigure();\r\n                    g.FillPath(b, gp);\r\n                }\r\n                x = x2;\r\n                y = y2;\r\n                using (GraphicsPath gp = new GraphicsPath()) {\r\n                    gp.AddLine(\r\n                        x, y + 6,\r\n                        x, y - 6);\r\n                    gp.AddBezier(\r\n                        x, y - 7,\r\n                        x - 3, y - 2,\r\n                        x - 6, y - 1,\r\n                        x - 11, y);\r\n                    gp.AddBezier(\r\n                        x - 11, y,\r\n                        x - 6, y + 1,\r\n                        x - 3, y + 2,\r\n                        x, y + 7);\r\n                    gp.CloseFigure();\r\n                    g.FillPath(b, gp);\r\n                }\r\n            }\r\n            using (Pen p = new Pen(this.FeedbackColor, 3.0f)) {\r\n                g.DrawLine(p, x1, y1, x2, y2);\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        private Timer timer;\r\n        private int scrollAmount;\r\n        private bool originalFullRowSelect;\r\n        private ModelDropEventArgs dropEventArgs;\r\n    }\r\n\r\n    /// <summary>\r\n    /// This drop sink allows items within the same list to be rearranged,\r\n    /// as well as allowing items to be dropped from other lists.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>\r\n    /// This class can only be used on plain ObjectListViews and FastObjectListViews.\r\n    /// The other flavours have no way to implement the insert operation that is required.\r\n    /// </para>\r\n    /// <para>\r\n    /// This class does not work with grouping.\r\n    /// </para>\r\n    /// <para>\r\n    /// This class works when the OLV is sorted, but it is up to the programmer\r\n    /// to decide what rearranging such lists \"means\". Example: if the control is sorting\r\n    /// students by academic grade, and the user drags a \"Fail\" grade student up amonst the \"A+\"\r\n    /// students, it is the responsibility of the programmer to makes the appropriate changes\r\n    /// to the model and redraw/rebuild the control so that the users action makes sense.\r\n    /// </para>\r\n    /// <para>\r\n    /// Users of this class should listen for the CanDrop event to decide\r\n    /// if models from another OLV can be moved to OLV under this sink.\r\n    /// </para>\r\n    /// </remarks>\r\n    public class RearrangingDropSink : SimpleDropSink\r\n    {\r\n        /// <summary>\r\n        /// Create a RearrangingDropSink\r\n        /// </summary>\r\n        public RearrangingDropSink() {\r\n            this.CanDropBetween = true;\r\n            this.CanDropOnBackground = true;\r\n            this.CanDropOnItem = false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a RearrangingDropSink\r\n        /// </summary>\r\n        /// <param name=\"acceptDropsFromOtherLists\"></param>\r\n        public RearrangingDropSink(bool acceptDropsFromOtherLists)\r\n            : this() {\r\n            this.AcceptExternal = acceptDropsFromOtherLists;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger OnModelCanDrop\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected override void OnModelCanDrop(ModelDropEventArgs args) {\r\n            base.OnModelCanDrop(args);\r\n\r\n            if (args.Handled)\r\n                return;\r\n\r\n            args.Effect = DragDropEffects.Move;\r\n\r\n            // Don't allow drops from other list, if that's what's configured\r\n            if (!this.AcceptExternal && args.SourceListView != this.ListView) {\r\n                args.Effect = DragDropEffects.None;\r\n                args.DropTargetLocation = DropTargetLocation.None;\r\n                args.InfoMessage = \"This list doesn't accept drops from other lists\";\r\n            }\r\n\r\n            // If we are rearranging a list, don't allow drops on the background\r\n            if (args.DropTargetLocation == DropTargetLocation.Background && args.SourceListView == this.ListView) {\r\n                args.Effect = DragDropEffects.None;\r\n                args.DropTargetLocation = DropTargetLocation.None;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger OnModelDropped\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected override void OnModelDropped(ModelDropEventArgs args) {\r\n            base.OnModelDropped(args);\r\n\r\n            if (!args.Handled)\r\n                this.RearrangeModels(args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the work of processing the dropped items\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        public virtual void RearrangeModels(ModelDropEventArgs args) {\r\n            switch (args.DropTargetLocation) {\r\n                case DropTargetLocation.AboveItem:\r\n                    this.ListView.MoveObjects(args.DropTargetIndex, args.SourceModels);\r\n                    break;\r\n                case DropTargetLocation.BelowItem:\r\n                    this.ListView.MoveObjects(args.DropTargetIndex + 1, args.SourceModels);\r\n                    break;\r\n                case DropTargetLocation.Background:\r\n                    this.ListView.AddObjects(args.SourceModels);\r\n                    break;\r\n                default:\r\n                    return;\r\n            }\r\n\r\n            if (args.SourceListView != this.ListView) {\r\n                args.SourceListView.RemoveObjects(args.SourceModels);\r\n            }\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// When a drop sink needs to know if something can be dropped, or\r\n    /// to notify that a drop has occured, it uses an instance of this class.\r\n    /// </summary>\r\n    public class OlvDropEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a OlvDropEventArgs\r\n        /// </summary>\r\n        public OlvDropEventArgs() {\r\n        }\r\n\r\n        #region Data Properties\r\n\r\n        /// <summary>\r\n        /// Get the data object that is being dragged\r\n        /// </summary>\r\n        public object DataObject {\r\n            get { return this.dataObject; }\r\n            internal set { this.dataObject = value; }\r\n        }\r\n        private object dataObject;\r\n\r\n        /// <summary>\r\n        /// Get the drop sink that originated this event\r\n        /// </summary>\r\n        public SimpleDropSink DropSink {\r\n            get { return this.dropSink; }\r\n            internal set { this.dropSink = value; }\r\n        }\r\n        private SimpleDropSink dropSink;\r\n\r\n        /// <summary>\r\n        /// Get or set the index of the item that is the target of the drop\r\n        /// </summary>\r\n        public int DropTargetIndex {\r\n            get { return dropTargetIndex; }\r\n            set { this.dropTargetIndex = value; }\r\n        }\r\n        private int dropTargetIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Get or set the location of the target of the drop\r\n        /// </summary>\r\n        public DropTargetLocation DropTargetLocation {\r\n            get { return dropTargetLocation; }\r\n            set { this.dropTargetLocation = value; }\r\n        }\r\n        private DropTargetLocation dropTargetLocation;\r\n\r\n        /// <summary>\r\n        /// Get or set the index of the subitem that is the target of the drop\r\n        /// </summary>\r\n        public int DropTargetSubItemIndex {\r\n            get { return dropTargetSubItemIndex; }\r\n            set { this.dropTargetSubItemIndex = value; }\r\n        }\r\n        private int dropTargetSubItemIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Get the item that is the target of the drop\r\n        /// </summary>\r\n        public OLVListItem DropTargetItem {\r\n            get {\r\n                return this.ListView.GetItem(this.DropTargetIndex);\r\n            }\r\n            set {\r\n                if (value == null)\r\n                    this.DropTargetIndex = -1;\r\n                else\r\n                    this.DropTargetIndex = value.Index;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the drag effect that should be used for this operation\r\n        /// </summary>\r\n        public DragDropEffects Effect {\r\n            get { return this.effect; }\r\n            set { this.effect = value; }\r\n        }\r\n        private DragDropEffects effect;\r\n\r\n        /// <summary>\r\n        /// Get or set if this event was handled. No further processing will be done for a handled event.\r\n        /// </summary>\r\n        public bool Handled {\r\n            get { return this.handled; }\r\n            set { this.handled = value; }\r\n        }\r\n        private bool handled;\r\n\r\n        /// <summary>\r\n        /// Get or set the feedback message for this operation\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If this is not null, it will be displayed as a feedback message\r\n        /// during the drag.\r\n        /// </remarks>\r\n        public string InfoMessage {\r\n            get { return this.infoMessage; }\r\n            set { this.infoMessage = value; }\r\n        }\r\n        private string infoMessage;\r\n\r\n        /// <summary>\r\n        /// Get the ObjectListView that is being dropped on\r\n        /// </summary>\r\n        public ObjectListView ListView {\r\n            get { return this.listView; }\r\n            internal set { this.listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Get the location of the mouse (in target ListView co-ords)\r\n        /// </summary>\r\n        public Point MouseLocation {\r\n            get { return this.mouseLocation; }\r\n            internal set { this.mouseLocation = value; }\r\n        }\r\n        private Point mouseLocation;\r\n\r\n        /// <summary>\r\n        /// Get the drop action indicated solely by the state of the modifier keys\r\n        /// </summary>\r\n        public DragDropEffects StandardDropActionFromKeys {\r\n            get {\r\n                return this.DropSink.CalculateStandardDropActionFromKeys();\r\n            }\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// These events are triggered when the drag source is an ObjectListView.\r\n    /// </summary>\r\n    public class ModelDropEventArgs : OlvDropEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a ModelDropEventArgs\r\n        /// </summary>\r\n        public ModelDropEventArgs()\r\n        {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the model objects that are being dragged.\r\n        /// </summary>\r\n        public IList SourceModels {\r\n            get { return this.dragModels; }\r\n            internal set { \r\n                this.dragModels = value;\r\n                TreeListView tlv = this.SourceListView as TreeListView;\r\n                if (tlv != null) {\r\n                    foreach (object model in this.SourceModels) {\r\n                        object parent = tlv.GetParent(model);\r\n                        if (!toBeRefreshed.Contains(parent))\r\n                            toBeRefreshed.Add(parent);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        private IList dragModels;\r\n        private ArrayList toBeRefreshed = new ArrayList();\r\n\r\n        /// <summary>\r\n        /// Gets the ObjectListView that is the source of the dragged objects.\r\n        /// </summary>\r\n        public ObjectListView SourceListView {\r\n            get { return this.sourceListView; }\r\n            internal set { this.sourceListView = value; }\r\n        }\r\n        private ObjectListView sourceListView;\r\n\r\n        /// <summary>\r\n        /// Get the model object that is being dropped upon.\r\n        /// </summary>\r\n        /// <remarks>This is only value for TargetLocation == Item</remarks>\r\n        public object TargetModel {\r\n            get { return this.targetModel; }\r\n            internal set { this.targetModel = value; }\r\n        }\r\n        private object targetModel;\r\n\r\n        /// <summary>\r\n        /// Refresh all the objects involved in the operation\r\n        /// </summary>\r\n        public void RefreshObjects() {\r\n            TreeListView tlv = this.SourceListView as TreeListView;\r\n            if (tlv != null) {\r\n                foreach (object model in this.SourceModels) {\r\n                    object parent = tlv.GetParent(model);\r\n                    if (!toBeRefreshed.Contains(parent))\r\n                        toBeRefreshed.Add(parent);\r\n                }\r\n            }\r\n            toBeRefreshed.AddRange(this.SourceModels);\r\n            if (this.ListView == this.SourceListView) {\r\n                toBeRefreshed.Add(this.TargetModel);\r\n                this.ListView.RefreshObjects(toBeRefreshed);\r\n            } else {\r\n                this.SourceListView.RefreshObjects(toBeRefreshed);\r\n                this.ListView.RefreshObject(this.TargetModel);\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/Enums.cs",
    "content": "﻿/*\r\n * Enums - All enum definitions used in ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 31-March-2011 5:53 pm\r\n *\r\n * Change log:\r\n * 2011-03-31  JPP  - Split into its own file\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    public partial class ObjectListView {\r\n        /// <summary>\r\n        /// How does a user indicate that they want to edit cells?\r\n        /// </summary>\r\n        public enum CellEditActivateMode {\r\n            /// <summary>\r\n            /// This list cannot be edited. F2 does nothing.\r\n            /// </summary>\r\n            None = 0,\r\n\r\n            /// <summary>\r\n            /// A single click on  a <strong>subitem</strong> will edit the value. Single clicking the primary column,\r\n            /// selects the row just like normal. The user must press F2 to edit the primary column.\r\n            /// </summary>\r\n            SingleClick = 1,\r\n\r\n            /// <summary>\r\n            /// Double clicking a subitem or the primary column will edit that cell.\r\n            /// F2 will edit the primary column.\r\n            /// </summary>\r\n            DoubleClick = 2,\r\n\r\n            /// <summary>\r\n            /// Pressing F2 is the only way to edit the cells. Once the primary column is being edited,\r\n            /// the other cells in the row can be edited by pressing Tab.\r\n            /// </summary>\r\n            F2Only = 3,\r\n\r\n            /// <summary>\r\n            /// A single click on  a <strong>any</strong> cell will edit the value, even the primary column.\r\n            /// </summary>\r\n            SingleClickAlways = 4,\r\n        }\r\n\r\n        /// <summary>\r\n        /// These values specify how column selection will be presented to the user\r\n        /// </summary>\r\n        public enum ColumnSelectBehaviour {\r\n            /// <summary>\r\n            /// No column selection will be presented \r\n            /// </summary>\r\n            None,\r\n\r\n            /// <summary>\r\n            /// The columns will be show in the main menu\r\n            /// </summary>\r\n            InlineMenu,\r\n\r\n            /// <summary>\r\n            /// The columns will be shown in a submenu\r\n            /// </summary>\r\n            Submenu,\r\n\r\n            /// <summary>\r\n            /// A model dialog will be presented to allow the user to choose columns\r\n            /// </summary>\r\n            ModelDialog,\r\n\r\n            /*\r\n             * NonModelDialog is just a little bit tricky since the OLV can change views while the dialog is showing\r\n             * So, just comment this out for the time being.\r\n             \r\n            /// <summary>\r\n            /// A non-model dialog will be presented to allow the user to choose columns\r\n            /// </summary>\r\n            NonModelDialog\r\n             * \r\n             */\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/ObjectListView/Implementation/Events.cs",
    "content": "/*\r\n * Events - All the events that can be triggered within an ObjectListView.\r\n *\r\n * Author: Phillip Piper\r\n * Date: 17/10/2008 9:15 PM\r\n *\r\n * Change log:\r\n * v2.8.0\r\n * 2014-05-20   JPP  - Added IsHyperlinkEventArgs.IsHyperlink \r\n * v2.6\r\n * 2012-04-17   JPP  - Added group state change and group expansion events\r\n * v2.5\r\n * 2010-08-08   JPP  - CellEdit validation and finish events now have NewValue property.\r\n * v2.4\r\n * 2010-03-04   JPP  - Added filtering events\r\n * v2.3\r\n * 2009-08-16   JPP  - Added group events\r\n * 2009-08-08   JPP  - Added HotItem event\r\n * 2009-07-24   JPP  - Added Hyperlink events\r\n *                   - Added Formatting events\r\n * v2.2.1\r\n * 2009-06-13   JPP  - Added Cell events\r\n *                   - Moved all event parameter blocks to this file.\r\n *                   - Added Handled property to AfterSearchEventArgs\r\n * v2.2\r\n * 2009-06-01   JPP  - Added ColumnToGroupBy and GroupByOrder to sorting events\r\n                     - Gave all event descriptions\r\n * 2009-04-23   JPP  - Added drag drop events\r\n * v2.1\r\n * 2009-01-18   JPP  - Moved SelectionChanged event to this file\r\n * v2.0\r\n * 2008-12-06   JPP  - Added searching events\r\n * 2008-12-01   JPP  - Added secondary sort information to Before/AfterSorting events\r\n * 2008-10-17   JPP  - Separated from ObjectListView.cs\r\n * \r\n * Copyright (C) 2006-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Drawing;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// The callbacks for CellEditing events\r\n    /// </summary>\r\n    /// <remarks> this \r\n    /// We could replace this with EventHandler&lt;CellEditEventArgs&gt; but that would break all\r\n    /// cell editing event code from v1.x.\r\n    /// </remarks>\r\n    public delegate void CellEditEventHandler(object sender, CellEditEventArgs e);\r\n\r\n    public partial class ObjectListView\r\n    {\r\n        //-----------------------------------------------------------------------------------\r\n        #region Events\r\n\r\n        /// <summary>\r\n        /// Triggered after a ObjectListView has been searched by the user typing into the list\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered after the control has done a search-by-typing action.\")]\r\n        public event EventHandler<AfterSearchingEventArgs> AfterSearching;\r\n\r\n        /// <summary>\r\n        /// Triggered after a ObjectListView has been sorted\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered after the items in the list have been sorted.\")]\r\n        public event EventHandler<AfterSortingEventArgs> AfterSorting;\r\n\r\n        /// <summary>\r\n        /// Triggered before a ObjectListView is searched by the user typing into the list\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Set Cancelled to true to prevent the searching from taking place.\r\n        /// Changing StringToFind or StartSearchFrom will change the subsequent search.\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered before the control does a search-by-typing action.\")]\r\n        public event EventHandler<BeforeSearchingEventArgs> BeforeSearching;\r\n\r\n        /// <summary>\r\n        /// Triggered before a ObjectListView is sorted\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Set Cancelled to true to prevent the sort from taking place.\r\n        /// Changing ColumnToSort or SortOrder will change the subsequent sort.\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered before the items in the list are sorted.\")]\r\n        public event EventHandler<BeforeSortingEventArgs> BeforeSorting;\r\n\r\n        /// <summary>\r\n        /// Triggered after a ObjectListView has created groups\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered after the groups are created.\")]\r\n        public event EventHandler<CreateGroupsEventArgs> AfterCreatingGroups;\r\n\r\n        /// <summary>\r\n        /// Triggered before a ObjectListView begins to create groups\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Set Groups to prevent the default group creation process\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered before the groups are created.\")]\r\n        public event EventHandler<CreateGroupsEventArgs> BeforeCreatingGroups;\r\n\r\n        /// <summary>\r\n        /// Triggered just before a ObjectListView creates groups\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// You can make changes to the groups, which have been created, before those\r\n        /// groups are created within the listview.\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the groups are just about to be created.\")]\r\n        public event EventHandler<CreateGroupsEventArgs> AboutToCreateGroups;\r\n\r\n        /// <summary>\r\n        /// Triggered when a button in a cell is left clicked.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the user left clicks a button.\")]\r\n        public event EventHandler<CellClickEventArgs> ButtonClick;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when the user moves a drag over an ObjectListView that\r\n        /// has a SimpleDropSink installed as the drop handler.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Handlers for this event should set the Effect argument and optionally the\r\n        /// InfoMsg property. They can also change any of the DropTarget* setttings to change\r\n        /// the target of the drop.\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Can the user drop the currently dragged items at the current mouse location?\")]\r\n        public event EventHandler<OlvDropEventArgs> CanDrop;\r\n\r\n        /// <summary>\r\n        /// Triggered when a cell has finished being edited.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered cell edit operation has completely finished\")]\r\n        public event CellEditEventHandler CellEditFinished;\r\n\r\n        /// <summary>\r\n        /// Triggered when a cell is about to finish being edited.\r\n        /// </summary>\r\n        /// <remarks>If Cancel is already true, the user is cancelling the edit operation.\r\n        /// Set Cancel to true to prevent the value from the cell being written into the model.\r\n        /// You cannot prevent the editing from finishing within this event -- you need\r\n        /// the CellEditValidating event for that.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered cell edit operation is finishing.\")]\r\n        public event CellEditEventHandler CellEditFinishing;\r\n\r\n        /// <summary>\r\n        /// Triggered when a cell is about to be edited.\r\n        /// </summary>\r\n        /// <remarks>Set Cancel to true to prevent the cell being edited.\r\n        /// You can change the the Control to be something completely different.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when cell edit is about to begin.\")]\r\n        public event CellEditEventHandler CellEditStarting;\r\n\r\n        /// <summary>\r\n        /// Triggered when a cell editor needs to be validated\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If this event is cancelled, focus will remain on the cell editor.\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a cell editor is about to lose focus and its new contents need to be validated.\")]\r\n        public event CellEditEventHandler CellEditValidating;\r\n\r\n        /// <summary>\r\n        /// Triggered when a cell is left clicked.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the user left clicks a cell.\")]\r\n        public event EventHandler<CellClickEventArgs> CellClick;\r\n\r\n        /// <summary>\r\n        /// Triggered when the mouse is above a cell.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the mouse is over a cell.\")]\r\n        public event EventHandler<CellOverEventArgs> CellOver;\r\n\r\n        /// <summary>\r\n        /// Triggered when a cell is right clicked.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the user right clicks a cell.\")]\r\n        public event EventHandler<CellRightClickEventArgs> CellRightClick;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when a cell needs a tool tip.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a cell needs a tool tip.\")]\r\n        public event EventHandler<ToolTipShowingEventArgs> CellToolTipShowing;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when a checkbox is checked/unchecked on a subitem\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a checkbox is checked/unchecked on a subitem.\")]\r\n        public event EventHandler<SubItemCheckingEventArgs> SubItemChecking;\r\n\r\n        /// <summary>\r\n        /// Triggered when a column header is right clicked.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the user right clicks a column header.\")]\r\n        public event ColumnRightClickEventHandler ColumnRightClick;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when the user releases a drag over an ObjectListView that\r\n        /// has a SimpleDropSink installed as the drop handler.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the user dropped items onto the control.\")]\r\n        public event EventHandler<OlvDropEventArgs> Dropped;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when the control needs to filter its collection of objects.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the control needs to filter its collection of objects.\")]\r\n        public event EventHandler<FilterEventArgs> Filter;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when a cell needs to be formatted.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a cell needs to be formatted.\")]\r\n        public event EventHandler<FormatCellEventArgs> FormatCell;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when the frozeness of the control changes.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when frozeness of the control changes.\")]\r\n        public event EventHandler<FreezeEventArgs> Freezing;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when a row needs to be formatted.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a row needs to be formatted.\")]\r\n        public event EventHandler<FormatRowEventArgs> FormatRow;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when a group is about to collapse or expand.\r\n        /// This can be cancelled to prevent the expansion.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a group is about to collapse or expand.\")]\r\n        public event EventHandler<GroupExpandingCollapsingEventArgs> GroupExpandingCollapsing;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when a group changes state.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a group changes state.\")]\r\n        public event EventHandler<GroupStateChangedEventArgs> GroupStateChanged;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when a header checkbox is changing value\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a header checkbox changes value.\")]\r\n        public event EventHandler<HeaderCheckBoxChangingEventArgs> HeaderCheckBoxChanging;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when a header needs a tool tip.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a header needs a tool tip.\")]\r\n        public event EventHandler<ToolTipShowingEventArgs> HeaderToolTipShowing;\r\n\r\n        /// <summary>\r\n        /// Triggered when the \"hot\" item changes\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the hot item changed.\")]\r\n        public event EventHandler<HotItemChangedEventArgs> HotItemChanged;\r\n\r\n        /// <summary>\r\n        /// Triggered when a hyperlink cell is clicked.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a hyperlink cell is clicked.\")]\r\n        public event EventHandler<HyperlinkClickedEventArgs> HyperlinkClicked;\r\n\r\n        /// <summary>\r\n        /// Triggered when the task text of a group is clicked.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the task text of a group is clicked.\")]\r\n        public event EventHandler<GroupTaskClickedEventArgs> GroupTaskClicked;\r\n\r\n        /// <summary>\r\n        /// Is the value in the given cell a hyperlink.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the control needs to know if a given cell contains a hyperlink.\")]\r\n        public event EventHandler<IsHyperlinkEventArgs> IsHyperlink;\r\n\r\n        /// <summary>\r\n        /// Some new objects are about to be added to an ObjectListView.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when objects are about to be added to the control\")]\r\n        public event EventHandler<ItemsAddingEventArgs> ItemsAdding;\r\n\r\n        /// <summary>\r\n        /// The contents of the ObjectListView has changed.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the contents of the control have changed.\")]\r\n        public event EventHandler<ItemsChangedEventArgs> ItemsChanged;\r\n\r\n        /// <summary>\r\n        /// The contents of the ObjectListView is about to change via a SetObjects call\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>Set Cancelled to true to prevent the contents of the list changing. This does not work with virtual lists.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the contents of the control changes.\")]\r\n        public event EventHandler<ItemsChangingEventArgs> ItemsChanging;\r\n\r\n        /// <summary>\r\n        /// Some objects are about to be removed from an ObjectListView.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when objects are removed from the control.\")]\r\n        public event EventHandler<ItemsRemovingEventArgs> ItemsRemoving;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when the user moves a drag over an ObjectListView that\r\n        /// has a SimpleDropSink installed as the drop handler, and when the source control\r\n        /// for the drag was an ObjectListView.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Handlers for this event should set the Effect argument and optionally the\r\n        /// InfoMsg property. They can also change any of the DropTarget* setttings to change\r\n        /// the target of the drop.\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Can the dragged collection of model objects be dropped at the current mouse location\")]\r\n        public event EventHandler<ModelDropEventArgs> ModelCanDrop;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when the user releases a drag over an ObjectListView that\r\n        /// has a SimpleDropSink installed as the drop handler and when the source control\r\n        /// for the drag was an ObjectListView.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"A collection of model objects from a ObjectListView has been dropped on this control\")]\r\n        public event EventHandler<ModelDropEventArgs> ModelDropped;\r\n\r\n        /// <summary>\r\n        /// This event is triggered once per user action that changes the selection state\r\n        /// of one or more rows.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered once per user action that changes the selection state of one or more rows.\")]\r\n        public event EventHandler SelectionChanged;\r\n\r\n        /// <summary>\r\n        /// This event is triggered when the contents of the ObjectListView has scrolled.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the contents of the ObjectListView has scrolled.\")]\r\n        public event EventHandler<ScrollEventArgs> Scroll;\r\n\r\n        #endregion\r\n\r\n        //-----------------------------------------------------------------------------------\r\n        #region OnEvents\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnAboutToCreateGroups(CreateGroupsEventArgs e) {\r\n            if (AboutToCreateGroups != null)\r\n                AboutToCreateGroups(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnBeforeCreatingGroups(CreateGroupsEventArgs e) {\r\n            if (BeforeCreatingGroups != null)\r\n                BeforeCreatingGroups(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnAfterCreatingGroups(CreateGroupsEventArgs e) {\r\n            if (AfterCreatingGroups != null)\r\n                AfterCreatingGroups(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnAfterSearching(AfterSearchingEventArgs e) {\r\n            if (AfterSearching != null)\r\n                AfterSearching(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnAfterSorting(AfterSortingEventArgs e) {\r\n            if (AfterSorting != null)\r\n                AfterSorting(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnBeforeSearching(BeforeSearchingEventArgs e) {\r\n            if (BeforeSearching != null)\r\n                BeforeSearching(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnBeforeSorting(BeforeSortingEventArgs e) {\r\n            if (BeforeSorting != null)\r\n                BeforeSorting(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnButtonClick(CellClickEventArgs args)\r\n        {\r\n            if (ButtonClick != null)\r\n                ButtonClick(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnCanDrop(OlvDropEventArgs args) {\r\n            if (CanDrop != null)\r\n                CanDrop(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnCellClick(CellClickEventArgs args) {\r\n            if (CellClick != null)\r\n                CellClick(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnCellOver(CellOverEventArgs args) {\r\n            if (CellOver != null)\r\n                CellOver(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnCellRightClick(CellRightClickEventArgs args) {\r\n            if (CellRightClick != null)\r\n                CellRightClick(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnCellToolTip(ToolTipShowingEventArgs args) {\r\n            if (CellToolTipShowing != null)\r\n                CellToolTipShowing(this, args);\r\n        }\r\n        \r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnSubItemChecking(SubItemCheckingEventArgs args) {\r\n            if (SubItemChecking != null)\r\n                SubItemChecking(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnColumnRightClick(ColumnClickEventArgs e) {\r\n            if (ColumnRightClick != null)\r\n                ColumnRightClick(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnDropped(OlvDropEventArgs args) {\r\n            if (Dropped != null)\r\n                Dropped(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        internal protected virtual void OnFilter(FilterEventArgs e) {\r\n            if (Filter != null)\r\n                Filter(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnFormatCell(FormatCellEventArgs args) {\r\n            if (FormatCell != null)\r\n                FormatCell(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnFormatRow(FormatRowEventArgs args) {\r\n            if (FormatRow != null)\r\n                FormatRow(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnFreezing(FreezeEventArgs args) {\r\n            if (Freezing != null)\r\n                Freezing(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnGroupExpandingCollapsing(GroupExpandingCollapsingEventArgs args)\r\n        {\r\n            if (GroupExpandingCollapsing != null)\r\n                GroupExpandingCollapsing(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnGroupStateChanged(GroupStateChangedEventArgs args)\r\n        {\r\n            if (GroupStateChanged != null)\r\n                GroupStateChanged(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnHeaderCheckBoxChanging(HeaderCheckBoxChangingEventArgs args)\r\n        {\r\n            if (HeaderCheckBoxChanging != null)\r\n                HeaderCheckBoxChanging(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnHeaderToolTip(ToolTipShowingEventArgs args)\r\n        {\r\n            if (HeaderToolTipShowing != null)\r\n                HeaderToolTipShowing(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnHotItemChanged(HotItemChangedEventArgs e) {\r\n            if (HotItemChanged != null)\r\n                HotItemChanged(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnHyperlinkClicked(HyperlinkClickedEventArgs e) {\r\n            if (HyperlinkClicked != null)\r\n                HyperlinkClicked(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnGroupTaskClicked(GroupTaskClickedEventArgs e) {\r\n            if (GroupTaskClicked != null)\r\n                GroupTaskClicked(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnIsHyperlink(IsHyperlinkEventArgs e) {\r\n            if (IsHyperlink != null)\r\n                IsHyperlink(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnItemsAdding(ItemsAddingEventArgs e) {\r\n            if (ItemsAdding != null)\r\n                ItemsAdding(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnItemsChanged(ItemsChangedEventArgs e) {\r\n            if (ItemsChanged != null)\r\n                ItemsChanged(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnItemsChanging(ItemsChangingEventArgs e) {\r\n            if (ItemsChanging != null)\r\n                ItemsChanging(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnItemsRemoving(ItemsRemovingEventArgs e) {\r\n            if (ItemsRemoving != null)\r\n                ItemsRemoving(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnModelCanDrop(ModelDropEventArgs args) {\r\n            if (ModelCanDrop != null)\r\n                ModelCanDrop(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void OnModelDropped(ModelDropEventArgs args) {\r\n            if (ModelDropped != null)\r\n                ModelDropped(this, args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnSelectionChanged(EventArgs e) {\r\n            if (SelectionChanged != null)\r\n                SelectionChanged(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnScroll(ScrollEventArgs e) {\r\n            if (Scroll != null)\r\n                Scroll(this, e);\r\n        }\r\n\r\n\r\n        /// <summary>\r\n        /// Tell the world when a cell is about to be edited.\r\n        /// </summary>\r\n        protected virtual void OnCellEditStarting(CellEditEventArgs e) {\r\n            if (CellEditStarting != null)\r\n                CellEditStarting(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Tell the world when a cell is about to finish being edited.\r\n        /// </summary>\r\n        protected virtual void OnCellEditorValidating(CellEditEventArgs e) {\r\n            // Hack. ListView is an imperfect control container. It does not manage validation\r\n            // perfectly. If the ListView is part of a TabControl, and the cell editor loses\r\n            // focus by the user clicking on another tab, the TabControl processes the click\r\n            // and switches tabs, even if this Validating event cancels. This results in the\r\n            // strange situation where the cell editor is active, but isn't visible. When the\r\n            // user switches back to the tab with the ListView, composite controls like spin\r\n            // controls, DateTimePicker and ComboBoxes do not work properly. Specifically,\r\n            // keyboard input still works fine, but the controls do not respond to mouse\r\n            // input. SO, if the validation fails, we have to specifically give focus back to\r\n            // the cell editor. (this is the Select() call in the code below). \r\n            // But (there is always a 'but'), doing that changes the focus so the cell editor\r\n            // triggers another Validating event -- which fails again. From the user's point\r\n            // of view, they click away from the cell editor, and the validating code\r\n            // complains twice. So we only trigger a Validating event if more than 0.1 seconds\r\n            // has elapsed since the last validate event.\r\n            // I know it's a hack. I'm very open to hear a neater solution.\r\n\r\n            // Also, this timed response stops us from sending a series of validation events\r\n            // if the user clicks and holds on the OLV scroll bar.\r\n            //System.Diagnostics.Debug.WriteLine(Environment.TickCount - lastValidatingEvent);\r\n            if ((Environment.TickCount - lastValidatingEvent) < 100) {\r\n                e.Cancel = true;\r\n            } else {\r\n                lastValidatingEvent = Environment.TickCount;\r\n                if (CellEditValidating != null)\r\n                    CellEditValidating(this, e);\r\n            }\r\n            lastValidatingEvent = Environment.TickCount;\r\n        }\r\n        private int lastValidatingEvent = 0;\r\n\r\n        /// <summary>\r\n        /// Tell the world when a cell is about to finish being edited.\r\n        /// </summary>\r\n        protected virtual void OnCellEditFinishing(CellEditEventArgs e) {\r\n            if (CellEditFinishing != null)\r\n                CellEditFinishing(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Tell the world when a cell has finished being edited.\r\n        /// </summary>\r\n        protected virtual void OnCellEditFinished(CellEditEventArgs e) {\r\n            if (CellEditFinished != null)\r\n                CellEditFinished(this, e);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n    \r\n    public partial class TreeListView\r\n    {\r\n\r\n        #region Events\r\n\r\n        /// <summary>\r\n        /// This event is triggered when user input requests the expansion of a list item.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a branch is about to expand.\")]\r\n        public event EventHandler<TreeBranchExpandingEventArgs> Expanding;\r\n \r\n        /// <summary>\r\n        /// This event is triggered when user input requests the collapse of a list item.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a branch is about to collapsed.\")]\r\n        public event EventHandler<TreeBranchCollapsingEventArgs> Collapsing;\r\n \r\n        /// <summary>\r\n        /// This event is triggered after the expansion of a list item due to user input.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a branch has been expanded.\")]\r\n        public event EventHandler<TreeBranchExpandedEventArgs> Expanded;\r\n \r\n        /// <summary>\r\n        /// This event is triggered after the collapse of a list item due to user input.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when a branch has been collapsed.\")]\r\n        public event EventHandler<TreeBranchCollapsedEventArgs> Collapsed;\r\n \r\n        #endregion\r\n \r\n        #region OnEvents\r\n\r\n        /// <summary>\r\n        /// Trigger the expanding event\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnExpanding(TreeBranchExpandingEventArgs e) {\r\n            if (Expanding != null)\r\n                Expanding(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger the collapsing event\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnCollapsing(TreeBranchCollapsingEventArgs e) {\r\n            if (Collapsing != null)\r\n                Collapsing(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger the expanded event\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnExpanded(TreeBranchExpandedEventArgs e) {\r\n             if (Expanded != null)\r\n                 Expanded(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger the collapsed event\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnCollapsed(TreeBranchCollapsedEventArgs e) {\r\n            if (Collapsed != null)\r\n                Collapsed(this, e);\r\n        }\r\n \r\n         #endregion\r\n    }\r\n\r\n    //-----------------------------------------------------------------------------------\r\n    #region Event Parameter Blocks\r\n\r\n    /// <summary>\r\n    /// Let the world know that a cell edit operation is beginning or ending\r\n    /// </summary>\r\n    public class CellEditEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create an event args\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"control\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        public CellEditEventArgs(OLVColumn column, Control control, Rectangle cellBounds, OLVListItem item, int subItemIndex) {\r\n            Control = control;\r\n            this.column = column;\r\n            this.cellBounds = cellBounds;\r\n            listViewItem = item;\r\n            rowObject = item.RowObject;\r\n            this.subItemIndex = subItemIndex;\r\n            value = column.GetValue(item.RowObject);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change this to true to cancel the cell editing operation.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>During the CellEditStarting event, setting this to true will prevent the cell from being edited.</para>\r\n        /// <para>During the CellEditFinishing event, if this value is already true, this indicates that the user has\r\n        /// cancelled the edit operation and that the handler should perform cleanup only. Setting this to true,\r\n        /// will prevent the ObjectListView from trying to write the new value into the model object.</para>\r\n        /// </remarks>\r\n        public bool Cancel;\r\n\r\n        /// <summary>\r\n        /// During the CellEditStarting event, this can be modified to be the control that you want\r\n        /// to edit the value. You must fully configure the control before returning from the event,\r\n        /// including its bounds and the value it is showing.\r\n        /// During the CellEditFinishing event, you can use this to get the value that the user\r\n        /// entered and commit that value to the model. Changing the control during the finishing\r\n        /// event has no effect.\r\n        /// </summary>\r\n        public Control Control;\r\n\r\n        /// <summary>\r\n        /// The column of the cell that is going to be or has been edited.\r\n        /// </summary>\r\n        public OLVColumn Column {\r\n            get { return column; }\r\n        }\r\n        private OLVColumn column;\r\n\r\n        /// <summary>\r\n        /// The model object of the row of the cell that is going to be or has been edited.\r\n        /// </summary>\r\n        public Object RowObject {\r\n            get { return rowObject; }\r\n        }\r\n        private Object rowObject;\r\n\r\n        /// <summary>\r\n        /// The listview item of the cell that is going to be or has been edited.\r\n        /// </summary>\r\n        public OLVListItem ListViewItem {\r\n            get { return listViewItem; }\r\n        }\r\n        private OLVListItem listViewItem;\r\n\r\n        /// <summary>\r\n        /// The data value of the cell as it stands in the control.\r\n        /// </summary>\r\n        /// <remarks>Only validate during Validating and Finishing events.</remarks>\r\n        public Object NewValue {\r\n            get { return newValue; }\r\n            set { newValue = value; }\r\n        }\r\n        private Object newValue;\r\n\r\n        /// <summary>\r\n        /// The index of the cell that is going to be or has been edited.\r\n        /// </summary>\r\n        public int SubItemIndex {\r\n            get { return subItemIndex; }\r\n        }\r\n        private int subItemIndex;\r\n\r\n        /// <summary>\r\n        /// The data value of the cell before the edit operation began.\r\n        /// </summary>\r\n        public Object Value {\r\n            get { return value; }\r\n        }\r\n        private Object value;\r\n\r\n        /// <summary>\r\n        /// The bounds of the cell that is going to be or has been edited.\r\n        /// </summary>\r\n        public Rectangle CellBounds {\r\n            get { return cellBounds; }\r\n        }\r\n        private Rectangle cellBounds;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the control used for editing should be auto matically disposed\r\n        /// when the cell edit operation finishes. Defaults to true\r\n        /// </summary>\r\n        /// <remarks>If the control is expensive to create, you might want to cache it and reuse for\r\n        /// for various cells. If so, you don't want ObjectListView to dispose of the control automatically</remarks>\r\n        public bool AutoDispose {\r\n            get { return autoDispose; }\r\n            set { autoDispose = value; }\r\n        }\r\n        private bool autoDispose = true;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Event blocks for events that can be cancelled\r\n    /// </summary>\r\n    public class CancellableEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Has this event been cancelled by the event handler?\r\n        /// </summary>\r\n        public bool Canceled;\r\n    }\r\n\r\n    /// <summary>\r\n    /// BeforeSorting\r\n    /// </summary>\r\n    public class BeforeSortingEventArgs : CancellableEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create BeforeSortingEventArgs\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"order\"></param>\r\n        /// <param name=\"column2\"></param>\r\n        /// <param name=\"order2\"></param>\r\n        public BeforeSortingEventArgs(OLVColumn column, SortOrder order, OLVColumn column2, SortOrder order2) {\r\n            ColumnToGroupBy = column;\r\n            GroupByOrder = order;\r\n            ColumnToSort = column;\r\n            SortOrder = order;\r\n            SecondaryColumnToSort = column2;\r\n            SecondarySortOrder = order2;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create BeforeSortingEventArgs\r\n        /// </summary>\r\n        /// <param name=\"groupColumn\"></param>\r\n        /// <param name=\"groupOrder\"></param>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"order\"></param>\r\n        /// <param name=\"column2\"></param>\r\n        /// <param name=\"order2\"></param>\r\n        public BeforeSortingEventArgs(OLVColumn groupColumn, SortOrder groupOrder, OLVColumn column, SortOrder order, OLVColumn column2, SortOrder order2) {\r\n            ColumnToGroupBy = groupColumn;\r\n            GroupByOrder = groupOrder;\r\n            ColumnToSort = column;\r\n            SortOrder = order;\r\n            SecondaryColumnToSort = column2;\r\n            SecondarySortOrder = order2;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Did the event handler already do the sorting for us?\r\n        /// </summary>\r\n        public bool Handled;\r\n\r\n        /// <summary>\r\n        /// What column will be used for grouping\r\n        /// </summary>\r\n        public OLVColumn ColumnToGroupBy;\r\n\r\n        /// <summary>\r\n        /// How will groups be ordered\r\n        /// </summary>\r\n        public SortOrder GroupByOrder;\r\n\r\n        /// <summary>\r\n        /// What column will be used for sorting\r\n        /// </summary>\r\n        public OLVColumn ColumnToSort;\r\n\r\n        /// <summary>\r\n        /// What order will be used for sorting. None means no sorting.\r\n        /// </summary>\r\n        public SortOrder SortOrder;\r\n\r\n        /// <summary>\r\n        /// What column will be used for secondary sorting?\r\n        /// </summary>\r\n        public OLVColumn SecondaryColumnToSort;\r\n\r\n        /// <summary>\r\n        /// What order will be used for secondary sorting?\r\n        /// </summary>\r\n        public SortOrder SecondarySortOrder;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Sorting has just occurred.\r\n    /// </summary>\r\n    public class AfterSortingEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a AfterSortingEventArgs\r\n        /// </summary>\r\n        /// <param name=\"groupColumn\"></param>\r\n        /// <param name=\"groupOrder\"></param>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"order\"></param>\r\n        /// <param name=\"column2\"></param>\r\n        /// <param name=\"order2\"></param>\r\n        public AfterSortingEventArgs(OLVColumn groupColumn, SortOrder groupOrder, OLVColumn column, SortOrder order, OLVColumn column2, SortOrder order2) {\r\n            columnToGroupBy = groupColumn;\r\n            groupByOrder = groupOrder;\r\n            columnToSort = column;\r\n            sortOrder = order;\r\n            secondaryColumnToSort = column2;\r\n            secondarySortOrder = order2;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a AfterSortingEventArgs\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        public AfterSortingEventArgs(BeforeSortingEventArgs args) {\r\n            columnToGroupBy = args.ColumnToGroupBy;\r\n            groupByOrder = args.GroupByOrder;\r\n            columnToSort = args.ColumnToSort;\r\n            sortOrder = args.SortOrder;\r\n            secondaryColumnToSort = args.SecondaryColumnToSort;\r\n            secondarySortOrder = args.SecondarySortOrder;\r\n        }\r\n\r\n        /// <summary>\r\n        /// What column was used for grouping?\r\n        /// </summary>\r\n        public OLVColumn ColumnToGroupBy {\r\n            get { return columnToGroupBy; }\r\n        }\r\n        private OLVColumn columnToGroupBy;\r\n\r\n        /// <summary>\r\n        /// What ordering was used for grouping?\r\n        /// </summary>\r\n        public SortOrder GroupByOrder {\r\n            get { return groupByOrder; }\r\n        }\r\n        private SortOrder groupByOrder;\r\n\r\n        /// <summary>\r\n        /// What column was used for sorting?\r\n        /// </summary>\r\n        public OLVColumn ColumnToSort {\r\n            get { return columnToSort; }\r\n        }\r\n        private OLVColumn columnToSort;\r\n\r\n        /// <summary>\r\n        /// What ordering was used for sorting?\r\n        /// </summary>\r\n        public SortOrder SortOrder {\r\n            get { return sortOrder; }\r\n        }\r\n        private SortOrder sortOrder;\r\n\r\n        /// <summary>\r\n        /// What column was used for secondary sorting?\r\n        /// </summary>\r\n        public OLVColumn SecondaryColumnToSort {\r\n            get { return secondaryColumnToSort; }\r\n        }\r\n        private OLVColumn secondaryColumnToSort;\r\n\r\n        /// <summary>\r\n        /// What order was used for secondary sorting?\r\n        /// </summary>\r\n        public SortOrder SecondarySortOrder {\r\n            get { return secondarySortOrder; }\r\n        }\r\n        private SortOrder secondarySortOrder;\r\n    }\r\n    \r\n    /// <summary>\r\n    /// This event is triggered when the contents of a list have changed\r\n    /// and we want the world to have a chance to filter the list.\r\n    /// </summary>\r\n    public class FilterEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a FilterEventArgs\r\n        /// </summary>\r\n        /// <param name=\"objects\"></param>\r\n        public FilterEventArgs(IEnumerable objects) {\r\n            Objects = objects;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets what objects are being filtered\r\n        /// </summary>\r\n        public IEnumerable Objects;\r\n\r\n        /// <summary>\r\n        /// Gets or sets what objects survived the filtering\r\n        /// </summary>\r\n        public IEnumerable FilteredObjects;\r\n    }\r\n\r\n    /// <summary>\r\n    /// This event is triggered after the items in the list have been changed,\r\n    /// either through SetObjects, AddObjects or RemoveObjects.\r\n    /// </summary>\r\n    public class ItemsChangedEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a ItemsChangedEventArgs\r\n        /// </summary>\r\n        public ItemsChangedEventArgs() {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Constructor for this event when used by a virtual list\r\n        /// </summary>\r\n        /// <param name=\"oldObjectCount\"></param>\r\n        /// <param name=\"newObjectCount\"></param>\r\n        public ItemsChangedEventArgs(int oldObjectCount, int newObjectCount) {\r\n            this.oldObjectCount = oldObjectCount;\r\n            this.newObjectCount = newObjectCount;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets how many items were in the list before it changed\r\n        /// </summary>\r\n        public int OldObjectCount {\r\n            get { return oldObjectCount; }\r\n        }\r\n        private int oldObjectCount;\r\n\r\n        /// <summary>\r\n        /// Gets how many objects are in the list after the change.\r\n        /// </summary>\r\n        public int NewObjectCount {\r\n            get { return newObjectCount; }\r\n        }\r\n        private int newObjectCount;\r\n    }\r\n\r\n    /// <summary>\r\n    /// This event is triggered by AddObjects before any change has been made to the list.\r\n    /// </summary>\r\n    public class ItemsAddingEventArgs : CancellableEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create an ItemsAddingEventArgs\r\n        /// </summary>\r\n        /// <param name=\"objectsToAdd\"></param>\r\n        public ItemsAddingEventArgs(ICollection objectsToAdd)\r\n        {\r\n            ObjectsToAdd = objectsToAdd;\r\n        }\r\n        \r\n        /// <summary>\r\n        /// Create an ItemsAddingEventArgs\r\n        /// </summary>\r\n        /// <param name=\"index\"></param>\r\n        /// <param name=\"objectsToAdd\"></param>\r\n        public ItemsAddingEventArgs(int index, ICollection objectsToAdd)\r\n        {\r\n            Index = index;\r\n            ObjectsToAdd = objectsToAdd;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets where the collection is going to be inserted.\r\n        /// </summary>\r\n        public int Index;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the objects to be added to the list\r\n        /// </summary>\r\n        public ICollection ObjectsToAdd;\r\n    }\r\n\r\n    /// <summary>\r\n    /// This event is triggered by SetObjects before any change has been made to the list.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// When used with a virtual list, OldObjects will always be null.\r\n    /// </remarks>\r\n    public class ItemsChangingEventArgs : CancellableEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create ItemsChangingEventArgs\r\n        /// </summary>\r\n        /// <param name=\"oldObjects\"></param>\r\n        /// <param name=\"newObjects\"></param>\r\n        public ItemsChangingEventArgs(IEnumerable oldObjects, IEnumerable newObjects) {\r\n            this.oldObjects = oldObjects;\r\n            NewObjects = newObjects;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the objects that were in the list before it change.\r\n        /// For virtual lists, this will always be null.\r\n        /// </summary>\r\n        public IEnumerable OldObjects {\r\n            get { return oldObjects; }\r\n        }\r\n        private IEnumerable oldObjects;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the objects that will be in the list after it changes.\r\n        /// </summary>\r\n        public IEnumerable NewObjects;\r\n    }\r\n\r\n    /// <summary>\r\n    /// This event is triggered by RemoveObjects before any change has been made to the list.\r\n    /// </summary>\r\n    public class ItemsRemovingEventArgs : CancellableEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create an ItemsRemovingEventArgs\r\n        /// </summary>\r\n        /// <param name=\"objectsToRemove\"></param>\r\n        public ItemsRemovingEventArgs(ICollection objectsToRemove) {\r\n            ObjectsToRemove = objectsToRemove;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the objects that will be removed\r\n        /// </summary>\r\n        public ICollection ObjectsToRemove;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Triggered after the user types into a list\r\n    /// </summary>\r\n    public class AfterSearchingEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create an AfterSearchingEventArgs\r\n        /// </summary>\r\n        /// <param name=\"stringToFind\"></param>\r\n        /// <param name=\"indexSelected\"></param>\r\n        public AfterSearchingEventArgs(string stringToFind, int indexSelected) {\r\n            this.stringToFind = stringToFind;\r\n            this.indexSelected = indexSelected;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the string that was actually searched for\r\n        /// </summary>\r\n        public string StringToFind {\r\n            get { return stringToFind; }\r\n        }\r\n        private string stringToFind;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether an the event handler already handled this event\r\n        /// </summary>\r\n        public bool Handled;\r\n\r\n        /// <summary>\r\n        /// Gets the index of the row that was selected by the search.\r\n        /// -1 means that no row was matched\r\n        /// </summary>\r\n        public int IndexSelected {\r\n            get { return indexSelected; }\r\n        }\r\n        private int indexSelected;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Triggered when the user types into a list\r\n    /// </summary>\r\n    public class BeforeSearchingEventArgs : CancellableEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create BeforeSearchingEventArgs\r\n        /// </summary>\r\n        /// <param name=\"stringToFind\"></param>\r\n        /// <param name=\"startSearchFrom\"></param>\r\n        public BeforeSearchingEventArgs(string stringToFind, int startSearchFrom) {\r\n            StringToFind = stringToFind;\r\n            StartSearchFrom = startSearchFrom;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the string that will be found by the search routine\r\n        /// </summary>\r\n        /// <remarks>Modifying this value does not modify the memory of what the user has typed. \r\n        /// When the user next presses a character, the search string will revert to what \r\n        /// the user has actually typed.</remarks>\r\n        public string StringToFind;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the index of the first row that will be considered to matching.\r\n        /// </summary>\r\n        public int StartSearchFrom;\r\n    }\r\n\r\n    /// <summary>\r\n    /// The parameter block when telling the world about a cell based event\r\n    /// </summary>\r\n    public class CellEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Gets the ObjectListView that is the source of the event\r\n        /// </summary>\r\n        public ObjectListView ListView {\r\n            get { return listView; }\r\n            internal set { listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Gets the model object under the cell\r\n        /// </summary>\r\n        /// <remarks>This is null for events triggered by the header.</remarks>\r\n        public object Model {\r\n            get { return model; }\r\n            internal set { model = value; }\r\n        }\r\n        private object model;\r\n\r\n        /// <summary>\r\n        /// Gets the row index of the cell\r\n        /// </summary>\r\n        /// <remarks>This is -1 for events triggered by the header.</remarks>\r\n        public int RowIndex {\r\n            get { return rowIndex; }\r\n            internal set { rowIndex = value; }\r\n        }\r\n        private int rowIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Gets the column index of the cell\r\n        /// </summary>\r\n        /// <remarks>This is -1 when the view is not in details view.</remarks>\r\n        public int ColumnIndex {\r\n            get { return columnIndex; }\r\n            internal set { columnIndex = value; }\r\n        }\r\n        private int columnIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Gets the column of the cell \r\n        /// </summary>\r\n        /// <remarks>This is null when the view is not in details view.</remarks>\r\n        public OLVColumn Column {\r\n            get { return column; }\r\n            internal set { column = value; }\r\n        }\r\n        private OLVColumn column;\r\n\r\n        /// <summary>\r\n        /// Gets the location of the mouse at the time of the event\r\n        /// </summary>\r\n        public Point Location {\r\n            get { return location; }\r\n            internal set { location = value; }\r\n        }\r\n        private Point location;\r\n\r\n        /// <summary>\r\n        /// Gets the state of the modifier keys at the time of the event\r\n        /// </summary>\r\n        public Keys ModifierKeys {\r\n            get { return modifierKeys; }\r\n            internal set { modifierKeys = value; }\r\n        }\r\n        private Keys modifierKeys;\r\n\r\n        /// <summary>\r\n        /// Gets the item of the cell\r\n        /// </summary>\r\n        public OLVListItem Item {\r\n            get { return item; }\r\n            internal set { item = value; }\r\n        }\r\n        private OLVListItem item;\r\n\r\n        /// <summary>\r\n        /// Gets the subitem of the cell\r\n        /// </summary>\r\n        /// <remarks>This is null when the view is not in details view and \r\n        /// for event triggered by the header</remarks>\r\n        public OLVListSubItem SubItem {\r\n            get { return subItem; }\r\n            internal set { subItem = value; }\r\n        }\r\n        private OLVListSubItem subItem;\r\n\r\n        /// <summary>\r\n        /// Gets the HitTest object that determined which cell was hit\r\n        /// </summary>\r\n        public OlvListViewHitTestInfo HitTest {\r\n            get { return hitTest; }\r\n            internal set { hitTest = value;  }\r\n        }\r\n        private OlvListViewHitTestInfo hitTest;\r\n\r\n        /// <summary>\r\n        /// Gets or set if this event completelely handled. If it was, no further processing\r\n        /// will be done for it.\r\n        /// </summary>\r\n        public bool Handled;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Tells the world that a cell was clicked\r\n    /// </summary>\r\n    public class CellClickEventArgs : CellEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the number of clicks associated with this event\r\n        /// </summary>\r\n        public int ClickCount {\r\n            get { return clickCount; }\r\n            set { clickCount = value; }\r\n        }\r\n        private int clickCount;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Tells the world that a cell was right clicked\r\n    /// </summary>\r\n    public class CellRightClickEventArgs : CellEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the menu that should be displayed as a result of this event.\r\n        /// </summary>\r\n        /// <remarks>The menu will be positioned at Location, so changing that property changes\r\n        /// where the menu will be displayed.</remarks>\r\n        public ContextMenuStrip MenuStrip;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Tell the world that the mouse is over a given cell\r\n    /// </summary>\r\n    public class CellOverEventArgs : CellEventArgs\r\n    {\r\n    }\r\n\r\n    /// <summary>\r\n    /// Tells the world that the frozen-ness of the ObjectListView has changed.\r\n    /// </summary>\r\n    public class FreezeEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Make a FreezeEventArgs\r\n        /// </summary>\r\n        /// <param name=\"freeze\"></param>\r\n        public FreezeEventArgs(int freeze) {\r\n            FreezeLevel = freeze;\r\n        }\r\n\r\n        /// <summary>\r\n        /// How frozen is the control? 0 means that the control is unfrozen, \r\n        /// more than 0 indicates froze.\r\n        /// </summary>\r\n        public int FreezeLevel {\r\n            get { return freezeLevel; }\r\n            set { freezeLevel = value; }\r\n        }\r\n        private int freezeLevel;\r\n    }\r\n\r\n    /// <summary>\r\n    /// The parameter block when telling the world that a tool tip is about to be shown.\r\n    /// </summary>\r\n    public class ToolTipShowingEventArgs : CellEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Gets the tooltip control that is triggering the tooltip event\r\n        /// </summary>\r\n        public ToolTipControl ToolTipControl {\r\n            get { return toolTipControl; }\r\n            internal set { toolTipControl = value; }\r\n        }\r\n        private ToolTipControl toolTipControl;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the text should be shown on the tooltip for this event\r\n        /// </summary>\r\n        /// <remarks>Setting this to empty or null prevents any tooltip from showing</remarks>\r\n        public string Text;\r\n\r\n        /// <summary>\r\n        /// In what direction should the text for this tooltip be drawn?\r\n        /// </summary>\r\n        public RightToLeft RightToLeft;\r\n\r\n        /// <summary>\r\n        /// Should the tooltip for this event been shown in bubble style?\r\n        /// </summary>\r\n        /// <remarks>This doesn't work reliable under Vista</remarks>\r\n        public bool? IsBalloon;\r\n\r\n        /// <summary>\r\n        /// What color should be used for the background of the tooltip\r\n        /// </summary>\r\n        /// <remarks>Setting this does nothing under Vista</remarks>\r\n        public Color? BackColor;\r\n\r\n        /// <summary>\r\n        /// What color should be used for the foreground of the tooltip\r\n        /// </summary>\r\n        /// <remarks>Setting this does nothing under Vista</remarks>\r\n        public Color? ForeColor;\r\n\r\n        /// <summary>\r\n        /// What string should be used as the title for the tooltip for this event?\r\n        /// </summary>\r\n        public string Title;\r\n\r\n        /// <summary>\r\n        /// Which standard icon should be used for the tooltip for this event\r\n        /// </summary>\r\n        public ToolTipControl.StandardIcons? StandardIcon;\r\n\r\n        /// <summary>\r\n        /// How many milliseconds should the tooltip remain before it automatically\r\n        /// disappears.\r\n        /// </summary>\r\n        public int? AutoPopDelay;\r\n\r\n        /// <summary>\r\n        /// What font should be used to draw the text of the tooltip?\r\n        /// </summary>\r\n        public Font Font;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Common information to all hyperlink events\r\n    /// </summary>\r\n    public class HyperlinkEventArgs : EventArgs\r\n    {\r\n        //TODO: Unified with CellEventArgs\r\n\r\n        /// <summary>\r\n        /// Gets the ObjectListView that is the source of the event\r\n        /// </summary>\r\n        public ObjectListView ListView {\r\n            get { return listView; }\r\n            internal set { listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Gets the model object under the cell\r\n        /// </summary>\r\n        public object Model {\r\n            get { return model; }\r\n            internal set { model = value; }\r\n        }\r\n        private object model;\r\n\r\n        /// <summary>\r\n        /// Gets the row index of the cell\r\n        /// </summary>\r\n        public int RowIndex {\r\n            get { return rowIndex; }\r\n            internal set { rowIndex = value; }\r\n        }\r\n        private int rowIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Gets the column index of the cell\r\n        /// </summary>\r\n        /// <remarks>This is -1 when the view is not in details view.</remarks>\r\n        public int ColumnIndex {\r\n            get { return columnIndex; }\r\n            internal set { columnIndex = value; }\r\n        }\r\n        private int columnIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Gets the column of the cell \r\n        /// </summary>\r\n        /// <remarks>This is null when the view is not in details view.</remarks>\r\n        public OLVColumn Column {\r\n            get { return column; }\r\n            internal set { column = value; }\r\n        }\r\n        private OLVColumn column;\r\n\r\n        /// <summary>\r\n        /// Gets the item of the cell\r\n        /// </summary>\r\n        public OLVListItem Item {\r\n            get { return item; }\r\n            internal set { item = value; }\r\n        }\r\n        private OLVListItem item;\r\n\r\n        /// <summary>\r\n        /// Gets the subitem of the cell\r\n        /// </summary>\r\n        /// <remarks>This is null when the view is not in details view</remarks>\r\n        public OLVListSubItem SubItem {\r\n            get { return subItem; }\r\n            internal set { subItem = value; }\r\n        }\r\n        private OLVListSubItem subItem;\r\n\r\n        /// <summary>\r\n        /// Gets the ObjectListView that is the source of the event\r\n        /// </summary>\r\n        public string Url {\r\n            get { return url; }\r\n            internal set { url = value; }\r\n        }\r\n        private string url;\r\n\r\n        /// <summary>\r\n        /// Gets or set if this event completelely handled. If it was, no further processing\r\n        /// will be done for it.\r\n        /// </summary>\r\n        public bool Handled\r\n        {\r\n            get { return handled; }\r\n            set { handled = value; }\r\n        }\r\n        private bool handled;\r\n        \r\n    }\r\n\r\n    /// <summary>\r\n    /// \r\n    /// </summary>\r\n    public class IsHyperlinkEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Gets the ObjectListView that is the source of the event\r\n        /// </summary>\r\n        public ObjectListView ListView {\r\n            get { return listView; }\r\n            internal set { listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Gets the model object under the cell\r\n        /// </summary>\r\n        public object Model {\r\n            get { return model; }\r\n            internal set { model = value; }\r\n        }\r\n        private object model;\r\n\r\n        /// <summary>\r\n        /// Gets the column of the cell \r\n        /// </summary>\r\n        /// <remarks>This is null when the view is not in details view.</remarks>\r\n        public OLVColumn Column {\r\n            get { return column; }\r\n            internal set { column = value; }\r\n        }\r\n        private OLVColumn column;\r\n\r\n        /// <summary>\r\n        /// Gets the text of the cell \r\n        /// </summary>\r\n        public string Text\r\n        {\r\n            get { return text; }\r\n            internal set { text = value; }\r\n        }\r\n        private string text;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not this cell is a hyperlink.\r\n        /// Defaults to true for enabled rows and false for disabled rows. \r\n        /// </summary>\r\n        public bool IsHyperlink\r\n        {\r\n            get { return isHyperlink; }\r\n            set { isHyperlink = value; }\r\n        }\r\n        private bool isHyperlink;\r\n        \r\n        /// <summary>\r\n        /// Gets or sets the url that should be invoked when this cell is clicked.\r\n        /// </summary>\r\n        /// <remarks>Setting this to None or String.Empty means that this cell is not a hyperlink</remarks>\r\n        public string Url;\r\n    }\r\n    \r\n    /// <summary>\r\n    /// </summary>\r\n    public class FormatRowEventArgs : EventArgs\r\n    {\r\n        //TODO: Unified with CellEventArgs\r\n\r\n        /// <summary>\r\n        /// Gets the ObjectListView that is the source of the event\r\n        /// </summary>\r\n        public ObjectListView ListView {\r\n            get { return listView; }\r\n            internal set { listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Gets the item of the cell\r\n        /// </summary>\r\n        public OLVListItem Item {\r\n            get { return item; }\r\n            internal set { item = value; }\r\n        }\r\n        private OLVListItem item;\r\n\r\n        /// <summary>\r\n        /// Gets the model object under the cell\r\n        /// </summary>\r\n        public object Model {\r\n            get { return Item.RowObject; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the row index of the cell\r\n        /// </summary>\r\n        public int RowIndex {\r\n            get { return rowIndex; }\r\n            internal set { rowIndex = value; }\r\n        }\r\n        private int rowIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Gets the display index of the row\r\n        /// </summary>\r\n        public int DisplayIndex {\r\n            get { return displayIndex; }\r\n            internal set { displayIndex = value; }\r\n        }   \r\n        private int displayIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Should events be triggered for each cell in this row?\r\n        /// </summary>\r\n        public bool UseCellFormatEvents\r\n        {\r\n            get { return useCellFormatEvents; }\r\n            set { useCellFormatEvents = value; }\r\n        }\r\n        private bool useCellFormatEvents;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Parameter block for FormatCellEvent\r\n    /// </summary>\r\n    public class FormatCellEventArgs : FormatRowEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Gets the column index of the cell\r\n        /// </summary>\r\n        /// <remarks>This is -1 when the view is not in details view.</remarks>\r\n        public int ColumnIndex {\r\n            get { return columnIndex; }\r\n            internal set { columnIndex = value; }\r\n        }\r\n        private int columnIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Gets the column of the cell \r\n        /// </summary>\r\n        /// <remarks>This is null when the view is not in details view.</remarks>\r\n        public OLVColumn Column {\r\n            get { return column; }\r\n            internal set { column = value; }\r\n        }\r\n        private OLVColumn column;\r\n\r\n        /// <summary>\r\n        /// Gets the subitem of the cell\r\n        /// </summary>\r\n        /// <remarks>This is null when the view is not in details view</remarks>\r\n        public OLVListSubItem SubItem {\r\n            get { return subItem; }\r\n            internal set { subItem = value; }\r\n        }\r\n        private OLVListSubItem subItem;\r\n\r\n        /// <summary>\r\n        /// Gets the model value that is being displayed by the cell.\r\n        /// </summary>\r\n        /// <remarks>This is null when the view is not in details view</remarks>\r\n        public object CellValue {\r\n            get { return SubItem == null ? null : SubItem.ModelValue; }\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// The event args when a hyperlink is clicked\r\n    /// </summary>\r\n    public class HyperlinkClickedEventArgs : CellEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Gets the url that was associated with this cell.\r\n        /// </summary>\r\n        public string Url\r\n        {\r\n            get { return url; }\r\n            set { url = value; }\r\n        }\r\n        private string url;\r\n        \r\n    }\r\n\r\n    /// <summary>\r\n    /// The event args when the check box in a column header is changing\r\n    /// </summary>\r\n    public class HeaderCheckBoxChangingEventArgs : CancelEventArgs {\r\n\r\n        /// <summary>\r\n        /// Get the column whose checkbox is changing\r\n        /// </summary>\r\n        public OLVColumn Column {\r\n            get { return column; }\r\n            internal set { column = value; }\r\n        }\r\n        private OLVColumn column;\r\n\r\n        /// <summary>\r\n        /// Get or set the new state that should be used by the column\r\n        /// </summary>\r\n        public CheckState NewCheckState {\r\n            get { return newCheckState; }\r\n            set { newCheckState = value; }\r\n        }\r\n        private CheckState newCheckState;\r\n    }\r\n\r\n    /// <summary>\r\n    /// The event args when the hot item changed\r\n    /// </summary>\r\n    public class HotItemChangedEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Gets or set if this event completelely handled. If it was, no further processing\r\n        /// will be done for it.\r\n        /// </summary>\r\n        public bool Handled\r\n        {\r\n            get { return handled; }\r\n            set { handled = value; }\r\n        }\r\n        private bool handled;\r\n            \r\n        /// <summary>\r\n        /// Gets the part of the cell that the mouse is over\r\n        /// </summary>\r\n        public HitTestLocation HotCellHitLocation {\r\n            get { return newHotCellHitLocation; }\r\n            internal set { newHotCellHitLocation = value; }\r\n        }\r\n        private HitTestLocation newHotCellHitLocation;\r\n\r\n        /// <summary>\r\n        /// Gets an extended indication of the part of item/subitem/group that the mouse is currently over\r\n        /// </summary>\r\n        public virtual HitTestLocationEx HotCellHitLocationEx\r\n        {\r\n            get { return hotCellHitLocationEx; }\r\n            internal set { hotCellHitLocationEx = value; }\r\n        }\r\n        private HitTestLocationEx hotCellHitLocationEx;\r\n\r\n        /// <summary>\r\n        /// Gets the index of the column that the mouse is over\r\n        /// </summary>\r\n        /// <remarks>In non-details view, this will always be 0.</remarks>\r\n        public int HotColumnIndex {\r\n            get { return newHotColumnIndex; }\r\n            internal set { newHotColumnIndex = value; }\r\n        }\r\n        private int newHotColumnIndex;\r\n\r\n        /// <summary>\r\n        /// Gets the index of the row that the mouse is over\r\n        /// </summary>\r\n        public int HotRowIndex {\r\n            get { return newHotRowIndex; }\r\n            internal set { newHotRowIndex = value; }\r\n        }\r\n        private int newHotRowIndex;\r\n\r\n        /// <summary>\r\n        /// Gets the group that the mouse is over\r\n        /// </summary>\r\n        public OLVGroup HotGroup\r\n        {\r\n            get { return hotGroup; }\r\n            internal set { hotGroup = value; }\r\n        }\r\n        private OLVGroup hotGroup;\r\n\r\n        /// <summary>\r\n        /// Gets the part of the cell that the mouse used to be over\r\n        /// </summary>\r\n        public HitTestLocation OldHotCellHitLocation {\r\n            get { return oldHotCellHitLocation; }\r\n            internal set { oldHotCellHitLocation = value; }\r\n        }\r\n        private HitTestLocation oldHotCellHitLocation;\r\n\r\n        /// <summary>\r\n        /// Gets an extended indication of the part of item/subitem/group that the mouse used to be over\r\n        /// </summary>\r\n        public virtual HitTestLocationEx OldHotCellHitLocationEx\r\n        {\r\n            get { return oldHotCellHitLocationEx; }\r\n            internal set { oldHotCellHitLocationEx = value; }\r\n        }\r\n        private HitTestLocationEx oldHotCellHitLocationEx;\r\n\r\n        /// <summary>\r\n        /// Gets the index of the column that the mouse used to be over\r\n        /// </summary>\r\n        public int OldHotColumnIndex {\r\n            get { return oldHotColumnIndex; }\r\n            internal set { oldHotColumnIndex = value; }\r\n        }\r\n        private int oldHotColumnIndex;\r\n\r\n        /// <summary>\r\n        /// Gets the index of the row that the mouse used to be over\r\n        /// </summary>\r\n        public int OldHotRowIndex {\r\n            get { return oldHotRowIndex; }\r\n            internal set { oldHotRowIndex = value; }\r\n        }\r\n        private int oldHotRowIndex;\r\n\r\n        /// <summary>\r\n        /// Gets the group that the mouse used to be over\r\n        /// </summary>\r\n        public OLVGroup OldHotGroup\r\n        {\r\n            get { return oldHotGroup; }\r\n            internal set { oldHotGroup = value; }\r\n        }\r\n        private OLVGroup oldHotGroup;\r\n\r\n        /// <summary>\r\n        /// Returns a string that represents the current object.\r\n        /// </summary>\r\n        /// <returns>\r\n        /// A string that represents the current object.\r\n        /// </returns>\r\n        /// <filterpriority>2</filterpriority>\r\n        public override string ToString() {\r\n            return string.Format(\"NewHotCellHitLocation: {0}, HotCellHitLocationEx: {1}, NewHotColumnIndex: {2}, NewHotRowIndex: {3}, HotGroup: {4}\", newHotCellHitLocation, hotCellHitLocationEx, newHotColumnIndex, newHotRowIndex, hotGroup);\r\n        }\r\n    }\r\n    \r\n    /// <summary>\r\n    /// Let the world know that a checkbox on a subitem is changing\r\n    /// </summary>\r\n    public class SubItemCheckingEventArgs : CancellableEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a new event block\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        /// <param name=\"currentValue\"></param>\r\n        /// <param name=\"newValue\"></param>\r\n        public SubItemCheckingEventArgs(OLVColumn column, OLVListItem item, int subItemIndex, CheckState currentValue, CheckState newValue) {\r\n            this.column = column;\r\n            listViewItem = item;\r\n            this.subItemIndex = subItemIndex;\r\n            this.currentValue = currentValue;\r\n            this.newValue = newValue;\r\n        }\r\n\r\n        /// <summary>\r\n        /// The column of the cell that is having its checkbox changed.\r\n        /// </summary>\r\n        public OLVColumn Column {\r\n            get { return column; }\r\n        }\r\n        private OLVColumn column;\r\n\r\n        /// <summary>\r\n        /// The model object of the row of the cell that is having its checkbox changed.\r\n        /// </summary>\r\n        public Object RowObject {\r\n            get { return listViewItem.RowObject; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// The listview item of the cell that is having its checkbox changed.\r\n        /// </summary>\r\n        public OLVListItem ListViewItem {\r\n            get { return listViewItem; }\r\n        }\r\n        private OLVListItem listViewItem;\r\n\r\n        /// <summary>\r\n        /// The current check state of the cell.\r\n        /// </summary>\r\n        public CheckState CurrentValue {\r\n            get { return currentValue; }\r\n        }\r\n        private CheckState currentValue;\r\n\r\n        /// <summary>\r\n        /// The proposed new check state of the cell.\r\n        /// </summary>\r\n        public CheckState NewValue {\r\n            get { return newValue; }\r\n            set { newValue = value; }\r\n        }\r\n        private CheckState newValue;\r\n\r\n        /// <summary>\r\n        /// The index of the cell that is going to be or has been edited.\r\n        /// </summary>\r\n        public int SubItemIndex {\r\n            get { return subItemIndex; }\r\n        }\r\n        private int subItemIndex;\r\n    }\r\n\r\n    /// <summary>\r\n    /// This event argument block is used when groups are created for a list.\r\n    /// </summary>\r\n    public class CreateGroupsEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a CreateGroupsEventArgs\r\n        /// </summary>\r\n        /// <param name=\"parms\"></param>\r\n        public CreateGroupsEventArgs(GroupingParameters parms) {\r\n            parameters = parms;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the settings that control the creation of groups\r\n        /// </summary>\r\n        public GroupingParameters Parameters {\r\n            get { return parameters; }\r\n        }\r\n        private GroupingParameters parameters;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the groups that should be used\r\n        /// </summary>\r\n        public IList<OLVGroup> Groups {\r\n            get { return groups; }\r\n            set { groups = value; }\r\n        }\r\n        private IList<OLVGroup> groups;\r\n\r\n        /// <summary>\r\n        /// Has this event been cancelled by the event handler?\r\n        /// </summary>\r\n        public bool Canceled\r\n        {\r\n            get { return canceled; }\r\n            set { canceled = value; }\r\n        }\r\n        private bool canceled;\r\n        \r\n    }\r\n\r\n    /// <summary>\r\n    /// This event argument block is used when the text of a group task is clicked\r\n    /// </summary>\r\n    public class GroupTaskClickedEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a GroupTaskClickedEventArgs\r\n        /// </summary>\r\n        /// <param name=\"group\"></param>\r\n        public GroupTaskClickedEventArgs(OLVGroup group)\r\n        {\r\n            this.group = group;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets which group was clicked\r\n        /// </summary>\r\n        public OLVGroup Group\r\n        {\r\n            get { return group; }\r\n        }\r\n        private readonly OLVGroup group;\r\n    }\r\n\r\n    /// <summary>\r\n    /// This event argument block is used when a group is about to expand or collapse\r\n    /// </summary>\r\n    public class GroupExpandingCollapsingEventArgs : CancellableEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a GroupExpandingCollapsingEventArgs\r\n        /// </summary>\r\n        /// <param name=\"group\"> </param>\r\n        public GroupExpandingCollapsingEventArgs(OLVGroup group) {\r\n            olvGroup = @group ?? throw new ArgumentNullException(\"group\");\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets which group is expanding/collapsing\r\n        /// </summary>\r\n        public OLVGroup Group\r\n        {\r\n            get { return olvGroup; }\r\n        }\r\n        private readonly OLVGroup olvGroup;\r\n\r\n        /// <summary>\r\n        /// Gets whether this event is going to expand the group.\r\n        /// If this is false, the group must be collapsing.\r\n        /// </summary>\r\n        public bool IsExpanding {\r\n            get { return Group.Collapsed; }\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// This event argument block is used when the state of group has changed (collapsed, selected)\r\n    /// </summary>\r\n    public class GroupStateChangedEventArgs : EventArgs {\r\n        /// <summary>\r\n        /// Create a GroupStateChangedEventArgs\r\n        /// </summary>\r\n        /// <param name=\"group\"></param>\r\n        /// <param name=\"oldState\"> </param>\r\n        /// <param name=\"newState\"> </param>\r\n        public GroupStateChangedEventArgs(OLVGroup group, GroupState oldState, GroupState newState) {\r\n            this.group = group;\r\n            this.oldState = oldState;\r\n            this.newState = newState;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether the group was collapsed by this event\r\n        /// </summary>\r\n        public bool Collapsed {\r\n            get {\r\n                return ((oldState & GroupState.LVGS_COLLAPSED) != GroupState.LVGS_COLLAPSED) &&\r\n                       ((newState & GroupState.LVGS_COLLAPSED) == GroupState.LVGS_COLLAPSED);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether the group was focused by this event\r\n        /// </summary>\r\n        public bool Focused {\r\n            get {\r\n                return ((oldState & GroupState.LVGS_FOCUSED) != GroupState.LVGS_FOCUSED) &&\r\n                       ((newState & GroupState.LVGS_FOCUSED) == GroupState.LVGS_FOCUSED);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether the group was selected by this event\r\n        /// </summary>\r\n        public bool Selected {\r\n            get {\r\n                return ((oldState & GroupState.LVGS_SELECTED) != GroupState.LVGS_SELECTED) &&\r\n                       ((newState & GroupState.LVGS_SELECTED) == GroupState.LVGS_SELECTED);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether the group was uncollapsed by this event\r\n        /// </summary>\r\n        public bool Uncollapsed {\r\n            get {\r\n                return ((oldState & GroupState.LVGS_COLLAPSED) == GroupState.LVGS_COLLAPSED) &&\r\n                       ((newState & GroupState.LVGS_COLLAPSED) != GroupState.LVGS_COLLAPSED);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether the group was unfocused by this event\r\n        /// </summary>\r\n        public bool Unfocused\r\n        {\r\n            get\r\n            {\r\n                return ((oldState & GroupState.LVGS_FOCUSED) == GroupState.LVGS_FOCUSED) &&\r\n                       ((newState & GroupState.LVGS_FOCUSED) != GroupState.LVGS_FOCUSED);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether the group was unselected by this event\r\n        /// </summary>\r\n        public bool Unselected\r\n        {\r\n            get\r\n            {\r\n                return ((oldState & GroupState.LVGS_SELECTED) == GroupState.LVGS_SELECTED) &&\r\n                       ((newState & GroupState.LVGS_SELECTED) != GroupState.LVGS_SELECTED);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets which group had its state changed\r\n        /// </summary>\r\n        public OLVGroup Group {\r\n            get { return group; }\r\n        }\r\n\r\n        private readonly OLVGroup group;\r\n\r\n        /// <summary>\r\n        /// Gets the previous state of the group\r\n        /// </summary>\r\n        public GroupState OldState {\r\n            get { return oldState; }\r\n        }\r\n\r\n        private readonly GroupState oldState;\r\n\r\n\r\n        /// <summary>\r\n        /// Gets the new state of the group\r\n        /// </summary>\r\n        public GroupState NewState {\r\n            get { return newState; }\r\n        }\r\n\r\n        private readonly GroupState newState;\r\n    }\r\n\r\n    /// <summary>\r\n    /// This event argument block is used when a branch of a tree is about to be expanded\r\n    /// </summary>\r\n    public class TreeBranchExpandingEventArgs : CancellableEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a new event args\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <param name=\"item\"></param>\r\n        public TreeBranchExpandingEventArgs(object model, OLVListItem item)\r\n        {\r\n            Model = model;\r\n            Item = item;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the model that is about to expand. If null, all branches are going to be expanded.\r\n        /// </summary>\r\n        public object Model\r\n        {\r\n            get { return model; }\r\n            private set { model = value; }\r\n        }\r\n        private object model;\r\n\r\n        /// <summary>\r\n        /// Gets the OLVListItem that is about to be expanded\r\n        /// </summary>\r\n        public OLVListItem Item\r\n        {\r\n            get { return item; }\r\n            private set { item = value; }\r\n        }\r\n        private OLVListItem item;\r\n\r\n    }\r\n\r\n    /// <summary>\r\n    /// This event argument block is used when a branch of a tree has just been expanded\r\n    /// </summary>\r\n    public class TreeBranchExpandedEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a new event args\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <param name=\"item\"></param>\r\n        public TreeBranchExpandedEventArgs(object model, OLVListItem item)\r\n        {\r\n            Model = model;\r\n            Item = item;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the model that is was expanded. If null, all branches were expanded.\r\n        /// </summary>\r\n        public object Model\r\n        {\r\n            get { return model; }\r\n            private set { model = value; }\r\n        }\r\n        private object model;\r\n\r\n        /// <summary>\r\n        /// Gets the OLVListItem that was expanded\r\n        /// </summary>\r\n        public OLVListItem Item\r\n        {\r\n            get { return item; }\r\n            private set { item = value; }\r\n        }\r\n        private OLVListItem item;\r\n\r\n    }\r\n\r\n    /// <summary>\r\n    /// This event argument block is used when a branch of a tree is about to be collapsed\r\n    /// </summary>\r\n    public class TreeBranchCollapsingEventArgs : CancellableEventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a new event args\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <param name=\"item\"></param>\r\n        public TreeBranchCollapsingEventArgs(object model, OLVListItem item)\r\n        {\r\n            Model = model;\r\n            Item = item;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the model that is about to collapse. If this is null, all models are going to collapse.\r\n        /// </summary>\r\n        public object Model\r\n        {\r\n            get { return model; }\r\n            private set { model = value; }\r\n        }\r\n        private object model;\r\n\r\n        /// <summary>\r\n        /// Gets the OLVListItem that is about to be collapsed. Can be null\r\n        /// </summary>\r\n        public OLVListItem Item\r\n        {\r\n            get { return item; }\r\n            private set { item = value; }\r\n        }\r\n        private OLVListItem item;\r\n    }\r\n\r\n\r\n    /// <summary>\r\n    /// This event argument block is used when a branch of a tree has just been collapsed\r\n    /// </summary>\r\n    public class TreeBranchCollapsedEventArgs : EventArgs\r\n    {\r\n        /// <summary>\r\n        /// Create a new event args\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <param name=\"item\"></param>\r\n        public TreeBranchCollapsedEventArgs(object model, OLVListItem item)\r\n        {\r\n            Model = model;\r\n            Item = item;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the model that is was collapsed. If null, all branches were collapsed\r\n        /// </summary>\r\n        public object Model\r\n        {\r\n            get { return model; }\r\n            private set { model = value; }\r\n        }\r\n        private object model;\r\n\r\n        /// <summary>\r\n        /// Gets the OLVListItem that was collapsed\r\n        /// </summary>\r\n        public OLVListItem Item\r\n        {\r\n            get { return item; }\r\n            private set { item = value; }\r\n        }\r\n        private OLVListItem item;\r\n\r\n    }\r\n\r\n    #endregion\r\n\r\n\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/GroupingParameters.cs",
    "content": "﻿/*\r\n * GroupingParameters - All the data that is used to create groups in an ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 31-March-2011 5:53 pm\r\n *\r\n * Change log:\r\n * 2011-03-31  JPP  - Split into its own file\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System.Collections.Generic;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// This class contains all the settings used when groups are created\r\n    /// </summary>\r\n    public class GroupingParameters {\r\n        /// <summary>\r\n        /// Create a GroupingParameters\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"groupByColumn\"></param>\r\n        /// <param name=\"groupByOrder\"></param>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"order\"></param>\r\n        /// <param name=\"secondaryColumn\"></param>\r\n        /// <param name=\"secondaryOrder\"></param>\r\n        /// <param name=\"titleFormat\"></param>\r\n        /// <param name=\"titleSingularFormat\"></param>\r\n        /// <param name=\"sortItemsByPrimaryColumn\"></param>\r\n        public GroupingParameters(ObjectListView olv, OLVColumn groupByColumn, SortOrder groupByOrder,\r\n            OLVColumn column, SortOrder order, OLVColumn secondaryColumn, SortOrder secondaryOrder,\r\n            string titleFormat, string titleSingularFormat, bool sortItemsByPrimaryColumn) {\r\n            ListView = olv;\r\n            GroupByColumn = groupByColumn;\r\n            GroupByOrder = groupByOrder;\r\n            PrimarySort = column;\r\n            PrimarySortOrder = order;\r\n            SecondarySort = secondaryColumn;\r\n            SecondarySortOrder = secondaryOrder;\r\n            SortItemsByPrimaryColumn = sortItemsByPrimaryColumn;\r\n            TitleFormat = titleFormat;\r\n            TitleSingularFormat = titleSingularFormat;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the ObjectListView being grouped\r\n        /// </summary>\r\n        public ObjectListView ListView {\r\n            get { return listView; }\r\n            set { listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the column used to create groups\r\n        /// </summary>\r\n        public OLVColumn GroupByColumn {\r\n            get { return groupByColumn; }\r\n            set { groupByColumn = value; }\r\n        }\r\n        private OLVColumn groupByColumn;\r\n\r\n        /// <summary>\r\n        /// In what order will the groups themselves be sorted?\r\n        /// </summary>\r\n        public SortOrder GroupByOrder {\r\n            get { return groupByOrder; }\r\n            set { groupByOrder = value; }\r\n        }\r\n        private SortOrder groupByOrder;\r\n\r\n        /// <summary>\r\n        /// If this is set, this comparer will be used to order the groups\r\n        /// </summary>\r\n        public IComparer<OLVGroup> GroupComparer {\r\n            get { return groupComparer; }\r\n            set { groupComparer = value; }\r\n        }\r\n        private IComparer<OLVGroup> groupComparer;\r\n\r\n        /// <summary>\r\n        /// If this is set, this comparer will be used to order items within each group\r\n        /// </summary>\r\n        public IComparer<OLVListItem> ItemComparer {\r\n            get { return itemComparer; }\r\n            set { itemComparer = value; }\r\n        }\r\n        private IComparer<OLVListItem> itemComparer;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the column that will be the primary sort\r\n        /// </summary>\r\n        public OLVColumn PrimarySort {\r\n            get { return primarySort; }\r\n            set { primarySort = value; }\r\n        }\r\n        private OLVColumn primarySort;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the ordering for the primary sort\r\n        /// </summary>\r\n        public SortOrder PrimarySortOrder {\r\n            get { return primarySortOrder; }\r\n            set { primarySortOrder = value; }\r\n        }\r\n        private SortOrder primarySortOrder;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the column used for secondary sorting\r\n        /// </summary>\r\n        public OLVColumn SecondarySort {\r\n            get { return secondarySort; }\r\n            set { secondarySort = value; }\r\n        }\r\n        private OLVColumn secondarySort;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the ordering for the secondary sort\r\n        /// </summary>\r\n        public SortOrder SecondarySortOrder {\r\n            get { return secondarySortOrder; }\r\n            set { secondarySortOrder = value; }\r\n        }\r\n        private SortOrder secondarySortOrder;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the title format used for groups with zero or more than one element\r\n        /// </summary>\r\n        public string TitleFormat {\r\n            get { return titleFormat; }\r\n            set { titleFormat = value; }\r\n        }\r\n        private string titleFormat;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the title format used for groups with only one element\r\n        /// </summary>\r\n        public string TitleSingularFormat {\r\n            get { return titleSingularFormat; }\r\n            set { titleSingularFormat = value; }\r\n        }\r\n        private string titleSingularFormat;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the items should be sorted by the primary column\r\n        /// </summary>\r\n        public bool SortItemsByPrimaryColumn {\r\n            get { return sortItemsByPrimaryColumn; }\r\n            set { sortItemsByPrimaryColumn = value; }\r\n        }\r\n        private bool sortItemsByPrimaryColumn;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/Groups.cs",
    "content": "﻿/*\r\n * Groups - Enhancements to the normal ListViewGroup\r\n *\r\n * Author: Phillip Piper\r\n * Date: 22/08/2009 6:03PM\r\n *\r\n * Change log:\r\n * v2.3\r\n * 2009-09-09   JPP  - Added Collapsed and Collapsible properties\r\n * 2009-09-01   JPP  - Cleaned up code, added more docs\r\n *                   - Works under VS2005 again\r\n * 2009-08-22   JPP  - Initial version\r\n *\r\n * To do:\r\n * - Implement subseting\r\n * - Implement footer items\r\n * \r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Reflection;\r\nusing System.Windows.Forms;\r\nusing System.Runtime.InteropServices;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// These values indicate what is the state of the group. These values\r\n    /// are taken directly from the SDK and many are not used by ObjectListView.\r\n    /// </summary>\r\n    [Flags]\r\n    public enum GroupState\r\n    {\r\n        /// <summary>\r\n        /// Normal\r\n        /// </summary>\r\n        LVGS_NORMAL = 0x0,\r\n\r\n        /// <summary>\r\n        /// Collapsed\r\n        /// </summary>\r\n        LVGS_COLLAPSED = 0x1,\r\n\r\n        /// <summary>\r\n        /// Hidden\r\n        /// </summary>\r\n        LVGS_HIDDEN = 0x2,\r\n\r\n        /// <summary>\r\n        /// NoHeader\r\n        /// </summary>\r\n        LVGS_NOHEADER = 0x4,\r\n\r\n        /// <summary>\r\n        /// Can be collapsed\r\n        /// </summary>\r\n        LVGS_COLLAPSIBLE = 0x8,\r\n\r\n        /// <summary>\r\n        /// Has focus\r\n        /// </summary>\r\n        LVGS_FOCUSED = 0x10,\r\n\r\n        /// <summary>\r\n        /// Is Selected\r\n        /// </summary>\r\n        LVGS_SELECTED = 0x20,\r\n\r\n        /// <summary>\r\n        /// Is subsetted\r\n        /// </summary>\r\n        LVGS_SUBSETED = 0x40,\r\n\r\n        /// <summary>\r\n        /// Subset link has focus\r\n        /// </summary>\r\n        LVGS_SUBSETLINKFOCUSED = 0x80,\r\n\r\n        /// <summary>\r\n        /// All styles\r\n        /// </summary>\r\n        LVGS_ALL = 0xFFFF\r\n    }\r\n\r\n    /// <summary>\r\n    /// This mask indicates which members of a LVGROUP have valid data. These values\r\n    /// are taken directly from the SDK and many are not used by ObjectListView.\r\n    /// </summary>\r\n    [Flags]\r\n    public enum GroupMask\r\n    {\r\n        /// <summary>\r\n        /// No mask\r\n        /// </summary>\r\n        LVGF_NONE = 0,\r\n\r\n        /// <summary>\r\n        /// Group has header\r\n        /// </summary>\r\n        LVGF_HEADER = 1,\r\n\r\n        /// <summary>\r\n        /// Group has footer\r\n        /// </summary>\r\n        LVGF_FOOTER = 2,\r\n\r\n        /// <summary>\r\n        /// Group has state\r\n        /// </summary>\r\n        LVGF_STATE = 4,\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVGF_ALIGN = 8,\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVGF_GROUPID = 0x10,\r\n\r\n        /// <summary>\r\n        /// pszSubtitle is valid\r\n        /// </summary>\r\n        LVGF_SUBTITLE = 0x00100,  \r\n\r\n        /// <summary>\r\n        /// pszTask is valid\r\n        /// </summary>\r\n        LVGF_TASK = 0x00200, \r\n\r\n        /// <summary>\r\n        /// pszDescriptionTop is valid\r\n        /// </summary>\r\n        LVGF_DESCRIPTIONTOP = 0x00400,  \r\n\r\n        /// <summary>\r\n        /// pszDescriptionBottom is valid\r\n        /// </summary>\r\n        LVGF_DESCRIPTIONBOTTOM = 0x00800,  \r\n\r\n        /// <summary>\r\n        /// iTitleImage is valid\r\n        /// </summary>\r\n        LVGF_TITLEIMAGE = 0x01000,  \r\n\r\n        /// <summary>\r\n        /// iExtendedImage is valid\r\n        /// </summary>\r\n        LVGF_EXTENDEDIMAGE = 0x02000,  \r\n        \r\n        /// <summary>\r\n        /// iFirstItem and cItems are valid\r\n        /// </summary>\r\n        LVGF_ITEMS = 0x04000,  \r\n        \r\n        /// <summary>\r\n        /// pszSubsetTitle is valid\r\n        /// </summary>\r\n        LVGF_SUBSET = 0x08000,  \r\n     \r\n        /// <summary>\r\n        /// readonly, cItems holds count of items in visible subset, iFirstItem is valid\r\n        /// </summary>\r\n        LVGF_SUBSETITEMS = 0x10000  \r\n    }\r\n\r\n    /// <summary>\r\n    /// This mask indicates which members of a GROUPMETRICS structure are valid\r\n    /// </summary>\r\n    [Flags]\r\n    public enum GroupMetricsMask\r\n    {\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVGMF_NONE = 0,\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVGMF_BORDERSIZE = 1,\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVGMF_BORDERCOLOR = 2,\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVGMF_TEXTCOLOR = 4\r\n    }\r\n\r\n    /// <summary>\r\n    /// Instances of this class enhance the capabilities of a normal ListViewGroup,\r\n    /// enabling the functionality that was released in v6 of the common controls.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>\r\n    /// In this implementation (2009-09), these objects are essentially passive.\r\n    /// Setting properties does not automatically change the associated group in\r\n    /// the listview. Collapsed and Collapsible are two exceptions to this and \r\n    /// give immediate results.\r\n    /// </para>\r\n    /// <para>\r\n    /// This really should be a subclass of ListViewGroup, but that class is \r\n    /// sealed (why is that?). So this class provides the same interface as a\r\n    /// ListViewGroup, plus many other new properties.\r\n    /// </para>\r\n    /// </remarks>\r\n    public class OLVGroup\r\n    {\r\n        #region Creation\r\n\r\n        /// <summary>\r\n        /// Create an OLVGroup\r\n        /// </summary>\r\n        public OLVGroup() : this(\"Default group header\") {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a group with the given title\r\n        /// </summary>\r\n        /// <param name=\"header\">Title of the group</param>\r\n        public OLVGroup(string header) {\r\n            Header = header;\r\n            Id = nextId++;\r\n            TitleImage = -1;\r\n            ExtendedImage = -1;\r\n        }\r\n        private static int nextId;\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the bottom description of the group\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Descriptions only appear when group is centered and there is a title image\r\n        /// </remarks>\r\n        public string BottomDescription {\r\n            get { return bottomDescription; }\r\n            set { bottomDescription = value; }\r\n        }\r\n        private string bottomDescription;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not this group is collapsed\r\n        /// </summary>\r\n        public bool Collapsed {\r\n            get { return GetOneState(GroupState.LVGS_COLLAPSED); }\r\n            set { SetOneState(value, GroupState.LVGS_COLLAPSED); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not this group can be collapsed\r\n        /// </summary>\r\n        public bool Collapsible {\r\n            get { return GetOneState(GroupState.LVGS_COLLAPSIBLE); }\r\n            set { SetOneState(value, GroupState.LVGS_COLLAPSIBLE); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets some representation of the contents of this group\r\n        /// </summary>\r\n        /// <remarks>This is user defined (like Tag)</remarks>\r\n        public IList Contents {\r\n            get { return contents; }\r\n            set { contents = value; }\r\n        }\r\n        private IList contents;\r\n\r\n        /// <summary>\r\n        /// Gets whether this group has been created.\r\n        /// </summary>\r\n        public bool Created {\r\n            get { return ListView != null; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the int or string that will select the extended image to be shown against the title\r\n        /// </summary>\r\n        public object ExtendedImage {\r\n            get { return extendedImage; }\r\n            set { extendedImage = value; }\r\n        }\r\n        private object extendedImage;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the footer of the group\r\n        /// </summary>\r\n        public string Footer {\r\n            get { return footer; }\r\n            set { footer = value; }\r\n        }\r\n        private string footer;\r\n\r\n        /// <summary>\r\n        /// Gets the internal id of our associated ListViewGroup.\r\n        /// </summary>\r\n        public int GroupId {\r\n            get {\r\n                if (ListViewGroup == null)\r\n                    return Id;\r\n\r\n                // Use reflection to get around the access control on the ID property\r\n                if (groupIdPropInfo == null) {\r\n                    groupIdPropInfo = typeof(ListViewGroup).GetProperty(\"ID\", \r\n                        BindingFlags.NonPublic | BindingFlags.Instance);\r\n                    System.Diagnostics.Debug.Assert(groupIdPropInfo != null);\r\n                }\r\n\r\n                return groupIdPropInfo.GetValue(ListViewGroup, null) is int groupId ? groupId : -1;\r\n            }\r\n        }\r\n        private static PropertyInfo groupIdPropInfo;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the header of the group\r\n        /// </summary>\r\n        public string Header {\r\n            get { return header; }\r\n            set { header = value; }\r\n        }\r\n        private string header;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the horizontal alignment of the group header\r\n        /// </summary>\r\n        public HorizontalAlignment HeaderAlignment {\r\n            get { return headerAlignment; }\r\n            set { headerAlignment = value; }\r\n        }\r\n        private HorizontalAlignment headerAlignment;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the internally created id of the group\r\n        /// </summary>\r\n        public int Id {\r\n            get { return id; }\r\n            set { id = value; }\r\n        }\r\n        private int id;\r\n\r\n        /// <summary>\r\n        /// Gets or sets ListViewItems that are members of this group\r\n        /// </summary>\r\n        /// <remarks>Listener of the BeforeCreatingGroups event can populate this collection.\r\n        /// It is only used on non-virtual lists.</remarks>\r\n        public IList<OLVListItem> Items {\r\n            get { return items; }\r\n            set { items = value; }\r\n        }\r\n        private IList<OLVListItem> items = new List<OLVListItem>();\r\n\r\n        /// <summary>\r\n        /// Gets or sets the key that was used to partition objects into this group\r\n        /// </summary>\r\n        /// <remarks>This is user defined (like Tag)</remarks>\r\n        public object Key {\r\n            get { return key; }\r\n            set { key = value; }\r\n        }\r\n        private object key;\r\n\r\n        /// <summary>\r\n        /// Gets the ObjectListView that this group belongs to\r\n        /// </summary>\r\n        /// <remarks>If this is null, the group has not yet been created.</remarks>\r\n        public ObjectListView ListView {\r\n            get { return listView; }\r\n            protected set { listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the name of the group\r\n        /// </summary>\r\n        /// <remarks>As of 2009-09-01, this property is not used.</remarks>\r\n        public string Name {\r\n            get { return name; }\r\n            set { name = value; }\r\n        }\r\n        private string name;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this group is focused\r\n        /// </summary>\r\n        public bool Focused\r\n        {\r\n            get { return GetOneState(GroupState.LVGS_FOCUSED); }\r\n            set { SetOneState(value, GroupState.LVGS_FOCUSED); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this group is selected\r\n        /// </summary>\r\n        public bool Selected\r\n        {\r\n            get { return GetOneState(GroupState.LVGS_SELECTED); }\r\n            set { SetOneState(value, GroupState.LVGS_SELECTED); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the text that will show that this group is subsetted\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// As of WinSDK v7.0, subsetting of group is officially unimplemented.\r\n        /// We can get around this using undocumented interfaces and may do so.\r\n        /// </remarks>\r\n        public string SubsetTitle {\r\n            get { return subsetTitle; }\r\n            set { subsetTitle = value; }\r\n        }\r\n        private string subsetTitle;\r\n\r\n        /// <summary>\r\n        /// Gets or set the subtitleof the task\r\n        /// </summary>\r\n        public string Subtitle {\r\n            get { return subtitle; }\r\n            set { subtitle = value; }\r\n        }\r\n        private string subtitle;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the value by which this group will be sorted.\r\n        /// </summary>\r\n        public IComparable SortValue {\r\n            get { return sortValue; }\r\n            set { sortValue = value; }\r\n        }\r\n        private IComparable sortValue;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the state of the group\r\n        /// </summary>\r\n        public GroupState State {\r\n            get { return state; }\r\n            set { state = value; }\r\n        }\r\n        private GroupState state;\r\n\r\n        /// <summary>\r\n        /// Gets or sets which bits of State are valid\r\n        /// </summary>\r\n        public GroupState StateMask {\r\n            get { return stateMask; }\r\n            set { stateMask = value; }\r\n        }\r\n        private GroupState stateMask;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this group is showing only a subset of its elements\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// As of WinSDK v7.0, this property officially does nothing.\r\n        /// </remarks>\r\n        public bool Subseted {\r\n            get { return GetOneState(GroupState.LVGS_SUBSETED); }\r\n            set { SetOneState(value, GroupState.LVGS_SUBSETED); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the user-defined data attached to this group\r\n        /// </summary>\r\n        public object Tag {\r\n            get { return tag; }\r\n            set { tag = value; }\r\n        }\r\n        private object tag;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the task of this group\r\n        /// </summary>\r\n        /// <remarks>This task is the clickable text that appears on the right margin\r\n        /// of the group header.</remarks>\r\n        public string Task {\r\n            get { return task; }\r\n            set { task = value; }\r\n        }\r\n        private string task;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the int or string that will select the image to be shown against the title\r\n        /// </summary>\r\n        public object TitleImage {\r\n            get { return titleImage; }\r\n            set { titleImage = value; }\r\n        }\r\n        private object titleImage;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the top description of the group\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Descriptions only appear when group is centered and there is a title image\r\n        /// </remarks>\r\n        public string TopDescription {\r\n            get { return topDescription; }\r\n            set { topDescription = value; }\r\n        }\r\n        private string topDescription;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the number of items that are within this group.\r\n        /// </summary>\r\n        /// <remarks>This should only be used for virtual groups.</remarks>\r\n        public int VirtualItemCount {\r\n            get { return virtualItemCount; }\r\n            set { virtualItemCount = value; }\r\n        }\r\n        private int virtualItemCount;\r\n\r\n        #endregion\r\n\r\n        #region Protected properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the ListViewGroup that is shadowed by this group.\r\n        /// </summary>\r\n        /// <remarks>For virtual groups, this will always be null.</remarks>\r\n        protected ListViewGroup ListViewGroup {\r\n            get { return listViewGroup; }\r\n            set { listViewGroup = value; }\r\n        }\r\n        private ListViewGroup listViewGroup;\r\n        #endregion\r\n\r\n        #region Calculations/Conversions\r\n\r\n        /// <summary>\r\n        /// Calculate the index into the group image list of the given image selector\r\n        /// </summary>\r\n        /// <param name=\"imageSelector\"></param>\r\n        /// <returns></returns>\r\n        public int GetImageIndex(object imageSelector) {\r\n            if (imageSelector == null || ListView == null || ListView.GroupImageList == null)\r\n                return -1;\r\n\r\n            if (imageSelector is Int32)\r\n                return (int)imageSelector;\r\n\r\n            if (imageSelector is string imageSelectorAsString)\r\n                return ListView.GroupImageList.Images.IndexOfKey(imageSelectorAsString);\r\n\r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Convert this object to a string representation\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        public override string ToString() {\r\n            return Header;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// Insert a native group into the underlying Windows control,\r\n        /// *without* using a ListViewGroup\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <remarks>This is used when creating virtual groups</remarks>\r\n        public void InsertGroupNewStyle(ObjectListView olv) {\r\n            ListView = olv;\r\n            NativeMethods.InsertGroup(olv, AsNativeGroup(true));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Insert a native group into the underlying control via a ListViewGroup\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        public void InsertGroupOldStyle(ObjectListView olv) {\r\n            ListView = olv;\r\n\r\n            // Create/update the associated ListViewGroup\r\n            if (ListViewGroup == null)\r\n                ListViewGroup = new ListViewGroup();\r\n            ListViewGroup.Header = Header;\r\n            ListViewGroup.HeaderAlignment = HeaderAlignment;\r\n            ListViewGroup.Name = Name;\r\n\r\n            // Remember which OLVGroup created the ListViewGroup\r\n            ListViewGroup.Tag = this; \r\n            \r\n            // Add the group to the control\r\n            olv.Groups.Add(ListViewGroup);\r\n\r\n            // Add any extra information\r\n            NativeMethods.SetGroupInfo(olv, GroupId, AsNativeGroup(false));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the members of the group to match the current contents of Items,\r\n        /// using a ListViewGroup\r\n        /// </summary>\r\n        public void SetItemsOldStyle() {\r\n            if (Items is not List<OLVListItem> list) {\r\n                foreach (OLVListItem item in Items) {\r\n                    ListViewGroup.Items.Add(item);\r\n                }\r\n            } else {\r\n                ListViewGroup.Items.AddRange(list.ToArray());\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        /// <summary>\r\n        /// Create a native LVGROUP structure that matches this group\r\n        /// </summary>\r\n        internal NativeMethods.LVGROUP2 AsNativeGroup(bool withId) {\r\n\r\n            NativeMethods.LVGROUP2 group = new NativeMethods.LVGROUP2();\r\n            group.cbSize = (uint)Marshal.SizeOf(typeof(NativeMethods.LVGROUP2));\r\n            group.mask = (uint)(GroupMask.LVGF_HEADER ^ GroupMask.LVGF_ALIGN ^ GroupMask.LVGF_STATE);\r\n            group.pszHeader = Header;\r\n            group.uAlign = (uint)HeaderAlignment;\r\n            group.stateMask = (uint)StateMask;\r\n            group.state = (uint)State;\r\n\r\n            if (withId) {\r\n                group.iGroupId = GroupId;\r\n                group.mask ^= (uint)GroupMask.LVGF_GROUPID;\r\n            }\r\n\r\n            if (!String.IsNullOrEmpty(Footer)) {\r\n                group.pszFooter = Footer;\r\n                group.mask ^= (uint)GroupMask.LVGF_FOOTER;\r\n            }\r\n\r\n            if (!String.IsNullOrEmpty(Subtitle)) {\r\n                group.pszSubtitle = Subtitle;\r\n                group.mask ^= (uint)GroupMask.LVGF_SUBTITLE;\r\n            }\r\n\r\n            if (!String.IsNullOrEmpty(Task)) {\r\n                group.pszTask = Task;\r\n                group.mask ^= (uint)GroupMask.LVGF_TASK;\r\n            }\r\n\r\n            if (!String.IsNullOrEmpty(TopDescription)) {\r\n                group.pszDescriptionTop = TopDescription;\r\n                group.mask ^= (uint)GroupMask.LVGF_DESCRIPTIONTOP;\r\n            }\r\n\r\n            if (!String.IsNullOrEmpty(BottomDescription)) {\r\n                group.pszDescriptionBottom = BottomDescription;\r\n                group.mask ^= (uint)GroupMask.LVGF_DESCRIPTIONBOTTOM;\r\n            }\r\n\r\n            int imageIndex = GetImageIndex(TitleImage);\r\n            if (imageIndex >= 0) {\r\n                group.iTitleImage = imageIndex;\r\n                group.mask ^= (uint)GroupMask.LVGF_TITLEIMAGE;\r\n            }\r\n\r\n            imageIndex = GetImageIndex(ExtendedImage);\r\n            if (imageIndex >= 0) {\r\n                group.iExtendedImage = imageIndex;\r\n                group.mask ^= (uint)GroupMask.LVGF_EXTENDEDIMAGE;\r\n            }\r\n\r\n            if (!String.IsNullOrEmpty(SubsetTitle)) {\r\n                group.pszSubsetTitle = SubsetTitle;\r\n                group.mask ^= (uint)GroupMask.LVGF_SUBSET;\r\n            }\r\n\r\n            if (VirtualItemCount > 0) {\r\n                group.cItems = VirtualItemCount;\r\n                group.mask ^= (uint)GroupMask.LVGF_ITEMS;\r\n            }\r\n\r\n            return group;\r\n        }\r\n\r\n        private bool GetOneState(GroupState mask) {\r\n            if (Created)\r\n                State = GetState();\r\n            return (State & mask) == mask;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get the current state of this group from the underlying control\r\n        /// </summary>\r\n        protected GroupState GetState() {\r\n            return NativeMethods.GetGroupState(ListView, GroupId, GroupState.LVGS_ALL);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get the current state of this group from the underlying control\r\n        /// </summary>\r\n        protected int SetState(GroupState newState, GroupState mask) {\r\n            NativeMethods.LVGROUP2 group = new NativeMethods.LVGROUP2();\r\n            group.cbSize = ((uint)Marshal.SizeOf(typeof(NativeMethods.LVGROUP2)));\r\n            group.mask = (uint)GroupMask.LVGF_STATE;\r\n            group.state = (uint)newState;\r\n            group.stateMask = (uint)mask;\r\n            return NativeMethods.SetGroupInfo(ListView, GroupId, group);\r\n        }\r\n\r\n        private void SetOneState(bool value, GroupState mask)\r\n        {\r\n            StateMask ^= mask;\r\n            if (value)\r\n                State ^= mask;\r\n            else\r\n                State &= ~mask;\r\n\r\n            if (Created)\r\n                SetState(State, mask);\r\n        }\r\n\r\n        #endregion\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/Munger.cs",
    "content": "/*\r\n * Munger - An Interface pattern on getting and setting values from object through Reflection\r\n *\r\n * Author: Phillip Piper\r\n * Date: 28/11/2008 17:15 \r\n *\r\n * Change log:\r\n * v2.5.1\r\n * 2012-05-01  JPP  - Added IgnoreMissingAspects property\r\n * v2.5\r\n * 2011-05-20  JPP  - Accessing through an indexer when the target had both a integer and\r\n *                    a string indexer didn't work reliably.\r\n * v2.4.1\r\n * 2010-08-10  JPP  - Refactored into Munger/SimpleMunger. 3x faster!\r\n * v2.3\r\n * 2009-02-15  JPP  - Made Munger a public class\r\n * 2009-01-20  JPP  - Made the Munger capable of handling indexed access.\r\n *                    Incidentally, this removed the ugliness that the last change introduced.\r\n * 2009-01-18  JPP  - Handle target objects from a DataListView (normally DataRowViews)\r\n * v2.0\r\n * 2008-11-28  JPP  Initial version\r\n *\r\n * TO DO:\r\n *\r\n * Copyright (C) 2006-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Reflection;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// An instance of Munger gets a value from or puts a value into a target object. The property\r\n    /// to be peeked (or poked) is determined from a string. The peeking or poking is done using reflection.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// Name of the aspect to be peeked can be a field, property or parameterless method. The name of an\r\n    /// aspect to poke can be a field, writable property or single parameter method.\r\n    /// <para>\r\n    /// Aspect names can be dotted to chain a series of references. \r\n    /// </para>\r\n    /// <example>Order.Customer.HomeAddress.State</example>\r\n    /// </remarks>\r\n    public class Munger\r\n    {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create a do nothing Munger\r\n        /// </summary>\r\n        public Munger()\r\n        {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a Munger that works on the given aspect name\r\n        /// </summary>\r\n        /// <param name=\"aspectName\">The name of the </param>\r\n        public Munger(String aspectName)\r\n        {\r\n            AspectName = aspectName;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Static utility methods\r\n\r\n        /// <summary>\r\n        /// A helper method to put the given value into the given aspect of the given object.\r\n        /// </summary>\r\n        /// <remarks>This method catches and silently ignores any errors that occur\r\n        /// while modifying the target object</remarks>\r\n        /// <param name=\"target\">The object to be modified</param>\r\n        /// <param name=\"propertyName\">The name of the property/field to be modified</param>\r\n        /// <param name=\"value\">The value to be assigned</param>\r\n        /// <returns>Did the modification work?</returns>\r\n        public static bool PutProperty(object target, string propertyName, object value) {\r\n            try {\r\n                Munger munger = new Munger(propertyName);\r\n                return munger.PutValue(target, value);\r\n            }\r\n            catch (MungerException) {\r\n                // Not a lot we can do about this. Something went wrong in the bowels\r\n                // of the property. Let's take the ostrich approach and just ignore it :-)\r\n\r\n                // Normally, we would never just silently ignore an exception.\r\n                // However, in this case, this is a utility method that explicitly \r\n                // contracts to catch and ignore errors. If this is not acceptible,\r\n                // the programmer should not use this method.\r\n            } \r\n\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether Mungers will silently ignore missing aspect errors.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// By default, if a Munger is asked to fetch a field/property/method\r\n        /// that does not exist from a model, it returns an error message, since that \r\n        /// condition is normally a programming error. There are some use cases where\r\n        /// this is not an error, and the munger should simply keep quiet.\r\n        /// </para>\r\n        /// <para>By default this is true during release builds.</para>\r\n        /// </remarks>\r\n        public static bool IgnoreMissingAspects {\r\n            get { return ignoreMissingAspects;  }\r\n            set { ignoreMissingAspects = value;  }\r\n        }\r\n        private static bool ignoreMissingAspects\r\n#if !DEBUG\r\n            = true\r\n#endif\r\n            ;\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// The name of the aspect that is to be peeked or poked.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This name can be a field, property or parameter-less method.\r\n        /// </para>\r\n        /// <para>\r\n        /// The name can be dotted, which chains references. If any link in the chain returns\r\n        /// null, the entire chain is considered to return null.\r\n        /// </para>\r\n        /// </remarks>\r\n        /// <example>\"DateOfBirth\"</example>\r\n        /// <example>\"Owner.HomeAddress.Postcode\"</example>\r\n        public string AspectName\r\n        {\r\n            get { return aspectName; }\r\n            set { \r\n                aspectName = value;\r\n\r\n                // Clear any cache\r\n                aspectParts = null;\r\n            }\r\n        }\r\n        private string aspectName;\r\n\r\n        #endregion\r\n\r\n\r\n        #region Public interface\r\n\r\n        /// <summary>\r\n        /// Extract the value indicated by our AspectName from the given target.\r\n        /// </summary>\r\n        /// <remarks>If the aspect name is null or empty, this will return null.</remarks>\r\n        /// <param name=\"target\">The object that will be peeked</param>\r\n        /// <returns>The value read from the target</returns>\r\n        public Object GetValue(Object target) {\r\n            if (Parts.Count == 0)\r\n                return null;\r\n\r\n            try {\r\n                return EvaluateParts(target, Parts);\r\n            } catch (MungerException ex) {\r\n                if (IgnoreMissingAspects) \r\n                    return null;\r\n                \r\n                return String.Format(\"'{0}' is not a parameter-less method, property or field of type '{1}'\",\r\n                                         ex.Munger.AspectName, ex.Target.GetType());\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Extract the value indicated by our AspectName from the given target, raising exceptions\r\n        /// if the munger fails.\r\n        /// </summary>\r\n        /// <remarks>If the aspect name is null or empty, this will return null.</remarks>\r\n        /// <param name=\"target\">The object that will be peeked</param>\r\n        /// <returns>The value read from the target</returns>\r\n        public Object GetValueEx(Object target) {\r\n            if (Parts.Count == 0)\r\n                return null;\r\n\r\n            return EvaluateParts(target, Parts);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Poke the given value into the given target indicated by our AspectName.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If the AspectName is a dotted path, all the selectors bar the last\r\n        /// are used to find the object that should be updated, and the last\r\n        /// selector is used as the property to update on that object.\r\n        /// </para>\r\n        /// <para>\r\n        /// So, if 'target' is a Person and the AspectName is \"HomeAddress.Postcode\",\r\n        /// this method will first fetch \"HomeAddress\" property, and then try to set the\r\n        /// \"Postcode\" property on the home address object.\r\n        /// </para>\r\n        /// </remarks>\r\n        /// <param name=\"target\">The object that will be poked</param>\r\n        /// <param name=\"value\">The value that will be poked into the target</param>\r\n        /// <returns>bool indicating whether the put worked</returns>\r\n        public bool PutValue(Object target, Object value)\r\n        {\r\n            if (Parts.Count == 0)\r\n                return false;\r\n\r\n            SimpleMunger lastPart = Parts[Parts.Count - 1];\r\n\r\n            if (Parts.Count > 1) {\r\n                List<SimpleMunger> parts = new List<SimpleMunger>(Parts);\r\n                parts.RemoveAt(parts.Count - 1);\r\n                try {\r\n                    target = EvaluateParts(target, parts);\r\n                } catch (MungerException ex) {\r\n                    ReportPutValueException(ex);\r\n                    return false;\r\n                }\r\n            }\r\n\r\n            if (target != null) {\r\n                try {\r\n                    return lastPart.PutValue(target, value);\r\n                } catch (MungerException ex) {\r\n                    ReportPutValueException(ex);\r\n                }\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        /// <summary>\r\n        /// Gets the list of SimpleMungers that match our AspectName\r\n        /// </summary>\r\n        private IList<SimpleMunger> Parts {\r\n            get {\r\n                if (aspectParts == null)\r\n                    aspectParts = BuildParts(AspectName);\r\n                return aspectParts;\r\n            }\r\n        }\r\n        private IList<SimpleMunger> aspectParts;\r\n\r\n        /// <summary>\r\n        /// Convert a possibly dotted AspectName into a list of SimpleMungers\r\n        /// </summary>\r\n        /// <param name=\"aspect\"></param>\r\n        /// <returns></returns>\r\n        private IList<SimpleMunger> BuildParts(string aspect) {\r\n            List<SimpleMunger> parts = new List<SimpleMunger>();\r\n            if (!String.IsNullOrEmpty(aspect)) {\r\n                foreach (string part in aspect.Split('.')) {\r\n                    parts.Add(new SimpleMunger(part.Trim()));\r\n                }\r\n            }\r\n            return parts;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Evaluate the given chain of SimpleMungers against an initial target.\r\n        /// </summary>\r\n        /// <param name=\"target\"></param>\r\n        /// <param name=\"parts\"></param>\r\n        /// <returns></returns>\r\n        private object EvaluateParts(object target, IList<SimpleMunger> parts) {\r\n            foreach (SimpleMunger part in parts) {\r\n                if (target == null)\r\n                    break;\r\n                target = part.GetValue(target);\r\n            }\r\n            return target;\r\n        }\r\n\r\n        private void ReportPutValueException(MungerException ex) {\r\n            //TODO: How should we report this error?\r\n            System.Diagnostics.Debug.WriteLine(\"PutValue failed\");\r\n            System.Diagnostics.Debug.WriteLine(String.Format(\"- Culprit aspect: {0}\", ex.Munger.AspectName));\r\n            System.Diagnostics.Debug.WriteLine(String.Format(\"- Target: {0} of type {1}\", ex.Target, ex.Target.GetType()));\r\n            System.Diagnostics.Debug.WriteLine(String.Format(\"- Inner exception: {0}\", ex.InnerException));\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// A SimpleMunger deals with a single property/field/method on its target.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// Munger uses a chain of these resolve a dotted aspect name.\r\n    /// </remarks>\r\n    public class SimpleMunger\r\n    {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create a SimpleMunger\r\n        /// </summary>\r\n        /// <param name=\"aspectName\"></param>\r\n        public SimpleMunger(String aspectName)\r\n        {\r\n            this.aspectName = aspectName;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// The name of the aspect that is to be peeked or poked.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This name can be a field, property or method. \r\n        /// When using a method to get a value, the method must be parameter-less.\r\n        /// When using a method to set a value, the method must accept 1 parameter.\r\n        /// </para>\r\n        /// <para>\r\n        /// It cannot be a dotted name.\r\n        /// </para>\r\n        /// </remarks>\r\n        public string AspectName {\r\n            get { return aspectName; }\r\n        }\r\n        private readonly string aspectName;\r\n\r\n        #endregion\r\n\r\n        #region Public interface\r\n\r\n        /// <summary>\r\n        /// Get a value from the given target\r\n        /// </summary>\r\n        /// <param name=\"target\"></param>\r\n        /// <returns></returns>\r\n        public Object GetValue(Object target) {\r\n            if (target == null)\r\n                return null;\r\n\r\n            ResolveName(target, AspectName, 0);\r\n\r\n            try {\r\n                if (resolvedPropertyInfo != null)\r\n                    return resolvedPropertyInfo.GetValue(target, null);\r\n\r\n                if (resolvedMethodInfo != null)\r\n                    return resolvedMethodInfo.Invoke(target, null);\r\n\r\n                if (resolvedFieldInfo != null)\r\n                    return resolvedFieldInfo.GetValue(target);\r\n\r\n                // If that didn't work, try to use the indexer property. \r\n                // This covers things like dictionaries and DataRows.\r\n                if (indexerPropertyInfo != null)\r\n                    return indexerPropertyInfo.GetValue(target, new object[] { AspectName });\r\n            } catch (Exception ex) {\r\n                // Lots of things can do wrong in these invocations\r\n                throw new MungerException(this, target, ex);\r\n            }\r\n\r\n            // If we get to here, we couldn't find a match for the aspect\r\n            throw new MungerException(this, target, new MissingMethodException());\r\n        }\r\n\r\n        /// <summary>\r\n        /// Poke the given value into the given target indicated by our AspectName.\r\n        /// </summary>\r\n        /// <param name=\"target\">The object that will be poked</param>\r\n        /// <param name=\"value\">The value that will be poked into the target</param>\r\n        /// <returns>bool indicating if the put worked</returns>\r\n        public bool PutValue(object target, object value) {\r\n            if (target == null)\r\n                return false;\r\n\r\n            ResolveName(target, AspectName, 1);\r\n\r\n            try {\r\n                if (resolvedPropertyInfo != null) {\r\n                    resolvedPropertyInfo.SetValue(target, value, null);\r\n                    return true;\r\n                }\r\n\r\n                if (resolvedMethodInfo != null) {\r\n                    resolvedMethodInfo.Invoke(target, new object[] { value });\r\n                    return true;\r\n                }\r\n\r\n                if (resolvedFieldInfo != null) {\r\n                    resolvedFieldInfo.SetValue(target, value);\r\n                    return true;\r\n                }\r\n\r\n                // If that didn't work, try to use the indexer property. \r\n                // This covers things like dictionaries and DataRows.\r\n                if (indexerPropertyInfo != null) {\r\n                    indexerPropertyInfo.SetValue(target, value, new object[] { AspectName });\r\n                    return true;\r\n                }\r\n            } catch (Exception ex) {\r\n                // Lots of things can do wrong in these invocations\r\n                throw new MungerException(this, target, ex);\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        private void ResolveName(object target, string name, int numberMethodParameters) {\r\n\r\n            if (cachedTargetType == target.GetType() && cachedName == name && cachedNumberParameters == numberMethodParameters)\r\n                return;\r\n\r\n            cachedTargetType = target.GetType();\r\n            cachedName = name;\r\n            cachedNumberParameters = numberMethodParameters;\r\n\r\n            resolvedFieldInfo = null;\r\n            resolvedPropertyInfo = null;\r\n            resolvedMethodInfo = null;\r\n            indexerPropertyInfo = null;\r\n\r\n            const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance /*| BindingFlags.NonPublic*/;\r\n\r\n            foreach (PropertyInfo pinfo in target.GetType().GetProperties(flags)) {\r\n                if (pinfo.Name == name) {\r\n                    resolvedPropertyInfo = pinfo;\r\n                    return;\r\n                }\r\n                \r\n                // See if we can find an string indexer property while we are here.\r\n                // We also need to allow for old style <object> keyed collections.\r\n                if (indexerPropertyInfo == null && pinfo.Name == \"Item\") {\r\n                    ParameterInfo[] par = pinfo.GetGetMethod().GetParameters();\r\n                    if (par.Length > 0) {\r\n                         Type parameterType = par[0].ParameterType;\r\n                         if (parameterType == typeof(string) || parameterType == typeof(object))\r\n                              indexerPropertyInfo = pinfo;\r\n                    }\r\n                }\r\n            }\r\n\r\n            foreach (FieldInfo info in target.GetType().GetFields(flags)) {\r\n                if (info.Name == name) {\r\n                    resolvedFieldInfo = info;\r\n                    return;\r\n                }\r\n            }\r\n\r\n            foreach (MethodInfo info in target.GetType().GetMethods(flags)) {\r\n                if (info.Name == name && info.GetParameters().Length == numberMethodParameters) {\r\n                    resolvedMethodInfo = info;\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n\r\n        private Type cachedTargetType;\r\n        private string cachedName;\r\n        private int cachedNumberParameters;\r\n\r\n        private FieldInfo resolvedFieldInfo;\r\n        private PropertyInfo resolvedPropertyInfo;\r\n        private MethodInfo resolvedMethodInfo;\r\n        private PropertyInfo indexerPropertyInfo;\r\n        \r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// These exceptions are raised when a munger finds something it cannot process\r\n    /// </summary>\r\n    public class MungerException : ApplicationException\r\n    {\r\n        /// <summary>\r\n        /// Create a MungerException\r\n        /// </summary>\r\n        /// <param name=\"munger\"></param>\r\n        /// <param name=\"target\"></param>\r\n        /// <param name=\"ex\"></param>\r\n        public MungerException(SimpleMunger munger, object target, Exception ex)\r\n            : base(\"Munger failed\", ex) {\r\n            this.munger = munger;\r\n            this.target = target;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get the munger that raised the exception\r\n        /// </summary>\r\n        public SimpleMunger Munger {\r\n            get { return munger; }\r\n        }\r\n        private readonly SimpleMunger munger;\r\n\r\n        /// <summary>\r\n        /// Gets the target that threw the exception\r\n        /// </summary>\r\n        public object Target {\r\n            get { return target; }\r\n        }\r\n        private readonly object target;\r\n    }\r\n\r\n    /*\r\n     * We don't currently need this\r\n     * 2010-08-06\r\n     * \r\n     \r\n    internal class SimpleBinder : Binder\r\n    {\r\n        public override FieldInfo BindToField(BindingFlags bindingAttr, FieldInfo[] match, object value, System.Globalization.CultureInfo culture) {\r\n            //return Type.DefaultBinder.BindToField(\r\n            throw new NotImplementedException();\r\n        }\r\n\r\n        public override object ChangeType(object value, Type type, System.Globalization.CultureInfo culture) {\r\n            throw new NotImplementedException();\r\n        }\r\n\r\n        public override MethodBase BindToMethod(BindingFlags bindingAttr, MethodBase[] match, ref object[] args, ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] names, out object state) {\r\n            throw new NotImplementedException();\r\n        }\r\n\r\n        public override void ReorderArgumentArray(ref object[] args, object state) {\r\n            throw new NotImplementedException();\r\n        }\r\n\r\n        public override MethodBase SelectMethod(BindingFlags bindingAttr, MethodBase[] match, Type[] types, ParameterModifier[] modifiers) {\r\n            throw new NotImplementedException();\r\n        }\r\n\r\n        public override PropertyInfo SelectProperty(BindingFlags bindingAttr, PropertyInfo[] match, Type returnType, Type[] indexes, ParameterModifier[] modifiers) {\r\n            if (match == null)\r\n                throw new ArgumentNullException(\"match\");\r\n\r\n            if (match.Length == 0)\r\n                return null;\r\n\r\n            return match[0];\r\n        }\r\n    }\r\n     */\r\n\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/NativeMethods.cs",
    "content": "/*\r\n * NativeMethods - All the Windows SDK structures and imports\r\n *\r\n * Author: Phillip Piper\r\n * Date: 10/10/2006\r\n *\r\n * Change log:\r\n * v2.8.0\r\n * 2014-05-21   JPP  - Added DeselectOneItem\r\n *                   - Added new imagelist drawing\r\n * v2.3\r\n * 2006-10-10   JPP  - Initial version\r\n *\r\n * To do:\r\n * \r\n * Copyright (C) 2006-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Drawing;\r\nusing System.Runtime.InteropServices;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// Wrapper for all native method calls on ListView controls\r\n    /// </summary>\r\n    internal static class NativeMethods\r\n    {\r\n        #region Constants\r\n\r\n        private const int LVM_FIRST = 0x1000;\r\n        private const int LVM_GETCOLUMN = LVM_FIRST + 95;\r\n        private const int LVM_GETCOUNTPERPAGE = LVM_FIRST + 40;\r\n        private const int LVM_GETGROUPINFO = LVM_FIRST + 149;\r\n        private const int LVM_GETGROUPSTATE = LVM_FIRST + 92;\r\n        private const int LVM_GETHEADER = LVM_FIRST + 31;\r\n        private const int LVM_GETTOOLTIPS = LVM_FIRST + 78;\r\n        private const int LVM_GETTOPINDEX = LVM_FIRST + 39;\r\n        private const int LVM_HITTEST = LVM_FIRST + 18;\r\n        private const int LVM_INSERTGROUP = LVM_FIRST + 145;\r\n        private const int LVM_REMOVEALLGROUPS = LVM_FIRST + 160;\r\n        private const int LVM_SCROLL = LVM_FIRST + 20;\r\n        private const int LVM_SETBKIMAGE = LVM_FIRST + 0x8A;\r\n        private const int LVM_SETCOLUMN = LVM_FIRST + 96;\r\n        private const int LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;\r\n        private const int LVM_SETGROUPINFO = LVM_FIRST + 147;\r\n        private const int LVM_SETGROUPMETRICS = LVM_FIRST + 155;\r\n        private const int LVM_SETIMAGELIST = LVM_FIRST + 3;\r\n        private const int LVM_SETITEM = LVM_FIRST + 76;\r\n        private const int LVM_SETITEMCOUNT = LVM_FIRST + 47;\r\n        private const int LVM_SETITEMSTATE = LVM_FIRST + 43;\r\n        private const int LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140;\r\n        private const int LVM_SETTOOLTIPS = LVM_FIRST + 74;\r\n        private const int LVM_SUBITEMHITTEST = LVM_FIRST + 57;\r\n        private const int LVS_EX_SUBITEMIMAGES = 0x0002;\r\n\r\n        private const int LVIF_TEXT = 0x0001;\r\n        private const int LVIF_IMAGE = 0x0002;\r\n        private const int LVIF_PARAM = 0x0004;\r\n        private const int LVIF_STATE = 0x0008;\r\n        private const int LVIF_INDENT = 0x0010;\r\n        private const int LVIF_NORECOMPUTE = 0x0800;\r\n\r\n        private const int LVIS_SELECTED = 2;\r\n\r\n        private const int LVCF_FMT = 0x0001;\r\n        private const int LVCF_WIDTH = 0x0002;\r\n        private const int LVCF_TEXT = 0x0004;\r\n        private const int LVCF_SUBITEM = 0x0008;\r\n        private const int LVCF_IMAGE = 0x0010;\r\n        private const int LVCF_ORDER = 0x0020;\r\n        private const int LVCFMT_LEFT = 0x0000;\r\n        private const int LVCFMT_RIGHT = 0x0001;\r\n        private const int LVCFMT_CENTER = 0x0002;\r\n        private const int LVCFMT_JUSTIFYMASK = 0x0003;\r\n\r\n        private const int LVCFMT_IMAGE = 0x0800;\r\n        private const int LVCFMT_BITMAP_ON_RIGHT = 0x1000;\r\n        private const int LVCFMT_COL_HAS_IMAGES = 0x8000;\r\n\r\n        private const int LVBKIF_SOURCE_NONE = 0x0;\r\n        private const int LVBKIF_SOURCE_HBITMAP = 0x1;\r\n        private const int LVBKIF_SOURCE_URL = 0x2;\r\n        private const int LVBKIF_SOURCE_MASK = 0x3;\r\n        private const int LVBKIF_STYLE_NORMAL = 0x0;\r\n        private const int LVBKIF_STYLE_TILE = 0x10;\r\n        private const int LVBKIF_STYLE_MASK = 0x10;\r\n        private const int LVBKIF_FLAG_TILEOFFSET = 0x100;\r\n        private const int LVBKIF_TYPE_WATERMARK = 0x10000000;\r\n        private const int LVBKIF_FLAG_ALPHABLEND = 0x20000000;\r\n\r\n        private const int LVSICF_NOINVALIDATEALL = 1;\r\n        private const int LVSICF_NOSCROLL = 2;\r\n\r\n        private const int HDM_FIRST = 0x1200;\r\n        private const int HDM_HITTEST = HDM_FIRST + 6;\r\n        private const int HDM_GETITEMRECT = HDM_FIRST + 7;\r\n        private const int HDM_GETITEM = HDM_FIRST + 11;\r\n        private const int HDM_SETITEM = HDM_FIRST + 12;\r\n\r\n        private const int HDI_WIDTH = 0x0001;\r\n        private const int HDI_TEXT = 0x0002;\r\n        private const int HDI_FORMAT = 0x0004;\r\n        private const int HDI_BITMAP = 0x0010;\r\n        private const int HDI_IMAGE = 0x0020;\r\n\r\n        private const int HDF_LEFT = 0x0000;\r\n        private const int HDF_RIGHT = 0x0001;\r\n        private const int HDF_CENTER = 0x0002;\r\n        private const int HDF_JUSTIFYMASK = 0x0003;\r\n        private const int HDF_RTLREADING = 0x0004;\r\n        private const int HDF_STRING = 0x4000;\r\n        private const int HDF_BITMAP = 0x2000;\r\n        private const int HDF_BITMAP_ON_RIGHT = 0x1000;\r\n        private const int HDF_IMAGE = 0x0800;\r\n        private const int HDF_SORTUP = 0x0400;\r\n        private const int HDF_SORTDOWN = 0x0200;\r\n\r\n        private const int SB_HORZ = 0;\r\n        private const int SB_VERT = 1;\r\n        private const int SB_CTL = 2;\r\n        private const int SB_BOTH = 3;\r\n\r\n        private const int SIF_RANGE = 0x0001;\r\n        private const int SIF_PAGE = 0x0002;\r\n        private const int SIF_POS = 0x0004;\r\n        private const int SIF_DISABLENOSCROLL = 0x0008;\r\n        private const int SIF_TRACKPOS = 0x0010;\r\n        private const int SIF_ALL = (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS);\r\n\r\n        private const int ILD_NORMAL = 0x0;\r\n        private const int ILD_TRANSPARENT = 0x1;\r\n        private const int ILD_MASK = 0x10;\r\n        private const int ILD_IMAGE = 0x20;\r\n        private const int ILD_BLEND25 = 0x2;\r\n        private const int ILD_BLEND50 = 0x4;\r\n\r\n        const int SWP_NOSIZE = 1;\r\n        const int SWP_NOMOVE = 2;\r\n        const int SWP_NOZORDER = 4;\r\n        const int SWP_NOREDRAW = 8;\r\n        const int SWP_NOACTIVATE = 16;\r\n        public const int SWP_FRAMECHANGED = 32;\r\n\r\n        const int SWP_ZORDERONLY = SWP_NOSIZE | SWP_NOMOVE | SWP_NOREDRAW | SWP_NOACTIVATE;\r\n        const int SWP_SIZEONLY = SWP_NOMOVE | SWP_NOREDRAW | SWP_NOZORDER | SWP_NOACTIVATE;\r\n        const int SWP_UPDATE_FRAME = SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER | SWP_FRAMECHANGED;\r\n\r\n        #endregion\r\n\r\n        #region Structures\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct HDITEM\r\n        {\r\n            public int mask;\r\n            public int cxy;\r\n            public IntPtr pszText;\r\n            public IntPtr hbm;\r\n            public int cchTextMax;\r\n            public int fmt;\r\n            public IntPtr lParam;\r\n            public int iImage;\r\n            public int iOrder;\r\n            //if (_WIN32_IE >= 0x0500)\r\n            public int type;\r\n            public IntPtr pvFilter;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public class HDHITTESTINFO\r\n        {\r\n            public int pt_x;\r\n            public int pt_y;\r\n            public int flags;\r\n            public int iItem;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public class HDLAYOUT\r\n        {\r\n            public IntPtr prc;\r\n            public IntPtr pwpos;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct IMAGELISTDRAWPARAMS\r\n        {\r\n            public int cbSize;\r\n            public IntPtr himl;\r\n            public int i;\r\n            public IntPtr hdcDst;\r\n            public int x;\r\n            public int y;\r\n            public int cx;\r\n            public int cy;\r\n            public int xBitmap;\r\n            public int yBitmap;\r\n            public uint rgbBk;\r\n            public uint rgbFg;\r\n            public uint fStyle;\r\n            public uint dwRop;\r\n            public uint fState;\r\n            public uint Frame;\r\n            public uint crEffect;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]\r\n        public struct LVBKIMAGE\r\n        {\r\n            public int ulFlags;\r\n            public IntPtr hBmp;\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string pszImage;\r\n            public int cchImageMax;\r\n            public int xOffset;\r\n            public int yOffset;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]\r\n        public struct LVCOLUMN\r\n        {\r\n            public int mask;\r\n            public int fmt;\r\n            public int cx;\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string pszText;\r\n            public int cchTextMax;\r\n            public int iSubItem;\r\n            // These are available in Common Controls >= 0x0300\r\n            public int iImage;\r\n            public int iOrder;\r\n        };\r\n\r\n        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]\r\n        public struct LVFINDINFO\r\n        {\r\n            public int flags;\r\n            public string psz;\r\n            public IntPtr lParam;\r\n            public int ptX;\r\n            public int ptY;\r\n            public int vkDirection;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct LVGROUP\r\n        {\r\n            public uint cbSize;\r\n            public uint mask;\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string pszHeader;\r\n            public int cchHeader;\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string pszFooter;\r\n            public int cchFooter;\r\n            public int iGroupId;\r\n            public uint stateMask;\r\n            public uint state;\r\n            public uint uAlign;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct LVGROUP2\r\n        {\r\n            public uint cbSize;\r\n            public uint mask;\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string pszHeader;\r\n            public uint cchHeader;\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string pszFooter;\r\n            public int cchFooter;\r\n            public int iGroupId;\r\n            public uint stateMask;\r\n            public uint state;\r\n            public uint uAlign;\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string pszSubtitle;\r\n            public uint cchSubtitle;\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string pszTask;\r\n            public uint cchTask;\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string pszDescriptionTop;\r\n            public uint cchDescriptionTop;\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string pszDescriptionBottom;\r\n            public uint cchDescriptionBottom;\r\n            public int iTitleImage;\r\n            public int iExtendedImage;\r\n            public int iFirstItem;         // Read only\r\n            public int cItems;             // Read only\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string pszSubsetTitle;     // NULL if group is not subset\r\n            public uint cchSubsetTitle;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct LVGROUPMETRICS\r\n        {\r\n            public uint cbSize;\r\n            public uint mask;\r\n            public uint Left;\r\n            public uint Top;\r\n            public uint Right;\r\n            public uint Bottom;\r\n            public int crLeft;\r\n            public int crTop;\r\n            public int crRight;\r\n            public int crBottom;\r\n            public int crHeader;\r\n            public int crFooter;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]\r\n        public struct LVHITTESTINFO\r\n        {\r\n            public int pt_x;\r\n            public int pt_y;\r\n            public int flags;\r\n            public int iItem;\r\n            public int iSubItem;\r\n            public int iGroup;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]\r\n        public struct LVITEM\r\n        {\r\n            public int mask;\r\n            public int iItem;\r\n            public int iSubItem;\r\n            public int state;\r\n            public int stateMask;\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string pszText;\r\n            public int cchTextMax;\r\n            public int iImage;\r\n            public IntPtr lParam;\r\n            // These are available in Common Controls >= 0x0300\r\n            public int iIndent;\r\n            // These are available in Common Controls >= 0x056\r\n            public int iGroupId;\r\n            public int cColumns;\r\n            public IntPtr puColumns;\r\n        };\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct NMHDR\r\n        {\r\n            public IntPtr hwndFrom;\r\n            public IntPtr idFrom;\r\n            public int code;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct NMCUSTOMDRAW\r\n        {\r\n            public NMHDR nmcd;\r\n            public int dwDrawStage;\r\n            public IntPtr hdc;\r\n            public RECT rc;\r\n            public IntPtr dwItemSpec;\r\n            public int uItemState;\r\n            public IntPtr lItemlParam;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct NMHEADER\r\n        {\r\n            public NMHDR nhdr;\r\n            public int iItem;\r\n            public int iButton;\r\n            public IntPtr pHDITEM;\r\n        }\r\n\r\n        const int MAX_LINKID_TEXT = 48;\r\n        const int L_MAX_URL_LENGTH = 2048 + 32 + 4;\r\n        //#define L_MAX_URL_LENGTH    (2048 + 32 + sizeof(\"://\"))\r\n\r\n        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]\r\n        public struct LITEM\r\n        {\r\n            public uint mask;\r\n            public int iLink;\r\n            public uint state;\r\n            public uint stateMask;\r\n            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_LINKID_TEXT)]\r\n            public string szID;\r\n            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = L_MAX_URL_LENGTH)]\r\n            public string szUrl;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct NMLISTVIEW\r\n        {\r\n            public NMHDR hdr;\r\n            public int iItem;\r\n            public int iSubItem;\r\n            public int uNewState;\r\n            public int uOldState;\r\n            public int uChanged;\r\n            public IntPtr lParam;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct NMLVCUSTOMDRAW\r\n        {\r\n            public NMCUSTOMDRAW nmcd;\r\n            public int clrText;\r\n            public int clrTextBk;\r\n            public int iSubItem;\r\n            public int dwItemType;\r\n            public int clrFace;\r\n            public int iIconEffect;\r\n            public int iIconPhase;\r\n            public int iPartId;\r\n            public int iStateId;\r\n            public RECT rcText;\r\n            public uint uAlign;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct NMLVFINDITEM\r\n        {\r\n            public NMHDR hdr;\r\n            public int iStart;\r\n            public LVFINDINFO lvfi;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct NMLVGETINFOTIP\r\n        {\r\n            public NMHDR hdr;\r\n            public int dwFlags;\r\n            public string pszText;\r\n            public int cchTextMax;\r\n            public int iItem;\r\n            public int iSubItem;\r\n            public IntPtr lParam;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct NMLVGROUP\r\n        {\r\n            public NMHDR hdr;\r\n            public int iGroupId; // which group is changing\r\n            public uint uNewState; // LVGS_xxx flags\r\n            public uint uOldState;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct NMLVLINK\r\n        {\r\n            public NMHDR hdr;\r\n            public LITEM link;\r\n            public int iItem;\r\n            public int iSubItem;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct NMLVSCROLL\r\n        {\r\n            public NMHDR hdr;\r\n            public int dx;\r\n            public int dy;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]\r\n        public struct NMTTDISPINFO\r\n        {\r\n            public NMHDR hdr;\r\n            [MarshalAs(UnmanagedType.LPTStr)]\r\n            public string lpszText;\r\n            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]\r\n            public string szText;\r\n            public IntPtr hinst;\r\n            public int uFlags;\r\n            public IntPtr lParam;\r\n            //public int hbmp; This is documented but doesn't work\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct RECT\r\n        {\r\n            public int left;\r\n            public int top;\r\n            public int right;\r\n            public int bottom;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public class SCROLLINFO\r\n        {\r\n            public int cbSize = Marshal.SizeOf(typeof(SCROLLINFO));\r\n            public int fMask;\r\n            public int nMin;\r\n            public int nMax;\r\n            public int nPage;\r\n            public int nPos;\r\n            public int nTrackPos;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]\r\n        public class TOOLINFO\r\n        {\r\n            public int cbSize = Marshal.SizeOf(typeof(TOOLINFO));\r\n            public int uFlags;\r\n            public IntPtr hwnd;\r\n            public IntPtr uId;\r\n            public RECT rect;\r\n            public IntPtr hinst = IntPtr.Zero;\r\n            public IntPtr lpszText;\r\n            public IntPtr lParam = IntPtr.Zero;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct WINDOWPOS\r\n        {\r\n            public IntPtr hwnd;\r\n            public IntPtr hwndInsertAfter;\r\n            public int x;\r\n            public int y;\r\n            public int cx;\r\n            public int cy;\r\n            public int flags;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Entry points\r\n\r\n        // Various flavours of SendMessage: plain vanilla, and passing references to various structures\r\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto, SetLastError = true)]\r\n        public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);\r\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, int lParam);\r\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, IntPtr lParam);\r\n        [DllImport(\"user32.dll\", EntryPoint = \"SendMessage\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessageLVItem(IntPtr hWnd, int msg, int wParam, ref LVITEM lvi);\r\n        [DllImport(\"user32.dll\", EntryPoint = \"SendMessage\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, ref LVHITTESTINFO ht);\r\n        [DllImport(\"user32.dll\", EntryPoint = \"SendMessage\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessageRECT(IntPtr hWnd, int msg, int wParam, ref RECT r);\r\n        //[DllImport(\"user32.dll\", EntryPoint = \"SendMessage\", CharSet = CharSet.Auto)]\r\n        //private static extern IntPtr SendMessageLVColumn(IntPtr hWnd, int m, int wParam, ref LVCOLUMN lvc);\r\n        [DllImport(\"user32.dll\", EntryPoint = \"SendMessage\", CharSet = CharSet.Auto)]\r\n        private static extern IntPtr SendMessageHDItem(IntPtr hWnd, int msg, int wParam, ref HDITEM hdi);\r\n        [DllImport(\"user32.dll\", EntryPoint = \"SendMessage\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessageHDHITTESTINFO(IntPtr hWnd, int Msg, IntPtr wParam, [In, Out] HDHITTESTINFO lParam);\r\n        [DllImport(\"user32.dll\", EntryPoint = \"SendMessage\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessageTOOLINFO(IntPtr hWnd, int Msg, int wParam, TOOLINFO lParam);\r\n        [DllImport(\"user32.dll\", EntryPoint = \"SendMessage\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessageLVBKIMAGE(IntPtr hWnd, int Msg, int wParam, ref LVBKIMAGE lParam);\r\n        [DllImport(\"user32.dll\", EntryPoint = \"SendMessage\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessageString(IntPtr hWnd, int Msg, int wParam, string lParam);\r\n        [DllImport(\"user32.dll\", EntryPoint = \"SendMessage\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessageIUnknown(IntPtr hWnd, int msg, [MarshalAs(UnmanagedType.IUnknown)] object wParam, int lParam);\r\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, ref LVGROUP lParam);\r\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, ref LVGROUP2 lParam);\r\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, ref LVGROUPMETRICS lParam);\r\n\r\n        [DllImport(\"gdi32.dll\")]\r\n        public static extern bool DeleteObject(IntPtr objectHandle);\r\n\r\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto, ExactSpelling = true)]\r\n        public static extern bool GetClientRect(IntPtr hWnd, ref Rectangle r);\r\n\r\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto, ExactSpelling = true)]\r\n        public static extern bool GetScrollInfo(IntPtr hWnd, int fnBar, SCROLLINFO scrollInfo);\r\n\r\n        [DllImport(\"user32.dll\", EntryPoint = \"GetUpdateRect\", CharSet = CharSet.Auto)]\r\n        private static extern bool GetUpdateRectInternal(IntPtr hWnd, ref Rectangle r, bool eraseBackground);\r\n\r\n        [DllImport(\"comctl32.dll\", CharSet = CharSet.Auto)]\r\n        private static extern bool ImageList_Draw(IntPtr himl, int i, IntPtr hdcDst, int x, int y, int fStyle);\r\n\r\n        [DllImport(\"comctl32.dll\", CharSet = CharSet.Auto)]\r\n        private static extern bool ImageList_DrawIndirect(ref IMAGELISTDRAWPARAMS parms);\r\n\r\n        [DllImport(\"user32.dll\")]\r\n        public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);\r\n\r\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto)]\r\n        public static extern bool GetWindowRect(IntPtr hWnd, ref Rectangle r);\r\n\r\n        [DllImport(\"user32.dll\", EntryPoint = \"GetWindowLong\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr GetWindowLong32(IntPtr hWnd, int nIndex);\r\n\r\n        [DllImport(\"user32.dll\", EntryPoint = \"GetWindowLongPtr\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr GetWindowLongPtr64(IntPtr hWnd, int nIndex);\r\n\r\n        [DllImport(\"user32.dll\", EntryPoint = \"SetWindowLong\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SetWindowLongPtr32(IntPtr hWnd, int nIndex, int dwNewLong);\r\n\r\n        [DllImport(\"user32.dll\", EntryPoint = \"SetWindowLongPtr\", CharSet = CharSet.Auto)]\r\n        public static extern IntPtr SetWindowLongPtr64(IntPtr hWnd, int nIndex, int dwNewLong);\r\n\r\n        [DllImport(\"user32.dll\")]\r\n        public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);\r\n\r\n        [DllImport(\"user32.dll\", EntryPoint = \"ValidateRect\", CharSet = CharSet.Auto)]\r\n        private static extern IntPtr ValidatedRectInternal(IntPtr hWnd, ref Rectangle r);\r\n\r\n        #endregion\r\n\r\n        //[DllImport(\"user32.dll\", EntryPoint = \"LockWindowUpdate\", CharSet = CharSet.Auto)]\r\n        //private static extern int LockWindowUpdateInternal(IntPtr hWnd);\r\n\r\n        //public static void LockWindowUpdate(IWin32Window window) {\r\n        //    if (window == null)\r\n        //        NativeMethods.LockWindowUpdateInternal(IntPtr.Zero);\r\n        //    else\r\n        //        NativeMethods.LockWindowUpdateInternal(window.Handle);\r\n        //}\r\n\r\n        /// <summary>\r\n        /// Put an image under the ListView.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// The ListView must have its handle created before calling this.\r\n        /// </para>\r\n        /// <para>\r\n        /// This doesn't work very well. Specifically, it doesn't play well with owner drawn, \r\n        /// and grid lines are drawn over it.\r\n        /// </para>\r\n        /// </remarks>\r\n        /// <param name=\"lv\"></param>\r\n        /// <param name=\"image\">The image to be used as the background. If this is null, any existing background image will be cleared.</param>\r\n        /// <param name=\"isWatermark\">If this is true, the image is pinned to the bottom right and does not scroll. The other parameters are ignored</param>\r\n        /// <param name=\"isTiled\">If this is true, the image will be tiled to fill the whole control background. The offset parameters will be ignored.</param>\r\n        /// <param name=\"xOffset\">If both watermark and tiled are false, this indicates the horizontal percentage where the image will be placed. 0 is absolute left, 100 is absolute right.</param>\r\n        /// <param name=\"yOffset\">If both watermark and tiled are false, this indicates the vertical percentage where the image will be placed.</param>\r\n        /// <returns></returns>\r\n        public static bool SetBackgroundImage(ListView lv, Image image, bool isWatermark, bool isTiled, int xOffset, int yOffset) {\r\n\r\n            LVBKIMAGE lvbkimage = new LVBKIMAGE();\r\n\r\n            // We have to clear any pre-existing background image, otherwise the attempt to set the image will fail.\r\n            // We don't know which type may already have been set, so we just clear both the watermark and the image.\r\n            lvbkimage.ulFlags = LVBKIF_TYPE_WATERMARK;\r\n            IntPtr result = SendMessageLVBKIMAGE(lv.Handle, LVM_SETBKIMAGE, 0, ref lvbkimage);\r\n            lvbkimage.ulFlags = LVBKIF_SOURCE_HBITMAP;\r\n            result = SendMessageLVBKIMAGE(lv.Handle, LVM_SETBKIMAGE, 0, ref lvbkimage);\r\n\r\n            if (image is Bitmap bm) {\r\n                lvbkimage.hBmp = bm.GetHbitmap();\r\n                lvbkimage.ulFlags = isWatermark ? LVBKIF_TYPE_WATERMARK : (isTiled ? LVBKIF_SOURCE_HBITMAP | LVBKIF_STYLE_TILE : LVBKIF_SOURCE_HBITMAP);\r\n                lvbkimage.xOffset = xOffset;\r\n                lvbkimage.yOffset = yOffset;\r\n                result = SendMessageLVBKIMAGE(lv.Handle, LVM_SETBKIMAGE, 0, ref lvbkimage);\r\n            }\r\n\r\n            return (result != IntPtr.Zero);\r\n        }\r\n\r\n        public static bool DrawImageList(Graphics g, ImageList il, int index, int x, int y, bool isSelected, bool isDisabled) {\r\n            ImageListDrawItemConstants flags = (isSelected ? ImageListDrawItemConstants.ILD_SELECTED : ImageListDrawItemConstants.ILD_NORMAL) | ImageListDrawItemConstants.ILD_TRANSPARENT;\r\n            ImageListDrawStateConstants state = isDisabled ? ImageListDrawStateConstants.ILS_SATURATE : ImageListDrawStateConstants.ILS_NORMAL;\r\n            try {\r\n                IntPtr hdc = g.GetHdc();\r\n                return DrawImage(il, hdc, index, x, y, flags, 0, 0, state);\r\n            }\r\n            finally {\r\n                g.ReleaseHdc();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Flags controlling how the Image List item is \r\n        /// drawn\r\n        /// </summary>\r\n        [Flags]\r\n        public enum ImageListDrawItemConstants \r\n        {\r\n            /// <summary>\r\n            /// Draw item normally.\r\n            /// </summary>\r\n            ILD_NORMAL = 0x0,\r\n            /// <summary>\r\n            /// Draw item transparently.\r\n            /// </summary>\r\n            ILD_TRANSPARENT = 0x1,\r\n            /// <summary>\r\n            /// Draw item blended with 25% of the specified foreground colour\r\n            /// or the Highlight colour if no foreground colour specified.\r\n            /// </summary>\r\n            ILD_BLEND25 = 0x2,\r\n            /// <summary>\r\n            /// Draw item blended with 50% of the specified foreground colour\r\n            /// or the Highlight colour if no foreground colour specified.\r\n            /// </summary>\r\n            ILD_SELECTED = 0x4,\r\n            /// <summary>\r\n            /// Draw the icon's mask\r\n            /// </summary>\r\n            ILD_MASK = 0x10,\r\n            /// <summary>\r\n            /// Draw the icon image without using the mask\r\n            /// </summary>\r\n            ILD_IMAGE = 0x20,\r\n            /// <summary>\r\n            /// Draw the icon using the ROP specified.\r\n            /// </summary>\r\n            ILD_ROP = 0x40,\r\n            /// <summary>\r\n            /// Preserves the alpha channel in dest. XP only.\r\n            /// </summary>\r\n            ILD_PRESERVEALPHA = 0x1000,\r\n            /// <summary>\r\n            /// Scale the image to cx, cy instead of clipping it. XP only.\r\n            /// </summary>\r\n            ILD_SCALE = 0x2000,\r\n            /// <summary>\r\n            /// Scale the image to the current DPI of the display. XP only.\r\n            /// </summary>\r\n            ILD_DPISCALE = 0x4000\r\n        }\r\n\r\n        /// <summary>\r\n        /// Enumeration containing XP ImageList Draw State options\r\n        /// </summary>\r\n        [Flags]\r\n        public enum ImageListDrawStateConstants \r\n        {\r\n            /// <summary>\r\n            /// The image state is not modified. \r\n            /// </summary>\r\n            ILS_NORMAL = (0x00000000),\r\n            /// <summary>\r\n            /// Adds a glow effect to the icon, which causes the icon to appear to glow \r\n            /// with a given color around the edges. (Note: does not appear to be implemented)\r\n            /// </summary>\r\n            ILS_GLOW = (0x00000001), //The color for the glow effect is passed to the IImageList::Draw method in the crEffect member of IMAGELISTDRAWPARAMS. \r\n            /// <summary>\r\n            /// Adds a drop shadow effect to the icon. (Note: does not appear to be implemented)\r\n            /// </summary>\r\n            ILS_SHADOW = (0x00000002), //The color for the drop shadow effect is passed to the IImageList::Draw method in the crEffect member of IMAGELISTDRAWPARAMS. \r\n            /// <summary>\r\n            /// Saturates the icon by increasing each color component \r\n            /// of the RGB triplet for each pixel in the icon. (Note: only ever appears to result in a completely unsaturated icon)\r\n            /// </summary>\r\n            ILS_SATURATE = (0x00000004), // The amount to increase is indicated by the frame member in the IMAGELISTDRAWPARAMS method. \r\n            /// <summary>\r\n            /// Alpha blends the icon. Alpha blending controls the transparency \r\n            /// level of an icon, according to the value of its alpha channel. \r\n            /// (Note: does not appear to be implemented).\r\n            /// </summary>\r\n            ILS_ALPHA = (0x00000008) //The value of the alpha channel is indicated by the frame member in the IMAGELISTDRAWPARAMS method. The alpha channel can be from 0 to 255, with 0 being completely transparent, and 255 being completely opaque. \r\n        }\r\n\r\n        private const uint CLR_DEFAULT = 0xFF000000;\r\n\r\n        /// <summary>\r\n        /// Draws an image using the specified flags and state on XP systems.\r\n        /// </summary>\r\n        /// <param name=\"il\">The image list from which an item will be drawn</param>\r\n        /// <param name=\"hdc\">Device context to draw to</param>\r\n        /// <param name=\"index\">Index of image to draw</param>\r\n        /// <param name=\"x\">X Position to draw at</param>\r\n        /// <param name=\"y\">Y Position to draw at</param>\r\n        /// <param name=\"flags\">Drawing flags</param>\r\n        /// <param name=\"cx\">Width to draw</param>\r\n        /// <param name=\"cy\">Height to draw</param>\r\n        /// <param name=\"stateFlags\">State flags</param>\r\n        public static bool DrawImage(ImageList il, IntPtr hdc, int index, int x, int y, ImageListDrawItemConstants flags, int cx, int cy, ImageListDrawStateConstants stateFlags) {\r\n            IMAGELISTDRAWPARAMS pimldp = new IMAGELISTDRAWPARAMS();\r\n            pimldp.hdcDst = hdc;\r\n            pimldp.cbSize = Marshal.SizeOf(pimldp.GetType());\r\n            pimldp.i = index;\r\n            pimldp.x = x;\r\n            pimldp.y = y;\r\n            pimldp.cx = cx;\r\n            pimldp.cy = cy;\r\n            pimldp.rgbFg = CLR_DEFAULT;\r\n            pimldp.fStyle = (uint) flags;\r\n            pimldp.fState = (uint) stateFlags;\r\n            pimldp.himl = il.Handle;\r\n            return ImageList_DrawIndirect(ref pimldp);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make sure the ListView has the extended style that says to display subitem images.\r\n        /// </summary>\r\n        /// <remarks>This method must be called after any .NET call that update the extended styles\r\n        /// since they seem to erase this setting.</remarks>\r\n        /// <param name=\"list\">The listview to send a m to</param>\r\n        public static void ForceSubItemImagesExStyle(ListView list) {\r\n            SendMessage(list.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the virtual list size of the given ListView (which must be in virtual mode)\r\n        /// </summary>\r\n        /// <remarks>This will not change the scroll position</remarks>\r\n        /// <param name=\"list\">The listview to send a message to</param>\r\n        /// <param name=\"count\">How many rows should the list have?</param>\r\n        public static void SetItemCount(ListView list, int count) {\r\n            SendMessage(list.Handle, LVM_SETITEMCOUNT, count, LVSICF_NOSCROLL);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make sure the ListView has the extended style that says to display subitem images.\r\n        /// </summary>\r\n        /// <remarks>This method must be called after any .NET call that update the extended styles\r\n        /// since they seem to erase this setting.</remarks>\r\n        /// <param name=\"list\">The listview to send a m to</param>\r\n        /// <param name=\"style\"></param>\r\n        /// <param name=\"styleMask\"></param>\r\n        public static void SetExtendedStyle(ListView list, int style, int styleMask) {\r\n            SendMessage(list.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, styleMask, style);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculates the number of items that can fit vertically in the visible area of a list-view (which\r\n        /// must be in details or list view.\r\n        /// </summary>\r\n        /// <param name=\"list\">The listView</param>\r\n        /// <returns>Number of visible items per page</returns>\r\n        public static int GetCountPerPage(ListView list) {\r\n            return (int)SendMessage(list.Handle, LVM_GETCOUNTPERPAGE, 0, 0);\r\n        }\r\n        /// <summary>\r\n        /// For the given item and subitem, make it display the given image\r\n        /// </summary>\r\n        /// <param name=\"list\">The listview to send a m to</param>\r\n        /// <param name=\"itemIndex\">row number (0 based)</param>\r\n        /// <param name=\"subItemIndex\">subitem (0 is the item itself)</param>\r\n        /// <param name=\"imageIndex\">index into the image list</param>\r\n        public static void SetSubItemImage(ListView list, int itemIndex, int subItemIndex, int imageIndex) {\r\n            LVITEM lvItem = new LVITEM();\r\n            lvItem.mask = LVIF_IMAGE;\r\n            lvItem.iItem = itemIndex;\r\n            lvItem.iSubItem = subItemIndex;\r\n            lvItem.iImage = imageIndex;\r\n            SendMessageLVItem(list.Handle, LVM_SETITEM, 0, ref lvItem);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Setup the given column of the listview to show the given image to the right of the text.\r\n        /// If the image index is -1, any previous image is cleared\r\n        /// </summary>\r\n        /// <param name=\"list\">The listview to send a m to</param>\r\n        /// <param name=\"columnIndex\">Index of the column to modifiy</param>\r\n        /// <param name=\"order\"></param>\r\n        /// <param name=\"imageIndex\">Index into the small image list</param>\r\n        public static void SetColumnImage(ListView list, int columnIndex, SortOrder order, int imageIndex) {\r\n            IntPtr hdrCntl = GetHeaderControl(list);\r\n            if (hdrCntl.ToInt32() == 0)\r\n                return;\r\n\r\n            HDITEM item = new HDITEM();\r\n            item.mask = HDI_FORMAT;\r\n            IntPtr result = SendMessageHDItem(hdrCntl, HDM_GETITEM, columnIndex, ref item);\r\n\r\n            item.fmt &= ~(HDF_SORTUP | HDF_SORTDOWN | HDF_IMAGE | HDF_BITMAP_ON_RIGHT);\r\n\r\n            if (HasBuiltinSortIndicators()) {\r\n                if (order == SortOrder.Ascending)\r\n                    item.fmt |= HDF_SORTUP;\r\n                if (order == SortOrder.Descending)\r\n                    item.fmt |= HDF_SORTDOWN;\r\n            } else {\r\n                item.mask |= HDI_IMAGE;\r\n                item.fmt |= (HDF_IMAGE | HDF_BITMAP_ON_RIGHT);\r\n                item.iImage = imageIndex;\r\n            }\r\n\r\n            result = SendMessageHDItem(hdrCntl, HDM_SETITEM, columnIndex, ref item);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Does this version of the operating system have builtin sort indicators?\r\n        /// </summary>\r\n        /// <returns>Are there builtin sort indicators</returns>\r\n        /// <remarks>XP and later have these</remarks>\r\n        public static bool HasBuiltinSortIndicators() {\r\n            return OSFeature.Feature.GetVersionPresent(OSFeature.Themes) != null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the bounds of the update region on the given control.\r\n        /// </summary>\r\n        /// <remarks>The BeginPaint() system call validates the update region, effectively wiping out this information.\r\n        /// So this call has to be made before the BeginPaint() call.</remarks>\r\n        /// <param name=\"cntl\">The control whose update region is be calculated</param>\r\n        /// <returns>A rectangle</returns>\r\n        public static Rectangle GetUpdateRect(Control cntl) {\r\n            Rectangle r = new Rectangle();\r\n            GetUpdateRectInternal(cntl.Handle, ref r, false);\r\n            return r;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Validate an area of the given control. A validated area will not be repainted at the next redraw.\r\n        /// </summary>\r\n        /// <param name=\"cntl\">The control to be validated</param>\r\n        /// <param name=\"r\">The area of the control to be validated</param>\r\n        public static void ValidateRect(Control cntl, Rectangle r) {\r\n            ValidatedRectInternal(cntl.Handle, ref r);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Select all rows on the given listview\r\n        /// </summary>\r\n        /// <param name=\"list\">The listview whose items are to be selected</param>\r\n        public static void SelectAllItems(ListView list) {\r\n            SetItemState(list, -1, LVIS_SELECTED, LVIS_SELECTED);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Deselect all rows on the given listview\r\n        /// </summary>\r\n        /// <param name=\"list\">The listview whose items are to be deselected</param>\r\n        public static void DeselectAllItems(ListView list) {\r\n            SetItemState(list, -1, LVIS_SELECTED, 0);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Deselect a single row\r\n        /// </summary>\r\n        /// <param name=\"list\"></param>\r\n        /// <param name=\"index\"></param>\r\n        public static void DeselectOneItem(ListView list, int index) {\r\n            SetItemState(list, index, LVIS_SELECTED, 0);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the item state on the given item\r\n        /// </summary>\r\n        /// <param name=\"list\">The listview whose item's state is to be changed</param>\r\n        /// <param name=\"itemIndex\">The index of the item to be changed</param>\r\n        /// <param name=\"mask\">Which bits of the value are to be set?</param>\r\n        /// <param name=\"value\">The value to be set</param>\r\n        public static void SetItemState(ListView list, int itemIndex, int mask, int value) {\r\n            LVITEM lvItem = new LVITEM();\r\n            lvItem.stateMask = mask;\r\n            lvItem.state = value;\r\n            SendMessageLVItem(list.Handle, LVM_SETITEMSTATE, itemIndex, ref lvItem);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Scroll the given listview by the given deltas\r\n        /// </summary>\r\n        /// <param name=\"list\"></param>\r\n        /// <param name=\"dx\"></param>\r\n        /// <param name=\"dy\"></param>\r\n        /// <returns>true if the scroll succeeded</returns>\r\n        public static bool Scroll(ListView list, int dx, int dy) {\r\n            return SendMessage(list.Handle, LVM_SCROLL, dx, dy) != IntPtr.Zero;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the handle to the header control on the given list\r\n        /// </summary>\r\n        /// <param name=\"list\">The listview whose header control is to be returned</param>\r\n        /// <returns>The handle to the header control</returns>\r\n        public static IntPtr GetHeaderControl(ListView list) {\r\n            return SendMessage(list.Handle, LVM_GETHEADER, 0, 0);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the edges of the given column.\r\n        /// </summary>\r\n        /// <param name=\"lv\"></param>\r\n        /// <param name=\"columnIndex\"></param>\r\n        /// <returns>A Point holding the left and right co-ords of the column.\r\n        /// -1 means that the sides could not be retrieved.</returns>\r\n        public static Point GetColumnSides(ObjectListView lv, int columnIndex) {\r\n            Point sides = new Point(-1, -1);\r\n            IntPtr hdr = GetHeaderControl(lv);\r\n            if (hdr == IntPtr.Zero)\r\n                return new Point(-1, -1);\r\n\r\n            RECT r = new RECT();\r\n            SendMessageRECT(hdr, HDM_GETITEMRECT, columnIndex, ref r);\r\n            return new Point(r.left, r.right);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the edges of the given column.\r\n        /// </summary>\r\n        /// <param name=\"lv\"></param>\r\n        /// <param name=\"columnIndex\"></param>\r\n        /// <returns>A Point holding the left and right co-ords of the column.\r\n        /// -1 means that the sides could not be retrieved.</returns>\r\n        public static Point GetScrolledColumnSides(ListView lv, int columnIndex) {\r\n            IntPtr hdr = GetHeaderControl(lv);\r\n            if (hdr == IntPtr.Zero)\r\n                return new Point(-1, -1);\r\n\r\n            RECT r = new RECT();\r\n            IntPtr result = SendMessageRECT(hdr, HDM_GETITEMRECT, columnIndex, ref r);\r\n            int scrollH = GetScrollPosition(lv, true);\r\n            return new Point(r.left - scrollH, r.right - scrollH);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the index of the column of the header that is under the given point.\r\n        /// Return -1 if no column is under the pt\r\n        /// </summary>\r\n        /// <param name=\"handle\">The list we are interested in</param>\r\n        /// <param name=\"pt\">The client co-ords</param>\r\n        /// <returns>The index of the column under the point, or -1 if no column header is under that point</returns>\r\n        public static int GetColumnUnderPoint(IntPtr handle, Point pt) {\r\n            const int HHT_ONHEADER = 2;\r\n            const int HHT_ONDIVIDER = 4;\r\n            return HeaderControlHitTest(handle, pt, HHT_ONHEADER | HHT_ONDIVIDER);\r\n        }\r\n\r\n        private static int HeaderControlHitTest(IntPtr handle, Point pt, int flag) {\r\n            HDHITTESTINFO testInfo = new HDHITTESTINFO();\r\n            testInfo.pt_x = pt.X;\r\n            testInfo.pt_y = pt.Y;\r\n            IntPtr result = SendMessageHDHITTESTINFO(handle, HDM_HITTEST, IntPtr.Zero, testInfo);\r\n            if ((testInfo.flags & flag) != 0)\r\n                return testInfo.iItem;\r\n            else\r\n                return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the index of the divider under the given point. Return -1 if no divider is under the pt\r\n        /// </summary>\r\n        /// <param name=\"handle\">The list we are interested in</param>\r\n        /// <param name=\"pt\">The client co-ords</param>\r\n        /// <returns>The index of the divider under the point, or -1 if no divider is under that point</returns>\r\n        public static int GetDividerUnderPoint(IntPtr handle, Point pt) {\r\n            const int HHT_ONDIVIDER = 4;\r\n            return HeaderControlHitTest(handle, pt, HHT_ONDIVIDER);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get the scroll position of the given scroll bar\r\n        /// </summary>\r\n        /// <param name=\"lv\"></param>\r\n        /// <param name=\"horizontalBar\"></param>\r\n        /// <returns></returns>\r\n        public static int GetScrollPosition(ListView lv, bool horizontalBar) {\r\n            int fnBar = (horizontalBar ? SB_HORZ : SB_VERT);\r\n\r\n            SCROLLINFO scrollInfo = new SCROLLINFO();\r\n            scrollInfo.fMask = SIF_POS;\r\n            if (GetScrollInfo(lv.Handle, fnBar, scrollInfo))\r\n                return scrollInfo.nPos;\r\n            else\r\n                return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the z-order to the window 'toBeMoved' so it appear directly on top of 'reference'\r\n        /// </summary>\r\n        /// <param name=\"toBeMoved\"></param>\r\n        /// <param name=\"reference\"></param>\r\n        /// <returns></returns>\r\n        public static bool ChangeZOrder(IWin32Window toBeMoved, IWin32Window reference) {\r\n            return SetWindowPos(toBeMoved.Handle, reference.Handle, 0, 0, 0, 0, SWP_ZORDERONLY);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make the given control/window a topmost window\r\n        /// </summary>\r\n        /// <param name=\"toBeMoved\"></param>\r\n        /// <returns></returns>\r\n        public static bool MakeTopMost(IWin32Window toBeMoved) {\r\n            IntPtr HWND_TOPMOST = (IntPtr)(-1);\r\n            return SetWindowPos(toBeMoved.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_ZORDERONLY);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the size of the window without affecting any other attributes\r\n        /// </summary>\r\n        /// <param name=\"toBeMoved\"></param>\r\n        /// <param name=\"width\"></param>\r\n        /// <param name=\"height\"></param>\r\n        /// <returns></returns>\r\n        public static bool ChangeSize(IWin32Window toBeMoved, int width, int height) {\r\n            return SetWindowPos(toBeMoved.Handle, IntPtr.Zero, 0, 0, width, height, SWP_SIZEONLY);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Show the given window without activating it\r\n        /// </summary>\r\n        /// <param name=\"win\">The window to show</param>\r\n        static public void ShowWithoutActivate(IWin32Window win) {\r\n            const int SW_SHOWNA = 8;\r\n            ShowWindow(win.Handle, SW_SHOWNA);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Mark the given column as being selected.\r\n        /// </summary>\r\n        /// <param name=\"objectListView\"></param>\r\n        /// <param name=\"value\">The OLVColumn or null to clear</param>\r\n        /// <remarks>\r\n        /// This method works, but it prevents subitems in the given column from having\r\n        /// back colors. \r\n        /// </remarks>\r\n        static public void SetSelectedColumn(ListView objectListView, ColumnHeader value) {\r\n            SendMessage(objectListView.Handle,\r\n                LVM_SETSELECTEDCOLUMN, (value == null) ? -1 : value.Index, 0);\r\n        }\r\n\r\n        static public int GetTopIndex(ListView lv) {\r\n            return (int)SendMessage(lv.Handle, LVM_GETTOPINDEX, 0, 0);\r\n        }\r\n\r\n        static public IntPtr GetTooltipControl(ListView lv) {\r\n            return SendMessage(lv.Handle, LVM_GETTOOLTIPS, 0, 0);\r\n        }\r\n\r\n        static public IntPtr SetTooltipControl(ListView lv, ToolTipControl tooltip) {\r\n            return SendMessage(lv.Handle, LVM_SETTOOLTIPS, 0, tooltip.Handle);\r\n        }\r\n\r\n        static public bool HasHorizontalScrollBar(ListView lv) {\r\n            const int GWL_STYLE = -16;\r\n            const int WS_HSCROLL = 0x00100000;\r\n\r\n            return (GetWindowLong(lv.Handle, GWL_STYLE) & WS_HSCROLL) != 0;\r\n        }\r\n\r\n        public static int GetWindowLong(IntPtr hWnd, int nIndex) {\r\n            if (IntPtr.Size == 4)\r\n                return (int)GetWindowLong32(hWnd, nIndex);\r\n            else\r\n                return (int)(long)GetWindowLongPtr64(hWnd, nIndex);\r\n        }\r\n\r\n        public static int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong) {\r\n            if (IntPtr.Size == 4)\r\n                return (int)SetWindowLongPtr32(hWnd, nIndex, dwNewLong);\r\n            else\r\n                return (int)(long)SetWindowLongPtr64(hWnd, nIndex, dwNewLong);\r\n        }\r\n\r\n        [DllImport(\"gdi32.dll\", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]\r\n        public static extern IntPtr SetBkColor(IntPtr hDC, int clr);\r\n\r\n        [DllImport(\"gdi32.dll\", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]\r\n        public static extern IntPtr SetTextColor(IntPtr hDC, int crColor);\r\n\r\n        [DllImport(\"gdi32.dll\", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]\r\n        public static extern IntPtr SelectObject(IntPtr hdc, IntPtr obj);\r\n\r\n        [DllImport(\"uxtheme.dll\", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]\r\n        public static extern IntPtr SetWindowTheme(IntPtr hWnd, string subApp, string subIdList);\r\n\r\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto, ExactSpelling = true)]\r\n        public static extern bool InvalidateRect(IntPtr hWnd, int ignored, bool erase);\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct LVITEMINDEX\r\n        {\r\n            public int iItem;\r\n            public int iGroup;\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct POINT\r\n        {\r\n            public int x;\r\n            public int y;\r\n        }\r\n\r\n        public static int GetGroupInfo(ObjectListView olv, int groupId, ref LVGROUP2 group) {\r\n            return (int)SendMessage(olv.Handle, LVM_GETGROUPINFO, groupId, ref group);\r\n        }\r\n\r\n        public static GroupState GetGroupState(ObjectListView olv, int groupId, GroupState mask) {\r\n            return (GroupState)SendMessage(olv.Handle, LVM_GETGROUPSTATE, groupId, (int)mask);\r\n        }\r\n\r\n        public static int InsertGroup(ObjectListView olv, LVGROUP2 group) {\r\n            return (int)SendMessage(olv.Handle, LVM_INSERTGROUP, -1, ref group);\r\n        }\r\n\r\n        public static int SetGroupInfo(ObjectListView olv, int groupId, LVGROUP2 group) {\r\n            return (int)SendMessage(olv.Handle, LVM_SETGROUPINFO, groupId, ref group);\r\n        }\r\n\r\n        public static int SetGroupMetrics(ObjectListView olv, LVGROUPMETRICS metrics) {\r\n            return (int)SendMessage(olv.Handle, LVM_SETGROUPMETRICS, 0, ref metrics);\r\n        }\r\n\r\n        public static void ClearGroups(VirtualObjectListView virtualObjectListView) {\r\n            SendMessage(virtualObjectListView.Handle, LVM_REMOVEALLGROUPS, 0, 0);\r\n        }\r\n\r\n        public static void SetGroupImageList(ObjectListView olv, ImageList il) {\r\n            const int LVSIL_GROUPHEADER = 3;\r\n            IntPtr handle = IntPtr.Zero;\r\n            if (il != null)\r\n                handle = il.Handle;\r\n            SendMessage(olv.Handle, LVM_SETIMAGELIST, LVSIL_GROUPHEADER, handle);\r\n        }\r\n\r\n        public static int HitTest(ObjectListView olv, ref LVHITTESTINFO hittest)\r\n        {\r\n            return (int)SendMessage(olv.Handle, olv.View == View.Details ? LVM_SUBITEMHITTEST : LVM_HITTEST, -1, ref hittest);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/NullableDictionary.cs",
    "content": "﻿/*\r\n * NullableDictionary - A simple Dictionary that can handle null as a key\r\n *\r\n * Author: Phillip Piper\r\n * Date: 31-March-2011 5:53 pm\r\n *\r\n * Change log:\r\n * 2011-03-31  JPP  - Split into its own file\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System.Collections.Generic;\r\nusing System.Collections;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// A simple-minded implementation of a Dictionary that can handle null as a key.\r\n    /// </summary>\r\n    /// <typeparam name=\"TKey\">The type of the dictionary key</typeparam>\r\n    /// <typeparam name=\"TValue\">The type of the values to be stored</typeparam>\r\n    /// <remarks>This is not a full implementation and is only meant to handle\r\n    /// collecting groups by their keys, since groups can have null as a key value.</remarks>\r\n    internal class NullableDictionary<TKey, TValue> : Dictionary<TKey, TValue> {\r\n        private bool hasNullKey;\r\n        private TValue nullValue;\r\n\r\n        new public TValue this[TKey key] {\r\n            get {\r\n                if (key != null) \r\n                    return base[key];\r\n\r\n                if (hasNullKey)\r\n                    return nullValue;\r\n\r\n                throw new KeyNotFoundException();\r\n            }\r\n            set {\r\n                if (key == null) {\r\n                    hasNullKey = true;\r\n                    nullValue = value;\r\n                } else\r\n                    base[key] = value;\r\n            }\r\n        }\r\n\r\n        new public bool ContainsKey(TKey key) {\r\n            return key == null ? hasNullKey : base.ContainsKey(key);\r\n        }\r\n\r\n        new public IList Keys {\r\n            get {\r\n                ArrayList list = new ArrayList(base.Keys);\r\n                if (hasNullKey)\r\n                    list.Add(null);\r\n                return list;\r\n            }\r\n        }\r\n\r\n        new public IList<TValue> Values {\r\n            get {\r\n                List<TValue> list = new List<TValue>(base.Values);\r\n                if (hasNullKey)\r\n                    list.Add(nullValue);\r\n                return list;\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/OLVListItem.cs",
    "content": "﻿/*\r\n * OLVListItem - A row in an ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 31-March-2011 5:53 pm\r\n *\r\n * Change log:\r\n * 2015-08-22  JPP  - Added OLVListItem.SelectedBackColor and SelectedForeColor\r\n * 2015-06-09  JPP  - Added HasAnyHyperlinks property\r\n * v2.8\r\n * 2014-09-27  JPP  - Remove faulty caching of CheckState\r\n * 2014-05-06  JPP  - Added OLVListItem.Enabled flag\r\n * vOld\r\n * 2011-03-31  JPP  - Split into its own file\r\n * \r\n * Copyright (C) 2011-2015 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Windows.Forms;\r\nusing System.Drawing;\r\nusing System.Linq;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// OLVListItems are specialized ListViewItems that know which row object they came from,\r\n    /// and the row index at which they are displayed, even when in group view mode. They\r\n    /// also know the image they should draw against themselves\r\n    /// </summary>\r\n    public class OLVListItem : ListViewItem {\r\n        #region Constructors\r\n\r\n        /// <summary>\r\n        /// Create a OLVListItem for the given row object\r\n        /// </summary>\r\n        public OLVListItem(object rowObject) {\r\n            this.rowObject = rowObject;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a OLVListItem for the given row object, represented by the given string and image\r\n        /// </summary>\r\n        public OLVListItem(object rowObject, string text, Object image)\r\n            : base(text, -1) {\r\n            this.rowObject = rowObject;\r\n            imageSelector = image;\r\n        }\r\n\r\n        #endregion.\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Gets the bounding rectangle of the item, including all subitems\r\n        /// </summary>\r\n        new public Rectangle Bounds {\r\n            get {\r\n                try {\r\n                    return base.Bounds;\r\n                }\r\n                catch (ArgumentException) {\r\n                    // If the item is part of a collapsed group, Bounds will throw an exception\r\n                    return Rectangle.Empty;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets how many pixels will be left blank around each cell of this item\r\n        /// </summary>\r\n        /// <remarks>This setting only takes effect when the control is owner drawn.</remarks>\r\n        public Rectangle? CellPadding {\r\n            get { return cellPadding; }\r\n            set { cellPadding = value; }\r\n        }\r\n        private Rectangle? cellPadding;\r\n\r\n        /// <summary>\r\n        /// Gets or sets how the cells of this item will be vertically aligned\r\n        /// </summary>\r\n        /// <remarks>This setting only takes effect when the control is owner drawn.</remarks>\r\n        public StringAlignment? CellVerticalAlignment {\r\n            get { return cellVerticalAlignment; }\r\n            set { cellVerticalAlignment = value; }\r\n        }\r\n        private StringAlignment? cellVerticalAlignment;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the checkedness of this item.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Virtual lists don't handle checkboxes well, so we have to intercept attempts to change them\r\n        /// through the items, and change them into something that will work.\r\n        /// Unfortunately, this won't work if this property is set through the base class, since\r\n        /// the property is not declared as virtual.\r\n        /// </remarks>\r\n        new public bool Checked {\r\n            get {\r\n                return base.Checked;\r\n            }\r\n            set {\r\n                if (Checked != value) {\r\n                    if (value)\r\n                        ((ObjectListView)ListView).CheckObject(RowObject);\r\n                    else\r\n                        ((ObjectListView)ListView).UncheckObject(RowObject);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Enable tri-state checkbox.\r\n        /// </summary>\r\n        /// <remarks>.NET's Checked property was not built to handle tri-state checkboxes,\r\n        /// and will return True for both Checked and Indeterminate states.</remarks>\r\n        public CheckState CheckState {\r\n            get {\r\n                switch (StateImageIndex) {\r\n                    case 0:\r\n                        return CheckState.Unchecked;\r\n                    case 1:\r\n                        return CheckState.Checked;\r\n                    case 2:\r\n                        return CheckState.Indeterminate;\r\n                    default:\r\n                        return CheckState.Unchecked;\r\n                }\r\n            }\r\n            set {\r\n                switch (value) {\r\n                    case CheckState.Unchecked:\r\n                        StateImageIndex = 0;\r\n                        break;\r\n                    case CheckState.Checked:\r\n                        StateImageIndex = 1;\r\n                        break;\r\n                    case CheckState.Indeterminate:\r\n                        StateImageIndex = 2;\r\n                        break;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets if this item has any decorations set for it.\r\n        /// </summary>\r\n        public bool HasDecoration {\r\n            get {\r\n                return decorations != null && decorations.Count > 0;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the decoration that will be drawn over this item\r\n        /// </summary>\r\n        /// <remarks>Setting this replaces all other decorations</remarks>\r\n        public IDecoration Decoration {\r\n            get {\r\n                if (HasDecoration)\r\n                    return Decorations[0];\r\n                else\r\n                    return null;\r\n            }\r\n            set {\r\n                Decorations.Clear();\r\n                if (value != null)\r\n                    Decorations.Add(value);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the collection of decorations that will be drawn over this item\r\n        /// </summary>\r\n        public IList<IDecoration> Decorations {\r\n            get {\r\n                if (decorations == null)\r\n                    decorations = new List<IDecoration>();\r\n                return decorations;\r\n            }\r\n        }\r\n        private IList<IDecoration> decorations;\r\n\r\n        /// <summary>\r\n        /// Gets whether or not this row can be selected and activated\r\n        /// </summary>\r\n        public bool Enabled\r\n        {\r\n            get { return enabled; }\r\n            internal set { enabled = value; }\r\n        }\r\n        private bool enabled;\r\n\r\n        /// <summary>\r\n        /// Gets whether any cell on this item is showing a hyperlink\r\n        /// </summary>\r\n        public bool HasAnyHyperlinks {\r\n            get\r\n            {\r\n                return SubItems.OfType<OLVListSubItem>().Any(subItem => !string.IsNullOrEmpty(subItem.Url));\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the image that should be shown against this item\r\n        /// </summary>\r\n        /// <remarks><para>This can be an Image, a string or an int. A string or an int will\r\n        /// be used as an index into the small image list.</para></remarks>\r\n        public Object ImageSelector {\r\n            get { return imageSelector; }\r\n            set {\r\n                imageSelector = value;\r\n                if (value is Int32)\r\n                    ImageIndex = (Int32)value;\r\n                else if (value is String)\r\n                    ImageKey = (String)value;\r\n                else\r\n                    ImageIndex = -1;\r\n            }\r\n        }\r\n        private Object imageSelector;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the the model object that is source of the data for this list item.\r\n        /// </summary>\r\n        public object RowObject {\r\n            get { return rowObject; }\r\n            set { rowObject = value; }\r\n        }\r\n        private object rowObject;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the color that will be used for this row's background when it is selected and \r\n        /// the control is focused.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>To work reliably, this property must be set during a FormatRow event.</para>\r\n        /// <para>\r\n        /// If this is not set, the normal selection BackColor will be used.\r\n        /// </para>\r\n        /// </remarks>\r\n        public Color? SelectedBackColor {\r\n            get { return selectedBackColor; }\r\n            set { selectedBackColor = value; }\r\n        }\r\n        private Color? selectedBackColor;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the color that will be used for this row's foreground when it is selected and \r\n        /// the control is focused.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>To work reliably, this property must be set during a FormatRow event.</para>\r\n        /// <para>\r\n        /// If this is not set, the normal selection ForeColor will be used.\r\n        /// </para>\r\n        /// </remarks>\r\n        public Color? SelectedForeColor\r\n        {\r\n            get { return selectedForeColor; }\r\n            set { selectedForeColor = value; }\r\n        }\r\n        private Color? selectedForeColor;\r\n\r\n        #endregion\r\n\r\n        #region Accessing\r\n\r\n        /// <summary>\r\n        /// Return the sub item at the given index\r\n        /// </summary>\r\n        /// <param name=\"index\">Index of the subitem to be returned</param>\r\n        /// <returns>An OLVListSubItem</returns>\r\n        public virtual OLVListSubItem GetSubItem(int index) {\r\n            if (index >= 0 && index < SubItems.Count)\r\n                return (OLVListSubItem)SubItems[index];\r\n            \r\n            return null;\r\n        }\r\n\r\n\r\n        /// <summary>\r\n        /// Return bounds of the given subitem\r\n        /// </summary>\r\n        /// <remarks>This correctly calculates the bounds even for column 0.</remarks>\r\n        public virtual Rectangle GetSubItemBounds(int subItemIndex) {\r\n            if (subItemIndex == 0) {\r\n                Rectangle r = Bounds;\r\n                Point sides = NativeMethods.GetScrolledColumnSides(ListView, subItemIndex);\r\n                r.X = sides.X + 1;\r\n                r.Width = sides.Y - sides.X;\r\n                return r;\r\n            }\r\n\r\n            OLVListSubItem subItem = GetSubItem(subItemIndex);\r\n            return subItem == null ? new Rectangle() : subItem.Bounds;\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/OLVListSubItem.cs",
    "content": "﻿/*\r\n * OLVListSubItem - A single cell in an ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 31-March-2011 5:53 pm\r\n *\r\n * Change log:\r\n * 2011-03-31  JPP  - Split into its own file\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Drawing;\r\nusing System.Windows.Forms;\r\nusing System.ComponentModel;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// A ListViewSubItem that knows which image should be drawn against it.\r\n    /// </summary>\r\n    [Browsable(false)]\r\n    public class OLVListSubItem : ListViewItem.ListViewSubItem {\r\n        #region Constructors\r\n\r\n        /// <summary>\r\n        /// Create a OLVListSubItem\r\n        /// </summary>\r\n        public OLVListSubItem() {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a OLVListSubItem that shows the given string and image\r\n        /// </summary>\r\n        public OLVListSubItem(object modelValue, string text, Object image) {\r\n            ModelValue = modelValue;\r\n            Text = text;\r\n            ImageSelector = image;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets how many pixels will be left blank around this cell\r\n        /// </summary>\r\n        /// <remarks>This setting only takes effect when the control is owner drawn.</remarks>\r\n        public Rectangle? CellPadding {\r\n            get { return cellPadding; }\r\n            set { cellPadding = value; }\r\n        }\r\n        private Rectangle? cellPadding;\r\n\r\n        /// <summary>\r\n        /// Gets or sets how this cell will be vertically aligned\r\n        /// </summary>\r\n        /// <remarks>This setting only takes effect when the control is owner drawn.</remarks>\r\n        public StringAlignment? CellVerticalAlignment {\r\n            get { return cellVerticalAlignment; }\r\n            set { cellVerticalAlignment = value; }\r\n        }\r\n        private StringAlignment? cellVerticalAlignment;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the model value is being displayed by this subitem.\r\n        /// </summary>\r\n        public object ModelValue\r\n        {\r\n            get { return modelValue; }\r\n            private set { modelValue = value; }\r\n        }\r\n        private object modelValue;\r\n\r\n        /// <summary>\r\n        /// Gets if this subitem has any decorations set for it.\r\n        /// </summary>\r\n        public bool HasDecoration {\r\n            get {\r\n                return decorations != null && decorations.Count > 0;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the decoration that will be drawn over this item\r\n        /// </summary>\r\n        /// <remarks>Setting this replaces all other decorations</remarks>\r\n        public IDecoration Decoration {\r\n            get {\r\n                return HasDecoration ? Decorations[0] : null;\r\n            }\r\n            set {\r\n                Decorations.Clear();\r\n                if (value != null)\r\n                    Decorations.Add(value);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the collection of decorations that will be drawn over this item\r\n        /// </summary>\r\n        public IList<IDecoration> Decorations {\r\n            get {\r\n                if (decorations == null)\r\n                    decorations = new List<IDecoration>();\r\n                return decorations;\r\n            }\r\n        }\r\n        private IList<IDecoration> decorations;\r\n\r\n        /// <summary>\r\n        /// Get or set the image that should be shown against this item\r\n        /// </summary>\r\n        /// <remarks><para>This can be an Image, a string or an int. A string or an int will\r\n        /// be used as an index into the small image list.</para></remarks>\r\n        public Object ImageSelector {\r\n            get { return imageSelector; }\r\n            set { imageSelector = value; }\r\n        }\r\n        private Object imageSelector;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the url that should be invoked when this subitem is clicked\r\n        /// </summary>\r\n        public string Url\r\n        {\r\n            get { return url; }\r\n            set { url = value; }\r\n        }\r\n        private string url;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this cell is selected\r\n        /// </summary>\r\n        public bool Selected\r\n        {\r\n            get { return selected; }\r\n            set { selected = value; }\r\n        }\r\n        private bool selected;\r\n\r\n        #endregion\r\n\r\n        #region Implementation Properties\r\n\r\n        /// <summary>\r\n        /// Return the state of the animatation of the image on this subitem.\r\n        /// Null means there is either no image, or it is not an animation\r\n        /// </summary>\r\n        internal ImageRenderer.AnimationState AnimationState;\r\n\r\n        #endregion\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/OlvListViewHitTestInfo.cs",
    "content": "﻿/*\r\n * OlvListViewHitTestInfo - All information gathered during a OlvHitTest() operation\r\n *\r\n * Author: Phillip Piper\r\n * Date: 31-March-2011 5:53 pm\r\n *\r\n * Change log:\r\n * 2011-03-31  JPP  - Split into its own file\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// An indication of where a hit was within ObjectListView cell\r\n    /// </summary>\r\n    public enum HitTestLocation {\r\n        /// <summary>\r\n        /// Nowhere\r\n        /// </summary>\r\n        Nothing,\r\n\r\n        /// <summary>\r\n        /// On the text\r\n        /// </summary>\r\n        Text,\r\n\r\n        /// <summary>\r\n        /// On the image\r\n        /// </summary>\r\n        Image,\r\n\r\n        /// <summary>\r\n        /// On the checkbox\r\n        /// </summary>\r\n        CheckBox,\r\n\r\n        /// <summary>\r\n        /// On the expand button (TreeListView)\r\n        /// </summary>\r\n        ExpandButton,\r\n\r\n        /// <summary>\r\n        /// in a button (cell must have ButtonRenderer)\r\n        /// </summary>\r\n        Button,\r\n\r\n        /// <summary>\r\n        /// in the cell but not in any more specific location\r\n        /// </summary>\r\n        InCell,\r\n\r\n        /// <summary>\r\n        /// UserDefined location1 (used for custom renderers)\r\n        /// </summary>\r\n        UserDefined,\r\n\r\n        /// <summary>\r\n        /// On the expand/collapse widget of the group\r\n        /// </summary>\r\n        GroupExpander,\r\n\r\n        /// <summary>\r\n        /// Somewhere on a group\r\n        /// </summary>\r\n        Group,\r\n\r\n        /// <summary>\r\n        /// Somewhere in a column header\r\n        /// </summary>\r\n        Header,\r\n\r\n        /// <summary>\r\n        /// Somewhere in a column header checkbox\r\n        /// </summary>\r\n        HeaderCheckBox,\r\n\r\n        /// <summary>\r\n        /// Somewhere in a header divider\r\n        /// </summary>\r\n        HeaderDivider,\r\n    }\r\n\r\n    /// <summary>\r\n    /// A collection of ListViewHitTest constants\r\n    /// </summary>\r\n    [Flags]\r\n    public enum HitTestLocationEx {\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_NOWHERE = 0x00000001,\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_ONITEMICON = 0x00000002,\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_ONITEMLABEL = 0x00000004,\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_ONITEMSTATEICON = 0x00000008,\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_ONITEM = (LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON),\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_ABOVE = 0x00000008,\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_BELOW = 0x00000010,\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_TORIGHT = 0x00000020,\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_TOLEFT = 0x00000040,\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_EX_GROUP_HEADER = 0x10000000,\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_EX_GROUP_FOOTER = 0x20000000,\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_EX_GROUP_COLLAPSE = 0x40000000,\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_EX_GROUP_BACKGROUND = -2147483648, // 0x80000000\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_EX_GROUP_STATEICON = 0x01000000,\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_EX_GROUP_SUBSETLINK = 0x02000000,\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_EX_GROUP = (LVHT_EX_GROUP_BACKGROUND | LVHT_EX_GROUP_COLLAPSE | LVHT_EX_GROUP_FOOTER | LVHT_EX_GROUP_HEADER | LVHT_EX_GROUP_STATEICON | LVHT_EX_GROUP_SUBSETLINK),\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_EX_GROUP_MINUS_FOOTER_AND_BKGRD = (LVHT_EX_GROUP_COLLAPSE | LVHT_EX_GROUP_HEADER | LVHT_EX_GROUP_STATEICON | LVHT_EX_GROUP_SUBSETLINK),\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_EX_ONCONTENTS = 0x04000000, // On item AND not on the background\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        LVHT_EX_FOOTER = 0x08000000,\r\n    }\r\n\r\n    /// <summary>\r\n    /// Instances of this class encapsulate the information gathered during a OlvHitTest()\r\n    /// operation.\r\n    /// </summary>\r\n    /// <remarks>Custom renderers can use HitTestLocation.UserDefined and the UserData\r\n    /// object to store more specific locations for use during event handlers.</remarks>\r\n    public class OlvListViewHitTestInfo {\r\n\r\n        /// <summary>\r\n        /// Create a OlvListViewHitTestInfo\r\n        /// </summary>\r\n        public OlvListViewHitTestInfo(OLVListItem olvListItem, OLVListSubItem subItem, int flags, OLVGroup group, int iColumn)\r\n        {\r\n            item = olvListItem;\r\n            this.subItem = subItem;\r\n            location = ConvertNativeFlagsToDotNetLocation(olvListItem, flags);\r\n            HitTestLocationEx = (HitTestLocationEx)flags;\r\n            Group = group;\r\n            ColumnIndex = iColumn;\r\n            ListView = olvListItem == null ? null : (ObjectListView)olvListItem.ListView;\r\n\r\n            switch (location) {\r\n                case ListViewHitTestLocations.StateImage:\r\n                    HitTestLocation = HitTestLocation.CheckBox;\r\n                    break;\r\n                case ListViewHitTestLocations.Image:\r\n                    HitTestLocation = HitTestLocation.Image;\r\n                    break;\r\n                case ListViewHitTestLocations.Label:\r\n                    HitTestLocation = HitTestLocation.Text;\r\n                    break;\r\n                default:\r\n                    if ((HitTestLocationEx & HitTestLocationEx.LVHT_EX_GROUP_COLLAPSE) == HitTestLocationEx.LVHT_EX_GROUP_COLLAPSE)\r\n                        HitTestLocation = HitTestLocation.GroupExpander;\r\n                    else if ((HitTestLocationEx & HitTestLocationEx.LVHT_EX_GROUP_MINUS_FOOTER_AND_BKGRD) != 0)\r\n                        HitTestLocation = HitTestLocation.Group;\r\n                    else\r\n                        HitTestLocation = HitTestLocation.Nothing;\r\n                    break;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a OlvListViewHitTestInfo when the header was hit\r\n        /// </summary>\r\n        public OlvListViewHitTestInfo(ObjectListView olv, int iColumn, bool isOverCheckBox, int iDivider) {\r\n            ListView = olv;\r\n            ColumnIndex = iColumn;\r\n            HeaderDividerIndex = iDivider;\r\n            HitTestLocation = isOverCheckBox ? HitTestLocation.HeaderCheckBox : (iDivider < 0 ? HitTestLocation.Header : HitTestLocation.HeaderDivider);\r\n        }\r\n\r\n        private static ListViewHitTestLocations ConvertNativeFlagsToDotNetLocation(OLVListItem hitItem, int flags)\r\n        {\r\n            // Untangle base .NET behaviour.\r\n\r\n            // In Windows SDK, the value 8 can have two meanings here: LVHT_ONITEMSTATEICON or LVHT_ABOVE.\r\n            // .NET changes these to be:\r\n            // - LVHT_ABOVE becomes ListViewHitTestLocations.AboveClientArea (which is 0x100).\r\n            // - LVHT_ONITEMSTATEICON becomes ListViewHitTestLocations.StateImage (which is 0x200).\r\n            // So, if we see the 8 bit set in flags, we change that to either a state image hit\r\n            // (if we hit an item) or to AboveClientAream if nothing was hit.\r\n\r\n            if ((8 & flags) == 8)\r\n                return (ListViewHitTestLocations)(0xf7 & flags | (hitItem == null ? 0x100 : 0x200));\r\n\r\n            // Mask off the LVHT_EX_XXXX values since ListViewHitTestLocations doesn't have them\r\n            return (ListViewHitTestLocations)(flags & 0xffff);\r\n        }\r\n\r\n        #region Public fields\r\n\r\n        /// <summary>\r\n        /// Where is the hit location?\r\n        /// </summary>\r\n        public HitTestLocation HitTestLocation;\r\n\r\n        /// <summary>\r\n        /// Where is the hit location?\r\n        /// </summary>\r\n        public HitTestLocationEx HitTestLocationEx;\r\n\r\n        /// <summary>\r\n        /// Which group was hit?\r\n        /// </summary>\r\n        public OLVGroup Group;\r\n\r\n        /// <summary>\r\n        /// Custom renderers can use this information to supply more details about the hit location\r\n        /// </summary>\r\n        public Object UserData;\r\n\r\n        #endregion\r\n\r\n        #region Public read-only properties\r\n\r\n        /// <summary>\r\n        /// Gets the item that was hit\r\n        /// </summary>\r\n        public OLVListItem Item {\r\n            get { return item; }\r\n            internal set { item = value; }\r\n        }\r\n        private OLVListItem item;\r\n\r\n        /// <summary>\r\n        /// Gets the subitem that was hit\r\n        /// </summary>\r\n        public OLVListSubItem SubItem {\r\n            get { return subItem; }\r\n            internal set { subItem = value; }\r\n        }\r\n        private OLVListSubItem subItem;\r\n\r\n        /// <summary>\r\n        /// Gets the part of the subitem that was hit\r\n        /// </summary>\r\n        public ListViewHitTestLocations Location {\r\n            get { return location; }\r\n            internal set { location = value; }\r\n        }\r\n        private ListViewHitTestLocations location;\r\n\r\n        /// <summary>\r\n        /// Gets the ObjectListView that was tested\r\n        /// </summary>\r\n        public ObjectListView ListView {\r\n            get { return listView; }\r\n            internal set { listView = value; }\r\n        }\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Gets the model object that was hit\r\n        /// </summary>\r\n        public Object RowObject {\r\n            get {\r\n                return Item == null ? null : Item.RowObject;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the index of the row under the hit point or -1\r\n        /// </summary>\r\n        public int RowIndex {\r\n            get { return Item == null ? -1 : Item.Index; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the index of the column under the hit point\r\n        /// </summary>\r\n        public int ColumnIndex {\r\n            get { return columnIndex; }\r\n            internal set { columnIndex = value; }\r\n        }\r\n        private int columnIndex;\r\n\r\n        /// <summary>\r\n        /// Gets the index of the header divider\r\n        /// </summary>\r\n        public int HeaderDividerIndex {\r\n            get { return headerDividerIndex; }\r\n            internal set { headerDividerIndex = value; }\r\n        }\r\n        private int headerDividerIndex = -1;\r\n\r\n        /// <summary>\r\n        /// Gets the column that was hit\r\n        /// </summary>\r\n        public OLVColumn Column {\r\n            get {\r\n                int index = ColumnIndex;\r\n                return index < 0 || ListView == null ? null : ListView.GetColumn(index);\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        /// <summary>\r\n        /// Returns a string that represents the current object.\r\n        /// </summary>\r\n        /// <returns>\r\n        /// A string that represents the current object.\r\n        /// </returns>\r\n        /// <filterpriority>2</filterpriority>\r\n        public override string ToString()\r\n        {\r\n            return string.Format(\"HitTestLocation: {0}, HitTestLocationEx: {1}, Item: {2}, SubItem: {3}, Location: {4}, Group: {5}, ColumnIndex: {6}\", \r\n                HitTestLocation, HitTestLocationEx, item, subItem, location, Group, ColumnIndex);\r\n        }\r\n\r\n        internal class HeaderHitTestInfo\r\n        {\r\n            public int ColumnIndex;\r\n            public bool IsOverCheckBox;\r\n            public int OverDividerIndex;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/TreeDataSourceAdapter.cs",
    "content": "using System.Collections;\r\nusing System.ComponentModel;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A TreeDataSourceAdapter knows how to build a tree structure from a binding list.\r\n    /// </summary>\r\n    /// <remarks>To build a tree</remarks>\r\n    public class TreeDataSourceAdapter : DataSourceAdapter\r\n    {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create a data source adaptor that knows how to build a tree structure\r\n        /// </summary>\r\n        /// <param name=\"tlv\"></param>\r\n        public TreeDataSourceAdapter(DataTreeListView tlv)\r\n            : base(tlv) {\r\n            treeListView = tlv;\r\n            treeListView.CanExpandGetter = delegate(object model) { return CalculateHasChildren(model); };\r\n            treeListView.ChildrenGetter = delegate(object model) { return CalculateChildren(model); };\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the name of the property/column that uniquely identifies each row.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// The value contained by this column must be unique across all rows \r\n        /// in the data source. Odd and unpredictable things will happen if two\r\n        /// rows have the same id.\r\n        /// </para>\r\n        /// <para>Null cannot be a valid key value.</para>\r\n        /// </remarks>\r\n        public virtual string KeyAspectName {\r\n            get { return keyAspectName; }\r\n            set {\r\n                if (keyAspectName == value)\r\n                    return;\r\n                keyAspectName = value;\r\n                keyMunger = new Munger(KeyAspectName);\r\n                InitializeDataSource();\r\n            }\r\n        }\r\n        private string keyAspectName;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the name of the property/column that contains the key of\r\n        /// the parent of a row.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// The test condition for deciding if one row is the parent of another is functionally\r\n        /// equivilent to this:\r\n        /// <code>\r\n        /// Object.Equals(candidateParentRow[this.KeyAspectName], row[this.ParentKeyAspectName])\r\n        /// </code>\r\n        /// </para>\r\n        /// <para>Unlike key value, parent keys can be null but a null parent key can only be used\r\n        /// to identify root objects.</para>\r\n        /// </remarks>\r\n        public virtual string ParentKeyAspectName {\r\n            get { return parentKeyAspectName; }\r\n            set {\r\n                if (parentKeyAspectName == value)\r\n                    return;\r\n                parentKeyAspectName = value;\r\n                parentKeyMunger = new Munger(ParentKeyAspectName);\r\n                InitializeDataSource();\r\n            }\r\n        }\r\n        private string parentKeyAspectName;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the value that identifies a row as a root object.\r\n        /// When the ParentKey of a row equals the RootKeyValue, that row will\r\n        /// be treated as root of the TreeListView.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// The test condition for deciding a root object is functionally\r\n        /// equivilent to this:\r\n        /// <code>\r\n        /// Object.Equals(candidateRow[this.ParentKeyAspectName], this.RootKeyValue)\r\n        /// </code>\r\n        /// </para>\r\n        /// <para>The RootKeyValue can be null.</para>\r\n        /// </remarks>\r\n        public virtual object RootKeyValue {\r\n            get { return rootKeyValue; }\r\n            set {\r\n                if (Equals(rootKeyValue, value))\r\n                    return;\r\n                rootKeyValue = value;\r\n                InitializeDataSource();\r\n            }\r\n        }\r\n        private object rootKeyValue;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not the key columns (id and parent id) should\r\n        /// be shown to the user.\r\n        /// </summary>\r\n        /// <remarks>This must be set before the DataSource is set. It has no effect\r\n        /// afterwards.</remarks>\r\n        public virtual bool ShowKeyColumns {\r\n            get { return showKeyColumns; }\r\n            set { showKeyColumns = value; }\r\n        }\r\n        private bool showKeyColumns = true;\r\n\r\n\r\n        #endregion\r\n\r\n        #region Implementation properties\r\n\r\n        /// <summary>\r\n        /// Gets the DataTreeListView that is being managed \r\n        /// </summary>\r\n        protected DataTreeListView TreeListView {\r\n            get { return treeListView; }\r\n        }\r\n        private readonly DataTreeListView treeListView;\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        protected override void InitializeDataSource() {\r\n            base.InitializeDataSource();\r\n            TreeListView.RebuildAll(true);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        protected override void SetListContents() {\r\n            TreeListView.Roots = CalculateRoots();\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"property\"></param>\r\n        /// <returns></returns>\r\n        protected override bool ShouldCreateColumn(PropertyDescriptor property) {\r\n            // If the property is a key column, and we aren't supposed to show keys, don't show it\r\n            if (!ShowKeyColumns && (property.Name == KeyAspectName || property.Name == ParentKeyAspectName))\r\n                return false;\r\n\r\n            return base.ShouldCreateColumn(property);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void HandleListChangedItemChanged(ListChangedEventArgs e) {\r\n            // If the id or the parent id of a row changes, we just rebuild everything.\r\n            // We can't do anything more specific. We don't know what the previous values, so we can't \r\n            // tell the previous parent to refresh itself. If the id itself has changed, things that used\r\n            // to be children will no longer be children. Just rebuild everything.\r\n            // It seems PropertyDescriptor is only filled in .NET 4 :(\r\n            if (e.PropertyDescriptor != null && \r\n                (e.PropertyDescriptor.Name == KeyAspectName ||\r\n                 e.PropertyDescriptor.Name == ParentKeyAspectName))\r\n                InitializeDataSource();\r\n            else\r\n                base.HandleListChangedItemChanged(e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"index\"></param>\r\n        protected override void ChangePosition(int index) {\r\n            // We can't use our base method directly, since the normal position management\r\n            // doesn't know about our tree structure. They treat our dataset as a flat list\r\n            // but we have a collapsable structure. This means that the 5'th row to them\r\n            // may not even be visible to us\r\n\r\n            // To display the n'th row, we have to make sure that all its ancestors\r\n            // are expanded. Then we will be able to select it.\r\n            object model = CurrencyManager.List[index];\r\n            object parent = CalculateParent(model);\r\n            while (parent != null && !TreeListView.IsExpanded(parent)) {\r\n                TreeListView.Expand(parent);\r\n                parent = CalculateParent(parent);\r\n            }\r\n\r\n            base.ChangePosition(index);\r\n        }\r\n\r\n        private IEnumerable CalculateRoots() {\r\n            foreach (object x in CurrencyManager.List) {\r\n                object parentKey = GetParentValue(x);\r\n                if (Equals(RootKeyValue, parentKey))\r\n                    yield return x;\r\n            }\r\n        }\r\n\r\n        private bool CalculateHasChildren(object model) {\r\n            object keyValue = GetKeyValue(model);\r\n            if (keyValue == null)\r\n                return false;\r\n\r\n            foreach (object x in CurrencyManager.List) {\r\n                object parentKey = GetParentValue(x);\r\n                if (Equals(keyValue, parentKey))\r\n                    return true;\r\n            }\r\n            return false;\r\n        }\r\n\r\n        private IEnumerable CalculateChildren(object model) {\r\n            object keyValue = GetKeyValue(model);\r\n            if (keyValue != null) {\r\n                foreach (object x in CurrencyManager.List) {\r\n                    object parentKey = GetParentValue(x);\r\n                    if (Equals(keyValue, parentKey))\r\n                        yield return x;\r\n                }\r\n            }\r\n        }\r\n\r\n        private object CalculateParent(object model) {\r\n            object parentValue = GetParentValue(model);\r\n            if (parentValue == null) \r\n                return null;\r\n\r\n            foreach (object x in CurrencyManager.List) {\r\n                object key = GetKeyValue(x);\r\n                if (Equals(parentValue, key))\r\n                    return x;\r\n            }\r\n            return null;\r\n        }\r\n\r\n        private object GetKeyValue(object model) {\r\n            return keyMunger == null ? null : keyMunger.GetValue(model);\r\n        }\r\n\r\n        private object GetParentValue(object model) {\r\n            return parentKeyMunger == null ? null : parentKeyMunger.GetValue(model);\r\n        }\r\n\r\n        #endregion\r\n\r\n        private Munger keyMunger;\r\n        private Munger parentKeyMunger;\r\n    }\r\n}"
  },
  {
    "path": "source/ObjectListView/Implementation/VirtualGroups.cs",
    "content": "﻿/*\r\n * Virtual groups - Classes and interfaces needed to implement virtual groups\r\n *\r\n * Author: Phillip Piper\r\n * Date: 28/08/2009 11:10am\r\n *\r\n * Change log:\r\n * 2011-02-21   JPP  - Correctly honor group comparer and collapsible groups settings\r\n * v2.3\r\n * 2009-08-28   JPP  - Initial version\r\n *\r\n * To do:\r\n *\r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Windows.Forms;\r\nusing System.Runtime.InteropServices;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A IVirtualGroups is the interface that a virtual list must implement to support virtual groups\r\n    /// </summary>\r\n    public interface IVirtualGroups\r\n    {\r\n        /// <summary>\r\n        /// Return the list of groups that should be shown according to the given parameters\r\n        /// </summary>\r\n        /// <param name=\"parameters\"></param>\r\n        /// <returns></returns>\r\n        IList<OLVGroup> GetGroups(GroupingParameters parameters);\r\n\r\n        /// <summary>\r\n        /// Return the index of the item that appears at the given position within the given group.\r\n        /// </summary>\r\n        /// <param name=\"group\"></param>\r\n        /// <param name=\"indexWithinGroup\"></param>\r\n        /// <returns></returns>\r\n        int GetGroupMember(OLVGroup group, int indexWithinGroup);\r\n\r\n        /// <summary>\r\n        /// Return the index of the group to which the given item belongs\r\n        /// </summary>\r\n        /// <param name=\"itemIndex\"></param>\r\n        /// <returns></returns>\r\n        int GetGroup(int itemIndex);\r\n\r\n        /// <summary>\r\n        /// Return the index at which the given item is shown in the given group\r\n        /// </summary>\r\n        /// <param name=\"group\"></param>\r\n        /// <param name=\"itemIndex\"></param>\r\n        /// <returns></returns>\r\n        int GetIndexWithinGroup(OLVGroup group, int itemIndex);\r\n\r\n        /// <summary>\r\n        /// A hint that the given range of items are going to be required\r\n        /// </summary>\r\n        /// <param name=\"fromGroupIndex\"></param>\r\n        /// <param name=\"fromIndex\"></param>\r\n        /// <param name=\"toGroupIndex\"></param>\r\n        /// <param name=\"toIndex\"></param>\r\n        void CacheHint(int fromGroupIndex, int fromIndex, int toGroupIndex, int toIndex);\r\n    }\r\n\r\n    /// <summary>\r\n    /// This is a safe, do nothing implementation of a grouping strategy\r\n    /// </summary>\r\n    public class AbstractVirtualGroups : IVirtualGroups\r\n    {\r\n        /// <summary>\r\n        /// Return the list of groups that should be shown according to the given parameters\r\n        /// </summary>\r\n        /// <param name=\"parameters\"></param>\r\n        /// <returns></returns>\r\n        public virtual IList<OLVGroup> GetGroups(GroupingParameters parameters) {\r\n            return new List<OLVGroup>();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the index of the item that appears at the given position within the given group.\r\n        /// </summary>\r\n        /// <param name=\"group\"></param>\r\n        /// <param name=\"indexWithinGroup\"></param>\r\n        /// <returns></returns>\r\n        public virtual int GetGroupMember(OLVGroup group, int indexWithinGroup) {\r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the index of the group to which the given item belongs\r\n        /// </summary>\r\n        /// <param name=\"itemIndex\"></param>\r\n        /// <returns></returns>\r\n        public virtual int GetGroup(int itemIndex) {\r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the index at which the given item is shown in the given group\r\n        /// </summary>\r\n        /// <param name=\"group\"></param>\r\n        /// <param name=\"itemIndex\"></param>\r\n        /// <returns></returns>\r\n        public virtual int GetIndexWithinGroup(OLVGroup group, int itemIndex) {\r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// A hint that the given range of items are going to be required\r\n        /// </summary>\r\n        /// <param name=\"fromGroupIndex\"></param>\r\n        /// <param name=\"fromIndex\"></param>\r\n        /// <param name=\"toGroupIndex\"></param>\r\n        /// <param name=\"toIndex\"></param>\r\n        public virtual void CacheHint(int fromGroupIndex, int fromIndex, int toGroupIndex, int toIndex) {\r\n        }\r\n    }\r\n\r\n\r\n    /// <summary>\r\n    /// Provides grouping functionality to a FastObjectListView\r\n    /// </summary>\r\n    public class FastListGroupingStrategy : AbstractVirtualGroups\r\n    {\r\n        /// <summary>\r\n        /// Create groups for FastListView\r\n        /// </summary>\r\n        /// <param name=\"parmameters\"></param>\r\n        /// <returns></returns>\r\n        public override IList<OLVGroup> GetGroups(GroupingParameters parmameters) {\r\n\r\n            // There is a lot of overlap between this method and ObjectListView.MakeGroups()\r\n            // Any changes made here may need to be reflected there\r\n\r\n            // This strategy can only be used on FastObjectListViews\r\n            FastObjectListView folv = (FastObjectListView)parmameters.ListView;\r\n\r\n            // Separate the list view items into groups, using the group key as the descrimanent\r\n            int objectCount = 0;\r\n            NullableDictionary<object, List<object>> map = new NullableDictionary<object, List<object>>();\r\n            foreach (object model in folv.FilteredObjects) {\r\n                object key = parmameters.GroupByColumn.GetGroupKey(model);\r\n                if (!map.ContainsKey(key))\r\n                    map[key] = new List<object>();\r\n                map[key].Add(model);\r\n                objectCount++;\r\n            }\r\n\r\n            // Sort the items within each group\r\n            // TODO: Give parameters a ModelComparer property\r\n            OLVColumn primarySortColumn = parmameters.SortItemsByPrimaryColumn ? parmameters.ListView.GetColumn(0) : parmameters.PrimarySort;\r\n            ModelObjectComparer sorter = new ModelObjectComparer(primarySortColumn, parmameters.PrimarySortOrder,\r\n                parmameters.SecondarySort, parmameters.SecondarySortOrder);\r\n            foreach (object key in map.Keys) {\r\n                map[key].Sort(sorter);\r\n            }\r\n\r\n            // Make a list of the required groups\r\n            List<OLVGroup> groups = new List<OLVGroup>();\r\n            foreach (object key in map.Keys) {\r\n                string title = parmameters.GroupByColumn.ConvertGroupKeyToTitle(key);\r\n                if (!String.IsNullOrEmpty(parmameters.TitleFormat)) {\r\n                    int count = map[key].Count;\r\n                    string format = (count == 1 ? parmameters.TitleSingularFormat : parmameters.TitleFormat);\r\n                    try {\r\n                        title = String.Format(format, title, count);\r\n                    } catch (FormatException) {\r\n                        title = \"Invalid group format: \" + format;\r\n                    }\r\n                }\r\n                OLVGroup lvg = new OLVGroup(title);\r\n                lvg.Collapsible = folv.HasCollapsibleGroups;\r\n                lvg.Key = key;\r\n                lvg.SortValue = key as IComparable;\r\n                lvg.Contents = map[key].ConvertAll<int>(delegate(object x) { return folv.IndexOf(x); });\r\n                lvg.VirtualItemCount = map[key].Count;\r\n                if (parmameters.GroupByColumn.GroupFormatter != null)\r\n                    parmameters.GroupByColumn.GroupFormatter(lvg, parmameters);\r\n                groups.Add(lvg);\r\n            }\r\n\r\n            // Sort the groups\r\n            if (parmameters.GroupByOrder != SortOrder.None)\r\n                groups.Sort(parmameters.GroupComparer ?? new OLVGroupComparer(parmameters.GroupByOrder));\r\n\r\n            // Build an array that remembers which group each item belongs to.\r\n            indexToGroupMap = new List<int>(objectCount);\r\n            indexToGroupMap.AddRange(new int[objectCount]);\r\n\r\n            for (int i = 0; i < groups.Count; i++) {\r\n                OLVGroup group = groups[i];\r\n                List<int> members = (List<int>)group.Contents;\r\n                foreach (int j in members)\r\n                    indexToGroupMap[j] = i;\r\n            }\r\n\r\n            return groups;\r\n        }\r\n        private List<int> indexToGroupMap;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"group\"></param>\r\n        /// <param name=\"indexWithinGroup\"></param>\r\n        /// <returns></returns>\r\n        public override int GetGroupMember(OLVGroup group, int indexWithinGroup) {\r\n            return (int)group.Contents[indexWithinGroup];\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"itemIndex\"></param>\r\n        /// <returns></returns>\r\n        public override int GetGroup(int itemIndex) {\r\n            return indexToGroupMap[itemIndex];\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"group\"></param>\r\n        /// <param name=\"itemIndex\"></param>\r\n        /// <returns></returns>\r\n        public override int GetIndexWithinGroup(OLVGroup group, int itemIndex) {\r\n            return group.Contents.IndexOf(itemIndex);\r\n        }\r\n    }\r\n\r\n\r\n    /// <summary>\r\n    /// This is the COM interface that a ListView must be given in order for groups in virtual lists to work.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// This interface is NOT documented by MS. It was found on Greg Chapell's site. This means that there is\r\n    /// no guarantee that it will work on future versions of Windows, nor continue to work on current ones.\r\n    /// </remarks>\r\n    [ComImport(),\r\n     InterfaceType(ComInterfaceType.InterfaceIsIUnknown),\r\n     Guid(\"44C09D56-8D3B-419D-A462-7B956B105B47\")]\r\n    internal interface IOwnerDataCallback\r\n    {\r\n        /// <summary>\r\n        /// Not sure what this does\r\n        /// </summary>\r\n        /// <param name=\"i\"></param>\r\n        /// <param name=\"pt\"></param>\r\n        void GetItemPosition(int i, out NativeMethods.POINT pt);\r\n\r\n        /// <summary>\r\n        /// Not sure what this does\r\n        /// </summary>\r\n        /// <param name=\"t\"></param>\r\n        /// <param name=\"pt\"></param>\r\n        void SetItemPosition(int t, NativeMethods.POINT pt);\r\n\r\n        /// <summary>\r\n        /// Get the index of the item that occurs at the n'th position of the indicated group.\r\n        /// </summary>\r\n        /// <param name=\"groupIndex\">Index of the group</param>\r\n        /// <param name=\"n\">Index within the group</param>\r\n        /// <param name=\"itemIndex\">Index of the item within the whole list</param>\r\n        void GetItemInGroup(int groupIndex, int n, out int itemIndex);\r\n\r\n        /// <summary>\r\n        /// Get the index of the group to which the given item belongs\r\n        /// </summary>\r\n        /// <param name=\"itemIndex\">Index of the item within the whole list</param>\r\n        /// <param name=\"occurrenceCount\">Which occurences of the item is wanted</param>\r\n        /// <param name=\"groupIndex\">Index of the group</param>\r\n        void GetItemGroup(int itemIndex, int occurrenceCount, out int groupIndex);\r\n\r\n        /// <summary>\r\n        /// Get the number of groups that contain the given item\r\n        /// </summary>\r\n        /// <param name=\"itemIndex\">Index of the item within the whole list</param>\r\n        /// <param name=\"occurrenceCount\">How many groups does it occur within</param>\r\n        void GetItemGroupCount(int itemIndex, out int occurrenceCount);\r\n\r\n        /// <summary>\r\n        /// A hint to prepare any cache for the given range of requests\r\n        /// </summary>\r\n        /// <param name=\"i\"></param>\r\n        /// <param name=\"j\"></param>\r\n        void OnCacheHint(NativeMethods.LVITEMINDEX i, NativeMethods.LVITEMINDEX j);\r\n    }\r\n\r\n    /// <summary>\r\n    /// A default implementation of the IOwnerDataCallback interface\r\n    /// </summary>\r\n    [Guid(\"6FC61F50-80E8-49b4-B200-3F38D3865ABD\")]\r\n    internal class OwnerDataCallbackImpl : IOwnerDataCallback\r\n    {\r\n        public OwnerDataCallbackImpl(VirtualObjectListView olv) {\r\n            this.olv = olv;\r\n        }\r\n        VirtualObjectListView olv;\r\n\r\n        #region IOwnerDataCallback Members\r\n\r\n        public void GetItemPosition(int i, out NativeMethods.POINT pt) {\r\n            //System.Diagnostics.Debug.WriteLine(\"GetItemPosition\");\r\n            throw new NotSupportedException();\r\n        }\r\n\r\n        public void SetItemPosition(int t, NativeMethods.POINT pt) {\r\n            //System.Diagnostics.Debug.WriteLine(\"SetItemPosition\");\r\n            throw new NotSupportedException();\r\n        }\r\n\r\n        public void GetItemInGroup(int groupIndex, int n, out int itemIndex) {\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"-> GetItemInGroup({0}, {1})\", groupIndex, n));\r\n            itemIndex = olv.GroupingStrategy.GetGroupMember(olv.OLVGroups[groupIndex], n);\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"<- {0}\", itemIndex));\r\n        }\r\n\r\n        public void GetItemGroup(int itemIndex, int occurrenceCount, out int groupIndex) {\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"GetItemGroup({0}, {1})\", itemIndex, occurrenceCount));\r\n            groupIndex = olv.GroupingStrategy.GetGroup(itemIndex);\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"<- {0}\", groupIndex));\r\n        }\r\n\r\n        public void GetItemGroupCount(int itemIndex, out int occurrenceCount) {\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"GetItemGroupCount({0})\", itemIndex));\r\n            occurrenceCount = 1;\r\n        }\r\n\r\n        public void OnCacheHint(NativeMethods.LVITEMINDEX from, NativeMethods.LVITEMINDEX to) {\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"OnCacheHint({0}, {1}, {2}, {3})\", from.iGroup, from.iItem, to.iGroup, to.iItem));\r\n            olv.GroupingStrategy.CacheHint(from.iGroup, from.iItem, to.iGroup, to.iItem);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Implementation/VirtualListDataSource.cs",
    "content": "﻿/*\r\n * VirtualListDataSource - Encapsulate how data is provided to a virtual list\r\n *\r\n * Author: Phillip Piper\r\n * Date: 28/08/2009 11:10am\r\n *\r\n * Change log:\r\n * v2.4\r\n * 2010-04-01   JPP  - Added IFilterableDataSource\r\n * v2.3\r\n * 2009-08-28   JPP  - Initial version (Separated from VirtualObjectListView.cs)\r\n *\r\n * To do:\r\n *\r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A VirtualListDataSource is a complete manner to provide functionality to a virtual list.\r\n    /// An object that implements this interface provides a VirtualObjectListView with all the\r\n    /// information it needs to be fully functional.\r\n    /// </summary>\r\n    /// <remarks>Implementors must provide functioning implementations of at least GetObjectCount()\r\n    /// and GetNthObject(), otherwise nothing will appear in the list.</remarks>\r\n    public interface IVirtualListDataSource\r\n    {\r\n        /// <summary>\r\n        /// Return the object that should be displayed at the n'th row.\r\n        /// </summary>\r\n        /// <param name=\"n\">The index of the row whose object is to be returned.</param>\r\n        /// <returns>The model object at the n'th row, or null if the fetching was unsuccessful.</returns>\r\n        Object GetNthObject(int n);\r\n\r\n        /// <summary>\r\n        /// Return the number of rows that should be visible in the virtual list\r\n        /// </summary>\r\n        /// <returns>The number of rows the list view should have.</returns>\r\n        int GetObjectCount();\r\n\r\n        /// <summary>\r\n        /// Get the index of the row that is showing the given model object\r\n        /// </summary>\r\n        /// <param name=\"model\">The model object sought</param>\r\n        /// <returns>The index of the row showing the model, or -1 if the object could not be found.</returns>\r\n        int GetObjectIndex(Object model);\r\n\r\n        /// <summary>\r\n        /// The ListView is about to request the given range of items. Do\r\n        /// whatever caching seems appropriate.\r\n        /// </summary>\r\n        /// <param name=\"first\"></param>\r\n        /// <param name=\"last\"></param>\r\n        void PrepareCache(int first, int last);\r\n\r\n        /// <summary>\r\n        /// Find the first row that \"matches\" the given text in the given range.\r\n        /// </summary>\r\n        /// <param name=\"value\">The text typed by the user</param>\r\n        /// <param name=\"first\">Start searching from this index. This may be greater than the 'to' parameter, \r\n        /// in which case the search should descend</param>\r\n        /// <param name=\"last\">Do not search beyond this index. This may be less than the 'from' parameter.</param>\r\n        /// <param name=\"column\">The column that should be considered when looking for a match.</param>\r\n        /// <returns>Return the index of row that was matched, or -1 if no match was found</returns>\r\n        int SearchText(string value, int first, int last, OLVColumn column);\r\n\r\n        /// <summary>\r\n        /// Sort the model objects in the data source.\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"order\"></param>\r\n        void Sort(OLVColumn column, SortOrder order);\r\n\r\n        //-----------------------------------------------------------------------------------\r\n        // Modification commands\r\n        // THINK: Should we split these four into a separate interface?\r\n\r\n        /// <summary>\r\n        /// Add the given collection of model objects to this control.\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">A collection of model objects</param>\r\n        void AddObjects(ICollection modelObjects);\r\n\r\n        /// <summary>\r\n        /// Insert the given collection of model objects to this control at the position\r\n        /// </summary>\r\n        /// <param name=\"index\">Index where the collection will be added</param>\r\n        /// <param name=\"modelObjects\">A collection of model objects</param>\r\n        void InsertObjects(int index, ICollection modelObjects);\r\n\r\n        /// <summary>\r\n        /// Remove all of the given objects from the control\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">Collection of objects to be removed</param>\r\n        void RemoveObjects(ICollection modelObjects);\r\n\r\n        /// <summary>\r\n        /// Set the collection of objects that this control will show.\r\n        /// </summary>\r\n        /// <param name=\"collection\"></param>\r\n        void SetObjects(IEnumerable collection);\r\n\r\n        /// <summary>\r\n        /// Update/replace the nth object with the given object\r\n        /// </summary>\r\n        /// <param name=\"index\"></param>\r\n        /// <param name=\"modelObject\"></param>\r\n        void UpdateObject(int index, object modelObject);\r\n    }\r\n\r\n    /// <summary>\r\n    /// This extension allow virtual lists to filter their contents\r\n    /// </summary>\r\n    public interface IFilterableDataSource\r\n    {\r\n        /// <summary>\r\n        /// All subsequent retrievals on this data source should be filtered\r\n        /// through the given filters. null means no filtering of that kind.\r\n        /// </summary>\r\n        /// <param name=\"modelFilter\"></param>\r\n        /// <param name=\"listFilter\"></param>\r\n        void ApplyFilters(IModelFilter modelFilter, IListFilter listFilter);\r\n    }\r\n\r\n    /// <summary>\r\n    /// A do-nothing implementation of the VirtualListDataSource interface.\r\n    /// </summary>\r\n    public class AbstractVirtualListDataSource : IVirtualListDataSource, IFilterableDataSource\r\n    {\r\n        /// <summary>\r\n        /// Creates an AbstractVirtualListDataSource\r\n        /// </summary>\r\n        /// <param name=\"listView\"></param>\r\n        public AbstractVirtualListDataSource(VirtualObjectListView listView) {\r\n            this.listView = listView;\r\n        }\r\n\r\n        /// <summary>\r\n        /// The list view that this data source is giving information to.\r\n        /// </summary>\r\n        protected VirtualObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"n\"></param>\r\n        /// <returns></returns>\r\n        public virtual object GetNthObject(int n) {\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <returns></returns>\r\n        public virtual int GetObjectCount() {\r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        public virtual int GetObjectIndex(object model) {\r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"from\"></param>\r\n        /// <param name=\"to\"></param>\r\n        public virtual void PrepareCache(int from, int to) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"value\"></param>\r\n        /// <param name=\"first\"></param>\r\n        /// <param name=\"last\"></param>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns></returns>\r\n        public virtual int SearchText(string value, int first, int last, OLVColumn column) {\r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"order\"></param>\r\n        public virtual void Sort(OLVColumn column, SortOrder order) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"modelObjects\"></param>\r\n        public virtual void AddObjects(ICollection modelObjects) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"index\"></param>\r\n        /// <param name=\"modelObjects\"></param>\r\n        public virtual void InsertObjects(int index, ICollection modelObjects) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"modelObjects\"></param>\r\n        public virtual void RemoveObjects(ICollection modelObjects) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"collection\"></param>\r\n        public virtual void SetObjects(IEnumerable collection) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update/replace the nth object with the given object\r\n        /// </summary>\r\n        /// <param name=\"index\"></param>\r\n        /// <param name=\"modelObject\"></param>\r\n        public virtual void UpdateObject(int index, object modelObject) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// This is a useful default implementation of SearchText method, intended to be called\r\n        /// by implementors of IVirtualListDataSource.\r\n        /// </summary>\r\n        /// <param name=\"value\"></param>\r\n        /// <param name=\"first\"></param>\r\n        /// <param name=\"last\"></param>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"source\"></param>\r\n        /// <returns></returns>\r\n        static public int DefaultSearchText(string value, int first, int last, OLVColumn column, IVirtualListDataSource source) {\r\n            if (first <= last) {\r\n                for (int i = first; i <= last; i++) {\r\n                    string data = column.GetStringValue(source.GetNthObject(i));\r\n                    if (data.StartsWith(value, StringComparison.CurrentCultureIgnoreCase))\r\n                        return i;\r\n                }\r\n            } else {\r\n                for (int i = first; i >= last; i--) {\r\n                    string data = column.GetStringValue(source.GetNthObject(i));\r\n                    if (data.StartsWith(value, StringComparison.CurrentCultureIgnoreCase))\r\n                        return i;\r\n                }\r\n            }\r\n\r\n            return -1;\r\n        }\r\n\r\n        #region IFilterableDataSource Members\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"modelFilter\"></param>\r\n        /// <param name=\"listFilter\"></param>\r\n        virtual public void ApplyFilters(IModelFilter modelFilter, IListFilter listFilter) {\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// This class mimics the behavior of VirtualObjectListView v1.x.\r\n    /// </summary>\r\n    public class VirtualListVersion1DataSource : AbstractVirtualListDataSource\r\n    {\r\n        /// <summary>\r\n        /// Creates a VirtualListVersion1DataSource\r\n        /// </summary>\r\n        /// <param name=\"listView\"></param>\r\n        public VirtualListVersion1DataSource(VirtualObjectListView listView)\r\n            : base(listView) {\r\n        }\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// How will the n'th object of the data source be fetched?\r\n        /// </summary>\r\n        public RowGetterDelegate RowGetter {\r\n            get { return rowGetter; }\r\n            set { rowGetter = value; }\r\n        }\r\n        private RowGetterDelegate rowGetter;\r\n\r\n        #endregion\r\n\r\n        #region IVirtualListDataSource implementation\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"n\"></param>\r\n        /// <returns></returns>\r\n        public override object GetNthObject(int n) {\r\n            if (RowGetter == null)\r\n                return null;\r\n            else\r\n                return RowGetter(n);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"value\"></param>\r\n        /// <param name=\"first\"></param>\r\n        /// <param name=\"last\"></param>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns></returns>\r\n        public override int SearchText(string value, int first, int last, OLVColumn column) {\r\n            return DefaultSearchText(value, first, last, column, this);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/OLVColumn.cs",
    "content": "﻿/*\r\n * OLVColumn - A column in an ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 31-March-2011 5:53 pm\r\n *\r\n * Change log:\r\n * 2015-06-12  JPP  - HeaderTextAlign became nullable so that it can be \"not set\" (this was always the intent)\r\n * 2014-09-07  JPP  - Added ability to have checkboxes in headers\r\n * \r\n * 2011-05-27  JPP  - Added Sortable, Hideable, Groupable, Searchable, ShowTextInHeader properties\r\n * 2011-04-12  JPP  - Added HasFilterIndicator\r\n * 2011-03-31  JPP  - Split into its own file\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.ComponentModel;\r\nusing System.Windows.Forms;\r\nusing System.Drawing;\r\nusing System.Collections;\r\nusing System.Drawing.Design;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    // TODO\r\n    //[TypeConverter(typeof(ExpandableObjectConverter))]\r\n    //public class CheckBoxSettings\r\n    //{\r\n    //    private bool useSettings;\r\n    //    private Image checkedImage;\r\n\r\n    //    public bool UseSettings {\r\n    //        get { return useSettings; }\r\n    //        set { useSettings = value; }\r\n    //    }\r\n\r\n    //    public Image CheckedImage {\r\n    //        get { return checkedImage; }\r\n    //        set { checkedImage = value; }\r\n    //    }\r\n\r\n    //    public Image UncheckedImage {\r\n    //        get { return checkedImage; }\r\n    //        set { checkedImage = value; }\r\n    //    }\r\n\r\n    //    public Image IndeterminateImage {\r\n    //        get { return checkedImage; }\r\n    //        set { checkedImage = value; }\r\n    //    }\r\n    //}\r\n\r\n    /// <summary>\r\n    /// An OLVColumn knows which aspect of an object it should present.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// The column knows how to:\r\n    /// <list type=\"bullet\">\r\n    ///\t<item><description>extract its aspect from the row object</description></item>\r\n    ///\t<item><description>convert an aspect to a string</description></item>\r\n    ///\t<item><description>calculate the image for the row object</description></item>\r\n    ///\t<item><description>extract a group \"key\" from the row object</description></item>\r\n    ///\t<item><description>convert a group \"key\" into a title for the group</description></item>\r\n    /// </list>\r\n    /// <para>For sorting to work correctly, aspects from the same column\r\n    /// must be of the same type, that is, the same aspect cannot sometimes\r\n    /// return strings and other times integers.</para>\r\n    /// </remarks>\r\n    [Browsable(false)]\r\n    public partial class OLVColumn : ColumnHeader {\r\n\r\n        /// <summary>\r\n        /// How should the button be sized?\r\n        /// </summary>\r\n        public enum ButtonSizingMode\r\n        {\r\n            /// <summary>\r\n            /// Every cell will have the same sized button, as indicated by ButtonSize property\r\n            /// </summary>\r\n            FixedBounds,\r\n\r\n            /// <summary>\r\n            /// Every cell will draw a button that fills the cell, inset by ButtonPadding\r\n            /// </summary>\r\n            CellBounds,\r\n\r\n            /// <summary>\r\n            /// Each button will be resized to contain the text of the Aspect\r\n            /// </summary>\r\n            TextBounds\r\n        }\r\n\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create an OLVColumn\r\n        /// </summary>\r\n        public OLVColumn() {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Initialize a column to have the given title, and show the given aspect\r\n        /// </summary>\r\n        /// <param name=\"title\">The title of the column</param>\r\n        /// <param name=\"aspect\">The aspect to be shown in the column</param>\r\n        public OLVColumn(string title, string aspect)\r\n            : this() {\r\n            Text = title;\r\n            AspectName = aspect;\r\n        }\r\n\r\n        #endregion \r\n\r\n        #region Public Properties\r\n\r\n        /// <summary>\r\n        /// This delegate will be used to extract a value to be displayed in this column.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If this is set, AspectName is ignored.\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public AspectGetterDelegate AspectGetter {\r\n            get { return aspectGetter; }\r\n            set { aspectGetter = value; }\r\n        }\r\n        private AspectGetterDelegate aspectGetter;\r\n\r\n        /// <summary>\r\n        /// Remember if this aspect getter for this column was generated internally, and can therefore\r\n        /// be regenerated at will\r\n        /// </summary>\r\n        [Obsolete(\"This property is no longer maintained\", true),\r\n         Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool AspectGetterAutoGenerated {\r\n            get { return aspectGetterAutoGenerated; }\r\n            set { aspectGetterAutoGenerated = value; }\r\n        }\r\n        private bool aspectGetterAutoGenerated;\r\n\r\n        /// <summary>\r\n        /// The name of the property or method that should be called to get the value to display in this column.\r\n        /// This is only used if a ValueGetterDelegate has not been given.\r\n        /// </summary>\r\n        /// <remarks>This name can be dotted to chain references to properties or parameter-less methods.</remarks>\r\n        /// <example>\"DateOfBirth\"</example>\r\n        /// <example>\"Owner.HomeAddress.Postcode\"</example>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The name of the property or method that should be called to get the aspect to display in this column\"),\r\n         DefaultValue(null)]\r\n        public string AspectName {\r\n            get { return aspectName; }\r\n            set {\r\n                aspectName = value;\r\n                aspectMunger = null;\r\n            }\r\n        }\r\n        private string aspectName;\r\n\r\n        /// <summary>\r\n        /// This delegate will be used to put an edited value back into the model object.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This does nothing if IsEditable == false.\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public AspectPutterDelegate AspectPutter {\r\n            get { return aspectPutter; }\r\n            set { aspectPutter = value; }\r\n        }\r\n        private AspectPutterDelegate aspectPutter;\r\n\r\n        /// <summary>\r\n        /// The delegate that will be used to translate the aspect to display in this column into a string.\r\n        /// </summary>\r\n        /// <remarks>If this value is set, AspectToStringFormat will be ignored.</remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public AspectToStringConverterDelegate AspectToStringConverter {\r\n            get { return aspectToStringConverter; }\r\n            set { aspectToStringConverter = value; }\r\n        }\r\n        private AspectToStringConverterDelegate aspectToStringConverter;\r\n\r\n        /// <summary>\r\n        /// This format string will be used to convert an aspect to its string representation.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This string is passed as the first parameter to the String.Format() method.\r\n        /// This is only used if AspectToStringConverter has not been set.</remarks>\r\n        /// <example>\"{0:C}\" to convert a number to currency</example>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The format string that will be used to convert an aspect to its string representation\"),\r\n         DefaultValue(null)]\r\n        public string AspectToStringFormat {\r\n            get { return aspectToStringFormat; }\r\n            set { aspectToStringFormat = value; }\r\n        }\r\n        private string aspectToStringFormat;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the cell editor should use AutoComplete\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the editor for cells of this column use AutoComplete\"),\r\n         DefaultValue(true)]\r\n        public bool AutoCompleteEditor {\r\n            get { return AutoCompleteEditorMode != AutoCompleteMode.None; }\r\n            set {\r\n                if (value) {\r\n                    if (AutoCompleteEditorMode == AutoCompleteMode.None)\r\n                        AutoCompleteEditorMode = AutoCompleteMode.Append;\r\n                } else\r\n                    AutoCompleteEditorMode = AutoCompleteMode.None;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the cell editor should use AutoComplete\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the editor for cells of this column use AutoComplete\"),\r\n         DefaultValue(AutoCompleteMode.Append)]\r\n        public AutoCompleteMode AutoCompleteEditorMode {\r\n            get { return autoCompleteEditorMode; }\r\n            set { autoCompleteEditorMode = value; }\r\n        }\r\n        private AutoCompleteMode autoCompleteEditorMode = AutoCompleteMode.Append;\r\n\r\n        /// <summary>\r\n        /// Gets whether this column can be hidden by user actions\r\n        /// </summary>\r\n        /// <remarks>This take into account both the Hideable property and whether this column\r\n        /// is the primary column of the listview (column 0).</remarks>\r\n        [Browsable(false)]\r\n        public bool CanBeHidden {\r\n            get {\r\n                return Hideable && (Index != 0);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// When a cell is edited, should the whole cell be used (minus any space used by checkbox or image)?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>This is always treated as true when the control is NOT owner drawn.</para>\r\n        /// <para>\r\n        /// When this is false (the default) and the control is owner drawn, \r\n        /// ObjectListView will try to calculate the width of the cell's\r\n        /// actual contents, and then size the editing control to be just the right width. If this is true,\r\n        /// the whole width of the cell will be used, regardless of the cell's contents.\r\n        /// </para>\r\n        /// <para>If this property is not set on the column, the value from the control will be used\r\n        /// </para>\r\n        /// <para>This value is only used when the control is in Details view.</para>\r\n        /// <para>Regardless of this setting, developers can specify the exact size of the editing control\r\n        /// by listening for the CellEditStarting event.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"When a cell is edited, should the whole cell be used?\"),\r\n         DefaultValue(null)]\r\n        public virtual bool? CellEditUseWholeCell\r\n        {\r\n            get { return cellEditUseWholeCell; }\r\n            set { cellEditUseWholeCell = value; }\r\n        }\r\n        private bool? cellEditUseWholeCell;\r\n\r\n        /// <summary>\r\n        /// Get whether the whole cell should be used when editing a cell in this column\r\n        /// </summary>\r\n        /// <remarks>This calculates the current effective value, which may be different to CellEditUseWholeCell</remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual bool CellEditUseWholeCellEffective {\r\n            get {\r\n                bool? columnSpecificValue = ListView.View == View.Details ? CellEditUseWholeCell : (bool?) null;\r\n                return (columnSpecificValue ?? ((ObjectListView) ListView).CellEditUseWholeCell);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets how many pixels will be left blank around this cells in this column\r\n        /// </summary>\r\n        /// <remarks>This setting only takes effect when the control is owner drawn.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How many pixels will be left blank around the cells in this column?\"),\r\n         DefaultValue(null)]\r\n        public Rectangle? CellPadding\r\n        {\r\n            get { return cellPadding; }\r\n            set { cellPadding = value; }\r\n        }\r\n        private Rectangle? cellPadding;\r\n\r\n        /// <summary>\r\n        /// Gets or sets how cells in this column will be vertically aligned.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This setting only takes effect when the control is owner drawn.\r\n        /// </para>        \r\n        /// <para>\r\n        /// If this is not set, the value from the control itself will be used.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How will cell values be vertically aligned?\"),\r\n         DefaultValue(null)]\r\n        public virtual StringAlignment? CellVerticalAlignment {\r\n            get { return cellVerticalAlignment; }\r\n            set { cellVerticalAlignment = value; }\r\n        }\r\n        private StringAlignment? cellVerticalAlignment;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this column will show a checkbox.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Setting this on column 0 has no effect. Column 0 check box is controlled\r\n        /// by the CheckBoxes property on the ObjectListView itself.\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should values in this column be treated as a checkbox, rather than a string?\"),\r\n         DefaultValue(false)]\r\n        public virtual bool CheckBoxes {\r\n            get { return checkBoxes; }\r\n            set {\r\n                if (checkBoxes == value)\r\n                    return;\r\n\r\n                checkBoxes = value;\r\n                if (checkBoxes) {\r\n                    if (Renderer == null)\r\n                        Renderer = new CheckStateRenderer();\r\n                } else {\r\n                    if (Renderer is CheckStateRenderer)\r\n                        Renderer = null;\r\n                }\r\n            }\r\n        }\r\n        private bool checkBoxes;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the clustering strategy used for this column. \r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// The clustering strategy is used to build a Filtering menu for this item. \r\n        /// If this is null, a useful default will be chosen. \r\n        /// </para>\r\n        /// <para>\r\n        /// To disable filtering on this colummn, set UseFiltering to false.\r\n        /// </para>\r\n        /// <para>\r\n        /// Cluster strategies belong to a particular column. The same instance\r\n        /// cannot be shared between multiple columns.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IClusteringStrategy ClusteringStrategy {\r\n            get {\r\n                if (clusteringStrategy == null)\r\n                    ClusteringStrategy = DecideDefaultClusteringStrategy();\r\n                return clusteringStrategy;\r\n            }\r\n            set {\r\n                clusteringStrategy = value;\r\n                if (clusteringStrategy != null)\r\n                    clusteringStrategy.Column = this;\r\n            }\r\n        }\r\n        private IClusteringStrategy clusteringStrategy;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the button in this column (if this column is drawing buttons) will be enabled\r\n        /// even if the row itself is disabled\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"If this column contains a button, should the button be enabled even if the row is disabled?\"),\r\n         DefaultValue(false)]\r\n        public bool EnableButtonWhenItemIsDisabled\r\n        {\r\n            get { return enableButtonWhenItemIsDisabled; }\r\n            set { enableButtonWhenItemIsDisabled = value; }\r\n        }\r\n        private bool enableButtonWhenItemIsDisabled;\r\n\r\n        /// <summary>\r\n        /// Should this column resize to fill the free space in the listview?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If you want two (or more) columns to equally share the available free space, set this property to True.\r\n        /// If you want this column to have a larger or smaller share of the free space, you must\r\n        /// set the FreeSpaceProportion property explicitly.\r\n        /// </para>\r\n        /// <para>\r\n        /// Space filling columns are still governed by the MinimumWidth and MaximumWidth properties.\r\n        /// </para>\r\n        /// /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will this column resize to fill unoccupied horizontal space in the listview?\"),\r\n         DefaultValue(false)]\r\n        public bool FillsFreeSpace {\r\n            get { return FreeSpaceProportion > 0; }\r\n            set { FreeSpaceProportion = value ? 1 : 0; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// What proportion of the unoccupied horizontal space in the control should be given to this column?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// There are situations where it would be nice if a column (normally the rightmost one) would expand as\r\n        /// the list view expands, so that as much of the column was visible as possible without having to scroll\r\n        /// horizontally (you should never, ever make your users have to scroll anything horizontally!).\r\n        /// </para>\r\n        /// <para>\r\n        /// A space filling column is resized to occupy a proportion of the unoccupied width of the listview (the\r\n        /// unoccupied width is the width left over once all the the non-filling columns have been given their space).\r\n        /// This property indicates the relative proportion of that unoccupied space that will be given to this column.\r\n        /// The actual value of this property is not important -- only its value relative to the value in other columns.\r\n        /// For example:\r\n        /// <list type=\"bullet\">\r\n        /// <item><description>\r\n        /// If there is only one space filling column, it will be given all the free space, regardless of the value in FreeSpaceProportion.\r\n        /// </description></item>\r\n        /// <item><description>\r\n        /// If there are two or more space filling columns and they all have the same value for FreeSpaceProportion,\r\n        /// they will share the free space equally.\r\n        /// </description></item>\r\n        /// <item><description>\r\n        /// If there are three space filling columns with values of 3, 2, and 1\r\n        /// for FreeSpaceProportion, then the first column with occupy half the free space, the second will\r\n        /// occupy one-third of the free space, and the third column one-sixth of the free space.\r\n        /// </description></item>\r\n        /// </list>\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public int FreeSpaceProportion {\r\n            get { return freeSpaceProportion; }\r\n            set { freeSpaceProportion = Math.Max(0, value); }\r\n        }\r\n        private int freeSpaceProportion;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether groups will be rebuild on this columns values when this column's header is clicked.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>This setting is only used when ShowGroups is true.</para>\r\n        /// <para>\r\n        /// If this is false, clicking the header will not rebuild groups. It will not provide\r\n        /// any feedback as to why the list is not being regrouped. It is the programmers responsibility to\r\n        /// provide appropriate feedback.\r\n        /// </para>\r\n        /// <para>When this is false, BeforeCreatingGroups events are still fired, which can be used to allow grouping\r\n        /// or give feedback, on a case by case basis.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will the list create groups when this header is clicked?\"),\r\n         DefaultValue(true)]\r\n        public bool Groupable {\r\n            get { return groupable; }\r\n            set { groupable = value; }\r\n        }\r\n        private bool groupable = true;\r\n\r\n        /// <summary>\r\n        /// This delegate is called when a group has been created but not yet made\r\n        /// into a real ListViewGroup. The user can take this opportunity to fill\r\n        /// in lots of other details about the group.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public GroupFormatterDelegate GroupFormatter {\r\n            get { return groupFormatter; }\r\n            set { groupFormatter = value; }\r\n        }\r\n        private GroupFormatterDelegate groupFormatter;\r\n\r\n        /// <summary>\r\n        /// This delegate is called to get the object that is the key for the group\r\n        /// to which the given row belongs.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public GroupKeyGetterDelegate GroupKeyGetter {\r\n            get { return groupKeyGetter; }\r\n            set { groupKeyGetter = value; }\r\n        }\r\n        private GroupKeyGetterDelegate groupKeyGetter;\r\n\r\n        /// <summary>\r\n        /// This delegate is called to convert a group key into a title for that group.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public GroupKeyToTitleConverterDelegate GroupKeyToTitleConverter {\r\n            get { return groupKeyToTitleConverter; }\r\n            set { groupKeyToTitleConverter = value; }\r\n        }\r\n        private GroupKeyToTitleConverterDelegate groupKeyToTitleConverter;\r\n\r\n        /// <summary>\r\n        /// When the listview is grouped by this column and group title has an item count,\r\n        /// how should the lable be formatted?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// The given format string can/should have two placeholders:\r\n        /// <list type=\"bullet\">\r\n        /// <item><description>{0} - the original group title</description></item>\r\n        /// <item><description>{1} - the number of items in the group</description></item>\r\n        /// </list>\r\n        /// </remarks>\r\n        /// <example>\"{0} [{1} items]\"</example>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The format to use when suffixing item counts to group titles\"),\r\n         DefaultValue(null),\r\n         Localizable(true)]\r\n        public string GroupWithItemCountFormat {\r\n            get { return groupWithItemCountFormat; }\r\n            set { groupWithItemCountFormat = value; }\r\n        }\r\n        private string groupWithItemCountFormat;\r\n\r\n        /// <summary>\r\n        /// Gets this.GroupWithItemCountFormat or a reasonable default\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If GroupWithItemCountFormat is not set, its value will be taken from the ObjectListView if possible.\r\n        /// </remarks>\r\n        [Browsable(false)]\r\n        public string GroupWithItemCountFormatOrDefault {\r\n            get {\r\n                if (!String.IsNullOrEmpty(GroupWithItemCountFormat))\r\n                    return GroupWithItemCountFormat;\r\n\r\n                if (ListView != null) {\r\n                    cachedGroupWithItemCountFormat = ((ObjectListView)ListView).GroupWithItemCountFormatOrDefault;\r\n                    return cachedGroupWithItemCountFormat;\r\n                }\r\n\r\n                // There is one rare but pathelogically possible case where the ListView can\r\n                // be null (if the column is grouping a ListView, but is not one of the columns\r\n                // for that ListView) so we have to provide a workable default for that rare case.\r\n                return cachedGroupWithItemCountFormat ?? \"{0} [{1} items]\";\r\n            }\r\n        }\r\n        private string cachedGroupWithItemCountFormat;\r\n\r\n        /// <summary>\r\n        /// When the listview is grouped by this column and a group title has an item count,\r\n        /// how should the lable be formatted if there is only one item in the group?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// The given format string can/should have two placeholders:\r\n        /// <list type=\"bullet\">\r\n        /// <item><description>{0} - the original group title</description></item>\r\n        /// <item><description>{1} - the number of items in the group (always 1)</description></item>\r\n        /// </list>\r\n        /// </remarks>\r\n        /// <example>\"{0} [{1} item]\"</example>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The format to use when suffixing item counts to group titles\"),\r\n         DefaultValue(null),\r\n         Localizable(true)]\r\n        public string GroupWithItemCountSingularFormat {\r\n            get { return groupWithItemCountSingularFormat; }\r\n            set { groupWithItemCountSingularFormat = value; }\r\n        }\r\n        private string groupWithItemCountSingularFormat;\r\n\r\n        /// <summary>\r\n        /// Get this.GroupWithItemCountSingularFormat or a reasonable default\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>If this value is not set, the values from the list view will be used</para>\r\n        /// </remarks>\r\n        [Browsable(false)]\r\n        public string GroupWithItemCountSingularFormatOrDefault {\r\n            get {\r\n                if (!String.IsNullOrEmpty(GroupWithItemCountSingularFormat))\r\n                    return GroupWithItemCountSingularFormat;\r\n\r\n                if (ListView != null) {\r\n                    cachedGroupWithItemCountSingularFormat = ((ObjectListView)ListView).GroupWithItemCountSingularFormatOrDefault;\r\n                    return cachedGroupWithItemCountSingularFormat;\r\n                }\r\n\r\n                // There is one rare but pathelogically possible case where the ListView can\r\n                // be null (if the column is grouping a ListView, but is not one of the columns\r\n                // for that ListView) so we have to provide a workable default for that rare case.\r\n                return cachedGroupWithItemCountSingularFormat ?? \"{0} [{1} item]\";\r\n            }\r\n        }\r\n        private string cachedGroupWithItemCountSingularFormat;\r\n\r\n        /// <summary>\r\n        /// Gets whether this column should be drawn with a filter indicator in the column header.\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public bool HasFilterIndicator {\r\n            get {\r\n                return UseFiltering && ValuesChosenForFiltering != null && ValuesChosenForFiltering.Count > 0;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets a delegate that will be used to own draw header column.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public HeaderDrawingDelegate HeaderDrawing {\r\n            get { return headerDrawing; }\r\n            set { headerDrawing = value; }\r\n        }\r\n        private HeaderDrawingDelegate headerDrawing;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the style that will be used to draw the header for this column\r\n        /// </summary>\r\n        /// <remarks>This is only uses when the owning ObjectListView has HeaderUsesThemes set to false.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"What style will be used to draw the header of this column\"),\r\n         DefaultValue(null)]\r\n        public HeaderFormatStyle HeaderFormatStyle {\r\n            get { return headerFormatStyle; }\r\n            set { headerFormatStyle = value; }\r\n        }\r\n        private HeaderFormatStyle headerFormatStyle;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the font in which the header for this column will be drawn\r\n        /// </summary>\r\n        /// <remarks>You should probably use a HeaderFormatStyle instead of this property</remarks>\r\n        /// <remarks>This is only uses when HeaderUsesThemes is false.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Which font will be used to draw the header?\"),\r\n        DefaultValue(null)]\r\n        public Font HeaderFont {\r\n            get { return HeaderFormatStyle == null ? null : HeaderFormatStyle.Normal.Font; }\r\n            set {\r\n                if (value == null && HeaderFormatStyle == null)\r\n                    return;\r\n\r\n                if (HeaderFormatStyle == null)\r\n                    HeaderFormatStyle = new HeaderFormatStyle();\r\n\r\n                HeaderFormatStyle.SetFont(value);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the color in which the text of the header for this column will be drawn\r\n        /// </summary>\r\n        /// <remarks>You should probably use a HeaderFormatStyle instead of this property</remarks>\r\n        /// <remarks>This is only uses when HeaderUsesThemes is false.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"In what color will the header text be drawn?\"),\r\n         DefaultValue(typeof(Color), \"\")]\r\n        public Color HeaderForeColor {\r\n            get { return HeaderFormatStyle == null ? Color.Empty : HeaderFormatStyle.Normal.ForeColor; }\r\n            set {\r\n                if (value.IsEmpty && HeaderFormatStyle == null)\r\n                    return;\r\n\r\n                if (HeaderFormatStyle == null)\r\n                    HeaderFormatStyle = new HeaderFormatStyle();\r\n\r\n                HeaderFormatStyle.SetForeColor(value);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the text values in this column will act like hyperlinks\r\n        /// </summary>\r\n        /// <remarks>This is only taken into account when HeaderUsesThemes is false.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Name of the image that will be shown in the column header.\"),\r\n         DefaultValue(null),\r\n         TypeConverter(typeof(ImageKeyConverter)),\r\n         Editor(\"System.Windows.Forms.Design.ImageIndexEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\", typeof(UITypeEditor)),\r\n         RefreshProperties(RefreshProperties.Repaint)]\r\n        public string HeaderImageKey {\r\n            get { return headerImageKey; }\r\n            set { headerImageKey = value; }\r\n        }\r\n        private string headerImageKey;\r\n\r\n\r\n        /// <summary>\r\n        /// Gets or sets how the text of the header will be drawn?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How will the header text be aligned? If this is not set, the alignment of the header will follow the alignment of the column\"),\r\n         DefaultValue(null)]\r\n        public HorizontalAlignment? HeaderTextAlign {\r\n            get { return headerTextAlign; }\r\n            set { headerTextAlign = value; }\r\n        }\r\n        private HorizontalAlignment? headerTextAlign;\r\n\r\n        /// <summary>\r\n        /// Return the text alignment of the header. This will either have been set explicitly,\r\n        /// or will follow the alignment of the text in the column\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public HorizontalAlignment HeaderTextAlignOrDefault\r\n        {\r\n            get { return headerTextAlign.HasValue ? headerTextAlign.Value : TextAlign; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the header alignment converted to a StringAlignment\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public StringAlignment HeaderTextAlignAsStringAlignment {\r\n            get {\r\n                switch (HeaderTextAlignOrDefault) {\r\n                    case HorizontalAlignment.Left: return StringAlignment.Near;\r\n                    case HorizontalAlignment.Center: return StringAlignment.Center;\r\n                    case HorizontalAlignment.Right: return StringAlignment.Far;\r\n                    default: return StringAlignment.Near;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether or not this column has an image in the header\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public bool HasHeaderImage {\r\n            get {\r\n                return (ListView != null &&\r\n                    ListView.SmallImageList != null &&\r\n                    ListView.SmallImageList.Images.ContainsKey(HeaderImageKey));\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this header will place a checkbox in the header\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Draw a checkbox in the header of this column\"),\r\n         DefaultValue(false)]\r\n        public bool HeaderCheckBox\r\n        {\r\n            get { return headerCheckBox; }\r\n            set { headerCheckBox = value; }\r\n        }\r\n        private bool headerCheckBox;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this header will place a tri-state checkbox in the header\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Draw a tri-state checkbox in the header of this column\"),\r\n         DefaultValue(false)]\r\n        public bool HeaderTriStateCheckBox\r\n        {\r\n            get { return headerTriStateCheckBox; }\r\n            set { headerTriStateCheckBox = value; }\r\n        }\r\n        private bool headerTriStateCheckBox;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the checkedness of the checkbox in the header of this column\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Checkedness of the header checkbox\"),\r\n         DefaultValue(CheckState.Unchecked)]\r\n        public CheckState HeaderCheckState\r\n        {\r\n            get { return headerCheckState; }\r\n            set { headerCheckState = value; }\r\n        }\r\n        private CheckState headerCheckState = CheckState.Unchecked;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the \r\n        /// checking/unchecking the value of the header's checkbox will result in the\r\n        /// checkboxes for all cells in this column being set to the same checked/unchecked.\r\n        /// Defaults to true.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// There is no reverse of this function that automatically updates the header when the \r\n        /// checkedness of a cell changes.\r\n        /// </para>\r\n        /// <para>\r\n        /// This property's behaviour on a TreeListView is probably best describes as undefined \r\n        /// and should be avoided.\r\n        /// </para>\r\n        /// <para>\r\n        /// The performance of this action (checking/unchecking all rows) is O(n) where n is the \r\n        /// number of rows. It will work on large virtual lists, but it may take some time.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Update row checkboxs when the header checkbox is clicked by the user\"),\r\n         DefaultValue(true)]\r\n        public bool HeaderCheckBoxUpdatesRowCheckBoxes {\r\n            get { return headerCheckBoxUpdatesRowCheckBoxes; }\r\n            set { headerCheckBoxUpdatesRowCheckBoxes = value; }\r\n        }\r\n        private bool headerCheckBoxUpdatesRowCheckBoxes = true;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the checkbox in the header is disabled\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Clicking on a disabled checkbox does not change its value, though it does raise\r\n        /// a HeaderCheckBoxChanging event, which allows the programmer the opportunity to do \r\n        /// something appropriate.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Is the checkbox in the header of this column disabled\"),\r\n         DefaultValue(false)]\r\n        public bool HeaderCheckBoxDisabled\r\n        {\r\n            get { return headerCheckBoxDisabled; }\r\n            set { headerCheckBoxDisabled = value; }\r\n        }\r\n        private bool headerCheckBoxDisabled;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this column can be hidden by the user.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>Column 0 can never be hidden, regardless of this setting.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will the user be able to choose to hide this column?\"),\r\n         DefaultValue(true)]\r\n        public bool Hideable {\r\n            get { return hideable; }\r\n            set { hideable = value; }\r\n        }\r\n        private bool hideable = true;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the text values in this column will act like hyperlinks\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will the text values in the cells of this column act like hyperlinks?\"),\r\n         DefaultValue(false)]\r\n        public bool Hyperlink {\r\n            get { return hyperlink; }\r\n            set { hyperlink = value; }\r\n        }\r\n        private bool hyperlink;\r\n\r\n        /// <summary>\r\n        /// This is the name of property that will be invoked to get the image selector of the\r\n        /// image that should be shown in this column.\r\n        /// It can return an int, string, Image or null.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>This is ignored if ImageGetter is not null.</para>\r\n        /// <para>The property can use these return value to identify the image:</para>\r\n        /// <list type=\"bullet\">\r\n        /// <item><description>null or -1 -- indicates no image</description></item>\r\n        /// <item><description>an int -- the int value will be used as an index into the image list</description></item>\r\n        /// <item><description>a String -- the string value will be used as a key into the image list</description></item>\r\n        /// <item><description>an Image -- the Image will be drawn directly (only in OwnerDrawn mode)</description></item>\r\n        /// </list>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The name of the property that holds the image selector\"),\r\n         DefaultValue(null)]\r\n        public string ImageAspectName {\r\n            get { return imageAspectName; }\r\n            set { imageAspectName = value; }\r\n        }\r\n        private string imageAspectName;\r\n\r\n        /// <summary>\r\n        /// This delegate is called to get the image selector of the image that should be shown in this column.\r\n        /// It can return an int, string, Image or null.\r\n        /// </summary>\r\n        /// <remarks><para>This delegate can use these return value to identify the image:</para>\r\n        /// <list type=\"bullet\">\r\n        /// <item><description>null or -1 -- indicates no image</description></item>\r\n        /// <item><description>an int -- the int value will be used as an index into the image list</description></item>\r\n        /// <item><description>a String -- the string value will be used as a key into the image list</description></item>\r\n        /// <item><description>an Image -- the Image will be drawn directly (only in OwnerDrawn mode)</description></item>\r\n        /// </list>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public ImageGetterDelegate ImageGetter {\r\n            get { return imageGetter; }\r\n            set { imageGetter = value; }\r\n        }\r\n        private ImageGetterDelegate imageGetter;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this column will draw buttons in its cells\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// When this is set to true, the renderer for the column is become a ColumnButtonRenderer\r\n        /// if it isn't already. If this is set to false, any previous button renderer will be discarded\r\n        /// </para>\r\n        /// If the cell's aspect is null or empty, nothing will be drawn in the cell.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Does this column draw its cells as buttons?\"),\r\n         DefaultValue(false)]\r\n        public bool IsButton {\r\n            get { return isButton; }\r\n            set {\r\n                isButton = value;\r\n                if (value) {\r\n                    if (Renderer is not ColumnButtonRenderer buttonRenderer) {\r\n                        Renderer = CreateColumnButtonRenderer();\r\n                        FillInColumnButtonRenderer();\r\n                    }\r\n                } else {\r\n                    if (Renderer is ColumnButtonRenderer)\r\n                        Renderer = null;\r\n                }\r\n            }\r\n        }\r\n        private bool isButton;\r\n\r\n        /// <summary>\r\n        /// Create a ColumnButtonRenderer to draw buttons in this column\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        protected virtual ColumnButtonRenderer CreateColumnButtonRenderer() {\r\n            return new ColumnButtonRenderer();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Fill in details to our ColumnButtonRenderer based on the properties set on the column\r\n        /// </summary>\r\n        protected virtual void FillInColumnButtonRenderer() {\r\n            if (Renderer is not ColumnButtonRenderer buttonRenderer)\r\n                return;\r\n\r\n            buttonRenderer.SizingMode = ButtonSizing;\r\n            buttonRenderer.ButtonSize = ButtonSize;\r\n            buttonRenderer.ButtonPadding = ButtonPadding;\r\n            buttonRenderer.MaxButtonWidth = ButtonMaxWidth;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the maximum width that a button can occupy.\r\n        /// -1 means there is no maximum width.\r\n        /// </summary>\r\n        /// <remarks>This is only considered when the SizingMode is TextBounds</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The maximum width that a button can occupy when the SizingMode is TextBounds\"),\r\n         DefaultValue(-1)]\r\n        public int ButtonMaxWidth {\r\n            get { return buttonMaxWidth; }\r\n            set {\r\n                buttonMaxWidth = value;\r\n                FillInColumnButtonRenderer();\r\n            }\r\n        }\r\n        private int buttonMaxWidth = -1;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the extra space that surrounds the cell when the SizingMode is TextBounds\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The extra space that surrounds the cell when the SizingMode is TextBounds\"),\r\n         DefaultValue(null)]\r\n        public Size? ButtonPadding {\r\n            get { return buttonPadding; }\r\n            set {\r\n                buttonPadding = value;\r\n                FillInColumnButtonRenderer();\r\n            }\r\n        }\r\n        private Size? buttonPadding;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the size of the button when the SizingMode is FixedBounds\r\n        /// </summary>\r\n        /// <remarks>If this is not set, the bounds of the cell will be used</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The size of the button when the SizingMode is FixedBounds\"),\r\n         DefaultValue(null)]\r\n        public Size? ButtonSize {\r\n            get { return buttonSize; }\r\n            set {\r\n                buttonSize = value;\r\n                FillInColumnButtonRenderer();\r\n            }\r\n        }\r\n        private Size? buttonSize;\r\n\r\n        /// <summary>\r\n        /// Gets or sets how each button will be sized if this column is displaying buttons\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"If this column is showing buttons, how each button will be sized\"),\r\n         DefaultValue(ButtonSizingMode.TextBounds)]\r\n        public ButtonSizingMode ButtonSizing {\r\n            get { return buttonSizing; }\r\n            set {\r\n                buttonSizing = value;\r\n                FillInColumnButtonRenderer();\r\n            }\r\n        }\r\n        private ButtonSizingMode buttonSizing = ButtonSizingMode.TextBounds;\r\n\r\n        /// <summary>\r\n        /// Can the values shown in this column be edited?\r\n        /// </summary>\r\n        /// <remarks>This defaults to true, since the primary means to control the editability of a listview\r\n        /// is on the listview itself. Once a listview is editable, all the columns are too, unless the\r\n        /// programmer explicitly marks them as not editable</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Can the value in this column be edited?\"),\r\n         DefaultValue(true)]\r\n        public bool IsEditable\r\n        {\r\n            get { return isEditable; }\r\n            set { isEditable = value; }\r\n        }\r\n        private bool isEditable = true;\r\n\r\n        /// <summary>\r\n        /// Is this column a fixed width column?\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public bool IsFixedWidth {\r\n            get {\r\n                return (MinimumWidth != -1 && MaximumWidth != -1 && MinimumWidth >= MaximumWidth);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get/set whether this column should be used when the view is switched to tile view.\r\n        /// </summary>\r\n        /// <remarks>Column 0 is always included in tileview regardless of this setting.\r\n        /// Tile views do not work well with many \"columns\" of information. \r\n        /// Two or three works best.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will this column be used when the view is switched to tile view\"),\r\n         DefaultValue(false)]\r\n        public bool IsTileViewColumn {\r\n            get { return isTileViewColumn; }\r\n            set { isTileViewColumn = value; }\r\n        }\r\n        private bool isTileViewColumn;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the text of this header should be rendered vertically.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>If this is true, it is a good idea to set ToolTipText to the name of the column so it's easy to read.</para>\r\n        /// <para>Vertical headers are text only. They do not draw their image.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will the header for this column be drawn vertically?\"),\r\n         DefaultValue(false)]\r\n        public bool IsHeaderVertical {\r\n            get { return isHeaderVertical; }\r\n            set { isHeaderVertical = value; }\r\n        }\r\n        private bool isHeaderVertical;\r\n\r\n        /// <summary>\r\n        /// Can this column be seen by the user?\r\n        /// </summary>\r\n        /// <remarks>After changing this value, you must call RebuildColumns() before the changes will take effect.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Can this column be seen by the user?\"),\r\n         DefaultValue(true)]\r\n        public bool IsVisible {\r\n            get { return isVisible; }\r\n            set\r\n            {\r\n                if (isVisible == value)\r\n                    return;\r\n\r\n                isVisible = value;\r\n                OnVisibilityChanged(EventArgs.Empty);\r\n            }\r\n        }\r\n        private bool isVisible = true;\r\n\r\n        /// <summary>\r\n        /// Where was this column last positioned within the Detail view columns\r\n        /// </summary>\r\n        /// <remarks>DisplayIndex is volatile. Once a column is removed from the control,\r\n        /// there is no way to discover where it was in the display order. This property\r\n        /// guards that information even when the column is not in the listview's active columns.</remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public int LastDisplayIndex {\r\n            get { return lastDisplayIndex; }\r\n            set { lastDisplayIndex = value;  }\r\n        }\r\n        private int lastDisplayIndex = -1;\r\n\r\n        /// <summary>\r\n        /// What is the maximum width that the user can give to this column?\r\n        /// </summary>\r\n        /// <remarks>-1 means there is no maximum width. Give this the same value as MinimumWidth to make a fixed width column.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"What is the maximum width to which the user can resize this column? -1 means no limit\"),\r\n         DefaultValue(-1)]\r\n        public int MaximumWidth {\r\n            get { return maxWidth; }\r\n            set {\r\n                maxWidth = value;\r\n                if (maxWidth != -1 && Width > maxWidth)\r\n                    Width = maxWidth;\r\n            }\r\n        }\r\n        private int maxWidth = -1;\r\n\r\n        /// <summary>\r\n        /// What is the minimum width that the user can give to this column?\r\n        /// </summary>\r\n        /// <remarks>-1 means there is no minimum width. Give this the same value as MaximumWidth to make a fixed width column.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"What is the minimum width to which the user can resize this column? -1 means no limit\"),\r\n         DefaultValue(-1)]\r\n        public int MinimumWidth {\r\n            get { return minWidth; }\r\n            set {\r\n                minWidth = value;\r\n                if (Width < minWidth)\r\n                    Width = minWidth;\r\n            }\r\n        }\r\n        private int minWidth = -1;\r\n\r\n        /// <summary>\r\n        /// Get/set the renderer that will be invoked when a cell needs to be redrawn\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"The renderer will draw this column when the ListView is owner drawn\"),\r\n        DefaultValue(null)]\r\n        public IRenderer Renderer {\r\n            get { return renderer; }\r\n            set { renderer = value; }\r\n        }\r\n        private IRenderer renderer;\r\n\r\n        /// <summary>\r\n        /// This delegate is called when a cell needs to be drawn in OwnerDrawn mode.\r\n        /// </summary>\r\n        /// <remarks>This method is kept primarily for backwards compatibility.\r\n        /// New code should implement an IRenderer, though this property will be maintained.</remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public RenderDelegate RendererDelegate {\r\n            get {\r\n                return Renderer is Version1Renderer version1Renderer ? version1Renderer.RenderDelegate : null;\r\n            }\r\n            set {\r\n                Renderer = value == null ? null : new Version1Renderer(value);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the text in this column's cell will be used when doing text searching.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If this is false, text filters will not trying searching this columns cells when looking for matches.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will the text of the cells in this column be considered when searching?\"),\r\n         DefaultValue(true)]\r\n        public bool Searchable {\r\n            get { return searchable; }\r\n            set { searchable = value; }\r\n        }\r\n        private bool searchable = true;\r\n\r\n        /// <summary>\r\n        /// Gets or sets a delegate which will return the array of text values that should be \r\n        /// considered for text matching when using a text based filter.\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public SearchValueGetterDelegate SearchValueGetter {\r\n            get { return searchValueGetter; }\r\n            set { searchValueGetter = value; }\r\n        }\r\n        private SearchValueGetterDelegate searchValueGetter;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the header for this column will include the column's Text.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If this is false, the only thing rendered in the column header will be the image from <see cref=\"HeaderImageKey\"/>.\r\n        /// </para>\r\n        /// <para>This setting is only considered when <see cref=\"ObjectListView.HeaderUsesThemes\"/> is false on the owning ObjectListView.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will the header for this column include text?\"),\r\n         DefaultValue(true)]\r\n        public bool ShowTextInHeader {\r\n            get { return showTextInHeader; }\r\n            set { showTextInHeader = value; }\r\n        }\r\n        private bool showTextInHeader = true;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the contents of the list will be resorted when the user clicks the \r\n        /// header of this column.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If this is false, clicking the header will not sort the list, but will not provide\r\n        /// any feedback as to why the list is not being sorted. It is the programmers responsibility to\r\n        /// provide appropriate feedback.\r\n        /// </para>\r\n        /// <para>When this is false, BeforeSorting events are still fired, which can be used to allow sorting\r\n        /// or give feedback, on a case by case basis.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will clicking this columns header resort the list?\"),\r\n         DefaultValue(true)]\r\n        public bool Sortable {\r\n            get { return sortable; }\r\n            set { sortable = value; }\r\n        }\r\n        private bool sortable = true;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the horizontal alignment of the contents of the column.\r\n        /// </summary>\r\n        /// <remarks>.NET will not allow column 0 to have any alignment except\r\n        /// to the left. We can't change the basic behaviour of the listview,\r\n        /// but when owner drawn, column 0 can now have other alignments.</remarks>\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        new public HorizontalAlignment TextAlign\r\n        {\r\n            get {\r\n                return textAlign.HasValue ? textAlign.Value : base.TextAlign;\r\n            }\r\n            set {\r\n                textAlign = value;\r\n                base.TextAlign = value;\r\n            }\r\n        }\r\n        private HorizontalAlignment? textAlign;\r\n\r\n        /// <summary>\r\n        /// Gets the StringAlignment equivilent of the column text alignment\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public StringAlignment TextStringAlign {\r\n            get {\r\n                switch (TextAlign) {\r\n                case HorizontalAlignment.Center:\r\n                    return StringAlignment.Center;\r\n                case HorizontalAlignment.Left:\r\n                    return StringAlignment.Near;\r\n                case HorizontalAlignment.Right:\r\n                    return StringAlignment.Far;\r\n                default:\r\n                    return StringAlignment.Near;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// What string should be displayed when the mouse is hovered over the header of this column?\r\n        /// </summary>\r\n        /// <remarks>If a HeaderToolTipGetter is installed on the owning ObjectListView, this\r\n        /// value will be ignored.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The tooltip to show when the mouse is hovered over the header of this column\"),\r\n         DefaultValue((String)null),\r\n         Localizable(true)]\r\n        public String ToolTipText {\r\n            get { return toolTipText; }\r\n            set { toolTipText = value; }\r\n        }\r\n        private String toolTipText;\r\n\r\n        /// <summary>\r\n        /// Should this column have a tri-state checkbox?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If this is true, the user can choose the third state (normally Indeterminate).\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should values in this column be treated as a tri-state checkbox?\"),\r\n         DefaultValue(false)]\r\n        public virtual bool TriStateCheckBoxes {\r\n            get { return triStateCheckBoxes; }\r\n            set {\r\n                triStateCheckBoxes = value;\r\n                if (value && !CheckBoxes)\r\n                    CheckBoxes = true;\r\n            }\r\n        }\r\n        private bool triStateCheckBoxes;\r\n\r\n        /// <summary>\r\n        /// Group objects by the initial letter of the aspect of the column\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// One common pattern is to group column by the initial letter of the value for that group.\r\n        /// The aspect must be a string (obviously).\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The name of the property or method that should be called to get the aspect to display in this column\"),\r\n         DefaultValue(false)]\r\n        public bool UseInitialLetterForGroup {\r\n            get { return useInitialLetterForGroup; }\r\n            set { useInitialLetterForGroup = value; }\r\n        }\r\n        private bool useInitialLetterForGroup;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not this column should be user filterable\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Does this column want to show a Filter menu item when its header is right clicked\"),\r\n         DefaultValue(true)]\r\n        public bool UseFiltering {\r\n            get { return useFiltering; }\r\n            set { useFiltering = value; }\r\n        }\r\n        private bool useFiltering = true;\r\n\r\n        /// <summary>\r\n        /// Gets or sets a filter that will only include models where the model's value\r\n        /// for this column is one of the values in ValuesChosenForFiltering\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IModelFilter ValueBasedFilter {\r\n            get {\r\n                if (!UseFiltering)\r\n                    return null;\r\n\r\n                if (valueBasedFilter != null)\r\n                    return valueBasedFilter;\r\n\r\n                if (ClusteringStrategy == null)\r\n                    return null;\r\n\r\n                if (ValuesChosenForFiltering == null || ValuesChosenForFiltering.Count == 0)\r\n                    return null;\r\n\r\n                return ClusteringStrategy.CreateFilter(ValuesChosenForFiltering);\r\n            }\r\n            set { valueBasedFilter = value; }\r\n        }\r\n        private IModelFilter valueBasedFilter;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the values that will be used to generate a filter for this\r\n        /// column. For a model to be included by the generated filter, its value for this column\r\n        /// must be in this list. If the list is null or empty, this column will\r\n        /// not be used for filtering.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IList ValuesChosenForFiltering {\r\n            get { return valuesChosenForFiltering; }\r\n            set { valuesChosenForFiltering = value; }\r\n        }\r\n        private IList valuesChosenForFiltering = new ArrayList();\r\n\r\n        /// <summary>\r\n        /// What is the width of this column?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"The width in pixels of this column\"),\r\n        DefaultValue(60)]\r\n        new public int Width {\r\n            get { return base.Width; }\r\n            set {\r\n                if (MaximumWidth != -1 && value > MaximumWidth)\r\n                    base.Width = MaximumWidth;\r\n                else\r\n                    base.Width = Math.Max(MinimumWidth, value);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or set whether the contents of this column's cells should be word wrapped\r\n        /// </summary>\r\n        /// <remarks>If this column uses a custom IRenderer (that is, one that is not descended\r\n        /// from BaseRenderer), then that renderer is responsible for implementing word wrapping.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Draw this column cell's word wrapped\"),\r\n         DefaultValue(false)]\r\n        public bool WordWrap {\r\n            get { return wordWrap; }\r\n            set {\r\n                wordWrap = value;\r\n\r\n                // If there isn't a renderer and they are turning word wrap off, we don't need to do anything\r\n                if (Renderer == null && !wordWrap)\r\n                    return;\r\n\r\n                // All other cases require a renderer of some sort\r\n                if (Renderer == null)\r\n                    Renderer = new HighlightTextRenderer();\r\n\r\n                // If there is a custom renderer (not descended from BaseRenderer), \r\n                // we leave it up to them to implement wrapping\r\n                if (Renderer is not BaseRenderer baseRenderer)\r\n                    return;\r\n\r\n                baseRenderer.CanWrap = wordWrap;\r\n            }\r\n        }\r\n        private bool wordWrap;\r\n\r\n        #endregion\r\n\r\n        #region Object commands\r\n\r\n        /// <summary>\r\n        /// For a given group value, return the string that should be used as the groups title.\r\n        /// </summary>\r\n        /// <param name=\"value\">The group key that is being converted to a title</param>\r\n        /// <returns>string</returns>\r\n        public string ConvertGroupKeyToTitle(object value) {\r\n            if (groupKeyToTitleConverter != null)\r\n                return groupKeyToTitleConverter(value);\r\n\r\n            return value == null ? ObjectListView.GroupTitleDefault : ValueToString(value);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get the checkedness of the given object for this column\r\n        /// </summary>\r\n        /// <param name=\"rowObject\">The row object that is being displayed</param>\r\n        /// <returns>The checkedness of the object</returns>\r\n        public CheckState GetCheckState(object rowObject) {\r\n            if (!CheckBoxes)\r\n                return CheckState.Unchecked;\r\n\r\n            if (GetValue(rowObject) is bool aspectAsBool) {\r\n                if (aspectAsBool)\r\n                    return CheckState.Checked;\r\n                else\r\n                    return CheckState.Unchecked;\r\n            } else\r\n                return CheckState.Indeterminate;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Put the checkedness of the given object for this column\r\n        /// </summary>\r\n        /// <param name=\"rowObject\">The row object that is being displayed</param>\r\n        /// <param name=\"newState\"></param>\r\n        /// <returns>The checkedness of the object</returns>\r\n        public void PutCheckState(object rowObject, CheckState newState) {\r\n            if (newState == CheckState.Checked)\r\n                PutValue(rowObject, true);\r\n            else\r\n                if (newState == CheckState.Unchecked)\r\n                    PutValue(rowObject, false);\r\n                else\r\n                    PutValue(rowObject, null);\r\n        }\r\n\r\n        /// <summary>\r\n        /// For a given row object, extract the value indicated by the AspectName property of this column.\r\n        /// </summary>\r\n        /// <param name=\"rowObject\">The row object that is being displayed</param>\r\n        /// <returns>An object, which is the aspect named by AspectName</returns>\r\n        public object GetAspectByName(object rowObject) {\r\n            if (aspectMunger == null)\r\n                aspectMunger = new Munger(AspectName);\r\n\r\n            return aspectMunger.GetValue(rowObject);\r\n        }\r\n        private Munger aspectMunger;\r\n\r\n        /// <summary>\r\n        /// For a given row object, return the object that is the key of the group that this row belongs to.\r\n        /// </summary>\r\n        /// <param name=\"rowObject\">The row object that is being displayed</param>\r\n        /// <returns>Group key object</returns>\r\n        public object GetGroupKey(object rowObject) {\r\n            if (groupKeyGetter != null)\r\n                return groupKeyGetter(rowObject);\r\n\r\n            object key = GetValue(rowObject);\r\n\r\n            if (UseInitialLetterForGroup) {\r\n                String keyAsString = key as String;\r\n                if (!String.IsNullOrEmpty(keyAsString))\r\n                    return keyAsString.Substring(0, 1).ToUpper();\r\n                }\r\n\r\n            return key;\r\n        }\r\n\r\n        /// <summary>\r\n        /// For a given row object, return the image selector of the image that should displayed in this column.\r\n        /// </summary>\r\n        /// <param name=\"rowObject\">The row object that is being displayed</param>\r\n        /// <returns>int or string or Image. int or string will be used as index into image list. null or -1 means no image</returns>\r\n        public Object GetImage(object rowObject) {\r\n            if (CheckBoxes)\r\n                return GetCheckStateImage(rowObject);\r\n\r\n            if (ImageGetter != null)\r\n                return ImageGetter(rowObject);\r\n\r\n            if (!String.IsNullOrEmpty(ImageAspectName)) {\r\n                if (imageAspectMunger == null)\r\n                    imageAspectMunger = new Munger(ImageAspectName);\r\n\r\n                return imageAspectMunger.GetValue(rowObject);\r\n            }\r\n\r\n            // I think this is wrong. ImageKey is meant for the image in the header, not in the rows\r\n            if (!String.IsNullOrEmpty(ImageKey))\r\n                return ImageKey;\r\n\r\n            return ImageIndex;\r\n        }\r\n        private Munger imageAspectMunger;\r\n\r\n        /// <summary>\r\n        /// Return the image that represents the check box for the given model\r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <returns></returns>\r\n        public string GetCheckStateImage(Object rowObject) {\r\n            CheckState checkState = GetCheckState(rowObject);\r\n\r\n            if (checkState == CheckState.Checked)\r\n                return ObjectListView.CHECKED_KEY;\r\n\r\n            if (checkState == CheckState.Unchecked)\r\n                return ObjectListView.UNCHECKED_KEY;\r\n\r\n            return ObjectListView.INDETERMINATE_KEY;\r\n        }\r\n\r\n        /// <summary>\r\n        /// For a given row object, return the strings that will be searched when trying to filter by string.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This will normally be the simple GetStringValue result, but if this column is non-textual (e.g. image)\r\n        /// you might want to install a SearchValueGetter delegate which can return something that could be used\r\n        /// for text filtering.\r\n        /// </remarks>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <returns>The array of texts to be searched. If this returns null, search will not match that object.</returns>\r\n        public string[] GetSearchValues(object rowObject) {\r\n            if (SearchValueGetter != null)\r\n                return SearchValueGetter(rowObject);\r\n\r\n            var stringValue = GetStringValue(rowObject);\r\n\r\n            if (Renderer is DescribedTaskRenderer dtr) {\r\n                return new string[] { stringValue, dtr.GetDescription(rowObject) };\r\n            }\r\n\r\n            return new string[] { stringValue };\r\n        }\r\n\r\n        /// <summary>\r\n        /// For a given row object, return the string representation of the value shown in this column.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// For aspects that are string (e.g. aPerson.Name), the aspect and its string representation are the same.\r\n        /// For non-strings (e.g. aPerson.DateOfBirth), the string representation is very different.\r\n        /// </remarks>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <returns></returns>\r\n        public string GetStringValue(object rowObject)\r\n        {\r\n            return ValueToString(GetValue(rowObject));\r\n        }\r\n\r\n        /// <summary>\r\n        /// For a given row object, return the object that is to be displayed in this column.\r\n        /// </summary>\r\n        /// <param name=\"rowObject\">The row object that is being displayed</param>\r\n        /// <returns>An object, which is the aspect to be displayed</returns>\r\n        public object GetValue(object rowObject) {\r\n            if (AspectGetter == null)\r\n                return GetAspectByName(rowObject);\r\n            else\r\n                return AspectGetter(rowObject);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the given model object with the given value using the column's\r\n        /// AspectName.\r\n        /// </summary>\r\n        /// <param name=\"rowObject\">The model object to be updated</param>\r\n        /// <param name=\"newValue\">The value to be put into the model</param>\r\n        public void PutAspectByName(Object rowObject, Object newValue) {\r\n            if (aspectMunger == null)\r\n                aspectMunger = new Munger(AspectName);\r\n\r\n            aspectMunger.PutValue(rowObject, newValue);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the given model object with the given value\r\n        /// </summary>\r\n        /// <param name=\"rowObject\">The model object to be updated</param>\r\n        /// <param name=\"newValue\">The value to be put into the model</param>\r\n        public void PutValue(Object rowObject, Object newValue) {\r\n            if (aspectPutter == null)\r\n                PutAspectByName(rowObject, newValue);\r\n            else\r\n                aspectPutter(rowObject, newValue);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Convert the aspect object to its string representation.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If the column has been given a AspectToStringConverter, that will be used to do\r\n        /// the conversion, otherwise just use ToString(). \r\n        /// The returned value will not be null. Nulls are always converted\r\n        /// to empty strings.\r\n        /// </remarks>\r\n        /// <param name=\"value\">The value of the aspect that should be displayed</param>\r\n        /// <returns>A string representation of the aspect</returns>\r\n        public string ValueToString(object value) {\r\n            // Give the installed converter a chance to work (even if the value is null)\r\n            if (AspectToStringConverter != null)\r\n                return AspectToStringConverter(value) ?? String.Empty;\r\n\r\n            // Without a converter, nulls become simple empty strings\r\n            if (value == null)\r\n                return String.Empty;\r\n\r\n            string fmt = AspectToStringFormat;\r\n            if (String.IsNullOrEmpty(fmt))\r\n                return value.ToString();\r\n            else\r\n                return String.Format(fmt, value);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Utilities\r\n\r\n        /// <summary>\r\n        /// Decide the clustering strategy that will be used for this column\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        private IClusteringStrategy DecideDefaultClusteringStrategy() {\r\n            if (!UseFiltering)\r\n                return null;\r\n\r\n            if (DataType == typeof(DateTime))\r\n                return new DateTimeClusteringStrategy();\r\n\r\n            return new ClustersFromGroupsStrategy();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the type of data shown in this column.\r\n        /// </summary>\r\n        /// <remarks>If this is not set, it will try to get the type\r\n        /// by looking through the rows of the listview.</remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Type DataType {\r\n            get {\r\n                if (dataType == null) {\r\n                    if (ListView is ObjectListView olv) {\r\n                        object value = olv.GetFirstNonNullValue(this);\r\n                        if (value != null)\r\n                            return value.GetType(); // THINK: Should we cache this?\r\n                    }\r\n                }\r\n                return dataType;\r\n            }\r\n            set {\r\n                dataType = value;\r\n            }\r\n        }\r\n        private Type dataType;\r\n\r\n        #region Events\r\n\r\n\t\t/// <summary>\r\n\t\t/// This event is triggered when the visibility of this column changes.\r\n\t\t/// </summary>\r\n\t\t[Category(\"ObjectListView\"),\r\n        Description(\"This event is triggered when the visibility of the column changes.\")]\r\n\t\tpublic event EventHandler<EventArgs> VisibilityChanged;\r\n\r\n\t\t/// <summary>\r\n\t\t/// Tell the world when visibility of a column changes.\r\n\t\t/// </summary>\r\n\t\tpublic virtual void OnVisibilityChanged(EventArgs e)\r\n\t\t{\r\n\t\t\tif (VisibilityChanged != null)\r\n\t\t\t\tVisibilityChanged(this, e);\r\n\t\t}\r\n\r\n\t\t#endregion\r\n\r\n        /// <summary>\r\n        /// Create groupies\r\n        /// This is an untyped version to help with Generator and OLVColumn attributes\r\n        /// </summary>\r\n        /// <param name=\"values\"></param>\r\n        /// <param name=\"descriptions\"></param>\r\n        public void MakeGroupies(object[] values, string[] descriptions) {\r\n            MakeGroupies(values, descriptions, null, null, null);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create groupies\r\n        /// </summary>\r\n        /// <typeparam name=\"T\"></typeparam>\r\n        /// <param name=\"values\"></param>\r\n        /// <param name=\"descriptions\"></param>\r\n        public void MakeGroupies<T>(T[] values, string[] descriptions) {\r\n            MakeGroupies(values, descriptions, null, null, null);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create groupies\r\n        /// </summary>\r\n        /// <typeparam name=\"T\"></typeparam>\r\n        /// <param name=\"values\"></param>\r\n        /// <param name=\"descriptions\"></param>\r\n        /// <param name=\"images\"></param>\r\n        public void MakeGroupies<T>(T[] values, string[] descriptions, object[] images) {\r\n            MakeGroupies(values, descriptions, images, null, null);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create groupies\r\n        /// </summary>\r\n        /// <typeparam name=\"T\"></typeparam>\r\n        /// <param name=\"values\"></param>\r\n        /// <param name=\"descriptions\"></param>\r\n        /// <param name=\"images\"></param>\r\n        /// <param name=\"subtitles\"></param>\r\n        public void MakeGroupies<T>(T[] values, string[] descriptions, object[] images, string[] subtitles) {\r\n            MakeGroupies(values, descriptions, images, subtitles, null);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create groupies.\r\n        /// Install delegates that will group the columns aspects into progressive partitions.\r\n        /// If an aspect is less than value[n], it will be grouped with description[n].\r\n        /// If an aspect has a value greater than the last element in \"values\", it will be grouped\r\n        /// with the last element in \"descriptions\".\r\n        /// </summary>\r\n        /// <param name=\"values\">Array of values. Values must be able to be\r\n        /// compared to the aspect (using IComparable)</param>\r\n        /// <param name=\"descriptions\">The description for the matching value. The last element is the default description.\r\n        /// If there are n values, there must be n+1 descriptions.</param>\r\n        /// <example>\r\n        /// this.salaryColumn.MakeGroupies(\r\n        ///     new UInt32[] { 20000, 100000 },\r\n        ///     new string[] { \"Lowly worker\",  \"Middle management\", \"Rarified elevation\"});\r\n        /// </example>\r\n        /// <typeparam name=\"T\"></typeparam>\r\n        /// <param name=\"images\"></param>\r\n        /// <param name=\"subtitles\"></param>\r\n        /// <param name=\"tasks\"></param>\r\n        public void MakeGroupies<T>(T[] values, string[] descriptions, object[] images, string[] subtitles, string[] tasks) {\r\n            // Sanity checks\r\n            if (values == null)\r\n                throw new ArgumentNullException(\"values\");\r\n            if (descriptions == null)\r\n                throw new ArgumentNullException(\"descriptions\");\r\n            if (values.Length + 1 != descriptions.Length)\r\n                throw new ArgumentException(\"descriptions must have one more element than values.\");\r\n\r\n            // Install a delegate that returns the index of the description to be shown\r\n            GroupKeyGetter = delegate(object row) {\r\n                Object aspect = GetValue(row);\r\n                if (aspect == null || aspect == DBNull.Value)\r\n                    return -1;\r\n                IComparable comparable = (IComparable)aspect;\r\n                for (int i = 0; i < values.Length; i++) {\r\n                    if (comparable.CompareTo(values[i]) < 0)\r\n                        return i;\r\n                }\r\n\r\n                // Display the last element in the array\r\n                return descriptions.Length - 1;\r\n            };\r\n\r\n            // Install a delegate that simply looks up the given index in the descriptions.\r\n            GroupKeyToTitleConverter = delegate(object key) {\r\n                if ((int)key < 0)\r\n                    return \"\";\r\n\r\n                return descriptions[(int)key];\r\n            };\r\n\r\n            // Install one delegate that does all the other formatting\r\n            GroupFormatter = delegate(OLVGroup group, GroupingParameters parms) {\r\n                int key = (int)group.Key; // we know this is an int since we created it in GroupKeyGetter\r\n\r\n                if (key >= 0) {\r\n                    if (images != null && key < images.Length)\r\n                        group.TitleImage = images[key];\r\n\r\n                    if (subtitles != null && key < subtitles.Length)\r\n                        group.Subtitle = subtitles[key];\r\n\r\n                    if (tasks != null && key < tasks.Length)\r\n                        group.Task = tasks[key];\r\n                }\r\n            };\r\n        }\r\n        /// <summary>\r\n        /// Create groupies based on exact value matches.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Install delegates that will group rows into partitions based on equality of this columns aspects.\r\n        /// If an aspect is equal to value[n], it will be grouped with description[n].\r\n        /// If an aspect is not equal to any value, it will be grouped with \"[other]\".\r\n        /// </remarks>\r\n        /// <param name=\"values\">Array of values. Values must be able to be\r\n        /// equated to the aspect</param>\r\n        /// <param name=\"descriptions\">The description for the matching value.</param>\r\n        /// <example>\r\n        /// this.marriedColumn.MakeEqualGroupies(\r\n        ///     new MaritalStatus[] { MaritalStatus.Single, MaritalStatus.Married, MaritalStatus.Divorced, MaritalStatus.Partnered },\r\n        ///     new string[] { \"Looking\",  \"Content\", \"Looking again\", \"Mostly content\" });\r\n        /// </example>\r\n        /// <typeparam name=\"T\"></typeparam>\r\n        /// <param name=\"images\"></param>\r\n        /// <param name=\"subtitles\"></param>\r\n        /// <param name=\"tasks\"></param>\r\n        public void MakeEqualGroupies<T>(T[] values, string[] descriptions, object[] images, string[] subtitles, string[] tasks) {\r\n            // Sanity checks\r\n            if (values == null)\r\n                throw new ArgumentNullException(\"values\");\r\n            if (descriptions == null)\r\n                throw new ArgumentNullException(\"descriptions\");\r\n            if (values.Length != descriptions.Length)\r\n                throw new ArgumentException(\"descriptions must have the same number of elements as values.\");\r\n\r\n            ArrayList valuesArray = new ArrayList(values);\r\n\r\n            // Install a delegate that returns the index of the description to be shown\r\n            GroupKeyGetter = delegate(object row) {\r\n                return valuesArray.IndexOf(GetValue(row));\r\n            };\r\n\r\n            // Install a delegate that simply looks up the given index in the descriptions.\r\n            GroupKeyToTitleConverter = delegate(object key) {\r\n                int intKey = (int)key; // we know this is an int since we created it in GroupKeyGetter\r\n                return (intKey < 0) ? \"[other]\" : descriptions[intKey];\r\n            };\r\n\r\n            // Install one delegate that does all the other formatting\r\n            GroupFormatter = delegate(OLVGroup group, GroupingParameters parms) {\r\n                int key = (int)group.Key; // we know this is an int since we created it in GroupKeyGetter\r\n\r\n                if (key >= 0) {\r\n                    if (images != null && key < images.Length)\r\n                        group.TitleImage = images[key];\r\n\r\n                    if (subtitles != null && key < subtitles.Length)\r\n                        group.Subtitle = subtitles[key];\r\n\r\n                    if (tasks != null && key < tasks.Length)\r\n                        group.Task = tasks[key];\r\n                }\r\n            };\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/ObjectListView.DesignTime.cs",
    "content": "﻿/*\r\n * DesignSupport - Design time support for the various classes within ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 12/08/2009 8:36 PM\r\n *\r\n * Change log:\r\n * 2012-08-27   JPP  - Fall back to more specific type name for the ListViewDesigner if\r\n *                     the first GetType() fails.\r\n * v2.5.1\r\n * 2012-04-26   JPP  - Filter group events from TreeListView since it can't have groups\r\n * 2011-06-06   JPP  - Vastly improved ObjectListViewDesigner, based off information in\r\n *                     \"'Inheriting' from an Internal WinForms Designer\" on CodeProject.\r\n * v2.3\r\n * 2009-08-12   JPP  - Initial version\r\n *\r\n * To do:\r\n *\r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.ComponentModel.Design;\r\nusing System.Diagnostics;\r\nusing System.Drawing;\r\nusing System.Reflection;\r\nusing System.Windows.Forms;\r\nusing System.Windows.Forms.Design;\r\n\r\nnamespace BrightIdeasSoftware.Design\r\n{\r\n\r\n    /// <summary>\r\n    /// Designer for <see cref=\"ObjectListView\"/> and its subclasses.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>\r\n    /// This designer removes properties and events that are available on ListView but that are not\r\n    /// useful on ObjectListView.\r\n    /// </para>\r\n    /// <para>\r\n    /// We can't inherit from System.Windows.Forms.Design.ListViewDesigner, since it is marked internal.\r\n    /// So, this class uses reflection to create a ListViewDesigner and then forwards messages to that designer.\r\n    /// </para>\r\n    /// </remarks>\r\n    public class ObjectListViewDesigner : ControlDesigner\r\n    {\r\n\r\n        #region Initialize & Dispose\r\n\r\n        /// <summary>\r\n        /// Initializes the designer with the specified component.\r\n        /// </summary>\r\n        /// <param name=\"component\">The <see cref=\"T:System.ComponentModel.IComponent\"/> to associate the designer with. This component must always be an instance of, or derive from, <see cref=\"T:System.Windows.Forms.Control\"/>. </param>\r\n        public override void Initialize(IComponent component) {\r\n            // Debug.WriteLine(\"ObjectListViewDesigner.Initialize\");\r\n\r\n            // Use reflection to bypass the \"internal\" marker on ListViewDesigner\r\n            // If we can't get the unversioned designer, look specifically for .NET 4.0 version of it.\r\n            Type tListViewDesigner = Type.GetType(\"System.Windows.Forms.Design.ListViewDesigner, System.Design\") ??\r\n                                     Type.GetType(\"System.Windows.Forms.Design.ListViewDesigner, System.Design, \" +\r\n                                                  \"Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\");\r\n            if (tListViewDesigner == null) throw new ArgumentException(\"Could not load ListViewDesigner\");\r\n\r\n            listViewDesigner = (ControlDesigner)Activator.CreateInstance(tListViewDesigner, BindingFlags.Instance | BindingFlags.Public, null, null, null);\r\n            designerFilter = listViewDesigner;\r\n\r\n            // Fetch the methods from the ListViewDesigner that we know we want to use\r\n            listViewDesignGetHitTest = tListViewDesigner.GetMethod(\"GetHitTest\", BindingFlags.Instance | BindingFlags.NonPublic);\r\n            listViewDesignWndProc = tListViewDesigner.GetMethod(\"WndProc\", BindingFlags.Instance | BindingFlags.NonPublic);\r\n\r\n            Debug.Assert(listViewDesignGetHitTest != null, \"Required method (GetHitTest) not found on ListViewDesigner\");\r\n            Debug.Assert(listViewDesignWndProc != null, \"Required method (WndProc) not found on ListViewDesigner\");\r\n\r\n            // Tell the Designer to use properties of default designer as well as the properties of this class (do before base.Initialize)\r\n            TypeDescriptor.CreateAssociation(component, listViewDesigner);\r\n\r\n            IServiceContainer site = (IServiceContainer)component.Site;\r\n            if (site != null && GetService(typeof(DesignerCommandSet)) == null) {\r\n                site.AddService(typeof(DesignerCommandSet), new CDDesignerCommandSet(this));\r\n            } else {\r\n                Debug.Fail(\"site != null && GetService(typeof (DesignerCommandSet)) == null\");\r\n            }\r\n\r\n            listViewDesigner.Initialize(component);\r\n            base.Initialize(component);\r\n\r\n            RemoveDuplicateDockingActionList();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Initializes a newly created component.\r\n        /// </summary>\r\n        /// <param name=\"defaultValues\">A name/value dictionary of default values to apply to properties. May be null if no default values are specified.</param>\r\n        public override void InitializeNewComponent(IDictionary defaultValues) {\r\n            // Debug.WriteLine(\"ObjectListViewDesigner.InitializeNewComponent\");\r\n            base.InitializeNewComponent(defaultValues);\r\n            listViewDesigner.InitializeNewComponent(defaultValues);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Releases the unmanaged resources used by the <see cref=\"T:System.Windows.Forms.Design.ControlDesigner\"/> and optionally releases the managed resources.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true to release both managed and unmanaged resources; false to release only unmanaged resources. </param>\r\n        protected override void Dispose(bool disposing) {\r\n            // Debug.WriteLine(\"ObjectListViewDesigner.Dispose\");\r\n            if (disposing) {\r\n                if (listViewDesigner != null) {\r\n                    listViewDesigner.Dispose();\r\n                    // Normally we would now null out the designer, but this designer\r\n                    // still has methods called AFTER it is disposed.\r\n                }\r\n            }\r\n\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Removes the duplicate DockingActionList added by this designer to the <see cref=\"DesignerActionService\"/>.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <see cref=\"ControlDesigner.Initialize\"/> adds an internal DockingActionList : 'Dock/Undock in Parent Container'.\r\n        /// But the default designer has already added that action list. So we need to remove one.\r\n        /// </remarks>\r\n        private void RemoveDuplicateDockingActionList() {\r\n            // This is a true hack -- in a class that is basically a huge hack itself.\r\n            // Reach into the bowel of our base class, get a private field, and use that fields value to\r\n            // remove an action from the designer.\r\n            // In ControlDesigner, there is \"private DockingActionList dockingAction;\"\r\n            // Don't you just love Reflector?!\r\n            FieldInfo fi = typeof(ControlDesigner).GetField(\"dockingAction\", BindingFlags.Instance | BindingFlags.NonPublic);\r\n            if (fi != null) {\r\n                DesignerActionList dockingAction = (DesignerActionList)fi.GetValue(this);\r\n                if (dockingAction != null) {\r\n                    DesignerActionService service = (DesignerActionService)GetService(typeof(DesignerActionService));\r\n                    if (service != null) {\r\n                        service.Remove(Control, dockingAction);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region IDesignerFilter overrides\r\n\r\n        /// <summary>\r\n        /// Adjusts the set of properties the component exposes through a <see cref=\"T:System.ComponentModel.TypeDescriptor\"/>.\r\n        /// </summary>\r\n        /// <param name=\"properties\">An <see cref=\"T:System.Collections.IDictionary\"/> containing the properties for the class of the component. </param>\r\n        protected override void PreFilterProperties(IDictionary properties) {\r\n            // Debug.WriteLine(\"ObjectListViewDesigner.PreFilterProperties\");\r\n\r\n            // Always call the base PreFilterProperties implementation \r\n            // before you modify the properties collection.\r\n            base.PreFilterProperties(properties);\r\n\r\n            // Give the listviewdesigner a chance to filter the properties\r\n            // (though we already know it's not going to do anything)\r\n            designerFilter.PreFilterProperties(properties);\r\n\r\n            // I'd like to just remove the redundant properties, but that would\r\n            // break backward compatibility. The deserialiser that handles the XXX.Designer.cs file\r\n            // works off the designer, so even if the property exists in the class, the deserialiser will\r\n            // throw an error if the associated designer actually removes that property.\r\n            // So we shadow the unwanted properties, and give the replacement properties\r\n            // non-browsable attributes so that they are hidden from the user\r\n\r\n            List<string> unwantedProperties = new List<string>(new string[] { \r\n                \"BackgroundImage\", \"BackgroundImageTiled\", \"HotTracking\", \"HoverSelection\", \r\n                \"LabelEdit\", \"VirtualListSize\", \"VirtualMode\" });\r\n\r\n            // Also hid Tooltip properties, since giving a tooltip to the control through the IDE\r\n            // messes up the tooltip handling\r\n            foreach (string propertyName in properties.Keys) {\r\n                if (propertyName.StartsWith(\"ToolTip\")) {\r\n                    unwantedProperties.Add(propertyName);\r\n                }\r\n            }\r\n\r\n            // If we are looking at a TreeListView, remove group related properties\r\n            // since TreeListViews can't show groups\r\n            if (Control is TreeListView) {\r\n                unwantedProperties.AddRange(new string[] {\r\n                    \"GroupImageList\", \"GroupWithItemCountFormat\", \"GroupWithItemCountSingularFormat\", \"HasCollapsibleGroups\", \r\n                    \"SpaceBetweenGroups\", \"ShowGroups\", \"SortGroupItemsByPrimaryColumn\", \"ShowItemCountOnGroups\"\r\n                });\r\n            }\r\n\r\n            // Shadow the unwanted properties, and give the replacement properties\r\n            // non-browsable attributes so that they are hidden from the user\r\n            foreach (string unwantedProperty in unwantedProperties) {\r\n                PropertyDescriptor propertyDesc = TypeDescriptor.CreateProperty(\r\n                    typeof(ObjectListView),\r\n                    (PropertyDescriptor)properties[unwantedProperty],\r\n                    new BrowsableAttribute(false));\r\n                properties[unwantedProperty] = propertyDesc;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Allows a designer to add to the set of events that it exposes through a <see cref=\"T:System.ComponentModel.TypeDescriptor\"/>.\r\n        /// </summary>\r\n        /// <param name=\"events\">The events for the class of the component. </param>\r\n        protected override void PreFilterEvents(IDictionary events) {\r\n            // Debug.WriteLine(\"ObjectListViewDesigner.PreFilterEvents\");\r\n            base.PreFilterEvents(events);\r\n            designerFilter.PreFilterEvents(events);\r\n\r\n            // Remove the events that don't make sense for an ObjectListView.\r\n            // See PreFilterProperties() for why we do this dance rather than just remove the event.\r\n            List<string> unwanted = new List<string>(new string[] {\r\n                \"AfterLabelEdit\",\r\n                \"BeforeLabelEdit\",\r\n                \"DrawColumnHeader\",\r\n                \"DrawItem\",\r\n                \"DrawSubItem\",\r\n                \"RetrieveVirtualItem\",\r\n                \"SearchForVirtualItem\",\r\n                \"VirtualItemsSelectionRangeChanged\"\r\n            });\r\n\r\n            // If we are looking at a TreeListView, remove group related events\r\n            // since TreeListViews can't show groups\r\n            if (Control is TreeListView) {\r\n                unwanted.AddRange(new string[] {\r\n                    \"AboutToCreateGroups\",\r\n                    \"AfterCreatingGroups\",\r\n                    \"BeforeCreatingGroups\",\r\n                    \"GroupTaskClicked\",\r\n                    \"GroupExpandingCollapsing\", \r\n                    \"GroupStateChanged\"\r\n                });\r\n            }\r\n\r\n            foreach (string unwantedEvent in unwanted) {\r\n                EventDescriptor eventDesc = TypeDescriptor.CreateEvent(\r\n                   typeof(ObjectListView),\r\n                    (EventDescriptor)events[unwantedEvent],\r\n                    new BrowsableAttribute(false));\r\n                events[unwantedEvent] = eventDesc;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Allows a designer to change or remove items from the set of attributes that it exposes through a <see cref=\"T:System.ComponentModel.TypeDescriptor\"/>.\r\n        /// </summary>\r\n        /// <param name=\"attributes\">The attributes for the class of the component. </param>\r\n        protected override void PostFilterAttributes(IDictionary attributes) {\r\n            // Debug.WriteLine(\"ObjectListViewDesigner.PostFilterAttributes\");\r\n            designerFilter.PostFilterAttributes(attributes);\r\n            base.PostFilterAttributes(attributes);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Allows a designer to change or remove items from the set of events that it exposes through a <see cref=\"T:System.ComponentModel.TypeDescriptor\"/>.\r\n        /// </summary>\r\n        /// <param name=\"events\">The events for the class of the component. </param>\r\n        protected override void PostFilterEvents(IDictionary events) {\r\n            // Debug.WriteLine(\"ObjectListViewDesigner.PostFilterEvents\");\r\n            designerFilter.PostFilterEvents(events);\r\n            base.PostFilterEvents(events);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Overrides\r\n\r\n        /// <summary>\r\n        /// Gets the design-time action lists supported by the component associated with the designer.\r\n        /// </summary>\r\n        /// <returns>\r\n        /// The design-time action lists supported by the component associated with the designer.\r\n        /// </returns>\r\n        public override DesignerActionListCollection ActionLists {\r\n            get {\r\n                // We want to change the first action list so it only has the commands we want\r\n                DesignerActionListCollection actionLists = listViewDesigner.ActionLists;\r\n                if (actionLists.Count > 0 && !(actionLists[0] is ListViewActionListAdapter)) {\r\n                    actionLists[0] = new ListViewActionListAdapter(this, actionLists[0]);\r\n                }\r\n                return actionLists;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the collection of components associated with the component managed by the designer.\r\n        /// </summary>\r\n        /// <returns>\r\n        /// The components that are associated with the component managed by the designer.\r\n        /// </returns>\r\n        public override ICollection AssociatedComponents {\r\n            get {\r\n                ArrayList components = new ArrayList(base.AssociatedComponents);\r\n                components.AddRange(listViewDesigner.AssociatedComponents);\r\n                return components;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Indicates whether a mouse click at the specified point should be handled by the control.\r\n        /// </summary>\r\n        /// <returns>\r\n        /// true if a click at the specified point is to be handled by the control; otherwise, false.\r\n        /// </returns>\r\n        /// <param name=\"point\">A <see cref=\"T:System.Drawing.Point\"/> indicating the position at which the mouse was clicked, in screen coordinates. </param>\r\n        protected override bool GetHitTest(Point point) {\r\n            // The ListViewDesigner wants to allow column dividers to be resized\r\n            return (bool)listViewDesignGetHitTest.Invoke(listViewDesigner, new object[] { point });\r\n        }\r\n\r\n        /// <summary>\r\n        /// Processes Windows messages and optionally routes them to the control.\r\n        /// </summary>\r\n        /// <param name=\"m\">The <see cref=\"T:System.Windows.Forms.Message\"/> to process. </param>\r\n        protected override void WndProc(ref Message m) {\r\n            switch (m.Msg) {\r\n                case 0x4e:\r\n                case 0x204e:\r\n                    // The listview designer is interested in HDN_ENDTRACK notifications\r\n                    listViewDesignWndProc.Invoke(listViewDesigner, new object[] { m });\r\n                    break;\r\n                default:\r\n                    base.WndProc(ref m);\r\n                    break;\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation variables\r\n\r\n        private ControlDesigner listViewDesigner;\r\n        private IDesignerFilter designerFilter;\r\n        private MethodInfo listViewDesignGetHitTest;\r\n        private MethodInfo listViewDesignWndProc;\r\n\r\n        #endregion\r\n\r\n        #region Custom action list\r\n\r\n        /// <summary>\r\n        /// This class modifies a ListViewActionList, by removing the \"Edit Items\" and \"Edit Groups\" actions.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// That class is internal, so we cannot simply subclass it, which would be simplier.\r\n        /// </para>\r\n        /// <para>\r\n        /// Action lists use reflection to determine if that action can be executed, so we not\r\n        /// only have to modify the returned collection of actions, but we have to implement\r\n        /// the properties and commands that the returned actions use. </para>\r\n        /// </remarks>\r\n        private class ListViewActionListAdapter : DesignerActionList\r\n        {\r\n            public ListViewActionListAdapter(ObjectListViewDesigner designer, DesignerActionList wrappedList)\r\n                : base(wrappedList.Component) {\r\n                this.designer = designer;\r\n                this.wrappedList = wrappedList;\r\n            }\r\n\r\n            public override DesignerActionItemCollection GetSortedActionItems() {\r\n                DesignerActionItemCollection items = wrappedList.GetSortedActionItems();\r\n                items.RemoveAt(2); // remove Edit Groups\r\n                items.RemoveAt(0); // remove Edit Items\r\n                return items;\r\n            }\r\n\r\n            private void EditValue(ComponentDesigner componentDesigner, IComponent iComponent, string propertyName) {\r\n                // One more complication. The ListViewActionList classes uses an internal class, EditorServiceContext, to \r\n                // edit the items/columns/groups collections. So, we use reflection to bypass the data hiding.\r\n                Type tEditorServiceContext = Type.GetType(\"System.Windows.Forms.Design.EditorServiceContext, System.Design\");\r\n                tEditorServiceContext.InvokeMember(\"EditValue\", BindingFlags.InvokeMethod | BindingFlags.Static, null, null, new object[] { componentDesigner, iComponent, propertyName });\r\n            }\r\n\r\n            private void SetValue(object target, string propertyName, object value) {\r\n                TypeDescriptor.GetProperties(target)[propertyName].SetValue(target, value);\r\n            }\r\n\r\n            public void InvokeColumnsDialog() {\r\n                EditValue(designer, Component, \"Columns\");\r\n            }\r\n\r\n            // Don't need these since we removed their corresponding actions from the list.\r\n            // Keep the methods just in case.\r\n\r\n            //public void InvokeGroupsDialog() {\r\n            //    EditValue(this.designer, base.Component, \"Groups\");\r\n            //}\r\n\r\n            //public void InvokeItemsDialog() {\r\n            //    EditValue(this.designer, base.Component, \"Items\");\r\n            //}\r\n\r\n            public ImageList LargeImageList {\r\n                get { return ((ListView)Component).LargeImageList; }\r\n                set { SetValue(Component, \"LargeImageList\", value); }\r\n            }\r\n\r\n            public ImageList SmallImageList {\r\n                get { return ((ListView)Component).SmallImageList; }\r\n                set { SetValue(Component, \"SmallImageList\", value); }\r\n            }\r\n\r\n            public View View {\r\n                get { return ((ListView)Component).View; }\r\n                set { SetValue(Component, \"View\", value); }\r\n            }\r\n\r\n            ObjectListViewDesigner designer;\r\n            DesignerActionList wrappedList;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region DesignerCommandSet\r\n\r\n        private class CDDesignerCommandSet : DesignerCommandSet\r\n        {\r\n\r\n            public CDDesignerCommandSet(ComponentDesigner componentDesigner) {\r\n                this.componentDesigner = componentDesigner;\r\n            }\r\n\r\n            public override ICollection GetCommands(string name) {\r\n                // Debug.WriteLine(\"CDDesignerCommandSet.GetCommands:\" + name);\r\n                if (componentDesigner != null) {\r\n                    if (name.Equals(\"Verbs\")) {\r\n                        return componentDesigner.Verbs;\r\n                    }\r\n                    if (name.Equals(\"ActionLists\")) {\r\n                        return componentDesigner.ActionLists;\r\n                    }\r\n                }\r\n                return base.GetCommands(name);\r\n            }\r\n\r\n            private readonly ComponentDesigner componentDesigner;\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// This class works in conjunction with the OLVColumns property to allow OLVColumns\r\n    /// to be added to the ObjectListView.\r\n    /// </summary>\r\n    public class OLVColumnCollectionEditor : CollectionEditor\r\n    {\r\n        /// <summary>\r\n        /// Create a OLVColumnCollectionEditor\r\n        /// </summary>\r\n        /// <param name=\"t\"></param>\r\n        public OLVColumnCollectionEditor(Type t)\r\n            : base(t) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// What type of object does this editor create?\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        protected override Type CreateCollectionItemType() {\r\n            return typeof(OLVColumn);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Edit a given value\r\n        /// </summary>\r\n        /// <param name=\"context\"></param>\r\n        /// <param name=\"provider\"></param>\r\n        /// <param name=\"value\"></param>\r\n        /// <returns></returns>\r\n        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) {\r\n            if (context == null)\r\n                throw new ArgumentNullException(\"context\");\r\n            if (provider == null)\r\n                throw new ArgumentNullException(\"provider\");\r\n\r\n            // Figure out which ObjectListView we are working on. This should be the Instance of the context.\r\n            ObjectListView olv = context.Instance as ObjectListView;\r\n            Debug.Assert(olv != null, \"Instance must be an ObjectListView\");\r\n\r\n            // Edit all the columns, not just the ones that are visible\r\n            base.EditValue(context, provider, olv.AllColumns);\r\n\r\n            // Set the columns on the ListView to just the visible columns\r\n            List<OLVColumn> newColumns = olv.GetFilteredColumns(View.Details);\r\n            olv.Columns.Clear();\r\n            olv.Columns.AddRange(newColumns.ToArray());\r\n\r\n            return olv.Columns;\r\n        }\r\n\r\n        /// <summary>\r\n        /// What text should be shown in the list for the given object?\r\n        /// </summary>\r\n        /// <param name=\"value\"></param>\r\n        /// <returns></returns>\r\n        protected override string GetDisplayText(object value) {\r\n            if (value is not OLVColumn col || String.IsNullOrEmpty(col.AspectName))\r\n                return base.GetDisplayText(value);\r\n\r\n            return String.Format(\"{0} ({1})\", base.GetDisplayText(value), col.AspectName);\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// Control how the overlay is presented in the IDE\r\n    /// </summary>\r\n    internal class OverlayConverter : ExpandableObjectConverter\r\n    {\r\n        public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) {\r\n            return destinationType == typeof(string) || base.CanConvertTo(context, destinationType);\r\n        }\r\n\r\n        public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) {\r\n            if (destinationType == typeof(string)) {\r\n                if (value is ImageOverlay imageOverlay) {\r\n                    return imageOverlay.Image == null ? \"(none)\" : \"(set)\";\r\n                }\r\n\r\n                if (value is TextOverlay textOverlay) {\r\n                    return String.IsNullOrEmpty(textOverlay.Text) ? \"(none)\" : \"(set)\";\r\n                }\r\n            }\r\n\r\n            return base.ConvertTo(context, culture, value, destinationType);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/ObjectListView.FxCop",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<FxCopProject Version=\"1.36\" Name=\"ObjectListView Project\">\r\n <ProjectOptions>\r\n  <SharedProject>True</SharedProject>\r\n  <Stylesheet Apply=\"False\">c:\\program files\\microsoft fxcop 1.36\\Xml\\FxCopReport.xsl</Stylesheet>\r\n  <SaveMessages>\r\n   <Project Status=\"Active, Excluded\" NewOnly=\"False\" />\r\n   <Report Status=\"Active\" NewOnly=\"False\" />\r\n  </SaveMessages>\r\n  <ProjectFile Compress=\"True\" DefaultTargetCheck=\"True\" DefaultRuleCheck=\"True\" SaveByRuleGroup=\"\" Deterministic=\"True\" />\r\n  <EnableMultithreadedLoad>True</EnableMultithreadedLoad>\r\n  <EnableMultithreadedAnalysis>True</EnableMultithreadedAnalysis>\r\n  <SourceLookup>True</SourceLookup>\r\n  <AnalysisExceptionsThreshold>10</AnalysisExceptionsThreshold>\r\n  <RuleExceptionsThreshold>1</RuleExceptionsThreshold>\r\n  <Spelling Locale=\"en-AU\" />\r\n  <OverrideRuleVisibilities>False</OverrideRuleVisibilities>\r\n  <CustomDictionaries SearchFxCopDir=\"True\" SearchUserProfile=\"True\" SearchProjectDir=\"True\" />\r\n  <SearchGlobalAssemblyCache>False</SearchGlobalAssemblyCache>\r\n  <DeadlockDetectionTimeout>120</DeadlockDetectionTimeout>\r\n  <IgnoreGeneratedCode>True</IgnoreGeneratedCode>\r\n  <TargetFrameworkVersion>2.0</TargetFrameworkVersion>\r\n </ProjectOptions>\r\n <Targets>\r\n  <AssemblyReferenceDirectories>\r\n   <Directory>$(ProjectDir)/trunk/ObjectListView/bin/Debug/</Directory>\r\n  </AssemblyReferenceDirectories>\r\n  <Target Name=\"$(ProjectDir)/bin/Release/ObjectListView.dll\" Analyze=\"True\" AnalyzeAllChildren=\"False\">\r\n   <Modules AnalyzeAllChildren=\"False\">\r\n    <Module Name=\"objectlistview.dll\" Analyze=\"True\" AnalyzeAllChildren=\"False\">\r\n     <Namespaces AnalyzeAllChildren=\"False\">\r\n      <Namespace Name=\"\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n      <Namespace Name=\"BrightIdeasSoftware\" Analyze=\"True\" AnalyzeAllChildren=\"False\">\r\n       <Types AnalyzeAllChildren=\"False\">\r\n        <Type Name=\"AbstractDecoration\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AbstractDragSource\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AbstractDropSink\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AbstractListFilter\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AbstractModelFilter\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AbstractOverlay\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AbstractRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AbstractVirtualGroups\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AbstractVirtualListDataSource\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AfterSearchingEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AfterSortingEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AspectGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AspectPutterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AspectToStringConverterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"AutoCompleteCellEditor\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"BarRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"BaseRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"BeforeSearchingEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"BeforeSortingEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"BillboardOverlay\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"BooleanCellEditor\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"BooleanCheckStateGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"BooleanCheckStatePutterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"BorderDecoration\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CancellableEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CellBorderDecoration\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CellClickEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CellEditEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CellEditEventHandler\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CellEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CellOverEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CellRightClickEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CellStyle\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CellToolTipGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CheckStateGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CheckStatePutterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CheckStateRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ColumnComparer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ColumnRightClickEventHandler\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ComboBoxItem\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"CreateGroupsEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"DataListView\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"DataListView+&lt;&gt;c__DisplayClass4\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"DescribedTaskRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"DropTargetLocation\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"EditingCellBorderDecoration\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"EditorCreatorDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"EditorRegistry\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"EditorRegistry+&lt;&gt;c__DisplayClass3\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"EnumCellEditor\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"FastListGroupingStrategy\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"FastListGroupingStrategy+&lt;&gt;c__DisplayClass2\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"FastObjectListDataSource\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"FastObjectListView\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"FilterEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"FlagRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"FloatCellEditor\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"FormatCellEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"FormatRowEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"Generator\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"GlassPanelForm\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"GraphicAdornment\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"GroupFormatterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"GroupingParameters\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"GroupKeyGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"GroupKeyToTitleConverterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"GroupMetricsMask\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"GroupState\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"GroupTaskClickedEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"HeaderControl\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"HeaderFormatStyle\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"HeaderStateStyle\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"HeaderToolTipGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"HighlightTextRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"HitTestLocation\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"HotItemChangedEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"HotItemStyle\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"HyperlinkClickedEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"HyperlinkEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"HyperlinkStyle\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IDecoration\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IDragSource\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IDropSink\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IFilterableDataSource\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IItemStyle\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IListFilter\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ImageAdornment\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ImageDecoration\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ImageGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ImageOverlay\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ImageRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ImageRenderer+&lt;&gt;c__DisplayClass2\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ImageRenderer+AnimationState\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ImagesRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IModelFilter\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IntUpDown\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IOverlay\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IOwnerDataCallback\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IsHyperlinkEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ItemsAddingEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ItemsChangedEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ItemsChangingEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ItemsRemovingEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ITransparentOverlay\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IVirtualGroups\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"IVirtualListDataSource\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"LightBoxDecoration\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ListFilter\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ListFilter+ListFilterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ListViewGroupComparer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"MappedImageRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ModelDropEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ModelFilter\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ModelObjectComparer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"MultiImageRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"Munger\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+HDHITTESTINFO\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+HDITEM\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+HDLAYOUT\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+LITEM\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+LVBKIMAGE\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+LVCOLUMN\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+LVFINDINFO\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+LVGROUP\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+LVGROUP2\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+LVGROUPMETRICS\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+LVHITTESTINFO\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+LVITEM\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+LVITEMINDEX\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+NMCUSTOMDRAW\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+NMHDR\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+NMHEADER\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+NMLISTVIEW\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+NMLVCUSTOMDRAW\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+NMLVFINDITEM\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+NMLVGETINFOTIP\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+NMLVLINK\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+NMLVSCROLL\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+NMTTDISPINFO\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+POINT\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+RECT\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+SCROLLINFO\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+TOOLINFO\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NativeMethods+WINDOWPOS\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"NullableDictionary`2\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass1\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass17\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass1a\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass1e\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass22\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass35\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass3a\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass3e\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass4\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass42\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass46\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass4a\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass4d\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass4f\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClass52\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClassb\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+&lt;&gt;c__DisplayClassf\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+CellEditActivateMode\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ObjectListView+ObjectListViewState\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"OLVColumn\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"OLVColumn+&lt;&gt;c__DisplayClass3`1\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"OLVColumnAttribute\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"OLVDataObject\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"OlvDropEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"OLVGroup\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"OLVGroupComparer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"OLVListItem\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"OLVListSubItem\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"OlvListViewHitTestInfo\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"OwnerDataCallbackImpl\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"RearrangingDropSink\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"RenderDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"RowBorderDecoration\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"RowFormatterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"RowGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"SimpleDragSource\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"SimpleDropSink\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"SortDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TailFilter\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TextAdornment\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TextDecoration\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TextMatchFilter\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TextMatchFilter+&lt;IterateColumns&gt;d__0\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TextMatchFilter+MatchKind\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TextOverlay\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TintedColumnDecoration\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ToolTipControl\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ToolTipControl+StandardIcons\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"ToolTipShowingEventArgs\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TreeListView\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TreeListView+&lt;&gt;c__DisplayClass2\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TreeListView+Branch\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TreeListView+Branch+BranchFlags\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TreeListView+BranchComparer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TreeListView+CanExpandGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TreeListView+ChildrenGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TreeListView+Tree\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TreeListView+TreeRenderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedColumn`1\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedColumn`1+TypedAspectGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedColumn`1+TypedAspectPutterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedColumn`1+TypedGroupKeyGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedColumn`1+TypedImageGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedObjectListView`1\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedObjectListView`1+&lt;&gt;c__DisplayClass2\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedObjectListView`1+&lt;&gt;c__DisplayClass6\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedObjectListView`1+&lt;&gt;c__DisplayClass9\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedObjectListView`1+TypedBooleanCheckStateGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedObjectListView`1+TypedBooleanCheckStatePutterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedObjectListView`1+TypedCellToolTipGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedObjectListView`1+TypedCheckStateGetterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"TypedObjectListView`1+TypedCheckStatePutterDelegate\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"UintUpDown\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"Version1Renderer\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"VirtualListVersion1DataSource\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"VirtualObjectListView\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"VirtualObjectListView+&lt;&gt;c__DisplayClass7\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"VirtualObjectListView+&lt;&gt;c__DisplayClassb\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n        <Type Name=\"VirtualObjectListView+&lt;get_FilteredObjects&gt;d__1\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n       </Types>\r\n      </Namespace>\r\n      <Namespace Name=\"BrightIdeasSoftware.Design\" Analyze=\"True\" AnalyzeAllChildren=\"True\" />\r\n     </Namespaces>\r\n     <Resources AnalyzeAllChildren=\"True\" />\r\n    </Module>\r\n   </Modules>\r\n  </Target>\r\n </Targets>\r\n <Rules>\r\n  <RuleFiles>\r\n   <RuleFile Name=\"$(FxCopDir)\\Rules\\DesignRules.dll\" Enabled=\"True\" AllRulesEnabled=\"False\">\r\n    <Rule Name=\"AbstractTypesShouldNotHaveConstructors\" Enabled=\"True\" />\r\n    <Rule Name=\"AssembliesShouldHaveValidStrongNames\" Enabled=\"True\" />\r\n    <Rule Name=\"AvoidEmptyInterfaces\" Enabled=\"True\" />\r\n    <Rule Name=\"AvoidExcessiveParametersOnGenericTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"AvoidNamespacesWithFewTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"AvoidOutParameters\" Enabled=\"True\" />\r\n    <Rule Name=\"CollectionsShouldImplementGenericInterface\" Enabled=\"True\" />\r\n    <Rule Name=\"ConsiderPassingBaseTypesAsParameters\" Enabled=\"True\" />\r\n    <Rule Name=\"DeclareEventHandlersCorrectly\" Enabled=\"True\" />\r\n    <Rule Name=\"DeclareTypesInNamespaces\" Enabled=\"True\" />\r\n    <Rule Name=\"DefaultParametersShouldNotBeUsed\" Enabled=\"True\" />\r\n    <Rule Name=\"DefineAccessorsForAttributeArguments\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotCatchGeneralExceptionTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotDeclareProtectedMembersInSealedTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotDeclareStaticMembersOnGenericTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotDeclareVirtualMembersInSealedTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotExposeGenericLists\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotHideBaseClassMethods\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotNestGenericTypesInMemberSignatures\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotOverloadOperatorEqualsOnReferenceTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotRaiseExceptionsInUnexpectedLocations\" Enabled=\"True\" />\r\n    <Rule Name=\"EnumeratorsShouldBeStronglyTyped\" Enabled=\"True\" />\r\n    <Rule Name=\"EnumsShouldHaveZeroValue\" Enabled=\"True\" />\r\n    <Rule Name=\"EnumStorageShouldBeInt32\" Enabled=\"True\" />\r\n    <Rule Name=\"ExceptionsShouldBePublic\" Enabled=\"True\" />\r\n    <Rule Name=\"GenericMethodsShouldProvideTypeParameter\" Enabled=\"True\" />\r\n    <Rule Name=\"ICollectionImplementationsHaveStronglyTypedMembers\" Enabled=\"True\" />\r\n    <Rule Name=\"ImplementIDisposableCorrectly\" Enabled=\"True\" />\r\n    <Rule Name=\"ImplementStandardExceptionConstructors\" Enabled=\"True\" />\r\n    <Rule Name=\"IndexersShouldNotBeMultidimensional\" Enabled=\"True\" />\r\n    <Rule Name=\"InterfaceMethodsShouldBeCallableByChildTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"ListsAreStronglyTyped\" Enabled=\"True\" />\r\n    <Rule Name=\"MarkAssembliesWithAssemblyVersion\" Enabled=\"True\" />\r\n    <Rule Name=\"MarkAssembliesWithClsCompliant\" Enabled=\"True\" />\r\n    <Rule Name=\"MarkAssembliesWithComVisible\" Enabled=\"True\" />\r\n    <Rule Name=\"MarkAttributesWithAttributeUsage\" Enabled=\"True\" />\r\n    <Rule Name=\"MarkEnumsWithFlags\" Enabled=\"True\" />\r\n    <Rule Name=\"MembersShouldNotExposeCertainConcreteTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"MovePInvokesToNativeMethodsClass\" Enabled=\"True\" />\r\n    <Rule Name=\"OverloadOperatorEqualsOnOverloadingAddAndSubtract\" Enabled=\"True\" />\r\n    <Rule Name=\"OverrideMethodsOnComparableTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"PropertiesShouldNotBeWriteOnly\" Enabled=\"True\" />\r\n    <Rule Name=\"ProvideObsoleteAttributeMessage\" Enabled=\"True\" />\r\n    <Rule Name=\"ReplaceRepetitiveArgumentsWithParamsArray\" Enabled=\"True\" />\r\n    <Rule Name=\"StaticHolderTypesShouldBeSealed\" Enabled=\"True\" />\r\n    <Rule Name=\"StaticHolderTypesShouldNotHaveConstructors\" Enabled=\"True\" />\r\n    <Rule Name=\"StringUriOverloadsCallSystemUriOverloads\" Enabled=\"True\" />\r\n    <Rule Name=\"TypesShouldNotExtendCertainBaseTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"TypesThatOwnDisposableFieldsShouldBeDisposable\" Enabled=\"True\" />\r\n    <Rule Name=\"TypesThatOwnNativeResourcesShouldBeDisposable\" Enabled=\"True\" />\r\n    <Rule Name=\"UriParametersShouldNotBeStrings\" Enabled=\"True\" />\r\n    <Rule Name=\"UriPropertiesShouldNotBeStrings\" Enabled=\"True\" />\r\n    <Rule Name=\"UriReturnValuesShouldNotBeStrings\" Enabled=\"True\" />\r\n    <Rule Name=\"UseEventsWhereAppropriate\" Enabled=\"True\" />\r\n    <Rule Name=\"UseGenericEventHandlerInstances\" Enabled=\"True\" />\r\n    <Rule Name=\"UseGenericsWhereAppropriate\" Enabled=\"True\" />\r\n    <Rule Name=\"UseIntegralOrStringArgumentForIndexers\" Enabled=\"True\" />\r\n    <Rule Name=\"UsePropertiesWhereAppropriate\" Enabled=\"True\" />\r\n   </RuleFile>\r\n   <RuleFile Name=\"$(FxCopDir)\\Rules\\GlobalizationRules.dll\" Enabled=\"True\" AllRulesEnabled=\"False\">\r\n    <Rule Name=\"AvoidDuplicateAccelerators\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotHardcodeLocaleSpecificStrings\" Enabled=\"True\" />\r\n    <Rule Name=\"NormalizeStringsToUppercase\" Enabled=\"True\" />\r\n    <Rule Name=\"SetLocaleForDataTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"SpecifyMarshalingForPInvokeStringArguments\" Enabled=\"True\" />\r\n    <Rule Name=\"SpecifyMessageBoxOptions\" Enabled=\"True\" />\r\n    <Rule Name=\"SpecifyStringComparison\" Enabled=\"True\" />\r\n    <Rule Name=\"UseOrdinalStringComparison\" Enabled=\"True\" />\r\n   </RuleFile>\r\n   <RuleFile Name=\"$(FxCopDir)\\Rules\\InteroperabilityRules.dll\" Enabled=\"True\" AllRulesEnabled=\"True\" />\r\n   <RuleFile Name=\"$(FxCopDir)\\Rules\\MobilityRules.dll\" Enabled=\"True\" AllRulesEnabled=\"True\" />\r\n   <RuleFile Name=\"$(FxCopDir)\\Rules\\NamingRules.dll\" Enabled=\"True\" AllRulesEnabled=\"False\">\r\n    <Rule Name=\"DoNotNameEnumValuesReserved\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotPrefixEnumValuesWithTypeName\" Enabled=\"True\" />\r\n    <Rule Name=\"FlagsEnumsShouldHavePluralNames\" Enabled=\"True\" />\r\n    <Rule Name=\"IdentifiersShouldBeSpelledCorrectly\" Enabled=\"True\" />\r\n    <Rule Name=\"IdentifiersShouldDifferByMoreThanCase\" Enabled=\"True\" />\r\n    <Rule Name=\"IdentifiersShouldHaveCorrectPrefix\" Enabled=\"True\" />\r\n    <Rule Name=\"IdentifiersShouldHaveCorrectSuffix\" Enabled=\"True\" />\r\n    <Rule Name=\"IdentifiersShouldNotHaveIncorrectPrefix\" Enabled=\"True\" />\r\n    <Rule Name=\"IdentifiersShouldNotMatchKeywords\" Enabled=\"True\" />\r\n    <Rule Name=\"OnlyFlagsEnumsShouldHavePluralNames\" Enabled=\"True\" />\r\n    <Rule Name=\"ParameterNamesShouldNotMatchMemberNames\" Enabled=\"True\" />\r\n    <Rule Name=\"PropertyNamesShouldNotMatchGetMethods\" Enabled=\"True\" />\r\n    <Rule Name=\"ResourceStringCompoundWordsShouldBeCasedCorrectly\" Enabled=\"True\" />\r\n    <Rule Name=\"ResourceStringsShouldBeSpelledCorrectly\" Enabled=\"True\" />\r\n    <Rule Name=\"TypeNamesShouldNotMatchNamespaces\" Enabled=\"True\" />\r\n    <Rule Name=\"UsePreferredTerms\" Enabled=\"True\" />\r\n   </RuleFile>\r\n   <RuleFile Name=\"$(FxCopDir)\\Rules\\PerformanceRules.dll\" Enabled=\"True\" AllRulesEnabled=\"False\">\r\n    <Rule Name=\"AvoidExcessiveLocals\" Enabled=\"True\" />\r\n    <Rule Name=\"AvoidUncalledPrivateCode\" Enabled=\"True\" />\r\n    <Rule Name=\"AvoidUninstantiatedInternalClasses\" Enabled=\"True\" />\r\n    <Rule Name=\"AvoidUnsealedAttributes\" Enabled=\"True\" />\r\n    <Rule Name=\"AvoidUnusedPrivateFields\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotCastUnnecessarily\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotInitializeUnnecessarily\" Enabled=\"True\" />\r\n    <Rule Name=\"InitializeReferenceTypeStaticFieldsInline\" Enabled=\"True\" />\r\n    <Rule Name=\"MarkAssembliesWithNeutralResourcesLanguage\" Enabled=\"True\" />\r\n    <Rule Name=\"OverrideEqualsAndOperatorEqualsOnValueTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"PreferJaggedArraysOverMultidimensional\" Enabled=\"True\" />\r\n    <Rule Name=\"PropertiesShouldNotReturnArrays\" Enabled=\"True\" />\r\n    <Rule Name=\"RemoveEmptyFinalizers\" Enabled=\"True\" />\r\n    <Rule Name=\"RemoveUnusedLocals\" Enabled=\"True\" />\r\n    <Rule Name=\"TestForEmptyStringsUsingStringLength\" Enabled=\"True\" />\r\n    <Rule Name=\"UseLiteralsWhereAppropriate\" Enabled=\"True\" />\r\n   </RuleFile>\r\n   <RuleFile Name=\"$(FxCopDir)\\Rules\\PortabilityRules.dll\" Enabled=\"True\" AllRulesEnabled=\"True\" />\r\n   <RuleFile Name=\"$(FxCopDir)\\Rules\\SecurityRules.dll\" Enabled=\"True\" AllRulesEnabled=\"False\">\r\n    <Rule Name=\"AptcaMethodsShouldOnlyCallAptcaMethods\" Enabled=\"True\" />\r\n    <Rule Name=\"AptcaTypesShouldOnlyExtendAptcaBaseTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"ArrayFieldsShouldNotBeReadOnly\" Enabled=\"True\" />\r\n    <Rule Name=\"CallGCKeepAliveWhenUsingNativeResources\" Enabled=\"True\" />\r\n    <Rule Name=\"CatchNonClsCompliantExceptionsInGeneralHandlers\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotDeclareReadOnlyMutableReferenceTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"MethodSecurityShouldBeASupersetOfType\" Enabled=\"True\" />\r\n    <Rule Name=\"OverrideLinkDemandsShouldBeIdenticalToBase\" Enabled=\"True\" />\r\n    <Rule Name=\"PointersShouldNotBeVisible\" Enabled=\"True\" />\r\n    <Rule Name=\"ReviewDeclarativeSecurityOnValueTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"ReviewDenyAndPermitOnlyUsage\" Enabled=\"True\" />\r\n    <Rule Name=\"ReviewImperativeSecurity\" Enabled=\"True\" />\r\n    <Rule Name=\"ReviewSuppressUnmanagedCodeSecurityUsage\" Enabled=\"True\" />\r\n    <Rule Name=\"ReviewVisibleEventHandlers\" Enabled=\"True\" />\r\n    <Rule Name=\"SealMethodsThatSatisfyPrivateInterfaces\" Enabled=\"True\" />\r\n    <Rule Name=\"SecureAsserts\" Enabled=\"True\" />\r\n    <Rule Name=\"SecuredTypesShouldNotExposeFields\" Enabled=\"True\" />\r\n    <Rule Name=\"SecureSerializationConstructors\" Enabled=\"True\" />\r\n    <Rule Name=\"SecurityTransparentAssembliesShouldNotContainSecurityCriticalCode\" Enabled=\"True\" />\r\n    <Rule Name=\"SecurityTransparentCodeShouldNotAssert\" Enabled=\"True\" />\r\n    <Rule Name=\"SecurityTransparentCodeShouldNotReferenceNonpublicSecurityCriticalCode\" Enabled=\"True\" />\r\n    <Rule Name=\"StaticConstructorsShouldBePrivate\" Enabled=\"True\" />\r\n    <Rule Name=\"TypeLinkDemandsRequireInheritanceDemands\" Enabled=\"True\" />\r\n    <Rule Name=\"WrapVulnerableFinallyClausesInOuterTry\" Enabled=\"True\" />\r\n   </RuleFile>\r\n   <RuleFile Name=\"$(FxCopDir)\\Rules\\UsageRules.dll\" Enabled=\"True\" AllRulesEnabled=\"False\">\r\n    <Rule Name=\"AttributeStringLiteralsShouldParseCorrectly\" Enabled=\"True\" />\r\n    <Rule Name=\"CallBaseClassMethodsOnISerializableTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"CallGCSuppressFinalizeCorrectly\" Enabled=\"True\" />\r\n    <Rule Name=\"DisposableFieldsShouldBeDisposed\" Enabled=\"True\" />\r\n    <Rule Name=\"DisposableTypesShouldDeclareFinalizer\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotCallOverridableMethodsInConstructors\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotDecreaseInheritedMemberVisibility\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotIgnoreMethodResults\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotMarkEnumsWithFlags\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotMarkServicedComponentsWithWebMethod\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotRaiseExceptionsInExceptionClauses\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotRaiseReservedExceptionTypes\" Enabled=\"True\" />\r\n    <Rule Name=\"DoNotShipUnreleasedResourceFormats\" Enabled=\"True\" />\r\n    <Rule Name=\"FinalizersShouldBeProtected\" Enabled=\"True\" />\r\n    <Rule Name=\"FinalizersShouldCallBaseClassFinalizer\" Enabled=\"True\" />\r\n    <Rule Name=\"ImplementISerializableCorrectly\" Enabled=\"True\" />\r\n    <Rule Name=\"ImplementSerializationConstructors\" Enabled=\"True\" />\r\n    <Rule Name=\"ImplementSerializationMethodsCorrectly\" Enabled=\"True\" />\r\n    <Rule Name=\"InitializeValueTypeStaticFieldsInline\" Enabled=\"True\" />\r\n    <Rule Name=\"InstantiateArgumentExceptionsCorrectly\" Enabled=\"True\" />\r\n    <Rule Name=\"MarkAllNonSerializableFields\" Enabled=\"True\" />\r\n    <Rule Name=\"MarkISerializableTypesWithSerializable\" Enabled=\"True\" />\r\n    <Rule Name=\"MarkWindowsFormsEntryPointsWithStaThread\" Enabled=\"True\" />\r\n    <Rule Name=\"MembersShouldDifferByMoreThanReturnType\" Enabled=\"True\" />\r\n    <Rule Name=\"NonConstantFieldsShouldNotBeVisible\" Enabled=\"True\" />\r\n    <Rule Name=\"OperationsShouldNotOverflow\" Enabled=\"True\" />\r\n    <Rule Name=\"OperatorOverloadsHaveNamedAlternates\" Enabled=\"True\" />\r\n    <Rule Name=\"OperatorsShouldHaveSymmetricalOverloads\" Enabled=\"True\" />\r\n    <Rule Name=\"OverloadOperatorEqualsOnOverridingValueTypeEquals\" Enabled=\"True\" />\r\n    <Rule Name=\"OverrideEqualsOnOverloadingOperatorEquals\" Enabled=\"True\" />\r\n    <Rule Name=\"OverrideGetHashCodeOnOverridingEquals\" Enabled=\"True\" />\r\n    <Rule Name=\"PassSystemUriObjectsInsteadOfStrings\" Enabled=\"True\" />\r\n    <Rule Name=\"ProvideDeserializationMethodsForOptionalFields\" Enabled=\"True\" />\r\n    <Rule Name=\"RethrowToPreserveStackDetails\" Enabled=\"True\" />\r\n    <Rule Name=\"ReviewUnusedParameters\" Enabled=\"True\" />\r\n    <Rule Name=\"TestForNaNCorrectly\" Enabled=\"True\" />\r\n    <Rule Name=\"UseManagedEquivalentsOfWin32Api\" Enabled=\"True\" />\r\n    <Rule Name=\"UseParamsForVariableArguments\" Enabled=\"True\" />\r\n   </RuleFile>\r\n  </RuleFiles>\r\n  <Groups />\r\n  <Settings />\r\n </Rules>\r\n <FxCopReport Version=\"1.36\">\r\n  <Targets>\r\n   <Target Name=\"$(ProjectDir)/bin/Release/ObjectListView.dll\">\r\n    <Modules>\r\n     <Module Name=\"objectlistview.dll\">\r\n      <Messages>\r\n       <Message TypeName=\"AssembliesShouldHaveValidStrongNames\" Category=\"Microsoft.Design\" CheckId=\"CA2210\" Created=\"2008-10-30 20:23:07Z\">\r\n        <Issue Name=\"NoStrongName\">\r\n         <Item>'ObjectListView.dll'</Item>\r\n        </Issue>\r\n       </Message>\r\n      </Messages>\r\n      <Namespaces>\r\n       <Namespace Name=\"BrightIdeasSoftware\">\r\n        <Types>\r\n         <Type Name=\"BarRenderer\">\r\n          <Messages>\r\n           <Message TypeName=\"TypesThatOwnDisposableFieldsShouldBeDisposable\" Category=\"Microsoft.Design\" CheckId=\"CA1001\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\" FixCategory=\"DependsOnFix\">\r\n            <Issue Name=\"DependsOnFix\">\r\n             <Item>'BarRenderer'</Item>\r\n             <Item>'Pen'</Item>\r\n            </Issue>\r\n            <Notes>\r\n             <User Name=\"Admin_2\">\r\n              <Note Id=\"10\" />\r\n             </User>\r\n            </Notes>\r\n           </Message>\r\n          </Messages>\r\n          <Members>\r\n           <Member Name=\"#.ctor(System.Drawing.Pen,System.Drawing.Brush)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotInitializeUnnecessarily\" Category=\"Microsoft.Performance\" CheckId=\"CA1805\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'BarRenderer.BarRenderer(Pen, Brush)'</Item>\r\n               <Item>'BarRenderer.UseStandardBar'</Item>\r\n               <Item>'bool'</Item>\r\n               <Item>false</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"7\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#.ctor(System.Int32,System.Int32,System.Drawing.Pen,System.Drawing.Brush)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotInitializeUnnecessarily\" Category=\"Microsoft.Performance\" CheckId=\"CA1805\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'BarRenderer.BarRenderer(int, int, Pen, Brush)'</Item>\r\n               <Item>'BarRenderer.UseStandardBar'</Item>\r\n               <Item>'bool'</Item>\r\n               <Item>false</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"7\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#BackgroundColor\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertyNamesShouldNotMatchGetMethods\" Category=\"Microsoft.Naming\" CheckId=\"CA1721\" Status=\"Excluded\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"BaseType\">\r\n               <Item>'BarRenderer.BackgroundColor'</Item>\r\n               <Item>'BaseRenderer.GetBackgroundColor()'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"administration\">\r\n                <Note Id=\"1\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"BaseRenderer\">\r\n          <Members>\r\n           <Member Name=\"#GetBackgroundColor()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'BaseRenderer.GetBackgroundColor()'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"0\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetForegroundColor()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'BaseRenderer.GetForegroundColor()'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"0\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetImageSelector()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Status=\"Excluded\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'BaseRenderer.GetImageSelector()'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetText()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'BaseRenderer.GetText()'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"0\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetTextBackgroundColor()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'BaseRenderer.GetTextBackgroundColor()'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"0\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"BorderDecoration\">\r\n          <Messages>\r\n           <Message TypeName=\"TypesThatOwnDisposableFieldsShouldBeDisposable\" Category=\"Microsoft.Design\" CheckId=\"CA1001\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"DependsOnFix\">\r\n            <Issue Name=\"DependsOnFix\">\r\n             <Item>'BorderDecoration'</Item>\r\n             <Item>'SolidBrush'</Item>\r\n            </Issue>\r\n           </Message>\r\n          </Messages>\r\n         </Type>\r\n         <Type Name=\"CellEditEventHandler\">\r\n          <Messages>\r\n           <Message TypeName=\"UseGenericEventHandlerInstances\" Category=\"Microsoft.Design\" CheckId=\"CA1003\" Status=\"Excluded\" Created=\"2008-10-31 22:24:48Z\">\r\n            <Issue>\r\n             <Item>'CellEditEventHandler'</Item>\r\n            </Issue>\r\n            <Notes>\r\n             <User Name=\"Admin_2\">\r\n              <Note Id=\"15\" />\r\n             </User>\r\n            </Notes>\r\n           </Message>\r\n          </Messages>\r\n         </Type>\r\n         <Type Name=\"CheckStateRenderer\">\r\n          <Members>\r\n           <Member Name=\"#CalculateCheckBoxBounds(System.Drawing.Graphics,System.Drawing.Rectangle)\">\r\n            <Messages>\r\n             <Message Id=\"g\" TypeName=\"ReviewUnusedParameters\" Category=\"Microsoft.Usage\" CheckId=\"CA1801\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue>\r\n               <Item>'g'</Item>\r\n               <Item>'CheckStateRenderer.CalculateCheckBoxBounds(Graphics, Rectangle)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"ColumnRightClickEventHandler\">\r\n          <Messages>\r\n           <Message TypeName=\"UseGenericEventHandlerInstances\" Category=\"Microsoft.Design\" CheckId=\"CA1003\" Status=\"Excluded\" Created=\"2008-10-30 21:00:06Z\">\r\n            <Issue>\r\n             <Item>'ColumnRightClickEventHandler'</Item>\r\n            </Issue>\r\n            <Notes>\r\n             <User Name=\"Admin_2\">\r\n              <Note Id=\"15\" />\r\n             </User>\r\n            </Notes>\r\n           </Message>\r\n          </Messages>\r\n         </Type>\r\n         <Type Name=\"ComboBoxItem\">\r\n          <Members>\r\n           <Member Name=\"#Key\">\r\n            <Accessors>\r\n             <Accessor Name=\"#get_Key()\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n                <Issue>\r\n                 <Item>'ComboBoxItem.Key.get()'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"DataListView\">\r\n          <Members>\r\n           <Member Name=\"#currencyManager_ListChanged(System.Object,System.ComponentModel.ListChangedEventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'DataListView.currencyManager_ListChanged(object, ListChangedEventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#currencyManager_MetaDataChanged(System.Object,System.EventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'DataListView.currencyManager_MetaDataChanged(object, EventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#currencyManager_PositionChanged(System.Object,System.EventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'DataListView.currencyManager_PositionChanged(object, EventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"DescribedTaskRenderer\">\r\n          <Members>\r\n           <Member Name=\"#GetDescription()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'DescribedTaskRenderer.GetDescription()'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"DropTargetLocation\">\r\n          <Messages>\r\n           <Message TypeName=\"FlagsEnumsShouldHavePluralNames\" Category=\"Microsoft.Naming\" CheckId=\"CA1714\" Created=\"2010-07-21 20:59:24Z\">\r\n            <Issue>\r\n             <Item>'DropTargetLocation'</Item>\r\n            </Issue>\r\n           </Message>\r\n          </Messages>\r\n         </Type>\r\n         <Type Name=\"FastObjectListDataSource\">\r\n          <Members>\r\n           <Member Name=\"#EnumerableToArray(System.Collections.IEnumerable)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotCastUnnecessarily\" Category=\"Microsoft.Performance\" CheckId=\"CA1800\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'collection'</Item>\r\n               <Item>'ICollection'</Item>\r\n               <Item>'FastObjectListDataSource.EnumerableToArray(IEnumerable)'</Item>\r\n               <Item>castclass</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#FilteredObjectList\">\r\n            <Accessors>\r\n             <Accessor Name=\"#get_FilteredObjectList()\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n                <Issue>\r\n                 <Item>'FastObjectListDataSource.FilteredObjectList.get()'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"FlagRenderer\">\r\n          <Messages>\r\n           <Message Id=\"Flag\" TypeName=\"UsePreferredTerms\" Category=\"Microsoft.Naming\" CheckId=\"CA1726\" Created=\"2010-07-21 20:59:24Z\">\r\n            <Issue Name=\"TypeNoAlternate\">\r\n             <Item>Flag</Item>\r\n             <Item>'FlagRenderer'</Item>\r\n            </Issue>\r\n           </Message>\r\n          </Messages>\r\n         </Type>\r\n         <Type Name=\"FloatCellEditor\">\r\n          <Members>\r\n           <Member Name=\"#Value\">\r\n            <Accessors>\r\n             <Accessor Name=\"#get_Value()\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n                <Issue>\r\n                 <Item>'FloatCellEditor.Value.get()'</Item>\r\n                </Issue>\r\n                <Notes>\r\n                 <User Name=\"Admin_2\">\r\n                  <Note Id=\"11\" />\r\n                 </User>\r\n                </Notes>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n             <Accessor Name=\"#set_Value(System.Double)\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n                <Issue>\r\n                 <Item>'FloatCellEditor.Value.set(double)'</Item>\r\n                </Issue>\r\n                <Notes>\r\n                 <User Name=\"Admin_2\">\r\n                  <Note Id=\"11\" />\r\n                 </User>\r\n                </Notes>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"GlassPanelForm\">\r\n          <Members>\r\n           <Member Name=\"#CreateParams\">\r\n            <Accessors>\r\n             <Accessor Name=\"#get_CreateParams()\">\r\n              <Messages>\r\n               <Message TypeName=\"OverrideLinkDemandsShouldBeIdenticalToBase\" Category=\"Microsoft.Security\" CheckId=\"CA2123\" Created=\"2010-07-21 20:59:24Z\">\r\n                <Issue Name=\"BaseOnly\">\r\n                 <Item>'GlassPanelForm.CreateParams.get()'</Item>\r\n                 <Item>'Form.CreateParams.get()'</Item>\r\n                 <Item>[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n           <Member Name=\"#WndProc(System.Windows.Forms.Message&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"OverrideLinkDemandsShouldBeIdenticalToBase\" Category=\"Microsoft.Security\" CheckId=\"CA2123\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"BaseOnly\">\r\n               <Item>'GlassPanelForm.WndProc(ref Message)'</Item>\r\n               <Item>'Form.WndProc(ref Message)'</Item>\r\n               <Item>[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"GroupMetricsMask\">\r\n          <Messages>\r\n           <Message TypeName=\"EnumsShouldHaveZeroValue\" Category=\"Microsoft.Design\" CheckId=\"CA1008\" Status=\"Excluded\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"Breaking\">\r\n            <Issue Name=\"FlagsRename\">\r\n             <Item>'GroupMetricsMask'</Item>\r\n             <Item>'GroupMetricsMask.LVGMF_NONE'</Item>\r\n            </Issue>\r\n            <Notes>\r\n             <User Name=\"administration\">\r\n              <Note Id=\"5\" />\r\n             </User>\r\n            </Notes>\r\n           </Message>\r\n           <Message TypeName=\"FlagsEnumsShouldHavePluralNames\" Category=\"Microsoft.Naming\" CheckId=\"CA1714\" Status=\"Excluded\" Created=\"2010-07-21 20:59:24Z\">\r\n            <Issue>\r\n             <Item>'GroupMetricsMask'</Item>\r\n            </Issue>\r\n            <Notes>\r\n             <User Name=\"administration\">\r\n              <Note Id=\"6\" />\r\n             </User>\r\n            </Notes>\r\n           </Message>\r\n          </Messages>\r\n         </Type>\r\n         <Type Name=\"GroupState\">\r\n          <Messages>\r\n           <Message TypeName=\"DoNotMarkEnumsWithFlags\" Category=\"Microsoft.Usage\" CheckId=\"CA2217\" Created=\"2010-07-21 20:59:24Z\">\r\n            <Issue>\r\n             <Item>'GroupState'</Item>\r\n             <Item>0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000</Item>\r\n            </Issue>\r\n           </Message>\r\n           <Message TypeName=\"EnumsShouldHaveZeroValue\" Category=\"Microsoft.Design\" CheckId=\"CA1008\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"Breaking\">\r\n            <Issue Name=\"FlagsRename\">\r\n             <Item>'GroupState'</Item>\r\n             <Item>'GroupState.LVGS_NORMAL'</Item>\r\n            </Issue>\r\n           </Message>\r\n           <Message TypeName=\"FlagsEnumsShouldHavePluralNames\" Category=\"Microsoft.Naming\" CheckId=\"CA1714\" Created=\"2010-07-21 20:59:24Z\">\r\n            <Issue>\r\n             <Item>'GroupState'</Item>\r\n            </Issue>\r\n           </Message>\r\n          </Messages>\r\n         </Type>\r\n         <Type Name=\"HeaderControl\">\r\n          <Members>\r\n           <Member Name=\"#.ctor(BrightIdeasSoftware.ObjectListView)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" Status=\"Excluded\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue>\r\n               <Item>'HeaderControl.HeaderControl(ObjectListView)'</Item>\r\n               <Item>'NativeWindow.AssignHandle(IntPtr)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'HeaderControl.HeaderControl(ObjectListView)'&#xD;&#xA;   -&gt;'HeaderControl.HeaderControl(ObjectListView)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'HeaderControl.HeaderControl(ObjectListView)'</Item>\r\n               <Item>'NativeWindow.NativeWindow()'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'HeaderControl.HeaderControl(ObjectListView)'&#xD;&#xA;   -&gt;'HeaderControl.HeaderControl(ObjectListView)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"18\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#CalculateHeight(System.Drawing.Graphics)\">\r\n            <Messages>\r\n             <Message TypeName=\"ConsiderPassingBaseTypesAsParameters\" Category=\"Microsoft.Design\" CheckId=\"CA1011\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'g'</Item>\r\n               <Item>'HeaderControl.CalculateHeight(Graphics)'</Item>\r\n               <Item>'Graphics'</Item>\r\n               <Item>'IDeviceContext'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#DrawHeaderText(System.Drawing.Graphics,System.Drawing.Rectangle,BrightIdeasSoftware.OLVColumn,BrightIdeasSoftware.HeaderStateStyle)\">\r\n            <Messages>\r\n             <Message TypeName=\"ConsiderPassingBaseTypesAsParameters\" Category=\"Microsoft.Design\" CheckId=\"CA1011\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'g'</Item>\r\n               <Item>'HeaderControl.DrawHeaderText(Graphics, Rectangle, OLVColumn, HeaderStateStyle)'</Item>\r\n               <Item>'Graphics'</Item>\r\n               <Item>'IDeviceContext'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#DrawThemedBackground(System.Drawing.Graphics,System.Drawing.Rectangle,System.Int32,System.Boolean)\">\r\n            <Messages>\r\n             <Message TypeName=\"ConsiderPassingBaseTypesAsParameters\" Category=\"Microsoft.Design\" CheckId=\"CA1011\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'g'</Item>\r\n               <Item>'HeaderControl.DrawThemedBackground(Graphics, Rectangle, int, bool)'</Item>\r\n               <Item>'Graphics'</Item>\r\n               <Item>'IDeviceContext'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#DrawThemedSortIndicator(System.Drawing.Graphics,System.Drawing.Rectangle)\">\r\n            <Messages>\r\n             <Message TypeName=\"ConsiderPassingBaseTypesAsParameters\" Category=\"Microsoft.Design\" CheckId=\"CA1011\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'g'</Item>\r\n               <Item>'HeaderControl.DrawThemedSortIndicator(Graphics, Rectangle)'</Item>\r\n               <Item>'Graphics'</Item>\r\n               <Item>'IDeviceContext'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#DrawUnthemedBackground(System.Drawing.Graphics,System.Drawing.Rectangle,System.Int32,System.Boolean,BrightIdeasSoftware.HeaderStateStyle)\">\r\n            <Messages>\r\n             <Message Id=\"Unthemed\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Member\">\r\n               <Item>Unthemed</Item>\r\n               <Item>'HeaderControl.DrawUnthemedBackground(Graphics, Rectangle, int, bool, HeaderStateStyle)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#DrawUnthemedSortIndicator(System.Drawing.Graphics,System.Drawing.Rectangle)\">\r\n            <Messages>\r\n             <Message Id=\"Unthemed\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Member\">\r\n               <Item>Unthemed</Item>\r\n               <Item>'HeaderControl.DrawUnthemedSortIndicator(Graphics, Rectangle)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleDestroy(System.Windows.Forms.Message&amp;)\">\r\n            <Messages>\r\n             <Message Id=\"m\" TypeName=\"ReviewUnusedParameters\" Category=\"Microsoft.Usage\" CheckId=\"CA1801\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"DependsOnFix\">\r\n              <Issue>\r\n               <Item>'m'</Item>\r\n               <Item>'HeaderControl.HandleDestroy(ref Message)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleMouseMove(System.Windows.Forms.Message&amp;)\">\r\n            <Messages>\r\n             <Message Id=\"m\" TypeName=\"ReviewUnusedParameters\" Category=\"Microsoft.Usage\" CheckId=\"CA1801\" Created=\"2008-11-27 14:00:44Z\" FixCategory=\"DependsOnFix\">\r\n              <Issue>\r\n               <Item>'m'</Item>\r\n               <Item>'HeaderControl.HandleMouseMove(ref Message)'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message Id=\"0#\" TypeName=\"DoNotPassTypesByReference\" Category=\"Microsoft.Design\" CheckId=\"CA1045\" Status=\"Excluded\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'m'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"17\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleNotify(System.Windows.Forms.Message&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" Status=\"Excluded\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue>\r\n               <Item>'HeaderControl.HandleNotify(ref Message)'</Item>\r\n               <Item>'Message.GetLParam(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'HeaderControl.HandleNotify(ref Message)'&#xD;&#xA;   -&gt;'HeaderControl.HandleNotify(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'HeaderControl.HandleNotify(ref Message)'</Item>\r\n               <Item>'Message.LParam.get()'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'HeaderControl.HandleNotify(ref Message)'&#xD;&#xA;   -&gt;'HeaderControl.HandleNotify(ref Message)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"18\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n             <Message Id=\"0#\" TypeName=\"DoNotPassTypesByReference\" Category=\"Microsoft.Design\" CheckId=\"CA1045\" Status=\"Excluded\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'m'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"17\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HotFontStyle\">\r\n            <Accessors>\r\n             <Accessor Name=\"#set_HotFontStyle(System.Drawing.FontStyle)\">\r\n              <Messages>\r\n               <Message Id=\"value\" TypeName=\"ReviewUnusedParameters\" Category=\"Microsoft.Usage\" CheckId=\"CA1801\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"DependsOnFix\">\r\n                <Issue>\r\n                 <Item>'value'</Item>\r\n                 <Item>'HeaderControl.HotFontStyle.set(FontStyle)'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n           <Member Name=\"#TextFormatFlags\">\r\n            <Messages>\r\n             <Message Id=\"Flags\" TypeName=\"UsePreferredTerms\" Category=\"Microsoft.Naming\" CheckId=\"CA1726\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"MemberNoAlternate\">\r\n               <Item>Flags</Item>\r\n               <Item>'HeaderControl.TextFormatFlags'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#WndProc(System.Windows.Forms.Message&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"OverrideLinkDemandsShouldBeIdenticalToBase\" Category=\"Microsoft.Security\" CheckId=\"CA2123\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue Name=\"BaseOnly\">\r\n               <Item>'HeaderControl.WndProc(ref Message)'</Item>\r\n               <Item>'NativeWindow.WndProc(ref Message)'</Item>\r\n               <Item>[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" Status=\"Excluded\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue>\r\n               <Item>'HeaderControl.WndProc(ref Message)'</Item>\r\n               <Item>'Message.Msg.get()'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'HeaderControl.WndProc(ref Message)'&#xD;&#xA;   -&gt;'HeaderControl.WndProc(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'HeaderControl.WndProc(ref Message)'</Item>\r\n               <Item>'NativeWindow.WndProc(ref Message)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'HeaderControl.WndProc(ref Message)'&#xD;&#xA;   -&gt;'HeaderControl.WndProc(ref Message)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"18\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"HighlightTextRenderer\">\r\n          <Members>\r\n           <Member Name=\"#.ctor(System.String)\">\r\n            <Messages>\r\n             <Message Id=\"text\" TypeName=\"ReviewUnusedParameters\" Category=\"Microsoft.Usage\" CheckId=\"CA1801\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"DependsOnFix\">\r\n              <Issue>\r\n               <Item>'text'</Item>\r\n               <Item>'HighlightTextRenderer.HighlightTextRenderer(string)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#StringComparison\">\r\n            <Accessors>\r\n             <Accessor Name=\"#set_StringComparison(System.StringComparison)\">\r\n              <Messages>\r\n               <Message Id=\"value\" TypeName=\"ReviewUnusedParameters\" Category=\"Microsoft.Usage\" CheckId=\"CA1801\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"DependsOnFix\">\r\n                <Issue>\r\n                 <Item>'value'</Item>\r\n                 <Item>'HighlightTextRenderer.StringComparison.set(StringComparison)'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n           <Member Name=\"#TextToHighlight\">\r\n            <Accessors>\r\n             <Accessor Name=\"#set_TextToHighlight(System.String)\">\r\n              <Messages>\r\n               <Message Id=\"value\" TypeName=\"ReviewUnusedParameters\" Category=\"Microsoft.Usage\" CheckId=\"CA1801\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"DependsOnFix\">\r\n                <Issue>\r\n                 <Item>'value'</Item>\r\n                 <Item>'HighlightTextRenderer.TextToHighlight.set(string)'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"HyperlinkEventArgs\">\r\n          <Members>\r\n           <Member Name=\"#Column\">\r\n            <Accessors>\r\n             <Accessor Name=\"#set_Column(BrightIdeasSoftware.OLVColumn)\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n                <Issue>\r\n                 <Item>'HyperlinkEventArgs.Column.set(OLVColumn)'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n           <Member Name=\"#ColumnIndex\">\r\n            <Accessors>\r\n             <Accessor Name=\"#set_ColumnIndex(System.Int32)\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n                <Issue>\r\n                 <Item>'HyperlinkEventArgs.ColumnIndex.set(int)'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n           <Member Name=\"#Item\">\r\n            <Accessors>\r\n             <Accessor Name=\"#set_Item(BrightIdeasSoftware.OLVListItem)\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n                <Issue>\r\n                 <Item>'HyperlinkEventArgs.Item.set(OLVListItem)'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n           <Member Name=\"#ListView\">\r\n            <Accessors>\r\n             <Accessor Name=\"#set_ListView(BrightIdeasSoftware.ObjectListView)\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n                <Issue>\r\n                 <Item>'HyperlinkEventArgs.ListView.set(ObjectListView)'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n           <Member Name=\"#Model\">\r\n            <Accessors>\r\n             <Accessor Name=\"#set_Model(System.Object)\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n                <Issue>\r\n                 <Item>'HyperlinkEventArgs.Model.set(object)'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n           <Member Name=\"#RowIndex\">\r\n            <Accessors>\r\n             <Accessor Name=\"#set_RowIndex(System.Int32)\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n                <Issue>\r\n                 <Item>'HyperlinkEventArgs.RowIndex.set(int)'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n           <Member Name=\"#SubItem\">\r\n            <Accessors>\r\n             <Accessor Name=\"#set_SubItem(BrightIdeasSoftware.OLVListSubItem)\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n                <Issue>\r\n                 <Item>'HyperlinkEventArgs.SubItem.set(OLVListSubItem)'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n           <Member Name=\"#Url\">\r\n            <Messages>\r\n             <Message TypeName=\"UriPropertiesShouldNotBeStrings\" Category=\"Microsoft.Design\" CheckId=\"CA1056\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'HyperlinkEventArgs.Url'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n            <Accessors>\r\n             <Accessor Name=\"#set_Url(System.String)\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n                <Issue>\r\n                 <Item>'HyperlinkEventArgs.Url.set(string)'</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"ImageRenderer\">\r\n          <Members>\r\n           <Member Name=\"#GetImageFromAspect()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'ImageRenderer.GetImageFromAspect()'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"16\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"IntUpDown\">\r\n          <Members>\r\n           <Member Name=\"#Value\">\r\n            <Accessors>\r\n             <Accessor Name=\"#get_Value()\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n                <Issue>\r\n                 <Item>'IntUpDown.Value.get()'</Item>\r\n                </Issue>\r\n                <Notes>\r\n                 <User Name=\"Admin_2\">\r\n                  <Note Id=\"11\" />\r\n                 </User>\r\n                </Notes>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n             <Accessor Name=\"#set_Value(System.Int32)\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n                <Issue>\r\n                 <Item>'IntUpDown.Value.set(int)'</Item>\r\n                </Issue>\r\n                <Notes>\r\n                 <User Name=\"Admin_2\">\r\n                  <Note Id=\"11\" />\r\n                 </User>\r\n                </Notes>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"IVirtualListDataSource\">\r\n          <Members>\r\n           <Member Name=\"#GetObjectCount()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'IVirtualListDataSource.GetObjectCount()'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"16\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"MultiImageRenderer\">\r\n          <Messages>\r\n           <Message Id=\"Multi\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n            <Issue Name=\"Type\">\r\n             <Item>Multi</Item>\r\n             <Item>'MultiImageRenderer'</Item>\r\n            </Issue>\r\n            <Notes>\r\n             <User Name=\"Admin_2\">\r\n              <Note Id=\"20\" />\r\n             </User>\r\n            </Notes>\r\n           </Message>\r\n          </Messages>\r\n          <Members>\r\n           <Member Name=\"#ImageSelector\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertyNamesShouldNotMatchGetMethods\" Category=\"Microsoft.Naming\" CheckId=\"CA1721\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"BaseType\">\r\n               <Item>'MultiImageRenderer.ImageSelector'</Item>\r\n               <Item>'BaseRenderer.GetImageSelector()'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"Munger\">\r\n          <Members>\r\n           <Member Name=\"#GetValue(System.Object)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotCatchGeneralExceptionTypes\" Category=\"Microsoft.Design\" CheckId=\"CA1031\" Status=\"Excluded\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'Munger.GetValue(object)'</Item>\r\n               <Item>'object'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"administration\">\r\n                <Note Id=\"2\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#PutValue(System.Object,System.Object)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotCatchGeneralExceptionTypes\" Category=\"Microsoft.Design\" CheckId=\"CA1031\" Status=\"Excluded\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'Munger.PutValue(object, object)'</Item>\r\n               <Item>'object'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'Munger.PutValue(object, object)'</Item>\r\n               <Item>'object'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"administration\">\r\n                <Note Id=\"2\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"NativeMethods\">\r\n          <Members>\r\n           <Member Name=\"#ChangeSize(System.Windows.Forms.IWin32Window,System.Int32,System.Int32)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.ChangeSize(IWin32Window, int, int)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ChangeZOrder(System.Windows.Forms.IWin32Window,System.Windows.Forms.IWin32Window)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.ChangeZOrder(IWin32Window, IWin32Window)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#DeleteObject(System.IntPtr)\">\r\n            <Messages>\r\n             <Message TypeName=\"MarkBooleanPInvokeArgumentsWithMarshalAs\" Category=\"Microsoft.Interoperability\" CheckId=\"CA1414\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Return\">\r\n               <Item>'NativeMethods.DeleteObject(IntPtr)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#DrawImageList(System.Drawing.Graphics,System.Windows.Forms.ImageList,System.Int32,System.Int32,System.Int32,System.Boolean)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.DrawImageList(Graphics, ImageList, int, int, int, bool)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetClientRect(System.IntPtr,System.Drawing.Rectangle&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"MarkBooleanPInvokeArgumentsWithMarshalAs\" Category=\"Microsoft.Interoperability\" CheckId=\"CA1414\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Return\">\r\n               <Item>'NativeMethods.GetClientRect(IntPtr, ref Rectangle)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetColumnSides(BrightIdeasSoftware.ObjectListView,System.Int32)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.GetColumnSides(ObjectListView, int)'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message Id=\"System.Drawing.Point\" TypeName=\"DoNotIgnoreMethodResults\" Category=\"Microsoft.Usage\" CheckId=\"CA1806\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"ObjectCreation\">\r\n               <Item>'NativeMethods.GetColumnSides(ObjectListView, int)'</Item>\r\n               <Item>'Point'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetGroupInfo(BrightIdeasSoftware.ObjectListView,System.Int32,BrightIdeasSoftware.NativeMethods+LVGROUP2&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.GetGroupInfo(ObjectListView, int, ref NativeMethods.LVGROUP2)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetScrollInfo(System.IntPtr,System.Int32,BrightIdeasSoftware.NativeMethods+SCROLLINFO)\">\r\n            <Messages>\r\n             <Message TypeName=\"MarkBooleanPInvokeArgumentsWithMarshalAs\" Category=\"Microsoft.Interoperability\" CheckId=\"CA1414\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Name=\"Return\">\r\n               <Item>'NativeMethods.GetScrollInfo(IntPtr, int, NativeMethods.SCROLLINFO)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetUpdateRect(System.Windows.Forms.Control)\">\r\n            <Messages>\r\n             <Message Id=\"BrightIdeasSoftware.NativeMethods.GetUpdateRectInternal(System.IntPtr,System.Drawing.Rectangle@,System.Boolean)\" TypeName=\"DoNotIgnoreMethodResults\" Category=\"Microsoft.Usage\" CheckId=\"CA1806\" Created=\"2008-11-27 14:46:44Z\">\r\n              <Issue Name=\"HResultOrErrorCode\">\r\n               <Item>'NativeMethods.GetUpdateRect(Control)'</Item>\r\n               <Item>'NativeMethods.GetUpdateRectInternal(IntPtr, ref Rectangle, bool)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetUpdateRectInternal(System.IntPtr,System.Drawing.Rectangle&amp;,System.Boolean)\">\r\n            <Messages>\r\n             <Message TypeName=\"MarkBooleanPInvokeArgumentsWithMarshalAs\" Category=\"Microsoft.Interoperability\" CheckId=\"CA1414\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'eraseBackground'</Item>\r\n               <Item>'NativeMethods.GetUpdateRectInternal(IntPtr, ref Rectangle, bool)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetWindowLong32(System.IntPtr,System.Int32)\">\r\n            <Messages>\r\n             <Message Id=\"return\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Return\">\r\n               <Item>'NativeMethods.GetWindowLong32(IntPtr, int)'</Item>\r\n               <Item>8</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>4</Item>\r\n               <Item>'IntPtr'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetWindowLongPtr64(System.IntPtr,System.Int32)\">\r\n            <Messages>\r\n             <Message TypeName=\"PInvokeEntryPointsShouldExist\" Category=\"Microsoft.Interoperability\" CheckId=\"CA1400\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.GetWindowLongPtr64(IntPtr, int)'</Item>\r\n               <Item>'user32.dll'</Item>\r\n               <Item>GetWindowLongPtr</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ImageList_Draw(System.IntPtr,System.Int32,System.IntPtr,System.Int32,System.Int32,System.Int32)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.ImageList_Draw(IntPtr, int, IntPtr, int, int, int)'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message TypeName=\"MarkBooleanPInvokeArgumentsWithMarshalAs\" Category=\"Microsoft.Interoperability\" CheckId=\"CA1414\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Return\">\r\n               <Item>'NativeMethods.ImageList_Draw(IntPtr, int, IntPtr, int, int, int)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#InvalidateRect(System.IntPtr,System.Int32,System.Boolean)\">\r\n            <Messages>\r\n             <Message TypeName=\"MarkBooleanPInvokeArgumentsWithMarshalAs\" Category=\"Microsoft.Interoperability\" CheckId=\"CA1414\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'erase'</Item>\r\n               <Item>'NativeMethods.InvalidateRect(IntPtr, int, bool)'</Item>\r\n              </Issue>\r\n              <Issue Name=\"Return\">\r\n               <Item>'NativeMethods.InvalidateRect(IntPtr, int, bool)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessage(System.IntPtr,System.Int32,System.Int32,BrightIdeasSoftware.NativeMethods+LVGROUP&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.SendMessage(IntPtr, int, int, ref NativeMethods.LVGROUP)'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'wParam'</Item>\r\n               <Item>'NativeMethods.SendMessage(IntPtr, int, int, ref NativeMethods.LVGROUP)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessage(System.IntPtr,System.Int32,System.Int32,BrightIdeasSoftware.NativeMethods+LVGROUP2&amp;)\">\r\n            <Messages>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'wParam'</Item>\r\n               <Item>'NativeMethods.SendMessage(IntPtr, int, int, ref NativeMethods.LVGROUP2)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessage(System.IntPtr,System.Int32,System.Int32,BrightIdeasSoftware.NativeMethods+LVGROUPMETRICS&amp;)\">\r\n            <Messages>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'wParam'</Item>\r\n               <Item>'NativeMethods.SendMessage(IntPtr, int, int, ref NativeMethods.LVGROUPMETRICS)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessage(System.IntPtr,System.Int32,System.Int32,BrightIdeasSoftware.NativeMethods+LVHITTESTINFO&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.SendMessage(IntPtr, int, int, ref NativeMethods.LVHITTESTINFO)'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'wParam'</Item>\r\n               <Item>'NativeMethods.SendMessage(IntPtr, int, int, ref NativeMethods.LVHITTESTINFO)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessage(System.IntPtr,System.Int32,System.Int32,System.Int32)\">\r\n            <Messages>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2008-10-30 20:23:07Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'wParam'</Item>\r\n               <Item>'NativeMethods.SendMessage(IntPtr, int, int, int)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message Id=\"3\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2008-10-30 20:23:07Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'lParam'</Item>\r\n               <Item>'NativeMethods.SendMessage(IntPtr, int, int, int)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessage(System.IntPtr,System.Int32,System.Int32,System.IntPtr)\">\r\n            <Messages>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'wParam'</Item>\r\n               <Item>'NativeMethods.SendMessage(IntPtr, int, int, IntPtr)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessage(System.IntPtr,System.Int32,System.IntPtr,System.Int32)\">\r\n            <Messages>\r\n             <Message Id=\"3\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'lParam'</Item>\r\n               <Item>'NativeMethods.SendMessage(IntPtr, int, IntPtr, int)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessageHDItem(System.IntPtr,System.Int32,System.Int32,BrightIdeasSoftware.NativeMethods+HDITEM&amp;)\">\r\n            <Messages>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2008-10-30 20:23:07Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'wParam'</Item>\r\n               <Item>'NativeMethods.SendMessageHDItem(IntPtr, int, int, ref NativeMethods.HDITEM)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessageIUnknown(System.IntPtr,System.Int32,System.Object,System.Int32)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.SendMessageIUnknown(IntPtr, int, object, int)'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message Id=\"3\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'lParam'</Item>\r\n               <Item>'NativeMethods.SendMessageIUnknown(IntPtr, int, object, int)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessageLVBKIMAGE(System.IntPtr,System.Int32,System.Int32,BrightIdeasSoftware.NativeMethods+LVBKIMAGE&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.SendMessageLVBKIMAGE(IntPtr, int, int, ref NativeMethods.LVBKIMAGE)'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'wParam'</Item>\r\n               <Item>'NativeMethods.SendMessageLVBKIMAGE(IntPtr, int, int, ref NativeMethods.LVBKIMAGE)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessageLVItem(System.IntPtr,System.Int32,System.Int32,BrightIdeasSoftware.NativeMethods+LVITEM&amp;)\">\r\n            <Messages>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2008-10-30 20:23:07Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'wParam'</Item>\r\n               <Item>'NativeMethods.SendMessageLVItem(IntPtr, int, int, ref NativeMethods.LVITEM)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessageRECT(System.IntPtr,System.Int32,System.Int32,BrightIdeasSoftware.NativeMethods+RECT&amp;)\">\r\n            <Messages>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'wParam'</Item>\r\n               <Item>'NativeMethods.SendMessageRECT(IntPtr, int, int, ref NativeMethods.RECT)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessageString(System.IntPtr,System.Int32,System.Int32,System.String)\">\r\n            <Messages>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'wParam'</Item>\r\n               <Item>'NativeMethods.SendMessageString(IntPtr, int, int, string)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message Id=\"3\" TypeName=\"SpecifyMarshalingForPInvokeStringArguments\" Category=\"Microsoft.Globalization\" CheckId=\"CA2101\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'lParam'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SendMessageTOOLINFO(System.IntPtr,System.Int32,System.Int32,BrightIdeasSoftware.NativeMethods+TOOLINFO)\">\r\n            <Messages>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2008-11-27 14:00:44Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'wParam'</Item>\r\n               <Item>'NativeMethods.SendMessageTOOLINFO(IntPtr, int, int, NativeMethods.TOOLINFO)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetBackgroundImage(System.Windows.Forms.ListView,System.Drawing.Image)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.SetBackgroundImage(ListView, Image)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetBkColor(System.IntPtr,System.Int32)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.SetBkColor(IntPtr, int)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetSelectedColumn(System.Windows.Forms.ListView,System.Windows.Forms.ColumnHeader)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.SetSelectedColumn(ListView, ColumnHeader)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetTextColor(System.IntPtr,System.Int32)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.SetTextColor(IntPtr, int)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetTooltipControl(System.Windows.Forms.ListView,BrightIdeasSoftware.ToolTipControl)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.SetTooltipControl(ListView, ToolTipControl)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetWindowLongPtr32(System.IntPtr,System.Int32,System.Int32)\">\r\n            <Messages>\r\n             <Message Id=\"return\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Return\">\r\n               <Item>'NativeMethods.SetWindowLongPtr32(IntPtr, int, int)'</Item>\r\n               <Item>8</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>4</Item>\r\n               <Item>'IntPtr'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetWindowLongPtr64(System.IntPtr,System.Int32,System.Int32)\">\r\n            <Messages>\r\n             <Message Id=\"2\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'dwNewLong'</Item>\r\n               <Item>'NativeMethods.SetWindowLongPtr64(IntPtr, int, int)'</Item>\r\n               <Item>4</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>8</Item>\r\n               <Item>'int'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message TypeName=\"PInvokeEntryPointsShouldExist\" Category=\"Microsoft.Interoperability\" CheckId=\"CA1400\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.SetWindowLongPtr64(IntPtr, int, int)'</Item>\r\n               <Item>'user32.dll'</Item>\r\n               <Item>SetWindowLongPtr</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetWindowPos(System.IntPtr,System.IntPtr,System.Int32,System.Int32,System.Int32,System.Int32,System.UInt32)\">\r\n            <Messages>\r\n             <Message TypeName=\"MarkBooleanPInvokeArgumentsWithMarshalAs\" Category=\"Microsoft.Interoperability\" CheckId=\"CA1414\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Return\">\r\n               <Item>'NativeMethods.SetWindowPos(IntPtr, IntPtr, int, int, int, int, uint)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetWindowTheme(System.IntPtr,System.String,System.String)\">\r\n            <Messages>\r\n             <Message Id=\"return\" TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"Return\">\r\n               <Item>'NativeMethods.SetWindowTheme(IntPtr, string, string)'</Item>\r\n               <Item>8</Item>\r\n               <Item>64-bit</Item>\r\n               <Item>4</Item>\r\n               <Item>'IntPtr'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message Id=\"1\" TypeName=\"SpecifyMarshalingForPInvokeStringArguments\" Category=\"Microsoft.Globalization\" CheckId=\"CA2101\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'subApp'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message Id=\"2\" TypeName=\"SpecifyMarshalingForPInvokeStringArguments\" Category=\"Microsoft.Globalization\" CheckId=\"CA2101\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'subIdList'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ShowWindow(System.IntPtr,System.Int32)\">\r\n            <Messages>\r\n             <Message TypeName=\"MarkBooleanPInvokeArgumentsWithMarshalAs\" Category=\"Microsoft.Interoperability\" CheckId=\"CA1414\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Return\">\r\n               <Item>'NativeMethods.ShowWindow(IntPtr, int)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ValidatedRectInternal(System.IntPtr,System.Drawing.Rectangle&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.ValidatedRectInternal(IntPtr, ref Rectangle)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ValidateRect(System.Windows.Forms.Control,System.Drawing.Rectangle)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.ValidateRect(Control, Rectangle)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"NativeMethods+SCROLLINFO\">\r\n          <Members>\r\n           <Member Name=\"#.ctor()\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.SCROLLINFO.SCROLLINFO()'</Item>\r\n               <Item>'Marshal.SizeOf(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.GetScrollPosition(ListView, bool)'&#xD;&#xA;   -&gt;'HeaderControl.ColumnIndexUnderCursor.get()'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'NativeMethods.SCROLLINFO.SCROLLINFO()'</Item>\r\n               <Item>'Marshal.SizeOf(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.GetScrollPosition(ListView, bool)'&#xD;&#xA;   -&gt;'HeaderControl.IsCursorOverLockedDivider.get()'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'NativeMethods.SCROLLINFO.SCROLLINFO()'</Item>\r\n               <Item>'Marshal.SizeOf(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.GetScrollPosition(ListView, bool)'&#xD;&#xA;   -&gt;'NativeMethods.GetScrolledColumnSides(ListView, int)'&#xD;&#xA;   -&gt;'OLVListItem.GetSubItemBounds(int)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'NativeMethods.SCROLLINFO.SCROLLINFO()'</Item>\r\n               <Item>'Marshal.SizeOf(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.GetScrollPosition(ListView, bool)'&#xD;&#xA;   -&gt;'NativeMethods.GetScrolledColumnSides(ListView, int)'&#xD;&#xA;   -&gt;'ObjectListView.CalculateCellBounds(OLVListItem, int, ItemBoundsPortion)'&#xD;&#xA;   -&gt;'ObjectListView.CalculateCellBounds(OLVListItem, int)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'NativeMethods.SCROLLINFO.SCROLLINFO()'</Item>\r\n               <Item>'Marshal.SizeOf(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.GetScrollPosition(ListView, bool)'&#xD;&#xA;   -&gt;'NativeMethods.GetScrolledColumnSides(ListView, int)'&#xD;&#xA;   -&gt;'ObjectListView.CalculateCellBounds(OLVListItem, int, ItemBoundsPortion)'&#xD;&#xA;   -&gt;'ObjectListView.CalculateCellTextBounds(OLVListItem, int)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'NativeMethods.SCROLLINFO.SCROLLINFO()'</Item>\r\n               <Item>'Marshal.SizeOf(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.GetScrollPosition(ListView, bool)'&#xD;&#xA;   -&gt;'NativeMethods.GetScrolledColumnSides(ListView, int)'&#xD;&#xA;   -&gt;'ObjectListView.OlvHitTest(int, int)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'NativeMethods.SCROLLINFO.SCROLLINFO()'</Item>\r\n               <Item>'Marshal.SizeOf(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.GetScrollPosition(ListView, bool)'&#xD;&#xA;   -&gt;'NativeMethods.GetScrolledColumnSides(ListView, int)'&#xD;&#xA;   -&gt;'TintedColumnDecoration.Draw(ObjectListView, Graphics, Rectangle)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'NativeMethods.SCROLLINFO.SCROLLINFO()'</Item>\r\n               <Item>'Marshal.SizeOf(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.GetScrollPosition(ListView, bool)'&#xD;&#xA;   -&gt;'ObjectListView.EnsureGroupVisible(ListViewGroup)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'NativeMethods.SCROLLINFO.SCROLLINFO()'</Item>\r\n               <Item>'Marshal.SizeOf(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.GetScrollPosition(ListView, bool)'&#xD;&#xA;   -&gt;'ObjectListView.HandleBeginScroll(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'NativeMethods.SCROLLINFO.SCROLLINFO()'</Item>\r\n               <Item>'Marshal.SizeOf(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.SCROLLINFO.SCROLLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.GetScrollPosition(ListView, bool)'&#xD;&#xA;   -&gt;'ObjectListView.HandleKeyDown(ref Message)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"6\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"NativeMethods+TOOLINFO\">\r\n          <Members>\r\n           <Member Name=\"#.ctor()\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" Status=\"Excluded\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue>\r\n               <Item>'NativeMethods.TOOLINFO.TOOLINFO()'</Item>\r\n               <Item>'Marshal.SizeOf(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'NativeMethods.TOOLINFO.TOOLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.TOOLINFO.TOOLINFO()'&#xD;&#xA;   -&gt;'ToolTipControl.MakeToolInfoStruct(IWin32Window)'&#xD;&#xA;   -&gt;'ToolTipControl.AddTool(IWin32Window)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'NativeMethods.TOOLINFO.TOOLINFO()'</Item>\r\n               <Item>'Marshal.SizeOf(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'NativeMethods.TOOLINFO.TOOLINFO()'&#xD;&#xA;   -&gt;'NativeMethods.TOOLINFO.TOOLINFO()'&#xD;&#xA;   -&gt;'ToolTipControl.MakeToolInfoStruct(IWin32Window)'&#xD;&#xA;   -&gt;'ToolTipControl.RemoveToolTip(IWin32Window)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"18\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"ObjectListView\">\r\n          <Members>\r\n           <Member Name=\"#AllColumns\">\r\n            <Messages>\r\n             <Message TypeName=\"CollectionPropertiesShouldBeReadOnly\" Category=\"Microsoft.Usage\" CheckId=\"CA2227\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.AllColumns'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"5\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n             <Message TypeName=\"DoNotExposeGenericLists\" Category=\"Microsoft.Design\" CheckId=\"CA1002\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'List&lt;OLVColumn&gt;'</Item>\r\n               <Item>'ObjectListView.AllColumns'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"14\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ApplyHyperlinkStyle(System.Int32,BrightIdeasSoftware.OLVListItem)\">\r\n            <Messages>\r\n             <Message Id=\"rowIndex\" TypeName=\"ReviewUnusedParameters\" Category=\"Microsoft.Usage\" CheckId=\"CA1801\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue>\r\n               <Item>'rowIndex'</Item>\r\n               <Item>'ObjectListView.ApplyHyperlinkStyle(int, OLVListItem)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#BooleanCheckStateGetter\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertiesShouldNotBeWriteOnly\" Category=\"Microsoft.Design\" CheckId=\"CA1044\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue Name=\"AddGetter\">\r\n               <Item>'ObjectListView.BooleanCheckStateGetter'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#BooleanCheckStatePutter\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertiesShouldNotBeWriteOnly\" Category=\"Microsoft.Design\" CheckId=\"CA1044\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue Name=\"AddGetter\">\r\n               <Item>'ObjectListView.BooleanCheckStatePutter'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#CalculateCellBounds(BrightIdeasSoftware.OLVListItem,System.Int32)\">\r\n            <Messages>\r\n             <Message TypeName=\"ConsiderPassingBaseTypesAsParameters\" Category=\"Microsoft.Design\" CheckId=\"CA1011\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'item'</Item>\r\n               <Item>'ObjectListView.CalculateCellBounds(OLVListItem, int)'</Item>\r\n               <Item>'OLVListItem'</Item>\r\n               <Item>'ListViewItem'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"21\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#CellEditor\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertyNamesShouldNotMatchGetMethods\" Category=\"Microsoft.Naming\" CheckId=\"CA1721\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"SameType\">\r\n               <Item>'ObjectListView.CellEditor'</Item>\r\n               <Item>'ObjectListView.GetCellEditor(OLVListItem, int)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#CellEditor_Validating(System.Object,System.ComponentModel.CancelEventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.CellEditor_Validating(object, CancelEventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#CellToolTip\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertyNamesShouldNotMatchGetMethods\" Category=\"Microsoft.Naming\" CheckId=\"CA1721\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"SameType\">\r\n               <Item>'ObjectListView.CellToolTip'</Item>\r\n               <Item>'ObjectListView.GetCellToolTip(int, int)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#CheckedObject\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertyNamesShouldNotMatchGetMethods\" Category=\"Microsoft.Naming\" CheckId=\"CA1721\" Created=\"2008-10-30 20:23:07Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"SameType\">\r\n               <Item>'ObjectListView.CheckedObject'</Item>\r\n               <Item>'ObjectListView.GetCheckedObject()'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#CheckedObjects\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertyNamesShouldNotMatchGetMethods\" Category=\"Microsoft.Naming\" CheckId=\"CA1721\" Created=\"2008-10-30 20:23:07Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"SameType\">\r\n               <Item>'ObjectListView.CheckedObjects'</Item>\r\n               <Item>'ObjectListView.GetCheckedObjects()'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message TypeName=\"CollectionPropertiesShouldBeReadOnly\" Category=\"Microsoft.Usage\" CheckId=\"CA2227\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.CheckedObjects'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"5\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ColumnsInDisplayOrder\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotExposeGenericLists\" Category=\"Microsoft.Design\" CheckId=\"CA1002\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'List&lt;OLVColumn&gt;'</Item>\r\n               <Item>'ObjectListView.ColumnsInDisplayOrder'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"14\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ConfigureAutoComplete(System.Windows.Forms.TextBox,BrightIdeasSoftware.OLVColumn)\">\r\n            <Messages>\r\n             <Message Id=\"tb\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"MemberParameter\">\r\n               <Item>'ObjectListView.ConfigureAutoComplete(TextBox, OLVColumn)'</Item>\r\n               <Item>tb</Item>\r\n               <Item>'tb'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ConfigureAutoComplete(System.Windows.Forms.TextBox,BrightIdeasSoftware.OLVColumn,System.Int32)\">\r\n            <Messages>\r\n             <Message Id=\"tb\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"MemberParameter\">\r\n               <Item>'ObjectListView.ConfigureAutoComplete(TextBox, OLVColumn, int)'</Item>\r\n               <Item>tb</Item>\r\n               <Item>'tb'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#DrawAllDecorations(System.Drawing.Graphics,System.Collections.Generic.List`1&lt;BrightIdeasSoftware.OLVListItem&gt;)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotExposeGenericLists\" Category=\"Microsoft.Design\" CheckId=\"CA1002\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'List&lt;OLVListItem&gt;'</Item>\r\n               <Item>'ObjectListView.DrawAllDecorations(Graphics, List&lt;OLVListItem&gt;)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#EditorRegistry\">\r\n            <Messages>\r\n             <Message TypeName=\"NonConstantFieldsShouldNotBeVisible\" Category=\"Microsoft.Usage\" CheckId=\"CA2211\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.EditorRegistry'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#EnsureGroupVisible(System.Windows.Forms.ListViewGroup)\">\r\n            <Messages>\r\n             <Message Id=\"lvg\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"MemberParameter\">\r\n               <Item>'ObjectListView.EnsureGroupVisible(ListViewGroup)'</Item>\r\n               <Item>lvg</Item>\r\n               <Item>'lvg'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#FilterObjects(System.Collections.IEnumerable,BrightIdeasSoftware.IModelFilter,BrightIdeasSoftware.IListFilter)\">\r\n            <Messages>\r\n             <Message Id=\"a\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"MemberParameter\">\r\n               <Item>'ObjectListView.FilterObjects(IEnumerable, IModelFilter, IListFilter)'</Item>\r\n               <Item>a</Item>\r\n               <Item>'aListFilter'</Item>\r\n              </Issue>\r\n              <Issue Name=\"MemberParameter\">\r\n               <Item>'ObjectListView.FilterObjects(IEnumerable, IModelFilter, IListFilter)'</Item>\r\n               <Item>a</Item>\r\n               <Item>'aModelFilter'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetControlValue(System.Windows.Forms.Control)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotCastUnnecessarily\" Category=\"Microsoft.Performance\" CheckId=\"CA1800\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'control'</Item>\r\n               <Item>'CheckBox'</Item>\r\n               <Item>'ObjectListView.GetControlValue(Control)'</Item>\r\n               <Item>castclass</Item>\r\n              </Issue>\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'control'</Item>\r\n               <Item>'ComboBox'</Item>\r\n               <Item>'ObjectListView.GetControlValue(Control)'</Item>\r\n               <Item>castclass</Item>\r\n              </Issue>\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'control'</Item>\r\n               <Item>'TextBox'</Item>\r\n               <Item>'ObjectListView.GetControlValue(Control)'</Item>\r\n               <Item>castclass</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetFilteredColumns(System.Windows.Forms.View)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotExposeGenericLists\" Category=\"Microsoft.Design\" CheckId=\"CA1002\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'List&lt;OLVColumn&gt;'</Item>\r\n               <Item>'ObjectListView.GetFilteredColumns(View)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"14\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetItemAt(System.Int32,System.Int32,BrightIdeasSoftware.OLVColumn&amp;)\">\r\n            <Messages>\r\n             <Message Id=\"2#\" TypeName=\"AvoidOutParameters\" Category=\"Microsoft.Design\" CheckId=\"CA1021\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'selectedColumn'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"3\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetItemCount()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.GetItemCount()'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"16\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetLastItemInDisplayOrder()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'ObjectListView.GetLastItemInDisplayOrder()'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetSelectedObject()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'ObjectListView.GetSelectedObject()'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"16\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GetSelectedObjects()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'ObjectListView.GetSelectedObjects()'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"16\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleApplicationIdle(System.Object,System.EventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleApplicationIdle(object, EventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleApplicationIdle_ResizeColumns(System.Object,System.EventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleApplicationIdle_ResizeColumns(object, EventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleCellToolTipShowing(System.Object,BrightIdeasSoftware.ToolTipShowingEventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleCellToolTipShowing(object, ToolTipShowingEventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleChar(System.Windows.Forms.Message&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" Status=\"Excluded\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleChar(ref Message)'</Item>\r\n               <Item>'Control.ProcessKeyEventArgs(ref Message)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleChar(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleChar(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleChar(ref Message)'</Item>\r\n               <Item>'Message.WParam.get()'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleChar(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleChar(ref Message)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"18\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n             <Message Id=\"0#\" TypeName=\"DoNotPassTypesByReference\" Category=\"Microsoft.Design\" CheckId=\"CA1045\" Status=\"Excluded\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'m'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"17\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleColumnClick(System.Object,System.Windows.Forms.ColumnClickEventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleColumnClick(object, ColumnClickEventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleColumnWidthChanged(System.Object,System.Windows.Forms.ColumnWidthChangedEventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleColumnWidthChanged(object, ColumnWidthChangedEventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleColumnWidthChanging(System.Object,System.Windows.Forms.ColumnWidthChangingEventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleColumnWidthChanging(object, ColumnWidthChangingEventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleContextMenu(System.Windows.Forms.Message&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleContextMenu(ref Message)'</Item>\r\n               <Item>'Message.LParam.get()'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleContextMenu(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleContextMenu(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleContextMenu(ref Message)'</Item>\r\n               <Item>'Message.WParam.get()'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleContextMenu(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleContextMenu(ref Message)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"6\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n             <Message Id=\"0#\" TypeName=\"DoNotPassTypesByReference\" Category=\"Microsoft.Design\" CheckId=\"CA1045\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'m'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"8\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleFindItem(System.Windows.Forms.Message&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" Status=\"Excluded\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleFindItem(ref Message)'</Item>\r\n               <Item>'Message.GetLParam(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleFindItem(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleFindItem(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleFindItem(ref Message)'</Item>\r\n               <Item>'Message.Result.set(IntPtr)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleFindItem(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleFindItem(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleFindItem(ref Message)'</Item>\r\n               <Item>'Message.WParam.get()'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleFindItem(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleFindItem(ref Message)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"18\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n             <Message Id=\"0#\" TypeName=\"DoNotPassTypesByReference\" Category=\"Microsoft.Design\" CheckId=\"CA1045\" Status=\"Excluded\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'m'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"17\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleHeaderToolTipShowing(System.Object,BrightIdeasSoftware.ToolTipShowingEventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleHeaderToolTipShowing(object, ToolTipShowingEventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleLayout(System.Object,System.Windows.Forms.LayoutEventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleLayout(object, LayoutEventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleNotify(System.Windows.Forms.Message&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleNotify(ref Message)'</Item>\r\n               <Item>'Marshal.PtrToStructure(IntPtr, Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleNotify(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleNotify(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleNotify(ref Message)'</Item>\r\n               <Item>'Marshal.StructureToPtr(object, IntPtr, bool)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleNotify(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleNotify(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleNotify(ref Message)'</Item>\r\n               <Item>'Message.GetLParam(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleNotify(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleNotify(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleNotify(ref Message)'</Item>\r\n               <Item>'Message.Result.set(IntPtr)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleNotify(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleNotify(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleNotify(ref Message)'</Item>\r\n               <Item>'NativeWindow.Handle.get()'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleNotify(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleNotify(ref Message)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"6\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n             <Message Id=\"0#\" TypeName=\"DoNotPassTypesByReference\" Category=\"Microsoft.Design\" CheckId=\"CA1045\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'m'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"8\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleReflectNotify(System.Windows.Forms.Message&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleReflectNotify(ref Message)'</Item>\r\n               <Item>'Marshal.StructureToPtr(object, IntPtr, bool)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleReflectNotify(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleReflectNotify(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleReflectNotify(ref Message)'</Item>\r\n               <Item>'Message.GetLParam(Type)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleReflectNotify(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleReflectNotify(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'ObjectListView.HandleReflectNotify(ref Message)'</Item>\r\n               <Item>'Message.LParam.get()'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.HandleReflectNotify(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.HandleReflectNotify(ref Message)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"6\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n             <Message Id=\"0#\" TypeName=\"DoNotPassTypesByReference\" Category=\"Microsoft.Design\" CheckId=\"CA1045\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'m'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"8\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HeaderToolTip\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertyNamesShouldNotMatchGetMethods\" Category=\"Microsoft.Naming\" CheckId=\"CA1721\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"SameType\">\r\n               <Item>'ObjectListView.HeaderToolTip'</Item>\r\n               <Item>'ObjectListView.GetHeaderToolTip(int)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#IsUrlVisited(System.String)\">\r\n            <Messages>\r\n             <Message Id=\"0#\" TypeName=\"UriParametersShouldNotBeStrings\" Category=\"Microsoft.Design\" CheckId=\"CA1054\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'url'</Item>\r\n               <Item>'ObjectListView.IsUrlVisited(string)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#MarkUrlVisited(System.String)\">\r\n            <Messages>\r\n             <Message Id=\"0#\" TypeName=\"UriParametersShouldNotBeStrings\" Category=\"Microsoft.Design\" CheckId=\"CA1054\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'url'</Item>\r\n               <Item>'ObjectListView.MarkUrlVisited(string)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#MenuLabelUnsort\">\r\n            <Messages>\r\n             <Message Id=\"Unsort\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Member\">\r\n               <Item>Unsort</Item>\r\n               <Item>'ObjectListView.MenuLabelUnsort'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ProcessDialogKey(System.Windows.Forms.Keys)\">\r\n            <Messages>\r\n             <Message TypeName=\"OverrideLinkDemandsShouldBeIdenticalToBase\" Category=\"Microsoft.Security\" CheckId=\"CA2123\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Name=\"BaseOnly\">\r\n               <Item>'ObjectListView.ProcessDialogKey(Keys)'</Item>\r\n               <Item>'Control.ProcessDialogKey(Keys)'</Item>\r\n               <Item>[UIPermission(SecurityAction.LinkDemand, Window = UIPermissionWindow.AllWindows)]</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.ProcessDialogKey(Keys)'</Item>\r\n               <Item>'Control.ProcessDialogKey(Keys)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.ProcessDialogKey(Keys)'&#xD;&#xA;   -&gt;'ObjectListView.ProcessDialogKey(Keys)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"6\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SelectedObject\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertyNamesShouldNotMatchGetMethods\" Category=\"Microsoft.Naming\" CheckId=\"CA1721\" Created=\"2008-10-30 20:23:07Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"SameType\">\r\n               <Item>'ObjectListView.SelectedObject'</Item>\r\n               <Item>'ObjectListView.GetSelectedObject()'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SelectedObjects\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertyNamesShouldNotMatchGetMethods\" Category=\"Microsoft.Naming\" CheckId=\"CA1721\" Created=\"2008-10-30 20:23:07Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"SameType\">\r\n               <Item>'ObjectListView.SelectedObjects'</Item>\r\n               <Item>'ObjectListView.GetSelectedObjects()'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message TypeName=\"CollectionPropertiesShouldBeReadOnly\" Category=\"Microsoft.Usage\" CheckId=\"CA2227\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.SelectedObjects'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"5\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetControlValue(System.Windows.Forms.Control,System.Object,System.String)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotCastUnnecessarily\" Category=\"Microsoft.Performance\" CheckId=\"CA1800\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Parameter\">\r\n               <Item>'control'</Item>\r\n               <Item>'ComboBox'</Item>\r\n               <Item>'ObjectListView.SetControlValue(Control, object, string)'</Item>\r\n               <Item>castclass</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetObjectCheckedness(System.Object,System.Windows.Forms.CheckState)\">\r\n            <Messages>\r\n             <Message Id=\"Checkedness\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Status=\"Excluded\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue Name=\"Member\">\r\n               <Item>Checkedness</Item>\r\n               <Item>'ObjectListView.SetObjectCheckedness(object, CheckState)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"20\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetSubItemImages(System.Int32,BrightIdeasSoftware.OLVListItem,System.Boolean)\">\r\n            <Messages>\r\n             <Message TypeName=\"ConsiderPassingBaseTypesAsParameters\" Category=\"Microsoft.Design\" CheckId=\"CA1011\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'item'</Item>\r\n               <Item>'ObjectListView.SetSubItemImages(int, OLVListItem, bool)'</Item>\r\n               <Item>'OLVListItem'</Item>\r\n               <Item>'ListViewItem'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"21\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ShowSortIndicator(BrightIdeasSoftware.OLVColumn,System.Windows.Forms.SortOrder)\">\r\n            <Messages>\r\n             <Message TypeName=\"ConsiderPassingBaseTypesAsParameters\" Category=\"Microsoft.Design\" CheckId=\"CA1011\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'columnToSort'</Item>\r\n               <Item>'ObjectListView.ShowSortIndicator(OLVColumn, SortOrder)'</Item>\r\n               <Item>'OLVColumn'</Item>\r\n               <Item>'ColumnHeader'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"21\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SORT_INDICATOR_DOWN_KEY\">\r\n            <Messages>\r\n             <Message TypeName=\"IdentifiersShouldNotContainUnderscores\" Category=\"Microsoft.Naming\" CheckId=\"CA1707\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Name=\"Member\">\r\n               <Item>'ObjectListView.SORT_INDICATOR_DOWN_KEY'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"13\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SORT_INDICATOR_UP_KEY\">\r\n            <Messages>\r\n             <Message TypeName=\"IdentifiersShouldNotContainUnderscores\" Category=\"Microsoft.Naming\" CheckId=\"CA1707\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Name=\"Member\">\r\n               <Item>'ObjectListView.SORT_INDICATOR_UP_KEY'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"13\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#System.ComponentModel.ISupportInitialize.BeginInit()\">\r\n            <Messages>\r\n             <Message TypeName=\"InterfaceMethodsShouldBeCallableByChildTypes\" Category=\"Microsoft.Design\" CheckId=\"CA1033\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView'</Item>\r\n               <Item>'ISupportInitialize.BeginInit()'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#System.ComponentModel.ISupportInitialize.EndInit()\">\r\n            <Messages>\r\n             <Message TypeName=\"InterfaceMethodsShouldBeCallableByChildTypes\" Category=\"Microsoft.Design\" CheckId=\"CA1033\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView'</Item>\r\n               <Item>'ISupportInitialize.EndInit()'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#TextRendereringHint\">\r\n            <Messages>\r\n             <Message Id=\"Renderering\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Member\">\r\n               <Item>Renderering</Item>\r\n               <Item>'ObjectListView.TextRendereringHint'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#Unsort()\">\r\n            <Messages>\r\n             <Message Id=\"Unsort\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Member\">\r\n               <Item>Unsort</Item>\r\n               <Item>'ObjectListView.Unsort()'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#WndProc(System.Windows.Forms.Message&amp;)\">\r\n            <Messages>\r\n             <Message TypeName=\"OverrideLinkDemandsShouldBeIdenticalToBase\" Category=\"Microsoft.Security\" CheckId=\"CA2123\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue Name=\"BaseOnly\">\r\n               <Item>'ObjectListView.WndProc(ref Message)'</Item>\r\n               <Item>'ListView.WndProc(ref Message)'</Item>\r\n               <Item>[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.WndProc(ref Message)'</Item>\r\n               <Item>'Control.DefWndProc(ref Message)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.WndProc(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.WndProc(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'ObjectListView.WndProc(ref Message)'</Item>\r\n               <Item>'ListView.WndProc(ref Message)'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.WndProc(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.WndProc(ref Message)'</Item>\r\n              </Issue>\r\n              <Issue>\r\n               <Item>'ObjectListView.WndProc(ref Message)'</Item>\r\n               <Item>'Message.Msg.get()'</Item>\r\n               <Item>&#xD;&#xA;   -&gt;'ObjectListView.WndProc(ref Message)'&#xD;&#xA;   -&gt;'ObjectListView.WndProc(ref Message)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"6\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"ObjectListView+ObjectListViewState\">\r\n          <Members>\r\n           <Member Name=\"#VersionNumber\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUnusedPrivateFields\" Category=\"Microsoft.Performance\" CheckId=\"CA1823\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'ObjectListView.ObjectListViewState.VersionNumber'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"4\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"OLVColumnAttribute\">\r\n          <Messages>\r\n           <Message TypeName=\"AvoidUnsealedAttributes\" Category=\"Microsoft.Performance\" CheckId=\"CA1813\" Created=\"2010-07-21 20:59:24Z\">\r\n            <Issue>\r\n             <Item>'OLVColumnAttribute'</Item>\r\n            </Issue>\r\n           </Message>\r\n           <Message TypeName=\"DefineAccessorsForAttributeArguments\" Category=\"Microsoft.Design\" CheckId=\"CA1019\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"Breaking\">\r\n            <Issue Name=\"RemoveSetter\">\r\n             <Item>'OLVColumnAttribute.Title'</Item>\r\n             <Item>'title'</Item>\r\n            </Issue>\r\n           </Message>\r\n           <Message TypeName=\"MarkAttributesWithAttributeUsage\" Category=\"Microsoft.Design\" CheckId=\"CA1018\" Created=\"2010-07-21 20:59:24Z\">\r\n            <Issue Level=\"Error\">\r\n             <Item>'OLVColumnAttribute'</Item>\r\n            </Issue>\r\n           </Message>\r\n          </Messages>\r\n          <Members>\r\n           <Member Name=\"#GroupCutoffs\">\r\n            <Messages>\r\n             <Message Id=\"Cutoffs\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Created=\"2010-07-21 21:06:10Z\">\r\n              <Issue Name=\"Member\">\r\n               <Item>Cutoffs</Item>\r\n               <Item>'OLVColumnAttribute.GroupCutoffs'</Item>\r\n              </Issue>\r\n             </Message>\r\n             <Message TypeName=\"PropertiesShouldNotReturnArrays\" Category=\"Microsoft.Performance\" CheckId=\"CA1819\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'OLVColumnAttribute.GroupCutoffs'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#GroupDescriptions\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertiesShouldNotReturnArrays\" Category=\"Microsoft.Performance\" CheckId=\"CA1819\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'OLVColumnAttribute.GroupDescriptions'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"OLVDataObject\">\r\n          <Members>\r\n           <Member Name=\"#ConvertToHtmlFragment(System.String)\">\r\n            <Messages>\r\n             <Message Id=\"System.String.IndexOf(System.String)\" TypeName=\"SpecifyStringComparison\" Category=\"Microsoft.Globalization\" CheckId=\"CA1307\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'OLVDataObject.ConvertToHtmlFragment(string)'</Item>\r\n               <Item>'string.IndexOf(string)'</Item>\r\n               <Item>'string.IndexOf(string, StringComparison)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"OLVGroup\">\r\n          <Members>\r\n           <Member Name=\"#GetState()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'OLVGroup.GetState()'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#State\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertyNamesShouldNotMatchGetMethods\" Category=\"Microsoft.Naming\" CheckId=\"CA1721\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"SameType\">\r\n               <Item>'OLVGroup.State'</Item>\r\n               <Item>'OLVGroup.GetState()'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#Subseted\">\r\n            <Messages>\r\n             <Message Id=\"Subseted\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Member\">\r\n               <Item>Subseted</Item>\r\n               <Item>'OLVGroup.Subseted'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"OLVListItem\">\r\n          <Messages>\r\n           <Message TypeName=\"MarkISerializableTypesWithSerializable\" Category=\"Microsoft.Usage\" CheckId=\"CA2237\" Created=\"2008-10-30 20:23:07Z\">\r\n            <Issue>\r\n             <Item>'OLVListItem'</Item>\r\n            </Issue>\r\n           </Message>\r\n          </Messages>\r\n          <Members>\r\n           <Member Name=\"#Bounds\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertyNamesShouldNotMatchGetMethods\" Category=\"Microsoft.Naming\" CheckId=\"CA1721\" Status=\"Excluded\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"NonBreaking\">\r\n              <Issue Name=\"BaseType\">\r\n               <Item>'OLVListItem.Bounds'</Item>\r\n               <Item>'ListViewItem.GetBounds(ItemBoundsPortion)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ImageSelector\">\r\n            <Accessors>\r\n             <Accessor Name=\"#set_ImageSelector(System.Object)\">\r\n              <Messages>\r\n               <Message TypeName=\"DoNotCastUnnecessarily\" Category=\"Microsoft.Performance\" CheckId=\"CA1800\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n                <Issue Name=\"Parameter\">\r\n                 <Item>'value'</Item>\r\n                 <Item>'string'</Item>\r\n                 <Item>'OLVListItem.ImageSelector.set(object)'</Item>\r\n                 <Item>castclass</Item>\r\n                </Issue>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"OLVListSubItem\">\r\n          <Members>\r\n           <Member Name=\"#Url\">\r\n            <Messages>\r\n             <Message TypeName=\"UriPropertiesShouldNotBeStrings\" Category=\"Microsoft.Design\" CheckId=\"CA1056\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'OLVListSubItem.Url'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"SimpleDropSink\">\r\n          <Messages>\r\n           <Message TypeName=\"TypesThatOwnDisposableFieldsShouldBeDisposable\" Category=\"Microsoft.Design\" CheckId=\"CA1001\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"DependsOnFix\">\r\n            <Issue Name=\"DependsOnFix\">\r\n             <Item>'SimpleDropSink'</Item>\r\n             <Item>'Timer'</Item>\r\n            </Issue>\r\n           </Message>\r\n          </Messages>\r\n          <Members>\r\n           <Member Name=\"#.ctor()\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotUseTimersThatPreventPowerStateChanges\" Category=\"Microsoft.Mobility\" CheckId=\"CA1601\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'Timer.Interval.set(int)'</Item>\r\n               <Item>'SimpleDropSink.SimpleDropSink()'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"TextAdornment\">\r\n          <Messages>\r\n           <Message TypeName=\"TypesThatOwnDisposableFieldsShouldBeDisposable\" Category=\"Microsoft.Design\" CheckId=\"CA1001\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"DependsOnFix\">\r\n            <Issue Name=\"DependsOnFix\">\r\n             <Item>'TextAdornment'</Item>\r\n             <Item>'StringFormat'</Item>\r\n            </Issue>\r\n           </Message>\r\n          </Messages>\r\n         </Type>\r\n         <Type Name=\"TextMatchFilter\">\r\n          <Members>\r\n           <Member Name=\"#.ctor(BrightIdeasSoftware.ObjectListView,System.String,BrightIdeasSoftware.OLVColumn[])\">\r\n            <Messages>\r\n             <Message Id=\"BrightIdeasSoftware.TextMatchFilter.#ctor(BrightIdeasSoftware.ObjectListView,System.String,BrightIdeasSoftware.OLVColumn[],BrightIdeasSoftware.TextMatchFilter+MatchKind,System.StringComparison)\" TypeName=\"UseOrdinalStringComparison\" Category=\"Microsoft.Globalization\" CheckId=\"CA1309\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"StringComparison\">\r\n               <Item>'TextMatchFilter.TextMatchFilter(ObjectListView, string, OLVColumn[])'</Item>\r\n               <Item>StringComparison.InvariantCultureIgnoreCase</Item>\r\n               <Item>'TextMatchFilter.TextMatchFilter(ObjectListView, string, OLVColumn[], TextMatchFilter.MatchKind, StringComparison)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#.ctor(BrightIdeasSoftware.ObjectListView,System.String,BrightIdeasSoftware.TextMatchFilter+MatchKind)\">\r\n            <Messages>\r\n             <Message Id=\"BrightIdeasSoftware.TextMatchFilter.#ctor(BrightIdeasSoftware.ObjectListView,System.String,BrightIdeasSoftware.OLVColumn[],BrightIdeasSoftware.TextMatchFilter+MatchKind,System.StringComparison)\" TypeName=\"UseOrdinalStringComparison\" Category=\"Microsoft.Globalization\" CheckId=\"CA1309\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"StringComparison\">\r\n               <Item>'TextMatchFilter.TextMatchFilter(ObjectListView, string, TextMatchFilter.MatchKind)'</Item>\r\n               <Item>StringComparison.InvariantCultureIgnoreCase</Item>\r\n               <Item>'TextMatchFilter.TextMatchFilter(ObjectListView, string, OLVColumn[], TextMatchFilter.MatchKind, StringComparison)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#Columns\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertiesShouldNotReturnArrays\" Category=\"Microsoft.Performance\" CheckId=\"CA1819\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'TextMatchFilter.Columns'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#IsIncluded(BrightIdeasSoftware.OLVColumn)\">\r\n            <Messages>\r\n             <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'TextMatchFilter.IsIncluded(OLVColumn)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"TextMatchFilter+MatchKind\">\r\n          <Messages>\r\n           <Message TypeName=\"MarkEnumsWithFlags\" Category=\"Microsoft.Design\" CheckId=\"CA1027\" Status=\"Excluded\" Created=\"2010-07-21 20:59:24Z\">\r\n            <Issue>\r\n             <Item>'TextMatchFilter.MatchKind'</Item>\r\n            </Issue>\r\n            <Notes>\r\n             <User Name=\"administration\">\r\n              <Note Id=\"4\" />\r\n             </User>\r\n            </Notes>\r\n           </Message>\r\n          </Messages>\r\n         </Type>\r\n         <Type Name=\"TintedColumnDecoration\">\r\n          <Messages>\r\n           <Message TypeName=\"TypesThatOwnDisposableFieldsShouldBeDisposable\" Category=\"Microsoft.Design\" CheckId=\"CA1001\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"DependsOnFix\">\r\n            <Issue Name=\"DependsOnFix\">\r\n             <Item>'TintedColumnDecoration'</Item>\r\n             <Item>'SolidBrush'</Item>\r\n            </Issue>\r\n           </Message>\r\n          </Messages>\r\n         </Type>\r\n         <Type Name=\"ToolTipControl\">\r\n          <Members>\r\n           <Member Name=\"#HandleGetDispInfo(System.Windows.Forms.Message&amp;)\">\r\n            <Messages>\r\n             <Message Id=\"Disp\" TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\" Status=\"Excluded\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"Member\">\r\n               <Item>Disp</Item>\r\n               <Item>'ToolTipControl.HandleGetDispInfo(ref Message)'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"administration\">\r\n                <Note Id=\"3\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#PopToolTip(System.Windows.Forms.IWin32Window)\">\r\n            <Messages>\r\n             <Message Id=\"window\" TypeName=\"ReviewUnusedParameters\" Category=\"Microsoft.Usage\" CheckId=\"CA1801\" Created=\"2010-07-21 20:59:24Z\" FixCategory=\"DependsOnFix\">\r\n              <Issue>\r\n               <Item>'window'</Item>\r\n               <Item>'ToolTipControl.PopToolTip(IWin32Window)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"ToolTipControl+StandardIcons\">\r\n          <Messages>\r\n           <Message TypeName=\"OnlyFlagsEnumsShouldHavePluralNames\" Category=\"Microsoft.Naming\" CheckId=\"CA1717\" Created=\"2010-07-21 20:59:24Z\">\r\n            <Issue>\r\n             <Item>'ToolTipControl.StandardIcons'</Item>\r\n            </Issue>\r\n           </Message>\r\n          </Messages>\r\n         </Type>\r\n         <Type Name=\"TreeListView+Branch\">\r\n          <Members>\r\n           <Member Name=\"#ChildBranches\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotExposeGenericLists\" Category=\"Microsoft.Design\" CheckId=\"CA1002\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'List&lt;TreeListView.Branch&gt;'</Item>\r\n               <Item>'TreeListView.Branch.ChildBranches'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#FilteredChildBranches\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotExposeGenericLists\" Category=\"Microsoft.Design\" CheckId=\"CA1002\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'List&lt;TreeListView.Branch&gt;'</Item>\r\n               <Item>'TreeListView.Branch.FilteredChildBranches'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#ManageLastChildFlag(System.Windows.Forms.MethodInvoker)\">\r\n            <Messages>\r\n             <Message Id=\"Flag\" TypeName=\"UsePreferredTerms\" Category=\"Microsoft.Naming\" CheckId=\"CA1726\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Name=\"MemberNoAlternate\">\r\n               <Item>Flag</Item>\r\n               <Item>'TreeListView.Branch.ManageLastChildFlag(MethodInvoker)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"TreeListView+Branch+BranchFlags\">\r\n          <Messages>\r\n           <Message Id=\"Flags\" TypeName=\"UsePreferredTerms\" Category=\"Microsoft.Naming\" CheckId=\"CA1726\" Created=\"2010-07-21 20:59:24Z\">\r\n            <Issue Name=\"TypeNoAlternate\">\r\n             <Item>Flags</Item>\r\n             <Item>'TreeListView.Branch.BranchFlags'</Item>\r\n            </Issue>\r\n           </Message>\r\n          </Messages>\r\n         </Type>\r\n         <Type Name=\"TreeListView+Tree\">\r\n          <Members>\r\n           <Member Name=\"#GetBranchComparer()\">\r\n            <Messages>\r\n             <Message TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\" Status=\"Excluded\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue Certainty=\"50\">\r\n               <Item>'TreeListView.Tree.GetBranchComparer()'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"administration\">\r\n                <Note Id=\"0\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"TreeListView+TreeRenderer\">\r\n          <Members>\r\n           <Member Name=\"#PIXELS_PER_LEVEL\">\r\n            <Messages>\r\n             <Message TypeName=\"NonConstantFieldsShouldNotBeVisible\" Category=\"Microsoft.Usage\" CheckId=\"CA2211\" Created=\"2010-07-21 20:59:24Z\">\r\n              <Issue>\r\n               <Item>'TreeListView.TreeRenderer.PIXELS_PER_LEVEL'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"TypedObjectListView`1\">\r\n          <Members>\r\n           <Member Name=\"#BooleanCheckStateGetter\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertiesShouldNotBeWriteOnly\" Category=\"Microsoft.Design\" CheckId=\"CA1044\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue Name=\"AddGetter\">\r\n               <Item>'TypedObjectListView&lt;T&gt;.BooleanCheckStateGetter'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#BooleanCheckStatePutter\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertiesShouldNotBeWriteOnly\" Category=\"Microsoft.Design\" CheckId=\"CA1044\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue Name=\"AddGetter\">\r\n               <Item>'TypedObjectListView&lt;T&gt;.BooleanCheckStatePutter'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#CellToolTipGetter\">\r\n            <Messages>\r\n             <Message TypeName=\"PropertiesShouldNotBeWriteOnly\" Category=\"Microsoft.Design\" CheckId=\"CA1044\" Created=\"2008-11-27 14:00:44Z\">\r\n              <Issue Name=\"AddGetter\">\r\n               <Item>'TypedObjectListView&lt;T&gt;.CellToolTipGetter'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#CheckedObjects\">\r\n            <Messages>\r\n             <Message TypeName=\"CollectionPropertiesShouldBeReadOnly\" Category=\"Microsoft.Usage\" CheckId=\"CA2227\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'TypedObjectListView&lt;T&gt;.CheckedObjects'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"5\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SelectedObjects\">\r\n            <Messages>\r\n             <Message TypeName=\"CollectionPropertiesShouldBeReadOnly\" Category=\"Microsoft.Usage\" CheckId=\"CA2227\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'TypedObjectListView&lt;T&gt;.SelectedObjects'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"5\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"UintUpDown\">\r\n          <Members>\r\n           <Member Name=\"#Value\">\r\n            <Accessors>\r\n             <Accessor Name=\"#get_Value()\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n                <Issue>\r\n                 <Item>'UintUpDown.Value.get()'</Item>\r\n                </Issue>\r\n                <Notes>\r\n                 <User Name=\"Admin_2\">\r\n                  <Note Id=\"11\" />\r\n                 </User>\r\n                </Notes>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n             <Accessor Name=\"#set_Value(System.UInt32)\">\r\n              <Messages>\r\n               <Message TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n                <Issue>\r\n                 <Item>'UintUpDown.Value.set(uint)'</Item>\r\n                </Issue>\r\n                <Notes>\r\n                 <User Name=\"Admin_2\">\r\n                  <Note Id=\"11\" />\r\n                 </User>\r\n                </Notes>\r\n               </Message>\r\n              </Messages>\r\n             </Accessor>\r\n            </Accessors>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n         <Type Name=\"VirtualObjectListView\">\r\n          <Members>\r\n           <Member Name=\"#CheckedObjects\">\r\n            <Messages>\r\n             <Message TypeName=\"CollectionPropertiesShouldBeReadOnly\" Category=\"Microsoft.Usage\" CheckId=\"CA2227\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'VirtualObjectListView.CheckedObjects'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"5\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleCacheVirtualItems(System.Object,System.Windows.Forms.CacheVirtualItemsEventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'VirtualObjectListView.HandleCacheVirtualItems(object, CacheVirtualItemsEventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleRetrieveVirtualItem(System.Object,System.Windows.Forms.RetrieveVirtualItemEventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'VirtualObjectListView.HandleRetrieveVirtualItem(object, RetrieveVirtualItemEventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#HandleSearchForVirtualItem(System.Object,System.Windows.Forms.SearchForVirtualItemEventArgs)\">\r\n            <Messages>\r\n             <Message TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'VirtualObjectListView.HandleSearchForVirtualItem(object, SearchForVirtualItemEventArgs)'</Item>\r\n              </Issue>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n           <Member Name=\"#SetVirtualListSize(System.Int32)\">\r\n            <Messages>\r\n             <Message TypeName=\"DoNotCatchGeneralExceptionTypes\" Category=\"Microsoft.Design\" CheckId=\"CA1031\" Status=\"Excluded\" Created=\"2008-10-30 20:23:07Z\">\r\n              <Issue>\r\n               <Item>'VirtualObjectListView.SetVirtualListSize(int)'</Item>\r\n               <Item>'Exception'</Item>\r\n              </Issue>\r\n              <Notes>\r\n               <User Name=\"Admin_2\">\r\n                <Note Id=\"19\" />\r\n               </User>\r\n              </Notes>\r\n             </Message>\r\n            </Messages>\r\n           </Member>\r\n          </Members>\r\n         </Type>\r\n        </Types>\r\n       </Namespace>\r\n      </Namespaces>\r\n     </Module>\r\n    </Modules>\r\n   </Target>\r\n  </Targets>\r\n  <Notes>\r\n   <User Name=\"Admin_2\">\r\n    <Note Id=\"0\" Modified=\"2008-10-31 22:19:58Z\">These should be methods rather than properties</Note>\r\n    <Note Id=\"3\" Modified=\"2008-10-30 21:34:55Z\">The out parameter is necessary since this method returns two pieces of information: the item under the point and the subitem item too</Note>\r\n    <Note Id=\"4\" Modified=\"2008-10-30 21:43:05Z\">This is used to ensure we understand the newly load state.</Note>\r\n    <Note Id=\"5\" Modified=\"2008-10-30 21:43:30Z\">All these properties should be assignable.</Note>\r\n    <Note Id=\"6\" Modified=\"2008-10-30 21:45:51Z\">Our project is build with unsafe code enabled, so it automatically has the SecurityProperty set</Note>\r\n    <Note Id=\"7\" Modified=\"2008-10-30 21:48:30Z\">These initializations are not unnecessary</Note>\r\n    <Note Id=\"8\" Modified=\"2008-10-30 21:52:05Z\">We have to pass the windows message by reference</Note>\r\n    <Note Id=\"10\" Modified=\"2008-10-31 22:28:48Z\">Instances of this class do not need to be disposable</Note>\r\n    <Note Id=\"11\" Modified=\"2008-10-31 22:30:37Z\">These are utility methods that could well be used at runtime</Note>\r\n    <Note Id=\"13\" Modified=\"2008-10-31 22:37:37Z\">Old style constants. Can't change now</Note>\r\n    <Note Id=\"14\" Modified=\"2008-10-31 22:43:37Z\">These are OK like this. We need List&lt;&gt;, not IList&lt;&gt; since only List has a ToArray() method</Note>\r\n    <Note Id=\"15\" Modified=\"2008-10-31 22:47:43Z\">Legacy cases that have to be kept like this</Note>\r\n    <Note Id=\"16\" Modified=\"2008-10-31 22:48:22Z\">These are acceptable as methods rather than properties</Note>\r\n    <Note Id=\"17\" Modified=\"2008-11-27 14:05:46Z\">windows messages should be passed by reference</Note>\r\n    <Note Id=\"18\" Modified=\"2008-11-27 14:07:51Z\">This is not a security risk</Note>\r\n    <Note Id=\"19\" Modified=\"2008-11-27 14:26:34Z\">There are several problems that can occur here and we want to ignore them all</Note>\r\n    <Note Id=\"20\" Modified=\"2008-11-27 14:27:19Z\">These spellings are acceptable</Note>\r\n    <Note Id=\"21\" Modified=\"2008-11-27 14:31:23Z\">These will only be used by OL types</Note>\r\n   </User>\r\n   <User Name=\"administration\">\r\n    <Note Id=\"0\" Modified=\"2010-07-21 21:19:35Z\">Not appropriate here</Note>\r\n    <Note Id=\"1\" Modified=\"2010-07-21 21:35:25Z\">Can't change now</Note>\r\n    <Note Id=\"2\" Modified=\"2010-07-22 22:32:57Z\">we want to catch everthing</Note>\r\n    <Note Id=\"3\" Modified=\"2010-07-22 22:44:26Z\">MS!</Note>\r\n    <Note Id=\"4\" Modified=\"2010-07-22 22:45:14Z\">not flags</Note>\r\n    <Note Id=\"5\" Modified=\"2010-07-22 22:47:17Z\">MS!</Note>\r\n    <Note Id=\"6\" Modified=\"2010-07-22 22:47:36Z\">MS</Note>\r\n   </User>\r\n  </Notes>\r\n  <Rules>\r\n   <Rule TypeName=\"AssembliesShouldHaveValidStrongNames\" Category=\"Microsoft.Design\" CheckId=\"CA2210\">\r\n    <Resolution Name=\"NoStrongName\">Sign {0} with a strong name key.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"AvoidOutParameters\" Category=\"Microsoft.Design\" CheckId=\"CA1021\">\r\n    <Resolution Name=\"Default\">Consider a design that does not require that {0} be an out parameter.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"AvoidUncalledPrivateCode\" Category=\"Microsoft.Performance\" CheckId=\"CA1811\">\r\n    <Resolution Name=\"Default\">{0} appears to have no upstream public or protected callers.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"AvoidUnsealedAttributes\" Category=\"Microsoft.Performance\" CheckId=\"CA1813\">\r\n    <Resolution Name=\"Default\">Seal {0}, if possible.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"AvoidUnusedPrivateFields\" Category=\"Microsoft.Performance\" CheckId=\"CA1823\">\r\n    <Resolution Name=\"Default\">It appears that field {0} is never used or is only ever assigned to. Use this field or remove it.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"CollectionPropertiesShouldBeReadOnly\" Category=\"Microsoft.Usage\" CheckId=\"CA2227\">\r\n    <Resolution Name=\"Default\">Change {0} to be read-only by removing the property setter.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"ConsiderPassingBaseTypesAsParameters\" Category=\"Microsoft.Design\" CheckId=\"CA1011\">\r\n    <Resolution Name=\"Default\">Consider changing the type of parameter {0} in {1} from {2} to its base type {3}. This method appears to only require base class members in its implementation. Suppress this violation if there is a compelling reason to require the more derived type in the method signature.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"DefineAccessorsForAttributeArguments\" Category=\"Microsoft.Design\" CheckId=\"CA1019\">\r\n    <Resolution Name=\"RemoveSetter\">Remove the property setter from {0} or reduce its accessibility because it corresponds to positional argument {1}.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"DoNotCastUnnecessarily\" Category=\"Microsoft.Performance\" CheckId=\"CA1800\">\r\n    <Resolution Name=\"Parameter\">{0}, a parameter, is cast to type {1} multiple times in method {2}. Cache the result of the 'as' operator or direct cast in order to eliminate the redundant {3} instruction.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"DoNotCatchGeneralExceptionTypes\" Category=\"Microsoft.Design\" CheckId=\"CA1031\">\r\n    <Resolution Name=\"Default\">Modify {0} to catch a more specific exception than {1} or rethrow the exception.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"DoNotExposeGenericLists\" Category=\"Microsoft.Design\" CheckId=\"CA1002\">\r\n    <Resolution Name=\"Default\">Change {0} in {1} to use Collection&lt;T&gt;, ReadOnlyCollection&lt;T&gt; or KeyedCollection&lt;K,V&gt;</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"DoNotIgnoreMethodResults\" Category=\"Microsoft.Usage\" CheckId=\"CA1806\">\r\n    <Resolution Name=\"HResultOrErrorCode\">{0} calls {1} but does not use the HRESULT or error code that the method returns. This could lead to unexpected behavior in error conditions or low-resource situations. Use the result in a conditional statement, assign the result to a variable, or pass it as an argument to another method.</Resolution>\r\n    <Resolution Name=\"ObjectCreation\">{0} creates a new instance of {1} which is never used. Pass the instance as an argument to another method, assign the instance to a variable, or remove the object creation if it is unnecessary.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"DoNotIndirectlyExposeMethodsWithLinkDemands\" Category=\"Microsoft.Security\" CheckId=\"CA2122\" />\r\n   <Rule TypeName=\"DoNotInitializeUnnecessarily\" Category=\"Microsoft.Performance\" CheckId=\"CA1805\">\r\n    <Resolution Name=\"Default\">{0} initializes field {1} of type {2} to {3}. Remove this initialization because it will be done automatically by the runtime.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"DoNotMarkEnumsWithFlags\" Category=\"Microsoft.Usage\" CheckId=\"CA2217\">\r\n    <Resolution Name=\"Default\">{0} is marked with FlagsAttribute but a discrete member cannot be found for every settable bit that is used across the range of enum values. Remove FlagsAttribute from the type or define new members for the following (currently missing) values: {1}</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"DoNotPassTypesByReference\" Category=\"Microsoft.Design\" CheckId=\"CA1045\" />\r\n   <Rule TypeName=\"DoNotUseTimersThatPreventPowerStateChanges\" Category=\"Microsoft.Mobility\" CheckId=\"CA1601\">\r\n    <Resolution Name=\"Default\">Modify the call to {0} in method {1} to set the timer interval to a value that's greater than or equal to one second.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"EnumsShouldHaveZeroValue\" Category=\"Microsoft.Design\" CheckId=\"CA1008\">\r\n    <Resolution Name=\"FlagsRename\">In enum {0}, change the name of {1} to 'None'.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"FlagsEnumsShouldHavePluralNames\" Category=\"Microsoft.Naming\" CheckId=\"CA1714\">\r\n    <Resolution Name=\"Default\">If enumeration name {0} is singular, change it to a plural form.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"IdentifiersShouldBeSpelledCorrectly\" Category=\"Microsoft.Naming\" CheckId=\"CA1704\">\r\n    <Resolution Name=\"Member\">Correct the spelling of '{0}' in member name {1} or remove it entirely if it represents any sort of Hungarian notation.</Resolution>\r\n    <Resolution Name=\"MemberParameter\">In method {0}, correct the spelling of '{1}' in parameter name {2} or remove it entirely if it represents any sort of Hungarian notation.</Resolution>\r\n    <Resolution Name=\"Type\">Correct the spelling of '{0}' in type name {1}.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"IdentifiersShouldNotContainUnderscores\" Category=\"Microsoft.Naming\" CheckId=\"CA1707\" />\r\n   <Rule TypeName=\"InterfaceMethodsShouldBeCallableByChildTypes\" Category=\"Microsoft.Design\" CheckId=\"CA1033\">\r\n    <Resolution Name=\"Default\">Make {0} sealed (a breaking change if this class has previously shipped), implement the method non-explicitly, or implement a new method that exposes the functionality of {1} and is visible to derived classes.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"MarkAttributesWithAttributeUsage\" Category=\"Microsoft.Design\" CheckId=\"CA1018\">\r\n    <Resolution Name=\"Default\">Specify AttributeUsage on {0}.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"MarkBooleanPInvokeArgumentsWithMarshalAs\" Category=\"Microsoft.Interoperability\" CheckId=\"CA1414\">\r\n    <Resolution Name=\"Default\">Add the MarshalAsAttribute to parameter {0} of P/Invoke {1}. If the corresponding unmanaged parameter is a 4-byte Win32 'BOOL', use [MarshalAs(UnmanagedType.Bool)]. For a 1-byte C++ 'bool', use MarshalAs(UnmanagedType.U1).</Resolution>\r\n    <Resolution Name=\"Return\">Add the MarshalAsAttribute to the return type of P/Invoke {0}. If the corresponding unmanaged return type is a 4-byte Win32 'BOOL', use MarshalAs(UnmanagedType.Bool). For a 1-byte C++ 'bool', use MarshalAs(UnmanagedType.U1).</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"MarkEnumsWithFlags\" Category=\"Microsoft.Design\" CheckId=\"CA1027\">\r\n    <Resolution Name=\"Default\">The constituent members of {0} appear to represent flags that can be combined rather than discrete values. If this is correct, mark the enumeration with FlagsAttribute.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"MarkISerializableTypesWithSerializable\" Category=\"Microsoft.Usage\" CheckId=\"CA2237\">\r\n    <Resolution Name=\"Default\">Add [Serializable] to {0} as this type implements ISerializable.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"NonConstantFieldsShouldNotBeVisible\" Category=\"Microsoft.Usage\" CheckId=\"CA2211\">\r\n    <Resolution Name=\"Default\">Consider making {0} non-public or a constant.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"OnlyFlagsEnumsShouldHavePluralNames\" Category=\"Microsoft.Naming\" CheckId=\"CA1717\">\r\n    <Resolution Name=\"Default\">If the name {0} is plural, change it to its singular form.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"OverrideLinkDemandsShouldBeIdenticalToBase\" Category=\"Microsoft.Security\" CheckId=\"CA2123\">\r\n    <Resolution Name=\"BaseOnly\">Add the following security attribute to {0} in order to match a LinkDemand on base method {1}:  {2}.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"PInvokeDeclarationsShouldBePortable\" Category=\"Microsoft.Portability\" CheckId=\"CA1901\">\r\n    <Resolution Name=\"Parameter\">As it is declared in your code, parameter {0} of P/Invoke {1} will be {2} bytes wide on {3} platforms. This is not correct, as the actual native declaration of this API indicates it should be {4} bytes wide on {3} platforms. Consult the MSDN Platform SDK documentation for help determining what data type should be used instead of {5}.</Resolution>\r\n    <Resolution Name=\"Return\">As it is declared in your code, the return type of P/Invoke {0} will be {1} bytes wide on {2} platforms. This is not correct, as the actual native declaration of this API indicates it should be {3} bytes wide on {2} platforms. Consult the MSDN Platform SDK documentation for help determining what data type should be used instead of {4}.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"PInvokeEntryPointsShouldExist\" Category=\"Microsoft.Interoperability\" CheckId=\"CA1400\">\r\n    <Resolution Name=\"Default\">Correct the declaration of {0} so that it correctly points to an existing entry point in {1}. The unmanaged entry point name currently linked to is {2}.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"PropertiesShouldNotBeWriteOnly\" Category=\"Microsoft.Design\" CheckId=\"CA1044\">\r\n    <Resolution Name=\"AddGetter\">Because property {0} is write-only, either add a property getter with an accessibility that is greater than or equal to its setter or convert this property into a method.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"PropertiesShouldNotReturnArrays\" Category=\"Microsoft.Performance\" CheckId=\"CA1819\">\r\n    <Resolution Name=\"Default\">Change {0} to return a collection or make it a method.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"PropertyNamesShouldNotMatchGetMethods\" Category=\"Microsoft.Naming\" CheckId=\"CA1721\">\r\n    <Resolution Name=\"BaseType\">The property name {0} is confusing given the existence of inherited method {1}. Rename or remove this property.</Resolution>\r\n    <Resolution Name=\"SameType\">The property name {0} is confusing given the existence of method {1}. Rename or remove one of these members.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"ReviewUnusedParameters\" Category=\"Microsoft.Usage\" CheckId=\"CA1801\">\r\n    <Resolution Name=\"Default\">Parameter {0} of {1} is never used. Remove the parameter or use it in the method body.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"ReviewVisibleEventHandlers\" Category=\"Microsoft.Security\" CheckId=\"CA2109\">\r\n    <Resolution Name=\"Default\">Consider making {0} not externally visible.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"SpecifyMarshalingForPInvokeStringArguments\" Category=\"Microsoft.Globalization\" CheckId=\"CA2101\">\r\n    <Resolution Name=\"Parameter\">To reduce security risk, marshal parameter {0} as Unicode, by setting DllImport.CharSet to CharSet.Unicode, or by explicitly marshaling the parameter as UnmanagedType.LPWStr. If you need to marshal this string as ANSI or system-dependent, set BestFitMapping=false; for added security, also set ThrowOnUnmappableChar=true.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"SpecifyStringComparison\" Category=\"Microsoft.Globalization\" CheckId=\"CA1307\">\r\n    <Resolution Name=\"Default\">{0} makes a call to {1} that does not explicitly provide a StringComparison. This should be replaced with a call to {2}.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"TypesThatOwnDisposableFieldsShouldBeDisposable\" Category=\"Microsoft.Design\" CheckId=\"CA1001\">\r\n    <Resolution Name=\"DependsOnFix\">Implement IDisposable on {0} because it creates members of the following IDisposable types: {1}. If {0} has previously shipped, adding new members that implement IDisposable to this type is considered a breaking change to existing consumers.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"UriParametersShouldNotBeStrings\" Category=\"Microsoft.Design\" CheckId=\"CA1054\">\r\n    <Resolution Name=\"Default\">Change the type of parameter {0} of method {1} from string to System.Uri, or provide an overload of {1}, that allows {0} to be passed as a System.Uri object.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"UriPropertiesShouldNotBeStrings\" Category=\"Microsoft.Design\" CheckId=\"CA1056\">\r\n    <Resolution Name=\"Default\">Change the type of property {0} from string to System.Uri.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"UseGenericEventHandlerInstances\" Category=\"Microsoft.Design\" CheckId=\"CA1003\">\r\n    <Resolution Name=\"Default\">Remove {0} and replace its usage with EventHandler&lt;T&gt;</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"UseOrdinalStringComparison\" Category=\"Microsoft.Globalization\" CheckId=\"CA1309\">\r\n    <Resolution Name=\"StringComparison\">{0} passes {1} as an argument to {2}. Replace this usage with StringComparison.Ordinal or StringComparison.OrdinalIgnoreCase if appropriate.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"UsePreferredTerms\" Category=\"Microsoft.Naming\" CheckId=\"CA1726\">\r\n    <Resolution Name=\"MemberNoAlternate\">Replace the term '{0}' in member name {1} with an appropriate alternate or remove it entirely.</Resolution>\r\n    <Resolution Name=\"TypeNoAlternate\">Replace the term '{0}' in type name {1} with an appropriate alternate or remove it entirely.</Resolution>\r\n   </Rule>\r\n   <Rule TypeName=\"UsePropertiesWhereAppropriate\" Category=\"Microsoft.Design\" CheckId=\"CA1024\">\r\n    <Resolution Name=\"Default\">Change {0} to a property if appropriate.</Resolution>\r\n   </Rule>\r\n  </Rules>\r\n </FxCopReport>\r\n</FxCopProject>\r\n"
  },
  {
    "path": "source/ObjectListView/ObjectListView.cs",
    "content": "/*\r\n * ObjectListView - A listview to show various aspects of a collection of objects\r\n *\r\n * Author: Phillip Piper\r\n * Date: 9/10/2006 11:15 AM\r\n *\r\n * Change log\r\n * v2.9.1\r\n * 2015-12-30  JPP  - Added CellRendererGetter to allow each cell to have a different renderer.\r\n *                  - Obsolete properties are no longer code-gen'ed.\r\n *\r\n * v2.9.0\r\n * 2015-08-22  JPP  - Allow selected row back/fore colours to be specified for each row\r\n *                  - Renamed properties related to selection colours:\r\n *                       - HighlightBackgroundColor -> SelectedBackColor\r\n *                       - HighlightForegroundColor -> SelectedForeColor\r\n *                       - UnfocusedHighlightBackgroundColor -> UnfocusedSelectedBackColor\r\n *                       - UnfocusedHighlightForegroundColor -> UnfocusedSelectedForeColor\r\n *                  - UseCustomSelectionColors is no longer used\r\n * 2015-08-03  JPP  - Added ObjectListView.CellEditFinished event\r\n *                  - Added EditorRegistry.Unregister()\r\n * 2015-07-08  JPP  - All ObjectListViews are now OwnerDrawn by default. This allows all the great features\r\n *                    of ObjectListView to work correctly at the slight cost of more processing at render time.\r\n *                    It also avoids the annoying \"hot item background ignored in column 0\" behaviour that native\r\n *                    ListView has. Programmers can still turn it back off if they wish.\r\n * 2015-06-27  JPP  - Yet another attempt to disable ListView's \"shift click toggles checkboxes\" behaviour.\r\n *                    The last strategy (fake right click) worked, but had nasty side effects. This one works\r\n *                    by intercepting a HITTEST message so that it fails. It no longer creates fake right mouse events.\r\n *                  - Trigger SelectionChanged when filter is changed\r\n * 2015-06-23  JPP  - [BIG] Added support for Buttons\r\n * 2015-06-22  JPP  - Added OLVColumn.SearchValueGetter to allow the text used when text filtering to be customised\r\n *                  - The default DefaultRenderer is now a HighlightTextRenderer, since that seems more generally useful\r\n * 2015-06-17  JPP  - Added FocusedObject property\r\n *                  - Hot item is now always applied to the row even if FullRowSelect is false\r\n * 2015-06-11  JPP  - Added DefaultHotItemStyle property\r\n * 2015-06-07  JPP  - Added HeaderMinimumHeight property\r\n *                  - Added ObjectListView.CellEditUsesWholeCell and OLVColumn.CellEditUsesWholeCell properties.\r\n * 2015-05-15  JPP  - Allow ImageGetter to return an Image (which I can't believe didn't work from the beginning!)\r\n * 2015-04-27  JPP  - Fix bug where setting View to LargeIcon in the designer was not persisted\r\n * 2015-04-07  JPP  - Ensure changes to row.Font in FormatRow are not wiped out by FormatCell (SF #141)\r\n * \r\n * v2.8.1\r\n * 2014-10-15  JPP  - Added CellEditActivateMode.SingleClickAlways mode\r\n *                  - Fire Filter event event if ModelFilter and ListFilter are null (SF #126)\r\n *                  - Fixed issue where single-click editing didn't work (SF #128)\r\n * v2.8.0\r\n * 2014-10-11  JPP  - Fixed some XP-only flicker issues\r\n * 2014-09-26  JPP  - Fixed intricate bug involving checkboxes on non-owner-drawn virtual lists.\r\n *                  - Fixed long standing (but previously unreported) error on non-details virtual lists where\r\n *                    users could not click on checkboxes.\r\n * 2014-09-07  JPP  - (Major) Added ability to have checkboxes in headers\r\n *                  - CellOver events are raised when the mouse moves over the header. Set TriggerCellOverEventsWhenOverHeader\r\n *                    to false to disable this behaviour.\r\n *                  - Freeze/Unfreeze now use BeginUpdate/EndUpdate to disable Window level drawing\r\n *                  - Changed default value of ObjectListView.HeaderUsesThemes from true to false. Too many people were\r\n *                    being confused, trying to make something interesting appear in the header and nothing showing up\r\n * 2014-08-04  JPP  - Final attempt to fix the multiple hyperlink events being raised. This involves turning\r\n *                    a NM_CLICK notification into a NM_RCLICK.\r\n * 2014-05-21  JPP  - (Major) Added ability to disable rows. DisabledObjects, DisableObjects(), DisabledItemStyle.\r\n * 2014-04-25  JPP  - Fixed issue where virtual lists containing a single row didn't update hyperlinks on MouseOver\r\n *                  - Added sanity check before BuildGroups()\r\n * 2014-03-22  JPP  - Fixed some subtle bugs resulting from misuse of TryGetValue()\r\n * 2014-03-09  JPP  - Added CollapsedGroups property\r\n *                  - Several minor Resharper complaints quiesced.\r\n * v2.7\r\n * 2014-02-14  JPP  - Fixed issue with ShowHeaderInAllViews (another one!) where setting it to false caused the list to lose\r\n *                    its other extended styles, leading to nasty flickering and worse.\r\n * 2014-02-06  JPP  - Fix issue on virtual lists where the filter was not correctly reapplied after columns were added or removed.\r\n *                  - Made disposing of cell editors optional (defaults to true). This allows controls to be cached and reused.\r\n *                  - Bracketed column resizing with BeginUpdate/EndUpdate to smooth redraws (thanks to Davide)\r\n * 2014-02-01  JPP  - Added static property ObjectListView.GroupTitleDefault to allow the default group title to be localised.\r\n * 2013-09-24  JPP  - Fixed issue in RefreshObjects() when model objects overrode the Equals()/GetHashCode() methods.\r\n *                  - Made sure get state checker were used when they should have been\r\n * 2013-04-21  JPP  - Clicking on a non-groupable column header when showing groups will now sort\r\n *                    the group contents by that column.\r\n * v2.6\r\n * 2012-08-16  JPP  - Added ObjectListView.EditModel() -- a convenience method to start an edit operation on a model\r\n * 2012-08-10  JPP  - Don't trigger selection changed events during sorting/grouping or add/removing columns\r\n * 2012-08-06  JPP  - Don't start a cell edit operation when the user clicks on the background of a checkbox cell.\r\n *                  - Honor values from the BeforeSorting event when calling a CustomSorter\r\n * 2012-08-02  JPP  - Added CellVerticalAlignment and CellPadding properties.\r\n * 2012-07-04  JPP  - Fixed issue with cell editing where the cell editing didn't finish until the first idle event.\r\n *                    This meant that if you clicked and held on the scroll thumb to finish a cell edit, the editor\r\n *                    wouldn't be removed until the mouse was released.\r\n * 2012-07-03  JPP  - Fixed issue with SingleClick cell edit mode where the cell editing would not begin until the\r\n *                    mouse moved after the click.\r\n * 2012-06-25  JPP  - Fixed bug where removing a column from a LargeIcon or SmallIcon view would crash the control. \r\n * 2012-06-15  JPP  - Added Reset() method, which definitively removes all rows *and* columns from an ObjectListView.\r\n * 2012-06-11  JPP  - Added FilteredObjects property which returns the collection of objects that survives any installed filters.\r\n * 2012-06-04  JPP  - [Big] Added UseNotifyPropertyChanged to allow OLV to listen for INotifyPropertyChanged events on models.\r\n * 2012-05-30  JPP  - Added static property ObjectListView.IgnoreMissingAspects. If this is set to true, all \r\n *                    ObjectListViews will silently ignore missing aspect errors. Read the remarks to see why this would be useful.\r\n * 2012-05-23  JPP  - Setting UseFilterIndicator to true now sets HeaderUsesTheme to false. \r\n *                    Also, changed default value of UseFilterIndicator to false. Previously, HeaderUsesTheme and UseFilterIndicator\r\n *                    defaulted to true, which was pointless since when the HeaderUsesTheme is true, UseFilterIndicator does nothing.  \r\n * v2.5.1\r\n * 2012-05-06  JPP  - Fix bug where collapsing the first group would cause decorations to stop being drawn (SR #3502608)\r\n * 2012-04-23  JPP  - Trigger GroupExpandingCollapsing event to allow the expand/collapse to be cancelled\r\n *                  - Fixed SetGroupSpacing() so it corrects updates the space between all groups.\r\n *                  - ResizeLastGroup() now does nothing since it was broken and I can't remember what it was\r\n *                    even supposed to do :)\r\n * 2012-04-18  JPP  - Upgraded hit testing to include hits on groups. \r\n *                  - HotItemChanged is now correctly recalculated on each mouse move. Includes \"hot\" group information.\r\n * 2012-04-14  JPP  - Added GroupStateChanged event. Useful for knowing when a group is collapsed/expanded.\r\n *                  - Added AdditionalFilter property. This filter is combined with the Excel-like filtering that\r\n *                    the end user might enact at runtime.\r\n * 2012-04-10  JPP  - Added PersistentCheckBoxes property to allow primary checkboxes to remember their values\r\n *                    across list rebuilds.\r\n * 2012-04-05  JPP  - Reverted some code to .NET 2.0 standard.\r\n *                  - Tweaked some code\r\n * 2012-02-05  JPP  - Fixed bug when selecting a separator on a drop down menu\r\n * 2011-06-24  JPP  - Added CanUseApplicationIdle property to cover cases where Application.Idle events\r\n *                    are not triggered. For example, when used within VS (and probably Office) extensions\r\n *                    Application.Idle is never triggered. Set CanUseApplicationIdle to false to handle \r\n *                    these cases.\r\n *                  - Handle cases where a second tool tip is installed onto the ObjectListView.\r\n *                  - Correctly recolour rows after an Insert or Move\r\n *                  - Removed m.LParam cast which could cause overflow issues on Win7/64 bit.\r\n * v2.5.0\r\n * 2011-05-31  JPP  - SelectObject() and SelectObjects() no longer deselect all other rows.\r\n                      Set the SelectedObject or SelectedObjects property to do that.\r\n *                  - Added CheckedObjectsEnumerable\r\n *                  - Made setting CheckedObjects more efficient on large collections\r\n *                  - Deprecated GetSelectedObject() and GetSelectedObjects()\r\n * 2011-04-25  JPP  - Added SubItemChecking event\r\n *                  - Fixed bug in handling of NewValue on CellEditFinishing event\r\n * 2011-04-12  JPP  - Added UseFilterIndicator \r\n *                  - Added some more localizable messages\r\n * 2011-04-10  JPP  - FormatCellEventArgs now has a CellValue property, which is the model value displayed\r\n *                    by the cell. For example, for the Birthday column, the CellValue might be \r\n *                    DateTime(1980, 12, 31), whereas the cell's text might be 'Dec 31, 1980'.\r\n * 2011-04-04  JPP  - Tweaked UseTranslucentSelection and UseTranslucentHotItem to look (a little) more\r\n *                    like Vista/Win7.\r\n *                  - Alternate colours are now only applied in Details view (as they always should have been)\r\n *                  - Alternate colours are now correctly recalculated after removing objects\r\n * 2011-03-29  JPP  - Added SelectColumnsOnRightClickBehaviour to allow the selecting of columns mechanism \r\n *                    to be changed. Can now be InlineMenu (the default), SubMenu, or ModelDialog.\r\n *                  - ColumnSelectionForm was moved from the demo into the ObjectListView project itself.\r\n *                  - Ctrl-C copying is now able to use the DragSource to create the data transfer object.\r\n * 2011-03-19  JPP  - All model object comparisons now use Equals rather than == (thanks to vulkanino)\r\n *                  - [Small Break] GetNextItem() and GetPreviousItem() now accept and return OLVListView\r\n *                    rather than ListViewItems.\r\n * 2011-03-07  JPP  - [Big] Added Excel-style filtering. Right click on a header to show a Filtering menu.\r\n *                  - Added CellEditKeyEngine to allow key handling when cell editing to be completely customised.\r\n *                    Add CellEditTabChangesRows and CellEditEnterChangesRows to show some of these abilities.\r\n * 2011-03-06  JPP  - Added OLVColumn.AutoCompleteEditorMode in preference to AutoCompleteEditor \r\n *                    (which is now just a wrapper). Thanks to Clive Haskins \r\n *                  - Added lots of docs to new classes\r\n * 2011-02-25  JPP  - Preserve word wrap settings on TreeListView\r\n *                  - Resize last group to keep it on screen (thanks to ?)\r\n * 2010-11-16  JPP  - Fixed (once and for all) DisplayIndex problem with Generator\r\n *                  - Changed the serializer used in SaveState()/RestoreState() so that it resolves on\r\n *                    class name alone.\r\n *                  - Fixed bug in GroupWithItemCountSingularFormatOrDefault\r\n *                  - Fixed strange flickering in grouped, owner drawn OLV's using RefreshObject()\r\n * v2.4.1\r\n * 2010-08-25  JPP  - Fixed bug where setting OLVColumn.CheckBoxes to false gave it a renderer\r\n *                    specialized for checkboxes. Oddly, this made Generator created owner drawn\r\n *                    lists appear to be completely empty.\r\n *                  - In IDE, all ObjectListView properties are now in a single \"ObjectListView\" category,\r\n *                    rather than splitting them between \"Appearance\" and \"Behavior\" categories.\r\n *                  - Added GroupingParameters.GroupComparer to allow groups to be sorted in a customizable fashion.\r\n *                  - Sorting of items within a group can be disabled by setting \r\n *                    GroupingParameters.PrimarySortOrder to None.\r\n * 2010-08-24  JPP  - Added OLVColumn.IsHeaderVertical to make a column draw its header vertical.\r\n *                  - Added OLVColumn.HeaderTextAlign to control the alignment of a column's header text.\r\n *                  - Added HeaderMaximumHeight to limit how tall the header section can become\r\n * 2010-08-18  JPP  - Fixed long standing bug where having 0 columns caused a InvalidCast exception.\r\n *                  - Added IncludeAllColumnsInDataObject property\r\n *                  - Improved BuildList(bool) so that it preserves scroll position even when\r\n *                    the listview is grouped.\r\n * 2010-08-08  JPP  - Added OLVColumn.HeaderImageKey to allow column headers to have an image.\r\n *                  - CellEdit validation and finish events now have NewValue property.\r\n * 2010-08-03  JPP  - Subitem checkboxes improvements: obey IsEditable, can be hot, can be disabled.\r\n *                  - No more flickering of selection when tabbing between cells\r\n *                  - Added EditingCellBorderDecoration to make it clearer which cell is being edited.\r\n * 2010-08-01  JPP  - Added ObjectListView.SmoothingMode to control the smoothing of all graphics\r\n *                    operations\r\n *                  - Columns now cache their group item format strings so that they still work as \r\n *                    grouping columns after they have been removed from the listview. This cached\r\n *                    value is only used when the column is not part of the listview.\r\n * 2010-07-25  JPP  - Correctly trigger a Click event when the mouse is clicked.\r\n * 2010-07-16  JPP  - Invalidate the control before and after cell editing to make sure it looks right\r\n * 2010-06-23  JPP  - Right mouse clicks on checkboxes no longer confuse them\r\n * 2010-06-21  JPP  - Avoid bug in underlying ListView control where virtual lists in SmallIcon view\r\n *                    generate GETTOOLINFO msgs with invalid item indices.\r\n *                  - Fixed bug where FastObjectListView would throw an exception when showing hyperlinks\r\n *                    in any view except Details.\r\n * 2010-06-15  JPP  - Fixed bug in ChangeToFilteredColumns() that resulted in column display order\r\n *                    being lost when a column was hidden.\r\n *                  - Renamed IsVista property to IsVistaOrLater which more accurately describes its function.\r\n * v2.4\r\n * 2010-04-14  JPP  - Prevent object disposed errors when mouse event handlers cause the\r\n *                    ObjectListView to be destroyed (e.g. closing a form during a \r\n *                    double click event).\r\n *                  - Avoid checkbox munging bug in standard ListView when shift clicking on non-primary\r\n *                    columns when FullRowSelect is true.\r\n * 2010-04-12  JPP  - Fixed bug in group sorting (thanks Mike).\r\n * 2010-04-07  JPP  - Prevent hyperlink processing from triggering spurious MouseUp events.\r\n *                    This showed itself by launching the same url multiple times.\r\n * 2010-04-06  JPP  - Space filling columns correctly resize upon initial display\r\n *                  - ShowHeaderInAllViews is better but still not working reliably.\r\n *                    See comments on property for more details.\r\n * 2010-03-23  JPP  - Added ObjectListView.HeaderFormatStyle and OLVColumn.HeaderFormatStyle.\r\n *                    This makes HeaderFont and HeaderForeColor properties unnecessary -- \r\n *                    they will be marked obsolete in the next version and removed after that.\r\n * 2010-03-16  JPP  - Changed object checking so that objects can be pre-checked before they\r\n *                    are added to the list. Normal ObjectListViews managed \"checkedness\" in\r\n *                    the ListViewItem, so this won't work for them, unless check state getters\r\n *                    and putters have been installed. It will work on on virtual lists (thus fast lists and\r\n *                    tree views) since they manage their own check state.\r\n * 2010-03-06  JPP  - Hide \"Items\" and \"Groups\" from the IDE properties grid since they shouldn't be set like that.\r\n *                    They can still be accessed through \"Custom Commands\" and there's nothing we can do\r\n *                    about that.\r\n * 2010-03-05  JPP  - Added filtering\r\n * 2010-01-18  JPP  - Overlays can be turned off. They also only work on 32-bit displays\r\n * v2.3\r\n * 2009-10-30  JPP  - Plugged possible resource leak by using using() with CreateGraphics()\r\n * 2009-10-28  JPP  - Fix bug when right clicking in the empty area of the header\r\n * 2009-10-20  JPP  - Redraw the control after setting EmptyListMsg property\r\n * v2.3\r\n * 2009-09-30  JPP  - Added Dispose() method to properly release resources\r\n * 2009-09-16  JPP  - Added OwnerDrawnHeader, which you can set to true if you want to owner draw\r\n *                    the header yourself.\r\n * 2009-09-15  JPP  - Added UseExplorerTheme, which allow complete visual compliance with Vista explorer.\r\n *                    But see property documentation for its many limitations.\r\n *                  - Added ShowHeaderInAllViews. To make this work, Columns are no longer\r\n *                    changed when switching to/from Tile view.\r\n * 2009-09-11  JPP  - Added OLVColumn.AutoCompleteEditor to allow the autocomplete of cell editors\r\n *                    to be disabled.\r\n * 2009-09-01  JPP  - Added ObjectListView.TextRenderingHint property which controls the\r\n *                    text rendering hint of all drawn text.\r\n * 2009-08-28  JPP  - [BIG] Added group formatting to supercharge what is possible with groups\r\n *                  - [BIG] Virtual groups now work\r\n *                  - Extended MakeGroupies() to handle more aspects of group creation\r\n * 2009-08-19  JPP  - Added ability to show basic column commands when header is right clicked\r\n *                  - Added SelectedRowDecoration, UseTranslucentSelection and UseTranslucentHotItem.\r\n *                  - Added PrimarySortColumn and PrimarySortOrder\r\n * 2009-08-15  JPP  - Correct problems with standard hit test and subitems\r\n * 2009-08-14  JPP  - [BIG] Support Decorations\r\n *                  - [BIG] Added header formatting capabilities: font, color, word wrap\r\n *                  - Gave ObjectListView its own designer to hide unwanted properties\r\n *                  - Separated design time stuff into separate file\r\n *                  - Added FormatRow and FormatCell events\r\n * 2009-08-09  JPP  - Get around bug in HitTest when not FullRowSelect\r\n *                  - Added OLVListItem.GetSubItemBounds() method which works correctly\r\n *                    for all columns including column 0\r\n * 2009-08-07  JPP  - Added Hot* properties that track where the mouse is\r\n *                  - Added HotItemChanged event\r\n *                  - Overrode TextAlign on columns so that column 0 can have something other\r\n *                    than just left alignment. This is only honored when owner drawn.\r\n * v2.2.1\r\n * 2009-08-03  JPP  - Subitem edit rectangles always allowed for an image in the cell, even if there was none.\r\n *                    Now they only allow for an image when there actually is one.\r\n *                  - Added Bounds property to OLVListItem which handles items being part of collapsed groups.\r\n * 2009-07-29  JPP  - Added GetSubItem() methods to ObjectListView and OLVListItem\r\n * 2009-07-26  JPP  - Avoided bug in .NET framework involving column 0 of owner drawn listviews not being\r\n *                    redrawn when the listview was scrolled horizontally (this was a LOT of work to track\r\n *                    down and fix!)\r\n *                  - The cell edit rectangle is now correctly calculated when the listview is scrolled\r\n *                    horizontally.\r\n * 2009-07-14  JPP  - If the user clicks/double clicks on a tree list cell, an edit operation will no longer begin\r\n *                    if the click was to the left of the expander. This is implemented in such a way that\r\n *                    other renderers can have similar \"dead\" zones.\r\n * 2009-07-11  JPP  - CalculateCellBounds() messed with the FullRowSelect property, which confused the\r\n *                    tooltip handling on the underlying control. It no longer does this.\r\n *                  - The cell edit rectangle is now correctly calculated for owner-drawn, non-Details views.\r\n * 2009-07-08  JPP  - Added Cell events (CellClicked, CellOver, CellRightClicked)\r\n *                  - Made BuildList(), AddObject() and RemoveObject() thread-safe\r\n * 2009-07-04  JPP  - Space bar now properly toggles checkedness of selected rows\r\n * 2009-07-02  JPP  - Fixed bug with tooltips when the underlying Windows control was destroyed.\r\n *                  - CellToolTipShowing events are now triggered in all views.\r\n * v2.2\r\n * 2009-06-02  JPP  - BeforeSortingEventArgs now has a Handled property to let event handlers do\r\n *                    the item sorting themselves.\r\n *                  - AlwaysGroupByColumn works again, as does SortGroupItemsByPrimaryColumn and all their\r\n *                    various permutations.\r\n *                  - SecondarySortOrder and SecondarySortColumn are now \"null\" by default\r\n * 2009-05-15  JPP  - Fixed bug so that KeyPress events are again triggered\r\n * 2009-05-10  JPP  - Removed all unsafe code\r\n * 2009-05-07  JPP  - Don't use glass panel for overlays when in design mode. It's too confusing.\r\n * 2009-05-05  JPP  - Added Scroll event (thanks to Christophe Hosten for the complete patch to implement this)\r\n *                  - Added Unfocused foreground and background colors (also thanks to Christophe Hosten)\r\n * 2009-04-29  JPP  - Added SelectedColumn property, which puts a slight tint on that column. Combine\r\n *                    this with TintSortColumn property and the sort column is automatically tinted.\r\n *                  - Use an overlay to implement \"empty list\" msg. Default empty list msg is now prettier.\r\n * 2009-04-28  JPP  - Fixed bug where DoubleClick events were not triggered when CheckBoxes was true\r\n * 2009-04-23  JPP  - Fixed various bugs under Vista.\r\n *                  - Made groups collapsible - Vista only. Thanks to Crustyapplesniffer.\r\n *                  - Forward events from DropSink to the control itself. This allows handlers to be defined\r\n *                    within the IDE for drop events\r\n * 2009-04-16  JPP  - Made several properties localizable.\r\n * 2009-04-11  JPP  - Correctly renderer checkboxes when RowHeight is non-standard\r\n * 2009-04-11  JPP  - Implemented overlay architecture, based on CustomDraw scheme.\r\n *                    This unified drag drop feedback, empty list msgs and overlay images.\r\n *                  - Added OverlayImage and friends, which allows an image to be drawn\r\n *                    transparently over the listview\r\n * 2009-04-10  JPP  - Fixed long-standing annoying flicker on owner drawn virtual lists!\r\n *                    This means, amongst other things, that grid lines no longer get confused,\r\n *                    and drag-select no longer flickers.\r\n * 2009-04-07  JPP  - Calculate edit rectangles more accurately\r\n * 2009-04-06  JPP  - Double-clicking no longer toggles the checkbox\r\n *                  - Double-clicking on a checkbox no longer confuses the checkbox\r\n * 2009-03-16  JPP  - Optimized the build of autocomplete lists\r\n * v2.1\r\n * 2009-02-24  JPP  - Fix bug where double-clicking VERY quickly on two different cells\r\n *                    could give two editors\r\n *                  - Maintain focused item when rebuilding list (SF #2547060)\r\n * 2009-02-22  JPP  - Reworked checkboxes so that events are triggered for virtual lists\r\n * 2009-02-15  JPP  - Added ObjectListView.ConfigureAutoComplete utility method\r\n * 2009-02-02  JPP  - Fixed bug with AlwaysGroupByColumn where column header clicks would not resort groups.\r\n * 2009-02-01  JPP  - OLVColumn.CheckBoxes and TriStateCheckBoxes now work.\r\n * 2009-01-28  JPP  - Complete overhaul of renderers!\r\n *                       - Use IRenderer\r\n *                       - Added ObjectListView.ItemRenderer to draw whole items\r\n * 2009-01-23  JPP  - Simple Checkboxes now work properly\r\n *                  - Added TriStateCheckBoxes property to control whether the user can\r\n *                    set the row checkbox to have the Indeterminate value\r\n *                  - CheckState property is now just a wrapper around the StateImageIndex property\r\n * 2009-01-20  JPP  - Changed to always draw columns when owner drawn, rather than falling back on DrawDefault.\r\n *                    This simplified several owner drawn problems\r\n *                  - Added DefaultRenderer property to help with the above\r\n *                  - HotItem background color is applied to all cells even when FullRowSelect is false\r\n *                  - Allow grouping by CheckedAspectName columns\r\n *                  - Commented out experimental animations. Still needs work.\r\n * 2009-01-17  JPP  - Added HotItemStyle and UseHotItem to highlight the row under the cursor\r\n *                  - Added UseCustomSelectionColors property\r\n *                  - Owner draw mode now honors ForeColor and BackColor settings on the list\r\n * 2009-01-16  JPP  - Changed to use EditorRegistry rather than hard coding cell editors\r\n * 2009-01-10  JPP  - Changed to use Equals() method rather than == to compare model objects.\r\n * v2.0.1\r\n * 2009-01-08  JPP  - Fixed long-standing \"multiple columns generated\" problem.\r\n *                    Thanks to pinkjones for his help with solving this one!\r\n *                  - Added EnsureGroupVisible()\r\n * 2009-01-07  JPP  - Made all public and protected methods virtual\r\n *                  - FinishCellEditing, PossibleFinishCellEditing and CancelCellEditing are now public\r\n * 2008-12-20  JPP  - Fixed bug with group comparisons when a group key was null (SF#2445761)\r\n * 2008-12-19  JPP  - Fixed bug with space filling columns and layout events\r\n *                  - Fixed RowHeight so that it only changes the row height, not the width of the images.\r\n * v2.0\r\n * 2008-12-10  JPP  - Handle Backspace key. Resets the search-by-typing state without delay\r\n *                  - Made some changes to the column collection editor to try and avoid\r\n *                    the multiple column generation problem.\r\n *                  - Updated some documentation\r\n * 2008-12-07  JPP  - Search-by-typing now works when showing groups\r\n *                  - Added BeforeSearching and AfterSearching events which are triggered when the user types\r\n *                    into the list.\r\n *                  - Added secondary sort information to Before/AfterSorting events\r\n *                  - Reorganized group sorting code. Now triggers Sorting events.\r\n *                  - Added GetItemIndexInDisplayOrder()\r\n *                  - Tweaked in the interaction of the column editor with the IDE so that we (normally)\r\n *                    don't rely on a hack to find the owning ObjectListView\r\n *                  - Changed all 'DefaultValue(typeof(Color), \"Empty\")' to 'DefaultValue(typeof(Color), \"\")'\r\n *                    since the first does not given Color.Empty as I thought, but the second does.\r\n * 2008-11-28  JPP  - Fixed long standing bug with horizontal scrollbar when shrinking the window.\r\n *                    (thanks to Bartosz Borowik)\r\n * 2008-11-25  JPP  - Added support for dynamic tooltips\r\n *                  - Split out comparers and header controls stuff into their own files\r\n * 2008-11-21  JPP  - Fixed bug where enabling grouping when there was not a sort column would not\r\n *                    produce a grouped list. Grouping column now defaults to column 0.\r\n *                  - Preserve selection on virtual lists when sorting\r\n * 2008-11-20  JPP  - Added ability to search by sort column to ObjectListView. Unified this with\r\n *                    ability that was already in VirtualObjectListView\r\n * 2008-11-19  JPP  - Fixed bug in ChangeToFilteredColumns() where DisplayOrder was not always restored correctly.\r\n * 2008-10-29  JPP  - Event argument blocks moved to directly within the namespace, rather than being\r\n *                    nested inside ObjectListView class.\r\n *                  - Removed OLVColumn.CellEditor since it was never used.\r\n *                  - Marked OLVColumn.AspectGetterAutoGenerated as obsolete (it has not been used for\r\n *                    several versions now).\r\n * 2008-10-28  JPP  - SelectedObjects is now an IList, rather than an ArrayList. This allows\r\n *                    it to accept generic list (eg List<File>).\r\n * 2008-10-09  JPP  - Support indeterminate checkbox values.\r\n *                    [BREAKING CHANGE] CheckStateGetter/CheckStatePutter now use CheckState types only.\r\n *                    BooleanCheckStateGetter and BooleanCheckStatePutter added to ease transition.\r\n * 2008-10-08  JPP  - Added setFocus parameter to SelectObject(), which allows focus to be set\r\n *                    at the same time as selecting.\r\n * 2008-09-27  JPP  - BIG CHANGE: Fissioned this file into separate files for each component\r\n * 2008-09-24  JPP  - Corrected bug with owner drawn lists where a column 0 with a renderer\r\n *                    would draw at column 0 even if column 0 was dragged to another position.\r\n *                  - Correctly handle space filling columns when columns are added/removed\r\n * 2008-09-16  JPP  - Consistently use try..finally for BeginUpdate()/EndUpdate() pairs\r\n * 2008-08-24  JPP  - If LastSortOrder is None when adding objects, don't force a resort.\r\n * 2008-08-22  JPP  - Catch and ignore some problems with setting TopIndex on FastObjectListViews.\r\n * 2008-08-05  JPP  - In the right-click column select menu, columns are now sorted by display order, rather than alphabetically\r\n * v1.13\r\n * 2008-07-23  JPP  - Consistently use copy-on-write semantics with Add/RemoveObject methods\r\n * 2008-07-10  JPP  - Enable validation on cell editors through a CellEditValidating event.\r\n *                    (thanks to Artiom Chilaru for the initial suggestion and implementation).\r\n * 2008-07-09  JPP  - Added HeaderControl.Handle to allow OLV to be used within UserControls.\r\n *                    (thanks to Michael Coffey for tracking this down).\r\n * 2008-06-23  JPP  - Split the more generally useful CopyObjectsToClipboard() method\r\n *                    out of CopySelectionToClipboard()\r\n * 2008-06-22  JPP  - Added AlwaysGroupByColumn and AlwaysGroupBySortOrder, which\r\n *                    force the list view to always be grouped by a particular column.\r\n * 2008-05-31  JPP  - Allow check boxes on FastObjectListViews\r\n *                  - Added CheckedObject and CheckedObjects properties\r\n * 2008-05-11  JPP  - Allow selection foreground and background colors to be changed.\r\n *                    Windows doesn't allow this, so we can only make it happen when owner\r\n *                    drawing. Set the HighlightForegroundColor and  HighlightBackgroundColor\r\n *                    properties and then call EnableCustomSelectionColors().\r\n * v1.12\r\n * 2008-05-08  JPP  - Fixed bug where the column select menu would not appear if the\r\n *                    ObjectListView has a context menu installed.\r\n * 2008-05-05  JPP  - Non detail views can now be owner drawn. The renderer installed for\r\n *                    primary column is given the chance to render the whole item.\r\n *                    See BusinessCardRenderer in the demo for an example.\r\n *                  - BREAKING CHANGE: RenderDelegate now returns a bool to indicate if default\r\n *                    rendering should be done. Previously returned void. Only important if your\r\n *                    code used RendererDelegate directly. Renderers derived from BaseRenderer\r\n *                    are unchanged.\r\n * 2008-05-03  JPP  - Changed cell editing to use values directly when the values are Strings.\r\n *                    Previously, values were always handed to the AspectToStringConverter.\r\n *                  - When editing a cell, tabbing no longer tries to edit the next subitem\r\n *                    when not in details view!\r\n * 2008-05-02  JPP  - MappedImageRenderer can now handle a Aspects that return a collection\r\n *                    of values. Each value will be drawn as its own image.\r\n *                  - Made AddObjects() and RemoveObjects() work for all flavours (or at least not crash)\r\n *                  - Fixed bug with clearing virtual lists that has been scrolled vertically\r\n *                  - Made TopItemIndex work with virtual lists.\r\n * 2008-05-01  JPP  - Added AddObjects() and RemoveObjects() to allow faster mods to the list\r\n *                  - Reorganised public properties. Now alphabetical.\r\n *                  - Made the class ObjectListViewState internal, as it always should have been.\r\n * v1.11\r\n * 2008-04-29  JPP  - Preserve scroll position when building the list or changing columns.\r\n *                  - Added TopItemIndex property. Due to problems with the underlying control, this\r\n *                    property is not always reliable. See property docs for info.\r\n * 2008-04-27  JPP  - Added SelectedIndex property.\r\n *                  - Use a different, more general strategy to handle Invoke(). Removed all delegates\r\n *                    that were only declared to support Invoke().\r\n *                  - Check all native structures for 64-bit correctness.\r\n * 2008-04-25  JPP  - Released on SourceForge.\r\n * 2008-04-13  JPP  - Added ColumnRightClick event.\r\n *                  - Made the assembly CLS-compliant. To do this, our cell editors were made internal, and\r\n *                    the constraint on FlagRenderer template parameter was removed (the type must still\r\n *                    be an IConvertible, but if it isn't, the error will be caught at runtime, not compile time).\r\n * 2008-04-12  JPP  - Changed HandleHeaderRightClick() to have a columnIndex parameter, which tells\r\n *                    exactly which column was right-clicked.\r\n * 2008-03-31  JPP  - Added SaveState() and RestoreState()\r\n *                  - When cell editing, scrolling with a mouse wheel now ends the edit operation.\r\n * v1.10\r\n * 2008-03-25  JPP  - Added space filling columns. See OLVColumn.FreeSpaceProportion property for details.\r\n *                    A space filling columns fills all (or a portion) of the width unoccupied by other columns.\r\n * 2008-03-23  JPP  - Finished tinkering with support for Mono. Compile with conditional compilation symbol 'MONO'\r\n *                    to enable. On Windows, current problems with Mono:\r\n *                    - grid lines on virtual lists crashes\r\n *                    - when grouped, items sometimes are not drawn when any item is scrolled out of view\r\n *                    - i can't seem to get owner drawing to work\r\n *                    - when editing cell values, the editing controls always appear behind the listview,\r\n *                      where they function fine -- the user just can't see them :-)\r\n * 2008-03-16  JPP  - Added some methods suggested by Chris Marlowe (thanks for the suggestions Chris)\r\n *                    - ClearObjects()\r\n *                    - GetCheckedObject(), GetCheckedObjects()\r\n *                    - GetItemAt() variation that gets both the item and the column under a point\r\n * 2008-02-28  JPP  - Fixed bug with subitem colors when using OwnerDrawn lists and a RowFormatter.\r\n * v1.9.1\r\n * 2008-01-29  JPP  - Fixed bug that caused owner-drawn virtual lists to use 100% CPU\r\n *                  - Added FlagRenderer to help draw bitwise-OR'ed flag values\r\n * 2008-01-23  JPP  - Fixed bug (introduced in v1.9) that made alternate row colour with groups not quite right\r\n *                  - Ensure that DesignerSerializationVisibility.Hidden is set on all non-browsable properties\r\n *                  - Make sure that sort indicators are shown after changing which columns are visible\r\n * 2008-01-21  JPP  - Added FastObjectListView\r\n * v1.9\r\n * 2008-01-18  JPP  - Added IncrementalUpdate()\r\n * 2008-01-16  JPP  - Right clicking on column header will allow the user to choose which columns are visible.\r\n *                    Set SelectColumnsOnRightClick to false to prevent this behaviour.\r\n *                  - Added ImagesRenderer to draw more than one images in a column\r\n *                  - Changed the positioning of the empty list m to use all the client area. Thanks to Matze.\r\n * 2007-12-13  JPP  - Added CopySelectionToClipboard(). Ctrl-C invokes this method. Supports text\r\n *                    and HTML formats.\r\n * 2007-12-12  JPP  - Added support for checkboxes via CheckStateGetter and CheckStatePutter properties.\r\n *                  - Made ObjectListView and OLVColumn into partial classes so that others can extend them.\r\n * 2007-12-09  JPP  - Added ability to have hidden columns, i.e. columns that the ObjectListView knows\r\n *                    about but that are not visible to the user. Controlled by OLVColumn.IsVisible.\r\n *                    Added ColumnSelectionForm to the project to show how it could be used in an application.\r\n *\r\n * v1.8\r\n * 2007-11-26  JPP  - Cell editing fully functional\r\n * 2007-11-21  JPP  - Added SelectionChanged event. This event is triggered once when the\r\n *                    selection changes, no matter how many items are selected or deselected (in\r\n *                    contrast to SelectedIndexChanged which is called once for every row that\r\n *                    is selected or deselected). Thanks to lupokehl42 (Daniel) for his suggestions and\r\n *                    improvements on this idea.\r\n * 2007-11-19  JPP  - First take at cell editing\r\n * 2007-11-17  JPP  - Changed so that items within a group are not sorted if lastSortOrder == None\r\n *                  - Only call MakeSortIndicatorImages() if we haven't already made the sort indicators\r\n *                    (Corrected misspelling in the name of the method too)\r\n * 2007-11-06  JPP  - Added ability to have secondary sort criteria when sorting\r\n *                    (SecondarySortColumn and SecondarySortOrder properties)\r\n *                  - Added SortGroupItemsByPrimaryColumn to allow group items to be sorted by the\r\n *                    primary column. Previous default was to sort by the grouping column.\r\n * v1.7\r\n * No big changes to this version but made to work with ListViewPrinter and released with it.\r\n *\r\n * 2007-11-05  JPP  - Changed BaseRenderer to use DrawString() rather than TextRenderer, since TextRenderer\r\n *                    does not work when printing.\r\n * v1.6\r\n * 2007-11-03  JPP  - Fixed some bugs in the rebuilding of DataListView.\r\n * 2007-10-31  JPP  - Changed to use builtin sort indicators on XP and later. This also avoids alignment\r\n *                    problems on Vista. (thanks to gravybod for the suggestion and example implementation)\r\n * 2007-10-21  JPP  - Added MinimumWidth and MaximumWidth properties to OLVColumn.\r\n *                  - Added ability for BuildList() to preserve selection. Calling BuildList() directly\r\n *                    tries to preserve selection; calling SetObjects() does not.\r\n *                  - Added SelectAll() and DeselectAll() methods. Useful for working with large lists.\r\n * 2007-10-08  JPP  - Added GetNextItem() and GetPreviousItem(), which walk sequentially through the\r\n *                    listview items, even when the view is grouped.\r\n *                  - Added SelectedItem property\r\n * 2007-09-28  JPP  - Optimized aspect-to-string conversion. BuildList() 15% faster.\r\n *                  - Added empty implementation of RefreshObjects() to VirtualObjectListView since\r\n *                    RefreshObjects() cannot work on virtual lists.\r\n * 2007-09-13  JPP  - Corrected bug with custom sorter in VirtualObjectListView (thanks for mpgjunky)\r\n * 2007-09-07  JPP  - Corrected image scaling bug in DrawAlignedImage() (thanks to krita970)\r\n * 2007-08-29  JPP  - Allow item count labels on groups to be set per column (thanks to cmarlow for idea)\r\n * 2007-08-14  JPP  - Major rework of DataListView based on Ian Griffiths's great work\r\n * 2007-08-11  JPP  - When empty, the control can now draw a \"List Empty\" m\r\n *                  - Added GetColumn() and GetItem() methods\r\n * v1.5\r\n * 2007-08-03  JPP  - Support animated GIFs in ImageRenderer\r\n *                  - Allow height of rows to be specified - EXPERIMENTAL!\r\n * 2007-07-26  JPP  - Optimised redrawing of owner-drawn lists by remembering the update rect\r\n *                  - Allow sort indicators to be turned off\r\n * 2007-06-30  JPP  - Added RowFormatter delegate\r\n *                  - Allow a different label when there is only one item in a group (thanks to cmarlow)\r\n * v1.4\r\n * 2007-04-12  JPP  - Allow owner drawn on steriods!\r\n *                  - Column headers now display sort indicators\r\n *                  - ImageGetter delegates can now return ints, strings or Images\r\n *                    (Images are only visible if the list is owner drawn)\r\n *                  - Added OLVColumn.MakeGroupies to help with group partitioning\r\n *                  - All normal listview views are now supported\r\n *                  - Allow dotted aspect names, e.g. Owner.Workgroup.Name (thanks to OlafD)\r\n *                  - Added SelectedObject and SelectedObjects properties\r\n * v1.3\r\n * 2007-03-01  JPP  - Added DataListView\r\n *                  - Added VirtualObjectListView\r\n * \t\t\t\t\t- Added Freeze/Unfreeze capabilities\r\n *                  - Allowed sort handler to be installed\r\n *                  - Simplified sort comparisons: handles 95% of cases with only 6 lines of code!\r\n *                  - Fixed bug with alternative line colors on unsorted lists (thanks to cmarlow)\r\n * 2007-01-13  JPP  - Fixed bug with lastSortOrder (thanks to Kwan Fu Sit)\r\n *                  - Non-OLVColumns are no longer allowed\r\n * 2007-01-04  JPP  - Clear sorter before rebuilding list. 10x faster! (thanks to aaberg)\r\n *                  - Include GetField in GetAspectByName() so field values can be Invoked too.\r\n * \t\t\t\t\t- Fixed subtle bug in RefreshItem() that erased background colors.\r\n * 2006-11-01  JPP  - Added alternate line colouring\r\n * 2006-10-20  JPP  - Refactored all sorting comparisons and made it extendable. See ComparerManager.\r\n *                  - Improved IDE integration\r\n *                  - Made control DoubleBuffered\r\n *                  - Added object selection methods\r\n * 2006-10-13  JPP  Implemented grouping and column sorting\r\n * 2006-10-09  JPP  Initial version\r\n *\r\n * TO DO:\r\n * - Support undocumented group features: subseted groups, group footer items\r\n *\r\n * Copyright (C) 2006-2016 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Diagnostics;\r\nusing System.Drawing;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing System.Runtime.InteropServices;\r\nusing System.Runtime.Serialization.Formatters.Binary;\r\nusing System.Windows.Forms;\r\nusing System.Windows.Forms.VisualStyles;\r\nusing System.Runtime.Serialization.Formatters;\r\nusing System.Threading;\r\nusing System.Xml.Serialization;\r\nusing MethodInvoker = System.Windows.Forms.MethodInvoker;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// An ObjectListView is a much easier to use, and much more powerful, version of the ListView.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>\r\n    /// An ObjectListView automatically populates a ListView control with information taken \r\n    /// from a given collection of objects. It can do this because each column is configured\r\n    /// to know which bit of the model object (the \"aspect\") it should be displaying. Columns similarly\r\n    /// understand how to sort the list based on their aspect, and how to construct groups\r\n    /// using their aspect.\r\n    /// </para>\r\n    /// <para>\r\n    /// Aspects are extracted by giving the name of a method to be called or a\r\n    /// property to be fetched. These names can be simple names or they can be dotted\r\n    /// to chain property access e.g. \"Owner.Address.Postcode\".\r\n    /// Aspects can also be extracted by installing a delegate.\r\n    /// </para>\r\n    /// <para>\r\n    /// An ObjectListView can show a \"this list is empty\" message when there is nothing to show in the list, \r\n    /// so that the user knows the control is supposed to be empty.\r\n    /// </para>\r\n    /// <para>\r\n    /// Right clicking on a column header should present a menu which can contain:\r\n    /// commands (sort, group, ungroup); filtering; and column selection. Whether these\r\n    /// parts of the menu appear is controlled by ShowCommandMenuOnRightClick, \r\n    /// ShowFilterMenuOnRightClick and SelectColumnsOnRightClick respectively.\r\n    /// </para>\r\n    /// <para>\r\n    /// The groups created by an ObjectListView can be configured to include other formatting\r\n    /// information, including a group icon, subtitle and task button. Using some undocumented\r\n    /// interfaces, these groups can even on virtual lists.\r\n    /// </para>\r\n    /// <para>\r\n    /// ObjectListView supports dragging rows to other places, including other application. \r\n    /// Special support is provide for drops from other ObjectListViews in the same application. \r\n    /// In many cases, an ObjectListView becomes a full drag source by setting <see cref=\"IsSimpleDragSource\"/> to \r\n    /// true. Similarly, to accept drops, it is usually enough to set <see cref=\"IsSimpleDropSink\"/> to true, \r\n    /// and then handle the <see cref=\"CanDrop\"/>  and <see cref=\"Dropped\"/>  events (or the <see cref=\"ModelCanDrop\"/>  and \r\n    /// <see cref=\"ModelDropped\"/> events, if you only want to handle drops from other ObjectListViews in your application).\r\n    /// </para>\r\n    /// <para>\r\n    /// For these classes to build correctly, the project must have references to these assemblies:\r\n    /// </para>\r\n    /// <list type=\"bullet\">\r\n    /// <item><description>System</description></item>\r\n    /// <item><description>System.Data</description></item>\r\n    /// <item><description>System.Design</description></item>\r\n    /// <item><description>System.Drawing</description></item>\r\n    /// <item><description>System.Windows.Forms (obviously)</description></item>\r\n    /// </list>\r\n    /// </remarks>\r\n    [Designer(typeof(Design.ObjectListViewDesigner))]\r\n    public partial class ObjectListView : ListView, ISupportInitialize\r\n    {\r\n\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create an ObjectListView\r\n        /// </summary>\r\n        public ObjectListView()\r\n        {\r\n            ColumnClick += new ColumnClickEventHandler(HandleColumnClick);\r\n            Layout += new LayoutEventHandler(HandleLayout);\r\n            ColumnWidthChanging += new ColumnWidthChangingEventHandler(HandleColumnWidthChanging);\r\n            ColumnWidthChanged += new ColumnWidthChangedEventHandler(HandleColumnWidthChanged);\r\n\r\n            base.View = View.Details;\r\n\r\n            // Turn on owner draw so that we are responsible for our own fates (and isolated from bugs in the underlying ListView)\r\n            OwnerDraw = true;\r\n\r\n            // ReSharper disable DoNotCallOverridableMethodsInConstructor\r\n            DoubleBuffered = true; // kill nasty flickers. hiss... me hates 'em\r\n            ShowSortIndicators = true;\r\n\r\n            // Setup the overlays that will be controlled by the IDE settings\r\n            InitializeStandardOverlays();\r\n            InitializeEmptyListMsgOverlay();\r\n            // ReSharper restore DoNotCallOverridableMethodsInConstructor\r\n        }\r\n\r\n        /// <summary>\r\n        /// Dispose of any resources this instance has been using\r\n        /// </summary>\r\n        /// <param name=\"disposing\"></param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            base.Dispose(disposing);\r\n\r\n            if (!disposing)\r\n                return;\r\n\r\n            foreach (GlassPanelForm glassPanel in glassPanels)\r\n            {\r\n                glassPanel.Unbind();\r\n                glassPanel.Dispose();\r\n            }\r\n            glassPanels.Clear();\r\n\r\n            UnsubscribeNotifications(null);\r\n        }\r\n\r\n        #endregion\r\n\r\n        // TODO\r\n        //public CheckBoxSettings CheckBoxSettings {\r\n        //    get { return checkBoxSettings; }\r\n        //    private set { checkBoxSettings = value; }\r\n        //}\r\n\r\n        #region Static properties\r\n\r\n        /// <summary>\r\n        /// Gets whether or not the left mouse button is down at this very instant\r\n        /// </summary>\r\n        public static bool IsLeftMouseDown\r\n        {\r\n            get { return (MouseButtons & MouseButtons.Left) == MouseButtons.Left; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether the program running on Vista or later?\r\n        /// </summary>\r\n        public static bool IsVistaOrLater\r\n        {\r\n            get\r\n            {\r\n                if (!sIsVistaOrLater.HasValue)\r\n                    sIsVistaOrLater = Environment.OSVersion.Version.Major >= 6;\r\n                return sIsVistaOrLater.Value;\r\n            }\r\n        }\r\n        private static bool? sIsVistaOrLater;\r\n\r\n        /// <summary>\r\n        /// Gets whether the program running on Win7 or later?\r\n        /// </summary>\r\n        public static bool IsWin7OrLater\r\n        {\r\n            get\r\n            {\r\n                if (!sIsWin7OrLater.HasValue)\r\n                {\r\n                    // For some reason, Win7 is v6.1, not v7.0\r\n                    Version version = Environment.OSVersion.Version;\r\n                    sIsWin7OrLater = version.Major > 6 || (version.Major == 6 && version.Minor > 0);\r\n                }\r\n                return sIsWin7OrLater.Value;\r\n            }\r\n        }\r\n        private static bool? sIsWin7OrLater;\r\n\r\n        /// <summary>\r\n        /// Gets or sets how what smoothing mode will be applied to graphic operations.\r\n        /// </summary>\r\n        public static System.Drawing.Drawing2D.SmoothingMode SmoothingMode\r\n        {\r\n            get { return sSmoothingMode; }\r\n            set { sSmoothingMode = value; }\r\n        }\r\n        private static System.Drawing.Drawing2D.SmoothingMode sSmoothingMode =\r\n            System.Drawing.Drawing2D.SmoothingMode.HighQuality;\r\n\r\n        /// <summary>\r\n        /// Gets or sets how should text be renderered.\r\n        /// </summary>\r\n        public static System.Drawing.Text.TextRenderingHint TextRenderingHint\r\n        {\r\n            get { return sTextRendereringHint; }\r\n            set { sTextRendereringHint = value; }\r\n        }\r\n        private static System.Drawing.Text.TextRenderingHint sTextRendereringHint =\r\n            System.Drawing.Text.TextRenderingHint.SystemDefault;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the string that will be used to title groups when the group key is null.\r\n        /// Exposed so it can be localized.\r\n        /// </summary>\r\n        public static string GroupTitleDefault\r\n        {\r\n            get { return sGroupTitleDefault; }\r\n            set { sGroupTitleDefault = value ?? \"{null}\"; }\r\n        }\r\n        private static string sGroupTitleDefault = \"{null}\";\r\n\r\n        /// <summary>\r\n        /// Convert the given enumerable into an ArrayList as efficiently as possible\r\n        /// </summary>\r\n        /// <param name=\"collection\">The source collection</param>\r\n        /// <param name=\"alwaysCreate\">If true, this method will always create a new\r\n        /// collection.</param>\r\n        /// <returns>An ArrayList with the same contents as the given collection.</returns>\r\n        /// <remarks>\r\n        /// <para>When we move to .NET 3.5, we can use LINQ and not need this method.</para>\r\n        /// </remarks>\r\n        public static ArrayList EnumerableToArray(IEnumerable collection, bool alwaysCreate)\r\n        {\r\n            if (collection == null)\r\n                return new ArrayList();\r\n\r\n            if (!alwaysCreate)\r\n            {\r\n                if (collection is ArrayList array)\r\n                    return array;\r\n\r\n                if (collection is IList iList)\r\n                    return ArrayList.Adapter(iList);\r\n            }\r\n\r\n            if (collection is ICollection iCollection)\r\n                return new ArrayList(iCollection);\r\n\r\n            ArrayList newObjects = new ArrayList();\r\n            foreach (object x in collection)\r\n                newObjects.Add(x);\r\n            return newObjects;\r\n        }\r\n\r\n\r\n        /// <summary>\r\n        /// Return the count of items in the given enumerable\r\n        /// </summary>\r\n        /// <param name=\"collection\"></param>\r\n        /// <returns></returns>\r\n        /// <remarks>When we move to .NET 3.5, we can use LINQ and not need this method.</remarks>\r\n        public static int EnumerableCount(IEnumerable collection)\r\n        {\r\n            if (collection == null)\r\n                return 0;\r\n\r\n            if (collection is ICollection iCollection)\r\n                return iCollection.Count;\r\n\r\n            int i = 0;\r\n            // ReSharper disable once UnusedVariable\r\n            foreach (object x in collection)\r\n                i++;\r\n            return i;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return whether or not the given enumerable is empty. A string is regarded as \r\n        /// an empty collection.\r\n        /// </summary>\r\n        /// <param name=\"collection\"></param>\r\n        /// <returns>True if the given collection is null or empty</returns>\r\n        /// <remarks>\r\n        /// <para>When we move to .NET 3.5, we can use LINQ and not need this method.</para>\r\n        /// </remarks>\r\n        public static bool IsEnumerableEmpty(IEnumerable collection)\r\n        {\r\n            return collection == null || (collection is string) || !collection.GetEnumerator().MoveNext();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether all ObjectListViews will silently ignore missing aspect errors.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// By default, if an ObjectListView is asked to display an aspect\r\n        /// (i.e. a field/property/method)\r\n        /// that does not exist from a model, it displays an error message in that cell, since that \r\n        /// condition is normally a programming error. There are some use cases where\r\n        /// this is not an error -- in those cases, set this to true and ObjectListView will\r\n        /// simply display an empty cell.\r\n        /// </para>\r\n        /// <para>Be warned: if you set this to true, it can be very difficult to track down\r\n        /// typing mistakes or name changes in AspectNames.</para>\r\n        /// </remarks>\r\n        public static bool IgnoreMissingAspects\r\n        {\r\n            get { return Munger.IgnoreMissingAspects; }\r\n            set { Munger.IgnoreMissingAspects = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the control will draw a rectangle in each cell showing the cell padding.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This can help with debugging display problems from cell padding.\r\n        /// </para>\r\n        /// <para>As with all cell padding, this setting only takes effect when the control is owner drawn.</para>\r\n        /// </remarks>\r\n        public static bool ShowCellPaddingBounds\r\n        {\r\n            get { return sShowCellPaddingBounds; }\r\n            set { sShowCellPaddingBounds = value; }\r\n        }\r\n        private static bool sShowCellPaddingBounds;\r\n\r\n        /// <summary>\r\n        /// Gets the style that will be used by default to format disabled rows\r\n        /// </summary>\r\n        public static SimpleItemStyle DefaultDisabledItemStyle\r\n        {\r\n            get\r\n            {\r\n                if (sDefaultDisabledItemStyle == null)\r\n                {\r\n                    sDefaultDisabledItemStyle = new SimpleItemStyle();\r\n                    sDefaultDisabledItemStyle.ForeColor = Color.DarkGray;\r\n                }\r\n                return sDefaultDisabledItemStyle;\r\n            }\r\n        }\r\n        private static SimpleItemStyle sDefaultDisabledItemStyle;\r\n\r\n        /// <summary>\r\n        /// Gets the style that will be used by default to format hot rows\r\n        /// </summary>\r\n        public static HotItemStyle DefaultHotItemStyle\r\n        {\r\n            get\r\n            {\r\n                if (sDefaultHotItemStyle == null)\r\n                {\r\n                    sDefaultHotItemStyle = new HotItemStyle();\r\n                    sDefaultHotItemStyle.BackColor = Color.FromArgb(224, 235, 253);\r\n                }\r\n                return sDefaultHotItemStyle;\r\n            }\r\n        }\r\n        private static HotItemStyle sDefaultHotItemStyle;\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets an model filter that is combined with any column filtering that the end-user specifies.\r\n        /// </summary>\r\n        /// <remarks>This is different from the ModelFilter property, since setting that will replace\r\n        /// any column filtering, whereas setting this will combine this filter with the column filtering</remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IModelFilter AdditionalFilter\r\n        {\r\n            get { return additionalFilter; }\r\n            set\r\n            {\r\n                if (additionalFilter == value)\r\n                    return;\r\n                additionalFilter = value;\r\n                UpdateColumnFiltering();\r\n            }\r\n        }\r\n        private IModelFilter additionalFilter;\r\n\r\n        /// <summary>\r\n        /// Get or set all the columns that this control knows about.\r\n        /// Only those columns where IsVisible is true will be seen by the user.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If you want to add new columns programmatically, add them to\r\n        /// AllColumns and then call RebuildColumns(). Normally, you do not have to\r\n        /// deal with this property directly. Just use the IDE.\r\n        /// </para>\r\n        /// <para>If you do add or remove columns from the AllColumns collection,\r\n        /// you have to call RebuildColumns() to make those changes take effect.</para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]\r\n        public virtual List<OLVColumn> AllColumns\r\n        {\r\n            get { return allColumns; }\r\n            set { allColumns = value ?? new List<OLVColumn>(); }\r\n        }\r\n        private List<OLVColumn> allColumns = new();\r\n\r\n        /// <summary>\r\n        /// Gets or sets the background color of every second row \r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"If using alternate colors, what color should the background of alterate rows be?\"),\r\n         DefaultValue(typeof(Color), \"\")]\r\n        public Color AlternateRowBackColor\r\n        {\r\n            get { return alternateRowBackColor; }\r\n            set { alternateRowBackColor = value; }\r\n        }\r\n        private Color alternateRowBackColor = Color.Empty;\r\n\r\n        /// <summary>\r\n        /// Gets the alternate row background color that has been set, or the default color\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual Color AlternateRowBackColorOrDefault\r\n        {\r\n            get\r\n            {\r\n                return alternateRowBackColor == Color.Empty ? Color.LemonChiffon : alternateRowBackColor;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// This property forces the ObjectListView to always group items by the given column.\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual OLVColumn AlwaysGroupByColumn\r\n        {\r\n            get { return alwaysGroupByColumn; }\r\n            set { alwaysGroupByColumn = value; }\r\n        }\r\n        private OLVColumn alwaysGroupByColumn;\r\n\r\n        /// <summary>\r\n        /// If AlwaysGroupByColumn is not null, this property will be used to decide how\r\n        /// those groups are sorted. If this property has the value SortOrder.None, then\r\n        /// the sort order will toggle according to the users last header click.\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual SortOrder AlwaysGroupBySortOrder\r\n        {\r\n            get { return alwaysGroupBySortOrder; }\r\n            set { alwaysGroupBySortOrder = value; }\r\n        }\r\n        private SortOrder alwaysGroupBySortOrder = SortOrder.None;\r\n\r\n        /// <summary>\r\n        /// Give access to the image list that is actually being used by the control\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Normally, it is preferable to use SmallImageList. Only use this property\r\n        /// if you know exactly what you are doing.\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual ImageList BaseSmallImageList\r\n        {\r\n            get { return base.SmallImageList; }\r\n            set { base.SmallImageList = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// How does the user indicate that they want to edit a cell?\r\n        /// None means that the listview cannot be edited.\r\n        /// </summary>\r\n        /// <remarks>Columns can also be marked as editable.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How does the user indicate that they want to edit a cell?\"),\r\n         DefaultValue(CellEditActivateMode.None)]\r\n        public virtual CellEditActivateMode CellEditActivation\r\n        {\r\n            get { return cellEditActivation; }\r\n            set\r\n            {\r\n                cellEditActivation = value;\r\n                if (Created)\r\n                    Invalidate();\r\n            }\r\n        }\r\n        private CellEditActivateMode cellEditActivation = CellEditActivateMode.None;\r\n\r\n        /// <summary>\r\n        /// When a cell is edited, should the whole cell be used (minus any space used by checkbox or image)?\r\n        /// Defaults to true.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>This is always treated as true when the control is NOT owner drawn.</para>\r\n        /// <para>\r\n        /// When this is false and the control is owner drawn, \r\n        /// ObjectListView will try to calculate the width of the cell's\r\n        /// actual contents, and then size the editing control to be just the right width. If this is true,\r\n        /// the whole width of the cell will be used, regardless of the cell's contents.\r\n        /// </para>\r\n        /// <para>Each column can have a different value for property. This value from the control is only\r\n        /// used when a column is not specified one way or another.</para>\r\n        /// <para>Regardless of this setting, developers can specify the exact size of the editing control\r\n        /// by listening for the CellEditStarting event.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"When a cell is edited, should the whole cell be used?\"),\r\n         DefaultValue(true)]\r\n        public virtual bool CellEditUseWholeCell\r\n        {\r\n            get { return cellEditUseWholeCell; }\r\n            set { cellEditUseWholeCell = value; }\r\n        }\r\n        private bool cellEditUseWholeCell;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the engine that will handle key presses during a cell edit operation.\r\n        /// Settings this to null will reset it to default value.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public CellEditKeyEngine CellEditKeyEngine\r\n        {\r\n            get { return cellEditKeyEngine ?? (cellEditKeyEngine = new CellEditKeyEngine()); }\r\n            set { cellEditKeyEngine = value; }\r\n        }\r\n        private CellEditKeyEngine cellEditKeyEngine;\r\n\r\n        /// <summary>\r\n        /// Gets the control that is currently being used for editing a cell.\r\n        /// </summary>\r\n        /// <remarks>This will obviously be null if no cell is being edited.</remarks>\r\n        [Browsable(false)]\r\n        public Control CellEditor\r\n        {\r\n            get\r\n            {\r\n                return cellEditor;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the behaviour of the Tab key when editing a cell on the left or right\r\n        /// edge of the control. If this is false (the default), pressing Tab will wrap to the other side\r\n        /// of the same row. If this is true, pressing Tab when editing the right most cell will advance \r\n        /// to the next row \r\n        /// and Shift-Tab when editing the left-most cell will change to the previous row.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Should Tab/Shift-Tab change rows while cell editing?\"),\r\n        DefaultValue(false)]\r\n        public virtual bool CellEditTabChangesRows\r\n        {\r\n            get { return cellEditTabChangesRows; }\r\n            set\r\n            {\r\n                cellEditTabChangesRows = value;\r\n                if (cellEditTabChangesRows)\r\n                {\r\n                    CellEditKeyEngine.SetKeyBehaviour(Keys.Tab, CellEditCharacterBehaviour.ChangeColumnRight, CellEditAtEdgeBehaviour.ChangeRow);\r\n                    CellEditKeyEngine.SetKeyBehaviour(Keys.Tab | Keys.Shift, CellEditCharacterBehaviour.ChangeColumnLeft, CellEditAtEdgeBehaviour.ChangeRow);\r\n                }\r\n                else\r\n                {\r\n                    CellEditKeyEngine.SetKeyBehaviour(Keys.Tab, CellEditCharacterBehaviour.ChangeColumnRight, CellEditAtEdgeBehaviour.Wrap);\r\n                    CellEditKeyEngine.SetKeyBehaviour(Keys.Tab | Keys.Shift, CellEditCharacterBehaviour.ChangeColumnLeft, CellEditAtEdgeBehaviour.Wrap);\r\n                }\r\n            }\r\n        }\r\n        private bool cellEditTabChangesRows;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the behaviour of the Enter keys while editing a cell.\r\n        /// If this is false (the default), pressing Enter will simply finish the editing operation.\r\n        /// If this is true, Enter will finish the edit operation and start a new edit operation\r\n        /// on the cell below the current cell, wrapping to the top of the next row when at the bottom cell.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Should Enter change rows while cell editing?\"),\r\n        DefaultValue(false)]\r\n        public virtual bool CellEditEnterChangesRows\r\n        {\r\n            get { return cellEditEnterChangesRows; }\r\n            set\r\n            {\r\n                cellEditEnterChangesRows = value;\r\n                if (cellEditEnterChangesRows)\r\n                {\r\n                    CellEditKeyEngine.SetKeyBehaviour(Keys.Enter, CellEditCharacterBehaviour.ChangeRowDown, CellEditAtEdgeBehaviour.ChangeColumn);\r\n                    CellEditKeyEngine.SetKeyBehaviour(Keys.Enter | Keys.Shift, CellEditCharacterBehaviour.ChangeRowUp, CellEditAtEdgeBehaviour.ChangeColumn);\r\n                }\r\n                else\r\n                {\r\n                    CellEditKeyEngine.SetKeyBehaviour(Keys.Enter, CellEditCharacterBehaviour.EndEdit, CellEditAtEdgeBehaviour.EndEdit);\r\n                    CellEditKeyEngine.SetKeyBehaviour(Keys.Enter | Keys.Shift, CellEditCharacterBehaviour.EndEdit, CellEditAtEdgeBehaviour.EndEdit);\r\n                }\r\n            }\r\n        }\r\n        private bool cellEditEnterChangesRows;\r\n\r\n        /// <summary>\r\n        /// Gets the tool tip control that shows tips for the cells\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public ToolTipControl CellToolTip\r\n        {\r\n            get\r\n            {\r\n                if (cellToolTip == null)\r\n                {\r\n                    CreateCellToolTip();\r\n                }\r\n                return cellToolTip;\r\n            }\r\n        }\r\n        private ToolTipControl cellToolTip;\r\n\r\n        /// <summary>\r\n        /// Gets or sets how many pixels will be left blank around each cell of this item.\r\n        /// Cell contents are aligned after padding has been taken into account.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>Each value of the given rectangle will be treated as an inset from\r\n        /// the corresponding side. The width of the rectangle is the padding for the\r\n        /// right cell edge. The height of the rectangle is the padding for the bottom\r\n        /// cell edge.\r\n        /// </para>\r\n        /// <para>\r\n        /// So, this.olv1.CellPadding = new Rectangle(1, 2, 3, 4); will leave one pixel\r\n        /// of space to the left of the cell, 2 pixels at the top, 3 pixels of space\r\n        /// on the right edge, and 4 pixels of space at the bottom of each cell.\r\n        /// </para>\r\n        /// <para>\r\n        /// This setting only takes effect when the control is owner drawn.\r\n        /// </para>\r\n        /// <para>This setting only affects the contents of the cell. The background is\r\n        /// not affected.</para>\r\n        /// <para>If you set this to a foolish value, your control will appear to be empty.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How much padding will be applied to each cell in this control?\"),\r\n         DefaultValue(null)]\r\n        public Rectangle? CellPadding\r\n        {\r\n            get { return cellPadding; }\r\n            set { cellPadding = value; }\r\n        }\r\n        private Rectangle? cellPadding;\r\n\r\n        /// <summary>\r\n        /// Gets or sets how cells will be vertically aligned by default.\r\n        /// </summary>\r\n        /// <remarks>This setting only takes effect when the control is owner drawn. It will only be noticable\r\n        /// when RowHeight has been set such that there is some vertical space in each row.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How will cell values be vertically aligned?\"),\r\n         DefaultValue(StringAlignment.Center)]\r\n        public virtual StringAlignment CellVerticalAlignment\r\n        {\r\n            get { return cellVerticalAlignment; }\r\n            set { cellVerticalAlignment = value; }\r\n        }\r\n        private StringAlignment cellVerticalAlignment = StringAlignment.Center;\r\n\r\n        /// <summary>\r\n        /// Should this list show checkboxes?\r\n        /// </summary>\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public new bool CheckBoxes\r\n        {\r\n            get { return base.CheckBoxes; }\r\n            set\r\n            {\r\n                // Due to code in the base ListView class, turning off CheckBoxes on a virtual\r\n                // list always throws an InvalidOperationException. We have to do some major hacking\r\n                // to get around that\r\n                if (VirtualMode)\r\n                {\r\n                    // Leave virtual mode\r\n                    StateImageList = null;\r\n                    VirtualListSize = 0;\r\n                    VirtualMode = false;\r\n\r\n                    // Change the CheckBox setting while not in virtual mode\r\n                    base.CheckBoxes = value;\r\n\r\n                    // Reinstate virtual mode\r\n                    VirtualMode = true;\r\n\r\n                    // Re-enact the bits that we lost by switching to virtual mode\r\n                    ShowGroups = ShowGroups;\r\n                    BuildList(true);\r\n                }\r\n                else\r\n                {\r\n                    base.CheckBoxes = value;\r\n                    // Initialize the state image list so we can display indetermined values.\r\n                    InitializeStateImageList();\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the model object of the row that is checked or null if no row is checked\r\n        /// or more than one row is checked\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual Object CheckedObject\r\n        {\r\n            get\r\n            {\r\n                IList checkedObjects = CheckedObjects;\r\n                return checkedObjects.Count == 1 ? checkedObjects[0] : null;\r\n            }\r\n            set\r\n            {\r\n                CheckedObjects = new ArrayList(new Object[] { value });\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the collection of model objects that are checked.\r\n        /// When setting this property, any row whose model object isn't\r\n        /// in the given collection will be unchecked. Setting to null is\r\n        /// equivilent to unchecking all.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This property returns a simple collection. Changes made to the returned\r\n        /// collection do NOT affect the list. This is different to the behaviour of\r\n        /// CheckedIndicies collection.\r\n        /// </para>\r\n        /// <para>\r\n        /// .NET's CheckedItems property is not helpful. It is just a short-hand for\r\n        /// iterating through the list looking for items that are checked.\r\n        /// </para>\r\n        /// <para>\r\n        /// The performance of the get method is O(n), where n is the number of items\r\n        /// in the control. The performance of the set method is\r\n        /// O(n + m) where m is the number of objects being checked. Be careful on long lists.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IList CheckedObjects\r\n        {\r\n            get\r\n            {\r\n                ArrayList list = new ArrayList();\r\n                if (CheckBoxes)\r\n                {\r\n                    if (!VirtualMode)\r\n                    {\r\n                        // Faster than index access, but doesn't work on virtual lists\r\n                        foreach (OLVListItem olvi in Items)\r\n                        {\r\n                            if (olvi.CheckState == CheckState.Checked)\r\n                                list.Add(olvi.RowObject);\r\n                        }\r\n                    }\r\n                    else\r\n                    {\r\n                        for (int i = 0; i < GetItemCount(); i++)\r\n                        {\r\n                            OLVListItem olvi = GetItem(i);\r\n                            if (olvi.CheckState == CheckState.Checked)\r\n                                list.Add(olvi.RowObject);\r\n                        }\r\n                    }\r\n                }\r\n                return list;\r\n            }\r\n            set\r\n            {\r\n                if (!CheckBoxes)\r\n                    return;\r\n\r\n                Stopwatch sw = Stopwatch.StartNew();\r\n\r\n                // Set up an efficient way of testing for the presence of a particular model\r\n                Hashtable table = new Hashtable(GetItemCount());\r\n                if (value != null)\r\n                {\r\n                    foreach (object x in value)\r\n                        table[x] = true;\r\n                }\r\n\r\n                BeginUpdate();\r\n                foreach (Object x in Objects)\r\n                {\r\n                    SetObjectCheckedness(x, table.ContainsKey(x) ? CheckState.Checked : CheckState.Unchecked);\r\n                }\r\n                EndUpdate();\r\n\r\n                Debug.WriteLine(String.Format(\"PERF - Setting CheckedObjects on {2} objects took {0}ms / {1} ticks\", sw.ElapsedMilliseconds, sw.ElapsedTicks, GetItemCount()));\r\n\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the checked objects from an enumerable.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Useful for checking all objects in the list.\r\n        /// </remarks>\r\n        /// <example>\r\n        /// this.olv1.CheckedObjectsEnumerable = this.olv1.Objects;\r\n        /// </example>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IEnumerable CheckedObjectsEnumerable\r\n        {\r\n            get\r\n            {\r\n                return CheckedObjects;\r\n            }\r\n            set\r\n            {\r\n                CheckedObjects = EnumerableToArray(value, true);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets Columns for this list. We hide the original so we can associate\r\n        /// a specialised editor with it.\r\n        /// </summary>\r\n        [Editor(\"BrightIdeasSoftware.Design.OLVColumnCollectionEditor\", \"System.Drawing.Design.UITypeEditor\")]\r\n        public new ColumnHeaderCollection Columns\r\n        {\r\n            get\r\n            {\r\n                return base.Columns;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get/set the list of columns that should be used when the list switches to tile view.\r\n        /// </summary>\r\n        [Browsable(false),\r\n        Obsolete(\"Use GetFilteredColumns() and OLVColumn.IsTileViewColumn instead\"),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public List<OLVColumn> ColumnsForTileView\r\n        {\r\n            get { return GetFilteredColumns(View.Tile); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the visible columns in the order they are displayed to the user\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual List<OLVColumn> ColumnsInDisplayOrder\r\n        {\r\n            get\r\n            {\r\n                OLVColumn[] columnsInDisplayOrder = new OLVColumn[Columns.Count];\r\n                foreach (OLVColumn col in Columns)\r\n                {\r\n                    columnsInDisplayOrder[col.DisplayIndex] = col;\r\n                }\r\n                return new List<OLVColumn>(columnsInDisplayOrder);\r\n            }\r\n        }\r\n\r\n\r\n        /// <summary>\r\n        /// Get the area of the control that shows the list, minus any header control\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public Rectangle ContentRectangle\r\n        {\r\n            get\r\n            {\r\n                Rectangle r = ClientRectangle;\r\n\r\n                // If the listview has a header control, remove the header from the control area\r\n                if ((View == View.Details || ShowHeaderInAllViews) && HeaderControl != null)\r\n                {\r\n                    Rectangle hdrBounds = new Rectangle();\r\n                    NativeMethods.GetClientRect(HeaderControl.Handle, ref hdrBounds);\r\n                    r.Y = hdrBounds.Height;\r\n                    r.Height -= hdrBounds.Height;\r\n                }\r\n\r\n                return r;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets if the selected rows should be copied to the clipboard when the user presses Ctrl-C\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Should the control copy the selection to the clipboard when the user presses Ctrl-C?\"),\r\n        DefaultValue(true)]\r\n        public virtual bool CopySelectionOnControlC\r\n        {\r\n            get { return copySelectionOnControlC; }\r\n            set { copySelectionOnControlC = value; }\r\n        }\r\n        private bool copySelectionOnControlC = true;\r\n\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the Control-C copy to clipboard functionality should use\r\n        /// the installed DragSource to create the data object that is placed onto the clipboard.\r\n        /// </summary>\r\n        /// <remarks>This is normally what is desired, unless a custom DragSource is installed \r\n        /// that does some very specialized drag-drop behaviour.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Should the Ctrl-C copy process use the DragSource to create the Clipboard data object?\"),\r\n        DefaultValue(true)]\r\n        public bool CopySelectionOnControlCUsesDragSource\r\n        {\r\n            get { return copySelectionOnControlCUsesDragSource; }\r\n            set { copySelectionOnControlCUsesDragSource = value; }\r\n        }\r\n        private bool copySelectionOnControlCUsesDragSource = true;\r\n\r\n        /// <summary>\r\n        /// Gets the list of decorations that will be drawn the ListView\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// Do not modify the contents of this list directly. Use the AddDecoration() and RemoveDecoration() methods.\r\n        /// </para>\r\n        /// <para>\r\n        /// A decoration scrolls with the list contents. An overlay is fixed in place.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false)]\r\n        protected IList<IDecoration> Decorations\r\n        {\r\n            get { return decorations; }\r\n        }\r\n        private readonly List<IDecoration> decorations = new();\r\n\r\n        /// <summary>\r\n        /// When owner drawing, this renderer will draw columns that do not have specific renderer\r\n        /// given to them\r\n        /// </summary>\r\n        /// <remarks>If you try to set this to null, it will revert to a HighlightTextRenderer</remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IRenderer DefaultRenderer\r\n        {\r\n            get { return defaultRenderer; }\r\n            set { defaultRenderer = value ?? new HighlightTextRenderer(); }\r\n        }\r\n        private IRenderer defaultRenderer = new HighlightTextRenderer();\r\n\r\n        /// <summary>\r\n        /// Get the renderer to be used to draw the given cell.\r\n        /// </summary>\r\n        /// <param name=\"model\">The row model for the row</param>\r\n        /// <param name=\"column\">The column to be drawn</param>\r\n        /// <returns>The renderer used for drawing a cell. Must not return null.</returns>\r\n        public IRenderer GetCellRenderer(object model, OLVColumn column)\r\n        {\r\n            IRenderer renderer = CellRendererGetter == null ? null : CellRendererGetter(model, column);\r\n            return renderer ?? column.Renderer ?? DefaultRenderer;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the style that will be applied to disabled items.\r\n        /// </summary>\r\n        /// <remarks>If this is not set explicitly, <see cref=\"ObjectListView.DefaultDisabledItemStyle\"/>  will be used.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"The style that will be applied to disabled items\"),\r\n        DefaultValue(null)]\r\n        public SimpleItemStyle DisabledItemStyle\r\n        {\r\n            get { return disabledItemStyle; }\r\n            set { disabledItemStyle = value; }\r\n        }\r\n        private SimpleItemStyle disabledItemStyle;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the list of model objects that are disabled.\r\n        /// Disabled objects cannot be selected or activated.\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IEnumerable DisabledObjects\r\n        {\r\n            get\r\n            {\r\n                return disabledObjects.Keys;\r\n            }\r\n            set\r\n            {\r\n                disabledObjects.Clear();\r\n                DisableObjects(value);\r\n            }\r\n        }\r\n        private readonly Hashtable disabledObjects = new();\r\n\r\n        /// <summary>\r\n        /// Is this given model object disabled?\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        public bool IsDisabled(object model)\r\n        {\r\n            return model != null && disabledObjects.ContainsKey(model);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Disable the given model object.\r\n        /// Disabled objects cannot be selected or activated.\r\n        /// </summary>\r\n        /// <param name=\"model\">Must not be null</param>\r\n        public void DisableObject(object model)\r\n        {\r\n            ArrayList list = new ArrayList();\r\n            list.Add(model);\r\n            DisableObjects(list);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Disable all the given model objects\r\n        /// </summary>\r\n        /// <param name=\"models\"></param>\r\n        public void DisableObjects(IEnumerable models)\r\n        {\r\n            if (models == null)\r\n                return;\r\n            ArrayList list = EnumerableToArray(models, false);\r\n            foreach (object model in list)\r\n            {\r\n                if (model == null)\r\n                    continue;\r\n\r\n                disabledObjects[model] = true;\r\n                int modelIndex = IndexOf(model);\r\n                if (modelIndex >= 0)\r\n                    NativeMethods.DeselectOneItem(this, modelIndex);\r\n            }\r\n            RefreshObjects(list);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Enable the given model object, so it can be selected and activated again.\r\n        /// </summary>\r\n        /// <param name=\"model\">Must not be null</param>\r\n        public void EnableObject(object model)\r\n        {\r\n            disabledObjects.Remove(model);\r\n            RefreshObject(model);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Enable all the given model objects\r\n        /// </summary>\r\n        /// <param name=\"models\"></param>\r\n        public void EnableObjects(IEnumerable models)\r\n        {\r\n            if (models == null)\r\n                return;\r\n            ArrayList list = EnumerableToArray(models, false);\r\n            foreach (object model in list)\r\n            {\r\n                if (model != null)\r\n                    disabledObjects.Remove(model);\r\n            }\r\n            RefreshObjects(list);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Forget all disabled objects. This does not trigger a redraw or rebuild\r\n        /// </summary>\r\n        protected void ClearDisabledObjects()\r\n        {\r\n            disabledObjects.Clear();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the object that controls how drags start from this control\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IDragSource DragSource\r\n        {\r\n            get { return dragSource; }\r\n            set { dragSource = value; }\r\n        }\r\n        private IDragSource dragSource;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the object that controls how drops are accepted and processed\r\n        /// by this ListView.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If the given sink is an instance of SimpleDropSink, then events from the drop sink\r\n        /// will be automatically forwarded to the ObjectListView (which means that handlers\r\n        /// for those event can be configured within the IDE).\r\n        /// </para>\r\n        /// <para>If this is set to null, the control will not accept drops.</para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IDropSink DropSink\r\n        {\r\n            get { return dropSink; }\r\n            set\r\n            {\r\n                if (dropSink == value)\r\n                    return;\r\n\r\n                // Stop listening for events on the old sink\r\n                if (dropSink is SimpleDropSink oldSink)\r\n                {\r\n                    oldSink.CanDrop -= new EventHandler<OlvDropEventArgs>(DropSinkCanDrop);\r\n                    oldSink.Dropped -= new EventHandler<OlvDropEventArgs>(DropSinkDropped);\r\n                    oldSink.ModelCanDrop -= new EventHandler<ModelDropEventArgs>(DropSinkModelCanDrop);\r\n                    oldSink.ModelDropped -= new EventHandler<ModelDropEventArgs>(DropSinkModelDropped);\r\n                }\r\n\r\n                dropSink = value;\r\n                AllowDrop = (value != null);\r\n                if (dropSink != null)\r\n                    dropSink.ListView = this;\r\n\r\n                // Start listening for events on the new sink\r\n                if (value is SimpleDropSink newSink)\r\n                {\r\n                    newSink.CanDrop += new EventHandler<OlvDropEventArgs>(DropSinkCanDrop);\r\n                    newSink.Dropped += new EventHandler<OlvDropEventArgs>(DropSinkDropped);\r\n                    newSink.ModelCanDrop += new EventHandler<ModelDropEventArgs>(DropSinkModelCanDrop);\r\n                    newSink.ModelDropped += new EventHandler<ModelDropEventArgs>(DropSinkModelDropped);\r\n                }\r\n            }\r\n        }\r\n        private IDropSink dropSink;\r\n\r\n        // Forward events from the drop sink to the control itself\r\n        private void DropSinkCanDrop(object sender, OlvDropEventArgs e) { OnCanDrop(e); }\r\n\r\n        private void DropSinkDropped(object sender, OlvDropEventArgs e) { OnDropped(e); }\r\n\r\n        private void DropSinkModelCanDrop(object sender, ModelDropEventArgs e) { OnModelCanDrop(e); }\r\n\r\n        private void DropSinkModelDropped(object sender, ModelDropEventArgs e) { OnModelDropped(e); }\r\n\r\n        /// <summary>\r\n        /// This registry decides what control should be used to edit what cells, based\r\n        /// on the type of the value in the cell.\r\n        /// </summary>\r\n        /// <see cref=\"EditorRegistry\"/>\r\n        /// <remarks>All instances of ObjectListView share the same editor registry.</remarks>\r\n// ReSharper disable FieldCanBeMadeReadOnly.Global\r\n        public static EditorRegistry EditorRegistry = new();\r\n        // ReSharper restore FieldCanBeMadeReadOnly.Global\r\n\r\n        /// <summary>\r\n        /// Gets or sets the text that should be shown when there are no items in this list view.\r\n        /// </summary>\r\n        /// <remarks>If the EmptyListMsgOverlay has been changed to something other than a TextOverlay,\r\n        /// this property does nothing</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"When the list has no items, show this message in the control\"),\r\n         DefaultValue(null),\r\n         Localizable(true)]\r\n        public virtual String EmptyListMsg\r\n        {\r\n            get\r\n            {\r\n                return EmptyListMsgOverlay is not TextOverlay overlay ? null : overlay.Text;\r\n            }\r\n            set\r\n            {\r\n                if (EmptyListMsgOverlay is TextOverlay overlay)\r\n                {\r\n                    overlay.Text = value;\r\n                    Invalidate();\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the font in which the List Empty message should be drawn\r\n        /// </summary>\r\n        /// <remarks>If the EmptyListMsgOverlay has been changed to something other than a TextOverlay,\r\n        /// this property does nothing</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"What font should the 'list empty' message be drawn in?\"),\r\n        DefaultValue(null)]\r\n        public virtual Font EmptyListMsgFont\r\n        {\r\n            get\r\n            {\r\n                return EmptyListMsgOverlay is not TextOverlay overlay ? null : overlay.Font;\r\n            }\r\n            set\r\n            {\r\n                if (EmptyListMsgOverlay is TextOverlay overlay)\r\n                    overlay.Font = value;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the font for the 'list empty' message or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual Font EmptyListMsgFontOrDefault\r\n        {\r\n            get\r\n            {\r\n                return EmptyListMsgFont ?? new Font(\"Tahoma\", 14);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the overlay responsible for drawing the List Empty msg.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IOverlay EmptyListMsgOverlay\r\n        {\r\n            get { return emptyListMsgOverlay; }\r\n            set\r\n            {\r\n                if (emptyListMsgOverlay != value)\r\n                {\r\n                    emptyListMsgOverlay = value;\r\n                    Invalidate();\r\n                }\r\n            }\r\n        }\r\n        private IOverlay emptyListMsgOverlay;\r\n\r\n        /// <summary>\r\n        /// Gets the collection of objects that survive any filtering that may be in place.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This collection is the result of filtering the current list of objects. \r\n        /// It is not a snapshot of the filtered list that was last used to build the control. \r\n        /// </para>\r\n        /// <para>\r\n        /// Normal warnings apply when using this with virtual lists. It will work, but it\r\n        /// may take a while.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IEnumerable FilteredObjects\r\n        {\r\n            get\r\n            {\r\n                if (UseFiltering)\r\n                    return FilterObjects(Objects, ModelFilter, ListFilter);\r\n\r\n                return Objects;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the strategy object that will be used to build the Filter menu\r\n        /// </summary>\r\n        /// <remarks>If this is null, no filter menu will be built.</remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public FilterMenuBuilder FilterMenuBuildStrategy\r\n        {\r\n            get { return filterMenuBuilder; }\r\n            set { filterMenuBuilder = value; }\r\n        }\r\n        private FilterMenuBuilder filterMenuBuilder = new();\r\n\r\n        /// <summary>\r\n        /// Gets or sets the row that has keyboard focus\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// Setting an object to be focused does *not* select it. If you want to select and focus a row,\r\n        /// use <see cref=\"SelectedObject\"/>.\r\n        /// </para>\r\n        /// <para>\r\n        /// This property is not generally used and is only useful in specialized situations.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual Object FocusedObject\r\n        {\r\n            get { return FocusedItem == null ? null : ((OLVListItem)FocusedItem).RowObject; }\r\n            set\r\n            {\r\n                OLVListItem item = ModelToItem(value);\r\n                if (item != null)\r\n                    item.Focused = true;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Hide the Groups collection so it's not visible in the Properties grid.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public new ListViewGroupCollection Groups\r\n        {\r\n            get { return base.Groups; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the image list from which group header will take their images\r\n        /// </summary>\r\n        /// <remarks>If this is not set, then group headers will not show any images.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The image list from which group header will take their images\"),\r\n         DefaultValue(null)]\r\n        public new ImageList GroupImageList\r\n        {\r\n            get { return groupImageList; }\r\n            set\r\n            {\r\n                groupImageList = value;\r\n                if (Created)\r\n                {\r\n                    NativeMethods.SetGroupImageList(this, value);\r\n                }\r\n            }\r\n        }\r\n        private ImageList groupImageList;\r\n\r\n        /// <summary>\r\n        /// Gets how the group label should be formatted when a group is empty or\r\n        /// contains more than one item\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// The given format string must have two placeholders:\r\n        /// <list type=\"bullet\">\r\n        /// <item><description>{0} - the original group title</description></item>\r\n        /// <item><description>{1} - the number of items in the group</description></item>\r\n        /// </list>\r\n        /// </remarks>\r\n        /// <example>\"{0} [{1} items]\"</example>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The format to use when suffixing item counts to group titles\"),\r\n         DefaultValue(null),\r\n         Localizable(true)]\r\n        public virtual string GroupWithItemCountFormat\r\n        {\r\n            get { return groupWithItemCountFormat; }\r\n            set { groupWithItemCountFormat = value; }\r\n        }\r\n        private string groupWithItemCountFormat;\r\n\r\n        /// <summary>\r\n        /// Return this.GroupWithItemCountFormat or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual string GroupWithItemCountFormatOrDefault\r\n        {\r\n            get\r\n            {\r\n                return String.IsNullOrEmpty(GroupWithItemCountFormat) ? \"{0} [{1} items]\" : GroupWithItemCountFormat;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets how the group label should be formatted when a group contains only a single item\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// The given format string must have two placeholders:\r\n        /// <list type=\"bullet\">\r\n        /// <item><description>{0} - the original group title</description></item>\r\n        /// <item><description>{1} - the number of items in the group (always 1)</description></item>\r\n        /// </list>\r\n        /// </remarks>\r\n        /// <example>\"{0} [{1} item]\"</example>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The format to use when suffixing item counts to group titles\"),\r\n         DefaultValue(null),\r\n         Localizable(true)]\r\n        public virtual string GroupWithItemCountSingularFormat\r\n        {\r\n            get { return groupWithItemCountSingularFormat; }\r\n            set { groupWithItemCountSingularFormat = value; }\r\n        }\r\n        private string groupWithItemCountSingularFormat;\r\n\r\n        /// <summary>\r\n        /// Gets GroupWithItemCountSingularFormat or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual string GroupWithItemCountSingularFormatOrDefault\r\n        {\r\n            get\r\n            {\r\n                return String.IsNullOrEmpty(GroupWithItemCountSingularFormat) ? \"{0} [{1} item]\" : GroupWithItemCountSingularFormat;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not the groups in this ObjectListView should be collapsible.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This feature only works under Vista and later.\r\n        /// </remarks>\r\n        [Browsable(true),\r\n         Category(\"ObjectListView\"),\r\n         Description(\"Should the groups in this control be collapsible (Vista and later only).\"),\r\n         DefaultValue(true)]\r\n        public bool HasCollapsibleGroups\r\n        {\r\n            get { return hasCollapsibleGroups; }\r\n            set { hasCollapsibleGroups = value; }\r\n        }\r\n        private bool hasCollapsibleGroups = true;\r\n\r\n        /// <summary>\r\n        /// Does this listview have a message that should be drawn when the list is empty?\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual bool HasEmptyListMsg\r\n        {\r\n            get { return !String.IsNullOrEmpty(EmptyListMsg); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get whether there are any overlays to be drawn\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public bool HasOverlays\r\n        {\r\n            get\r\n            {\r\n                return (Overlays.Count > 2 ||\r\n                    imageOverlay.Image != null ||\r\n                    !String.IsNullOrEmpty(textOverlay.Text));\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the header control for the ListView\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public HeaderControl HeaderControl\r\n        {\r\n            get { return headerControl ?? (headerControl = new HeaderControl(this)); }\r\n        }\r\n        private HeaderControl headerControl;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the font in which the text of the column headers will be drawn\r\n        /// </summary>\r\n        /// <remarks>Individual columns can override this through their HeaderFormatStyle property.</remarks>\r\n        [DefaultValue(null)]\r\n        [Browsable(false)]\r\n        [Obsolete(\"Use a HeaderFormatStyle instead\", false)]\r\n        public Font HeaderFont\r\n        {\r\n            get { return HeaderFormatStyle == null ? null : HeaderFormatStyle.Normal.Font; }\r\n            set\r\n            {\r\n                if (value == null && HeaderFormatStyle == null)\r\n                    return;\r\n\r\n                if (HeaderFormatStyle == null)\r\n                    HeaderFormatStyle = new HeaderFormatStyle();\r\n\r\n                HeaderFormatStyle.SetFont(value);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the style that will be used to draw the columm headers of the listview\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This is only used when HeaderUsesThemes is false.\r\n        /// </para>\r\n        /// <para>\r\n        /// Individual columns can override this through their HeaderFormatStyle property.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"What style will be used to draw the control's header\"),\r\n         DefaultValue(null)]\r\n        public HeaderFormatStyle HeaderFormatStyle\r\n        {\r\n            get { return headerFormatStyle; }\r\n            set { headerFormatStyle = value; }\r\n        }\r\n        private HeaderFormatStyle headerFormatStyle;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the maximum height of the header. -1 means no maximum.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"What is the maximum height of the header? -1 means no maximum\"),\r\n         DefaultValue(-1)]\r\n        public int HeaderMaximumHeight\r\n        {\r\n            get { return headerMaximumHeight; }\r\n            set { headerMaximumHeight = value; }\r\n        }\r\n        private int headerMaximumHeight = -1;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the minimum height of the header. -1 means no minimum.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"What is the minimum height of the header? -1 means no minimum\"),\r\n         DefaultValue(-1)]\r\n        public int HeaderMinimumHeight\r\n        {\r\n            get { return headerMinimumHeight; }\r\n            set { headerMinimumHeight = value; }\r\n        }\r\n        private int headerMinimumHeight = -1;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the header will be drawn strictly according to the OS's theme. \r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If this is set to true, the header will be rendered completely by the system, without\r\n        /// any of ObjectListViews fancy processing -- no images in header, no filter indicators,\r\n        /// no word wrapping, no header styling, no checkboxes.\r\n        /// </para>\r\n        /// <para>If this is set to false, ObjectListView will render the header as it thinks best.\r\n        /// If no special features are required, then ObjectListView will delegate rendering to the OS.\r\n        /// Otherwise, ObjectListView will draw the header according to the configuration settings.\r\n        /// </para>\r\n        /// <para>\r\n        /// The effect of not being themed will be different from OS to OS. At\r\n        /// very least, the sort indicator will not be standard. \r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will the column headers be drawn strictly according to OS theme?\"),\r\n         DefaultValue(false)]\r\n        public bool HeaderUsesThemes\r\n        {\r\n            get { return headerUsesThemes; }\r\n            set { headerUsesThemes = value; }\r\n        }\r\n        private bool headerUsesThemes;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the whether the text in the header will be word wrapped.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>Line breaks will be applied between words. Words that are too long\r\n        /// will still be ellipsed.</para>\r\n        /// <para>\r\n        /// As with all settings that make the header look different, HeaderUsesThemes must be set to false, otherwise\r\n        /// the OS will be responsible for drawing the header, and it does not allow word wrapped text.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will the text of the column headers be word wrapped?\"),\r\n         DefaultValue(false)]\r\n        public bool HeaderWordWrap\r\n        {\r\n            get { return headerWordWrap; }\r\n            set\r\n            {\r\n                headerWordWrap = value;\r\n                if (headerControl != null)\r\n                    headerControl.WordWrap = value;\r\n            }\r\n        }\r\n        private bool headerWordWrap;\r\n\r\n        /// <summary>\r\n        /// Gets the tool tip that shows tips for the column headers\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public ToolTipControl HeaderToolTip\r\n        {\r\n            get\r\n            {\r\n                return HeaderControl.ToolTip;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the index of the row that the mouse is currently over\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual int HotRowIndex\r\n        {\r\n            get { return hotRowIndex; }\r\n            protected set { hotRowIndex = value; }\r\n        }\r\n        private int hotRowIndex;\r\n\r\n        /// <summary>\r\n        /// Gets the index of the subitem that the mouse is currently over\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual int HotColumnIndex\r\n        {\r\n            get { return hotColumnIndex; }\r\n            protected set { hotColumnIndex = value; }\r\n        }\r\n        private int hotColumnIndex;\r\n\r\n        /// <summary>\r\n        /// Gets the part of the item/subitem that the mouse is currently over\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual HitTestLocation HotCellHitLocation\r\n        {\r\n            get { return hotCellHitLocation; }\r\n            protected set { hotCellHitLocation = value; }\r\n        }\r\n        private HitTestLocation hotCellHitLocation;\r\n\r\n        /// <summary>\r\n        /// Gets an extended indication of the part of item/subitem/group that the mouse is currently over\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual HitTestLocationEx HotCellHitLocationEx\r\n        {\r\n            get { return hotCellHitLocationEx; }\r\n            protected set { hotCellHitLocationEx = value; }\r\n        }\r\n        private HitTestLocationEx hotCellHitLocationEx;\r\n\r\n        /// <summary>\r\n        /// Gets the group that the mouse is over\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public OLVGroup HotGroup\r\n        {\r\n            get { return hotGroup; }\r\n            internal set { hotGroup = value; }\r\n        }\r\n        private OLVGroup hotGroup;\r\n\r\n        /// <summary>\r\n        /// The index of the item that is 'hot', i.e. under the cursor. -1 means no item.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         Obsolete(\"Use HotRowIndex instead\", false)]\r\n        public virtual int HotItemIndex\r\n        {\r\n            get { return HotRowIndex; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// What sort of formatting should be applied to the row under the cursor?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This only takes effect when UseHotItem is true.\r\n        /// </para>\r\n        /// <para>If the style has an overlay, it must be set\r\n        /// *before* assigning it to this property. Adding it afterwards will be ignored. </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How should the row under the cursor be highlighted\"),\r\n         DefaultValue(null)]\r\n        public virtual HotItemStyle HotItemStyle\r\n        {\r\n            get { return hotItemStyle; }\r\n            set\r\n            {\r\n                if (HotItemStyle != null)\r\n                    RemoveOverlay(HotItemStyle.Overlay);\r\n                hotItemStyle = value;\r\n                if (HotItemStyle != null)\r\n                    AddOverlay(HotItemStyle.Overlay);\r\n            }\r\n        }\r\n        private HotItemStyle hotItemStyle;\r\n\r\n        /// <summary>\r\n        /// Gets the installed hot item style or a reasonable default.\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual HotItemStyle HotItemStyleOrDefault\r\n        {\r\n            get { return HotItemStyle ?? DefaultHotItemStyle; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// What sort of formatting should be applied to hyperlinks?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How should hyperlinks be drawn\"),\r\n         DefaultValue(null)]\r\n        public virtual HyperlinkStyle HyperlinkStyle\r\n        {\r\n            get { return hyperlinkStyle; }\r\n            set { hyperlinkStyle = value; }\r\n        }\r\n        private HyperlinkStyle hyperlinkStyle;\r\n\r\n        /// <summary>\r\n        /// What color should be used for the background of selected rows?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The background of selected rows when the control is owner drawn\"),\r\n         DefaultValue(typeof(Color), \"\")]\r\n        public virtual Color SelectedBackColor\r\n        {\r\n            get { return selectedBackColor; }\r\n            set { selectedBackColor = value; }\r\n        }\r\n        private Color selectedBackColor = Color.Empty;\r\n\r\n        /// <summary>\r\n        /// Return the color should be used for the background of selected rows or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual Color SelectedBackColorOrDefault\r\n        {\r\n            get\r\n            {\r\n                return SelectedBackColor.IsEmpty ? SystemColors.Highlight : SelectedBackColor;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// What color should be used for the foreground of selected rows?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The foreground color of selected rows (when the control is owner drawn)\"),\r\n         DefaultValue(typeof(Color), \"\")]\r\n        public virtual Color SelectedForeColor\r\n        {\r\n            get { return selectedForeColor; }\r\n            set { selectedForeColor = value; }\r\n        }\r\n        private Color selectedForeColor = Color.Empty;\r\n\r\n        /// <summary>\r\n        /// Return the color should be used for the foreground of selected rows or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual Color SelectedForeColorOrDefault\r\n        {\r\n            get\r\n            {\r\n                return SelectedForeColor.IsEmpty ? SystemColors.HighlightText : SelectedForeColor;\r\n            }\r\n        }\r\n\r\n        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        [Obsolete(\"Use SelectedBackColor instead\")]\r\n        public virtual Color HighlightBackgroundColor { get { return SelectedBackColor; } set { SelectedBackColor = value; } }\r\n\r\n        [Obsolete(\"Use SelectedBackColorOrDefault instead\")]\r\n        public virtual Color HighlightBackgroundColorOrDefault { get { return SelectedBackColorOrDefault; } }\r\n\r\n        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        [Obsolete(\"Use SelectedForeColor instead\")]\r\n        public virtual Color HighlightForegroundColor { get { return SelectedForeColor; } set { SelectedForeColor = value; } }\r\n\r\n        [Obsolete(\"Use SelectedForeColorOrDefault instead\")]\r\n        public virtual Color HighlightForegroundColorOrDefault { get { return SelectedForeColorOrDefault; } }\r\n\r\n        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        [Obsolete(\"Use UnfocusedSelectedBackColor instead\")]\r\n        public virtual Color UnfocusedHighlightBackgroundColor { get { return UnfocusedSelectedBackColor; } set { UnfocusedSelectedBackColor = value; } }\r\n\r\n        [Obsolete(\"Use UnfocusedSelectedBackColorOrDefault instead\")]\r\n        public virtual Color UnfocusedHighlightBackgroundColorOrDefault { get { return UnfocusedSelectedBackColorOrDefault; } }\r\n\r\n        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        [Obsolete(\"Use UnfocusedSelectedForeColor instead\")]\r\n        public virtual Color UnfocusedHighlightForegroundColor { get { return UnfocusedSelectedForeColor; } set { UnfocusedSelectedForeColor = value; } }\r\n\r\n        [Obsolete(\"Use UnfocusedSelectedForeColorOrDefault instead\")]\r\n        public virtual Color UnfocusedHighlightForegroundColorOrDefault { get { return UnfocusedSelectedForeColorOrDefault; } }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not hidden columns should be included in the text representation\r\n        /// of rows that are copied or dragged to another application. If this is false (the default),\r\n        /// only visible columns will be included.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"When rows are copied or dragged, will data in hidden columns be included in the text? If this is false, only visible columns will be included.\"),\r\n        DefaultValue(false)]\r\n        public virtual bool IncludeHiddenColumnsInDataTransfer\r\n        {\r\n            get { return includeHiddenColumnsInDataTransfer; }\r\n            set { includeHiddenColumnsInDataTransfer = value; }\r\n        }\r\n        private bool includeHiddenColumnsInDataTransfer;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not hidden columns should be included in the text representation\r\n        /// of rows that are copied or dragged to another application. If this is false (the default),\r\n        /// only visible columns will be included.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"When rows are copied, will column headers be in the text?.\"),\r\n        DefaultValue(false)]\r\n        public virtual bool IncludeColumnHeadersInCopy\r\n        {\r\n            get { return includeColumnHeadersInCopy; }\r\n            set { includeColumnHeadersInCopy = value; }\r\n        }\r\n        private bool includeColumnHeadersInCopy;\r\n\r\n        /// <summary>\r\n        /// Return true if a cell edit operation is currently happening\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual bool IsCellEditing\r\n        {\r\n            get { return cellEditor != null; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return true if the ObjectListView is being used within the development environment.\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual bool IsDesignMode\r\n        {\r\n            get { return DesignMode; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether or not the current list is filtering its contents\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual bool IsFiltering\r\n        {\r\n            get { return UseFiltering && (ModelFilter != null || ListFilter != null); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// When the user types into a list, should the values in the current sort column be searched to find a match?\r\n        /// If this is false, the primary column will always be used regardless of the sort column.\r\n        /// </summary>\r\n        /// <remarks>When this is true, the behavior is like that of ITunes.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"When the user types into a list, should the values in the current sort column be searched to find a match?\"),\r\n        DefaultValue(true)]\r\n        public virtual bool IsSearchOnSortColumn\r\n        {\r\n            get { return isSearchOnSortColumn; }\r\n            set { isSearchOnSortColumn = value; }\r\n        }\r\n        private bool isSearchOnSortColumn = true;\r\n\r\n        /// <summary>\r\n        /// Gets or sets if this control will use a SimpleDropSink to receive drops\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// Setting this replaces any previous DropSink.\r\n        /// </para>\r\n        /// <para>\r\n        /// After setting this to true, the SimpleDropSink will still need to be configured\r\n        /// to say when it can accept drops and what should happen when something is dropped.\r\n        /// The need to do these things makes this property mostly useless :(\r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Should this control will use a SimpleDropSink to receive drops.\"),\r\n        DefaultValue(false)]\r\n        public virtual bool IsSimpleDropSink\r\n        {\r\n            get { return DropSink != null; }\r\n            set\r\n            {\r\n                DropSink = value ? new SimpleDropSink() : null;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets if this control will use a SimpleDragSource to initiate drags\r\n        /// </summary>\r\n        /// <remarks>Setting this replaces any previous DragSource</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Should this control use a SimpleDragSource to initiate drags out from this control\"),\r\n        DefaultValue(false)]\r\n        public virtual bool IsSimpleDragSource\r\n        {\r\n            get { return DragSource != null; }\r\n            set\r\n            {\r\n                DragSource = value ? new SimpleDragSource() : null;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Hide the Items collection so it's not visible in the Properties grid.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public new ListViewItemCollection Items\r\n        {\r\n            get { return base.Items; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// This renderer draws the items when in the list is in non-details view.\r\n        /// In details view, the renderers for the individuals columns are responsible.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"The owner drawn renderer that draws items when the list is in non-Details view.\"),\r\n        DefaultValue(null)]\r\n        public IRenderer ItemRenderer\r\n        {\r\n            get { return itemRenderer; }\r\n            set { itemRenderer = value; }\r\n        }\r\n        private IRenderer itemRenderer;\r\n\r\n        /// <summary>\r\n        /// Which column did we last sort by\r\n        /// </summary>\r\n        /// <remarks>This is an alias for PrimarySortColumn</remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual OLVColumn LastSortColumn\r\n        {\r\n            get { return PrimarySortColumn; }\r\n            set { PrimarySortColumn = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Which direction did we last sort\r\n        /// </summary>\r\n        /// <remarks>This is an alias for PrimarySortOrder</remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual SortOrder LastSortOrder\r\n        {\r\n            get { return PrimarySortOrder; }\r\n            set { PrimarySortOrder = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or  sets the filter that is applied to our whole list of objects.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// The list is updated immediately to reflect this filter. \r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IListFilter ListFilter\r\n        {\r\n            get { return listFilter; }\r\n            set\r\n            {\r\n                listFilter = value;\r\n                if (UseFiltering)\r\n                    UpdateFiltering();\r\n            }\r\n        }\r\n        private IListFilter listFilter;\r\n\r\n        /// <summary>\r\n        /// Gets or  sets the filter that is applied to each model objects in the list\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>You may want to consider using <see cref=\"AdditionalFilter\"/> instead of this property,\r\n        /// since AdditionalFilter combines with column filtering at runtime. Setting this property simply\r\n        /// replaces any column filter the user may have given.</para>\r\n        /// <para>\r\n        /// The list is updated immediately to reflect this filter. \r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IModelFilter ModelFilter\r\n        {\r\n            get { return modelFilter; }\r\n            set\r\n            {\r\n                modelFilter = value;\r\n                NotifyNewModelFilter();\r\n                if (UseFiltering)\r\n                {\r\n                    UpdateFiltering();\r\n\r\n                    // When the filter changes, it's likely/possible that the selection has also changed.\r\n                    // It's expensive to see if the selection has actually changed (for large virtual lists),\r\n                    // so we just fake a selection changed event, just in case. SF #144\r\n                    OnSelectedIndexChanged(EventArgs.Empty);\r\n                }\r\n            }\r\n        }\r\n        private IModelFilter modelFilter;\r\n\r\n        /// <summary>\r\n        /// Gets the hit test info last time the mouse was moved.\r\n        /// </summary>\r\n        /// <remarks>Useful for hot item processing.</remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual OlvListViewHitTestInfo MouseMoveHitTest\r\n        {\r\n            get { return mouseMoveHitTest; }\r\n            private set { mouseMoveHitTest = value; }\r\n        }\r\n        private OlvListViewHitTestInfo mouseMoveHitTest;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the list of groups shown by the listview.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This property does not work like the .NET Groups property. It should\r\n        /// be treated as a read-only property.\r\n        /// Changes made to the list are NOT reflected in the ListView itself -- it is pointless to add\r\n        /// or remove groups to/from this list. Such modifications will do nothing.\r\n        /// To do such things, you must listen for\r\n        /// BeforeCreatingGroups or AboutToCreateGroups events, and change the list of\r\n        /// groups in those events.\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IList<OLVGroup> OLVGroups\r\n        {\r\n            get { return olvGroups; }\r\n            set { olvGroups = value; }\r\n        }\r\n        private IList<OLVGroup> olvGroups;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the collection of OLVGroups that are collapsed.\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IEnumerable<OLVGroup> CollapsedGroups\r\n        {\r\n            get\r\n            {\r\n                if (OLVGroups != null)\r\n                {\r\n                    foreach (OLVGroup group in OLVGroups)\r\n                    {\r\n                        if (group.Collapsed)\r\n                            yield return group;\r\n                    }\r\n                }\r\n            }\r\n            set\r\n            {\r\n                if (OLVGroups == null)\r\n                    return;\r\n\r\n                Hashtable shouldCollapse = new Hashtable();\r\n                if (value != null)\r\n                {\r\n                    foreach (OLVGroup group in value)\r\n                        shouldCollapse[group.Key] = true;\r\n                }\r\n                foreach (OLVGroup group in OLVGroups)\r\n                {\r\n                    group.Collapsed = shouldCollapse.ContainsKey(group.Key);\r\n                }\r\n\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the user wants to owner draw the header control\r\n        /// themselves. If this is false (the default), ObjectListView will use\r\n        /// custom drawing to render the header, if needed.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If you listen for the DrawColumnHeader event, you need to set this to true,\r\n        /// otherwise your event handler will not be called.\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the DrawColumnHeader event be triggered\"),\r\n         DefaultValue(false)]\r\n        public bool OwnerDrawnHeader\r\n        {\r\n            get { return ownerDrawnHeader; }\r\n            set { ownerDrawnHeader = value; }\r\n        }\r\n        private bool ownerDrawnHeader;\r\n\r\n        /// <summary>\r\n        /// Get/set the collection of objects that this list will show\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// The contents of the control will be updated immediately after setting this property.\r\n        /// </para>\r\n        /// <para>This method preserves selection, if possible. Use <see cref=\"SetObjects(IEnumerable, bool)\"/> if\r\n        /// you do not want to preserve the selection. Preserving selection is the slowest part of this\r\n        /// code and performance is O(n) where n is the number of selected rows.</para>\r\n        /// <para>This method is not thread safe.</para>\r\n        /// <para>The property DOES work on virtual lists: setting is problem-free, but if you try to get it\r\n        /// and the list has 10 million objects, it may take some time to return.</para>\r\n        /// <para>This collection is unfiltered. Use <see cref=\"FilteredObjects\"/> to access just those objects\r\n        /// that survive any installed filters.</para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IEnumerable Objects\r\n        {\r\n            get { return objects; }\r\n            set { SetObjects(value, true); }\r\n        }\r\n        private IEnumerable objects;\r\n\r\n        /// <summary>\r\n        /// Gets the collection of objects that will be considered when creating clusters\r\n        /// (which are used to generate Excel-like column filters)\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IEnumerable ObjectsForClustering\r\n        {\r\n            get { return Objects; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the image that will be drawn over the top of the ListView\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The image that will be drawn over the top of the ListView\"),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]\r\n        public ImageOverlay OverlayImage\r\n        {\r\n            get { return imageOverlay; }\r\n            set\r\n            {\r\n                if (imageOverlay == value)\r\n                    return;\r\n\r\n                RemoveOverlay(imageOverlay);\r\n                imageOverlay = value;\r\n                AddOverlay(imageOverlay);\r\n            }\r\n        }\r\n        private ImageOverlay imageOverlay;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the text that will be drawn over the top of the ListView\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The text that will be drawn over the top of the ListView\"),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]\r\n        public TextOverlay OverlayText\r\n        {\r\n            get { return textOverlay; }\r\n            set\r\n            {\r\n                if (textOverlay == value)\r\n                    return;\r\n\r\n                RemoveOverlay(textOverlay);\r\n                textOverlay = value;\r\n                AddOverlay(textOverlay);\r\n            }\r\n        }\r\n        private TextOverlay textOverlay;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the transparency of all the overlays.\r\n        /// 0 is completely transparent, 255 is completely opaque.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This is obsolete. Use Transparency on each overlay.\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public int OverlayTransparency\r\n        {\r\n            get { return overlayTransparency; }\r\n            set { overlayTransparency = Math.Min(255, Math.Max(0, value)); }\r\n        }\r\n        private int overlayTransparency = 128;\r\n\r\n        /// <summary>\r\n        /// Gets the list of overlays that will be drawn on top of the ListView\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// You can add new overlays and remove overlays that you have added, but\r\n        /// don't mess with the overlays that you didn't create.\r\n        /// </remarks>\r\n        [Browsable(false)]\r\n        protected IList<IOverlay> Overlays\r\n        {\r\n            get { return overlays; }\r\n        }\r\n        private readonly List<IOverlay> overlays = new();\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the ObjectListView will be owner drawn. Defaults to true.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// When this is true, all of ObjectListView's neat features are available.\r\n        /// </para>\r\n        /// <para>We have to reimplement this property, even though we just call the base\r\n        /// property, in order to change the [DefaultValue] to true.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"Appearance\"),\r\n         Description(\"Should the ListView do its own rendering\"),\r\n         DefaultValue(true)]\r\n        public new bool OwnerDraw\r\n        {\r\n            get { return base.OwnerDraw; }\r\n            set { base.OwnerDraw = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not primary checkboxes will persistent their values across list rebuild\r\n        /// and filtering operations.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This property is only useful when you don't explicitly set CheckStateGetter/Putter.\r\n        /// If you use CheckStateGetter/Putter, the checkedness of a row will already be persisted\r\n        /// by those methods. \r\n        /// </para>\r\n        /// <para>This defaults to true. If this is false, checkboxes will lose their values when the\r\n        /// list if rebuild or filtered.\r\n        ///  If you set it to false on virtual lists,\r\n        /// you have to install CheckStateGetter/Putters.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will primary checkboxes persistent their values across list rebuilds\"),\r\n         DefaultValue(true)]\r\n        public virtual bool PersistentCheckBoxes\r\n        {\r\n            get { return persistentCheckBoxes; }\r\n            set\r\n            {\r\n                if (persistentCheckBoxes == value)\r\n                    return;\r\n                persistentCheckBoxes = value;\r\n                ClearPersistentCheckState();\r\n            }\r\n        }\r\n        private bool persistentCheckBoxes = true;\r\n\r\n        /// <summary>\r\n        /// Gets or sets a dictionary that remembers the check state of model objects\r\n        /// </summary>\r\n        /// <remarks>This is used when PersistentCheckBoxes is true and for virtual lists.</remarks>\r\n        protected Dictionary<Object, CheckState> CheckStateMap\r\n        {\r\n            get { return checkStateMap ?? (checkStateMap = new Dictionary<object, CheckState>()); }\r\n            set { checkStateMap = value; }\r\n        }\r\n        private Dictionary<Object, CheckState> checkStateMap;\r\n\r\n        /// <summary>\r\n        /// Get checked objects even if they are filtered and currently not visible on the list. \r\n        /// This works only when PersistentCheckBoxes is true and for virtual lists.\r\n        /// </summary>\r\n        public IEnumerable GetAllObjectsWithMappedCheckState(CheckState state)\r\n        {\r\n            return CheckStateMap.Where(x => x.Value == state).Select(x => x.Key);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Which column did we last sort by\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual OLVColumn PrimarySortColumn\r\n        {\r\n            get { return primarySortColumn; }\r\n            set\r\n            {\r\n                primarySortColumn = value;\r\n                if (TintSortColumn)\r\n                    SelectedColumn = value;\r\n            }\r\n        }\r\n        private OLVColumn primarySortColumn;\r\n\r\n        /// <summary>\r\n        /// Which direction did we last sort\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual SortOrder PrimarySortOrder\r\n        {\r\n            get { return primarySortOrder; }\r\n            set { primarySortOrder = value; }\r\n        }\r\n        private SortOrder primarySortOrder;\r\n\r\n        /// <summary>\r\n        /// Gets or sets if non-editable checkboxes are drawn as disabled. Default is false.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>This only has effect in owner drawn mode.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should non-editable checkboxes be drawn as disabled?\"),\r\n         DefaultValue(false)]\r\n        public virtual bool RenderNonEditableCheckboxesAsDisabled\r\n        {\r\n            get { return renderNonEditableCheckboxesAsDisabled; }\r\n            set { renderNonEditableCheckboxesAsDisabled = value; }\r\n        }\r\n        private bool renderNonEditableCheckboxesAsDisabled;\r\n\r\n        /// <summary>\r\n        /// Specify the height of each row in the control in pixels.\r\n        /// </summary>\r\n        /// <remarks><para>The row height in a listview is normally determined by the font size and the small image list size.\r\n        /// This setting allows that calculation to be overridden (within reason: you still cannot set the line height to be\r\n        /// less than the line height of the font used in the control). </para>\r\n        /// <para>Setting it to -1 means use the normal calculation method.</para>\r\n        /// <para><bold>This feature is experiemental!</bold> Strange things may happen to your program,\r\n        /// your spouse or your pet if you use it.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Specify the height of each row in pixels. -1 indicates default height\"),\r\n         DefaultValue(-1)]\r\n        public virtual int RowHeight\r\n        {\r\n            get { return rowHeight; }\r\n            set\r\n            {\r\n                if (value < 1)\r\n                    rowHeight = -1;\r\n                else\r\n                    rowHeight = value;\r\n                if (DesignMode)\r\n                    return;\r\n                SetupBaseImageList();\r\n                if (CheckBoxes)\r\n                    InitializeStateImageList();\r\n            }\r\n        }\r\n        private int rowHeight = -1;\r\n\r\n        /// <summary>\r\n        /// How many pixels high is each row?\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual int RowHeightEffective\r\n        {\r\n            get\r\n            {\r\n                switch (View)\r\n                {\r\n                    case View.List:\r\n                    case View.SmallIcon:\r\n                    case View.Details:\r\n                        return Math.Max(SmallImageSize.Height, Font.Height);\r\n\r\n                    case View.Tile:\r\n                        return TileSize.Height;\r\n\r\n                    case View.LargeIcon:\r\n                        if (LargeImageList == null)\r\n                            return Font.Height;\r\n\r\n                        return Math.Max(LargeImageList.ImageSize.Height, Font.Height);\r\n\r\n                    default:\r\n                        // This should never happen\r\n                        return 0;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// How many rows appear on each page of this control\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual int RowsPerPage\r\n        {\r\n            get\r\n            {\r\n                return NativeMethods.GetCountPerPage(this);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get/set the column that will be used to resolve comparisons that are equal when sorting.\r\n        /// </summary>\r\n        /// <remarks>There is no user interface for this setting. It must be set programmatically.</remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual OLVColumn SecondarySortColumn\r\n        {\r\n            get { return secondarySortColumn; }\r\n            set { secondarySortColumn = value; }\r\n        }\r\n        private OLVColumn secondarySortColumn;\r\n\r\n        /// <summary>\r\n        /// When the SecondarySortColumn is used, in what order will it compare results?\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual SortOrder SecondarySortOrder\r\n        {\r\n            get { return secondarySortOrder; }\r\n            set { secondarySortOrder = value; }\r\n        }\r\n        private SortOrder secondarySortOrder = SortOrder.None;\r\n\r\n        /// <summary>\r\n        /// Gets or sets if all rows should be selected when the user presses Ctrl-A\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Should the control select all rows when the user presses Ctrl-A?\"),\r\n        DefaultValue(true)]\r\n        public virtual bool SelectAllOnControlA\r\n        {\r\n            get { return selectAllOnControlA; }\r\n            set { selectAllOnControlA = value; }\r\n        }\r\n        private bool selectAllOnControlA = true;\r\n\r\n        /// <summary>\r\n        /// When the user right clicks on the column headers, should a menu be presented which will allow\r\n        /// them to choose which columns will be shown in the view?\r\n        /// </summary>\r\n        /// <remarks>This is just a compatibility wrapper for the SelectColumnsOnRightClickBehaviour\r\n        /// property.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"When the user right clicks on the column headers, should a menu be presented which will allow them to choose which columns will be shown in the view?\"),\r\n        DefaultValue(true)]\r\n        public virtual bool SelectColumnsOnRightClick\r\n        {\r\n            get { return SelectColumnsOnRightClickBehaviour != ColumnSelectBehaviour.None; }\r\n            set\r\n            {\r\n                if (value)\r\n                {\r\n                    if (SelectColumnsOnRightClickBehaviour == ColumnSelectBehaviour.None)\r\n                        SelectColumnsOnRightClickBehaviour = ColumnSelectBehaviour.InlineMenu;\r\n                }\r\n                else\r\n                {\r\n                    SelectColumnsOnRightClickBehaviour = ColumnSelectBehaviour.None;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets how the user will be able to select columns when the header is right clicked\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"When the user right clicks on the column headers, how will the user be able to select columns?\"),\r\n        DefaultValue(ColumnSelectBehaviour.InlineMenu)]\r\n        public virtual ColumnSelectBehaviour SelectColumnsOnRightClickBehaviour\r\n        {\r\n            get { return selectColumnsOnRightClickBehaviour; }\r\n            set { selectColumnsOnRightClickBehaviour = value; }\r\n        }\r\n        private ColumnSelectBehaviour selectColumnsOnRightClickBehaviour = ColumnSelectBehaviour.InlineMenu;\r\n\r\n        /// <summary>\r\n        /// When the column select menu is open, should it stay open after an item is selected?\r\n        /// Staying open allows the user to turn more than one column on or off at a time.\r\n        /// </summary>\r\n        /// <remarks>This only works when SelectColumnsOnRightClickBehaviour is set to InlineMenu.\r\n        /// It has no effect when the behaviour is set to SubMenu.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"When the column select inline menu is open, should it stay open after an item is selected?\"),\r\n        DefaultValue(true)]\r\n        public virtual bool SelectColumnsMenuStaysOpen\r\n        {\r\n            get { return selectColumnsMenuStaysOpen; }\r\n            set { selectColumnsMenuStaysOpen = value; }\r\n        }\r\n        private bool selectColumnsMenuStaysOpen = true;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the column that is drawn with a slight tint.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If TintSortColumn is true, the sort column will automatically\r\n        /// be made the selected column.\r\n        /// </para>\r\n        /// <para>\r\n        /// The colour of the tint is controlled by SelectedColumnTint.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public OLVColumn SelectedColumn\r\n        {\r\n            get { return selectedColumn; }\r\n            set\r\n            {\r\n                selectedColumn = value;\r\n                if (value == null)\r\n                {\r\n                    RemoveDecoration(selectedColumnDecoration);\r\n                }\r\n                else\r\n                {\r\n                    if (!HasDecoration(selectedColumnDecoration))\r\n                        AddDecoration(selectedColumnDecoration);\r\n                }\r\n            }\r\n        }\r\n        private OLVColumn selectedColumn;\r\n        private readonly TintedColumnDecoration selectedColumnDecoration = new();\r\n\r\n        /// <summary>\r\n        /// Gets or sets the decoration that will be drawn on all selected rows\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IDecoration SelectedRowDecoration\r\n        {\r\n            get { return selectedRowDecoration; }\r\n            set { selectedRowDecoration = value; }\r\n        }\r\n        private IDecoration selectedRowDecoration;\r\n\r\n        /// <summary>\r\n        /// What color should be used to tint the selected column?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// The tint color must be alpha-blendable, so if the given color is solid\r\n        /// (i.e. alpha = 255), it will be changed to have a reasonable alpha value.\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The color that will be used to tint the selected column\"),\r\n         DefaultValue(typeof(Color), \"\")]\r\n        public virtual Color SelectedColumnTint\r\n        {\r\n            get { return selectedColumnTint; }\r\n            set\r\n            {\r\n                selectedColumnTint = value.A == 255 ? Color.FromArgb(15, value) : value;\r\n                selectedColumnDecoration.Tint = selectedColumnTint;\r\n            }\r\n        }\r\n        private Color selectedColumnTint = Color.Empty;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the index of the row that is currently selected. \r\n        /// When getting the index, if no row is selected,or more than one is selected, return -1.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual int SelectedIndex\r\n        {\r\n            get { return SelectedIndices.Count == 1 ? SelectedIndices[0] : -1; }\r\n            set\r\n            {\r\n                SelectedIndices.Clear();\r\n                if (value >= 0 && value < Items.Count)\r\n                    SelectedIndices.Add(value);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the ListViewItem that is currently selected . If no row is selected, or more than one is selected, return null.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual OLVListItem SelectedItem\r\n        {\r\n            get\r\n            {\r\n                return SelectedIndices.Count == 1 ? GetItem(SelectedIndices[0]) : null;\r\n            }\r\n            set\r\n            {\r\n                SelectedIndices.Clear();\r\n                if (value != null)\r\n                    SelectedIndices.Add(value.Index);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the model object from the currently selected row, if there is only one row selected. \r\n        /// If no row is selected, or more than one is selected, returns null.\r\n        /// When setting, this will select the row that is displaying the given model object and focus on it. \r\n        /// All other rows are deselected.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual Object SelectedObject\r\n        {\r\n            get\r\n            {\r\n                return SelectedIndices.Count == 1 ? GetModelObject(SelectedIndices[0]) : null;\r\n            }\r\n            set\r\n            {\r\n                // If the given model is already selected, don't do anything else (prevents an flicker)\r\n                object selectedObject = SelectedObject;\r\n                if (selectedObject != null && selectedObject.Equals(value))\r\n                    return;\r\n\r\n                SelectedIndices.Clear();\r\n                SelectObject(value, true);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get the model objects from the currently selected rows. If no row is selected, the returned List will be empty.\r\n        /// When setting this value, select the rows that is displaying the given model objects. All other rows are deselected.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IList SelectedObjects\r\n        {\r\n            get\r\n            {\r\n                ArrayList list = new ArrayList();\r\n                foreach (int index in SelectedIndices)\r\n                    list.Add(GetModelObject(index));\r\n                return list;\r\n            }\r\n            set\r\n            {\r\n                SelectedIndices.Clear();\r\n                SelectObjects(value);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// When the user right clicks on the column headers, should a menu be presented which will allow\r\n        /// them to choose common tasks to perform on the listview?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"When the user right clicks on the column headers, should a menu be presented which will allow them to perform common tasks on the listview?\"),\r\n        DefaultValue(false)]\r\n        public virtual bool ShowCommandMenuOnRightClick\r\n        {\r\n            get { return showCommandMenuOnRightClick; }\r\n            set { showCommandMenuOnRightClick = value; }\r\n        }\r\n        private bool showCommandMenuOnRightClick;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this ObjectListView will show Excel like filtering\r\n        /// menus when the header control is right clicked\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"If this is true, right clicking on a column header will show a Filter menu option\"),\r\n         DefaultValue(true)]\r\n        public bool ShowFilterMenuOnRightClick\r\n        {\r\n            get { return showFilterMenuOnRightClick; }\r\n            set { showFilterMenuOnRightClick = value; }\r\n        }\r\n        private bool showFilterMenuOnRightClick = true;\r\n\r\n        /// <summary>\r\n        /// Should this list show its items in groups?\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         Description(\"Should the list view show items in groups?\"),\r\n         DefaultValue(true)]\r\n        public new virtual bool ShowGroups\r\n        {\r\n            get { return base.ShowGroups; }\r\n            set\r\n            {\r\n                GroupImageList = GroupImageList;\r\n                base.ShowGroups = value;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should the list view show a bitmap in the column header to show the sort direction?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// The only reason for not wanting to have sort indicators is that, on pre-XP versions of\r\n        /// Windows, having sort indicators required the ListView to have a small image list, and\r\n        /// as soon as you give a ListView a SmallImageList, the text of column 0 is bumped 16\r\n        /// pixels to the right, even if you never used an image.\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the list view show sort indicators in the column headers?\"),\r\n         DefaultValue(true)]\r\n        public virtual bool ShowSortIndicators\r\n        {\r\n            get { return showSortIndicators; }\r\n            set { showSortIndicators = value; }\r\n        }\r\n        private bool showSortIndicators;\r\n\r\n        /// <summary>\r\n        /// Should the list view show images on subitems?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>Virtual lists have to be owner drawn in order to show images on subitems</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the list view show images on subitems?\"),\r\n         DefaultValue(false)]\r\n        public virtual bool ShowImagesOnSubItems\r\n        {\r\n            get { return showImagesOnSubItems; }\r\n            set\r\n            {\r\n                showImagesOnSubItems = value;\r\n                if (Created)\r\n                    ApplyExtendedStyles();\r\n                if (value && VirtualMode)\r\n                    OwnerDraw = true;\r\n            }\r\n        }\r\n        private bool showImagesOnSubItems;\r\n\r\n        /// <summary>\r\n        /// This property controls whether group labels will be suffixed with a count of items.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// The format of the suffix is controlled by GroupWithItemCountFormat/GroupWithItemCountSingularFormat properties\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will group titles be suffixed with a count of the items in the group?\"),\r\n         DefaultValue(false)]\r\n        public virtual bool ShowItemCountOnGroups\r\n        {\r\n            get { return showItemCountOnGroups; }\r\n            set { showItemCountOnGroups = value; }\r\n        }\r\n        private bool showItemCountOnGroups;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the control will show column headers in all\r\n        /// views (true), or only in Details view (false)\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This property is not working correctly. JPP 2010/04/06.\r\n        /// It works fine if it is set before the control is created.\r\n        /// But if it turned off once the control is created, the control\r\n        /// loses its checkboxes (weird!)\r\n        /// </para>\r\n        /// <para>\r\n        /// To changed this setting after the control is created, things\r\n        /// are complicated. If it is off and we want it on, we have\r\n        /// to change the View and the header will appear. If it is currently\r\n        /// on and we want to turn it off, we have to both change the view\r\n        /// AND recreate the handle. Recreating the handle is a problem \r\n        /// since it makes our checkbox style disappear. \r\n        /// </para>\r\n        /// <para>\r\n        /// This property doesn't work on XP.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Will the control will show column headers in all views?\"),\r\n        DefaultValue(true)]\r\n        public bool ShowHeaderInAllViews\r\n        {\r\n            get { return IsVistaOrLater && showHeaderInAllViews; }\r\n            set\r\n            {\r\n                if (showHeaderInAllViews == value)\r\n                    return;\r\n\r\n                showHeaderInAllViews = value;\r\n\r\n                // If the control isn't already created, everything is fine.\r\n                if (!Created)\r\n                    return;\r\n\r\n                // If the header is being hidden, we have to recreate the control\r\n                // to remove the style (not sure why this is)\r\n                if (showHeaderInAllViews)\r\n                    ApplyExtendedStyles();\r\n                else\r\n                    RecreateHandle();\r\n\r\n                // Still more complications. The change doesn't become visible until the View is changed\r\n                if (View != View.Details)\r\n                {\r\n                    View temp = View;\r\n                    View = View.Details;\r\n                    View = temp;\r\n                }\r\n            }\r\n        }\r\n        private bool showHeaderInAllViews = true;\r\n\r\n        /// <summary>\r\n        /// Override the SmallImageList property so we can correctly shadow its operations.\r\n        /// </summary>\r\n        /// <remarks><para>If you use the RowHeight property to specify the row height, the SmallImageList\r\n        /// must be fully initialised before setting/changing the RowHeight. If you add new images to the image\r\n        /// list after setting the RowHeight, you must assign the imagelist to the control again. Something as simple\r\n        /// as this will work:\r\n        /// <code>listView1.SmallImageList = listView1.SmallImageList;</code></para>\r\n        /// </remarks>\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public new ImageList SmallImageList\r\n        {\r\n            get { return shadowedImageList; }\r\n            set\r\n            {\r\n                shadowedImageList = value;\r\n                if (UseSubItemCheckBoxes)\r\n                    SetupSubItemCheckBoxes();\r\n                SetupBaseImageList();\r\n            }\r\n        }\r\n        private ImageList shadowedImageList;\r\n\r\n        /// <summary>\r\n        /// Return the size of the images in the small image list or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual Size SmallImageSize\r\n        {\r\n            get\r\n            {\r\n                return BaseSmallImageList == null ? new Size(16, 16) : BaseSmallImageList.ImageSize;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// When the listview is grouped, should the items be sorted by the primary column?\r\n        /// If this is false, the items will be sorted by the same column as they are grouped.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"When the listview is grouped, should the items be sorted by the primary column? If this is false, the items will be sorted by the same column as they are grouped.\"),\r\n         DefaultValue(true)]\r\n        public virtual bool SortGroupItemsByPrimaryColumn\r\n        {\r\n            get { return sortGroupItemsByPrimaryColumn; }\r\n            set { sortGroupItemsByPrimaryColumn = value; }\r\n        }\r\n        private bool sortGroupItemsByPrimaryColumn = true;\r\n\r\n        /// <summary>\r\n        /// When the listview is grouped, how many pixels should exist between the end of one group and the\r\n        /// beginning of the next?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How many pixels of space will be between groups\"),\r\n         DefaultValue(0)]\r\n        public virtual int SpaceBetweenGroups\r\n        {\r\n            get { return spaceBetweenGroups; }\r\n            set\r\n            {\r\n                if (spaceBetweenGroups == value)\r\n                    return;\r\n\r\n                spaceBetweenGroups = value;\r\n                SetGroupSpacing();\r\n            }\r\n        }\r\n        private int spaceBetweenGroups;\r\n\r\n        private void SetGroupSpacing()\r\n        {\r\n            if (!IsHandleCreated)\r\n                return;\r\n\r\n            NativeMethods.LVGROUPMETRICS metrics = new NativeMethods.LVGROUPMETRICS();\r\n            metrics.cbSize = ((uint)Marshal.SizeOf(typeof(NativeMethods.LVGROUPMETRICS)));\r\n            metrics.mask = (uint)GroupMetricsMask.LVGMF_BORDERSIZE;\r\n            metrics.Bottom = (uint)SpaceBetweenGroups;\r\n            NativeMethods.SetGroupMetrics(this, metrics);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should the sort column show a slight tinge?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the sort column show a slight tinting?\"),\r\n         DefaultValue(false)]\r\n        public virtual bool TintSortColumn\r\n        {\r\n            get { return tintSortColumn; }\r\n            set\r\n            {\r\n                tintSortColumn = value;\r\n                if (value && PrimarySortColumn != null)\r\n                    SelectedColumn = PrimarySortColumn;\r\n                else\r\n                    SelectedColumn = null;\r\n            }\r\n        }\r\n        private bool tintSortColumn;\r\n\r\n        /// <summary>\r\n        /// Should each row have a tri-state checkbox?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If this is true, the user can choose the third state (normally Indeterminate). Otherwise, user clicks\r\n        /// alternate between checked and unchecked. CheckStateGetter can still return Indeterminate when this\r\n        /// setting is false.\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the primary column have a checkbox that behaves as a tri-state checkbox?\"),\r\n         DefaultValue(false)]\r\n        public virtual bool TriStateCheckBoxes\r\n        {\r\n            get { return triStateCheckBoxes; }\r\n            set\r\n            {\r\n                triStateCheckBoxes = value;\r\n                if (value && !CheckBoxes)\r\n                    CheckBoxes = true;\r\n                InitializeStateImageList();\r\n            }\r\n        }\r\n        private bool triStateCheckBoxes;\r\n\r\n        /// <summary>\r\n        /// Get or set the index of the top item of this listview\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This property only works when the listview is in Details view and not showing groups.\r\n        /// </para>\r\n        /// <para>\r\n        /// The reason that it does not work when showing groups is that, when groups are enabled,\r\n        /// the Windows msg LVM_GETTOPINDEX always returns 0, regardless of the\r\n        /// scroll position.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual int TopItemIndex\r\n        {\r\n            get\r\n            {\r\n                if (View == View.Details && IsHandleCreated)\r\n                    return NativeMethods.GetTopIndex(this);\r\n\r\n                return -1;\r\n            }\r\n            set\r\n            {\r\n                int newTopIndex = Math.Min(value, GetItemCount() - 1);\r\n                if (View != View.Details || newTopIndex < 0)\r\n                    return;\r\n\r\n                try\r\n                {\r\n                    TopItem = Items[newTopIndex];\r\n\r\n                    // Setting the TopItem sometimes gives off by one errors,\r\n                    // that (bizarrely) are correct on a second attempt\r\n                    if (TopItem != null && TopItem.Index != newTopIndex)\r\n                        TopItem = GetItem(newTopIndex);\r\n                }\r\n                catch (NullReferenceException)\r\n                {\r\n                    // There is a bug in the .NET code where setting the TopItem\r\n                    // will sometimes throw null reference exceptions\r\n                    // There is nothing we can do to get around it.\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether moving the mouse over the header will trigger CellOver events.\r\n        /// Defaults to true.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Moving the mouse over the header did not previously trigger CellOver events, since the\r\n        /// header is considered a separate control. \r\n        /// If this change in behaviour causes your application problems, set this to false.\r\n        /// If you are interested in knowing when the mouse moves over the header, set this property to true (the default).\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should moving the mouse over the header trigger CellOver events?\"),\r\n         DefaultValue(true)]\r\n        public bool TriggerCellOverEventsWhenOverHeader\r\n        {\r\n            get { return triggerCellOverEventsWhenOverHeader; }\r\n            set { triggerCellOverEventsWhenOverHeader = value; }\r\n        }\r\n        private bool triggerCellOverEventsWhenOverHeader = true;\r\n\r\n        /// <summary>\r\n        /// When resizing a column by dragging its divider, should any space filling columns be\r\n        /// resized at each mouse move? If this is false, the filling columns will be\r\n        /// updated when the mouse is released.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If you have a space filling column\r\n        /// is in the left of the column that is being resized, this will look odd: \r\n        /// the right edge of the column will be dragged, but\r\n        /// its <b>left</b> edge will move since the space filling column is shrinking.\r\n        /// </para>\r\n        /// <para>This is logical behaviour -- it just looks wrong.   \r\n        /// </para>\r\n        /// <para>\r\n        /// Given the above behavior is probably best to turn this property off if your space filling\r\n        /// columns aren't the right-most columns.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"When resizing a column by dragging its divider, should any space filling columns be resized at each mouse move?\"),\r\n        DefaultValue(true)]\r\n        public virtual bool UpdateSpaceFillingColumnsWhenDraggingColumnDivider\r\n        {\r\n            get { return updateSpaceFillingColumnsWhenDraggingColumnDivider; }\r\n            set { updateSpaceFillingColumnsWhenDraggingColumnDivider = value; }\r\n        }\r\n        private bool updateSpaceFillingColumnsWhenDraggingColumnDivider = true;\r\n\r\n        /// <summary>\r\n        /// What color should be used for the background of selected rows when the control doesn't have the focus?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The background color of selected rows when the control doesn't have the focus\"),\r\n         DefaultValue(typeof(Color), \"\")]\r\n        public virtual Color UnfocusedSelectedBackColor\r\n        {\r\n            get { return unfocusedSelectedBackColor; }\r\n            set { unfocusedSelectedBackColor = value; }\r\n        }\r\n        private Color unfocusedSelectedBackColor = Color.Empty;\r\n\r\n        /// <summary>\r\n        /// Return the color should be used for the background of selected rows when the control doesn't have the focus or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual Color UnfocusedSelectedBackColorOrDefault\r\n        {\r\n            get\r\n            {\r\n                return UnfocusedSelectedBackColor.IsEmpty ? SystemColors.Control : UnfocusedSelectedBackColor;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// What color should be used for the foreground of selected rows when the control doesn't have the focus?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The foreground color of selected rows when the control is owner drawn and doesn't have the focus\"),\r\n         DefaultValue(typeof(Color), \"\")]\r\n        public virtual Color UnfocusedSelectedForeColor\r\n        {\r\n            get { return unfocusedSelectedForeColor; }\r\n            set { unfocusedSelectedForeColor = value; }\r\n        }\r\n        private Color unfocusedSelectedForeColor = Color.Empty;\r\n\r\n        /// <summary>\r\n        /// Return the color should be used for the foreground of selected rows when the control doesn't have the focus or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual Color UnfocusedSelectedForeColorOrDefault\r\n        {\r\n            get\r\n            {\r\n                return UnfocusedSelectedForeColor.IsEmpty ? SystemColors.ControlText : UnfocusedSelectedForeColor;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the list give a different background color to every second row? Defaults to false.\r\n        /// </summary>\r\n        /// <remarks><para>The color of the alternate rows is given by AlternateRowBackColor.</para>\r\n        /// <para>There is a \"feature\" in .NET for listviews in non-full-row-select mode, where\r\n        /// selected rows are not drawn with their correct background color.</para></remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the list view use a different backcolor to alternate rows?\"),\r\n         DefaultValue(false)]\r\n        public virtual bool UseAlternatingBackColors\r\n        {\r\n            get { return useAlternatingBackColors; }\r\n            set { useAlternatingBackColors = value; }\r\n        }\r\n        private bool useAlternatingBackColors;\r\n\r\n        /// <summary>\r\n        /// Should FormatCell events be called for each cell in the control?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>In many situations, no cell level formatting is performed. ObjectListView\r\n        /// can run somewhat faster if it does not trigger a format cell event for every cell\r\n        /// unless it is required. So, by default, it does not raise an event for each cell.\r\n        /// </para>\r\n        /// <para>ObjectListView *does* raise a FormatRow event every time a row is rebuilt.\r\n        /// Individual rows can decide whether to raise FormatCell\r\n        /// events for every cell in row.\r\n        /// </para>\r\n        /// <para>\r\n        /// Regardless of this setting, FormatCell events are only raised when the ObjectListView\r\n        /// is in Details view.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should FormatCell events be triggered to every cell that is built?\"),\r\n         DefaultValue(false)]\r\n        public bool UseCellFormatEvents\r\n        {\r\n            get { return useCellFormatEvents; }\r\n            set { useCellFormatEvents = value; }\r\n        }\r\n        private bool useCellFormatEvents;\r\n\r\n        /// <summary>\r\n        /// Should the selected row be drawn with non-standard foreground and background colors?\r\n        /// </summary>\r\n        /// <remarks>v2.9 This property is no longer required</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the selected row be drawn with non-standard foreground and background colors?\"),\r\n         DefaultValue(false)]\r\n        public bool UseCustomSelectionColors\r\n        {\r\n            get { return false; }\r\n            // ReSharper disable once ValueParameterNotUsed\r\n            set { }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this ObjectListView will use the same hot item and selection \r\n        /// mechanism that Vista Explorer does.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This property has many imperfections:\r\n        /// <list type=\"bullet\">\r\n        /// <item><description>This only works on Vista and later</description></item>\r\n        /// <item><description>It does not work well with AlternateRowBackColors.</description></item>\r\n        /// <item><description>It does not play well with HotItemStyles.</description></item>\r\n        /// <item><description>It looks a little bit silly is FullRowSelect is false.</description></item>\r\n        /// <item><description>It doesn't work at all when the list is owner drawn (since the renderers\r\n        /// do all the drawing). As such, it won't work with TreeListView's since they *have to be*\r\n        /// owner drawn. You can still set it, but it's just not going to be happy.</description></item>\r\n        /// </list>\r\n        /// But if you absolutely have to look like Vista/Win7, this is your property. \r\n        /// Do not complain if settings this messes up other things.\r\n        /// </para>\r\n        /// <para>\r\n        /// When this property is set to true, the ObjectListView will be not owner drawn. This will\r\n        /// disable many of the pretty drawing-based features of ObjectListView.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the list use the same hot item and selection mechanism as Vista?\"),\r\n         DefaultValue(false)]\r\n        public bool UseExplorerTheme\r\n        {\r\n            get { return useExplorerTheme; }\r\n            set\r\n            {\r\n                useExplorerTheme = value;\r\n                if (Created)\r\n                    NativeMethods.SetWindowTheme(Handle, value ? \"explorer\" : \"\", null);\r\n\r\n                OwnerDraw = !value;\r\n            }\r\n        }\r\n        private bool useExplorerTheme;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the list should enable filtering\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Should the list enable filtering?\"),\r\n        DefaultValue(false)]\r\n        public virtual bool UseFiltering\r\n        {\r\n            get { return useFiltering; }\r\n            set\r\n            {\r\n                if (useFiltering == value)\r\n                    return;\r\n                useFiltering = value;\r\n                UpdateFiltering();\r\n            }\r\n        }\r\n        private bool useFiltering;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the list should put an indicator into a column's header to show that\r\n        /// it is filtering on that column\r\n        /// </summary>\r\n        /// <remarks>If you set this to true, HeaderUsesThemes is automatically set to false, since\r\n        /// we can only draw a filter indicator when not using a themed header.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Should an image be drawn in a column's header when that column is being used for filtering?\"),\r\n        DefaultValue(false)]\r\n        public virtual bool UseFilterIndicator\r\n        {\r\n            get { return useFilterIndicator; }\r\n            set\r\n            {\r\n                if (useFilterIndicator == value)\r\n                    return;\r\n                useFilterIndicator = value;\r\n                if (useFilterIndicator)\r\n                    HeaderUsesThemes = false;\r\n                Invalidate();\r\n            }\r\n        }\r\n        private bool useFilterIndicator;\r\n\r\n        /// <summary>\r\n        /// Should controls (checkboxes or buttons) that are under the mouse be drawn \"hot\"?\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>If this is false, control will not be drawn differently when the mouse is over them.</para>\r\n        /// <para>\r\n        /// If this is false AND UseHotItem is false AND UseHyperlinks is false, then the ObjectListView\r\n        /// can skip some processing on mouse move. This make mouse move processing use almost no CPU.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should controls (checkboxes or buttons) that are under the mouse be drawn hot?\"),\r\n         DefaultValue(true)]\r\n        public bool UseHotControls\r\n        {\r\n            get { return useHotControls; }\r\n            set { useHotControls = value; }\r\n        }\r\n        private bool useHotControls = true;\r\n\r\n        /// <summary>\r\n        /// Should the item under the cursor be formatted in a special way?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should HotTracking be used? Hot tracking applies special formatting to the row under the cursor\"),\r\n         DefaultValue(false)]\r\n        public bool UseHotItem\r\n        {\r\n            get { return useHotItem; }\r\n            set\r\n            {\r\n                useHotItem = value;\r\n                if (value)\r\n                    AddOverlay(HotItemStyleOrDefault.Overlay);\r\n                else\r\n                    RemoveOverlay(HotItemStyleOrDefault.Overlay);\r\n            }\r\n        }\r\n        private bool useHotItem;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this listview should show hyperlinks in the cells.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should hyperlinks be shown on this control?\"),\r\n         DefaultValue(false)]\r\n        public bool UseHyperlinks\r\n        {\r\n            get { return useHyperlinks; }\r\n            set\r\n            {\r\n                useHyperlinks = value;\r\n                if (value && HyperlinkStyle == null)\r\n                    HyperlinkStyle = new HyperlinkStyle();\r\n            }\r\n        }\r\n        private bool useHyperlinks;\r\n\r\n        /// <summary>\r\n        /// Should this control show overlays\r\n        /// </summary>\r\n        /// <remarks>Overlays are enabled by default and would only need to be disabled\r\n        /// if they were causing problems in your development environment.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should this control show overlays\"),\r\n         DefaultValue(true)]\r\n        public bool UseOverlays\r\n        {\r\n            get { return useOverlays; }\r\n            set { useOverlays = value; }\r\n        }\r\n        private bool useOverlays = true;\r\n\r\n        /// <summary>\r\n        /// Should this control be configured to show check boxes on subitems?\r\n        /// </summary>\r\n        /// <remarks>If this is set to True, the control will be given a SmallImageList if it\r\n        /// doesn't already have one. Also, if it is a virtual list, it will be set to owner\r\n        /// drawn, since virtual lists can't draw check boxes without being owner drawn.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should this control be configured to show check boxes on subitems.\"),\r\n         DefaultValue(false)]\r\n        public bool UseSubItemCheckBoxes\r\n        {\r\n            get { return useSubItemCheckBoxes; }\r\n            set\r\n            {\r\n                useSubItemCheckBoxes = value;\r\n                if (value)\r\n                    SetupSubItemCheckBoxes();\r\n            }\r\n        }\r\n        private bool useSubItemCheckBoxes;\r\n\r\n        /// <summary>\r\n        /// Gets or sets if the ObjectListView will use a translucent selection mechanism like Vista.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// Unlike UseExplorerTheme, this Vista-like scheme works on XP and for both\r\n        /// owner and non-owner drawn lists.\r\n        /// </para>\r\n        /// <para>\r\n        /// This will replace any SelectedRowDecoration that has been installed.\r\n        /// </para>\r\n        /// <para>\r\n        /// If you don't like the colours used for the selection, ignore this property and \r\n        /// just create your own RowBorderDecoration and assigned it to SelectedRowDecoration,\r\n        /// just like this property setter does.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the list use a translucent selection mechanism (like Vista)\"),\r\n         DefaultValue(false)]\r\n        public bool UseTranslucentSelection\r\n        {\r\n            get { return useTranslucentSelection; }\r\n            set\r\n            {\r\n                useTranslucentSelection = value;\r\n                if (value)\r\n                {\r\n                    RowBorderDecoration rbd = new RowBorderDecoration();\r\n                    rbd.BorderPen = new Pen(Color.FromArgb(154, 223, 251));\r\n                    rbd.FillBrush = new SolidBrush(Color.FromArgb(48, 163, 217, 225));\r\n                    rbd.BoundsPadding = new Size(0, 0);\r\n                    rbd.CornerRounding = 6.0f;\r\n                    SelectedRowDecoration = rbd;\r\n                }\r\n                else\r\n                    SelectedRowDecoration = null;\r\n            }\r\n        }\r\n        private bool useTranslucentSelection;\r\n\r\n        /// <summary>\r\n        /// Gets or sets if the ObjectListView will use a translucent hot row highlighting mechanism like Vista.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// Setting this will replace any HotItemStyle that has been installed.\r\n        /// </para>\r\n        /// <para>\r\n        /// If you don't like the colours used for the hot item, ignore this property and \r\n        /// just create your own HotItemStyle, fill in the values you want, and assigned it to HotItemStyle property,\r\n        /// just like this property setter does.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the list use a translucent hot row highlighting mechanism (like Vista)\"),\r\n         DefaultValue(false)]\r\n        public bool UseTranslucentHotItem\r\n        {\r\n            get { return useTranslucentHotItem; }\r\n            set\r\n            {\r\n                useTranslucentHotItem = value;\r\n                if (value)\r\n                {\r\n                    RowBorderDecoration rbd = new RowBorderDecoration();\r\n                    rbd.BorderPen = new Pen(Color.FromArgb(154, 223, 251));\r\n                    rbd.BoundsPadding = new Size(0, 0);\r\n                    rbd.CornerRounding = 6.0f;\r\n                    rbd.FillGradientFrom = Color.FromArgb(0, 255, 255, 255);\r\n                    rbd.FillGradientTo = Color.FromArgb(64, 183, 237, 240);\r\n                    HotItemStyle his = new HotItemStyle();\r\n                    his.Decoration = rbd;\r\n                    HotItemStyle = his;\r\n                }\r\n                else\r\n                    HotItemStyle = null;\r\n                UseHotItem = value;\r\n            }\r\n        }\r\n        private bool useTranslucentHotItem;\r\n\r\n        /// <summary>\r\n        /// Get/set the style of view that this listview is using\r\n        /// </summary>\r\n        /// <remarks>Switching to tile or details view installs the columns appropriate to that view.\r\n        /// Confusingly, in tile view, every column is shown as a row of information.</remarks>\r\n        [Category(\"Appearance\"),\r\n         Description(\"Select the layout of the items within this control)\"),\r\n         DefaultValue(null)]\r\n        public new View View\r\n        {\r\n            get { return base.View; }\r\n            set\r\n            {\r\n                if (base.View == value)\r\n                    return;\r\n\r\n                if (Frozen)\r\n                {\r\n                    base.View = value;\r\n                    SetupBaseImageList();\r\n                }\r\n                else\r\n                {\r\n                    Freeze();\r\n\r\n                    if (value == View.Tile)\r\n                        CalculateReasonableTileSize();\r\n\r\n                    base.View = value;\r\n                    SetupBaseImageList();\r\n                    Unfreeze();\r\n                }\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Callbacks\r\n\r\n        /// <summary>\r\n        /// This delegate fetches the checkedness of an object as a boolean only.\r\n        /// </summary>\r\n        /// <remarks>Use this if you never want to worry about the\r\n        /// Indeterminate state (which is fairly common).\r\n        /// <para>\r\n        /// This is a convenience wrapper around the CheckStateGetter property.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual BooleanCheckStateGetterDelegate BooleanCheckStateGetter\r\n        {\r\n            set\r\n            {\r\n                if (value == null)\r\n                    CheckStateGetter = null;\r\n                else\r\n                    CheckStateGetter = delegate (Object x)\r\n                    {\r\n                        return value(x) ? CheckState.Checked : CheckState.Unchecked;\r\n                    };\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// This delegate sets the checkedness of an object as a boolean only. It must return\r\n        /// true or false indicating if the object was checked or not.\r\n        /// </summary>\r\n        /// <remarks>Use this if you never want to worry about the\r\n        /// Indeterminate state (which is fairly common).\r\n        /// <para>\r\n        /// This is a convenience wrapper around the CheckStatePutter property.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual BooleanCheckStatePutterDelegate BooleanCheckStatePutter\r\n        {\r\n            set\r\n            {\r\n                if (value == null)\r\n                    CheckStatePutter = null;\r\n                else\r\n                    CheckStatePutter = delegate (Object x, CheckState state)\r\n                    {\r\n                        bool isChecked = (state == CheckState.Checked);\r\n                        return value(x, isChecked) ? CheckState.Checked : CheckState.Unchecked;\r\n                    };\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether or not this listview is capabale of showing groups\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public virtual bool CanShowGroups\r\n        {\r\n            get\r\n            {\r\n                return true;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether ObjectListView can rely on Application.Idle events\r\n        /// being raised.\r\n        /// </summary>\r\n        /// <remarks>In some host environments (e.g. when running as an extension within\r\n        /// VisualStudio and possibly Office), Application.Idle events are never raised.\r\n        /// Set this to false when Idle events will not be raised, and ObjectListView will\r\n        /// raise those events itself.\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual bool CanUseApplicationIdle\r\n        {\r\n            get { return canUseApplicationIdle; }\r\n            set { canUseApplicationIdle = value; }\r\n        }\r\n        private bool canUseApplicationIdle = true;\r\n\r\n        /// <summary>\r\n        /// This delegate fetches the renderer for a particular cell. \r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If this returns null (or is not installed), the renderer for the column will be used.\r\n        /// If the column renderer is null, then <seealso cref=\"DefaultRenderer\"/> will be used.\r\n        /// </para>\r\n        /// <para>\r\n        /// This is called every time any cell is drawn. It must be efficient! \r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual CellRendererGetterDelegate CellRendererGetter\r\n        {\r\n            get { return cellRendererGetter; }\r\n            set { cellRendererGetter = value; }\r\n        }\r\n        private CellRendererGetterDelegate cellRendererGetter;\r\n\r\n        /// <summary>\r\n        /// This delegate is called when the list wants to show a tooltip for a particular cell.\r\n        /// The delegate should return the text to display, or null to use the default behavior\r\n        /// (which is to show the full text of truncated cell values).\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Displaying the full text of truncated cell values only work for FullRowSelect listviews.\r\n        /// This is MS's behavior, not mine. Don't complain to me :)\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual CellToolTipGetterDelegate CellToolTipGetter\r\n        {\r\n            get { return cellToolTipGetter; }\r\n            set { cellToolTipGetter = value; }\r\n        }\r\n        private CellToolTipGetterDelegate cellToolTipGetter;\r\n\r\n        /// <summary>\r\n        /// The name of the property (or field) that holds whether or not a model is checked.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>The property be modifiable. It must have a return type of bool (or of bool? if\r\n        /// TriStateCheckBoxes is true).</para>\r\n        /// <para>Setting this property replaces any CheckStateGetter or CheckStatePutter that have been installed.\r\n        /// Conversely, later setting the CheckStateGetter or CheckStatePutter properties will take precedence\r\n        /// over the behavior of this property.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The name of the property or field that holds the 'checkedness' of the model\"),\r\n         DefaultValue(null)]\r\n        public virtual string CheckedAspectName\r\n        {\r\n            get { return checkedAspectName; }\r\n            set\r\n            {\r\n                checkedAspectName = value;\r\n                if (String.IsNullOrEmpty(checkedAspectName))\r\n                {\r\n                    checkedAspectMunger = null;\r\n                    CheckStateGetter = null;\r\n                    CheckStatePutter = null;\r\n                }\r\n                else\r\n                {\r\n                    checkedAspectMunger = new Munger(checkedAspectName);\r\n                    CheckStateGetter = delegate (Object modelObject)\r\n                    {\r\n                        if (checkedAspectMunger.GetValue(modelObject) is bool result)\r\n                            return result ? CheckState.Checked : CheckState.Unchecked;\r\n                        return TriStateCheckBoxes ? CheckState.Indeterminate : CheckState.Unchecked;\r\n                    };\r\n                    CheckStatePutter = delegate (Object modelObject, CheckState newValue)\r\n                    {\r\n                        if (TriStateCheckBoxes && newValue == CheckState.Indeterminate)\r\n                            checkedAspectMunger.PutValue(modelObject, null);\r\n                        else\r\n                            checkedAspectMunger.PutValue(modelObject, newValue == CheckState.Checked);\r\n                        return CheckStateGetter(modelObject);\r\n                    };\r\n                }\r\n            }\r\n        }\r\n        private string checkedAspectName;\r\n        private Munger checkedAspectMunger;\r\n\r\n        /// <summary>\r\n        /// This delegate will be called whenever the ObjectListView needs to know the check state\r\n        /// of the row associated with a given model object.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>.NET has no support for indeterminate values, but as of v2.0, this class allows\r\n        /// indeterminate values.</para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual CheckStateGetterDelegate CheckStateGetter\r\n        {\r\n            get { return checkStateGetter; }\r\n            set { checkStateGetter = value; }\r\n        }\r\n        private CheckStateGetterDelegate checkStateGetter;\r\n\r\n        /// <summary>\r\n        /// This delegate will be called whenever the user tries to change the check state of a row.\r\n        /// The delegate should return the state that was actually set, which may be different\r\n        /// to the state given.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual CheckStatePutterDelegate CheckStatePutter\r\n        {\r\n            get { return checkStatePutter; }\r\n            set { checkStatePutter = value; }\r\n        }\r\n        private CheckStatePutterDelegate checkStatePutter;\r\n\r\n        /// <summary>\r\n        /// This delegate can be used to sort the table in a custom fasion.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// The delegate must install a ListViewItemSorter on the ObjectListView.\r\n        /// Installing the ItemSorter does the actual work of sorting the ListViewItems.\r\n        /// See ColumnComparer in the code for an example of what an ItemSorter has to do.\r\n        /// </para>\r\n        /// <para>\r\n        /// Do not install a CustomSorter on a VirtualObjectListView. Override the SortObjects()\r\n        /// method of the IVirtualListDataSource instead.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual SortDelegate CustomSorter\r\n        {\r\n            get { return customSorter; }\r\n            set { customSorter = value; }\r\n        }\r\n        private SortDelegate customSorter;\r\n\r\n        /// <summary>\r\n        /// This delegate is called when the list wants to show a tooltip for a particular header.\r\n        /// The delegate should return the text to display, or null to use the default behavior\r\n        /// (which is to not show any tooltip).\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Installing a HeaderToolTipGetter takes precedence over any text in OLVColumn.ToolTipText.\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual HeaderToolTipGetterDelegate HeaderToolTipGetter\r\n        {\r\n            get { return headerToolTipGetter; }\r\n            set { headerToolTipGetter = value; }\r\n        }\r\n        private HeaderToolTipGetterDelegate headerToolTipGetter;\r\n\r\n        /// <summary>\r\n        /// This delegate can be used to format a OLVListItem before it is added to the control.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>The model object for the row can be found through the RowObject property of the OLVListItem object.</para>\r\n        /// <para>All subitems normally have the same style as list item, so setting the forecolor on one\r\n        /// subitem changes the forecolor of all subitems.\r\n        /// To allow subitems to have different attributes, do this:\r\n        /// <code>myListViewItem.UseItemStyleForSubItems = false;</code>.\r\n        /// </para>\r\n        /// <para>If UseAlternatingBackColors is true, the backcolor of the listitem will be calculated\r\n        /// by the control and cannot be controlled by the RowFormatter delegate.\r\n        /// In general, trying to use a RowFormatter\r\n        /// when UseAlternatingBackColors is true does not work well.</para>\r\n        /// <para>As it says in the summary, this is called <b>before</b> the item is added to the control.\r\n        /// Many properties of the OLVListItem itself are not available at that point, including:\r\n        /// Index, Selected, Focused, Bounds, Checked, DisplayIndex.</para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual RowFormatterDelegate RowFormatter\r\n        {\r\n            get { return rowFormatter; }\r\n            set { rowFormatter = value; }\r\n        }\r\n        private RowFormatterDelegate rowFormatter;\r\n\r\n        #endregion\r\n\r\n        #region List commands\r\n\r\n        /// <summary>\r\n        /// Add the given model object to this control.\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model object to be displayed</param>\r\n        /// <remarks>See AddObjects() for more details</remarks>\r\n        public virtual void AddObject(object modelObject)\r\n        {\r\n            if (InvokeRequired)\r\n                Invoke((MethodInvoker)delegate () { AddObject(modelObject); });\r\n            else\r\n                AddObjects(new object[] { modelObject });\r\n        }\r\n\r\n        /// <summary>\r\n        /// Add the given collection of model objects to this control.\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">A collection of model objects</param>\r\n        /// <remarks>\r\n        /// <para>The added objects will appear in their correct sort position, if sorting\r\n        /// is active (i.e. if PrimarySortColumn is not null). Otherwise, they will appear at the end of the list.</para>\r\n        /// <para>No check is performed to see if any of the objects are already in the ListView.</para>\r\n        /// <para>Null objects are silently ignored.</para>\r\n        /// </remarks>\r\n        public virtual void AddObjects(ICollection modelObjects)\r\n        {\r\n            if (InvokeRequired)\r\n            {\r\n                Invoke((MethodInvoker)delegate () { AddObjects(modelObjects); });\r\n                return;\r\n            }\r\n            InsertObjects(EnumerableCount(Objects), modelObjects);\r\n            Sort(PrimarySortColumn, PrimarySortOrder);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Resize the columns to the maximum of the header width and the data.\r\n        /// </summary>\t\t\r\n        public virtual void AutoResizeColumns()\r\n        {\r\n            foreach (OLVColumn c in Columns)\r\n            {\r\n                AutoResizeColumn(c.Index, ColumnHeaderAutoResizeStyle.HeaderSize);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set up any automatically initialized column widths (columns that \r\n        /// have a width of 0 or -1 will be resized to the width of their \r\n        /// contents or header respectively).\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Obviously, this will only work once. Once it runs, the columns widths will\r\n        /// be changed to something else (other than 0 or -1), so it wont do anything the \r\n        /// second time through. Use <see cref=\"AutoResizeColumns()\"/> to force all columns\r\n        /// to change their size.\r\n        /// </remarks>\r\n        public virtual void AutoSizeColumns()\r\n        {\r\n            // If we are supposed to resize to content, but if there is no content, \r\n            // resize to the header size instead.\r\n            ColumnHeaderAutoResizeStyle resizeToContentStyle = GetItemCount() == 0 ?\r\n                ColumnHeaderAutoResizeStyle.HeaderSize :\r\n                ColumnHeaderAutoResizeStyle.ColumnContent;\r\n            foreach (ColumnHeader column in Columns)\r\n            {\r\n                switch (column.Width)\r\n                {\r\n                    case 0:\r\n                        AutoResizeColumn(column.Index, resizeToContentStyle);\r\n                        break;\r\n                    case -1:\r\n                        AutoResizeColumn(column.Index, ColumnHeaderAutoResizeStyle.HeaderSize);\r\n                        break;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Organise the view items into groups, based on the last sort column or the first column\r\n        /// if there is no last sort column\r\n        /// </summary>\r\n        public virtual void BuildGroups()\r\n        {\r\n            BuildGroups(PrimarySortColumn, PrimarySortOrder == SortOrder.None ? SortOrder.Ascending : PrimarySortOrder);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Organise the view items into groups, based on the given column\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If the AlwaysGroupByColumn property is not null,\r\n        /// the list view items will be organisd by that column,\r\n        /// and the 'column' parameter will be ignored.\r\n        /// </para>\r\n        /// <para>This method triggers sorting events: BeforeSorting and AfterSorting.</para>\r\n        /// </remarks>\r\n        /// <param name=\"column\">The column whose values should be used for sorting.</param>\r\n        /// <param name=\"order\"></param>\r\n        public virtual void BuildGroups(OLVColumn column, SortOrder order)\r\n        {\r\n            // Sanity\r\n            if (GetItemCount() == 0 || Columns.Count == 0)\r\n                return;\r\n\r\n            BeforeSortingEventArgs args = BuildBeforeSortingEventArgs(column, order);\r\n            OnBeforeSorting(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            BuildGroups(args.ColumnToGroupBy, args.GroupByOrder,\r\n                args.ColumnToSort, args.SortOrder, args.SecondaryColumnToSort, args.SecondarySortOrder);\r\n\r\n            OnAfterSorting(new AfterSortingEventArgs(args));\r\n        }\r\n\r\n        private BeforeSortingEventArgs BuildBeforeSortingEventArgs(OLVColumn column, SortOrder order)\r\n        {\r\n            OLVColumn groupBy = AlwaysGroupByColumn ?? column ?? GetColumn(0);\r\n            SortOrder groupByOrder = AlwaysGroupBySortOrder;\r\n            if (order == SortOrder.None)\r\n            {\r\n                order = Sorting;\r\n                if (order == SortOrder.None)\r\n                    order = SortOrder.Ascending;\r\n            }\r\n            if (groupByOrder == SortOrder.None)\r\n                groupByOrder = order;\r\n\r\n            BeforeSortingEventArgs args = new BeforeSortingEventArgs(\r\n                groupBy, groupByOrder,\r\n                column, order,\r\n                SecondarySortColumn ?? GetColumn(0),\r\n                SecondarySortOrder == SortOrder.None ? order : SecondarySortOrder);\r\n            if (column != null)\r\n                args.Canceled = !column.Sortable;\r\n            return args;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Organise the view items into groups, based on the given columns\r\n        /// </summary>\r\n        /// <param name=\"groupByColumn\">What column will be used for grouping</param>\r\n        /// <param name=\"groupByOrder\">What ordering will be used for groups</param>\r\n        /// <param name=\"column\">The column whose values should be used for sorting. Cannot be null</param>\r\n        /// <param name=\"order\">The order in which the values from column will be sorted</param>\r\n        /// <param name=\"secondaryColumn\">When the values from 'column' are equal, use the values provided by this column</param>\r\n        /// <param name=\"secondaryOrder\">How will the secondary values be sorted</param>\r\n        /// <remarks>This method does not trigger sorting events. Use BuildGroups() to do that</remarks>\r\n        public virtual void BuildGroups(OLVColumn groupByColumn, SortOrder groupByOrder,\r\n            OLVColumn column, SortOrder order, OLVColumn secondaryColumn, SortOrder secondaryOrder)\r\n        {\r\n            // Sanity checks\r\n            if (groupByColumn == null)\r\n                return;\r\n\r\n            // Getting the Count forces any internal cache of the ListView to be flushed. Without\r\n            // this, iterating over the Items will not work correctly if the ListView handle\r\n            // has not yet been created.\r\n#pragma warning disable 168\r\n            // ReSharper disable once UnusedVariable\r\n            int dummy = Items.Count;\r\n#pragma warning restore 168\r\n\r\n            // Collect all the information that governs the creation of groups\r\n            GroupingParameters parms = CollectGroupingParameters(groupByColumn, groupByOrder,\r\n                column, order, secondaryColumn, secondaryOrder);\r\n\r\n            // Trigger an event to let the world create groups if they want\r\n            CreateGroupsEventArgs args = new CreateGroupsEventArgs(parms);\r\n            if (parms.GroupByColumn != null)\r\n                args.Canceled = !parms.GroupByColumn.Groupable;\r\n            OnBeforeCreatingGroups(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            // If the event didn't create them for us, use our default strategy\r\n            if (args.Groups == null)\r\n                args.Groups = MakeGroups(parms);\r\n\r\n            // Give the world a chance to munge the groups before they are created\r\n            OnAboutToCreateGroups(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            // Create the groups now\r\n            OLVGroups = args.Groups;\r\n            CreateGroups(args.Groups);\r\n\r\n            // Tell the world that new groups have been created\r\n            OnAfterCreatingGroups(args);\r\n            lastGroupingParameters = args.Parameters;\r\n        }\r\n        private GroupingParameters lastGroupingParameters;\r\n\r\n        /// <summary>\r\n        /// Collect and return all the variables that influence the creation of groups\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        protected virtual GroupingParameters CollectGroupingParameters(OLVColumn groupByColumn, SortOrder groupByOrder,\r\n            OLVColumn sortByColumn, SortOrder sortByOrder, OLVColumn secondaryColumn, SortOrder secondaryOrder)\r\n        {\r\n\r\n            // If the user tries to group by a non-groupable column, keep the current group by\r\n            // settings, but use the non-groupable column for sorting\r\n            if (!groupByColumn.Groupable && lastGroupingParameters != null)\r\n            {\r\n                sortByColumn = groupByColumn;\r\n                sortByOrder = groupByOrder;\r\n                groupByColumn = lastGroupingParameters.GroupByColumn;\r\n                groupByOrder = lastGroupingParameters.GroupByOrder;\r\n            }\r\n\r\n            string titleFormat = ShowItemCountOnGroups ? groupByColumn.GroupWithItemCountFormatOrDefault : null;\r\n            string titleSingularFormat = ShowItemCountOnGroups ? groupByColumn.GroupWithItemCountSingularFormatOrDefault : null;\r\n            GroupingParameters parms = new GroupingParameters(this, groupByColumn, groupByOrder,\r\n                sortByColumn, sortByOrder, secondaryColumn, secondaryOrder,\r\n                titleFormat, titleSingularFormat, SortGroupItemsByPrimaryColumn);\r\n            return parms;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a list of groups that should be shown according to the given parameters\r\n        /// </summary>\r\n        /// <param name=\"parms\"></param>\r\n        /// <returns>The list of groups to be created</returns>\r\n        /// <remarks>This should not change the state of the control. It is possible that the\r\n        /// groups created will not be used. They may simply be discarded.</remarks>\r\n        protected virtual IList<OLVGroup> MakeGroups(GroupingParameters parms)\r\n        {\r\n\r\n            // There is a lot of overlap between this method and FastListGroupingStrategy.MakeGroups()\r\n            // Any changes made here may need to be reflected there\r\n\r\n            // Separate the list view items into groups, using the group key as the descrimanent\r\n            NullableDictionary<object, List<OLVListItem>> map = new NullableDictionary<object, List<OLVListItem>>();\r\n            foreach (OLVListItem olvi in parms.ListView.Items)\r\n            {\r\n                object key = parms.GroupByColumn.GetGroupKey(olvi.RowObject);\r\n                if (!map.ContainsKey(key))\r\n                    map[key] = new List<OLVListItem>();\r\n                map[key].Add(olvi);\r\n            }\r\n\r\n            // Sort the items within each group (unless specifically turned off)\r\n            OLVColumn sortColumn = parms.SortItemsByPrimaryColumn ? parms.ListView.GetColumn(0) : parms.PrimarySort;\r\n            if (sortColumn != null && parms.PrimarySortOrder != SortOrder.None)\r\n            {\r\n                IComparer<OLVListItem> itemSorter = parms.ItemComparer ??\r\n                    new ColumnComparer(sortColumn, parms.PrimarySortOrder, parms.SecondarySort, parms.SecondarySortOrder);\r\n                foreach (object key in map.Keys)\r\n                {\r\n                    map[key].Sort(itemSorter);\r\n                }\r\n            }\r\n\r\n            // Make a list of the required groups\r\n            List<OLVGroup> groups = new List<OLVGroup>();\r\n            foreach (object key in map.Keys)\r\n            {\r\n                string title = parms.GroupByColumn.ConvertGroupKeyToTitle(key);\r\n                if (!String.IsNullOrEmpty(parms.TitleFormat))\r\n                {\r\n                    int count = map[key].Count;\r\n                    string format = (count == 1 ? parms.TitleSingularFormat : parms.TitleFormat);\r\n                    try\r\n                    {\r\n                        title = String.Format(format, title, count);\r\n                    }\r\n                    catch (FormatException)\r\n                    {\r\n                        title = \"Invalid group format: \" + format;\r\n                    }\r\n                }\r\n\r\n                OLVGroup lvg = new OLVGroup(title);\r\n                lvg.Collapsible = HasCollapsibleGroups;\r\n                lvg.Key = key;\r\n                lvg.SortValue = key as IComparable;\r\n                lvg.Items = map[key];\r\n                if (parms.GroupByColumn.GroupFormatter != null)\r\n                    parms.GroupByColumn.GroupFormatter(lvg, parms);\r\n                groups.Add(lvg);\r\n            }\r\n\r\n            // Sort the groups\r\n            if (parms.GroupByOrder != SortOrder.None)\r\n                groups.Sort(parms.GroupComparer ?? new OLVGroupComparer(parms.GroupByOrder));\r\n\r\n            return groups;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Build/rebuild all the list view items in the list, preserving as much state as is possible\r\n        /// </summary>\r\n        public virtual void BuildList()\r\n        {\r\n            if (InvokeRequired)\r\n                Invoke(new MethodInvoker(BuildList));\r\n            else\r\n                BuildList(true);\r\n        }\r\n\r\n        private readonly Dictionary<object, OLVListItem> _listItemLookup = new();\r\n\r\n        /// <summary>\r\n        /// Build/rebuild all the list view items in the list\r\n        /// </summary>\r\n        /// <param name=\"shouldPreserveState\">If this is true, the control will try to preserve the selection,\r\n        /// focused item, and the scroll position (see Remarks)\r\n        /// </param>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// Use this method in situations were the contents of the list is basically the same\r\n        /// as previously.\r\n        /// </para>\r\n        /// </remarks>\r\n        public virtual void BuildList(bool shouldPreserveState)\r\n        {\r\n            if (Frozen || IsDisposed || Disposing)\r\n                return;\r\n\r\n            //Stopwatch sw = Stopwatch.StartNew();\r\n\r\n            try\r\n            {\r\n                ApplyExtendedStyles();\r\n                ClearHotItem();\r\n                int previousTopIndex = TopItemIndex;\r\n                Point currentScrollPosition = LowLevelScrollPosition;\r\n\r\n                IList previousSelection = new ArrayList();\r\n                Object previousFocus = null;\r\n                if (shouldPreserveState && objects != null)\r\n                {\r\n                    previousSelection = SelectedObjects;\r\n                    if (FocusedItem is OLVListItem focusedItem)\r\n                        previousFocus = focusedItem.RowObject;\r\n                }\r\n\r\n                IEnumerable objectsToDisplay = FilteredObjects;\r\n\r\n                BeginUpdate();\r\n                try\r\n                {\r\n                    _listItemLookup.Clear();\r\n                    Items.Clear();\r\n                    ListViewItemSorter = null;\r\n\r\n                    if (objectsToDisplay != null)\r\n                    {\r\n                        // Build a list of all our items and then display them. (Building\r\n                        // a list and then doing one AddRange is about 10-15% faster than individual adds)\r\n                        List<ListViewItem> itemList = new List<ListViewItem>(); // use ListViewItem to avoid co-variant conversion\r\n                        foreach (object rowObject in objectsToDisplay)\r\n                        {\r\n                            OLVListItem lvi = new OLVListItem(rowObject);\r\n                            FillInValues(lvi, rowObject);\r\n\r\n                            _listItemLookup.Add(rowObject, lvi);\r\n\r\n                            itemList.Add(lvi);\r\n                        }\r\n                        Items.AddRange(itemList.ToArray());\r\n                        Sort();\r\n\r\n                        if (shouldPreserveState)\r\n                        {\r\n                            SelectedObjects = previousSelection;\r\n                            FocusedItem = ModelToItem(previousFocus);\r\n                        }\r\n                    }\r\n                }\r\n                finally\r\n                {\r\n                    EndUpdate();\r\n                }\r\n\r\n                RefreshHotItem();\r\n\r\n                // We can only restore the scroll position after the EndUpdate() because\r\n                // of caching that the ListView does internally during a BeginUpdate/EndUpdate pair.\r\n                if (shouldPreserveState)\r\n                {\r\n                    // Restore the scroll position. TopItemIndex is best, but doesn't work\r\n                    // when the control is grouped.\r\n                    if (ShowGroups)\r\n                        LowLevelScroll(currentScrollPosition.X, currentScrollPosition.Y);\r\n                    else\r\n                        TopItemIndex = previousTopIndex;\r\n                }\r\n            }\r\n            catch (ObjectDisposedException) { }\r\n\r\n            // System.Diagnostics.Debug.WriteLine(String.Format(\"PERF - Building list for {2} objects took {0}ms / {1} ticks\", sw.ElapsedMilliseconds, sw.ElapsedTicks, this.GetItemCount()));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Clear any cached info this list may have been using\r\n        /// </summary>\r\n        public virtual void ClearCachedInfo()\r\n        {\r\n            // ObjectListView doesn't currently cache information but subclass do (or might)\r\n        }\r\n\r\n        /// <summary>\r\n        /// Apply all required extended styles to our control.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// Whenever .NET code sets an extended style, it erases all other extended styles\r\n        /// that it doesn't use. So, we have to explicit reapply the styles that we have\r\n        /// added.\r\n        /// </para>\r\n        /// <para>\r\n        /// Normally, we would override CreateParms property and update\r\n        /// the ExStyle member, but ListView seems to ignore all ExStyles that\r\n        /// it doesn't already know about. Worse, when we set the LVS_EX_HEADERINALLVIEWS \r\n        /// value, bad things happen (the control crashes!).\r\n        /// </para>\r\n        /// </remarks>\r\n        protected virtual void ApplyExtendedStyles()\r\n        {\r\n            const int LVS_EX_SUBITEMIMAGES = 0x00000002;\r\n            //const int LVS_EX_TRANSPARENTBKGND = 0x00400000;\r\n            const int LVS_EX_HEADERINALLVIEWS = 0x02000000;\r\n\r\n            const int STYLE_MASK = LVS_EX_SUBITEMIMAGES | LVS_EX_HEADERINALLVIEWS;\r\n            int style = 0;\r\n\r\n            if (ShowImagesOnSubItems && !VirtualMode)\r\n                style ^= LVS_EX_SUBITEMIMAGES;\r\n\r\n            if (ShowHeaderInAllViews)\r\n                style ^= LVS_EX_HEADERINALLVIEWS;\r\n\r\n            NativeMethods.SetExtendedStyle(this, style, STYLE_MASK);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Give the listview a reasonable size of its tiles, based on the number of lines of\r\n        /// information that each tile is going to display.\r\n        /// </summary>\r\n        public virtual void CalculateReasonableTileSize()\r\n        {\r\n            if (Columns.Count <= 0)\r\n                return;\r\n\r\n            List<OLVColumn> columns = AllColumns.FindAll(delegate (OLVColumn x)\r\n            {\r\n                return (x.Index == 0) || x.IsTileViewColumn;\r\n            });\r\n\r\n            int imageHeight = (LargeImageList == null ? 16 : LargeImageList.ImageSize.Height);\r\n            int dataHeight = (Font.Height + 1) * columns.Count;\r\n            int tileWidth = (TileSize.Width == 0 ? 200 : TileSize.Width);\r\n            int tileHeight = Math.Max(TileSize.Height, Math.Max(imageHeight, dataHeight));\r\n            TileSize = new Size(tileWidth, tileHeight);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Rebuild this list for the given view\r\n        /// </summary>\r\n        /// <param name=\"view\"></param>\r\n        public virtual void ChangeToFilteredColumns(View view)\r\n        {\r\n            // Store the state\r\n            SuspendSelectionEvents();\r\n            IList previousSelection = SelectedObjects;\r\n            int previousTopIndex = TopItemIndex;\r\n\r\n            Freeze();\r\n            Clear();\r\n            List<OLVColumn> columns = GetFilteredColumns(view);\r\n            if (view == View.Details || ShowHeaderInAllViews)\r\n            {\r\n                // Make sure all columns have a reasonable LastDisplayIndex\r\n                for (int index = 0; index < columns.Count; index++)\r\n                {\r\n                    if (columns[index].LastDisplayIndex == -1)\r\n                        columns[index].LastDisplayIndex = index;\r\n                }\r\n                // ListView will ignore DisplayIndex FOR ALL COLUMNS if there are any errors, \r\n                // e.g. duplicates (two columns with the same DisplayIndex) or gaps. \r\n                // LastDisplayIndex isn't guaranteed to be unique, so we just sort the columns by\r\n                // the last position they were displayed and use that to generate a sequence \r\n                // we can use for the DisplayIndex values.\r\n                List<OLVColumn> columnsInDisplayOrder = new List<OLVColumn>(columns);\r\n                columnsInDisplayOrder.Sort(delegate (OLVColumn x, OLVColumn y) { return (x.LastDisplayIndex - y.LastDisplayIndex); });\r\n                int i = 0;\r\n                foreach (OLVColumn col in columnsInDisplayOrder)\r\n                    col.DisplayIndex = i++;\r\n            }\r\n\r\n            // ReSharper disable once CoVariantArrayConversion\r\n            Columns.AddRange(columns.ToArray());\r\n            if (view == View.Details || ShowHeaderInAllViews)\r\n                ShowSortIndicator();\r\n            UpdateFiltering();\r\n            Unfreeze();\r\n\r\n            // Restore the state\r\n            SelectedObjects = previousSelection;\r\n            TopItemIndex = previousTopIndex;\r\n            ResumeSelectionEvents();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove all items from this list\r\n        /// </summary>\r\n        /// <remark>This method can safely be called from background threads.</remark>\r\n        public virtual void ClearObjects()\r\n        {\r\n            if (InvokeRequired)\r\n                Invoke(new MethodInvoker(ClearObjects));\r\n            else\r\n                SetObjects(null);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Reset the memory of which URLs have been visited\r\n        /// </summary>\r\n        public virtual void ClearUrlVisited()\r\n        {\r\n            visitedUrlMap = new Dictionary<string, bool>();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Copy a text and html representation of the selected rows onto the clipboard.\r\n        /// </summary>\r\n        /// <remarks>Be careful when using this with virtual lists. If the user has selected\r\n        /// 10,000,000 rows, this method will faithfully try to copy all of them to the clipboard.\r\n        /// From the user's point of view, your program will appear to have hung.</remarks>\r\n        public virtual void CopySelectionToClipboard()\r\n        {\r\n            IList selection = SelectedObjects;\r\n            if (selection.Count == 0)\r\n                return;\r\n\r\n            // Use the DragSource object to create the data object, if so configured.\r\n            // This relies on the assumption that DragSource will handle the selected objects only.\r\n            // It is legal for StartDrag to return null.\r\n            object data = null;\r\n            if (CopySelectionOnControlCUsesDragSource && DragSource != null)\r\n                data = DragSource.StartDrag(this, MouseButtons.Left, ModelToItem(selection[0]));\r\n\r\n            Clipboard.SetDataObject(data ?? new OLVDataObject(this, selection));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Copy a text and html representation of the given objects onto the clipboard.\r\n        /// </summary>\r\n        public virtual void CopyObjectsToClipboard(IList objectsToCopy)\r\n        {\r\n            if (objectsToCopy.Count == 0)\r\n                return;\r\n\r\n            // We don't know where these objects came from, so we can't use the DragSource to create\r\n            // the data object, like we do with CopySelectionToClipboard() above.\r\n            OLVDataObject dataObject = new OLVDataObject(this, objectsToCopy);\r\n            dataObject.CreateTextFormats();\r\n            Clipboard.SetDataObject(dataObject);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a html representation of the given objects\r\n        /// </summary>\r\n        public virtual string ObjectsToHtml(IList objectsToConvert)\r\n        {\r\n            if (objectsToConvert.Count == 0)\r\n                return String.Empty;\r\n\r\n            OLVExporter exporter = new OLVExporter(this, objectsToConvert);\r\n            return exporter.ExportTo(OLVExporter.ExportFormat.HTML);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Deselect all rows in the listview\r\n        /// </summary>\r\n        public virtual void DeselectAll()\r\n        {\r\n            NativeMethods.DeselectAllItems(this);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the ListViewItem that appears immediately after the given item.\r\n        /// If the given item is null, the first item in the list will be returned.\r\n        /// Return null if the given item is the last item.\r\n        /// </summary>\r\n        /// <param name=\"itemToFind\">The item that is before the item that is returned, or null</param>\r\n        /// <returns>A ListViewItem</returns>\r\n        public virtual OLVListItem GetNextItem(OLVListItem itemToFind)\r\n        {\r\n            if (ShowGroups)\r\n            {\r\n                bool isFound = (itemToFind == null);\r\n                foreach (ListViewGroup group in Groups)\r\n                {\r\n                    foreach (OLVListItem olvi in group.Items)\r\n                    {\r\n                        if (isFound)\r\n                            return olvi;\r\n                        isFound = (itemToFind == olvi);\r\n                    }\r\n                }\r\n                return null;\r\n            }\r\n            if (GetItemCount() == 0)\r\n                return null;\r\n            if (itemToFind == null)\r\n                return GetItem(0);\r\n            if (itemToFind.Index == GetItemCount() - 1)\r\n                return null;\r\n            return GetItem(itemToFind.Index + 1);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the last item in the order they are shown to the user.\r\n        /// If the control is not grouped, the display order is the same as the\r\n        /// sorted list order. But if the list is grouped, the display order is different.\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        public virtual OLVListItem GetLastItemInDisplayOrder()\r\n        {\r\n            if (!ShowGroups)\r\n                return GetItem(GetItemCount() - 1);\r\n\r\n            if (Groups.Count > 0)\r\n            {\r\n                ListViewGroup lastGroup = Groups[Groups.Count - 1];\r\n                if (lastGroup.Items.Count > 0)\r\n                    return (OLVListItem)lastGroup.Items[lastGroup.Items.Count - 1];\r\n            }\r\n\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the n'th item (0-based) in the order they are shown to the user.\r\n        /// If the control is not grouped, the display order is the same as the\r\n        /// sorted list order. But if the list is grouped, the display order is different.\r\n        /// </summary>\r\n        /// <param name=\"n\"></param>\r\n        /// <returns></returns>\r\n        public virtual OLVListItem GetNthItemInDisplayOrder(int n)\r\n        {\r\n            if (!ShowGroups || Groups.Count == 0)\r\n                return GetItem(n);\r\n\r\n            foreach (ListViewGroup group in Groups)\r\n            {\r\n                if (n < group.Items.Count)\r\n                    return (OLVListItem)group.Items[n];\r\n\r\n                n -= group.Items.Count;\r\n            }\r\n\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the display index of the given listviewitem index.\r\n        /// If the control is not grouped, the display order is the same as the\r\n        /// sorted list order. But if the list is grouped, the display order is different.\r\n        /// </summary>\r\n        /// <param name=\"itemIndex\"></param>\r\n        /// <returns></returns>\r\n        public virtual int GetDisplayOrderOfItemIndex(int itemIndex)\r\n        {\r\n            if (!ShowGroups || Groups.Count == 0)\r\n                return itemIndex;\r\n\r\n            // TODO: This could be optimized\r\n            int i = 0;\r\n            foreach (ListViewGroup lvg in Groups)\r\n            {\r\n                foreach (ListViewItem lvi in lvg.Items)\r\n                {\r\n                    if (lvi.Index == itemIndex)\r\n                        return i;\r\n                    i++;\r\n                }\r\n            }\r\n\r\n            return -1;\r\n        }\r\n\r\n        private int GetDisplayOrderOfItemIndex(ListViewItem listViewItem)\r\n        {\r\n            if (!ShowGroups || Groups.Count == 0)\r\n                return listViewItem.Index;\r\n\r\n            int i = 0;\r\n            foreach (ListViewGroup lvg in Groups)\r\n            {\r\n                foreach (ListViewItem lvi in lvg.Items)\r\n                {\r\n                    if (lvi == listViewItem)\r\n                        return i;\r\n                    i++;\r\n                }\r\n            }\r\n\r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the ListViewItem that appears immediately before the given item.\r\n        /// If the given item is null, the last item in the list will be returned.\r\n        /// Return null if the given item is the first item.\r\n        /// </summary>\r\n        /// <param name=\"itemToFind\">The item that is before the item that is returned</param>\r\n        /// <returns>A ListViewItem</returns>\r\n        public virtual OLVListItem GetPreviousItem(OLVListItem itemToFind)\r\n        {\r\n            if (ShowGroups)\r\n            {\r\n                OLVListItem previousItem = null;\r\n                foreach (ListViewGroup group in Groups)\r\n                {\r\n                    foreach (OLVListItem lvi in group.Items)\r\n                    {\r\n                        if (lvi == itemToFind)\r\n                            return previousItem;\r\n\r\n                        previousItem = lvi;\r\n                    }\r\n                }\r\n                return itemToFind == null ? previousItem : null;\r\n            }\r\n            if (GetItemCount() == 0)\r\n                return null;\r\n            if (itemToFind == null)\r\n                return GetItem(GetItemCount() - 1);\r\n            if (itemToFind.Index == 0)\r\n                return null;\r\n            return GetItem(itemToFind.Index - 1);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Insert the given collection of objects before the given position\r\n        /// </summary>\r\n        /// <param name=\"index\">Where to insert the objects</param>\r\n        /// <param name=\"modelObjects\">The objects to be inserted</param>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This operation only makes sense of non-sorted, non-grouped\r\n        /// lists, since any subsequent sort/group operation will rearrange\r\n        /// the list.\r\n        /// </para>\r\n        /// <para>This method only works on ObjectListViews and FastObjectListViews.</para>\r\n        ///</remarks>\r\n        public virtual void InsertObjects(int index, ICollection modelObjects)\r\n        {\r\n            if (InvokeRequired)\r\n            {\r\n                Invoke((MethodInvoker)delegate ()\r\n                {\r\n                    InsertObjects(index, modelObjects);\r\n                });\r\n                return;\r\n            }\r\n            if (modelObjects == null)\r\n                return;\r\n\r\n            BeginUpdate();\r\n            try\r\n            {\r\n                // Give the world a chance to cancel or change the added objects\r\n                ItemsAddingEventArgs args = new ItemsAddingEventArgs(modelObjects);\r\n                OnItemsAdding(args);\r\n                if (args.Canceled)\r\n                    return;\r\n                modelObjects = args.ObjectsToAdd;\r\n\r\n                TakeOwnershipOfObjects();\r\n                ArrayList ourObjects = EnumerableToArray(Objects, false);\r\n\r\n                // If we are filtering the list, there is no way to efficiently\r\n                // insert the objects, so just put them into our collection and rebuild.\r\n                if (IsFiltering)\r\n                {\r\n                    index = Math.Max(0, Math.Min(index, ourObjects.Count));\r\n                    ourObjects.InsertRange(index, modelObjects);\r\n                    BuildList(true);\r\n                }\r\n                else\r\n                {\r\n                    ListViewItemSorter = null;\r\n                    index = Math.Max(0, Math.Min(index, GetItemCount()));\r\n                    int i = index;\r\n                    foreach (object modelObject in modelObjects)\r\n                    {\r\n                        if (modelObject != null)\r\n                        {\r\n                            ourObjects.Insert(i, modelObject);\r\n                            OLVListItem lvi = new OLVListItem(modelObject);\r\n                            FillInValues(lvi, modelObject);\r\n                            Items.Insert(i, lvi);\r\n                            i++;\r\n                        }\r\n                    }\r\n\r\n                    for (i = index; i < GetItemCount(); i++)\r\n                    {\r\n                        OLVListItem lvi = GetItem(i);\r\n                        SetSubItemImages(lvi.Index, lvi);\r\n                    }\r\n\r\n                    PostProcessRows();\r\n                }\r\n\r\n                // Tell the world that the list has changed\r\n                SubscribeNotifications(modelObjects);\r\n                OnItemsChanged(new ItemsChangedEventArgs());\r\n            }\r\n            finally\r\n            {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return true if the row representing the given model is selected\r\n        /// </summary>\r\n        /// <param name=\"model\">The model object to look for</param>\r\n        /// <returns>Is the row selected</returns>\r\n        public bool IsSelected(object model)\r\n        {\r\n            OLVListItem item = ModelToItem(model);\r\n            return item != null && item.Selected;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Has the given URL been visited?\r\n        /// </summary>\r\n        /// <param name=\"url\">The string to be consider</param>\r\n        /// <returns>Has it been visited</returns>\r\n        public virtual bool IsUrlVisited(string url)\r\n        {\r\n            return visitedUrlMap.ContainsKey(url);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Scroll the ListView by the given deltas.\r\n        /// </summary>\r\n        /// <param name=\"dx\">Horizontal delta</param>\r\n        /// <param name=\"dy\">Vertical delta</param>\r\n        public void LowLevelScroll(int dx, int dy)\r\n        {\r\n            NativeMethods.Scroll(this, dx, dy);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a point that represents the current horizontal and vertical scroll positions \r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Point LowLevelScrollPosition\r\n        {\r\n            get\r\n            {\r\n                return new Point(NativeMethods.GetScrollPosition(this, true), NativeMethods.GetScrollPosition(this, false));\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remember that the given URL has been visited\r\n        /// </summary>\r\n        /// <param name=\"url\">The url to be remembered</param>\r\n        /// <remarks>This does not cause the control be redrawn</remarks>\r\n        public virtual void MarkUrlVisited(string url)\r\n        {\r\n            visitedUrlMap[url] = true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Move the given collection of objects to the given index.\r\n        /// </summary>\r\n        /// <remarks>This operation only makes sense on non-grouped ObjectListViews.</remarks>\r\n        /// <param name=\"index\"></param>\r\n        /// <param name=\"modelObjects\"></param>\r\n        public virtual void MoveObjects(int index, ICollection modelObjects)\r\n        {\r\n\r\n            // We are going to remove all the given objects from our list\r\n            // and then insert them at the given location\r\n            TakeOwnershipOfObjects();\r\n            ArrayList ourObjects = EnumerableToArray(Objects, false);\r\n\r\n            List<int> indicesToRemove = new List<int>();\r\n            foreach (object modelObject in modelObjects)\r\n            {\r\n                if (modelObject != null)\r\n                {\r\n                    int i = IndexOf(modelObject);\r\n                    if (i >= 0)\r\n                    {\r\n                        indicesToRemove.Add(i);\r\n                        ourObjects.Remove(modelObject);\r\n                        if (i <= index)\r\n                            index--;\r\n                    }\r\n                }\r\n            }\r\n\r\n            // Remove the objects in reverse order so earlier\r\n            // deletes don't change the index of later ones\r\n            indicesToRemove.Sort();\r\n            indicesToRemove.Reverse();\r\n            try\r\n            {\r\n                BeginUpdate();\r\n                foreach (int i in indicesToRemove)\r\n                {\r\n                    Items.RemoveAt(i);\r\n                }\r\n                InsertObjects(index, modelObjects);\r\n            }\r\n            finally\r\n            {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate what item is under the given point?\r\n        /// </summary>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        /// <returns></returns>\r\n        public new ListViewHitTestInfo HitTest(int x, int y)\r\n        {\r\n            // Everything costs something. Playing with the layout of the header can cause problems\r\n            // with the hit testing. If the header shrinks, the underlying control can throw a tantrum.\r\n            try\r\n            {\r\n                return base.HitTest(x, y);\r\n            }\r\n            catch (ArgumentOutOfRangeException)\r\n            {\r\n                return new ListViewHitTestInfo(null, null, ListViewHitTestLocations.None);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Perform a hit test using the Windows control's SUBITEMHITTEST message.\r\n        /// This provides information about group hits that the standard ListView.HitTest() does not.\r\n        /// </summary>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        /// <returns></returns>\r\n        protected OlvListViewHitTestInfo LowLevelHitTest(int x, int y)\r\n        {\r\n\r\n            // If it's not even in the control, don't bother with anything else\r\n            if (!ClientRectangle.Contains(x, y))\r\n                return new OlvListViewHitTestInfo(null, null, 0, null, 0);\r\n\r\n            // Is the point over the header?\r\n            OlvListViewHitTestInfo.HeaderHitTestInfo headerHitTestInfo = HeaderControl.HitTest(x, y);\r\n            if (headerHitTestInfo != null)\r\n                return new OlvListViewHitTestInfo(this, headerHitTestInfo.ColumnIndex, headerHitTestInfo.IsOverCheckBox, headerHitTestInfo.OverDividerIndex);\r\n\r\n            // Call the native hit test method, which is a little confusing.\r\n            NativeMethods.LVHITTESTINFO lParam = new NativeMethods.LVHITTESTINFO();\r\n            lParam.pt_x = x;\r\n            lParam.pt_y = y;\r\n            int index = NativeMethods.HitTest(this, ref lParam);\r\n\r\n            // Setup the various values we need to make our hit test structure\r\n            bool isGroupHit = (lParam.flags & (int)HitTestLocationEx.LVHT_EX_GROUP) != 0;\r\n            OLVListItem hitItem = isGroupHit || index == -1 ? null : GetItem(index);\r\n            OLVListSubItem subItem = (View == View.Details && hitItem != null) ? hitItem.GetSubItem(lParam.iSubItem) : null;\r\n\r\n            // Figure out which group is involved in the hit test. This is a little complicated:\r\n            // If the list is virtual:\r\n            //   - the returned value is list view item index\r\n            //   - iGroup is the *index* of the hit group.\r\n            // If the list is not virtual:\r\n            //   - iGroup is always -1.\r\n            //   - if the point is over a group, the returned value is the *id* of the hit group.\r\n            //   - if the point is not over a group, the returned value is list view item index.\r\n            OLVGroup group = null;\r\n            if (ShowGroups && OLVGroups != null)\r\n            {\r\n                if (VirtualMode)\r\n                {\r\n                    group = lParam.iGroup >= 0 && lParam.iGroup < OLVGroups.Count ? OLVGroups[lParam.iGroup] : null;\r\n                }\r\n                else\r\n                {\r\n                    if (isGroupHit)\r\n                    {\r\n                        foreach (OLVGroup olvGroup in OLVGroups)\r\n                        {\r\n                            if (olvGroup.GroupId == index)\r\n                            {\r\n                                group = olvGroup;\r\n                                break;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            OlvListViewHitTestInfo olvListViewHitTest = new OlvListViewHitTestInfo(hitItem, subItem, lParam.flags, group, lParam.iSubItem);\r\n            // System.Diagnostics.Debug.WriteLine(String.Format(\"HitTest({0}, {1})=>{2}\", x, y, olvListViewHitTest));\r\n            return olvListViewHitTest;\r\n        }\r\n\r\n        /// <summary>\r\n        /// What is under the given point? This takes the various parts of a cell into accout, including\r\n        /// any custom parts that a custom renderer might use\r\n        /// </summary>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        /// <returns>An information block about what is under the point</returns>\r\n        public virtual OlvListViewHitTestInfo OlvHitTest(int x, int y)\r\n        {\r\n            OlvListViewHitTestInfo hti = LowLevelHitTest(x, y);\r\n\r\n            // There is a bug/\"feature\" of the ListView concerning hit testing.\r\n            // If FullRowSelect is false and the point is over cell 0 but not on\r\n            // the text or icon, HitTest will not register a hit. We could turn\r\n            // FullRowSelect on, do the HitTest, and then turn it off again, but\r\n            // toggling FullRowSelect in that way messes up the tooltip in the\r\n            // underlying control. So we have to find another way.\r\n            //\r\n            // It's too hard to try to write the hit test from scratch. Grouping (for\r\n            // example) makes it just too complicated. So, we have to use HitTest\r\n            // but try to get around its limits.\r\n            //\r\n            // First step is to determine if the point was within column 0.\r\n            // If it was, then we only have to determine if there is an actual row\r\n            // under the point. If there is, then we know that the point is over cell 0.\r\n            // So we try a Battleship-style approach: is there a subcell to the right\r\n            // of cell 0? This will return a false negative if column 0 is the rightmost column,\r\n            // so we also check for a subcell to the left. But if only column 0 is visible,\r\n            // then that will fail too, so we check for something at the very left of the\r\n            // control.\r\n            //\r\n            // This will still fail under pathological conditions. If column 0 fills\r\n            // the whole listview and no part of the text column 0 is visible\r\n            // (because it is horizontally scrolled offscreen), then the hit test will fail.\r\n\r\n            // Are we in the buggy context? Details view, not full row select, and\r\n            // failing to find anything\r\n            if (hti.Item == null && !FullRowSelect && View == View.Details)\r\n            {\r\n                // Is the point within the column 0? If it is, maybe it should have been a hit.\r\n                // Let's test slightly to the right and then to left of column 0. Hopefully one\r\n                // of those will hit a subitem\r\n                Point sides = NativeMethods.GetScrolledColumnSides(this, 0);\r\n                if (x >= sides.X && x <= sides.Y)\r\n                {\r\n                    // We look for:\r\n                    // - any subitem to the right of cell 0?\r\n                    // - any subitem to the left of cell 0?\r\n                    // - cell 0 at the left edge of the screen\r\n                    hti = LowLevelHitTest(sides.Y + 4, y);\r\n                    if (hti.Item == null)\r\n                        hti = LowLevelHitTest(sides.X - 4, y);\r\n                    if (hti.Item == null)\r\n                        hti = LowLevelHitTest(4, y);\r\n\r\n                    if (hti.Item != null)\r\n                    {\r\n                        // We hit something! So, the original point must have been in cell 0\r\n                        hti.ColumnIndex = 0;\r\n                        hti.SubItem = hti.Item.GetSubItem(0);\r\n                        hti.Location = ListViewHitTestLocations.None;\r\n                        hti.HitTestLocation = HitTestLocation.InCell;\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (OwnerDraw)\r\n                CalculateOwnerDrawnHitTest(hti, x, y);\r\n            else\r\n                CalculateStandardHitTest(hti, x, y);\r\n\r\n            return hti;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Perform a hit test when the control is not owner drawn\r\n        /// </summary>\r\n        /// <param name=\"hti\"></param>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        protected virtual void CalculateStandardHitTest(OlvListViewHitTestInfo hti, int x, int y)\r\n        {\r\n\r\n            // Standard hit test works fine for the primary column\r\n            if (View != View.Details || hti.ColumnIndex == 0 ||\r\n                hti.SubItem == null || hti.Column == null)\r\n                return;\r\n\r\n            Rectangle cellBounds = hti.SubItem.Bounds;\r\n            bool hasImage = (GetActualImageIndex(hti.SubItem.ImageSelector) != -1);\r\n\r\n            // Unless we say otherwise, it was an general incell hit\r\n            hti.HitTestLocation = HitTestLocation.InCell;\r\n\r\n            // Check if the point is over where an image should be.\r\n            // If there is a checkbox or image there, tag it and exit.\r\n            Rectangle r = cellBounds;\r\n            r.Width = SmallImageSize.Width;\r\n            if (r.Contains(x, y))\r\n            {\r\n                if (hti.Column.CheckBoxes)\r\n                {\r\n                    hti.HitTestLocation = HitTestLocation.CheckBox;\r\n                    return;\r\n                }\r\n                if (hasImage)\r\n                {\r\n                    hti.HitTestLocation = HitTestLocation.Image;\r\n                    return;\r\n                }\r\n            }\r\n\r\n            // Figure out where the text actually is and if the point is in it\r\n            // The standard HitTest assumes that any point inside a subitem is\r\n            // a hit on Text -- which is clearly not true.\r\n            Rectangle textBounds = cellBounds;\r\n            textBounds.X += 4;\r\n            if (hasImage)\r\n                textBounds.X += SmallImageSize.Width;\r\n\r\n            Size proposedSize = new Size(textBounds.Width, textBounds.Height);\r\n            Size textSize = TextRenderer.MeasureText(hti.SubItem.Text, Font, proposedSize, TextFormatFlags.EndEllipsis | TextFormatFlags.SingleLine | TextFormatFlags.NoPrefix);\r\n            textBounds.Width = textSize.Width;\r\n\r\n            switch (hti.Column.TextAlign)\r\n            {\r\n                case HorizontalAlignment.Center:\r\n                    textBounds.X += (cellBounds.Right - cellBounds.Left - textSize.Width) / 2;\r\n                    break;\r\n                case HorizontalAlignment.Right:\r\n                    textBounds.X = cellBounds.Right - textSize.Width;\r\n                    break;\r\n            }\r\n            if (textBounds.Contains(x, y))\r\n            {\r\n                hti.HitTestLocation = HitTestLocation.Text;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Perform a hit test when the control is owner drawn. This hands off responsibility\r\n        /// to the renderer.\r\n        /// </summary>\r\n        /// <param name=\"hti\"></param>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        protected virtual void CalculateOwnerDrawnHitTest(OlvListViewHitTestInfo hti, int x, int y)\r\n        {\r\n            // If the click wasn't on an item, give up\r\n            if (hti.Item == null)\r\n                return;\r\n\r\n            // If the list is showing column, but they clicked outside the columns, also give up\r\n            if (View == View.Details && hti.Column == null)\r\n                return;\r\n\r\n            // Which renderer was responsible for drawing that point\r\n            IRenderer renderer = View == View.Details\r\n                ? GetCellRenderer(hti.RowObject, hti.Column)\r\n                : ItemRenderer;\r\n\r\n            // We can't decide who was responsible. Give up\r\n            if (renderer == null)\r\n                return;\r\n\r\n            // Ask the responsible renderer what is at that point\r\n            renderer.HitTest(hti, x, y);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Pause (or unpause) all animations in the list\r\n        /// </summary>\r\n        /// <param name=\"isPause\">true to pause, false to unpause</param>\r\n        public virtual void PauseAnimations(bool isPause)\r\n        {\r\n            for (int i = 0; i < Columns.Count; i++)\r\n            {\r\n                OLVColumn col = GetColumn(i);\r\n                if (col.Renderer is ImageRenderer renderer)\r\n                    renderer.Paused = isPause;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Rebuild the columns based upon its current view and column visibility settings\r\n        /// </summary>\r\n        public virtual void RebuildColumns()\r\n        {\r\n            ChangeToFilteredColumns(View);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove the given model object from the ListView\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model to be removed</param>\r\n        /// <remarks>See RemoveObjects() for more details\r\n        /// <para>This method is thread-safe.</para>\r\n        /// </remarks>\r\n        public virtual void RemoveObject(object modelObject)\r\n        {\r\n            if (InvokeRequired)\r\n                Invoke((MethodInvoker)delegate () { RemoveObject(modelObject); });\r\n            else\r\n                RemoveObjects(new object[] { modelObject });\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove all of the given objects from the control.\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">Collection of objects to be removed</param>\r\n        /// <remarks>\r\n        /// <para>Nulls and model objects that are not in the ListView are silently ignored.</para>\r\n        /// <para>This method is thread-safe.</para>\r\n        /// </remarks>\r\n        public virtual void RemoveObjects(ICollection modelObjects)\r\n        {\r\n            if (InvokeRequired)\r\n            {\r\n                Invoke((MethodInvoker)delegate () { RemoveObjects(modelObjects); });\r\n                return;\r\n            }\r\n            if (modelObjects == null)\r\n                return;\r\n\r\n            BeginUpdate();\r\n            try\r\n            {\r\n                // Give the world a chance to cancel or change the added objects\r\n                ItemsRemovingEventArgs args = new ItemsRemovingEventArgs(modelObjects);\r\n                OnItemsRemoving(args);\r\n                if (args.Canceled)\r\n                    return;\r\n                modelObjects = args.ObjectsToRemove;\r\n\r\n                TakeOwnershipOfObjects();\r\n                ArrayList ourObjects = EnumerableToArray(Objects, false);\r\n                foreach (object modelObject in modelObjects)\r\n                {\r\n                    if (modelObject != null)\r\n                    {\r\n                        // ReSharper disable PossibleMultipleEnumeration\r\n                        int i = ourObjects.IndexOf(modelObject);\r\n                        if (i >= 0)\r\n                            ourObjects.RemoveAt(i);\r\n                        // ReSharper restore PossibleMultipleEnumeration\r\n                        i = IndexOf(modelObject);\r\n                        if (i >= 0)\r\n                            Items.RemoveAt(i);\r\n                    }\r\n                }\r\n                PostProcessRows();\r\n\r\n                // Tell the world that the list has changed\r\n                UnsubscribeNotifications(modelObjects);\r\n                OnItemsChanged(new ItemsChangedEventArgs());\r\n            }\r\n            finally\r\n            {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Select all rows in the listview\r\n        /// </summary>\r\n        public virtual void SelectAll()\r\n        {\r\n            NativeMethods.SelectAllItems(this);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the given image to be fixed in the bottom right of the list view.\r\n        /// This image will not scroll when the list view scrolls.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This method uses ListView's native ability to display a background image.\r\n        /// It has a few limitations: \r\n        /// </para>\r\n        /// <list type=\"bullet\">\r\n        /// <item><description>It doesn't work well with owner drawn mode. In owner drawn mode, each cell draws itself,\r\n        /// including its background, which covers the background image.</description></item>\r\n        /// <item><description>It doesn't look very good when grid lines are enabled, since the grid lines are drawn over the image.</description></item>\r\n        /// <item><description>It does not work at all on XP.</description></item>\r\n        /// <item><description>Obviously, it doesn't look good when alternate row background colors are enabled.</description></item>\r\n        /// </list>\r\n        /// <para>\r\n        /// If you can live with these limitations, native watermarks are quite neat. They are true backgrounds, not\r\n        /// translucent overlays like the OverlayImage uses. They also have the decided advantage over overlays in that\r\n        /// they work correctly even in MDI applications.\r\n        /// </para>\r\n        /// <para>Setting this clears any background image.</para>\r\n        /// </remarks>\r\n        /// <param name=\"image\">The image to be drawn. If null, any existing image will be removed.</param>\r\n        public void SetNativeBackgroundWatermark(Image image)\r\n        {\r\n            NativeMethods.SetBackgroundImage(this, image, true, false, 0, 0);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the given image to be background of the ListView so that it appears at the given\r\n        /// percentage offsets within the list.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>This has the same limitations as described in <see cref=\"SetNativeBackgroundWatermark\"/>. Make sure those limitations\r\n        /// are understood before using the method.</para>\r\n        /// <para>This is very similar to setting the <see cref=\"System.Windows.Forms.Control.BackgroundImage\"/> property of the standard .NET ListView, except that the standard\r\n        /// BackgroundImage does not handle images with transparent areas properly -- it renders transparent areas as black. This \r\n        /// method does not have that problem.</para>\r\n        /// <para>Setting this clears any background watermark.</para>\r\n        /// </remarks>\r\n        /// <param name=\"image\">The image to be drawn. If null, any existing image will be removed.</param>\r\n        /// <param name=\"xOffset\">The horizontal percentage where the image will be placed. 0 is absolute left, 100 is absolute right.</param>\r\n        /// <param name=\"yOffset\">The vertical percentage where the image will be placed.</param>\r\n        public void SetNativeBackgroundImage(Image image, int xOffset, int yOffset)\r\n        {\r\n            NativeMethods.SetBackgroundImage(this, image, false, false, xOffset, yOffset);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the given image to be the tiled background of the ListView.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>This has the same limitations as described in <see cref=\"SetNativeBackgroundWatermark\"/> and <see cref=\"SetNativeBackgroundImage\"/>.\r\n        /// Make sure those limitations\r\n        /// are understood before using the method.</para>\r\n        /// </remarks>\r\n        /// <param name=\"image\">The image to be drawn. If null, any existing image will be removed.</param>\r\n        public void SetNativeBackgroundTiledImage(Image image)\r\n        {\r\n            NativeMethods.SetBackgroundImage(this, image, false, true, 0, 0);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the collection of objects that will be shown in this list view.\r\n        /// </summary>\r\n        /// <remark>This method can safely be called from background threads.</remark>\r\n        /// <remarks>The list is updated immediately</remarks>\r\n        /// <param name=\"collection\">The objects to be displayed</param>\r\n        public virtual void SetObjects(IEnumerable collection)\r\n        {\r\n            SetObjects(collection, false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the collection of objects that will be shown in this list view.\r\n        /// </summary>\r\n        /// <remark>This method can safely be called from background threads.</remark>\r\n        /// <remarks>The list is updated immediately</remarks>\r\n        /// <param name=\"collection\">The objects to be displayed</param>\r\n        /// <param name=\"preserveState\">Should the state of the list be preserved as far as is possible.</param>\r\n        public virtual void SetObjects(IEnumerable collection, bool preserveState)\r\n        {\r\n            if (InvokeRequired)\r\n            {\r\n                Invoke((MethodInvoker)delegate { SetObjects(collection, preserveState); });\r\n                return;\r\n            }\r\n\r\n            // Give the world a chance to cancel or change the assigned collection\r\n            ItemsChangingEventArgs args = new ItemsChangingEventArgs(objects, collection);\r\n            OnItemsChanging(args);\r\n            if (args.Canceled)\r\n                return;\r\n            collection = args.NewObjects;\r\n\r\n            // If we own the current list and they change to another list, we don't own it anymore\r\n            if (isOwnerOfObjects && !ReferenceEquals(objects, collection))\r\n                isOwnerOfObjects = false;\r\n            objects = collection;\r\n            BuildList(preserveState);\r\n\r\n            // Tell the world that the list has changed\r\n            UpdateNotificationSubscriptions(objects);\r\n            OnItemsChanged(new ItemsChangedEventArgs());\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the given model object into the ListView. The model will be added if it doesn't already exist.\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model to be updated</param>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// See <see cref=\"RemoveObjects(ICollection)\"/> for more details\r\n        /// </para>\r\n        /// <para>This method is thread-safe.</para>\r\n        /// <para>This method will cause the list to be resorted.</para>\r\n        /// <para>This method only works on ObjectListViews and FastObjectListViews.</para>\r\n        /// </remarks>\r\n        public virtual void UpdateObject(object modelObject)\r\n        {\r\n            if (InvokeRequired)\r\n                Invoke((MethodInvoker)delegate () { UpdateObject(modelObject); });\r\n            else\r\n                UpdateObjects(new object[] { modelObject });\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the pre-existing models that are equal to the given objects. If any of the model doesn't\r\n        /// already exist in the control, they will be added.\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">Collection of objects to be updated/added</param>\r\n        /// <remarks>\r\n        /// <para>This method will cause the list to be resorted.</para>\r\n        /// <para>Nulls are silently ignored.</para>\r\n        /// <para>This method is thread-safe.</para>\r\n        /// <para>This method only works on ObjectListViews and FastObjectListViews.</para>\r\n        /// </remarks>\r\n        public virtual void UpdateObjects(ICollection modelObjects)\r\n        {\r\n            if (InvokeRequired)\r\n            {\r\n                Invoke((MethodInvoker)delegate () { UpdateObjects(modelObjects); });\r\n                return;\r\n            }\r\n            if (modelObjects == null || modelObjects.Count == 0)\r\n                return;\r\n\r\n            BeginUpdate();\r\n            try\r\n            {\r\n                UnsubscribeNotifications(modelObjects);\r\n\r\n                ArrayList objectsToAdd = new ArrayList();\r\n\r\n                TakeOwnershipOfObjects();\r\n                ArrayList ourObjects = EnumerableToArray(Objects, false);\r\n                foreach (object modelObject in modelObjects)\r\n                {\r\n                    if (modelObject != null)\r\n                    {\r\n                        int i = ourObjects.IndexOf(modelObject);\r\n                        if (i < 0)\r\n                            objectsToAdd.Add(modelObject);\r\n                        else\r\n                        {\r\n                            ourObjects[i] = modelObject;\r\n                            OLVListItem olvi = ModelToItem(modelObject);\r\n                            if (olvi != null)\r\n                            {\r\n                                olvi.RowObject = modelObject;\r\n                                RefreshItem(olvi);\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                PostProcessRows();\r\n\r\n                AddObjects(objectsToAdd);\r\n\r\n                // Tell the world that the list has changed\r\n                SubscribeNotifications(modelObjects);\r\n                OnItemsChanged(new ItemsChangedEventArgs());\r\n            }\r\n            finally\r\n            {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change any subscriptions to INotifyPropertyChanged events on our current\r\n        /// model objects so that we no longer listen for events on the old models\r\n        /// and do listen for events on the given collection.\r\n        /// </summary>\r\n        /// <remarks>This does nothing if UseNotifyPropertyChanged is false.</remarks>\r\n        /// <param name=\"collection\"></param>\r\n        protected virtual void UpdateNotificationSubscriptions(IEnumerable collection)\r\n        {\r\n            if (!UseNotifyPropertyChanged)\r\n                return;\r\n\r\n            // We could calculate a symmetric difference between the old models and the new models\r\n            // except that we don't have the previous models at this point.\r\n\r\n            UnsubscribeNotifications(null);\r\n            SubscribeNotifications(collection ?? Objects);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not ObjectListView should subscribe to INotifyPropertyChanged\r\n        /// events on the model objects that it is given.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This should be set before calling SetObjects(). If you set this to false,\r\n        /// ObjectListView will unsubscribe to all current model objects.\r\n        /// </para>\r\n        /// <para>If you set this to true on a virtual list, the ObjectListView will \r\n        /// walk all the objects in the list trying to subscribe to change notifications.\r\n        /// If you have 10,000,000 items in your virtual list, this may take some time.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Should ObjectListView listen for property changed events on the model objects?\"),\r\n        DefaultValue(false)]\r\n        public bool UseNotifyPropertyChanged\r\n        {\r\n            get { return useNotifyPropertyChanged; }\r\n            set\r\n            {\r\n                if (useNotifyPropertyChanged == value)\r\n                    return;\r\n                useNotifyPropertyChanged = value;\r\n                if (value)\r\n                    SubscribeNotifications(Objects);\r\n                else\r\n                    UnsubscribeNotifications(null);\r\n            }\r\n        }\r\n        private bool useNotifyPropertyChanged;\r\n\r\n        /// <summary>\r\n        /// Subscribe to INotifyPropertyChanges on the given collection of objects.\r\n        /// </summary>\r\n        /// <param name=\"models\"></param>\r\n        protected void SubscribeNotifications(IEnumerable models)\r\n        {\r\n            if (!UseNotifyPropertyChanged || models == null)\r\n                return;\r\n            foreach (object x in models)\r\n            {\r\n                if (x is INotifyPropertyChanged notifier && !subscribedModels.ContainsKey(notifier))\r\n                {\r\n                    notifier.PropertyChanged += HandleModelOnPropertyChanged;\r\n                    subscribedModels[notifier] = notifier;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Unsubscribe from INotifyPropertyChanges on the given collection of objects.\r\n        /// If the given collection is null, unsubscribe from all current subscriptions\r\n        /// </summary>\r\n        /// <param name=\"models\"></param>\r\n        protected void UnsubscribeNotifications(IEnumerable models)\r\n        {\r\n            if (models == null)\r\n            {\r\n                foreach (INotifyPropertyChanged notifier in subscribedModels.Keys)\r\n                {\r\n                    notifier.PropertyChanged -= HandleModelOnPropertyChanged;\r\n                }\r\n                subscribedModels = new Hashtable();\r\n            }\r\n            else\r\n            {\r\n                foreach (object x in models)\r\n                {\r\n                    if (x is INotifyPropertyChanged notifier)\r\n                    {\r\n                        notifier.PropertyChanged -= HandleModelOnPropertyChanged;\r\n                        subscribedModels.Remove(notifier);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        private void HandleModelOnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)\r\n        {\r\n            // System.Diagnostics.Debug.WriteLine(String.Format(\"PropertyChanged: '{0}' on '{1}\", propertyChangedEventArgs.PropertyName, sender));\r\n            RefreshObject(sender);\r\n        }\r\n\r\n        private Hashtable subscribedModels = new();\r\n\r\n        #endregion\r\n\r\n        #region Save/Restore State\r\n\r\n        /// <summary>\r\n        /// Return a byte array that represents the current state of the ObjectListView, such\r\n        /// that the state can be restored by RestoreState()\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>The state of an ObjectListView includes the attributes that the user can modify:\r\n        /// <list type=\"bullet\">\r\n        /// <item><description>current view (i.e. Details, Tile, Large Icon...)</description></item>\r\n        /// <item><description>sort column and direction</description></item>\r\n        /// <item><description>column order</description></item>\r\n        /// <item><description>column widths</description></item>\r\n        /// <item><description>column visibility</description></item>\r\n        /// </list>\r\n        /// </para>\r\n        /// <para>\r\n        /// It does not include selection or the scroll position.\r\n        /// </para>\r\n        /// </remarks>\r\n        /// <returns>A byte array representing the state of the ObjectListView</returns>\r\n        public virtual byte[] SaveState()\r\n        {\r\n            ObjectListViewState olvState = new ObjectListViewState();\r\n            olvState.VersionNumber = 1;\r\n            olvState.NumberOfColumns = AllColumns.Count;\r\n            olvState.CurrentView = View;\r\n\r\n            // If we have a sort column, it is possible that it is not currently being shown, in which\r\n            // case, it's Index will be -1. So we calculate its index directly. Technically, the sort\r\n            // column does not even have to a member of AllColumns, in which case IndexOf will return -1,\r\n            // which is works fine since we have no way of restoring such a column anyway.\r\n            if (PrimarySortColumn != null)\r\n                olvState.SortColumn = AllColumns.IndexOf(PrimarySortColumn);\r\n            olvState.LastSortOrder = PrimarySortOrder;\r\n            olvState.IsShowingGroups = ShowGroups;\r\n\r\n            if (AllColumns.Count > 0 && AllColumns[0].LastDisplayIndex == -1)\r\n                RememberDisplayIndicies();\r\n\r\n            foreach (OLVColumn column in AllColumns)\r\n            {\r\n                olvState.ColumnIsVisible.Add(column.IsVisible);\r\n                olvState.ColumnDisplayIndicies.Add(column.LastDisplayIndex);\r\n                olvState.ColumnWidths.Add(column.Width);\r\n            }\r\n\r\n            // Now that we have stored our state, convert it to a byte array\r\n            using (MemoryStream ms = new MemoryStream())\r\n            {\r\n                var serializer = new XmlSerializer(typeof(ObjectListViewState));\r\n#pragma warning disable SYSLIB0011\r\n                serializer.Serialize(ms, olvState);\r\n#pragma warning restore SYSLIB0011\r\n                return ms.ToArray();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Restore the state of the control from the given string, which must have been\r\n        /// produced by SaveState()\r\n        /// </summary>\r\n        /// <param name=\"state\">A byte array returned from SaveState()</param>\r\n        /// <returns>Returns true if the state was restored</returns>\r\n        public virtual bool RestoreState(byte[] state)\r\n        {\r\n            using (MemoryStream ms = new MemoryStream(state))\r\n            {\r\n                var deserializer = new XmlSerializer(typeof(ObjectListViewState));\r\n                ObjectListViewState olvState;\r\n                try\r\n                {\r\n#pragma warning disable SYSLIB0011\r\n                    olvState = deserializer.Deserialize(ms) as ObjectListViewState;\r\n#pragma warning restore SYSLIB0011\r\n                }\r\n                catch (System.Runtime.Serialization.SerializationException)\r\n                {\r\n                    return false;\r\n                }\r\n                // The number of columns has changed. We have no way to match old\r\n                // columns to the new ones, so we just give up.\r\n                if (olvState == null || olvState.NumberOfColumns != AllColumns.Count)\r\n                    return false;\r\n                if (olvState.SortColumn == -1)\r\n                {\r\n                    PrimarySortColumn = null;\r\n                    PrimarySortOrder = SortOrder.None;\r\n                }\r\n                else\r\n                {\r\n                    PrimarySortColumn = AllColumns[olvState.SortColumn];\r\n                    PrimarySortOrder = olvState.LastSortOrder;\r\n                }\r\n                for (int i = 0; i < olvState.NumberOfColumns; i++)\r\n                {\r\n                    OLVColumn column = AllColumns[i];\r\n                    column.Width = (int)olvState.ColumnWidths[i];\r\n                    column.IsVisible = (bool)olvState.ColumnIsVisible[i];\r\n                    column.LastDisplayIndex = (int)olvState.ColumnDisplayIndicies[i];\r\n                }\r\n                // ReSharper disable RedundantCheckBeforeAssignment\r\n                if (olvState.IsShowingGroups != ShowGroups)\r\n                    // ReSharper restore RedundantCheckBeforeAssignment\r\n                    ShowGroups = olvState.IsShowingGroups;\r\n                if (View == olvState.CurrentView)\r\n                    RebuildColumns();\r\n                else\r\n                    View = olvState.CurrentView;\r\n            }\r\n\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Instances of this class are used to store the state of an ObjectListView.\r\n        /// </summary>\r\n        [Serializable]\r\n        public class ObjectListViewState\r\n        {\r\n            // ReSharper disable NotAccessedField.Global\r\n            public int VersionNumber = 1;\r\n            // ReSharper restore NotAccessedField.Global\r\n            public int NumberOfColumns = 1;\r\n            public View CurrentView;\r\n            public int SortColumn = -1;\r\n            public bool IsShowingGroups;\r\n            public SortOrder LastSortOrder = SortOrder.None;\r\n            // ReSharper disable FieldCanBeMadeReadOnly.Global\r\n            public ArrayList ColumnIsVisible = new();\r\n            public ArrayList ColumnDisplayIndicies = new();\r\n            public ArrayList ColumnWidths = new();\r\n            // ReSharper restore FieldCanBeMadeReadOnly.Global\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Event handlers\r\n\r\n        /// <summary>\r\n        /// The application is idle. Trigger a SelectionChanged event.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleApplicationIdle(object sender, EventArgs e)\r\n        {\r\n            // Remove the handler before triggering the event\r\n            Application.Idle -= new EventHandler(HandleApplicationIdle);\r\n            hasIdleHandler = false;\r\n\r\n            OnSelectionChanged(new EventArgs());\r\n        }\r\n\r\n        /// <summary>\r\n        /// The application is idle. Handle the column resizing event.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleApplicationIdleResizeColumns(object sender, EventArgs e)\r\n        {\r\n            // Remove the handler before triggering the event\r\n            Application.Idle -= new EventHandler(HandleApplicationIdleResizeColumns);\r\n            hasResizeColumnsHandler = false;\r\n\r\n            ResizeFreeSpaceFillingColumns();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the BeginScroll listview notification\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns>True if the event was completely handled</returns>\r\n        protected virtual bool HandleBeginScroll(ref Message m)\r\n        {\r\n            //System.Diagnostics.Debug.WriteLine(\"LVN_BEGINSCROLL\");\r\n\r\n            NativeMethods.NMLVSCROLL nmlvscroll = (NativeMethods.NMLVSCROLL)m.GetLParam(typeof(NativeMethods.NMLVSCROLL));\r\n            if (nmlvscroll.dx != 0)\r\n            {\r\n                int scrollPositionH = NativeMethods.GetScrollPosition(this, true);\r\n                ScrollEventArgs args = new ScrollEventArgs(ScrollEventType.EndScroll, scrollPositionH - nmlvscroll.dx, scrollPositionH, ScrollOrientation.HorizontalScroll);\r\n                OnScroll(args);\r\n\r\n                // Force any empty list msg to redraw when the list is scrolled horizontally\r\n                if (GetItemCount() == 0)\r\n                    Invalidate();\r\n            }\r\n            if (nmlvscroll.dy != 0)\r\n            {\r\n                int scrollPositionV = NativeMethods.GetScrollPosition(this, false);\r\n                ScrollEventArgs args = new ScrollEventArgs(ScrollEventType.EndScroll, scrollPositionV - nmlvscroll.dy, scrollPositionV, ScrollOrientation.VerticalScroll);\r\n                OnScroll(args);\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the EndScroll listview notification\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns>True if the event was completely handled</returns>\r\n        protected virtual bool HandleEndScroll(ref Message m)\r\n        {\r\n            //System.Diagnostics.Debug.WriteLine(\"LVN_BEGINSCROLL\");\r\n\r\n            // There is a bug in ListView under XP that causes the gridlines to be incorrectly scrolled\r\n            // when the left button is clicked to scroll. This is supposedly documented at\r\n            // KB 813791, but I couldn't find it anywhere. You can follow this thread to see the discussion\r\n            // http://www.ureader.com/msg/1484143.aspx\r\n\r\n            if (!IsVistaOrLater && IsLeftMouseDown && GridLines)\r\n            {\r\n                Invalidate();\r\n                Update();\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the LinkClick listview notification\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns>True if the event was completely handled</returns>\r\n        protected virtual bool HandleLinkClick(ref Message m)\r\n        {\r\n            //System.Diagnostics.Debug.WriteLine(\"HandleLinkClick\");\r\n\r\n            NativeMethods.NMLVLINK nmlvlink = (NativeMethods.NMLVLINK)m.GetLParam(typeof(NativeMethods.NMLVLINK));\r\n\r\n            // Find the group that was clicked and trigger an event\r\n            foreach (OLVGroup x in OLVGroups)\r\n            {\r\n                if (x.GroupId == nmlvlink.iSubItem)\r\n                {\r\n                    OnGroupTaskClicked(new GroupTaskClickedEventArgs(x));\r\n                    return true;\r\n                }\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// The cell tooltip control wants information about the tool tip that it should show.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleCellToolTipShowing(object sender, ToolTipShowingEventArgs e)\r\n        {\r\n            BuildCellEvent(e, PointToClient(Cursor.Position));\r\n            if (e.Item != null)\r\n            {\r\n                e.Text = GetCellToolTip(e.ColumnIndex, e.RowIndex);\r\n                OnCellToolTip(e);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Allow the HeaderControl to call back into HandleHeaderToolTipShowing without making that method public\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        internal void HeaderToolTipShowingCallback(object sender, ToolTipShowingEventArgs e)\r\n        {\r\n            HandleHeaderToolTipShowing(sender, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// The header tooltip control wants information about the tool tip that it should show.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleHeaderToolTipShowing(object sender, ToolTipShowingEventArgs e)\r\n        {\r\n            e.ColumnIndex = HeaderControl.ColumnIndexUnderCursor;\r\n            if (e.ColumnIndex < 0)\r\n                return;\r\n\r\n            e.RowIndex = -1;\r\n            e.Model = null;\r\n            e.Column = GetColumn(e.ColumnIndex);\r\n            e.Text = GetHeaderToolTip(e.ColumnIndex);\r\n            e.ListView = this;\r\n            OnHeaderToolTip(e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Event handler for the column click event\r\n        /// </summary>\r\n        protected virtual void HandleColumnClick(object sender, ColumnClickEventArgs e)\r\n        {\r\n            if (!PossibleFinishCellEditing())\r\n                return;\r\n\r\n            // Toggle the sorting direction on successive clicks on the same column\r\n            if (PrimarySortColumn != null && e.Column == PrimarySortColumn.Index)\r\n                PrimarySortOrder = (PrimarySortOrder == SortOrder.Descending ? SortOrder.Ascending : SortOrder.Descending);\r\n            else\r\n                PrimarySortOrder = SortOrder.Ascending;\r\n\r\n            BeginUpdate();\r\n            try\r\n            {\r\n                Sort(e.Column);\r\n            }\r\n            finally\r\n            {\r\n                if (!IsDisposed && !Disposing)\r\n                    EndUpdate();\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Low level Windows Message handling\r\n\r\n        /// <summary>\r\n        /// Override the basic message pump for this control\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        protected override void WndProc(ref Message m)\r\n        {\r\n            try\r\n            {\r\n                // System.Diagnostics.Debug.WriteLine(m.Msg);\r\n                switch (m.Msg)\r\n                {\r\n                    case 2: // WM_DESTROY\r\n                        if (!HandleDestroy(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    //case 0x14: // WM_ERASEBKGND\r\n                    //    Can't do anything here since, when the control is double buffered, anything\r\n                    //    done here is immediately over-drawn\r\n                    //    break;\r\n                    case 0x0F: // WM_PAINT\r\n                        if (!HandlePaint(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x46: // WM_WINDOWPOSCHANGING\r\n                        if (PossibleFinishCellEditing() && !HandleWindowPosChanging(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x4E: // WM_NOTIFY\r\n                        if (!HandleNotify(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x0100: // WM_KEY_DOWN\r\n                        if (!HandleKeyDown(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x0102: // WM_CHAR\r\n                        if (!HandleChar(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x0200: // WM_MOUSEMOVE\r\n                        if (!HandleMouseMove(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x0201: // WM_LBUTTONDOWN\r\n                        if (PossibleFinishCellEditing() && !HandleLButtonDown(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x202:  // WM_LBUTTONUP\r\n                        if (PossibleFinishCellEditing() && !HandleLButtonUp(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x0203: // WM_LBUTTONDBLCLK\r\n                        if (PossibleFinishCellEditing() && !HandleLButtonDoubleClick(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x0204: // WM_RBUTTONDOWN\r\n                        if (PossibleFinishCellEditing() && !HandleRButtonDown(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x0206: // WM_RBUTTONDBLCLK\r\n                        if (PossibleFinishCellEditing() && !HandleRButtonDoubleClick(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x204E: // WM_REFLECT_NOTIFY\r\n                        if (!HandleReflectNotify(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x114: // WM_HSCROLL:\r\n                    case 0x115: // WM_VSCROLL:\r\n                                //System.Diagnostics.Debug.WriteLine(\"WM_VSCROLL\");\r\n                        if (PossibleFinishCellEditing())\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x20A: // WM_MOUSEWHEEL:\r\n                    case 0x20E: // WM_MOUSEHWHEEL:\r\n                        if (PossibleFinishCellEditing())\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x7B: // WM_CONTEXTMENU\r\n                        if (!HandleContextMenu(ref m))\r\n                            base.WndProc(ref m);\r\n                        break;\r\n                    case 0x1000 + 18: // LVM_HITTEST:\r\n                                      //System.Diagnostics.Debug.WriteLine(\"LVM_HITTEST\");\r\n                        if (skipNextHitTest)\r\n                        {\r\n                            //System.Diagnostics.Debug.WriteLine(\"SKIPPING LVM_HITTEST\");\r\n                            skipNextHitTest = false;\r\n                        }\r\n                        else\r\n                        {\r\n                            base.WndProc(ref m);\r\n                        }\r\n                        break;\r\n                    default:\r\n                        base.WndProc(ref m);\r\n                        break;\r\n                }\r\n            }\r\n            catch (ArgumentOutOfRangeException)\r\n            {\r\n                // Catch error 0x80070459 in PtrToStructure - No mapping for the Unicode character exists in the target multi-byte code page\r\n                // It can happen on some Japanese systems, it's better to have some ui glitching than crashing\r\n\r\n                base.WndProc(ref m);\r\n            }\r\n            catch (ArgumentNullException e) when (e.ParamName == \"owningItem\")\r\n            {\r\n                // Bug in <= .NET 5.0.5 forms\r\n                // https://github.com/dotnet/winforms/pull/4764\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the search for item m if possible.\r\n        /// </summary>\r\n        /// <param name=\"m\">The m to be processed</param>\r\n        /// <returns>bool to indicate if the msg has been handled</returns>\r\n        protected virtual bool HandleChar(ref Message m)\r\n        {\r\n\r\n            // Trigger a normal KeyPress event, which listeners can handle if they want.\r\n            // Handling the event stops ObjectListView's fancy search-by-typing.\r\n            if (ProcessKeyEventArgs(ref m))\r\n                return true;\r\n\r\n            const int MILLISECONDS_BETWEEN_KEYPRESSES = 1000;\r\n\r\n            // What character did the user type and was it part of a longer string?\r\n            char character = (char)m.WParam.ToInt32(); //TODO: Will this work on 64 bit or MBCS?\r\n            if (character == (char)Keys.Back)\r\n            {\r\n                // Backspace forces the next key to be considered the start of a new search\r\n                timeLastCharEvent = 0;\r\n                return true;\r\n            }\r\n\r\n            if (Environment.TickCount < (timeLastCharEvent + MILLISECONDS_BETWEEN_KEYPRESSES))\r\n                lastSearchString += character;\r\n            else\r\n                lastSearchString = character.ToString(CultureInfo.InvariantCulture);\r\n\r\n            // If this control is showing checkboxes, we want to ignore single space presses,\r\n            // since they are used to toggle the selected checkboxes.\r\n            if (CheckBoxes && lastSearchString == \" \")\r\n            {\r\n                timeLastCharEvent = 0;\r\n                return true;\r\n            }\r\n\r\n            // Where should the search start?\r\n            int start = 0;\r\n            ListViewItem focused = FocusedItem;\r\n            if (focused != null)\r\n            {\r\n                start = GetDisplayOrderOfItemIndex(focused.Index);\r\n\r\n                // If the user presses a single key, we search from after the focused item,\r\n                // being careful not to march past the end of the list\r\n                if (lastSearchString.Length == 1)\r\n                {\r\n                    start += 1;\r\n                    if (start == GetItemCount())\r\n                        start = 0;\r\n                }\r\n            }\r\n\r\n            // Give the world a chance to fiddle with or completely avoid the searching process\r\n            BeforeSearchingEventArgs args = new BeforeSearchingEventArgs(lastSearchString, start);\r\n            OnBeforeSearching(args);\r\n            if (args.Canceled)\r\n                return true;\r\n\r\n            // The parameters of the search may have been changed\r\n            string searchString = args.StringToFind;\r\n            start = args.StartSearchFrom;\r\n\r\n            // Do the actual search\r\n            int found = FindMatchingRow(searchString, start, SearchDirectionHint.Down);\r\n            if (found >= 0)\r\n            {\r\n                // Select and focus on the found item\r\n                BeginUpdate();\r\n                try\r\n                {\r\n                    SelectedIndices.Clear();\r\n                    OLVListItem lvi = GetNthItemInDisplayOrder(found);\r\n                    if (lvi != null)\r\n                    {\r\n                        if (lvi.Enabled)\r\n                            lvi.Selected = true;\r\n                        lvi.Focused = true;\r\n                        EnsureVisible(lvi.Index);\r\n                    }\r\n                }\r\n                finally\r\n                {\r\n                    EndUpdate();\r\n                }\r\n            }\r\n\r\n            // Tell the world that a search has occurred\r\n            AfterSearchingEventArgs args2 = new AfterSearchingEventArgs(searchString, found);\r\n            OnAfterSearching(args2);\r\n            if (!args2.Handled)\r\n            {\r\n                if (found < 0)\r\n                    System.Media.SystemSounds.Beep.Play();\r\n            }\r\n\r\n            // When did this event occur?\r\n            timeLastCharEvent = Environment.TickCount;\r\n            return true;\r\n        }\r\n        private int timeLastCharEvent;\r\n        private string lastSearchString;\r\n\r\n        /// <summary>\r\n        /// The user wants to see the context menu.\r\n        /// </summary>\r\n        /// <param name=\"m\">The windows m</param>\r\n        /// <returns>A bool indicating if this m has been handled</returns>\r\n        /// <remarks>\r\n        /// We want to ignore context menu requests that are triggered by right clicks on the header\r\n        /// </remarks>\r\n        protected virtual bool HandleContextMenu(ref Message m)\r\n        {\r\n            // Don't try to handle context menu commands at design time.\r\n            if (DesignMode)\r\n                return false;\r\n\r\n            // If the context menu command was generated by the keyboard, LParam will be -1.\r\n            // We don't want to process these.\r\n            if (m.LParam == minusOne)\r\n                return false;\r\n\r\n            // If the context menu came from somewhere other than the header control,\r\n            // we also don't want to ignore it\r\n            if (m.WParam != HeaderControl.Handle)\r\n                return false;\r\n\r\n            // OK. Looks like a right click in the header\r\n            if (!PossibleFinishCellEditing())\r\n                return true;\r\n\r\n            int columnIndex = HeaderControl.ColumnIndexUnderCursor;\r\n            return HandleHeaderRightClick(columnIndex);\r\n        }\r\n\r\n        private readonly IntPtr minusOne = new(-1);\r\n\r\n        /// <summary>\r\n        /// Handle the Custom draw series of notifications\r\n        /// </summary>\r\n        /// <param name=\"m\">The message</param>\r\n        /// <returns>True if the message has been handled</returns>\r\n        protected virtual bool HandleCustomDraw(ref Message m)\r\n        {\r\n            const int CDDS_PREPAINT = 1;\r\n            const int CDDS_POSTPAINT = 2;\r\n            const int CDDS_PREERASE = 3;\r\n            const int CDDS_POSTERASE = 4;\r\n            //const int CDRF_NEWFONT = 2;\r\n            //const int CDRF_SKIPDEFAULT = 4;\r\n            const int CDDS_ITEM = 0x00010000;\r\n            const int CDDS_SUBITEM = 0x00020000;\r\n            const int CDDS_ITEMPREPAINT = (CDDS_ITEM | CDDS_PREPAINT);\r\n            const int CDDS_ITEMPOSTPAINT = (CDDS_ITEM | CDDS_POSTPAINT);\r\n            const int CDDS_ITEMPREERASE = (CDDS_ITEM | CDDS_PREERASE);\r\n            const int CDDS_ITEMPOSTERASE = (CDDS_ITEM | CDDS_POSTERASE);\r\n            const int CDDS_SUBITEMPREPAINT = (CDDS_SUBITEM | CDDS_ITEMPREPAINT);\r\n            const int CDDS_SUBITEMPOSTPAINT = (CDDS_SUBITEM | CDDS_ITEMPOSTPAINT);\r\n            const int CDRF_NOTIFYPOSTPAINT = 0x10;\r\n            //const int CDRF_NOTIFYITEMDRAW = 0x20;\r\n            //const int CDRF_NOTIFYSUBITEMDRAW = 0x20; // same value as above!\r\n            const int CDRF_NOTIFYPOSTERASE = 0x40;\r\n\r\n            // There is a bug in owner drawn virtual lists which causes lots of custom draw messages\r\n            // to be sent to the control *outside* of a WmPaint event. AFAIK, these custom draw events\r\n            // are spurious and only serve to make the control flicker annoyingly.\r\n            // So, we ignore messages that are outside of a paint event.\r\n            if (!isInWmPaintEvent)\r\n                return true;\r\n\r\n            // One more complication! Sometimes with owner drawn virtual lists, the act of drawing\r\n            // the overlays triggers a second attempt to paint the control -- which makes an annoying\r\n            // flicker. So, we only do the custom drawing once per WmPaint event.\r\n            if (!shouldDoCustomDrawing)\r\n                return true;\r\n\r\n            NativeMethods.NMLVCUSTOMDRAW nmcustomdraw = (NativeMethods.NMLVCUSTOMDRAW)m.GetLParam(typeof(NativeMethods.NMLVCUSTOMDRAW));\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"cd: {0:x}, {1}, {2}\", nmcustomdraw.nmcd.dwDrawStage, nmcustomdraw.dwItemType, nmcustomdraw.nmcd.dwItemSpec));\r\n\r\n            // Ignore drawing of group items\r\n            if (nmcustomdraw.dwItemType == 1)\r\n            {\r\n                // This is the basis of an idea about how to owner draw group headers\r\n\r\n                //nmcustomdraw.clrText = ColorTranslator.ToWin32(Color.DeepPink);\r\n                //nmcustomdraw.clrFace = ColorTranslator.ToWin32(Color.DeepPink);\r\n                //nmcustomdraw.clrTextBk = ColorTranslator.ToWin32(Color.DeepPink);\r\n                //Marshal.StructureToPtr(nmcustomdraw, m.LParam, false);\r\n                //using (Graphics g = Graphics.FromHdc(nmcustomdraw.nmcd.hdc)) {\r\n                //    g.DrawRectangle(Pens.Red, Rectangle.FromLTRB(nmcustomdraw.rcText.left, nmcustomdraw.rcText.top, nmcustomdraw.rcText.right, nmcustomdraw.rcText.bottom));\r\n                //}\r\n                //m.Result = (IntPtr)((int)m.Result | CDRF_SKIPDEFAULT);\r\n                return true;\r\n            }\r\n\r\n            switch (nmcustomdraw.nmcd.dwDrawStage)\r\n            {\r\n                case CDDS_PREPAINT:\r\n                    //System.Diagnostics.Debug.WriteLine(\"CDDS_PREPAINT\");\r\n                    // Remember which items were drawn during this paint cycle\r\n                    if (prePaintLevel == 0)\r\n                        drawnItems = new List<OLVListItem>();\r\n\r\n                    // If there are any items, we have to wait until at least one has been painted\r\n                    // before we draw the overlays. If there aren't any items, there will never be any\r\n                    // item paint events, so we can draw the overlays whenever\r\n                    isAfterItemPaint = (GetItemCount() == 0);\r\n                    prePaintLevel++;\r\n                    base.WndProc(ref m);\r\n\r\n                    // Make sure that we get postpaint notifications\r\n                    m.Result = (IntPtr)((int)m.Result | CDRF_NOTIFYPOSTPAINT | CDRF_NOTIFYPOSTERASE);\r\n                    return true;\r\n\r\n                case CDDS_POSTPAINT:\r\n                    //System.Diagnostics.Debug.WriteLine(\"CDDS_POSTPAINT\");\r\n                    prePaintLevel--;\r\n\r\n                    // When in group view, we have two problems. On XP, the control sends\r\n                    // a whole heap of PREPAINT/POSTPAINT messages before drawing any items.\r\n                    // We have to wait until after the first item paint before we draw overlays.\r\n                    // On Vista, we have a different problem. On Vista, the control nests calls\r\n                    // to PREPAINT and POSTPAINT. We only want to draw overlays on the outermost\r\n                    // POSTPAINT.\r\n                    if (prePaintLevel == 0 && (isMarqueSelecting || isAfterItemPaint))\r\n                    {\r\n                        shouldDoCustomDrawing = false;\r\n\r\n                        // Draw our overlays after everything has been drawn\r\n                        using (Graphics g = Graphics.FromHdc(nmcustomdraw.nmcd.hdc))\r\n                        {\r\n                            DrawAllDecorations(g, drawnItems);\r\n                        }\r\n                    }\r\n                    break;\r\n\r\n                case CDDS_ITEMPREPAINT:\r\n                    //System.Diagnostics.Debug.WriteLine(\"CDDS_ITEMPREPAINT\");\r\n\r\n                    // When in group view on XP, the control send a whole heap of PREPAINT/POSTPAINT\r\n                    // messages before drawing any items.\r\n                    // We have to wait until after the first item paint before we draw overlays\r\n                    isAfterItemPaint = true;\r\n\r\n                    // This scheme of catching custom draw msgs works fine, except\r\n                    // for Tile view. Something in .NET's handling of Tile view causes lots\r\n                    // of invalidates and erases. So, we just ignore completely\r\n                    // .NET's handling of Tile view and let the underlying control\r\n                    // do its stuff. Strangely, if the Tile view is\r\n                    // completely owner drawn, those erasures don't happen.\r\n                    if (View == View.Tile)\r\n                    {\r\n                        if (OwnerDraw && ItemRenderer != null)\r\n                            base.WndProc(ref m);\r\n                    }\r\n                    else\r\n                    {\r\n                        base.WndProc(ref m);\r\n                    }\r\n\r\n                    m.Result = (IntPtr)((int)m.Result | CDRF_NOTIFYPOSTPAINT | CDRF_NOTIFYPOSTERASE);\r\n                    return true;\r\n\r\n                case CDDS_ITEMPOSTPAINT:\r\n                    //System.Diagnostics.Debug.WriteLine(\"CDDS_ITEMPOSTPAINT\");\r\n                    // Remember which items have been drawn so we can draw any decorations for them\r\n                    // once all other painting is finished\r\n                    if (Columns.Count > 0)\r\n                    {\r\n                        OLVListItem olvi = GetItem((int)nmcustomdraw.nmcd.dwItemSpec);\r\n                        if (olvi != null)\r\n                            drawnItems.Add(olvi);\r\n                    }\r\n                    break;\r\n\r\n                case CDDS_SUBITEMPREPAINT:\r\n                    //System.Diagnostics.Debug.WriteLine(String.Format(\"CDDS_SUBITEMPREPAINT ({0},{1})\", (int)nmcustomdraw.nmcd.dwItemSpec, nmcustomdraw.iSubItem));\r\n\r\n                    // There is a bug in the .NET framework which appears when column 0 of an owner drawn listview\r\n                    // is dragged to another column position.\r\n                    // The bounds calculation always returns the left edge of column 0 as being 0.\r\n                    // The effects of this bug become apparent\r\n                    // when the listview is scrolled horizontally: the control can think that column 0\r\n                    // is no longer visible (the horizontal scroll position is subtracted from the bounds, giving a\r\n                    // rectangle that is offscreen). In those circumstances, column 0 is not redraw because\r\n                    // the control thinks it is not visible and so does not trigger a DrawSubItem event.\r\n\r\n                    // To fix this problem, we have to detected the situation -- owner drawing column 0 in any column except 0 --\r\n                    // trigger our own DrawSubItem, and then prevent the default processing from occuring.\r\n\r\n                    // Are we owner drawing column 0 when it's in any column except 0?\r\n                    if (!OwnerDraw)\r\n                        return false;\r\n\r\n                    int columnIndex = nmcustomdraw.iSubItem;\r\n                    if (columnIndex != 0)\r\n                        return false;\r\n\r\n                    int displayIndex = Columns[0].DisplayIndex;\r\n                    if (displayIndex == 0)\r\n                        return false;\r\n\r\n                    int rowIndex = (int)nmcustomdraw.nmcd.dwItemSpec;\r\n                    OLVListItem item = GetItem(rowIndex);\r\n                    if (item == null)\r\n                        return false;\r\n\r\n                    // OK. We have the error condition, so lets do what the .NET framework should do.\r\n                    // Trigger an event to draw column 0 when it is not at display index 0\r\n                    using (Graphics g = Graphics.FromHdc(nmcustomdraw.nmcd.hdc))\r\n                    {\r\n\r\n                        // Correctly calculate the bounds of cell 0\r\n                        Rectangle r = item.GetSubItemBounds(0);\r\n\r\n                        // We can hardcode \"0\" here since we know we are only doing this for column 0\r\n                        DrawListViewSubItemEventArgs args = new DrawListViewSubItemEventArgs(g, r, item, item.SubItems[0], rowIndex, 0,\r\n                            Columns[0], (ListViewItemStates)nmcustomdraw.nmcd.uItemState);\r\n                        OnDrawSubItem(args);\r\n\r\n                        // If the event handler wants to do the default processing (i.e. DrawDefault = true), we are stuck.\r\n                        // There is no way we can force the default drawing because of the bug in .NET we are trying to get around.\r\n                        Trace.Assert(!args.DrawDefault, \"Default drawing is impossible in this situation\");\r\n                    }\r\n                    m.Result = (IntPtr)4;\r\n\r\n                    return true;\r\n\r\n                case CDDS_SUBITEMPOSTPAINT:\r\n                    //System.Diagnostics.Debug.WriteLine(\"CDDS_SUBITEMPOSTPAINT\");\r\n                    break;\r\n\r\n                // I have included these stages, but it doesn't seem that they are sent for ListViews.\r\n                // http://www.tech-archive.net/Archive/VC/microsoft.public.vc.mfc/2006-08/msg00220.html\r\n\r\n                case CDDS_PREERASE:\r\n                    //System.Diagnostics.Debug.WriteLine(\"CDDS_PREERASE\");\r\n                    break;\r\n\r\n                case CDDS_POSTERASE:\r\n                    //System.Diagnostics.Debug.WriteLine(\"CDDS_POSTERASE\");\r\n                    break;\r\n\r\n                case CDDS_ITEMPREERASE:\r\n                    //System.Diagnostics.Debug.WriteLine(\"CDDS_ITEMPREERASE\");\r\n                    break;\r\n\r\n                case CDDS_ITEMPOSTERASE:\r\n                    //System.Diagnostics.Debug.WriteLine(\"CDDS_ITEMPOSTERASE\");\r\n                    break;\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        private bool isAfterItemPaint;\r\n        private List<OLVListItem> drawnItems;\r\n\r\n        /// <summary>\r\n        /// Handle the underlying control being destroyed\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns></returns>\r\n        protected virtual bool HandleDestroy(ref Message m)\r\n        {\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"WM_DESTROY: Disposing={0}, IsDisposed={1}, VirtualMode={2}\", Disposing, IsDisposed, VirtualMode));\r\n\r\n            // Recreate the header control when the listview control is destroyed\r\n            headerControl = null;\r\n\r\n            // When the underlying control is destroyed, we need to recreate and reconfigure its tooltip\r\n            if (cellToolTip != null)\r\n            {\r\n                cellToolTip.PushSettings();\r\n                BeginInvoke((MethodInvoker)delegate\r\n                {\r\n                    UpdateCellToolTipHandle();\r\n                    cellToolTip.PopSettings();\r\n                });\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the search for item m if possible.\r\n        /// </summary>\r\n        /// <param name=\"m\">The m to be processed</param>\r\n        /// <returns>bool to indicate if the msg has been handled</returns>\r\n        protected virtual bool HandleFindItem(ref Message m)\r\n        {\r\n            // NOTE: As far as I can see, this message is never actually sent to the control, making this\r\n            // method redundant!\r\n\r\n            const int LVFI_STRING = 0x0002;\r\n\r\n            NativeMethods.LVFINDINFO findInfo = (NativeMethods.LVFINDINFO)m.GetLParam(typeof(NativeMethods.LVFINDINFO));\r\n\r\n            // We can only handle string searches\r\n            if ((findInfo.flags & LVFI_STRING) != LVFI_STRING)\r\n                return false;\r\n\r\n            int start = m.WParam.ToInt32();\r\n            m.Result = (IntPtr)FindMatchingRow(findInfo.psz, start, SearchDirectionHint.Down);\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Find the first row after the given start in which the text value in the\r\n        /// comparison column begins with the given text. The comparison column is column 0,\r\n        /// unless IsSearchOnSortColumn is true, in which case the current sort column is used.\r\n        /// </summary>\r\n        /// <param name=\"text\">The text to be prefix matched</param>\r\n        /// <param name=\"start\">The index of the first row to consider</param>\r\n        /// <param name=\"direction\">Which direction should be searched?</param>\r\n        /// <returns>The index of the first row that matched, or -1</returns>\r\n        /// <remarks>The text comparison is a case-insensitive, prefix match. The search will\r\n        /// search the every row until a match is found, wrapping at the end if needed.</remarks>\r\n        public virtual int FindMatchingRow(string text, int start, SearchDirectionHint direction)\r\n        {\r\n            // We also can't do anything if we don't have data\r\n            int rowCount = GetItemCount();\r\n            if (rowCount == 0)\r\n                return -1;\r\n\r\n            // Which column are we going to use for our comparing?\r\n            OLVColumn column = GetColumn(0);\r\n            if (IsSearchOnSortColumn && View == View.Details && PrimarySortColumn != null)\r\n                column = PrimarySortColumn;\r\n\r\n            // Do two searches if necessary to find a match. The second search is the wrap-around part of searching\r\n            int i;\r\n            if (direction == SearchDirectionHint.Down)\r\n            {\r\n                i = FindMatchInRange(text, start, rowCount - 1, column);\r\n                if (i == -1 && start > 0)\r\n                    i = FindMatchInRange(text, 0, start - 1, column);\r\n            }\r\n            else\r\n            {\r\n                i = FindMatchInRange(text, start, 0, column);\r\n                if (i == -1 && start != rowCount)\r\n                    i = FindMatchInRange(text, rowCount - 1, start + 1, column);\r\n            }\r\n\r\n            return i;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Find the first row in the given range of rows that prefix matches the string value of the given column.\r\n        /// </summary>\r\n        /// <param name=\"text\"></param>\r\n        /// <param name=\"first\"></param>\r\n        /// <param name=\"last\"></param>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns>The index of the matched row, or -1</returns>\r\n        protected virtual int FindMatchInRange(string text, int first, int last, OLVColumn column)\r\n        {\r\n            if (first <= last)\r\n            {\r\n                for (int i = first; i <= last; i++)\r\n                {\r\n                    string data = column.GetStringValue(GetNthItemInDisplayOrder(i).RowObject);\r\n                    if (data.StartsWith(text, StringComparison.CurrentCultureIgnoreCase))\r\n                        return i;\r\n                }\r\n            }\r\n            else\r\n            {\r\n                for (int i = first; i >= last; i--)\r\n                {\r\n                    string data = column.GetStringValue(GetNthItemInDisplayOrder(i).RowObject);\r\n                    if (data.StartsWith(text, StringComparison.CurrentCultureIgnoreCase))\r\n                        return i;\r\n                }\r\n            }\r\n\r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the Group Info series of notifications\r\n        /// </summary>\r\n        /// <param name=\"m\">The message</param>\r\n        /// <returns>True if the message has been handled</returns>\r\n        protected virtual bool HandleGroupInfo(ref Message m)\r\n        {\r\n            NativeMethods.NMLVGROUP nmlvgroup = (NativeMethods.NMLVGROUP)m.GetLParam(typeof(NativeMethods.NMLVGROUP));\r\n\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"group: {0}, old state: {1}, new state: {2}\",\r\n            //    nmlvgroup.iGroupId, OLVGroup.StateToString(nmlvgroup.uOldState), OLVGroup.StateToString(nmlvgroup.uNewState)));\r\n\r\n            // Ignore state changes that aren't related to selection, focus or collapsedness\r\n            const uint INTERESTING_STATES = (uint)(GroupState.LVGS_COLLAPSED | GroupState.LVGS_FOCUSED | GroupState.LVGS_SELECTED);\r\n            if ((nmlvgroup.uOldState & INTERESTING_STATES) == (nmlvgroup.uNewState & INTERESTING_STATES))\r\n                return false;\r\n\r\n            foreach (OLVGroup group in OLVGroups)\r\n            {\r\n                if (group.GroupId == nmlvgroup.iGroupId)\r\n                {\r\n                    GroupStateChangedEventArgs args = new GroupStateChangedEventArgs(group, (GroupState)nmlvgroup.uOldState, (GroupState)nmlvgroup.uNewState);\r\n                    OnGroupStateChanged(args);\r\n                    break;\r\n                }\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        //private static string StateToString(uint state)\r\n        //{\r\n        //    if (state == 0)\r\n        //        return Enum.GetName(typeof(GroupState), 0);\r\n\r\n        //    List<string> names = new List<string>();\r\n        //    foreach (int value in Enum.GetValues(typeof(GroupState)))\r\n        //    {\r\n        //        if (value != 0 && (state & value) == value)\r\n        //        {\r\n        //            names.Add(Enum.GetName(typeof(GroupState), value));\r\n        //        }\r\n        //    }\r\n        //    return names.Count == 0 ? state.ToString(\"x\") : String.Join(\"|\", names.ToArray());\r\n        //}\r\n\r\n        /// <summary>\r\n        /// Handle a key down message\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns>True if the msg has been handled</returns>\r\n        protected virtual bool HandleKeyDown(ref Message m)\r\n        {\r\n\r\n            // If this is a checkbox list, toggle the selected rows when the user presses Space\r\n            if (CheckBoxes && m.WParam.ToInt32() == (int)Keys.Space && SelectedIndices.Count > 0)\r\n            {\r\n                ToggleSelectedRowCheckBoxes();\r\n                return true;\r\n            }\r\n\r\n            // Remember the scroll position so we can decide if the listview has scrolled in the\r\n            // handling of the event.\r\n            int scrollPositionH = NativeMethods.GetScrollPosition(this, true);\r\n            int scrollPositionV = NativeMethods.GetScrollPosition(this, false);\r\n\r\n            base.WndProc(ref m);\r\n\r\n            // It's possible that the processing in base.WndProc has actually destroyed this control\r\n            if (IsDisposed)\r\n                return true;\r\n\r\n            // If the keydown processing changed the scroll position, trigger a Scroll event\r\n            int newScrollPositionH = NativeMethods.GetScrollPosition(this, true);\r\n            int newScrollPositionV = NativeMethods.GetScrollPosition(this, false);\r\n\r\n            if (scrollPositionH != newScrollPositionH)\r\n            {\r\n                ScrollEventArgs args = new ScrollEventArgs(ScrollEventType.EndScroll,\r\n                    scrollPositionH, newScrollPositionH, ScrollOrientation.HorizontalScroll);\r\n                OnScroll(args);\r\n            }\r\n            if (scrollPositionV != newScrollPositionV)\r\n            {\r\n                ScrollEventArgs args = new ScrollEventArgs(ScrollEventType.EndScroll,\r\n                    scrollPositionV, newScrollPositionV, ScrollOrientation.VerticalScroll);\r\n                OnScroll(args);\r\n            }\r\n\r\n            if (scrollPositionH != newScrollPositionH || scrollPositionV != newScrollPositionV)\r\n                RefreshHotItem();\r\n\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Toggle the checkedness of the selected rows\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// Actually, this doesn't actually toggle all rows. It toggles the first row, and\r\n        /// all other rows get the check state of that first row. This is actually a much\r\n        /// more useful behaviour.\r\n        /// </para>\r\n        /// <para>\r\n        /// If no rows are selected, this method does nothing.\r\n        /// </para>\r\n        /// </remarks>\r\n        public void ToggleSelectedRowCheckBoxes()\r\n        {\r\n            if (SelectedIndices.Count == 0)\r\n                return;\r\n            Object primaryModel = GetItem(SelectedIndices[0]).RowObject;\r\n            ToggleCheckObject(primaryModel);\r\n            CheckState? state = GetCheckState(primaryModel);\r\n            if (state.HasValue)\r\n            {\r\n                foreach (Object x in SelectedObjects)\r\n                    SetObjectCheckedness(x, state.Value);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Catch the Left Button down event.\r\n        /// </summary>\r\n        /// <param name=\"m\">The m to be processed</param>\r\n        /// <returns>bool to indicate if the msg has been handled</returns>\r\n        protected virtual bool HandleLButtonDown(ref Message m)\r\n        {\r\n            // We have to intercept this low level message rather than the more natural\r\n            // overridding of OnMouseDown, since ListCtrl's internal mouse down behavior\r\n            // is to select (or deselect) rows when the mouse is released. We don't\r\n            // want the selection to change when the user checks or unchecks a checkbox, so if the\r\n            // mouse down event was to check/uncheck, we have to hide this mouse\r\n            // down event from the control.\r\n\r\n            int x = m.LParam.ToInt32() & 0xFFFF;\r\n            int y = (m.LParam.ToInt32() >> 16) & 0xFFFF;\r\n\r\n            return ProcessLButtonDown(OlvHitTest(x, y));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a left mouse down at the given hit test location\r\n        /// </summary>\r\n        /// <remarks>Subclasses can override this to do something unique</remarks>\r\n        /// <param name=\"hti\"></param>\r\n        /// <returns>True if the message has been handled</returns>\r\n        protected virtual bool ProcessLButtonDown(OlvListViewHitTestInfo hti)\r\n        {\r\n\r\n            if (hti.Item == null)\r\n                return false;\r\n\r\n            // If the click occurs on a button, ignore it so the row isn't selected\r\n            if (hti.HitTestLocation == HitTestLocation.Button)\r\n            {\r\n                Invalidate();\r\n\r\n                return true;\r\n            }\r\n\r\n            // If they didn't click checkbox, we can just return\r\n            if (hti.HitTestLocation != HitTestLocation.CheckBox)\r\n                return false;\r\n\r\n            // Disabled rows cannot change checkboxes\r\n            if (!hti.Item.Enabled)\r\n                return true;\r\n\r\n            // Did they click a sub item checkbox?\r\n            if (hti.Column != null && hti.Column.Index > 0)\r\n            {\r\n                if (hti.Column.IsEditable && hti.Item.Enabled)\r\n                    ToggleSubItemCheckBox(hti.RowObject, hti.Column);\r\n                return true;\r\n            }\r\n\r\n            // They must have clicked the primary checkbox\r\n            ToggleCheckObject(hti.RowObject);\r\n\r\n            // If they change the checkbox of a selected row, all the rows in the selection\r\n            // should be given the same state\r\n            if (hti.Item.Selected)\r\n            {\r\n                CheckState? state = GetCheckState(hti.RowObject);\r\n                if (state.HasValue)\r\n                {\r\n                    foreach (Object x in SelectedObjects)\r\n                        SetObjectCheckedness(x, state.Value);\r\n                }\r\n            }\r\n\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Catch the Left Button up event.\r\n        /// </summary>\r\n        /// <param name=\"m\">The m to be processed</param>\r\n        /// <returns>bool to indicate if the msg has been handled</returns>\r\n        protected virtual bool HandleLButtonUp(ref Message m)\r\n        {\r\n            if (MouseMoveHitTest == null)\r\n                return false;\r\n\r\n            int x = m.LParam.ToInt32() & 0xFFFF;\r\n            int y = (m.LParam.ToInt32() >> 16) & 0xFFFF;\r\n\r\n            // Did they click an enabled, non-empty button?\r\n            if (MouseMoveHitTest.HitTestLocation == HitTestLocation.Button)\r\n            {\r\n                // If a button was hit, Item and Column must be non-null\r\n                if (MouseMoveHitTest.Item.Enabled || MouseMoveHitTest.Column.EnableButtonWhenItemIsDisabled)\r\n                {\r\n                    string buttonText = MouseMoveHitTest.Column.GetStringValue(MouseMoveHitTest.RowObject);\r\n                    if (!String.IsNullOrEmpty(buttonText))\r\n                    {\r\n                        Invalidate();\r\n                        CellClickEventArgs args = new CellClickEventArgs();\r\n                        BuildCellEvent(args, new Point(x, y), MouseMoveHitTest);\r\n                        OnButtonClick(args);\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n\r\n            // Are they trying to expand/collapse a group?\r\n            if (MouseMoveHitTest.HitTestLocation == HitTestLocation.GroupExpander)\r\n            {\r\n                if (TriggerGroupExpandCollapse(MouseMoveHitTest.Group))\r\n                    return true;\r\n            }\r\n\r\n            if (IsVistaOrLater && HasCollapsibleGroups)\r\n                base.DefWndProc(ref m);\r\n\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger a GroupExpandCollapse event and return true if the action was cancelled\r\n        /// </summary>\r\n        /// <param name=\"group\"></param>\r\n        /// <returns></returns>\r\n        protected virtual bool TriggerGroupExpandCollapse(OLVGroup group)\r\n        {\r\n            GroupExpandingCollapsingEventArgs args = new GroupExpandingCollapsingEventArgs(group);\r\n            OnGroupExpandingCollapsing(args);\r\n            return args.Canceled;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Catch the Right Button down event.\r\n        /// </summary>\r\n        /// <param name=\"m\">The m to be processed</param>\r\n        /// <returns>bool to indicate if the msg has been handled</returns>\r\n        protected virtual bool HandleRButtonDown(ref Message m)\r\n        {\r\n            int x = m.LParam.ToInt32() & 0xFFFF;\r\n            int y = (m.LParam.ToInt32() >> 16) & 0xFFFF;\r\n\r\n            return ProcessRButtonDown(OlvHitTest(x, y));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a left mouse down at the given hit test location\r\n        /// </summary>\r\n        /// <remarks>Subclasses can override this to do something unique</remarks>\r\n        /// <param name=\"hti\"></param>\r\n        /// <returns>True if the message has been handled</returns>\r\n        protected virtual bool ProcessRButtonDown(OlvListViewHitTestInfo hti)\r\n        {\r\n            if (hti.Item == null)\r\n                return false;\r\n\r\n            // Ignore clicks on checkboxes\r\n            return (hti.HitTestLocation == HitTestLocation.CheckBox);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Catch the Left Button double click event.\r\n        /// </summary>\r\n        /// <param name=\"m\">The m to be processed</param>\r\n        /// <returns>bool to indicate if the msg has been handled</returns>\r\n        protected virtual bool HandleLButtonDoubleClick(ref Message m)\r\n        {\r\n            int x = m.LParam.ToInt32() & 0xFFFF;\r\n            int y = (m.LParam.ToInt32() >> 16) & 0xFFFF;\r\n\r\n            return ProcessLButtonDoubleClick(OlvHitTest(x, y));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a mouse double click at the given hit test location\r\n        /// </summary>\r\n        /// <remarks>Subclasses can override this to do something unique</remarks>\r\n        /// <param name=\"hti\"></param>\r\n        /// <returns>True if the message has been handled</returns>\r\n        protected virtual bool ProcessLButtonDoubleClick(OlvListViewHitTestInfo hti)\r\n        {\r\n\r\n            // If the user double clicked on a checkbox, ignore it\r\n            return (hti.HitTestLocation == HitTestLocation.CheckBox);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Catch the right Button double click event.\r\n        /// </summary>\r\n        /// <param name=\"m\">The m to be processed</param>\r\n        /// <returns>bool to indicate if the msg has been handled</returns>\r\n        protected virtual bool HandleRButtonDoubleClick(ref Message m)\r\n        {\r\n            int x = m.LParam.ToInt32() & 0xFFFF;\r\n            int y = (m.LParam.ToInt32() >> 16) & 0xFFFF;\r\n\r\n            return ProcessRButtonDoubleClick(OlvHitTest(x, y));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a right mouse double click at the given hit test location\r\n        /// </summary>\r\n        /// <remarks>Subclasses can override this to do something unique</remarks>\r\n        /// <param name=\"hti\"></param>\r\n        /// <returns>True if the message has been handled</returns>\r\n        protected virtual bool ProcessRButtonDoubleClick(OlvListViewHitTestInfo hti)\r\n        {\r\n\r\n            // If the user double clicked on a checkbox, ignore it\r\n            return (hti.HitTestLocation == HitTestLocation.CheckBox);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Catch the MouseMove event.\r\n        /// </summary>\r\n        /// <param name=\"m\">The m to be processed</param>\r\n        /// <returns>bool to indicate if the msg has been handled</returns>\r\n        protected virtual bool HandleMouseMove(ref Message m)\r\n        {\r\n            //int x = m.LParam.ToInt32() & 0xFFFF;\r\n            //int y = (m.LParam.ToInt32() >> 16) & 0xFFFF;\r\n\r\n            //this.lastMouseMoveX = x;\r\n            //this.lastMouseMoveY = y;\r\n\r\n            return false;\r\n        }\r\n        //private int lastMouseMoveX = -1;\r\n        //private int lastMouseMoveY = -1;\r\n\r\n        /// <summary>\r\n        /// Handle notifications that have been reflected back from the parent window\r\n        /// </summary>\r\n        /// <param name=\"m\">The m to be processed</param>\r\n        /// <returns>bool to indicate if the msg has been handled</returns>\r\n        protected virtual bool HandleReflectNotify(ref Message m)\r\n        {\r\n            const int NM_CLICK = -2;\r\n            const int NM_DBLCLK = -3;\r\n            const int NM_RDBLCLK = -6;\r\n            const int NM_CUSTOMDRAW = -12;\r\n            const int NM_RELEASEDCAPTURE = -16;\r\n            const int LVN_FIRST = -100;\r\n            const int LVN_ITEMCHANGED = LVN_FIRST - 1;\r\n            const int LVN_ITEMCHANGING = LVN_FIRST - 0;\r\n            const int LVN_HOTTRACK = LVN_FIRST - 21;\r\n            const int LVN_MARQUEEBEGIN = LVN_FIRST - 56;\r\n            const int LVN_GETINFOTIP = LVN_FIRST - 58;\r\n            const int LVN_GETDISPINFO = LVN_FIRST - 77;\r\n            const int LVN_BEGINSCROLL = LVN_FIRST - 80;\r\n            const int LVN_ENDSCROLL = LVN_FIRST - 81;\r\n            const int LVN_LINKCLICK = LVN_FIRST - 84;\r\n            const int LVN_GROUPINFO = LVN_FIRST - 88; // undocumented\r\n            const int LVIF_STATE = 8;\r\n            //const int LVIS_FOCUSED = 1;\r\n            const int LVIS_SELECTED = 2;\r\n\r\n            bool isMsgHandled = false;\r\n\r\n            // TODO: Don't do any logic in this method. Create separate methods for each message\r\n\r\n            NativeMethods.NMHDR nmhdr = (NativeMethods.NMHDR)m.GetLParam(typeof(NativeMethods.NMHDR));\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"rn: {0}\", nmhdr->code));\r\n\r\n            switch (nmhdr.code)\r\n            {\r\n                case NM_CLICK:\r\n                    // The standard ListView does some strange stuff here when the list has checkboxes.\r\n                    // If you shift click on non-primary columns when FullRowSelect is true, the \r\n                    // checkedness of the selected rows changes. \r\n                    // We can't just not do the base class stuff because it sets up state that is used to\r\n                    // determine mouse up events later on.\r\n                    // So, we sabotage the base class's process of the click event. The base class does a HITTEST\r\n                    // in order to determine which row was clicked -- if that fails, the base class does nothing.\r\n                    // So when we get a CLICK, we know that the base class is going to send a HITTEST very soon,\r\n                    // so we ignore the next HITTEST message, which will cause the click processing to fail.\r\n                    //System.Diagnostics.Debug.WriteLine(\"NM_CLICK\");\r\n                    skipNextHitTest = true;\r\n                    break;\r\n\r\n                case LVN_BEGINSCROLL:\r\n                    //System.Diagnostics.Debug.WriteLine(\"LVN_BEGINSCROLL\");\r\n                    isMsgHandled = HandleBeginScroll(ref m);\r\n                    break;\r\n\r\n                case LVN_ENDSCROLL:\r\n                    isMsgHandled = HandleEndScroll(ref m);\r\n                    break;\r\n\r\n                case LVN_LINKCLICK:\r\n                    isMsgHandled = HandleLinkClick(ref m);\r\n                    break;\r\n\r\n                case LVN_MARQUEEBEGIN:\r\n                    //System.Diagnostics.Debug.WriteLine(\"LVN_MARQUEEBEGIN\");\r\n                    isMarqueSelecting = true;\r\n                    break;\r\n\r\n                case LVN_GETINFOTIP:\r\n                    //System.Diagnostics.Debug.WriteLine(\"LVN_GETINFOTIP\");\r\n                    // When virtual lists are in SmallIcon view, they generates tooltip message with invalid item indicies.\r\n                    NativeMethods.NMLVGETINFOTIP nmGetInfoTip = (NativeMethods.NMLVGETINFOTIP)m.GetLParam(typeof(NativeMethods.NMLVGETINFOTIP));\r\n                    isMsgHandled = nmGetInfoTip.iItem >= GetItemCount();\r\n                    break;\r\n\r\n                case NM_RELEASEDCAPTURE:\r\n                    //System.Diagnostics.Debug.WriteLine(\"NM_RELEASEDCAPTURE\");\r\n                    isMarqueSelecting = false;\r\n                    Invalidate();\r\n                    break;\r\n\r\n                case NM_CUSTOMDRAW:\r\n                    //System.Diagnostics.Debug.WriteLine(\"NM_CUSTOMDRAW\");\r\n                    isMsgHandled = HandleCustomDraw(ref m);\r\n                    break;\r\n\r\n                case NM_DBLCLK:\r\n                    // The default behavior of a .NET ListView with checkboxes is to toggle the checkbox on\r\n                    // double-click. That's just silly, if you ask me :)\r\n                    if (CheckBoxes)\r\n                    {\r\n                        // How do we make ListView not do that silliness? We could just ignore the message\r\n                        // but the last part of the base code sets up state information, and without that\r\n                        // state, the ListView doesn't trigger MouseDoubleClick events. So we fake a\r\n                        // right button double click event, which sets up the same state, but without\r\n                        // toggling the checkbox.\r\n                        nmhdr.code = NM_RDBLCLK;\r\n                        Marshal.StructureToPtr(nmhdr, m.LParam, false);\r\n                    }\r\n                    break;\r\n\r\n                case LVN_ITEMCHANGED:\r\n                    //System.Diagnostics.Debug.WriteLine(\"LVN_ITEMCHANGED\");\r\n                    NativeMethods.NMLISTVIEW nmlistviewPtr2 = (NativeMethods.NMLISTVIEW)m.GetLParam(typeof(NativeMethods.NMLISTVIEW));\r\n                    if ((nmlistviewPtr2.uChanged & LVIF_STATE) != 0)\r\n                    {\r\n                        CheckState currentValue = CalculateCheckState(nmlistviewPtr2.uOldState);\r\n                        CheckState newCheckValue = CalculateCheckState(nmlistviewPtr2.uNewState);\r\n                        if (currentValue != newCheckValue)\r\n                        {\r\n                            // Remove the state indicies so that we don't trigger the OnItemChecked method\r\n                            // when we call our base method after exiting this method\r\n                            nmlistviewPtr2.uOldState &= 0x0FFF;\r\n                            nmlistviewPtr2.uNewState &= 0x0FFF;\r\n                            Marshal.StructureToPtr(nmlistviewPtr2, m.LParam, false);\r\n                        }\r\n                        else\r\n                        {\r\n                            bool isSelected = (nmlistviewPtr2.uNewState & LVIS_SELECTED) == LVIS_SELECTED;\r\n\r\n                            if (isSelected)\r\n                            {\r\n                                // System.Diagnostics.Debug.WriteLine(String.Format(\"Selected: {0}\", nmlistviewPtr2.iItem));\r\n                                bool isShiftDown = (ModifierKeys & Keys.Shift) == Keys.Shift;\r\n\r\n                                // -1 indicates that all rows are to be selected -- in fact, they already have been.\r\n                                // We now have to deselect all the disabled objects.\r\n                                if (nmlistviewPtr2.iItem == -1 || isShiftDown)\r\n                                {\r\n                                    Stopwatch sw = Stopwatch.StartNew();\r\n                                    foreach (object disabledModel in DisabledObjects)\r\n                                    {\r\n                                        int modelIndex = IndexOf(disabledModel);\r\n                                        if (modelIndex >= 0)\r\n                                            NativeMethods.DeselectOneItem(this, modelIndex);\r\n                                    }\r\n                                    Debug.WriteLine(String.Format(\"PERF - Deselecting took {0}ms / {1} ticks\", sw.ElapsedMilliseconds, sw.ElapsedTicks));\r\n                                }\r\n                                else\r\n                                {\r\n                                    // If the object just selected is disabled, explicitly de-select it\r\n                                    OLVListItem olvi = GetItem(nmlistviewPtr2.iItem);\r\n                                    if (olvi != null && !olvi.Enabled)\r\n                                        NativeMethods.DeselectOneItem(this, nmlistviewPtr2.iItem);\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    break;\r\n\r\n                case LVN_ITEMCHANGING:\r\n                    //System.Diagnostics.Debug.WriteLine(\"LVN_ITEMCHANGING\");\r\n                    NativeMethods.NMLISTVIEW nmlistviewPtr = (NativeMethods.NMLISTVIEW)m.GetLParam(typeof(NativeMethods.NMLISTVIEW));\r\n                    if ((nmlistviewPtr.uChanged & LVIF_STATE) != 0)\r\n                    {\r\n                        CheckState currentValue = CalculateCheckState(nmlistviewPtr.uOldState);\r\n                        CheckState newCheckValue = CalculateCheckState(nmlistviewPtr.uNewState);\r\n\r\n                        if (currentValue != newCheckValue)\r\n                        {\r\n                            // Prevent the base method from seeing the state change,\r\n                            // since we handled it elsewhere\r\n                            nmlistviewPtr.uChanged &= ~LVIF_STATE;\r\n                            Marshal.StructureToPtr(nmlistviewPtr, m.LParam, false);\r\n                        }\r\n                    }\r\n                    break;\r\n\r\n                case LVN_HOTTRACK:\r\n                    break;\r\n\r\n                case LVN_GETDISPINFO:\r\n                    break;\r\n\r\n                case LVN_GROUPINFO:\r\n                    //System.Diagnostics.Debug.WriteLine(\"reflect notify: GROUP INFO\");\r\n                    isMsgHandled = HandleGroupInfo(ref m);\r\n                    break;\r\n\r\n                    //default:\r\n                    //System.Diagnostics.Debug.WriteLine(String.Format(\"reflect notify: {0}\", nmhdr.code));\r\n                    //break;\r\n            }\r\n\r\n            return isMsgHandled;\r\n        }\r\n        private bool skipNextHitTest;\r\n\r\n        private CheckState CalculateCheckState(int state)\r\n        {\r\n            switch ((state & 0xf000) >> 12)\r\n            {\r\n                case 1:\r\n                    return CheckState.Unchecked;\r\n                case 2:\r\n                    return CheckState.Checked;\r\n                case 3:\r\n                    return CheckState.Indeterminate;\r\n                default:\r\n                    return CheckState.Checked;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// In the notification messages, we handle attempts to change the width of our columns\r\n        /// </summary>\r\n        /// <param name=\"m\">The m to be processed</param>\r\n        /// <returns>bool to indicate if the msg has been handled</returns>\r\n        protected bool HandleNotify(ref Message m)\r\n        {\r\n            bool isMsgHandled = false;\r\n\r\n            const int NM_CUSTOMDRAW = -12;\r\n\r\n            const int HDN_FIRST = (0 - 300);\r\n            const int HDN_ITEMCHANGINGA = (HDN_FIRST - 0);\r\n            const int HDN_ITEMCHANGINGW = (HDN_FIRST - 20);\r\n            const int HDN_ITEMCLICKA = (HDN_FIRST - 2);\r\n            const int HDN_ITEMCLICKW = (HDN_FIRST - 22);\r\n            const int HDN_DIVIDERDBLCLICKA = (HDN_FIRST - 5);\r\n            const int HDN_DIVIDERDBLCLICKW = (HDN_FIRST - 25);\r\n            const int HDN_BEGINTRACKA = (HDN_FIRST - 6);\r\n            const int HDN_BEGINTRACKW = (HDN_FIRST - 26);\r\n            const int HDN_ENDTRACKA = (HDN_FIRST - 7);\r\n            const int HDN_ENDTRACKW = (HDN_FIRST - 27);\r\n            const int HDN_TRACKA = (HDN_FIRST - 8);\r\n            const int HDN_TRACKW = (HDN_FIRST - 28);\r\n\r\n            // Handle the notification, remembering to handle both ANSI and Unicode versions\r\n            NativeMethods.NMHEADER nmheader = (NativeMethods.NMHEADER)m.GetLParam(typeof(NativeMethods.NMHEADER));\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"not: {0}\", nmhdr->code));\r\n\r\n            //if (nmhdr.code < HDN_FIRST)\r\n            //    System.Diagnostics.Debug.WriteLine(nmhdr.code);\r\n\r\n            // In KB Article #183258, MS states that when a header control has the HDS_FULLDRAG style, it will receive\r\n            // ITEMCHANGING events rather than TRACK events. Under XP SP2 (at least) this is not always true, which may be\r\n            // why MS has withdrawn that particular KB article. It is true that the header is always given the HDS_FULLDRAG\r\n            // style. But even while window style set, the control doesn't always received ITEMCHANGING events.\r\n            // The controlling setting seems to be the Explorer option \"Show Window Contents While Dragging\"!\r\n            // In the category of \"truly bizarre side effects\", if the this option is turned on, we will receive\r\n            // ITEMCHANGING events instead of TRACK events. But if it is turned off, we receive lots of TRACK events and\r\n            // only one ITEMCHANGING event at the very end of the process.\r\n            // If we receive HDN_TRACK messages, it's harder to control the resizing process. If we return a result of 1, we\r\n            // cancel the whole drag operation, not just that particular track event, which is clearly not what we want.\r\n            // If we are willing to compile with unsafe code enabled, we can modify the size of the column in place, using the\r\n            // commented out code below. But without unsafe code, the best we can do is allow the user to drag the column to\r\n            // any width, and then spring it back to within bounds once they release the mouse button. UI-wise it's very ugly.\r\n            switch (nmheader.nhdr.code)\r\n            {\r\n\r\n                case NM_CUSTOMDRAW:\r\n                    if (!OwnerDrawnHeader)\r\n                        isMsgHandled = HeaderControl.HandleHeaderCustomDraw(ref m);\r\n                    break;\r\n\r\n                case HDN_ITEMCLICKA:\r\n                case HDN_ITEMCLICKW:\r\n                    if (!PossibleFinishCellEditing())\r\n                    {\r\n                        m.Result = (IntPtr)1; // prevent the change from happening\r\n                        isMsgHandled = true;\r\n                    }\r\n                    break;\r\n\r\n                case HDN_DIVIDERDBLCLICKA:\r\n                case HDN_DIVIDERDBLCLICKW:\r\n                case HDN_BEGINTRACKA:\r\n                case HDN_BEGINTRACKW:\r\n                    if (!PossibleFinishCellEditing())\r\n                    {\r\n                        m.Result = (IntPtr)1; // prevent the change from happening\r\n                        isMsgHandled = true;\r\n                        break;\r\n                    }\r\n                    if (nmheader.iItem >= 0 && nmheader.iItem < Columns.Count)\r\n                    {\r\n                        OLVColumn column = GetColumn(nmheader.iItem);\r\n                        // Space filling columns can't be dragged or double-click resized\r\n                        if (column.FillsFreeSpace)\r\n                        {\r\n                            m.Result = (IntPtr)1; // prevent the change from happening\r\n                            isMsgHandled = true;\r\n                        }\r\n                    }\r\n                    break;\r\n                case HDN_ENDTRACKA:\r\n                case HDN_ENDTRACKW:\r\n                    //if (this.ShowGroups)\r\n                    //    this.ResizeLastGroup();\r\n                    break;\r\n                case HDN_TRACKA:\r\n                case HDN_TRACKW:\r\n                    if (nmheader.iItem >= 0 && nmheader.iItem < Columns.Count)\r\n                    {\r\n                        NativeMethods.HDITEM hditem = (NativeMethods.HDITEM)Marshal.PtrToStructure(nmheader.pHDITEM, typeof(NativeMethods.HDITEM));\r\n                        OLVColumn column = GetColumn(nmheader.iItem);\r\n                        if (hditem.cxy < column.MinimumWidth)\r\n                            hditem.cxy = column.MinimumWidth;\r\n                        else if (column.MaximumWidth != -1 && hditem.cxy > column.MaximumWidth)\r\n                            hditem.cxy = column.MaximumWidth;\r\n                        Marshal.StructureToPtr(hditem, nmheader.pHDITEM, false);\r\n                    }\r\n                    break;\r\n\r\n                case HDN_ITEMCHANGINGA:\r\n                case HDN_ITEMCHANGINGW:\r\n                    nmheader = (NativeMethods.NMHEADER)m.GetLParam(typeof(NativeMethods.NMHEADER));\r\n                    if (nmheader.iItem >= 0 && nmheader.iItem < Columns.Count)\r\n                    {\r\n                        NativeMethods.HDITEM hditem = (NativeMethods.HDITEM)Marshal.PtrToStructure(nmheader.pHDITEM, typeof(NativeMethods.HDITEM));\r\n                        OLVColumn column = GetColumn(nmheader.iItem);\r\n                        // Check the mask to see if the width field is valid, and if it is, make sure it's within range\r\n                        if ((hditem.mask & 1) == 1)\r\n                        {\r\n                            if (hditem.cxy < column.MinimumWidth ||\r\n                                (column.MaximumWidth != -1 && hditem.cxy > column.MaximumWidth))\r\n                            {\r\n                                m.Result = (IntPtr)1; // prevent the change from happening\r\n                                isMsgHandled = true;\r\n                            }\r\n                        }\r\n                    }\r\n                    break;\r\n\r\n                case ToolTipControl.TTN_SHOW:\r\n                    //System.Diagnostics.Debug.WriteLine(\"olv TTN_SHOW\");\r\n                    if (CellToolTip.Handle == nmheader.nhdr.hwndFrom)\r\n                        isMsgHandled = CellToolTip.HandleShow(ref m);\r\n                    break;\r\n\r\n                case ToolTipControl.TTN_POP:\r\n                    //System.Diagnostics.Debug.WriteLine(\"olv TTN_POP\");\r\n                    if (CellToolTip.Handle == nmheader.nhdr.hwndFrom)\r\n                        isMsgHandled = CellToolTip.HandlePop(ref m);\r\n                    break;\r\n\r\n                case ToolTipControl.TTN_GETDISPINFO:\r\n                    //System.Diagnostics.Debug.WriteLine(\"olv TTN_GETDISPINFO\");\r\n                    if (CellToolTip.Handle == nmheader.nhdr.hwndFrom)\r\n                        isMsgHandled = CellToolTip.HandleGetDispInfo(ref m);\r\n                    break;\r\n\r\n                    //                default:\r\n                    //                    System.Diagnostics.Debug.WriteLine(String.Format(\"notify: {0}\", nmheader.nhdr.code));\r\n                    //                    break;\r\n            }\r\n\r\n            return isMsgHandled;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a ToolTipControl to manage the tooltip control used by the listview control\r\n        /// </summary>\r\n        protected virtual void CreateCellToolTip()\r\n        {\r\n            cellToolTip = new ToolTipControl();\r\n            cellToolTip.AssignHandle(NativeMethods.GetTooltipControl(this));\r\n            cellToolTip.Showing += new EventHandler<ToolTipShowingEventArgs>(HandleCellToolTipShowing);\r\n            cellToolTip.SetMaxWidth();\r\n            NativeMethods.MakeTopMost(cellToolTip);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the handle used by our cell tooltip to be the tooltip used by\r\n        /// the underlying Windows listview control.\r\n        /// </summary>\r\n        protected virtual void UpdateCellToolTipHandle()\r\n        {\r\n            if (cellToolTip != null && cellToolTip.Handle == IntPtr.Zero)\r\n                cellToolTip.AssignHandle(NativeMethods.GetTooltipControl(this));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the WM_PAINT event\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns>Return true if the msg has been handled and nothing further should be done</returns>\r\n        protected virtual bool HandlePaint(ref Message m)\r\n        {\r\n            //System.Diagnostics.Debug.WriteLine(\"> WMPAINT\");\r\n\r\n            // We only want to custom draw the control within WmPaint message and only\r\n            // once per paint event. We use these bools to insure this.\r\n            isInWmPaintEvent = true;\r\n            shouldDoCustomDrawing = true;\r\n            prePaintLevel = 0;\r\n\r\n            ShowOverlays();\r\n\r\n            HandlePrePaint();\r\n            base.WndProc(ref m);\r\n            HandlePostPaint();\r\n            isInWmPaintEvent = false;\r\n            //System.Diagnostics.Debug.WriteLine(\"< WMPAINT\");\r\n            return true;\r\n        }\r\n        private int prePaintLevel;\r\n\r\n        /// <summary>\r\n        /// Perform any steps needed before painting the control\r\n        /// </summary>\r\n        protected virtual void HandlePrePaint()\r\n        {\r\n            // When we get a WM_PAINT msg, remember the rectangle that is being updated.\r\n            // We can't get this information later, since the BeginPaint call wipes it out.\r\n            // this.lastUpdateRectangle = NativeMethods.GetUpdateRect(this); // we no longer need this, but keep the code so we can see it later\r\n\r\n            //// When the list is empty, we want to handle the drawing of the control by ourselves.\r\n            //// Unfortunately, there is no easy way to tell our superclass that we want to do this.\r\n            //// So we resort to guile and deception. We validate the list area of the control, which\r\n            //// effectively tells our superclass that this area does not need to be painted.\r\n            //// Our superclass will then not paint the control, leaving us free to do so ourselves.\r\n            //// Without doing this trickery, the superclass will draw the list as empty,\r\n            //// and then moments later, we will draw the empty list msg, giving a nasty flicker\r\n            //if (this.GetItemCount() == 0 && this.HasEmptyListMsg)\r\n            //    NativeMethods.ValidateRect(this, this.ClientRectangle);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Perform any steps needed after painting the control\r\n        /// </summary>\r\n        protected virtual void HandlePostPaint()\r\n        {\r\n            // This message is no longer necessary, but we keep it for compatibility\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the window position changing.\r\n        /// </summary>\r\n        /// <param name=\"m\">The m to be processed</param>\r\n        /// <returns>bool to indicate if the msg has been handled</returns>\r\n        protected virtual bool HandleWindowPosChanging(ref Message m)\r\n        {\r\n            const int SWP_NOSIZE = 1;\r\n\r\n            NativeMethods.WINDOWPOS pos = (NativeMethods.WINDOWPOS)m.GetLParam(typeof(NativeMethods.WINDOWPOS));\r\n            if ((pos.flags & SWP_NOSIZE) == 0)\r\n            {\r\n                if (pos.cx < Bounds.Width) // only when shrinking\r\n                    // pos.cx is the window width, not the client area width, so we have to subtract the border widths\r\n                    ResizeFreeSpaceFillingColumns(pos.cx - (Bounds.Width - ClientSize.Width));\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Column header clicking, column hiding and resizing\r\n\r\n        /// <summary>\r\n        /// The user has right clicked on the column headers. Do whatever is required\r\n        /// </summary>\r\n        /// <returns>Return true if this event has been handle</returns>\r\n        protected virtual bool HandleHeaderRightClick(int columnIndex)\r\n        {\r\n            ColumnClickEventArgs eventArgs = new ColumnClickEventArgs(columnIndex);\r\n            OnColumnRightClick(eventArgs);\r\n\r\n            // TODO: Allow users to say they have handled this event\r\n\r\n            return ShowHeaderRightClickMenu(columnIndex, Cursor.Position);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Show a menu that is appropriate when the given column header is clicked.\r\n        /// </summary>\r\n        /// <param name=\"columnIndex\">The index of the header that was clicked. This\r\n        /// can be -1, indicating that the header was clicked outside of a column</param>\r\n        /// <param name=\"pt\">Where should the menu be shown</param>\r\n        /// <returns>True if a menu was displayed</returns>\r\n        protected virtual bool ShowHeaderRightClickMenu(int columnIndex, Point pt)\r\n        {\r\n            ToolStripDropDown m = MakeHeaderRightClickMenu(columnIndex);\r\n            if (m.Items.Count > 0)\r\n            {\r\n                m.Show(pt);\r\n                return true;\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create the menu that should be displayed when the user right clicks\r\n        /// on the given column header.\r\n        /// </summary>\r\n        /// <param name=\"columnIndex\">Index of the column that was right clicked.\r\n        /// This can be negative, which indicates a click outside of any header.</param>\r\n        /// <returns>The toolstrip that should be displayed</returns>\r\n        protected virtual ToolStripDropDown MakeHeaderRightClickMenu(int columnIndex)\r\n        {\r\n            ToolStripDropDown m = new ContextMenuStrip();\r\n\r\n            if (columnIndex >= 0 && UseFiltering && ShowFilterMenuOnRightClick)\r\n                m = MakeFilteringMenu(m, columnIndex);\r\n\r\n            if (columnIndex >= 0 && ShowCommandMenuOnRightClick)\r\n                m = MakeColumnCommandMenu(m, columnIndex);\r\n\r\n            if (SelectColumnsOnRightClickBehaviour != ColumnSelectBehaviour.None)\r\n            {\r\n                m = MakeColumnSelectMenu(m);\r\n            }\r\n\r\n            return m;\r\n        }\r\n\r\n        /// <summary>\r\n        /// The user has right clicked on the column headers. Do whatever is required\r\n        /// </summary>\r\n        /// <returns>Return true if this event has been handle</returns>\r\n        [Obsolete(\"Use HandleHeaderRightClick(int) instead\")]\r\n        protected virtual bool HandleHeaderRightClick()\r\n        {\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Show a popup menu at the given point which will allow the user to choose which columns\r\n        /// are visible on this listview\r\n        /// </summary>\r\n        /// <param name=\"pt\">Where should the menu be placed</param>\r\n        [Obsolete(\"Use ShowHeaderRightClickMenu instead\")]\r\n        protected virtual void ShowColumnSelectMenu(Point pt)\r\n        {\r\n            ToolStripDropDown m = MakeColumnSelectMenu(new ContextMenuStrip());\r\n            m.Show(pt);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Show a popup menu at the given point which will allow the user to choose which columns\r\n        /// are visible on this listview\r\n        /// </summary>\r\n        /// <param name=\"columnIndex\"></param>\r\n        /// <param name=\"pt\">Where should the menu be placed</param>\r\n        [Obsolete(\"Use ShowHeaderRightClickMenu instead\")]\r\n        protected virtual void ShowColumnCommandMenu(int columnIndex, Point pt)\r\n        {\r\n            ToolStripDropDown m = MakeColumnCommandMenu(new ContextMenuStrip(), columnIndex);\r\n            if (SelectColumnsOnRightClick)\r\n            {\r\n                if (m.Items.Count > 0)\r\n                    m.Items.Add(new ToolStripSeparator());\r\n                MakeColumnSelectMenu(m);\r\n            }\r\n            m.Show(pt);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or set the text to be used for the sorting ascending command\r\n        /// </summary>\r\n        [Category(\"Labels - ObjectListView\"), DefaultValue(\"Sort ascending by '{0}'\"), Localizable(true)]\r\n        public string MenuLabelSortAscending\r\n        {\r\n            get { return menuLabelSortAscending; }\r\n            set { menuLabelSortAscending = value; }\r\n        }\r\n        private string menuLabelSortAscending = \"Sort ascending by '{0}'\";\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        [Category(\"Labels - ObjectListView\"), DefaultValue(\"Sort descending by '{0}'\"), Localizable(true)]\r\n        public string MenuLabelSortDescending\r\n        {\r\n            get { return menuLabelSortDescending; }\r\n            set { menuLabelSortDescending = value; }\r\n        }\r\n        private string menuLabelSortDescending = \"Sort descending by '{0}'\";\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        [Category(\"Labels - ObjectListView\"), DefaultValue(\"Group by '{0}'\"), Localizable(true)]\r\n        public string MenuLabelGroupBy\r\n        {\r\n            get { return menuLabelGroupBy; }\r\n            set { menuLabelGroupBy = value; }\r\n        }\r\n        private string menuLabelGroupBy = \"Group by '{0}'\";\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        [Category(\"Labels - ObjectListView\"), DefaultValue(\"Lock grouping on '{0}'\"), Localizable(true)]\r\n        public string MenuLabelLockGroupingOn\r\n        {\r\n            get { return menuLabelLockGroupingOn; }\r\n            set { menuLabelLockGroupingOn = value; }\r\n        }\r\n        private string menuLabelLockGroupingOn = \"Lock grouping on '{0}'\";\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        [Category(\"Labels - ObjectListView\"), DefaultValue(\"Unlock grouping from '{0}'\"), Localizable(true)]\r\n        public string MenuLabelUnlockGroupingOn\r\n        {\r\n            get { return menuLabelUnlockGroupingOn; }\r\n            set { menuLabelUnlockGroupingOn = value; }\r\n        }\r\n        private string menuLabelUnlockGroupingOn = \"Unlock grouping from '{0}'\";\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        [Category(\"Labels - ObjectListView\"), DefaultValue(\"Turn off groups\"), Localizable(true)]\r\n        public string MenuLabelTurnOffGroups\r\n        {\r\n            get { return menuLabelTurnOffGroups; }\r\n            set { menuLabelTurnOffGroups = value; }\r\n        }\r\n        private string menuLabelTurnOffGroups = \"Turn off groups\";\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        [Category(\"Labels - ObjectListView\"), DefaultValue(\"Unsort\"), Localizable(true)]\r\n        public string MenuLabelUnsort\r\n        {\r\n            get { return menuLabelUnsort; }\r\n            set { menuLabelUnsort = value; }\r\n        }\r\n        private string menuLabelUnsort = \"Unsort\";\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        [Category(\"Labels - ObjectListView\"), DefaultValue(\"Columns\"), Localizable(true)]\r\n        public string MenuLabelColumns\r\n        {\r\n            get { return menuLabelColumns; }\r\n            set { menuLabelColumns = value; }\r\n        }\r\n        private string menuLabelColumns = \"Columns\";\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        [Category(\"Labels - ObjectListView\"), DefaultValue(\"Select Columns...\"), Localizable(true)]\r\n        public string MenuLabelSelectColumns\r\n        {\r\n            get { return menuLabelSelectColumns; }\r\n            set { menuLabelSelectColumns = value; }\r\n        }\r\n        private string menuLabelSelectColumns = \"Select Columns...\";\r\n\r\n        /// <summary>\r\n        /// Gets or sets the image that will be place next to the Sort Ascending command\r\n        /// </summary>\r\n        public static Bitmap SortAscendingImage = Properties.Resources.SortAscending;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the image that will be placed next to the Sort Descending command\r\n        /// </summary>\r\n        public static Bitmap SortDescendingImage = Properties.Resources.SortDescending;\r\n\r\n        /// <summary>\r\n        /// Append the column selection menu items to the given menu strip.\r\n        /// </summary>\r\n        /// <param name=\"strip\">The menu to which the items will be added.</param>\r\n        /// <param name=\"columnIndex\"></param>\r\n        /// <returns>Return the menu to which the items were added</returns>\r\n        public virtual ToolStripDropDown MakeColumnCommandMenu(ToolStripDropDown strip, int columnIndex)\r\n        {\r\n            OLVColumn column = GetColumn(columnIndex);\r\n            if (column == null)\r\n                return strip;\r\n\r\n            if (strip.Items.Count > 0)\r\n                strip.Items.Add(new ToolStripSeparator());\r\n\r\n            string label = String.Format(MenuLabelSortAscending, column.Text);\r\n            if (column.Sortable && !String.IsNullOrEmpty(label))\r\n            {\r\n                strip.Items.Add(label, SortAscendingImage, (EventHandler)delegate (object sender, EventArgs args)\r\n                {\r\n                    Sort(column, SortOrder.Ascending);\r\n                });\r\n            }\r\n            label = String.Format(MenuLabelSortDescending, column.Text);\r\n            if (column.Sortable && !String.IsNullOrEmpty(label))\r\n            {\r\n                strip.Items.Add(label, SortDescendingImage, (EventHandler)delegate (object sender, EventArgs args)\r\n                {\r\n                    Sort(column, SortOrder.Descending);\r\n                });\r\n            }\r\n            if (CanShowGroups)\r\n            {\r\n                label = String.Format(MenuLabelGroupBy, column.Text);\r\n                if (column.Groupable && !String.IsNullOrEmpty(label))\r\n                {\r\n                    strip.Items.Add(label, null, (EventHandler)delegate (object sender, EventArgs args)\r\n                    {\r\n                        ShowGroups = true;\r\n                        PrimarySortColumn = column;\r\n                        PrimarySortOrder = SortOrder.Ascending;\r\n                        BuildList();\r\n                    });\r\n                }\r\n            }\r\n            if (ShowGroups)\r\n            {\r\n                if (AlwaysGroupByColumn == column)\r\n                {\r\n                    label = String.Format(MenuLabelUnlockGroupingOn, column.Text);\r\n                    if (!String.IsNullOrEmpty(label))\r\n                    {\r\n                        strip.Items.Add(label, null, (EventHandler)delegate (object sender, EventArgs args)\r\n                        {\r\n                            AlwaysGroupByColumn = null;\r\n                            AlwaysGroupBySortOrder = SortOrder.None;\r\n                            BuildList();\r\n                        });\r\n                    }\r\n                }\r\n                else\r\n                {\r\n                    label = String.Format(MenuLabelLockGroupingOn, column.Text);\r\n                    if (column.Groupable && !String.IsNullOrEmpty(label))\r\n                    {\r\n                        strip.Items.Add(label, null, (EventHandler)delegate (object sender, EventArgs args)\r\n                        {\r\n                            ShowGroups = true;\r\n                            AlwaysGroupByColumn = column;\r\n                            AlwaysGroupBySortOrder = SortOrder.Ascending;\r\n                            BuildList();\r\n                        });\r\n                    }\r\n                }\r\n                label = String.Format(MenuLabelTurnOffGroups, column.Text);\r\n                if (!String.IsNullOrEmpty(label))\r\n                {\r\n                    strip.Items.Add(label, null, (EventHandler)delegate (object sender, EventArgs args)\r\n                    {\r\n                        ShowGroups = false;\r\n                        BuildList();\r\n                    });\r\n                }\r\n            }\r\n            else\r\n            {\r\n                label = String.Format(MenuLabelUnsort, column.Text);\r\n                if (column.Sortable && !String.IsNullOrEmpty(label) && PrimarySortOrder != SortOrder.None)\r\n                {\r\n                    strip.Items.Add(label, null, (EventHandler)delegate (object sender, EventArgs args)\r\n                    {\r\n                        Unsort();\r\n                    });\r\n                }\r\n            }\r\n\r\n            return strip;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Append the column selection menu items to the given menu strip.\r\n        /// </summary>\r\n        /// <param name=\"strip\">The menu to which the items will be added.</param>\r\n        /// <returns>Return the menu to which the items were added</returns>\r\n        public virtual ToolStripDropDown MakeColumnSelectMenu(ToolStripDropDown strip)\r\n        {\r\n\r\n            Debug.Assert(SelectColumnsOnRightClickBehaviour != ColumnSelectBehaviour.None);\r\n\r\n            // Append a separator if the menu isn't empty and the last item isn't already a separator\r\n            if (strip.Items.Count > 0 && (!(strip.Items[strip.Items.Count - 1] is ToolStripSeparator)))\r\n                strip.Items.Add(new ToolStripSeparator());\r\n\r\n            if (AllColumns.Count > 0 && AllColumns[0].LastDisplayIndex == -1)\r\n                RememberDisplayIndicies();\r\n\r\n            if (SelectColumnsOnRightClickBehaviour == ColumnSelectBehaviour.ModelDialog)\r\n            {\r\n                strip.Items.Add(MenuLabelSelectColumns, null, delegate (object sender, EventArgs args)\r\n                {\r\n                    (new ColumnSelectionForm()).OpenOn(this);\r\n                });\r\n            }\r\n\r\n            if (SelectColumnsOnRightClickBehaviour == ColumnSelectBehaviour.Submenu)\r\n            {\r\n                ToolStripMenuItem menu = new ToolStripMenuItem(MenuLabelColumns);\r\n                menu.DropDownItemClicked += new ToolStripItemClickedEventHandler(ColumnSelectMenuItemClicked);\r\n                strip.Items.Add(menu);\r\n                AddItemsToColumnSelectMenu(menu.DropDownItems);\r\n            }\r\n\r\n            if (SelectColumnsOnRightClickBehaviour == ColumnSelectBehaviour.InlineMenu)\r\n            {\r\n                strip.ItemClicked += new ToolStripItemClickedEventHandler(ColumnSelectMenuItemClicked);\r\n                strip.Closing += new ToolStripDropDownClosingEventHandler(ColumnSelectMenuClosing);\r\n                AddItemsToColumnSelectMenu(strip.Items);\r\n            }\r\n\r\n            return strip;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create the menu items that will allow columns to be choosen and add them to the \r\n        /// given collection\r\n        /// </summary>\r\n        /// <param name=\"items\"></param>\r\n        protected void AddItemsToColumnSelectMenu(ToolStripItemCollection items)\r\n        {\r\n\r\n            // Sort columns by display order\r\n            List<OLVColumn> columns = new List<OLVColumn>(AllColumns);\r\n            columns.Sort(delegate (OLVColumn x, OLVColumn y) { return (x.LastDisplayIndex - y.LastDisplayIndex); });\r\n\r\n            // Build menu from sorted columns\r\n            foreach (OLVColumn col in columns)\r\n            {\r\n                ToolStripMenuItem mi = new ToolStripMenuItem(col.Text);\r\n                mi.Checked = col.IsVisible;\r\n                mi.Tag = col;\r\n\r\n                // The 'Index' property returns -1 when the column is not visible, so if the\r\n                // column isn't visible we have to enable the item. Also the first column can't be turned off\r\n                mi.Enabled = !col.IsVisible || col.CanBeHidden;\r\n                items.Add(mi);\r\n            }\r\n        }\r\n\r\n        private void ColumnSelectMenuItemClicked(object sender, ToolStripItemClickedEventArgs e)\r\n        {\r\n            contextMenuStaysOpen = false;\r\n            if (e.ClickedItem is not ToolStripMenuItem menuItemClicked)\r\n                return;\r\n            if (menuItemClicked.Tag is not OLVColumn col)\r\n                return;\r\n            menuItemClicked.Checked = !menuItemClicked.Checked;\r\n            col.IsVisible = menuItemClicked.Checked;\r\n            contextMenuStaysOpen = SelectColumnsMenuStaysOpen;\r\n            BeginInvoke(new MethodInvoker(RebuildColumns));\r\n        }\r\n        private bool contextMenuStaysOpen;\r\n\r\n        private void ColumnSelectMenuClosing(object sender, ToolStripDropDownClosingEventArgs e)\r\n        {\r\n            e.Cancel = contextMenuStaysOpen && e.CloseReason == ToolStripDropDownCloseReason.ItemClicked;\r\n            contextMenuStaysOpen = false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a Filtering menu\r\n        /// </summary>\r\n        /// <param name=\"strip\"></param>\r\n        /// <param name=\"columnIndex\"></param>\r\n        /// <returns></returns>\r\n        public virtual ToolStripDropDown MakeFilteringMenu(ToolStripDropDown strip, int columnIndex)\r\n        {\r\n            OLVColumn column = GetColumn(columnIndex);\r\n            if (column == null)\r\n                return strip;\r\n\r\n            FilterMenuBuilder strategy = FilterMenuBuildStrategy;\r\n            if (strategy == null)\r\n                return strip;\r\n\r\n            return strategy.MakeFilterMenu(strip, this, column);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Override the OnColumnReordered method to do what we want\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnColumnReordered(ColumnReorderedEventArgs e)\r\n        {\r\n            base.OnColumnReordered(e);\r\n\r\n            // The internal logic of the .NET code behind a ENDDRAG event means that,\r\n            // at this point, the DisplayIndex's of the columns are not yet as they are\r\n            // going to be. So we have to invoke a method to run later that will remember\r\n            // what the real DisplayIndex's are.\r\n            BeginInvoke(new MethodInvoker(RememberDisplayIndicies));\r\n        }\r\n\r\n        private void RememberDisplayIndicies()\r\n        {\r\n            // Remember the display indexes so we can put them back at a later date\r\n            foreach (OLVColumn x in AllColumns)\r\n                x.LastDisplayIndex = x.DisplayIndex;\r\n        }\r\n\r\n        /// <summary>\r\n        /// When the column widths are changing, resize the space filling columns\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)\r\n        {\r\n            if (UpdateSpaceFillingColumnsWhenDraggingColumnDivider && !GetColumn(e.ColumnIndex).FillsFreeSpace)\r\n            {\r\n                // If the width of a column is increasing, resize any space filling columns allowing the extra\r\n                // space that the new column width is going to consume\r\n                int oldWidth = GetColumn(e.ColumnIndex).Width;\r\n                if (e.NewWidth > oldWidth)\r\n                    ResizeFreeSpaceFillingColumns(ClientSize.Width - (e.NewWidth - oldWidth));\r\n                else\r\n                    ResizeFreeSpaceFillingColumns();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// When the column widths change, resize the space filling columns\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e)\r\n        {\r\n            if (!GetColumn(e.ColumnIndex).FillsFreeSpace)\r\n                ResizeFreeSpaceFillingColumns();\r\n        }\r\n\r\n        /// <summary>\r\n        /// When the size of the control changes, we have to resize our space filling columns.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleLayout(object sender, LayoutEventArgs e)\r\n        {\r\n            // We have to delay executing the recalculation of the columns, since virtual lists\r\n            // get terribly confused if we resize the column widths during this event.\r\n            if (!hasResizeColumnsHandler)\r\n            {\r\n                hasResizeColumnsHandler = true;\r\n                RunWhenIdle(HandleApplicationIdleResizeColumns);\r\n            }\r\n        }\r\n\r\n        private void RunWhenIdle(EventHandler eventHandler)\r\n        {\r\n            Application.Idle += eventHandler;\r\n            if (!CanUseApplicationIdle)\r\n            {\r\n                SynchronizationContext.Current.Post(delegate (object x) { Application.RaiseIdle(EventArgs.Empty); }, null);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Resize our space filling columns so they fill any unoccupied width in the control\r\n        /// </summary>\r\n        protected virtual void ResizeFreeSpaceFillingColumns()\r\n        {\r\n            ResizeFreeSpaceFillingColumns(ClientSize.Width);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Resize our space filling columns so they fill any unoccupied width in the control\r\n        /// </summary>\r\n        protected virtual void ResizeFreeSpaceFillingColumns(int freeSpace)\r\n        {\r\n            // It's too confusing to dynamically resize columns at design time.\r\n            if (DesignMode)\r\n                return;\r\n\r\n            if (Frozen)\r\n                return;\r\n\r\n            // Calculate the free space available\r\n            int totalProportion = 0;\r\n            List<OLVColumn> spaceFillingColumns = new List<OLVColumn>();\r\n            for (int i = 0; i < Columns.Count; i++)\r\n            {\r\n                OLVColumn col = GetColumn(i);\r\n                if (col.FillsFreeSpace)\r\n                {\r\n                    spaceFillingColumns.Add(col);\r\n                    totalProportion += col.FreeSpaceProportion;\r\n                }\r\n                else\r\n                    freeSpace -= col.Width;\r\n            }\r\n            freeSpace = Math.Max(0, freeSpace);\r\n\r\n            // Any space filling column that would hit it's Minimum or Maximum\r\n            // width must be treated as a fixed column.\r\n            foreach (OLVColumn col in spaceFillingColumns.ToArray())\r\n            {\r\n                int newWidth = (freeSpace * col.FreeSpaceProportion) / totalProportion;\r\n\r\n                if (col.MinimumWidth != -1 && newWidth < col.MinimumWidth)\r\n                    newWidth = col.MinimumWidth;\r\n                else if (col.MaximumWidth != -1 && newWidth > col.MaximumWidth)\r\n                    newWidth = col.MaximumWidth;\r\n                else\r\n                    newWidth = 0;\r\n\r\n                if (newWidth > 0)\r\n                {\r\n                    col.Width = newWidth;\r\n                    freeSpace -= newWidth;\r\n                    totalProportion -= col.FreeSpaceProportion;\r\n                    spaceFillingColumns.Remove(col);\r\n                }\r\n            }\r\n\r\n            // Distribute the free space between the columns\r\n            foreach (OLVColumn col in spaceFillingColumns)\r\n            {\r\n                col.Width = (freeSpace * col.FreeSpaceProportion) / totalProportion;\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Checkboxes\r\n\r\n        /// <summary>\r\n        /// Check all rows\r\n        /// </summary>\r\n        public virtual void CheckAll()\r\n        {\r\n            CheckedObjects = EnumerableToArray(Objects, false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Check the checkbox in the given column header\r\n        /// </summary>\r\n        /// <remarks>If the given columns header check box is linked to the cell check boxes,\r\n        /// then checkboxes in all cells will also be checked.</remarks>\r\n        /// <param name=\"column\"></param>\r\n        public virtual void CheckHeaderCheckBox(OLVColumn column)\r\n        {\r\n            if (column == null)\r\n                return;\r\n\r\n            ChangeHeaderCheckBoxState(column, CheckState.Checked);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Mark the checkbox in the given column header as having an indeterminate value\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        public virtual void CheckIndeterminateHeaderCheckBox(OLVColumn column)\r\n        {\r\n            if (column == null)\r\n                return;\r\n\r\n            ChangeHeaderCheckBoxState(column, CheckState.Indeterminate);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Mark the given object as indeterminate check state\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model object to be marked indeterminate</param>\r\n        public virtual void CheckIndeterminateObject(object modelObject)\r\n        {\r\n            SetObjectCheckedness(modelObject, CheckState.Indeterminate);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Mark the given object as checked in the list\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model object to be checked</param>\r\n        public virtual void CheckObject(object modelObject)\r\n        {\r\n            SetObjectCheckedness(modelObject, CheckState.Checked);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Mark the given objects as checked in the list\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">The model object to be checked</param>\r\n        public virtual void CheckObjects(IEnumerable modelObjects)\r\n        {\r\n            foreach (object model in modelObjects)\r\n                CheckObject(model);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Put a check into the check box at the given cell\r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <param name=\"column\"></param>\r\n        public virtual void CheckSubItem(object rowObject, OLVColumn column)\r\n        {\r\n            if (column == null || rowObject == null || !column.CheckBoxes)\r\n                return;\r\n\r\n            column.PutCheckState(rowObject, CheckState.Checked);\r\n            RefreshObject(rowObject);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Put an indeterminate check into the check box at the given cell\r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <param name=\"column\"></param>\r\n        public virtual void CheckIndeterminateSubItem(object rowObject, OLVColumn column)\r\n        {\r\n            if (column == null || rowObject == null || !column.CheckBoxes)\r\n                return;\r\n\r\n            column.PutCheckState(rowObject, CheckState.Indeterminate);\r\n            RefreshObject(rowObject);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return true of the given object is checked\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model object whose checkedness is returned</param>\r\n        /// <returns>Is the given object checked?</returns>\r\n        /// <remarks>If the given object is not in the list, this method returns false.</remarks>\r\n        public virtual bool IsChecked(object modelObject)\r\n        {\r\n            return GetCheckState(modelObject) == CheckState.Checked;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return true of the given object is indeterminately checked\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model object whose checkedness is returned</param>\r\n        /// <returns>Is the given object indeterminately checked?</returns>\r\n        /// <remarks>If the given object is not in the list, this method returns false.</remarks>\r\n        public virtual bool IsCheckedIndeterminate(object modelObject)\r\n        {\r\n            return GetCheckState(modelObject) == CheckState.Indeterminate;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Is there a check at the check box at the given cell\r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <param name=\"column\"></param>\r\n        public virtual bool IsSubItemChecked(object rowObject, OLVColumn column)\r\n        {\r\n            if (column == null || rowObject == null || !column.CheckBoxes)\r\n                return false;\r\n            return (column.GetCheckState(rowObject) == CheckState.Checked);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get the checkedness of an object from the model. Returning null means the\r\n        /// model does not know and the value from the control will be used.\r\n        /// </summary>\r\n        /// <param name=\"modelObject\"></param>\r\n        /// <returns></returns>\r\n        protected virtual CheckState? GetCheckState(Object modelObject)\r\n        {\r\n            if (CheckStateGetter != null)\r\n                return CheckStateGetter(modelObject);\r\n            return PersistentCheckBoxes ? GetPersistentCheckState(modelObject) : (CheckState?)null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Record the change of checkstate for the given object in the model.\r\n        /// This does not update the UI -- only the model\r\n        /// </summary>\r\n        /// <param name=\"modelObject\"></param>\r\n        /// <param name=\"state\"></param>\r\n        /// <returns>The check state that was recorded and that should be used to update\r\n        /// the control.</returns>\r\n        protected virtual CheckState PutCheckState(Object modelObject, CheckState state)\r\n        {\r\n            if (CheckStatePutter != null)\r\n                return CheckStatePutter(modelObject, state);\r\n            return PersistentCheckBoxes ? SetPersistentCheckState(modelObject, state) : state;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the check state of the given object to be the given state.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If the given model object isn't in the list, we still try to remember\r\n        /// its state, in case it is referenced in the future.</remarks>\r\n        /// <param name=\"modelObject\"></param>\r\n        /// <param name=\"state\"></param>\r\n        /// <returns>True if the checkedness of the model changed</returns>\r\n        protected virtual bool SetObjectCheckedness(object modelObject, CheckState state)\r\n        {\r\n\r\n            if (GetCheckState(modelObject) == state)\r\n                return false;\r\n\r\n            OLVListItem olvi = ModelToItem(modelObject);\r\n\r\n            // If we didn't find the given, we still try to record the check state.\r\n            if (olvi == null)\r\n            {\r\n                PutCheckState(modelObject, state);\r\n                return true;\r\n            }\r\n\r\n            // Trigger checkbox changing event\r\n            ItemCheckEventArgs ice = new ItemCheckEventArgs(olvi.Index, state, olvi.CheckState);\r\n            OnItemCheck(ice);\r\n            if (ice.NewValue == olvi.CheckState)\r\n                return false;\r\n\r\n            olvi.CheckState = PutCheckState(modelObject, state);\r\n            RefreshItem(olvi);\r\n\r\n            // Trigger check changed event\r\n            OnItemChecked(new ItemCheckedEventArgs(olvi));\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Toggle the checkedness of the given object. A checked object becomes\r\n        /// unchecked; an unchecked or indeterminate object becomes checked.\r\n        /// If the list has tristate checkboxes, the order is:\r\n        ///    unchecked -> checked -> indeterminate -> unchecked ...\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model object to be checked</param>\r\n        public virtual void ToggleCheckObject(object modelObject)\r\n        {\r\n            OLVListItem olvi = ModelToItem(modelObject);\r\n            if (olvi == null)\r\n                return;\r\n\r\n            CheckState newState = CheckState.Checked;\r\n\r\n            if (olvi.CheckState == CheckState.Checked)\r\n            {\r\n                newState = TriStateCheckBoxes ? CheckState.Indeterminate : CheckState.Unchecked;\r\n            }\r\n            else\r\n            {\r\n                if (olvi.CheckState == CheckState.Indeterminate && TriStateCheckBoxes)\r\n                    newState = CheckState.Unchecked;\r\n            }\r\n            SetObjectCheckedness(modelObject, newState);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Toggle the checkbox in the header of the given column\r\n        /// </summary>\r\n        /// <remarks>Obviously, this is only useful if the column actually has a header checkbox.</remarks>\r\n        /// <param name=\"column\"></param>\r\n        public virtual void ToggleHeaderCheckBox(OLVColumn column)\r\n        {\r\n            if (column == null)\r\n                return;\r\n\r\n            CheckState newState = CalculateToggledCheckState(column.HeaderCheckState, column.HeaderTriStateCheckBox, column.HeaderCheckBoxDisabled);\r\n            ChangeHeaderCheckBoxState(column, newState);\r\n        }\r\n\r\n        private void ChangeHeaderCheckBoxState(OLVColumn column, CheckState newState)\r\n        {\r\n            // Tell the world the checkbox was clicked\r\n            HeaderCheckBoxChangingEventArgs args = new HeaderCheckBoxChangingEventArgs();\r\n            args.Column = column;\r\n            args.NewCheckState = newState;\r\n\r\n            OnHeaderCheckBoxChanging(args);\r\n            if (args.Cancel || column.HeaderCheckState == args.NewCheckState)\r\n                return;\r\n\r\n            Stopwatch sw = Stopwatch.StartNew();\r\n\r\n            column.HeaderCheckState = args.NewCheckState;\r\n            HeaderControl.Invalidate(column);\r\n\r\n            if (column.HeaderCheckBoxUpdatesRowCheckBoxes)\r\n            {\r\n                if (column.Index == 0)\r\n                    UpdateAllPrimaryCheckBoxes(column);\r\n                else\r\n                    UpdateAllSubItemCheckBoxes(column);\r\n            }\r\n\r\n            Debug.WriteLine(String.Format(\"PERF - Changing row checkboxes on {2} objects took {0}ms / {1} ticks\", sw.ElapsedMilliseconds, sw.ElapsedTicks, GetItemCount()));\r\n        }\r\n\r\n        private void UpdateAllPrimaryCheckBoxes(OLVColumn column)\r\n        {\r\n            if (!CheckBoxes || column.HeaderCheckState == CheckState.Indeterminate)\r\n                return;\r\n\r\n            if (column.HeaderCheckState == CheckState.Checked)\r\n                CheckAll();\r\n            else\r\n                UncheckAll();\r\n        }\r\n\r\n        private void UpdateAllSubItemCheckBoxes(OLVColumn column)\r\n        {\r\n            if (!column.CheckBoxes || column.HeaderCheckState == CheckState.Indeterminate)\r\n                return;\r\n\r\n            foreach (object model in Objects)\r\n                column.PutCheckState(model, column.HeaderCheckState);\r\n            BuildList(true);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Toggle the check at the check box of the given cell\r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <param name=\"column\"></param>\r\n        public virtual void ToggleSubItemCheckBox(object rowObject, OLVColumn column)\r\n        {\r\n            CheckState currentState = column.GetCheckState(rowObject);\r\n            CheckState newState = CalculateToggledCheckState(currentState, column.TriStateCheckBoxes, false);\r\n\r\n            SubItemCheckingEventArgs args = new SubItemCheckingEventArgs(column, ModelToItem(rowObject), column.Index, currentState, newState);\r\n            OnSubItemChecking(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            switch (args.NewValue)\r\n            {\r\n                case CheckState.Checked:\r\n                    CheckSubItem(rowObject, column);\r\n                    break;\r\n                case CheckState.Indeterminate:\r\n                    CheckIndeterminateSubItem(rowObject, column);\r\n                    break;\r\n                case CheckState.Unchecked:\r\n                    UncheckSubItem(rowObject, column);\r\n                    break;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Uncheck all rows\r\n        /// </summary>\r\n        public virtual void UncheckAll()\r\n        {\r\n            CheckedObjects = null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Mark the given object as unchecked in the list\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model object to be unchecked</param>\r\n        public virtual void UncheckObject(object modelObject)\r\n        {\r\n            SetObjectCheckedness(modelObject, CheckState.Unchecked);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Mark the given objects as unchecked in the list\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">The model object to be checked</param>\r\n        public virtual void UncheckObjects(IEnumerable modelObjects)\r\n        {\r\n            foreach (object model in modelObjects)\r\n                UncheckObject(model);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Uncheck the checkbox in the given column header\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        public virtual void UncheckHeaderCheckBox(OLVColumn column)\r\n        {\r\n            if (column == null)\r\n                return;\r\n\r\n            ChangeHeaderCheckBoxState(column, CheckState.Unchecked);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Uncheck the check at the given cell\r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <param name=\"column\"></param>\r\n        public virtual void UncheckSubItem(object rowObject, OLVColumn column)\r\n        {\r\n            if (column == null || rowObject == null || !column.CheckBoxes)\r\n                return;\r\n\r\n            column.PutCheckState(rowObject, CheckState.Unchecked);\r\n            RefreshObject(rowObject);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region OLV accessing\r\n\r\n        /// <summary>\r\n        /// Return the column at the given index\r\n        /// </summary>\r\n        /// <param name=\"index\">Index of the column to be returned</param>\r\n        /// <returns>An OLVColumn</returns>\r\n        public virtual OLVColumn GetColumn(int index)\r\n        {\r\n            return (OLVColumn)Columns[index];\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the column at the given title.\r\n        /// </summary>\r\n        /// <param name=\"name\">Name of the column to be returned</param>\r\n        /// <returns>An OLVColumn</returns>\r\n        public virtual OLVColumn GetColumn(string name)\r\n        {\r\n            foreach (ColumnHeader column in Columns)\r\n            {\r\n                if (column.Text == name)\r\n                    return (OLVColumn)column;\r\n            }\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a collection of columns that are visible to the given view.\r\n        /// Only Tile and Details have columns; all other views have 0 columns.\r\n        /// </summary>\r\n        /// <param name=\"view\">Which view are the columns being calculate for?</param>\r\n        /// <returns>A list of columns</returns>\r\n        public virtual List<OLVColumn> GetFilteredColumns(View view)\r\n        {\r\n            // For both detail and tile view, the first column must be included. Normally, we would\r\n            // use the ColumnHeader.Index property, but if the header is not currently part of a ListView\r\n            // that property returns -1. So, we track the index of\r\n            // the column header, and always include the first header.\r\n\r\n            int index = 0;\r\n            return AllColumns.FindAll(delegate (OLVColumn x)\r\n            {\r\n                return (index++ == 0) || x.IsVisible;\r\n            });\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the number of items in the list\r\n        /// </summary>\r\n        /// <returns>the number of items in the list</returns>\r\n        /// <remarks>If a filter is installed, this will return the number of items that match the filter.</remarks>\r\n        public virtual int GetItemCount()\r\n        {\r\n            return Items.Count;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the item at the given index\r\n        /// </summary>\r\n        /// <param name=\"index\">Index of the item to be returned</param>\r\n        /// <returns>An OLVListItem</returns>\r\n        public virtual OLVListItem GetItem(int index)\r\n        {\r\n            if (index < 0 || index >= GetItemCount())\r\n                return null;\r\n\r\n            return (OLVListItem)Items[index];\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the model object at the given index\r\n        /// </summary>\r\n        /// <param name=\"index\">Index of the model object to be returned</param>\r\n        /// <returns>A model object</returns>\r\n        public virtual object GetModelObject(int index)\r\n        {\r\n            OLVListItem item = GetItem(index);\r\n            return item == null ? null : item.RowObject;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Find the item and column that are under the given co-ords\r\n        /// </summary>\r\n        /// <param name=\"x\">X co-ord</param>\r\n        /// <param name=\"y\">Y co-ord</param>\r\n        /// <param name=\"hitColumn\">The column under the given point</param>\r\n        /// <returns>The item under the given point. Can be null.</returns>\r\n        public virtual OLVListItem GetItemAt(int x, int y, out OLVColumn hitColumn)\r\n        {\r\n            hitColumn = null;\r\n            ListViewHitTestInfo info = HitTest(x, y);\r\n            if (info.Item == null)\r\n                return null;\r\n\r\n            if (info.SubItem != null)\r\n            {\r\n                int subItemIndex = info.Item.SubItems.IndexOf(info.SubItem);\r\n                hitColumn = GetColumn(subItemIndex);\r\n            }\r\n\r\n            return (OLVListItem)info.Item;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the sub item at the given index/column\r\n        /// </summary>\r\n        /// <param name=\"index\">Index of the item to be returned</param>\r\n        /// <param name=\"columnIndex\">Index of the subitem to be returned</param>\r\n        /// <returns>An OLVListSubItem</returns>\r\n        public virtual OLVListSubItem GetSubItem(int index, int columnIndex)\r\n        {\r\n            OLVListItem olvi = GetItem(index);\r\n            return olvi == null ? null : olvi.GetSubItem(columnIndex);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Object manipulation\r\n\r\n        /// <summary>\r\n        /// Scroll the listview so that the given group is at the top.\r\n        /// </summary>\r\n        /// <param name=\"lvg\">The group to be revealed</param>\r\n        /// <remarks><para>\r\n        /// If the group is already visible, the list will still be scrolled to move\r\n        /// the group to the top, if that is possible.\r\n        /// </para>\r\n        /// <para>This only works when the list is showing groups (obviously).</para>\r\n        /// <para>This does not work on virtual lists, since virtual lists don't use ListViewGroups\r\n        /// for grouping. Use <see cref=\"VirtualObjectListView.EnsureNthGroupVisible\"/> instead.</para>\r\n        /// </remarks>\r\n        public virtual void EnsureGroupVisible(ListViewGroup lvg)\r\n        {\r\n            if (!ShowGroups || lvg == null)\r\n                return;\r\n\r\n            int groupIndex = Groups.IndexOf(lvg);\r\n            if (groupIndex <= 0)\r\n            {\r\n                // There is no easy way to scroll back to the beginning of the list\r\n                int delta = 0 - NativeMethods.GetScrollPosition(this, false);\r\n                NativeMethods.Scroll(this, 0, delta);\r\n            }\r\n            else\r\n            {\r\n                // Find the display rectangle of the last item in the previous group\r\n                ListViewGroup previousGroup = Groups[groupIndex - 1];\r\n                ListViewItem lastItemInGroup = previousGroup.Items[previousGroup.Items.Count - 1];\r\n                Rectangle r = GetItemRect(lastItemInGroup.Index);\r\n\r\n                // Scroll so that the last item of the previous group is just out of sight,\r\n                // which will make the desired group header visible.\r\n                int delta = r.Y + r.Height / 2;\r\n                NativeMethods.Scroll(this, 0, delta);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Ensure that the given model object is visible\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model object to be revealed</param>\r\n        public virtual void EnsureModelVisible(Object modelObject)\r\n        {\r\n            int index = IndexOf(modelObject);\r\n            if (index >= 0)\r\n                EnsureVisible(index);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the model object of the row that is selected or null if there is no selection or more than one selection\r\n        /// </summary>\r\n        /// <returns>Model object or null</returns>\r\n        [Obsolete(\"Use SelectedObject property instead of this method\")]\r\n        public virtual object GetSelectedObject()\r\n        {\r\n            return SelectedObject;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the model objects of the rows that are selected or an empty collection if there is no selection\r\n        /// </summary>\r\n        /// <returns>ArrayList</returns>\r\n        [Obsolete(\"Use SelectedObjects property instead of this method\")]\r\n        public virtual ArrayList GetSelectedObjects()\r\n        {\r\n            return EnumerableToArray(SelectedObjects, false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the model object of the row that is checked or null if no row is checked\r\n        /// or more than one row is checked\r\n        /// </summary>\r\n        /// <returns>Model object or null</returns>\r\n        /// <remarks>Use CheckedObject property instead of this method</remarks>\r\n        [Obsolete(\"Use CheckedObject property instead of this method\")]\r\n        public virtual object GetCheckedObject()\r\n        {\r\n            return CheckedObject;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get the collection of model objects that are checked.\r\n        /// </summary>\r\n        /// <remarks>Use CheckedObjects property instead of this method</remarks>\r\n        [Obsolete(\"Use CheckedObjects property instead of this method\")]\r\n        public virtual ArrayList GetCheckedObjects()\r\n        {\r\n            return EnumerableToArray(CheckedObjects, false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Find the given model object within the listview and return its index\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model object to be found</param>\r\n        /// <returns>The index of the object. -1 means the object was not present</returns>\r\n        public virtual int IndexOf(Object modelObject)\r\n        {\r\n            for (int i = 0; i < GetItemCount(); i++)\r\n            {\r\n                if (GetModelObject(i).Equals(modelObject))\r\n                    return i;\r\n            }\r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Rebuild the given ListViewItem with the data from its associated model.\r\n        /// </summary>\r\n        /// <remarks>This method does not resort or regroup the view. It simply updates\r\n        /// the displayed data of the given item</remarks>\r\n        public virtual void RefreshItem(OLVListItem olvi)\r\n        {\r\n            olvi.UseItemStyleForSubItems = true;\r\n            olvi.SubItems.Clear();\r\n            FillInValues(olvi, olvi.RowObject);\r\n            PostProcessOneRow(olvi.Index, GetDisplayOrderOfItemIndex(olvi), olvi);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Rebuild the data on the row that is showing the given object.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This method does not resort or regroup the view.\r\n        /// </para>\r\n        /// <para>\r\n        /// The given object is *not* used as the source of data for the rebuild.\r\n        /// It is only used to locate the matching model in the <see cref=\"Objects\"/> collection,\r\n        /// then that matching model is used as the data source. This distinction is\r\n        /// only important in model classes that have overridden the Equals() method.\r\n        /// </para>\r\n        /// <para>\r\n        /// If you want the given model object to replace the pre-existing model,\r\n        /// use <see cref=\"UpdateObject\"/>. \r\n        /// </para>\r\n        /// </remarks>\r\n        public virtual void RefreshObject(object modelObject)\r\n        {\r\n            RefreshObjects(new object[] { modelObject });\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the rows that are showing the given objects\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>This method does not resort or regroup the view.</para>\r\n        /// <para>This method can safely be called from background threads.</para>\r\n        /// </remarks>\r\n        public virtual void RefreshObjects(IList modelObjects)\r\n        {\r\n            if (InvokeRequired)\r\n            {\r\n                Invoke((MethodInvoker)delegate { RefreshObjects(modelObjects); });\r\n                return;\r\n            }\r\n            foreach (object modelObject in modelObjects)\r\n            {\r\n                OLVListItem olvi = ModelToItem(modelObject);\r\n                if (olvi != null)\r\n                {\r\n                    ReplaceModel(olvi, modelObject);\r\n                    RefreshItem(olvi);\r\n                }\r\n            }\r\n        }\r\n\r\n        private void ReplaceModel(OLVListItem olvi, object newModel)\r\n        {\r\n            if (ReferenceEquals(olvi.RowObject, newModel))\r\n                return;\r\n\r\n            TakeOwnershipOfObjects();\r\n            ArrayList array = EnumerableToArray(Objects, false);\r\n            int i = array.IndexOf(olvi.RowObject);\r\n            if (i >= 0)\r\n                array[i] = newModel;\r\n\r\n            olvi.RowObject = newModel;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the rows that are selected\r\n        /// </summary>\r\n        /// <remarks>This method does not resort or regroup the view.</remarks>\r\n        public virtual void RefreshSelectedObjects()\r\n        {\r\n            foreach (ListViewItem lvi in SelectedItems)\r\n                RefreshItem((OLVListItem)lvi);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Select the row that is displaying the given model object, in addition to any current selection.\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The object to be selected</param>\r\n        /// <remarks>Use the <see cref=\"SelectedObject\"/> property to deselect all other rows</remarks>\r\n        public virtual void SelectObject(object modelObject)\r\n        {\r\n            SelectObject(modelObject, false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Select the row that is displaying the given model object, in addition to any current selection.\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The object to be selected</param>\r\n        /// <param name=\"setFocus\">Should the object be focused as well?</param>\r\n        /// <remarks>Use the <see cref=\"SelectedObject\"/> property to deselect all other rows</remarks>\r\n        public virtual void SelectObject(object modelObject, bool setFocus)\r\n        {\r\n            OLVListItem olvi = ModelToItem(modelObject);\r\n            if (olvi != null && olvi.Enabled)\r\n            {\r\n                olvi.Selected = true;\r\n                if (setFocus)\r\n                    olvi.Focused = true;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Select the rows that is displaying any of the given model object. All other rows are deselected.\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">A collection of model objects</param>\r\n        public virtual void SelectObjects(IList modelObjects)\r\n        {\r\n            SelectedIndices.Clear();\r\n\r\n            if (modelObjects == null)\r\n                return;\r\n\r\n            foreach (object modelObject in modelObjects)\r\n            {\r\n                OLVListItem olvi = ModelToItem(modelObject);\r\n                if (olvi != null && olvi.Enabled)\r\n                    olvi.Selected = true;\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Freezing/Suspending\r\n\r\n        /// <summary>\r\n        /// Get or set whether or not the listview is frozen. When the listview is\r\n        /// frozen, it will not update itself.\r\n        /// </summary>\r\n        /// <remarks><para>The Frozen property is similar to the methods Freeze()/Unfreeze()\r\n        /// except that setting Frozen property to false immediately unfreezes the control\r\n        /// regardless of the number of Freeze() calls outstanding.</para></remarks>\r\n        /// <example>objectListView1.Frozen = false; // unfreeze the control now!\r\n        /// </example>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual bool Frozen\r\n        {\r\n            get { return freezeCount > 0; }\r\n            set\r\n            {\r\n                if (value)\r\n                    Freeze();\r\n                else if (freezeCount > 0)\r\n                {\r\n                    freezeCount = 1;\r\n                    Unfreeze();\r\n                }\r\n            }\r\n        }\r\n        private int freezeCount;\r\n\r\n        /// <summary>\r\n        /// Freeze the listview so that it no longer updates itself.\r\n        /// </summary>\r\n        /// <remarks>Freeze()/Unfreeze() calls nest correctly</remarks>\r\n        public virtual void Freeze()\r\n        {\r\n            if (freezeCount == 0)\r\n                DoFreeze();\r\n\r\n            freezeCount++;\r\n            OnFreezing(new FreezeEventArgs(freezeCount));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Unfreeze the listview. If this call is the outermost Unfreeze(),\r\n        /// the contents of the listview will be rebuilt.\r\n        /// </summary>\r\n        /// <remarks>Freeze()/Unfreeze() calls nest correctly</remarks>\r\n        public virtual void Unfreeze()\r\n        {\r\n            if (freezeCount <= 0)\r\n                return;\r\n\r\n            freezeCount--;\r\n            if (freezeCount == 0)\r\n                DoUnfreeze();\r\n\r\n            OnFreezing(new FreezeEventArgs(freezeCount));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the actual work required when the listview is frozen\r\n        /// </summary>\r\n        protected virtual void DoFreeze()\r\n        {\r\n            BeginUpdate();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the actual work required when the listview is unfrozen\r\n        /// </summary>\r\n        protected virtual void DoUnfreeze()\r\n        {\r\n            EndUpdate();\r\n            ResizeFreeSpaceFillingColumns();\r\n            BuildList();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Returns true if selection events are currently suspended.\r\n        /// While selection events are suspended, neither SelectedIndexChanged\r\n        /// or SelectionChanged events will be raised.\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        protected bool SelectionEventsSuspended\r\n        {\r\n            get { return suspendSelectionEventCount > 0; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Suspend selection events until a matching ResumeSelectionEvents()\r\n        /// is called.\r\n        /// </summary>\r\n        /// <remarks>Calls to this method nest correctly. Every call to SuspendSelectionEvents()\r\n        /// must have a matching ResumeSelectionEvents().</remarks>\r\n        protected void SuspendSelectionEvents()\r\n        {\r\n            suspendSelectionEventCount++;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Resume raising selection events.\r\n        /// </summary>\r\n        protected void ResumeSelectionEvents()\r\n        {\r\n            Debug.Assert(SelectionEventsSuspended, \"Mismatched called to ResumeSelectionEvents()\");\r\n            suspendSelectionEventCount--;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Returns a disposable that will disable selection events\r\n        /// during a using() block.\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        protected IDisposable SuspendSelectionEventsDuring()\r\n        {\r\n            return new SuspendSelectionDisposable(this);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Implementation only class that suspends and resumes selection\r\n        /// events on instance creation and disposal.\r\n        /// </summary>\r\n        private class SuspendSelectionDisposable : IDisposable\r\n        {\r\n            public SuspendSelectionDisposable(ObjectListView objectListView)\r\n            {\r\n                this.objectListView = objectListView;\r\n                this.objectListView.SuspendSelectionEvents();\r\n            }\r\n\r\n            public void Dispose()\r\n            {\r\n                objectListView.ResumeSelectionEvents();\r\n            }\r\n\r\n            private readonly ObjectListView objectListView;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Column sorting\r\n\r\n        /// <summary>\r\n        /// Sort the items by the last sort column and order\r\n        /// </summary>\r\n        public new void Sort()\r\n        {\r\n            Sort(PrimarySortColumn, PrimarySortOrder);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Sort the items in the list view by the values in the given column and the last sort order\r\n        /// </summary>\r\n        /// <param name=\"columnToSortName\">The name of the column whose values will be used for the sorting</param>\r\n        public virtual void Sort(string columnToSortName)\r\n        {\r\n            Sort(GetColumn(columnToSortName), PrimarySortOrder);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Sort the items in the list view by the values in the given column and the last sort order\r\n        /// </summary>\r\n        /// <param name=\"columnToSortIndex\">The index of the column whose values will be used for the sorting</param>\r\n        public virtual void Sort(int columnToSortIndex)\r\n        {\r\n            if (columnToSortIndex >= 0 && columnToSortIndex < Columns.Count)\r\n                Sort(GetColumn(columnToSortIndex), PrimarySortOrder);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Sort the items in the list view by the values in the given column and the last sort order\r\n        /// </summary>\r\n        /// <param name=\"columnToSort\">The column whose values will be used for the sorting</param>\r\n        public virtual void Sort(OLVColumn columnToSort)\r\n        {\r\n            if (InvokeRequired)\r\n            {\r\n                Invoke((MethodInvoker)delegate { Sort(columnToSort); });\r\n            }\r\n            else\r\n            {\r\n                Sort(columnToSort, PrimarySortOrder);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Sort the items in the list view by the values in the given column and by the given order.\r\n        /// </summary>\r\n        /// <param name=\"columnToSort\">The column whose values will be used for the sorting.\r\n        /// If null, the first column will be used.</param>\r\n        /// <param name=\"order\">The ordering to be used for sorting. If this is None,\r\n        /// this.Sorting and then SortOrder.Ascending will be used</param>\r\n        /// <remarks>If ShowGroups is true, the rows will be grouped by the given column.\r\n        /// If AlwaysGroupsByColumn is not null, the rows will be grouped by that column,\r\n        /// and the rows within each group will be sorted by the given column.</remarks>\r\n        public virtual void Sort(OLVColumn columnToSort, SortOrder order)\r\n        {\r\n            if (InvokeRequired)\r\n            {\r\n                Invoke((MethodInvoker)delegate { Sort(columnToSort, order); });\r\n            }\r\n            else\r\n            {\r\n                DoSort(columnToSort, order);\r\n                PostProcessRows();\r\n            }\r\n        }\r\n\r\n        private void DoSort(OLVColumn columnToSort, SortOrder order)\r\n        {\r\n            // Sanity checks\r\n            if (GetItemCount() == 0 || Columns.Count == 0)\r\n                return;\r\n\r\n            // Fill in default values, if the parameters don't make sense\r\n            if (ShowGroups)\r\n            {\r\n                columnToSort ??= GetColumn(0);\r\n                if (order == SortOrder.None)\r\n                {\r\n                    order = Sorting;\r\n                    if (order == SortOrder.None)\r\n                        order = SortOrder.Ascending;\r\n                }\r\n            }\r\n\r\n            // Give the world a chance to fiddle with or completely avoid the sorting process\r\n            BeforeSortingEventArgs args = BuildBeforeSortingEventArgs(columnToSort, order);\r\n            OnBeforeSorting(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            // Virtual lists don't preserve selection, so we have to do it specifically\r\n            // THINK: Do we need to preserve focus too?\r\n            IList selection = VirtualMode ? SelectedObjects : null;\r\n            SuspendSelectionEvents();\r\n\r\n            ClearHotItem();\r\n\r\n            // Finally, do the work of sorting, unless an event handler has already done the sorting for us\r\n            if (!args.Handled)\r\n            {\r\n                // Sanity checks\r\n                if (args.ColumnToSort != null && args.SortOrder != SortOrder.None)\r\n                {\r\n                    if (ShowGroups)\r\n                        BuildGroups(args.ColumnToGroupBy, args.GroupByOrder, args.ColumnToSort, args.SortOrder,\r\n                            args.SecondaryColumnToSort, args.SecondarySortOrder);\r\n                    else if (CustomSorter != null)\r\n                        CustomSorter(args.ColumnToSort, args.SortOrder);\r\n                    else\r\n                        ListViewItemSorter = new ColumnComparer(args.ColumnToSort, args.SortOrder,\r\n                            args.SecondaryColumnToSort, args.SecondarySortOrder);\r\n                }\r\n            }\r\n\r\n            if (ShowSortIndicators)\r\n                ShowSortIndicator(args.ColumnToSort, args.SortOrder);\r\n\r\n            PrimarySortColumn = args.ColumnToSort;\r\n            PrimarySortOrder = args.SortOrder;\r\n\r\n            if (selection != null && selection.Count > 0)\r\n                SelectedObjects = selection;\r\n            ResumeSelectionEvents();\r\n\r\n            RefreshHotItem();\r\n\r\n            OnAfterSorting(new AfterSortingEventArgs(args));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Put a sort indicator next to the text of the sort column\r\n        /// </summary>\r\n        public virtual void ShowSortIndicator()\r\n        {\r\n            if (ShowSortIndicators && PrimarySortOrder != SortOrder.None)\r\n                ShowSortIndicator(PrimarySortColumn, PrimarySortOrder);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Put a sort indicator next to the text of the given given column\r\n        /// </summary>\r\n        /// <param name=\"columnToSort\">The column to be marked</param>\r\n        /// <param name=\"sortOrder\">The sort order in effect on that column</param>\r\n        protected virtual void ShowSortIndicator(OLVColumn columnToSort, SortOrder sortOrder)\r\n        {\r\n            int imageIndex = -1;\r\n\r\n            if (!NativeMethods.HasBuiltinSortIndicators())\r\n            {\r\n                // If we can't use builtin image, we have to make and then locate the index of the\r\n                // sort indicator we want to use. SortOrder.None doesn't show an image.\r\n                if (SmallImageList == null || !SmallImageList.Images.ContainsKey(SORT_INDICATOR_UP_KEY))\r\n                    MakeSortIndicatorImages();\r\n\r\n                if (SmallImageList != null)\r\n                {\r\n                    string key = sortOrder == SortOrder.Ascending ? SORT_INDICATOR_UP_KEY : SORT_INDICATOR_DOWN_KEY;\r\n                    imageIndex = SmallImageList.Images.IndexOfKey(key);\r\n                }\r\n            }\r\n\r\n            // Set the image for each column\r\n            for (int i = 0; i < Columns.Count; i++)\r\n            {\r\n                if (columnToSort != null && i == columnToSort.Index)\r\n                    NativeMethods.SetColumnImage(this, i, sortOrder, imageIndex);\r\n                else\r\n                    NativeMethods.SetColumnImage(this, i, SortOrder.None, -1);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// The name of the image used when a column is sorted ascending\r\n        /// </summary>\r\n        /// <remarks>This image is only used on pre-XP systems. System images are used for XP and later</remarks>\r\n        public const string SORT_INDICATOR_UP_KEY = \"sort-indicator-up\";\r\n\r\n        /// <summary>\r\n        /// The name of the image used when a column is sorted descending\r\n        /// </summary>\r\n        /// <remarks>This image is only used on pre-XP systems. System images are used for XP and later</remarks>\r\n        public const string SORT_INDICATOR_DOWN_KEY = \"sort-indicator-down\";\r\n\r\n        /// <summary>\r\n        /// If the sort indicator images don't already exist, this method will make and install them\r\n        /// </summary>\r\n        protected virtual void MakeSortIndicatorImages()\r\n        {\r\n            // Don't mess with the image list in design mode\r\n            if (DesignMode)\r\n                return;\r\n\r\n            ImageList il = SmallImageList;\r\n            if (il == null)\r\n            {\r\n                il = new ImageList();\r\n                il.ImageSize = new Size(16, 16);\r\n                il.ColorDepth = ColorDepth.Depth32Bit;\r\n            }\r\n\r\n            // This arrangement of points works well with (16,16) images, and OK with others\r\n            int midX = il.ImageSize.Width / 2;\r\n            int midY = (il.ImageSize.Height / 2) - 1;\r\n            int deltaX = midX - 2;\r\n            int deltaY = deltaX / 2;\r\n\r\n            if (il.Images.IndexOfKey(SORT_INDICATOR_UP_KEY) == -1)\r\n            {\r\n                Point pt1 = new Point(midX - deltaX, midY + deltaY);\r\n                Point pt2 = new Point(midX, midY - deltaY - 1);\r\n                Point pt3 = new Point(midX + deltaX, midY + deltaY);\r\n                il.Images.Add(SORT_INDICATOR_UP_KEY, MakeTriangleBitmap(il.ImageSize, new Point[] { pt1, pt2, pt3 }));\r\n            }\r\n\r\n            if (il.Images.IndexOfKey(SORT_INDICATOR_DOWN_KEY) == -1)\r\n            {\r\n                Point pt1 = new Point(midX - deltaX, midY - deltaY);\r\n                Point pt2 = new Point(midX, midY + deltaY);\r\n                Point pt3 = new Point(midX + deltaX, midY - deltaY);\r\n                il.Images.Add(SORT_INDICATOR_DOWN_KEY, MakeTriangleBitmap(il.ImageSize, new Point[] { pt1, pt2, pt3 }));\r\n            }\r\n\r\n            SmallImageList = il;\r\n        }\r\n\r\n        private Bitmap MakeTriangleBitmap(Size sz, Point[] pts)\r\n        {\r\n            Bitmap bm = new Bitmap(sz.Width, sz.Height);\r\n            Graphics g = Graphics.FromImage(bm);\r\n            g.FillPolygon(new SolidBrush(Color.Gray), pts);\r\n            return bm;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove any sorting and revert to the given order of the model objects\r\n        /// </summary>\r\n        public virtual void Unsort()\r\n        {\r\n            ShowGroups = false;\r\n            PrimarySortColumn = null;\r\n            PrimarySortOrder = SortOrder.None;\r\n            BuildList();\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Utilities\r\n\r\n        private static CheckState CalculateToggledCheckState(CheckState currentState, bool isTriState, bool isDisabled)\r\n        {\r\n            if (isDisabled)\r\n                return currentState;\r\n            switch (currentState)\r\n            {\r\n                case CheckState.Checked: return isTriState ? CheckState.Indeterminate : CheckState.Unchecked;\r\n                case CheckState.Indeterminate: return CheckState.Unchecked;\r\n                default: return CheckState.Checked;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the actual work of creating the given list of groups\r\n        /// </summary>\r\n        /// <param name=\"groups\"></param>\r\n        protected virtual void CreateGroups(IEnumerable<OLVGroup> groups)\r\n        {\r\n            Groups.Clear();\r\n            // The group must be added before it is given items, otherwise an exception is thrown (is this documented?)\r\n            foreach (OLVGroup group in groups)\r\n            {\r\n                group.InsertGroupOldStyle(this);\r\n                group.SetItemsOldStyle();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// For some reason, UseItemStyleForSubItems doesn't work for the colors\r\n        /// when owner drawing the list, so we have to specifically give each subitem\r\n        /// the desired colors\r\n        /// </summary>\r\n        /// <param name=\"olvi\">The item whose subitems are to be corrected</param>\r\n        /// <remarks>Cells drawn via BaseRenderer don't need this, but it is needed\r\n        /// when an owner drawn cell uses DrawDefault=true</remarks>\r\n        protected virtual void CorrectSubItemColors(ListViewItem olvi)\r\n        {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Fill in the given OLVListItem with values of the given row\r\n        /// </summary>\r\n        /// <param name=\"lvi\">the OLVListItem that is to be stuff with values</param>\r\n        /// <param name=\"rowObject\">the model object from which values will be taken</param>\r\n        protected virtual void FillInValues(OLVListItem lvi, object rowObject)\r\n        {\r\n            if (Columns.Count == 0)\r\n                return;\r\n\r\n            OLVListSubItem subItem = MakeSubItem(rowObject, GetColumn(0));\r\n            lvi.SubItems[0] = subItem;\r\n            lvi.ImageSelector = subItem.ImageSelector;\r\n\r\n            // Give the item the same font/colors as the control\r\n            lvi.Font = Font;\r\n            lvi.BackColor = BackColor;\r\n            lvi.ForeColor = ForeColor;\r\n\r\n            // Should the row be selectable?\r\n            lvi.Enabled = !IsDisabled(rowObject);\r\n\r\n            // Only Details and Tile views have subitems\r\n            switch (View)\r\n            {\r\n                case View.Details:\r\n                    for (int i = 1; i < Columns.Count; i++)\r\n                    {\r\n                        lvi.SubItems.Add(MakeSubItem(rowObject, GetColumn(i)));\r\n                    }\r\n                    break;\r\n                case View.Tile:\r\n                    for (int i = 1; i < Columns.Count; i++)\r\n                    {\r\n                        OLVColumn column = GetColumn(i);\r\n                        if (column.IsTileViewColumn)\r\n                            lvi.SubItems.Add(MakeSubItem(rowObject, column));\r\n                    }\r\n                    break;\r\n            }\r\n\r\n            // Should the row be selectable?\r\n            if (!lvi.Enabled)\r\n            {\r\n                lvi.UseItemStyleForSubItems = false;\r\n                ApplyRowStyle(lvi, DisabledItemStyle ?? DefaultDisabledItemStyle);\r\n            }\r\n\r\n            // Set the check state of the row, if we are showing check boxes\r\n            if (CheckBoxes)\r\n            {\r\n                CheckState? state = GetCheckState(lvi.RowObject);\r\n                if (state.HasValue)\r\n                    lvi.CheckState = state.Value;\r\n            }\r\n\r\n            // Give the RowFormatter a chance to mess with the item\r\n            if (RowFormatter != null)\r\n            {\r\n                RowFormatter(lvi);\r\n            }\r\n        }\r\n\r\n        private OLVListSubItem MakeSubItem(object rowObject, OLVColumn column)\r\n        {\r\n            object cellValue = column.GetValue(rowObject);\r\n            OLVListSubItem subItem = new OLVListSubItem(cellValue,\r\n                                                        column.ValueToString(cellValue),\r\n                                                        column.GetImage(rowObject));\r\n            if (UseHyperlinks && column.Hyperlink)\r\n            {\r\n                IsHyperlinkEventArgs args = new IsHyperlinkEventArgs();\r\n                args.ListView = this;\r\n                args.Model = rowObject;\r\n                args.Column = column;\r\n                args.Text = subItem.Text;\r\n                args.Url = subItem.Text;\r\n                args.IsHyperlink = !IsDisabled(rowObject);\r\n                OnIsHyperlink(args);\r\n                subItem.Url = args.IsHyperlink ? args.Url : null;\r\n            }\r\n\r\n            return subItem;\r\n        }\r\n\r\n        private void ApplyHyperlinkStyle(OLVListItem olvi)\r\n        {\r\n\r\n            for (int i = 0; i < Columns.Count; i++)\r\n            {\r\n                OLVListSubItem subItem = olvi.GetSubItem(i);\r\n                if (subItem == null)\r\n                    continue;\r\n                OLVColumn column = GetColumn(i);\r\n                if (column.Hyperlink && !String.IsNullOrEmpty(subItem.Url))\r\n                    ApplyCellStyle(olvi, i, IsUrlVisited(subItem.Url) ? HyperlinkStyle.Visited : HyperlinkStyle.Normal);\r\n            }\r\n        }\r\n\r\n\r\n        /// <summary>\r\n        /// Make sure the ListView has the extended style that says to display subitem images.\r\n        /// </summary>\r\n        /// <remarks>This method must be called after any .NET call that update the extended styles\r\n        /// since they seem to erase this setting.</remarks>\r\n        protected virtual void ForceSubItemImagesExStyle()\r\n        {\r\n            // Virtual lists can't show subitem images natively, so don't turn on this flag\r\n            if (!VirtualMode)\r\n                NativeMethods.ForceSubItemImagesExStyle(this);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Convert the given image selector to an index into our image list.\r\n        /// Return -1 if that's not possible\r\n        /// </summary>\r\n        /// <param name=\"imageSelector\"></param>\r\n        /// <returns>Index of the image in the imageList, or -1</returns>\r\n        protected virtual int GetActualImageIndex(Object imageSelector)\r\n        {\r\n            if (imageSelector == null)\r\n                return -1;\r\n\r\n            if (imageSelector is Int32)\r\n                return (int)imageSelector;\r\n\r\n            if (imageSelector is string imageSelectorAsString && SmallImageList != null)\r\n                return SmallImageList.Images.IndexOfKey(imageSelectorAsString);\r\n\r\n            return -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the tooltip that should be shown when the mouse is hovered over the given column\r\n        /// </summary>\r\n        /// <param name=\"columnIndex\">The column index whose tool tip is to be fetched</param>\r\n        /// <returns>A string or null if no tool tip is to be shown</returns>\r\n        public virtual String GetHeaderToolTip(int columnIndex)\r\n        {\r\n            OLVColumn column = GetColumn(columnIndex);\r\n            if (column == null)\r\n                return null;\r\n            String tooltip = column.ToolTipText;\r\n            if (HeaderToolTipGetter != null)\r\n                tooltip = HeaderToolTipGetter(column);\r\n            return tooltip;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the tooltip that should be shown when the mouse is hovered over the given cell\r\n        /// </summary>\r\n        /// <param name=\"columnIndex\">The column index whose tool tip is to be fetched</param>\r\n        /// <param name=\"rowIndex\">The row index whose tool tip is to be fetched</param>\r\n        /// <returns>A string or null if no tool tip is to be shown</returns>\r\n        public virtual String GetCellToolTip(int columnIndex, int rowIndex)\r\n        {\r\n            if (CellToolTipGetter != null)\r\n                return CellToolTipGetter(GetColumn(columnIndex), GetModelObject(rowIndex));\r\n\r\n            // Show the URL in the tooltip if it's different to the text\r\n            if (columnIndex >= 0)\r\n            {\r\n                OLVListSubItem subItem = GetSubItem(rowIndex, columnIndex);\r\n                if (subItem != null && !String.IsNullOrEmpty(subItem.Url) && subItem.Url != subItem.Text &&\r\n                    HotCellHitLocation == HitTestLocation.Text)\r\n                    return subItem.Url;\r\n            }\r\n\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the OLVListItem that displays the given model object\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The modelObject whose item is to be found</param>\r\n        /// <returns>The OLVListItem that displays the model, or null</returns>\r\n        /// <remarks>This method has O(n) performance.</remarks>\r\n        public virtual OLVListItem ModelToItem(object modelObject)\r\n        {\r\n            if (modelObject == null)\r\n                return null;\r\n\r\n            if (_listItemLookup.TryGetValue(modelObject, out var oli))\r\n                return oli;\r\n\r\n            /*\r\n            for (int i = 0; i < this.Items.Count; i++)\r\n            {\r\n                var olvi = this.Items[i] as OLVListItem;\r\n                Debug.Assert(olvi != null, \"olvi != null\");\r\n\r\n                var rowObject = olvi.RowObject;\r\n                if (rowObject != null && rowObject == modelObject)\r\n                    return olvi;\r\n            }\r\n            */\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the work required after the items in a listview have been created\r\n        /// </summary>\r\n        protected virtual void PostProcessRows()\r\n        {\r\n            // If this method is called during a BeginUpdate/EndUpdate pair, changes to the\r\n            // Items collection are cached. Getting the Count flushes that cache.\r\n#pragma warning disable 168\r\n            // ReSharper disable once UnusedVariable\r\n            int count = Items.Count;\r\n#pragma warning restore 168\r\n\r\n            int i = 0;\r\n            if (ShowGroups)\r\n            {\r\n                foreach (ListViewGroup group in Groups)\r\n                {\r\n                    foreach (OLVListItem olvi in group.Items)\r\n                    {\r\n                        PostProcessOneRow(olvi.Index, i, olvi);\r\n                        i++;\r\n                    }\r\n                }\r\n            }\r\n            else\r\n            {\r\n                foreach (OLVListItem olvi in Items)\r\n                {\r\n                    PostProcessOneRow(olvi.Index, i, olvi);\r\n                    i++;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the work required after one item in a listview have been created\r\n        /// </summary>\r\n        protected virtual void PostProcessOneRow(int rowIndex, int displayIndex, OLVListItem olvi)\r\n        {\r\n            if (UseAlternatingBackColors && View == View.Details && olvi.Enabled)\r\n            {\r\n                olvi.UseItemStyleForSubItems = true;\r\n                olvi.BackColor = displayIndex % 2 == 1 ? AlternateRowBackColorOrDefault : BackColor;\r\n            }\r\n            if (ShowImagesOnSubItems && !VirtualMode)\r\n                SetSubItemImages(rowIndex, olvi);\r\n\r\n            bool needToTriggerFormatCellEvents = TriggerFormatRowEvent(rowIndex, displayIndex, olvi);\r\n\r\n            // We only need cell level events if we are in details view\r\n            if (View != View.Details)\r\n                return;\r\n\r\n            // If we're going to have per cell formatting, we need to copy the formatting\r\n            // of the item into each cell, before triggering the cell format events\r\n            if (needToTriggerFormatCellEvents)\r\n            {\r\n                PropagateFormatFromRowToCells(olvi);\r\n                TriggerFormatCellEvents(rowIndex, displayIndex, olvi);\r\n            }\r\n\r\n            // Similarly, if any cell in the row has hyperlinks, we have to copy formatting\r\n            // from the item into each cell before applying the hyperlink style\r\n            if (UseHyperlinks && olvi.HasAnyHyperlinks)\r\n            {\r\n                PropagateFormatFromRowToCells(olvi);\r\n                ApplyHyperlinkStyle(olvi);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Prepare the listview to show alternate row backcolors\r\n        /// </summary>\r\n        /// <remarks>We cannot rely on lvi.Index in this method.\r\n        /// In a straight list, lvi.Index is the display index, and can be used to determine\r\n        /// whether the row should be colored. But when organised by groups, lvi.Index is not\r\n        /// useable because it still refers to the position in the overall list, not the display order.\r\n        ///</remarks>\r\n        [Obsolete(\"This method is no longer used. Override PostProcessOneRow() to achieve a similar result\")]\r\n        protected virtual void PrepareAlternateBackColors()\r\n        {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Setup all subitem images on all rows\r\n        /// </summary>\r\n        [Obsolete(\"This method is not longer maintained and will be removed\", false)]\r\n        protected virtual void SetAllSubItemImages()\r\n        {\r\n            //if (!this.ShowImagesOnSubItems || this.OwnerDraw)\r\n            //    return;\r\n\r\n            //this.ForceSubItemImagesExStyle();\r\n\r\n            //for (int rowIndex = 0; rowIndex < this.GetItemCount(); rowIndex++)\r\n            //    SetSubItemImages(rowIndex, this.GetItem(rowIndex));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Tell the underlying list control which images to show against the subitems\r\n        /// </summary>\r\n        /// <param name=\"rowIndex\">the index at which the item occurs</param>\r\n        /// <param name=\"item\">the item whose subitems are to be set</param>\r\n        protected virtual void SetSubItemImages(int rowIndex, OLVListItem item)\r\n        {\r\n            SetSubItemImages(rowIndex, item, false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Tell the underlying list control which images to show against the subitems\r\n        /// </summary>\r\n        /// <param name=\"rowIndex\">the index at which the item occurs</param>\r\n        /// <param name=\"item\">the item whose subitems are to be set</param>\r\n        /// <param name=\"shouldClearImages\">will existing images be cleared if no new image is provided?</param>\r\n        protected virtual void SetSubItemImages(int rowIndex, OLVListItem item, bool shouldClearImages)\r\n        {\r\n            if (!ShowImagesOnSubItems || OwnerDraw)\r\n                return;\r\n\r\n            for (int i = 1; i < item.SubItems.Count; i++)\r\n            {\r\n                SetSubItemImage(rowIndex, i, item.GetSubItem(i), shouldClearImages);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the subitem image natively\r\n        /// </summary>\r\n        /// <param name=\"rowIndex\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        /// <param name=\"subItem\"></param>\r\n        /// <param name=\"shouldClearImages\"></param>\r\n        public virtual void SetSubItemImage(int rowIndex, int subItemIndex, OLVListSubItem subItem, bool shouldClearImages)\r\n        {\r\n            int imageIndex = GetActualImageIndex(subItem.ImageSelector);\r\n            if (shouldClearImages || imageIndex != -1)\r\n                NativeMethods.SetSubItemImage(this, rowIndex, subItemIndex, imageIndex);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Take ownership of the 'objects' collection. This separats our collection from the source.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This method\r\n        /// separates the 'objects' instance variable from its source, so that any AddObject/RemoveObject\r\n        /// calls will modify our collection and not the original colleciton.\r\n        /// </para>\r\n        /// <para>\r\n        /// This method has the intentional side-effect of converting our list of objects to an ArrayList.\r\n        /// </para>\r\n        /// </remarks>\r\n        protected virtual void TakeOwnershipOfObjects()\r\n        {\r\n            if (isOwnerOfObjects)\r\n                return;\r\n\r\n            isOwnerOfObjects = true;\r\n\r\n            objects = EnumerableToArray(objects, true);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger FormatRow and possibly FormatCell events for the given item\r\n        /// </summary>\r\n        /// <param name=\"rowIndex\"></param>\r\n        /// <param name=\"displayIndex\"></param>\r\n        /// <param name=\"olvi\"></param>\r\n        protected virtual bool TriggerFormatRowEvent(int rowIndex, int displayIndex, OLVListItem olvi)\r\n        {\r\n            FormatRowEventArgs args = new FormatRowEventArgs();\r\n            args.ListView = this;\r\n            args.RowIndex = rowIndex;\r\n            args.DisplayIndex = displayIndex;\r\n            args.Item = olvi;\r\n            args.UseCellFormatEvents = UseCellFormatEvents;\r\n            OnFormatRow(args);\r\n            return args.UseCellFormatEvents;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Trigger FormatCell events for the given item\r\n        /// </summary>\r\n        /// <param name=\"rowIndex\"></param>\r\n        /// <param name=\"displayIndex\"></param>\r\n        /// <param name=\"olvi\"></param>\r\n        protected virtual void TriggerFormatCellEvents(int rowIndex, int displayIndex, OLVListItem olvi)\r\n        {\r\n\r\n            PropagateFormatFromRowToCells(olvi);\r\n\r\n            // Fire one event per cell\r\n            FormatCellEventArgs args2 = new FormatCellEventArgs();\r\n            args2.ListView = this;\r\n            args2.RowIndex = rowIndex;\r\n            args2.DisplayIndex = displayIndex;\r\n            args2.Item = olvi;\r\n            for (int i = 0; i < Columns.Count; i++)\r\n            {\r\n                args2.ColumnIndex = i;\r\n                args2.Column = GetColumn(i);\r\n                args2.SubItem = olvi.GetSubItem(i);\r\n                OnFormatCell(args2);\r\n            }\r\n        }\r\n\r\n        private static void PropagateFormatFromRowToCells(OLVListItem olvi)\r\n        {\r\n            // If a cell isn't given its own colors, it *should* use the colors of the item.\r\n            // However, there is a bug in the .NET framework where the cell are given\r\n            // the colors of the ListView instead of the colors of the row. \r\n\r\n            // If we've already done this, don't do it again\r\n            if (olvi.UseItemStyleForSubItems == false)\r\n                return;\r\n\r\n            // So we have to explicitly give each cell the fore and back colors and the font that it should have.\r\n            olvi.UseItemStyleForSubItems = false;\r\n            Color backColor = olvi.BackColor;\r\n            Color foreColor = olvi.ForeColor;\r\n            Font font = olvi.Font;\r\n            foreach (OLVListSubItem subitem in olvi.SubItems)\r\n            {\r\n                subitem.BackColor = backColor;\r\n                subitem.ForeColor = foreColor;\r\n                subitem.Font = font;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make the list forget everything -- all rows and all columns\r\n        /// </summary>\r\n        /// <remarks>Use <see cref=\"ClearObjects\"/> if you want to remove just the rows.</remarks>\r\n        public virtual void Reset()\r\n        {\r\n            Clear();\r\n            AllColumns.Clear();\r\n            ClearObjects();\r\n            PrimarySortColumn = null;\r\n            SecondarySortColumn = null;\r\n            ClearDisabledObjects();\r\n            ClearPersistentCheckState();\r\n            ClearUrlVisited();\r\n            ClearHotItem();\r\n        }\r\n\r\n\r\n        #endregion\r\n\r\n        #region ISupportInitialize Members\r\n\r\n        void ISupportInitialize.BeginInit()\r\n        {\r\n            Frozen = true;\r\n        }\r\n\r\n        void ISupportInitialize.EndInit()\r\n        {\r\n            if (RowHeight != -1)\r\n            {\r\n                SmallImageList = SmallImageList;\r\n                if (CheckBoxes)\r\n                    InitializeStateImageList();\r\n            }\r\n\r\n            if (UseSubItemCheckBoxes || (VirtualMode && CheckBoxes))\r\n                SetupSubItemCheckBoxes();\r\n\r\n            Frozen = false;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Image list manipulation\r\n\r\n        /// <summary>\r\n        /// Update our externally visible image list so it holds the same images as our shadow list, but sized correctly\r\n        /// </summary>\r\n        private void SetupBaseImageList()\r\n        {\r\n            // If a row height hasn't been set, or an image list has been give which is the required size, just assign it\r\n            if (rowHeight == -1 ||\r\n                View != View.Details ||\r\n                (shadowedImageList != null && shadowedImageList.ImageSize.Height == rowHeight))\r\n                BaseSmallImageList = shadowedImageList;\r\n            else\r\n            {\r\n                int width = (shadowedImageList == null ? 16 : shadowedImageList.ImageSize.Width);\r\n                BaseSmallImageList = MakeResizedImageList(width, rowHeight, shadowedImageList);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a copy of the given source image list, where each image has been resized to be height x height in size.\r\n        /// If source is null, an empty image list of the given size is returned\r\n        /// </summary>\r\n        /// <param name=\"width\">Height and width of the new images</param>\r\n        /// <param name=\"height\">Height and width of the new images</param>\r\n        /// <param name=\"source\">Source of the images (can be null)</param>\r\n        /// <returns>A new image list</returns>\r\n        private ImageList MakeResizedImageList(int width, int height, ImageList source)\r\n        {\r\n            ImageList il = new ImageList();\r\n            il.ImageSize = new Size(width, height);\r\n\r\n            // If there's nothing to copy, just return the new list\r\n            if (source == null)\r\n                return il;\r\n\r\n            il.TransparentColor = source.TransparentColor;\r\n            il.ColorDepth = source.ColorDepth;\r\n\r\n            // Fill the imagelist with resized copies from the source\r\n            for (int i = 0; i < source.Images.Count; i++)\r\n            {\r\n                Bitmap bm = MakeResizedImage(width, height, source.Images[i], source.TransparentColor);\r\n                il.Images.Add(bm);\r\n            }\r\n\r\n            // Give each image the same key it has in the original\r\n            foreach (String key in source.Images.Keys)\r\n            {\r\n                il.Images.SetKeyName(source.Images.IndexOfKey(key), key);\r\n            }\r\n\r\n            return il;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a bitmap of the given height x height, which shows the given image, centred.\r\n        /// </summary>\r\n        /// <param name=\"width\">Height and width of new bitmap</param>\r\n        /// <param name=\"height\">Height and width of new bitmap</param>\r\n        /// <param name=\"image\">Image to be centred</param>\r\n        /// <param name=\"transparent\">The background color</param>\r\n        /// <returns>A new bitmap</returns>\r\n        private Bitmap MakeResizedImage(int width, int height, Image image, Color transparent)\r\n        {\r\n            Bitmap bm = new Bitmap(width, height);\r\n            Graphics g = Graphics.FromImage(bm);\r\n            g.Clear(transparent);\r\n            int x = Math.Max(0, (bm.Size.Width - image.Size.Width) / 2);\r\n            int y = Math.Max(0, (bm.Size.Height - image.Size.Height) / 2);\r\n            g.DrawImage(image, x, y, image.Size.Width, image.Size.Height);\r\n            return bm;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Initialize the state image list with the required checkbox images\r\n        /// </summary>\r\n        protected virtual void InitializeStateImageList()\r\n        {\r\n            if (DesignMode)\r\n                return;\r\n\r\n            if (!CheckBoxes)\r\n                return;\r\n\r\n            if (StateImageList == null)\r\n            {\r\n                StateImageList = new ImageList();\r\n                StateImageList.ImageSize = new Size(16, RowHeight == -1 ? 16 : RowHeight);\r\n                StateImageList.ColorDepth = ColorDepth.Depth32Bit;\r\n            }\r\n\r\n            if (RowHeight != -1 &&\r\n                View == View.Details &&\r\n                StateImageList.ImageSize.Height != RowHeight)\r\n            {\r\n                StateImageList = new ImageList();\r\n                StateImageList.ImageSize = new Size(16, RowHeight);\r\n                StateImageList.ColorDepth = ColorDepth.Depth32Bit;\r\n            }\r\n\r\n            // The internal logic of ListView cycles through the state images when the primary\r\n            // checkbox is clicked. So we have to get exactly the right number of images in the \r\n            // image list.\r\n            if (StateImageList.Images.Count == 0)\r\n                AddCheckStateBitmap(StateImageList, UNCHECKED_KEY, CheckBoxState.UncheckedNormal);\r\n            if (StateImageList.Images.Count <= 1)\r\n                AddCheckStateBitmap(StateImageList, CHECKED_KEY, CheckBoxState.CheckedNormal);\r\n            if (TriStateCheckBoxes && StateImageList.Images.Count <= 2)\r\n                AddCheckStateBitmap(StateImageList, INDETERMINATE_KEY, CheckBoxState.MixedNormal);\r\n            else\r\n            {\r\n                if (StateImageList.Images.ContainsKey(INDETERMINATE_KEY))\r\n                    StateImageList.Images.RemoveByKey(INDETERMINATE_KEY);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// The name of the image used when a check box is checked\r\n        /// </summary>\r\n        public const string CHECKED_KEY = \"checkbox-checked\";\r\n\r\n        /// <summary>\r\n        /// The name of the image used when a check box is unchecked\r\n        /// </summary>\r\n        public const string UNCHECKED_KEY = \"checkbox-unchecked\";\r\n\r\n        /// <summary>\r\n        /// The name of the image used when a check box is Indeterminate\r\n        /// </summary>\r\n        public const string INDETERMINATE_KEY = \"checkbox-indeterminate\";\r\n\r\n        /// <summary>\r\n        /// Setup this control so it can display check boxes on subitems\r\n        /// (or primary checkboxes in virtual mode)\r\n        /// </summary>\r\n        /// <remarks>This gives the ListView a small image list, if it doesn't already have one.</remarks>\r\n        public virtual void SetupSubItemCheckBoxes()\r\n        {\r\n            ShowImagesOnSubItems = true;\r\n            if (SmallImageList == null || !SmallImageList.Images.ContainsKey(CHECKED_KEY))\r\n                InitializeSubItemCheckBoxImages();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make sure the small image list for this control has checkbox images \r\n        /// (used for sub-item checkboxes).\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This gives the ListView a small image list, if it doesn't already have one.\r\n        /// </para>\r\n        /// <para>\r\n        /// ObjectListView has to manage checkboxes on subitems separate from the checkboxes on each row.\r\n        /// The underlying ListView knows about the per-row checkboxes, and to make them work, OLV has to \r\n        /// correctly configure the StateImageList. However, the ListView cannot do checkboxes in subitems,\r\n        /// so ObjectListView has to handle them in a differnt fashion. So, per-row checkboxes are controlled\r\n        /// by images in the StateImageList, but per-cell checkboxes are handled by images in the SmallImageList.\r\n        /// </para>\r\n        /// </remarks>\r\n        protected virtual void InitializeSubItemCheckBoxImages()\r\n        {\r\n            // Don't mess with the image list in design mode\r\n            if (DesignMode)\r\n                return;\r\n\r\n            ImageList il = SmallImageList;\r\n            if (il == null)\r\n            {\r\n                il = new ImageList();\r\n                il.ImageSize = new Size(16, 16);\r\n                il.ColorDepth = ColorDepth.Depth32Bit;\r\n            }\r\n\r\n            AddCheckStateBitmap(il, CHECKED_KEY, CheckBoxState.CheckedNormal);\r\n            AddCheckStateBitmap(il, UNCHECKED_KEY, CheckBoxState.UncheckedNormal);\r\n            AddCheckStateBitmap(il, INDETERMINATE_KEY, CheckBoxState.MixedNormal);\r\n\r\n            SmallImageList = il;\r\n        }\r\n\r\n        private void AddCheckStateBitmap(ImageList il, string key, CheckBoxState boxState)\r\n        {\r\n            Bitmap b = new Bitmap(il.ImageSize.Width, il.ImageSize.Height);\r\n            Graphics g = Graphics.FromImage(b);\r\n            g.Clear(il.TransparentColor);\r\n            Point location = new Point(b.Width / 2 - 5, b.Height / 2 - 6);\r\n            CheckBoxRenderer.DrawCheckBox(g, location, boxState);\r\n            il.Images.Add(key, b);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Owner drawing\r\n\r\n        /// <summary>\r\n        /// Owner draw the column header\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnDrawColumnHeader(DrawListViewColumnHeaderEventArgs e)\r\n        {\r\n            e.DrawDefault = true;\r\n            base.OnDrawColumnHeader(e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Owner draw the item\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnDrawItem(DrawListViewItemEventArgs e)\r\n        {\r\n            if (View == View.Details)\r\n                e.DrawDefault = false;\r\n            else\r\n            {\r\n                if (ItemRenderer == null)\r\n                    e.DrawDefault = true;\r\n                else\r\n                {\r\n                    Object row = ((OLVListItem)e.Item).RowObject;\r\n                    e.DrawDefault = !ItemRenderer.RenderItem(e, e.Graphics, e.Bounds, row);\r\n                }\r\n            }\r\n\r\n            if (e.DrawDefault)\r\n                base.OnDrawItem(e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Owner draw a single subitem\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnDrawSubItem(DrawListViewSubItemEventArgs e)\r\n        {\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"OnDrawSubItem ({0}, {1})\", e.ItemIndex, e.ColumnIndex));\r\n            // Don't try to do owner drawing at design time\r\n            if (DesignMode)\r\n            {\r\n                e.DrawDefault = true;\r\n                return;\r\n            }\r\n\r\n            object rowObject = ((OLVListItem)e.Item).RowObject;\r\n\r\n            // Calculate where the subitem should be drawn\r\n            Rectangle r = e.Bounds;\r\n\r\n            // Get the special renderer for this column. If there isn't one, use the default draw mechanism.\r\n            OLVColumn column = GetColumn(e.ColumnIndex);\r\n            IRenderer renderer = GetCellRenderer(rowObject, column);\r\n\r\n            // Get a graphics context for the renderer to use.\r\n            // But we have more complications. Virtual lists have a nasty habit of drawing column 0\r\n            // whenever there is any mouse move events over a row, and doing it in an un-double-buffered manner,\r\n            // which results in nasty flickers! There are also some unbuffered draw when a mouse is first\r\n            // hovered over column 0 of a normal row. So, to avoid all complications,\r\n            // we always manually double-buffer the drawing.\r\n            // Except with Mono, which doesn't seem to handle double buffering at all :-(\r\n            BufferedGraphics buffer = BufferedGraphicsManager.Current.Allocate(e.Graphics, r);\r\n            Graphics g = buffer.Graphics;\r\n\r\n            g.TextRenderingHint = TextRenderingHint;\r\n            g.SmoothingMode = SmoothingMode;\r\n\r\n            // Finally, give the renderer a chance to draw something\r\n            e.DrawDefault = !renderer.RenderSubItem(e, g, r, rowObject);\r\n\r\n            if (!e.DrawDefault)\r\n                buffer.Render();\r\n            buffer.Dispose();\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region OnEvent Handling\r\n\r\n        /// <summary>\r\n        /// We need the click count in the mouse up event, but that is always 1.\r\n        /// So we have to remember the click count from the preceding mouse down event.\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnMouseDown(MouseEventArgs e)\r\n        {\r\n            lastMouseDownClickCount = e.Clicks;\r\n            base.OnMouseDown(e);\r\n        }\r\n        private int lastMouseDownClickCount;\r\n\r\n        /// <summary>\r\n        /// When the mouse leaves the control, remove any hot item highlighting\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnMouseLeave(EventArgs e)\r\n        {\r\n            base.OnMouseLeave(e);\r\n\r\n            if (!Created)\r\n                return;\r\n\r\n            UpdateHotItem(new Point(-1, -1));\r\n        }\r\n\r\n        // We could change the hot item on the mouse hover event, but it looks wrong.\r\n\r\n        //protected override void OnMouseHover(EventArgs e) {\r\n        //    System.Diagnostics.Debug.WriteLine(String.Format(\"OnMouseHover\"));\r\n        //    base.OnMouseHover(e);\r\n        //    this.UpdateHotItem(this.PointToClient(Cursor.Position));\r\n        //}\r\n\r\n        /// <summary>\r\n        /// When the mouse moves, we might need to change the hot item.\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnMouseMove(MouseEventArgs e)\r\n        {\r\n            base.OnMouseMove(e);\r\n\r\n            if (Created)\r\n                HandleMouseMove(e.Location);\r\n        }\r\n\r\n        internal void HandleMouseMove(Point pt)\r\n        {\r\n\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"HandleMouseMove: {0}\", pt));\r\n\r\n            /* Prevent excessive redrawing when mouse is hovering over the listview. Doesn't seem to break anything important.\r\n            CellOverEventArgs args = new CellOverEventArgs();\r\n            this.BuildCellEvent(args, pt);\r\n            this.OnCellOver(args);\r\n            this.MouseMoveHitTest = args.HitTest;\r\n\r\n            if (!args.Handled)\r\n                this.UpdateHotItem(args.HitTest);*/\r\n        }\r\n\r\n        /// <summary>\r\n        /// Check to see if we need to start editing a cell\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnMouseUp(MouseEventArgs e)\r\n        {\r\n\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"OnMouseUp\"));\r\n\r\n            base.OnMouseUp(e);\r\n\r\n            if (!Created)\r\n                return;\r\n\r\n            if (e.Button == MouseButtons.Right)\r\n            {\r\n                OnRightMouseUp(e);\r\n                return;\r\n            }\r\n\r\n            // What event should we listen for to start cell editing?\r\n            // ------------------------------------------------------\r\n            //\r\n            // We can't use OnMouseClick, OnMouseDoubleClick, OnClick, or OnDoubleClick\r\n            // since they are not triggered for clicks on subitems without Full Row Select.\r\n            //\r\n            // We could use OnMouseDown, but selecting rows is done in OnMouseUp. This means\r\n            // that if we start the editing during OnMouseDown, the editor will automatically\r\n            // lose focus when mouse up happens.\r\n            //\r\n\r\n            // Tell the world about a cell click. If someone handles it, don't do anything else\r\n            CellClickEventArgs args = new CellClickEventArgs();\r\n            BuildCellEvent(args, e.Location);\r\n            args.ClickCount = lastMouseDownClickCount;\r\n            OnCellClick(args);\r\n            if (args.Handled)\r\n                return;\r\n\r\n            // Did the user click a hyperlink?\r\n            if (UseHyperlinks &&\r\n                args.HitTest.HitTestLocation == HitTestLocation.Text &&\r\n                args.SubItem != null &&\r\n                !String.IsNullOrEmpty(args.SubItem.Url))\r\n            {\r\n                // We have to delay the running of this process otherwise we can generate\r\n                // a series of MouseUp events (don't ask me why)\r\n                BeginInvoke((MethodInvoker)delegate { ProcessHyperlinkClicked(args); });\r\n            }\r\n\r\n            // No one handled it so check to see if we should start editing.\r\n            if (!ShouldStartCellEdit(e))\r\n                return;\r\n\r\n            // We only start the edit if the user clicked on the image or text.\r\n            if (args.HitTest.HitTestLocation == HitTestLocation.Nothing)\r\n                return;\r\n\r\n            // We don't edit the primary column by single clicks -- only subitems.\r\n            if (CellEditActivation == CellEditActivateMode.SingleClick && args.ColumnIndex <= 0)\r\n                return;\r\n\r\n            // Don't start a cell edit operation when the user clicks on the background of a checkbox column -- it just looks wrong.\r\n            // If the user clicks on the actual checkbox, changing the checkbox state is handled elsewhere.\r\n            if (args.Column != null && args.Column.CheckBoxes)\r\n                return;\r\n\r\n            EditSubItem(args.Item, args.ColumnIndex);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Tell the world that a hyperlink was clicked and if the event isn't handled,\r\n        /// do the default processing.\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void ProcessHyperlinkClicked(CellClickEventArgs e)\r\n        {\r\n            HyperlinkClickedEventArgs args = new HyperlinkClickedEventArgs();\r\n            args.HitTest = e.HitTest;\r\n            args.ListView = this;\r\n            args.Location = new Point(-1, -1);\r\n            args.Item = e.Item;\r\n            args.SubItem = e.SubItem;\r\n            args.Model = e.Model;\r\n            args.ColumnIndex = e.ColumnIndex;\r\n            args.Column = e.Column;\r\n            args.RowIndex = e.RowIndex;\r\n            args.ModifierKeys = ModifierKeys;\r\n            args.Url = e.SubItem.Url;\r\n            OnHyperlinkClicked(args);\r\n            if (!args.Handled)\r\n            {\r\n                StandardHyperlinkClickedProcessing(args);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the default processing for a hyperlink clicked event, which\r\n        /// is to try and open the url.\r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected virtual void StandardHyperlinkClickedProcessing(HyperlinkClickedEventArgs args)\r\n        {\r\n            Cursor originalCursor = Cursor;\r\n            try\r\n            {\r\n                Cursor = Cursors.WaitCursor;\r\n                Process.Start(new ProcessStartInfo(args.Url) { UseShellExecute = true });\r\n            }\r\n            catch (Win32Exception)\r\n            {\r\n                System.Media.SystemSounds.Beep.Play();\r\n                // ignore it\r\n            }\r\n            finally\r\n            {\r\n                Cursor = originalCursor;\r\n            }\r\n            MarkUrlVisited(args.Url);\r\n            RefreshHotItem();\r\n        }\r\n\r\n        /// <summary>\r\n        /// The user right clicked on the control\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnRightMouseUp(MouseEventArgs e)\r\n        {\r\n            CellRightClickEventArgs args = new CellRightClickEventArgs();\r\n            BuildCellEvent(args, e.Location);\r\n            OnCellRightClick(args);\r\n            if (!args.Handled)\r\n            {\r\n                if (args.MenuStrip != null)\r\n                {\r\n                    args.MenuStrip.Show(this, args.Location);\r\n                }\r\n            }\r\n        }\r\n\r\n        internal void BuildCellEvent(CellEventArgs args, Point location)\r\n        {\r\n            BuildCellEvent(args, location, OlvHitTest(location.X, location.Y));\r\n        }\r\n\r\n        internal void BuildCellEvent(CellEventArgs args, Point location, OlvListViewHitTestInfo hitTest)\r\n        {\r\n            args.HitTest = hitTest;\r\n            args.ListView = this;\r\n            args.Location = location;\r\n            args.Item = hitTest.Item;\r\n            args.SubItem = hitTest.SubItem;\r\n            args.Model = hitTest.RowObject;\r\n            args.ColumnIndex = hitTest.ColumnIndex;\r\n            args.Column = hitTest.Column;\r\n            if (hitTest.Item != null)\r\n                args.RowIndex = hitTest.Item.Index;\r\n            args.ModifierKeys = ModifierKeys;\r\n\r\n            // In non-details view, we want any hit on an item to act as if it was a hit\r\n            // on column 0 -- which, effectively, it was.\r\n            if (args.Item != null && args.ListView.View != View.Details)\r\n            {\r\n                args.ColumnIndex = 0;\r\n                args.Column = args.ListView.GetColumn(0);\r\n                args.SubItem = args.Item.GetSubItem(0);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// This method is called every time a row is selected or deselected. This can be\r\n        /// a pain if the user shift-clicks 100 rows. We override this method so we can\r\n        /// trigger one event for any number of select/deselects that come from one user action\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnSelectedIndexChanged(EventArgs e)\r\n        {\r\n            if (SelectionEventsSuspended)\r\n                return;\r\n\r\n            base.OnSelectedIndexChanged(e);\r\n\r\n            // If we haven't already scheduled an event, schedule it to be triggered\r\n            // By using idle time, we will wait until all select events for the same\r\n            // user action have finished before triggering the event.\r\n            if (!hasIdleHandler)\r\n            {\r\n                hasIdleHandler = true;\r\n                RunWhenIdle(HandleApplicationIdle);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Called when the handle of the underlying control is created\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnHandleCreated(EventArgs e)\r\n        {\r\n            //Debug.WriteLine(\"OnHandleCreated\");\r\n            base.OnHandleCreated(e);\r\n\r\n            Invoke((MethodInvoker)OnControlCreated);\r\n        }\r\n\r\n        /// <summary>\r\n        /// This method is called after the control has been fully created.\r\n        /// </summary>\r\n        protected virtual void OnControlCreated()\r\n        {\r\n\r\n            //Debug.WriteLine(\"OnControlCreated\");\r\n\r\n            // Force the header control to be created when the listview handle is\r\n            HeaderControl hc = HeaderControl;\r\n            hc.WordWrap = HeaderWordWrap;\r\n\r\n            // Make sure any overlays that are set on the hot item style take effect\r\n            HotItemStyle = HotItemStyle;\r\n\r\n            // Arrange for any group images to be installed after the control is created\r\n            NativeMethods.SetGroupImageList(this, GroupImageList);\r\n\r\n            UseExplorerTheme = UseExplorerTheme;\r\n\r\n            RememberDisplayIndicies();\r\n            SetGroupSpacing();\r\n\r\n            if (VirtualMode)\r\n                ApplyExtendedStyles();\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Cell editing\r\n\r\n        /// <summary>\r\n        /// Should we start editing the cell in response to the given mouse button event?\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        /// <returns></returns>\r\n        protected virtual bool ShouldStartCellEdit(MouseEventArgs e)\r\n        {\r\n            if (IsCellEditing)\r\n                return false;\r\n\r\n            if (e.Button != MouseButtons.Left && e.Button != MouseButtons.Right)\r\n                return false;\r\n\r\n            if ((ModifierKeys & (Keys.Shift | Keys.Control | Keys.Alt)) != 0)\r\n                return false;\r\n\r\n            if (lastMouseDownClickCount == 1 && (\r\n                CellEditActivation == CellEditActivateMode.SingleClick ||\r\n                CellEditActivation == CellEditActivateMode.SingleClickAlways))\r\n                return true;\r\n\r\n            return (lastMouseDownClickCount == 2 && CellEditActivation == CellEditActivateMode.DoubleClick);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a key press on this control. We specifically look for F2 which edits the primary column,\r\n        /// or a Tab character during an edit operation, which tries to start editing on the next (or previous) cell.\r\n        /// </summary>\r\n        /// <param name=\"keyData\"></param>\r\n        /// <returns></returns>\r\n        protected override bool ProcessDialogKey(Keys keyData)\r\n        {\r\n\r\n            if (IsCellEditing)\r\n                return CellEditKeyEngine.HandleKey(this, keyData);\r\n\r\n            // Treat F2 as a request to edit the primary column\r\n            if (keyData == Keys.F2)\r\n            {\r\n                EditSubItem((OLVListItem)FocusedItem, 0);\r\n                return base.ProcessDialogKey(keyData);\r\n            }\r\n\r\n            // Treat Ctrl-C as Copy To Clipboard. \r\n            if (CopySelectionOnControlC && keyData == (Keys.C | Keys.Control))\r\n            {\r\n                CopySelectionToClipboard();\r\n                return true;\r\n            }\r\n\r\n            // Treat Ctrl-A as Select All.\r\n            if (SelectAllOnControlA && keyData == (Keys.A | Keys.Control))\r\n            {\r\n                SelectAll();\r\n                return true;\r\n            }\r\n\r\n            return base.ProcessDialogKey(keyData);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Start an editing operation on the first editable column of the given model.\r\n        /// </summary>\r\n        /// <param name=\"rowModel\"></param>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If the model doesn't exist, or there are no editable columns, this method\r\n        /// will do nothing.</para>\r\n        /// <para>\r\n        /// This will start an edit operation regardless of CellActivationMode.\r\n        /// </para>\r\n        /// </remarks>\r\n        public virtual void EditModel(object rowModel)\r\n        {\r\n            OLVListItem olvItem = ModelToItem(rowModel);\r\n            if (olvItem == null)\r\n                return;\r\n\r\n            for (int i = 0; i < olvItem.SubItems.Count; i++)\r\n            {\r\n                if (GetColumn(i).IsEditable)\r\n                {\r\n                    StartCellEdit(olvItem, i);\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Begin an edit operation on the given cell.\r\n        /// </summary>\r\n        /// <remarks>This performs various sanity checks and passes off the real work to StartCellEdit().</remarks>\r\n        /// <param name=\"item\">The row to be edited</param>\r\n        /// <param name=\"subItemIndex\">The index of the cell to be edited</param>\r\n        public virtual void EditSubItem(OLVListItem item, int subItemIndex)\r\n        {\r\n            if (item == null)\r\n                return;\r\n\r\n            if (subItemIndex < 0 && subItemIndex >= item.SubItems.Count)\r\n                return;\r\n\r\n            if (CellEditActivation == CellEditActivateMode.None)\r\n                return;\r\n\r\n            if (!GetColumn(subItemIndex).IsEditable)\r\n                return;\r\n\r\n            if (!item.Enabled)\r\n                return;\r\n\r\n            StartCellEdit(item, subItemIndex);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Really start an edit operation on a given cell. The parameters are assumed to be sane.\r\n        /// </summary>\r\n        /// <param name=\"item\">The row to be edited</param>\r\n        /// <param name=\"subItemIndex\">The index of the cell to be edited</param>\r\n        public virtual void StartCellEdit(OLVListItem item, int subItemIndex)\r\n        {\r\n            OLVColumn column = GetColumn(subItemIndex);\r\n            Control c = GetCellEditor(item, subItemIndex);\r\n            Rectangle cellBounds = CalculateCellBounds(item, subItemIndex);\r\n            c.Bounds = CalculateCellEditorBounds(item, subItemIndex, c.PreferredSize);\r\n\r\n            // Try to align the control as the column is aligned. Not all controls support this property\r\n            Munger.PutProperty(c, \"TextAlign\", column.TextAlign);\r\n\r\n            // Give the control the value from the model\r\n            SetControlValue(c, column.GetValue(item.RowObject), column.GetStringValue(item.RowObject));\r\n\r\n            // Give the outside world the chance to munge with the process\r\n            CellEditEventArgs = new CellEditEventArgs(column, c, cellBounds, item, subItemIndex);\r\n            OnCellEditStarting(CellEditEventArgs);\r\n            if (CellEditEventArgs.Cancel)\r\n                return;\r\n\r\n            // The event handler may have completely changed the control, so we need to remember it\r\n            cellEditor = CellEditEventArgs.Control;\r\n\r\n            Invalidate();\r\n            Controls.Add(cellEditor);\r\n            ConfigureControl();\r\n            PauseAnimations(true);\r\n        }\r\n        private Control cellEditor;\r\n        internal CellEditEventArgs CellEditEventArgs;\r\n\r\n        /// <summary>\r\n        /// Calculate the bounds of the edit control for the given item/column\r\n        /// </summary>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        /// <param name=\"preferredSize\"> </param>\r\n        /// <returns></returns>\r\n        public Rectangle CalculateCellEditorBounds(OLVListItem item, int subItemIndex, Size preferredSize)\r\n        {\r\n            Rectangle r = CalculateCellBounds(item, subItemIndex);\r\n\r\n            // Calculate the width of the cell's current contents\r\n            return OwnerDraw\r\n                ? CalculateCellEditorBoundsOwnerDrawn(item, subItemIndex, r, preferredSize)\r\n                : CalculateCellEditorBoundsStandard(item, subItemIndex, r, preferredSize);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate the bounds of the edit control for the given item/column, when the listview\r\n        /// is being owner drawn.\r\n        /// </summary>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"preferredSize\"> </param>\r\n        /// <returns>A rectangle that is the bounds of the cell editor</returns>\r\n        protected Rectangle CalculateCellEditorBoundsOwnerDrawn(OLVListItem item, int subItemIndex, Rectangle r, Size preferredSize)\r\n        {\r\n            IRenderer renderer = View == View.Details\r\n                ? GetCellRenderer(item.RowObject, GetColumn(subItemIndex))\r\n                : ItemRenderer;\r\n\r\n            if (renderer == null)\r\n                return r;\r\n\r\n            using (Graphics g = CreateGraphics())\r\n            {\r\n                return renderer.GetEditRectangle(g, r, item, subItemIndex, preferredSize);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate the bounds of the edit control for the given item/column, when the listview\r\n        /// is not being owner drawn.\r\n        /// </summary>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"preferredSize\"> </param>\r\n        /// <returns>A rectangle that is the bounds of the cell editor</returns>\r\n        protected Rectangle CalculateCellEditorBoundsStandard(OLVListItem item, int subItemIndex, Rectangle cellBounds, Size preferredSize)\r\n        {\r\n            if (View == View.Tile)\r\n                return cellBounds;\r\n\r\n            // Center the editor vertically\r\n            if (cellBounds.Height != preferredSize.Height)\r\n                cellBounds.Y += (cellBounds.Height - preferredSize.Height) / 2;\r\n\r\n            // Only Details view needs more processing\r\n            if (View != View.Details)\r\n                return cellBounds;\r\n\r\n            // Allow for image (if there is one). \r\n            int offset = 0;\r\n            object imageSelector = null;\r\n            if (subItemIndex == 0)\r\n                imageSelector = item.ImageSelector;\r\n            else\r\n            {\r\n                // We only check for subitem images if we are owner drawn or showing subitem images\r\n                if (OwnerDraw || ShowImagesOnSubItems)\r\n                    imageSelector = item.GetSubItem(subItemIndex).ImageSelector;\r\n            }\r\n            if (GetActualImageIndex(imageSelector) != -1)\r\n            {\r\n                offset += SmallImageSize.Width + 2;\r\n            }\r\n\r\n            // Allow for checkbox\r\n            if (CheckBoxes && StateImageList != null && subItemIndex == 0)\r\n            {\r\n                offset += StateImageList.ImageSize.Width + 2;\r\n            }\r\n\r\n            // Allow for indent (first column only)\r\n            if (subItemIndex == 0 && item.IndentCount > 0)\r\n            {\r\n                offset += (SmallImageSize.Width * item.IndentCount);\r\n            }\r\n\r\n            // Do the adjustment\r\n            if (offset > 0)\r\n            {\r\n                cellBounds.X += offset;\r\n                cellBounds.Width -= offset;\r\n            }\r\n\r\n            return cellBounds;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Try to give the given value to the provided control. Fall back to assigning a string\r\n        /// if the value assignment fails.\r\n        /// </summary>\r\n        /// <param name=\"control\">A control</param>\r\n        /// <param name=\"value\">The value to be given to the control</param>\r\n        /// <param name=\"stringValue\">The string to be given if the value doesn't work</param>\r\n        protected virtual void SetControlValue(Control control, Object value, String stringValue)\r\n        {\r\n            // Handle combobox explicitly\r\n            if (control is ComboBox cb)\r\n            {\r\n                if (cb.Created)\r\n                    cb.SelectedValue = value;\r\n                else\r\n                    BeginInvoke(new MethodInvoker(delegate\r\n                    {\r\n                        cb.SelectedValue = value;\r\n                    }));\r\n                return;\r\n            }\r\n\r\n            if (Munger.PutProperty(control, \"Value\", value))\r\n                return;\r\n\r\n            // There wasn't a Value property, or we couldn't set it, so set the text instead\r\n            try\r\n            {\r\n                String valueAsString = value as String;\r\n                control.Text = valueAsString ?? stringValue;\r\n            }\r\n            catch (ArgumentOutOfRangeException)\r\n            {\r\n                // The value couldn't be set via the Text property.\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Setup the given control to be a cell editor\r\n        /// </summary>\r\n        protected virtual void ConfigureControl()\r\n        {\r\n            cellEditor.Validating += new CancelEventHandler(CellEditor_Validating);\r\n            cellEditor.Select();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the value that the given control is showing\r\n        /// </summary>\r\n        /// <param name=\"control\"></param>\r\n        /// <returns></returns>\r\n        protected virtual Object GetControlValue(Control control)\r\n        {\r\n            if (control == null)\r\n                return null;\r\n\r\n            if (control is TextBox box)\r\n                return box.Text;\r\n\r\n            if (control is ComboBox comboBox)\r\n                return comboBox.SelectedValue;\r\n\r\n            if (control is CheckBox checkBox)\r\n                return checkBox.Checked;\r\n\r\n            try\r\n            {\r\n                return control.GetType().InvokeMember(\"Value\", BindingFlags.GetProperty, null, control, null);\r\n            }\r\n            catch (MissingMethodException)\r\n            { // Microsoft throws this\r\n                return control.Text;\r\n            }\r\n            catch (MissingFieldException)\r\n            { // Mono throws this\r\n                return control.Text;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Called when the cell editor could be about to lose focus. Time to commit the change\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void CellEditor_Validating(object sender, CancelEventArgs e)\r\n        {\r\n            CellEditEventArgs.Cancel = false;\r\n            CellEditEventArgs.NewValue = GetControlValue(cellEditor);\r\n            OnCellEditorValidating(CellEditEventArgs);\r\n\r\n            if (CellEditEventArgs.Cancel)\r\n            {\r\n                CellEditEventArgs.Control.Select();\r\n                e.Cancel = true;\r\n            }\r\n            else\r\n                FinishCellEdit();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the bounds of the given cell\r\n        /// </summary>\r\n        /// <param name=\"item\">The row to be edited</param>\r\n        /// <param name=\"subItemIndex\">The index of the cell to be edited</param>\r\n        /// <returns>A Rectangle</returns>\r\n        public virtual Rectangle CalculateCellBounds(OLVListItem item, int subItemIndex)\r\n        {\r\n\r\n            // It seems on Win7, GetSubItemBounds() does not have the same problems with\r\n            // column 0 that it did previously.\r\n\r\n            // TODO - Check on XP\r\n\r\n            if (View != View.Details)\r\n                return GetItemRect(item.Index, ItemBoundsPortion.Label);\r\n\r\n            Rectangle r = item.GetSubItemBounds(subItemIndex);\r\n            r.Width -= 1;\r\n            r.Height -= 1;\r\n            return r;\r\n\r\n            // We use ItemBoundsPortion.Label rather than ItemBoundsPortion.Item\r\n            // since Label extends to the right edge of the cell, whereas Item gives just the\r\n            // current text width.\r\n            //return this.CalculateCellBounds(item, subItemIndex, ItemBoundsPortion.Label);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the bounds of the given cell only until the edge of the current text\r\n        /// </summary>\r\n        /// <param name=\"item\">The row to be edited</param>\r\n        /// <param name=\"subItemIndex\">The index of the cell to be edited</param>\r\n        /// <returns>A Rectangle</returns>\r\n        public virtual Rectangle CalculateCellTextBounds(OLVListItem item, int subItemIndex)\r\n        {\r\n            return CalculateCellBounds(item, subItemIndex, ItemBoundsPortion.ItemOnly);\r\n        }\r\n\r\n        private Rectangle CalculateCellBounds(OLVListItem item, int subItemIndex, ItemBoundsPortion portion)\r\n        {\r\n            // SubItem.Bounds works for every subitem, except the first.\r\n            if (subItemIndex > 0)\r\n                return item.GetSubItemBounds(subItemIndex);\r\n\r\n            // For non detail views, we just use the requested portion\r\n            Rectangle r = GetItemRect(item.Index, portion);\r\n            if (r.Y < -10000000 || r.Y > 10000000)\r\n            {\r\n                r.Y = item.Bounds.Y;\r\n            }\r\n            if (View != View.Details)\r\n                return r;\r\n\r\n            // Finding the bounds of cell 0 should not be a difficult task, but it is. Problems:\r\n            // 1) item.SubItem[0].Bounds is always the full bounds of the entire row, not just cell 0.\r\n            // 2) if column 0 has been dragged to some other position, the bounds always has a left edge of 0.\r\n\r\n            // We avoid both these problems by using the position of sides the column header to calculate\r\n            // the sides of the cell\r\n            Point sides = NativeMethods.GetScrolledColumnSides(this, 0);\r\n            r.X = sides.X + 4;\r\n            r.Width = sides.Y - sides.X - 5;\r\n\r\n            return r;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate the visible bounds of the given column. The column's bottom edge is \r\n        /// either the bottom of the last row or the bottom of the control.\r\n        /// </summary>\r\n        /// <param name=\"bounds\">The bounds of the control itself</param>\r\n        /// <param name=\"column\">The column</param>\r\n        /// <returns>A Rectangle</returns>\r\n        /// <remarks>This returns an empty rectnage if the control isn't in Details mode, \r\n        /// OR has doesn't have any rows, OR if the given column is hidden.</remarks>\r\n        public virtual Rectangle CalculateColumnVisibleBounds(Rectangle bounds, OLVColumn column)\r\n        {\r\n            // Sanity checks\r\n            if (column == null ||\r\n                View != View.Details ||\r\n                GetItemCount() == 0 ||\r\n                !column.IsVisible)\r\n                return Rectangle.Empty;\r\n\r\n            Point sides = NativeMethods.GetScrolledColumnSides(this, column.Index);\r\n            if (sides.X == -1)\r\n                return Rectangle.Empty;\r\n\r\n            Rectangle columnBounds = new Rectangle(sides.X, bounds.Top, sides.Y - sides.X, bounds.Bottom);\r\n\r\n            // Find the bottom of the last item. The column only extends to there.\r\n            OLVListItem lastItem = GetLastItemInDisplayOrder();\r\n            if (lastItem != null)\r\n            {\r\n                Rectangle lastItemBounds = lastItem.Bounds;\r\n                if (!lastItemBounds.IsEmpty && lastItemBounds.Bottom < columnBounds.Bottom)\r\n                    columnBounds.Height = lastItemBounds.Bottom - columnBounds.Top;\r\n            }\r\n\r\n            return columnBounds;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a control that can be used to edit the value of the given cell.\r\n        /// </summary>\r\n        /// <param name=\"item\">The row to be edited</param>\r\n        /// <param name=\"subItemIndex\">The index of the cell to be edited</param>\r\n        /// <returns>A Control to edit the given cell</returns>\r\n        protected virtual Control GetCellEditor(OLVListItem item, int subItemIndex)\r\n        {\r\n            OLVColumn column = GetColumn(subItemIndex);\r\n            Object value = column.GetValue(item.RowObject) ?? GetFirstNonNullValue(column);\r\n\r\n            // TODO: What do we do if value is still null here?\r\n\r\n            // Ask the registry for an instance of the appropriate editor.\r\n            // Use a default editor if the registry can't create one for us.\r\n            Control editor = EditorRegistry.GetEditor(item.RowObject, column, value) ??\r\n                             MakeDefaultCellEditor(column);\r\n\r\n            return editor;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get the first non-null value of the given column.\r\n        /// At most 1000 rows will be considered.\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns>The first non-null value, or null if no non-null values were found</returns>\r\n        internal object GetFirstNonNullValue(OLVColumn column)\r\n        {\r\n            for (int i = 0; i < Math.Min(GetItemCount(), 1000); i++)\r\n            {\r\n                object value = column.GetValue(GetModelObject(i));\r\n                if (value != null)\r\n                    return value;\r\n            }\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a TextBox that can be used as a default cell editor.\r\n        /// </summary>\r\n        /// <param name=\"column\">What column does the cell belong to?</param>\r\n        /// <returns></returns>\r\n        protected virtual Control MakeDefaultCellEditor(OLVColumn column)\r\n        {\r\n            TextBox tb = new TextBox();\r\n            if (column.AutoCompleteEditor)\r\n                ConfigureAutoComplete(tb, column);\r\n            return tb;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Configure the given text box to autocomplete unique values\r\n        /// from the given column. At most 1000 rows will be considered.\r\n        /// </summary>\r\n        /// <param name=\"tb\">The textbox to configure</param>\r\n        /// <param name=\"column\">The column used to calculate values</param>\r\n        public void ConfigureAutoComplete(TextBox tb, OLVColumn column)\r\n        {\r\n            ConfigureAutoComplete(tb, column, 1000);\r\n        }\r\n\r\n\r\n        /// <summary>\r\n        /// Configure the given text box to autocomplete unique values\r\n        /// from the given column. At most 1000 rows will be considered.\r\n        /// </summary>\r\n        /// <param name=\"tb\">The textbox to configure</param>\r\n        /// <param name=\"column\">The column used to calculate values</param>\r\n        /// <param name=\"maxRows\">Consider only this many rows</param>\r\n        public void ConfigureAutoComplete(TextBox tb, OLVColumn column, int maxRows)\r\n        {\r\n            // Don't consider more rows than we actually have\r\n            maxRows = Math.Min(GetItemCount(), maxRows);\r\n\r\n            // Reset any existing autocomplete\r\n            tb.AutoCompleteCustomSource.Clear();\r\n\r\n            // CONSIDER: Should we use ClusteringStrategy here?\r\n\r\n            // Build a list of unique values, to be used as autocomplete on the editor\r\n            Dictionary<string, bool> alreadySeen = new Dictionary<string, bool>();\r\n            List<string> values = new List<string>();\r\n            for (int i = 0; i < maxRows; i++)\r\n            {\r\n                string valueAsString = column.GetStringValue(GetModelObject(i));\r\n                if (!String.IsNullOrEmpty(valueAsString) && !alreadySeen.ContainsKey(valueAsString))\r\n                {\r\n                    values.Add(valueAsString);\r\n                    alreadySeen[valueAsString] = true;\r\n                }\r\n            }\r\n\r\n            tb.AutoCompleteCustomSource.AddRange(values.ToArray());\r\n            tb.AutoCompleteSource = AutoCompleteSource.CustomSource;\r\n            tb.AutoCompleteMode = column.AutoCompleteEditorMode;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Stop editing a cell and throw away any changes.\r\n        /// </summary>\r\n        public virtual void CancelCellEdit()\r\n        {\r\n            if (!IsCellEditing)\r\n                return;\r\n\r\n            // Let the world know that the user has cancelled the edit operation\r\n            CellEditEventArgs.Cancel = true;\r\n            CellEditEventArgs.NewValue = GetControlValue(cellEditor);\r\n            OnCellEditFinishing(CellEditEventArgs);\r\n\r\n            // Now cleanup the editing process\r\n            CleanupCellEdit(false, CellEditEventArgs.AutoDispose);\r\n        }\r\n\r\n        /// <summary>\r\n        /// If a cell edit is in progress, finish the edit.\r\n        /// </summary>\r\n        /// <returns>Returns false if the finishing process was cancelled\r\n        /// (i.e. the cell editor is still on screen)</returns>\r\n        /// <remarks>This method does not guarantee that the editing will finish. The validation\r\n        /// process can cause the finishing to be aborted. Developers should check the return value\r\n        /// or use IsCellEditing property after calling this method to see if the user is still\r\n        /// editing a cell.</remarks>\r\n        public virtual bool PossibleFinishCellEditing()\r\n        {\r\n            // BCU doesn't use cell editing, so this can be skipped for performance\r\n            //return this.PossibleFinishCellEditing(false);\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// If a cell edit is in progress, finish the edit.\r\n        /// </summary>\r\n        /// <returns>Returns false if the finishing process was cancelled\r\n        /// (i.e. the cell editor is still on screen)</returns>\r\n        /// <remarks>This method does not guarantee that the editing will finish. The validation\r\n        /// process can cause the finishing to be aborted. Developers should check the return value\r\n        /// or use IsCellEditing property after calling this method to see if the user is still\r\n        /// editing a cell.</remarks>\r\n        /// <param name=\"expectingCellEdit\">True if it is likely that another cell is going to be \r\n        /// edited immediately after this cell finishes editing</param>\r\n        public virtual bool PossibleFinishCellEditing(bool expectingCellEdit)\r\n        {\r\n            if (!IsCellEditing)\r\n                return true;\r\n\r\n            CellEditEventArgs.Cancel = false;\r\n            CellEditEventArgs.NewValue = GetControlValue(cellEditor);\r\n            OnCellEditorValidating(CellEditEventArgs);\r\n\r\n            if (CellEditEventArgs.Cancel)\r\n                return false;\r\n\r\n            FinishCellEdit(expectingCellEdit);\r\n\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Finish the cell edit operation, writing changed data back to the model object\r\n        /// </summary>\r\n        /// <remarks>This method does not trigger a Validating event, so it always finishes\r\n        /// the cell edit.</remarks>\r\n        public virtual void FinishCellEdit()\r\n        {\r\n            FinishCellEdit(false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Finish the cell edit operation, writing changed data back to the model object\r\n        /// </summary>\r\n        /// <remarks>This method does not trigger a Validating event, so it always finishes\r\n        /// the cell edit.</remarks>\r\n        /// <param name=\"expectingCellEdit\">True if it is likely that another cell is going to be \r\n        /// edited immediately after this cell finishes editing</param>\r\n        public virtual void FinishCellEdit(bool expectingCellEdit)\r\n        {\r\n            if (!IsCellEditing)\r\n                return;\r\n\r\n            CellEditEventArgs.Cancel = false;\r\n            CellEditEventArgs.NewValue = GetControlValue(cellEditor);\r\n            OnCellEditFinishing(CellEditEventArgs);\r\n\r\n            // If someone doesn't cancel the editing process, write the value back into the model\r\n            if (!CellEditEventArgs.Cancel)\r\n            {\r\n                CellEditEventArgs.Column.PutValue(CellEditEventArgs.RowObject, CellEditEventArgs.NewValue);\r\n                RefreshItem(CellEditEventArgs.ListViewItem);\r\n            }\r\n\r\n            CleanupCellEdit(expectingCellEdit, CellEditEventArgs.AutoDispose);\r\n\r\n            // Tell the world that the cell has been edited\r\n            OnCellEditFinished(CellEditEventArgs);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove all trace of any existing cell edit operation\r\n        /// </summary>\r\n        /// <param name=\"expectingCellEdit\">True if it is likely that another cell is going to be \r\n        /// edited immediately after this cell finishes editing</param>\r\n        /// <param name=\"disposeOfCellEditor\">True if the cell editor should be disposed </param>\r\n        protected virtual void CleanupCellEdit(bool expectingCellEdit, bool disposeOfCellEditor)\r\n        {\r\n            if (cellEditor == null)\r\n                return;\r\n\r\n            cellEditor.Validating -= new CancelEventHandler(CellEditor_Validating);\r\n\r\n            Control soonToBeOldCellEditor = cellEditor;\r\n            cellEditor = null;\r\n\r\n            // Delay cleaning up the cell editor so that if we are immediately going to \r\n            // start a new cell edit (because the user pressed Tab) the new cell editor\r\n            // has a chance to grab the focus. Without this, the ListView gains focus\r\n            // momentarily (after the cell editor is remove and before the new one is created)\r\n            // causing the list's selection to flash momentarily.\r\n            EventHandler toBeRun = null;\r\n            toBeRun = delegate (object sender, EventArgs e)\r\n            {\r\n                Application.Idle -= toBeRun;\r\n                Controls.Remove(soonToBeOldCellEditor);\r\n                if (disposeOfCellEditor)\r\n                    soonToBeOldCellEditor.Dispose();\r\n                Invalidate();\r\n\r\n                if (!IsCellEditing)\r\n                {\r\n                    if (Focused)\r\n                        Select();\r\n                    PauseAnimations(false);\r\n                }\r\n            };\r\n\r\n            // We only want to delay the removal of the control if we are expecting another cell\r\n            // to be edited. Otherwise, we remove the control immediately.\r\n            if (expectingCellEdit)\r\n                RunWhenIdle(toBeRun);\r\n            else\r\n                toBeRun(null, null);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Hot row and cell handling\r\n\r\n        /// <summary>\r\n        /// Force the hot item to be recalculated\r\n        /// </summary>\r\n        public virtual void ClearHotItem()\r\n        {\r\n            if (IsDisposed || Disposing)\r\n                return;\r\n\r\n            UpdateHotItem(new Point(-1, -1));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Force the hot item to be recalculated\r\n        /// </summary>\r\n        public virtual void RefreshHotItem()\r\n        {\r\n            if (IsDisposed || Disposing)\r\n                return;\r\n\r\n            UpdateHotItem(PointToClient(Cursor.Position));\r\n        }\r\n\r\n        /// <summary>\r\n        /// The mouse has moved to the given pt. See if the hot item needs to be updated\r\n        /// </summary>\r\n        /// <param name=\"pt\">Where is the mouse?</param>\r\n        /// <remarks>This is the main entry point for hot item handling</remarks>\r\n        protected virtual void UpdateHotItem(Point pt)\r\n        {\r\n            UpdateHotItem(OlvHitTest(pt.X, pt.Y));\r\n        }\r\n\r\n        /// <summary>\r\n        /// The mouse has moved to the given pt. See if the hot item needs to be updated\r\n        /// </summary>\r\n        /// <param name=\"hti\"></param>\r\n        /// <remarks>This is the main entry point for hot item handling</remarks>\r\n        protected virtual void UpdateHotItem(OlvListViewHitTestInfo hti)\r\n        {\r\n\r\n            // We only need to do the work of this method when the list has hot parts \r\n            // (i.e. some element whose visual appearance changes when under the mouse)?\r\n            // Hot item decorations and hyperlinks are obvious, but if we have checkboxes\r\n            // or buttons, those are also \"hot\". It's difficult to quickly detect if there are any\r\n            // columns that have checkboxes or buttons, so we just abdicate responsibililty and \r\n            // provide a property (UseHotControls) which lets the programmer say whether to do\r\n            // the hot processing or not.\r\n            if (!UseHotItem && !UseHyperlinks && !UseHotControls)\r\n                return;\r\n\r\n            int newHotRow = hti.RowIndex;\r\n            int newHotColumn = hti.ColumnIndex;\r\n            HitTestLocation newHotCellHitLocation = hti.HitTestLocation;\r\n            HitTestLocationEx newHotCellHitLocationEx = hti.HitTestLocationEx;\r\n            OLVGroup newHotGroup = hti.Group;\r\n\r\n            // In non-details view, we treat any hit on a row as if it were a hit\r\n            // on column 0 -- which (effectively) it is!\r\n            if (newHotRow >= 0 && View != View.Details)\r\n                newHotColumn = 0;\r\n\r\n            if (HotRowIndex == newHotRow &&\r\n                HotColumnIndex == newHotColumn &&\r\n                HotCellHitLocation == newHotCellHitLocation &&\r\n                HotCellHitLocationEx == newHotCellHitLocationEx &&\r\n                HotGroup == newHotGroup)\r\n            {\r\n                return;\r\n            }\r\n\r\n            // Trigger the hotitem changed event\r\n            HotItemChangedEventArgs args = new HotItemChangedEventArgs();\r\n            args.HotCellHitLocation = newHotCellHitLocation;\r\n            args.HotCellHitLocationEx = newHotCellHitLocationEx;\r\n            args.HotColumnIndex = newHotColumn;\r\n            args.HotRowIndex = newHotRow;\r\n            args.HotGroup = newHotGroup;\r\n            args.OldHotCellHitLocation = HotCellHitLocation;\r\n            args.OldHotCellHitLocationEx = HotCellHitLocationEx;\r\n            args.OldHotColumnIndex = HotColumnIndex;\r\n            args.OldHotRowIndex = HotRowIndex;\r\n            args.OldHotGroup = HotGroup;\r\n            OnHotItemChanged(args);\r\n\r\n            // Update the state of the control\r\n            HotRowIndex = newHotRow;\r\n            HotColumnIndex = newHotColumn;\r\n            HotCellHitLocation = newHotCellHitLocation;\r\n            HotCellHitLocationEx = newHotCellHitLocationEx;\r\n            HotGroup = newHotGroup;\r\n\r\n            // If the event handler handled it complete, don't do anything else\r\n            if (args.Handled)\r\n                return;\r\n\r\n            //            System.Diagnostics.Debug.WriteLine(String.Format(\"Changed hot item: {0}\", args));\r\n\r\n            BeginUpdate();\r\n            try\r\n            {\r\n                Invalidate();\r\n                if (args.OldHotRowIndex != -1)\r\n                    UnapplyHotItem(args.OldHotRowIndex);\r\n\r\n                if (HotRowIndex != -1)\r\n                {\r\n                    // Virtual lists apply hot item style when fetching their rows\r\n                    if (VirtualMode)\r\n                    {\r\n                        ClearCachedInfo();\r\n                        RedrawItems(HotRowIndex, HotRowIndex, true);\r\n                    }\r\n                    else\r\n                    {\r\n                        UpdateHotRow(HotRowIndex, HotColumnIndex, HotCellHitLocation, hti.Item);\r\n                    }\r\n                }\r\n\r\n                if (UseHotItem && HotItemStyleOrDefault.Overlay != null)\r\n                {\r\n                    RefreshOverlays();\r\n                }\r\n            }\r\n            finally\r\n            {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the given row using the current hot item information\r\n        /// </summary>\r\n        /// <param name=\"olvi\"></param>\r\n        protected virtual void UpdateHotRow(OLVListItem olvi)\r\n        {\r\n            UpdateHotRow(HotRowIndex, HotColumnIndex, HotCellHitLocation, olvi);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the given row using the given hot item information\r\n        /// </summary>\r\n        /// <param name=\"rowIndex\"></param>\r\n        /// <param name=\"columnIndex\"></param>\r\n        /// <param name=\"hitLocation\"></param>\r\n        /// <param name=\"olvi\"></param>\r\n        protected virtual void UpdateHotRow(int rowIndex, int columnIndex, HitTestLocation hitLocation, OLVListItem olvi)\r\n        {\r\n            if (rowIndex < 0 || columnIndex < 0)\r\n                return;\r\n\r\n            // System.Diagnostics.Debug.WriteLine(String.Format(\"UpdateHotRow: {0}, {1}, {2}\", rowIndex, columnIndex, hitLocation));\r\n\r\n            if (UseHyperlinks)\r\n            {\r\n                OLVColumn column = GetColumn(columnIndex);\r\n                OLVListSubItem subItem = olvi.GetSubItem(columnIndex);\r\n                if (column.Hyperlink && hitLocation == HitTestLocation.Text && !String.IsNullOrEmpty(subItem.Url))\r\n                {\r\n                    ApplyCellStyle(olvi, columnIndex, HyperlinkStyle.Over);\r\n                    Cursor = HyperlinkStyle.OverCursor ?? Cursors.Default;\r\n                }\r\n                else\r\n                {\r\n                    Cursor = Cursors.Default;\r\n                }\r\n            }\r\n\r\n            if (UseHotItem)\r\n            {\r\n                if (!olvi.Selected && olvi.Enabled)\r\n                {\r\n                    ApplyRowStyle(olvi, HotItemStyleOrDefault);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Apply a style to the given row\r\n        /// </summary>\r\n        /// <param name=\"olvi\"></param>\r\n        /// <param name=\"style\"></param>\r\n        public virtual void ApplyRowStyle(OLVListItem olvi, IItemStyle style)\r\n        {\r\n            if (style == null)\r\n                return;\r\n\r\n            Font font = style.Font ?? olvi.Font;\r\n\r\n            if (style.FontStyle != FontStyle.Regular)\r\n                font = new Font(font ?? Font, style.FontStyle);\r\n\r\n            if (!Equals(font, olvi.Font))\r\n            {\r\n                if (olvi.UseItemStyleForSubItems)\r\n                    olvi.Font = font;\r\n                else\r\n                {\r\n                    foreach (ListViewItem.ListViewSubItem x in olvi.SubItems)\r\n                        x.Font = font;\r\n                }\r\n            }\r\n\r\n            if (!style.ForeColor.IsEmpty)\r\n            {\r\n                if (olvi.UseItemStyleForSubItems)\r\n                    olvi.ForeColor = style.ForeColor;\r\n                else\r\n                {\r\n                    foreach (ListViewItem.ListViewSubItem x in olvi.SubItems)\r\n                        x.ForeColor = style.ForeColor;\r\n                }\r\n            }\r\n\r\n            if (!style.BackColor.IsEmpty)\r\n            {\r\n                if (olvi.UseItemStyleForSubItems)\r\n                    olvi.BackColor = style.BackColor;\r\n                else\r\n                {\r\n                    foreach (ListViewItem.ListViewSubItem x in olvi.SubItems)\r\n                        x.BackColor = style.BackColor;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Apply a style to a cell\r\n        /// </summary>\r\n        /// <param name=\"olvi\"></param>\r\n        /// <param name=\"columnIndex\"></param>\r\n        /// <param name=\"style\"></param>\r\n        protected virtual void ApplyCellStyle(OLVListItem olvi, int columnIndex, IItemStyle style)\r\n        {\r\n            if (style == null)\r\n                return;\r\n\r\n            // Don't apply formatting to subitems when not in Details view\r\n            if (View != View.Details && columnIndex > 0)\r\n                return;\r\n\r\n            olvi.UseItemStyleForSubItems = false;\r\n\r\n            ListViewItem.ListViewSubItem subItem = olvi.SubItems[columnIndex];\r\n            if (style.Font != null)\r\n                subItem.Font = style.Font;\r\n\r\n            if (style.FontStyle != FontStyle.Regular)\r\n                subItem.Font = new Font(subItem.Font ?? olvi.Font ?? Font, style.FontStyle);\r\n\r\n            if (!style.ForeColor.IsEmpty)\r\n                subItem.ForeColor = style.ForeColor;\r\n\r\n            if (!style.BackColor.IsEmpty)\r\n                subItem.BackColor = style.BackColor;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove hot item styling from the given row\r\n        /// </summary>\r\n        /// <param name=\"index\"></param>\r\n        protected virtual void UnapplyHotItem(int index)\r\n        {\r\n            Cursor = Cursors.Default;\r\n            // Virtual lists will apply the appropriate formatting when the row is fetched\r\n            if (VirtualMode)\r\n            {\r\n                if (index < VirtualListSize)\r\n                    RedrawItems(index, index, true);\r\n            }\r\n            else\r\n            {\r\n                OLVListItem olvi = GetItem(index);\r\n                if (olvi != null)\r\n                {\r\n                    //this.PostProcessOneRow(index, index, olvi);\r\n                    RefreshItem(olvi);\r\n                }\r\n            }\r\n        }\r\n\r\n\r\n        #endregion\r\n\r\n        #region Drag and drop\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnItemDrag(ItemDragEventArgs e)\r\n        {\r\n            base.OnItemDrag(e);\r\n\r\n            if (DragSource == null)\r\n                return;\r\n\r\n            Object data = DragSource.StartDrag(this, e.Button, (OLVListItem)e.Item);\r\n            if (data != null)\r\n            {\r\n                DragDropEffects effect = DoDragDrop(data, DragSource.GetAllowedEffects(data));\r\n                DragSource.EndDrag(data, effect);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected override void OnDragEnter(DragEventArgs args)\r\n        {\r\n            base.OnDragEnter(args);\r\n\r\n            if (DropSink != null)\r\n                DropSink.Enter(args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected override void OnDragOver(DragEventArgs args)\r\n        {\r\n            base.OnDragOver(args);\r\n\r\n            if (DropSink != null)\r\n                DropSink.Over(args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected override void OnDragDrop(DragEventArgs args)\r\n        {\r\n            base.OnDragDrop(args);\r\n\r\n            if (DropSink != null)\r\n                DropSink.Drop(args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnDragLeave(EventArgs e)\r\n        {\r\n            base.OnDragLeave(e);\r\n\r\n            if (DropSink != null)\r\n                DropSink.Leave();\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected override void OnGiveFeedback(GiveFeedbackEventArgs args)\r\n        {\r\n            base.OnGiveFeedback(args);\r\n\r\n            if (DropSink != null)\r\n                DropSink.GiveFeedback(args);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"args\"></param>\r\n        protected override void OnQueryContinueDrag(QueryContinueDragEventArgs args)\r\n        {\r\n            base.OnQueryContinueDrag(args);\r\n\r\n            if (DropSink != null)\r\n                DropSink.QueryContinue(args);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Decorations and Overlays\r\n\r\n        /// <summary>\r\n        /// Add the given decoration to those on this list and make it appear\r\n        /// </summary>\r\n        /// <param name=\"decoration\">The decoration</param>\r\n        /// <remarks>\r\n        /// A decoration scrolls with the listview. An overlay stays fixed in place.\r\n        /// </remarks>\r\n        public virtual void AddDecoration(IDecoration decoration)\r\n        {\r\n            if (decoration == null)\r\n                return;\r\n            Decorations.Add(decoration);\r\n            Invalidate();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Add the given overlay to those on this list and make it appear\r\n        /// </summary>\r\n        /// <param name=\"overlay\">The overlay</param>\r\n        public virtual void AddOverlay(IOverlay overlay)\r\n        {\r\n            if (overlay == null)\r\n                return;\r\n            Overlays.Add(overlay);\r\n            Invalidate();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw all the decorations\r\n        /// </summary>\r\n        /// <param name=\"g\">A Graphics</param>\r\n        /// <param name=\"itemsThatWereRedrawn\">The items that were redrawn and whose decorations should also be redrawn</param>\r\n        protected virtual void DrawAllDecorations(Graphics g, List<OLVListItem> itemsThatWereRedrawn)\r\n        {\r\n            g.TextRenderingHint = TextRenderingHint;\r\n            g.SmoothingMode = SmoothingMode;\r\n\r\n            Rectangle contentRectangle = ContentRectangle;\r\n\r\n            if (HasEmptyListMsg && GetItemCount() == 0)\r\n            {\r\n                EmptyListMsgOverlay.Draw(this, g, contentRectangle);\r\n            }\r\n\r\n            // Let the drop sink draw whatever feedback it likes\r\n            if (DropSink != null)\r\n            {\r\n                DropSink.DrawFeedback(g, contentRectangle);\r\n            }\r\n\r\n            // Draw our item and subitem decorations\r\n            foreach (OLVListItem olvi in itemsThatWereRedrawn)\r\n            {\r\n                if (olvi.HasDecoration)\r\n                {\r\n                    foreach (IDecoration d in olvi.Decorations)\r\n                    {\r\n                        d.ListItem = olvi;\r\n                        d.SubItem = null;\r\n                        d.Draw(this, g, contentRectangle);\r\n                    }\r\n                }\r\n                foreach (OLVListSubItem subItem in olvi.SubItems.OfType<OLVListSubItem>())\r\n                {\r\n                    if (subItem.HasDecoration)\r\n                    {\r\n                        foreach (IDecoration d in subItem.Decorations)\r\n                        {\r\n                            d.ListItem = olvi;\r\n                            d.SubItem = subItem;\r\n                            d.Draw(this, g, contentRectangle);\r\n                        }\r\n                    }\r\n                }\r\n                if (SelectedRowDecoration != null && olvi.Selected && olvi.Enabled)\r\n                {\r\n                    SelectedRowDecoration.ListItem = olvi;\r\n                    SelectedRowDecoration.SubItem = null;\r\n                    SelectedRowDecoration.Draw(this, g, contentRectangle);\r\n                }\r\n            }\r\n\r\n            // Now draw the specifically registered decorations\r\n            foreach (IDecoration decoration in Decorations)\r\n            {\r\n                decoration.ListItem = null;\r\n                decoration.SubItem = null;\r\n                decoration.Draw(this, g, contentRectangle);\r\n            }\r\n\r\n            // Finally, draw any hot item decoration\r\n            if (UseHotItem)\r\n            {\r\n                IDecoration hotItemDecoration = HotItemStyleOrDefault.Decoration;\r\n                if (hotItemDecoration != null)\r\n                {\r\n                    hotItemDecoration.ListItem = GetItem(HotRowIndex);\r\n                    if (hotItemDecoration.ListItem == null || hotItemDecoration.ListItem.Enabled)\r\n                    {\r\n                        hotItemDecoration.SubItem = hotItemDecoration.ListItem == null ? null : hotItemDecoration.ListItem.GetSubItem(HotColumnIndex);\r\n                        hotItemDecoration.Draw(this, g, contentRectangle);\r\n                    }\r\n                }\r\n            }\r\n\r\n            // If we are in design mode, we don't want to use the glass panels,\r\n            // so we draw the background overlays here\r\n            if (DesignMode)\r\n            {\r\n                foreach (IOverlay overlay in Overlays)\r\n                {\r\n                    overlay.Draw(this, g, contentRectangle);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Is the given decoration shown on this list\r\n        /// </summary>\r\n        /// <param name=\"decoration\">The overlay</param>\r\n        public virtual bool HasDecoration(IDecoration decoration)\r\n        {\r\n            return Decorations.Contains(decoration);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Is the given overlay shown on this list?\r\n        /// </summary>\r\n        /// <param name=\"overlay\">The overlay</param>\r\n        public virtual bool HasOverlay(IOverlay overlay)\r\n        {\r\n            return Overlays.Contains(overlay);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Hide any overlays.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This is only a temporary hiding -- the overlays will be shown\r\n        /// the next time the ObjectListView redraws.\r\n        /// </remarks>\r\n        public virtual void HideOverlays()\r\n        {\r\n            foreach (GlassPanelForm glassPanel in glassPanels)\r\n            {\r\n                glassPanel.HideGlass();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create and configure the empty list msg overlay\r\n        /// </summary>\r\n        protected virtual void InitializeEmptyListMsgOverlay()\r\n        {\r\n            TextOverlay overlay = new TextOverlay();\r\n            overlay.Alignment = System.Drawing.ContentAlignment.MiddleCenter;\r\n            overlay.TextColor = SystemColors.ControlDarkDark;\r\n            overlay.BackColor = Color.BlanchedAlmond;\r\n            overlay.BorderColor = SystemColors.ControlDark;\r\n            overlay.BorderWidth = 2.0f;\r\n            EmptyListMsgOverlay = overlay;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Initialize the standard image and text overlays\r\n        /// </summary>\r\n        protected virtual void InitializeStandardOverlays()\r\n        {\r\n            OverlayImage = new ImageOverlay();\r\n            AddOverlay(OverlayImage);\r\n            OverlayText = new TextOverlay();\r\n            AddOverlay(OverlayText);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make sure that any overlays are visible.\r\n        /// </summary>\r\n        public virtual void ShowOverlays()\r\n        {\r\n            // If we shouldn't show overlays, then don't create glass panels\r\n            if (!ShouldShowOverlays())\r\n                return;\r\n\r\n            // Make sure that each overlay has its own glass panels\r\n            if (Overlays.Count != glassPanels.Count)\r\n            {\r\n                foreach (IOverlay overlay in Overlays)\r\n                {\r\n                    GlassPanelForm glassPanel = FindGlassPanelForOverlay(overlay);\r\n                    if (glassPanel == null)\r\n                    {\r\n                        glassPanel = new GlassPanelForm();\r\n                        glassPanel.Bind(this, overlay);\r\n                        glassPanels.Add(glassPanel);\r\n                    }\r\n                }\r\n            }\r\n            foreach (GlassPanelForm glassPanel in glassPanels)\r\n            {\r\n                glassPanel.ShowGlass();\r\n            }\r\n        }\r\n\r\n        private bool ShouldShowOverlays()\r\n        {\r\n            // If we are in design mode, we dont show the overlays\r\n            if (DesignMode)\r\n                return false;\r\n\r\n            // If we are explicitly not using overlays, also don't show them\r\n            if (!UseOverlays)\r\n                return false;\r\n\r\n            // If there are no overlays, guess...\r\n            if (!HasOverlays)\r\n                return false;\r\n\r\n            // If we don't have 32-bit display, alpha blending doesn't work, so again, no overlays\r\n            // TODO: This should actually figure out which screen(s) the control is on, and make sure\r\n            // that each one is 32-bit.\r\n            if (Screen.PrimaryScreen.BitsPerPixel < 32)\r\n                return false;\r\n\r\n            // Finally, we can show the overlays\r\n            return true;\r\n        }\r\n\r\n        private GlassPanelForm FindGlassPanelForOverlay(IOverlay overlay)\r\n        {\r\n            return glassPanels.Find(delegate (GlassPanelForm x) { return x.Overlay == overlay; });\r\n        }\r\n\r\n        /// <summary>\r\n        /// Refresh the display of the overlays\r\n        /// </summary>\r\n        public virtual void RefreshOverlays()\r\n        {\r\n            foreach (GlassPanelForm glassPanel in glassPanels)\r\n            {\r\n                glassPanel.Invalidate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Refresh the display of just one overlays\r\n        /// </summary>\r\n        public virtual void RefreshOverlay(IOverlay overlay)\r\n        {\r\n            GlassPanelForm glassPanel = FindGlassPanelForOverlay(overlay);\r\n            if (glassPanel != null)\r\n                glassPanel.Invalidate();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove the given decoration from this list\r\n        /// </summary>\r\n        /// <param name=\"decoration\">The decoration to remove</param>\r\n        public virtual void RemoveDecoration(IDecoration decoration)\r\n        {\r\n            if (decoration == null)\r\n                return;\r\n            Decorations.Remove(decoration);\r\n            Invalidate();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove the given overlay to those on this list\r\n        /// </summary>\r\n        /// <param name=\"overlay\">The overlay</param>\r\n        public virtual void RemoveOverlay(IOverlay overlay)\r\n        {\r\n            if (overlay == null)\r\n                return;\r\n            Overlays.Remove(overlay);\r\n            GlassPanelForm glassPanel = FindGlassPanelForOverlay(overlay);\r\n            if (glassPanel != null)\r\n            {\r\n                glassPanels.Remove(glassPanel);\r\n                glassPanel.Unbind();\r\n                glassPanel.Dispose();\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Filtering\r\n\r\n        /// <summary>\r\n        /// Create a filter that will enact all the filtering currently installed\r\n        /// on the visible columns.\r\n        /// </summary>\r\n        public virtual IModelFilter CreateColumnFilter()\r\n        {\r\n            List<IModelFilter> filters = new List<IModelFilter>();\r\n            foreach (OLVColumn column in Columns)\r\n            {\r\n                IModelFilter filter = column.ValueBasedFilter;\r\n                if (filter != null)\r\n                    filters.Add(filter);\r\n            }\r\n            return (filters.Count == 0) ? null : new CompositeAllFilter(filters);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the actual work of filtering\r\n        /// </summary>\r\n        /// <param name=\"originalObjects\"></param>\r\n        /// <param name=\"aModelFilter\"></param>\r\n        /// <param name=\"aListFilter\"></param>\r\n        /// <returns></returns>\r\n        protected virtual IEnumerable FilterObjects(IEnumerable originalObjects, IModelFilter aModelFilter, IListFilter aListFilter)\r\n        {\r\n            // Being cautious\r\n            originalObjects ??= new ArrayList();\r\n\r\n            // Tell the world to filter the objects. If they do so, don't do anything else\r\n            // ReSharper disable PossibleMultipleEnumeration\r\n            FilterEventArgs args = new FilterEventArgs(originalObjects);\r\n            OnFilter(args);\r\n            if (args.FilteredObjects != null)\r\n                return args.FilteredObjects;\r\n\r\n            // Apply a filter to the list as a whole\r\n            if (aListFilter != null)\r\n                originalObjects = aListFilter.Filter(originalObjects);\r\n\r\n            // Apply the object filter if there is one\r\n            if (aModelFilter != null)\r\n            {\r\n                ArrayList filteredObjects = new ArrayList();\r\n                foreach (object model in originalObjects)\r\n                {\r\n                    if (aModelFilter.Filter(model))\r\n                        filteredObjects.Add(model);\r\n                }\r\n                originalObjects = filteredObjects;\r\n            }\r\n\r\n            return originalObjects;\r\n            // ReSharper restore PossibleMultipleEnumeration\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove all column filtering.\r\n        /// </summary>\r\n        public virtual void ResetColumnFiltering()\r\n        {\r\n            foreach (OLVColumn column in Columns)\r\n            {\r\n                column.ValuesChosenForFiltering.Clear();\r\n            }\r\n            UpdateColumnFiltering();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the filtering of this ObjectListView based on the value filtering\r\n        /// defined in each column\r\n        /// </summary>\r\n        public virtual void UpdateColumnFiltering()\r\n        {\r\n            //List<IModelFilter> filters = new List<IModelFilter>();\r\n            //IModelFilter columnFilter = this.CreateColumnFilter();\r\n            //if (columnFilter != null)\r\n            //    filters.Add(columnFilter);\r\n            //if (this.AdditionalFilter != null)\r\n            //    filters.Add(this.AdditionalFilter);\r\n            //this.ModelFilter = filters.Count == 0 ? null : new CompositeAllFilter(filters);\r\n\r\n            if (IsDisposed || Disposing) return;\r\n\r\n            if (AdditionalFilter == null)\r\n                ModelFilter = CreateColumnFilter();\r\n            else\r\n            {\r\n                IModelFilter columnFilter = CreateColumnFilter();\r\n                if (columnFilter == null)\r\n                    ModelFilter = AdditionalFilter;\r\n                else\r\n                {\r\n                    List<IModelFilter> filters = new List<IModelFilter>();\r\n                    filters.Add(columnFilter);\r\n                    filters.Add(AdditionalFilter);\r\n                    ModelFilter = new CompositeAllFilter(filters);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// When some setting related to filtering changes, this method is called.\r\n        /// </summary>\r\n        protected virtual void UpdateFiltering()\r\n        {\r\n            BuildList(true);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update all renderers with the currently installed model filter\r\n        /// </summary>\r\n        protected virtual void NotifyNewModelFilter()\r\n        {\r\n            if (DefaultRenderer is IFilterAwareRenderer filterAware)\r\n                filterAware.Filter = ModelFilter;\r\n\r\n            foreach (OLVColumn column in AllColumns)\r\n            {\r\n                filterAware = column.Renderer as IFilterAwareRenderer;\r\n                if (filterAware != null)\r\n                    filterAware.Filter = ModelFilter;\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Persistent check state\r\n\r\n        /// <summary>\r\n        /// Gets the checkedness of the given model.\r\n        /// </summary>\r\n        /// <param name=\"model\">The model</param>\r\n        /// <returns>The checkedness of the model. Defaults to unchecked.</returns>\r\n        protected virtual CheckState GetPersistentCheckState(object model)\r\n        {\r\n            if (model != null && CheckStateMap.TryGetValue(model, out CheckState state))\r\n                return state;\r\n            return CheckState.Unchecked;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remember the check state of the given model object\r\n        /// </summary>\r\n        /// <param name=\"model\">The model to be remembered</param>\r\n        /// <param name=\"state\">The model's checkedness</param>\r\n        /// <returns>The state given to the method</returns>\r\n        protected virtual CheckState SetPersistentCheckState(object model, CheckState state)\r\n        {\r\n            if (model == null)\r\n                return CheckState.Unchecked;\r\n\r\n            CheckStateMap[model] = state;\r\n            return state;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Forget any persistent checkbox state\r\n        /// </summary>\r\n        protected virtual void ClearPersistentCheckState()\r\n        {\r\n            CheckStateMap = null;\r\n        }\r\n\r\n        #endregion\r\n\r\n        private float origFontSize;\r\n        protected override void RescaleConstantsForDpi(int deviceDpiOld, int deviceDpiNew)\r\n        {\r\n            base.RescaleConstantsForDpi(deviceDpiOld, deviceDpiNew);\r\n            \r\n            SuspendLayout();\r\n            BeginUpdate();\r\n\r\n            // Storing the font size because the Font property gets changed at weird times\r\n            // which corrupts the size after a few DPI switches since scaling is sometimes applied twice\r\n            if (origFontSize == 0) origFontSize = Font.Size;\r\n\r\n            var scalingRatio = DeviceDpi / 96f; //e.DeviceDpiNew / (double)e.DeviceDpiOld;\r\n            //Debug.WriteLine($\"DPI CHANGE: {deviceDpiOld} > {deviceDpiNew}\");\r\n\r\n            Font = new Font(Font.FontFamily, MathF.Round(origFontSize * scalingRatio, 1));\r\n\r\n            // Can't use foreach since it can throw an InvalidOperationException when the ListView is in virtual mode\r\n            for (var i = 0; i < Items.Count; i++)\r\n            {\r\n                var listViewItem = (OLVListItem)Items[i];\r\n                RefreshItem(listViewItem);\r\n            }\r\n\r\n            AutoResizeColumns();\r\n\r\n            EndUpdate();\r\n            ResumeLayout();\r\n        }\r\n\r\n        #region Implementation variables\r\n\r\n        private bool isOwnerOfObjects; // does this ObjectListView own the Objects collection?\r\n        private bool hasIdleHandler; // has an Idle handler already been installed?\r\n        private bool hasResizeColumnsHandler; // has an idle handler been installed which will handle column resizing?\r\n        private bool isInWmPaintEvent; // is a WmPaint event currently being handled?\r\n        private bool shouldDoCustomDrawing; // should the list do its custom drawing?\r\n        private bool isMarqueSelecting; // Is a marque selection in progress?\r\n        private int suspendSelectionEventCount; // How many unmatched SuspendSelectionEvents() calls have been made?\r\n\r\n        private readonly List<GlassPanelForm> glassPanels = new(); // The transparent panel that draws overlays\r\n        private Dictionary<string, bool> visitedUrlMap = new(); // Which urls have been visited?\r\n\r\n        // TODO\r\n        //private CheckBoxSettings checkBoxSettings = new CheckBoxSettings();\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/ObjectListView.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Library</OutputType>\n    <RootNamespace>BrightIdeasSoftware</RootNamespace>\n    <AssemblyName>ObjectListView</AssemblyName>\n    <SignAssembly>false</SignAssembly>\n    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>\n    <WarningLevel>1</WarningLevel>\n    <DocumentationFile></DocumentationFile>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <Compile Remove=\"Implementation\\DragSource.cs\" />\n    <Compile Remove=\"Implementation\\DropSink.cs\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <Compile Update=\"Properties\\Resources.Designer.cs\">\n      <DesignTime>True</DesignTime>\n      <AutoGen>True</AutoGen>\n      <DependentUpon>Resources.resx</DependentUpon>\n    </Compile>\n  </ItemGroup>\n\n  <ItemGroup>\n    <EmbeddedResource Update=\"Properties\\Resources.resx\">\n      <Generator>ResXFileCodeGenerator</Generator>\n      <LastGenOutput>Resources.Designer.cs</LastGenOutput>\n    </EmbeddedResource>\n  </ItemGroup>\n</Project>"
  },
  {
    "path": "source/ObjectListView/ObjectListView.shfb",
    "content": "﻿<project schemaVersion=\"1.6.0.2\">\r\n    <assemblies>\r\n        <assembly assemblyPath=\".\\bin\\Debug\\ObjectListViewDemo.exe\" xmlCommentsPath=\".\\bin\\Debug\\ObjectListViewDemo.XML\" commentsOnly=\"False\" />\r\n    </assemblies>\r\n    <namespaceSummaries>\r\n        <namespaceSummaryItem name=\"\" isDocumented=\"False\" />\r\n        <namespaceSummaryItem name=\"BrightIdeasSoftware\" isDocumented=\"True\">All ObjectListView appears in this namespace</namespaceSummaryItem>\r\n        <namespaceSummaryItem name=\"ObjectListViewDemo\" isDocumented=\"False\" />\r\n    </namespaceSummaries>\r\n    <ProjectSummary>ObjectListViewDemo demonstrates helpful techniques when using an ObjectListView</ProjectSummary>\r\n    <MissingTags>Summary, Parameter, Returns, AutoDocumentCtors, Namespace</MissingTags>\r\n    <VisibleItems>InheritedMembers, Protected, SealedProtected</VisibleItems>\r\n    <HtmlHelp1xCompilerPath path=\"\" />\r\n    <HtmlHelp2xCompilerPath path=\"\" />\r\n    <OutputPath>.\\Help\\</OutputPath>\r\n    <SandcastlePath path=\"\" />\r\n    <WorkingPath path=\"\" />\r\n    <CleanIntermediates>True</CleanIntermediates>\r\n    <KeepLogFile>True</KeepLogFile>\r\n    <HelpFileFormat>HtmlHelp1x</HelpFileFormat>\r\n    <PurgeDuplicateTopics>True</PurgeDuplicateTopics>\r\n    <CppCommentsFixup>False</CppCommentsFixup>\r\n    <FrameworkVersion>2.0.50727</FrameworkVersion>\r\n    <BinaryTOC>True</BinaryTOC>\r\n    <IncludeFavorites>False</IncludeFavorites>\r\n    <Preliminary>True</Preliminary>\r\n    <RootNamespaceContainer>False</RootNamespaceContainer>\r\n    <RootNamespaceTitle />\r\n    <HelpTitle>ObjectListView Reference</HelpTitle>\r\n    <HtmlHelpName>Documentation</HtmlHelpName>\r\n    <Language>en-US</Language>\r\n    <CopyrightHref />\r\n    <CopyrightText>(c) Copyright 2006-2008 Phillip Piper All Rights Reserved</CopyrightText>\r\n    <FeedbackEMailAddress>phillip.piper@gmail.com</FeedbackEMailAddress>\r\n    <HeaderText />\r\n    <FooterText />\r\n    <ProjectLinkType>Local</ProjectLinkType>\r\n    <SdkLinkType>Msdn</SdkLinkType>\r\n    <SdkLinkTarget>Blank</SdkLinkTarget>\r\n    <PresentationStyle>Prototype</PresentationStyle>\r\n    <NamingMethod>Guid</NamingMethod>\r\n    <SyntaxFilters>CSharp</SyntaxFilters>\r\n    <ShowFeedbackControl>False</ShowFeedbackControl>\r\n    <ContentPlacement>AboveNamespaces</ContentPlacement>\r\n    <ContentSiteMap path=\"\" />\r\n    <TopicFileTransform path=\"\" />\r\n</project>"
  },
  {
    "path": "source/ObjectListView/Properties/AssemblyInfo.cs",
    "content": "using System.Diagnostics.CodeAnalysis;\r\nusing System.Reflection;\r\nusing System.Runtime.InteropServices;\r\n\r\n[assembly: SuppressMessage(\"Interoperability\", \"CA1416:Validate platform compatibility\", Justification = \"Windows-only app\")]\r\n\r\n// General Information about an assembly is controlled through the following\r\n// set of attributes. Change these attribute values to modify the information\r\n// associated with an assembly.\r\n[assembly: AssemblyTitle(\"ObjectListView\")]\r\n[assembly: AssemblyDescription(\"A much easier to use ListView and friends\")]\r\n[assembly: AssemblyConfiguration(\"\")]\r\n[assembly: AssemblyCompany(\"Bright Ideas Software\")]\r\n[assembly: AssemblyProduct(\"ObjectListView\")]\r\n[assembly: AssemblyCopyright(\"Copyright ©  2006-2016\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// Setting ComVisible to false makes the types in this assembly not visible\r\n// to COM components.  If you need to access a type in this assembly from\r\n// COM, set the ComVisible attribute to true on that type.\r\n[assembly: ComVisible(false)]\r\n\r\n// The following GUID is for the ID of the typelib if this project is exposed to COM\r\n[assembly: Guid(\"ef28c7a8-77ae-442d-abc3-bb023fa31e57\")]\r\n\r\n// Version information for an assembly consists of the following four values:\r\n//\r\n//      Major Version\r\n//      Minor Version\r\n//      Build Number\r\n//      Revision\r\n//\r\n// You can specify all the values or you can default the Revision and Build Numbers\r\n// by using the '*' as shown below:\r\n[assembly: AssemblyVersion(\"2.10.0.0\")]\r\n[assembly: AssemblyFileVersion(\"2.9.1.0\")]\r\n[assembly: AssemblyInformationalVersion(\"2.9.1\")]\r\n[assembly: System.CLSCompliant(true)]\r\n"
  },
  {
    "path": "source/ObjectListView/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace BrightIdeasSoftware.Properties {\r\n    using System;\r\n    \r\n    \r\n    /// <summary>\r\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\r\n    /// </summary>\r\n    // This class was auto-generated by the StronglyTypedResourceBuilder\r\n    // class via a tool like ResGen or Visual Studio.\r\n    // To add or remove a member, edit your .ResX file then rerun ResGen\r\n    // with the /str option, or rebuild your VS project.\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\r\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    internal class Resources {\r\n        \r\n        private static global::System.Resources.ResourceManager resourceMan;\r\n        \r\n        private static global::System.Globalization.CultureInfo resourceCulture;\r\n        \r\n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\r\n        internal Resources() {\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Returns the cached ResourceManager instance used by this class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Resources.ResourceManager ResourceManager {\r\n            get {\r\n                if (object.ReferenceEquals(resourceMan, null)) {\r\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"BrightIdeasSoftware.Properties.Resources\", typeof(Resources).Assembly);\r\n                    resourceMan = temp;\r\n                }\r\n                return resourceMan;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Overrides the current thread's CurrentUICulture property for all\r\n        ///   resource lookups using this strongly typed resource class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Globalization.CultureInfo Culture {\r\n            get {\r\n                return resourceCulture;\r\n            }\r\n            set {\r\n                resourceCulture = value;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap ClearFiltering {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"ClearFiltering\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap ColumnFilterIndicator {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"ColumnFilterIndicator\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap Filtering {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"Filtering\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap SortAscending {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"SortAscending\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap SortDescending {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"SortDescending\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Properties/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"ClearFiltering\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\clear-filter.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"ColumnFilterIndicator\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\filter-icons3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"Filtering\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\filter.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"SortAscending\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\sort-ascending.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"SortDescending\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\sort-descending.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/ObjectListView/Rendering/Adornments.cs",
    "content": "﻿/*\r\n * Adornments - Adornments are the basis for overlays and decorations -- things that can be rendered over the top of a ListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 16/08/2009 1:02 AM\r\n *\r\n * Change log:\r\n * v2.6\r\n * 2012-08-18   JPP  - Correctly dispose of brush and pen resources\r\n * v2.3\r\n * 2009-09-22   JPP  - Added Wrap property to TextAdornment, to allow text wrapping to be disabled\r\n *                   - Added ShrinkToWidth property to ImageAdornment\r\n * 2009-08-17   JPP  - Initial version\r\n *\r\n * To do:\r\n * - Use IPointLocator rather than Corners\r\n * - Add RotationCenter property ratherr than always using middle center\r\n * \r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.ComponentModel;\r\nusing System.Drawing;\r\nusing System.Drawing.Drawing2D;\r\nusing System.Drawing.Imaging;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// An adorment is the common base for overlays and decorations.\r\n    /// </summary>\r\n    public class GraphicAdornment\r\n    {\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the corner of the adornment that will be positioned at the reference corner\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public ContentAlignment AdornmentCorner {\r\n            get { return adornmentCorner; }\r\n            set { adornmentCorner = value; }\r\n        }\r\n        private ContentAlignment adornmentCorner = ContentAlignment.MiddleCenter;\r\n\r\n        /// <summary>\r\n        /// Gets or sets location within the reference rectange where the adornment will be drawn\r\n        /// </summary>\r\n        /// <remarks>This is a simplied interface to ReferenceCorner and AdornmentCorner </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How will the adornment be aligned\"),\r\n         DefaultValue(ContentAlignment.BottomRight),\r\n         NotifyParentProperty(true)]\r\n        public ContentAlignment Alignment {\r\n            get { return alignment; }\r\n            set { \r\n                alignment = value;\r\n                ReferenceCorner = value;\r\n                AdornmentCorner = value;\r\n            }\r\n        }\r\n        private ContentAlignment alignment = ContentAlignment.BottomRight;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the offset by which the position of the adornment will be adjusted\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The offset by which the position of the adornment will be adjusted\"),\r\n         DefaultValue(typeof(Size), \"0,0\")]\r\n        public Size Offset {\r\n            get { return offset; }\r\n            set { offset = value; }\r\n        }\r\n        private Size offset = new();\r\n\r\n        /// <summary>\r\n        /// Gets or sets the point of the reference rectangle to which the adornment will be aligned.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public ContentAlignment ReferenceCorner {\r\n            get { return referenceCorner; }\r\n            set { referenceCorner = value; }\r\n        }\r\n        private ContentAlignment referenceCorner = ContentAlignment.MiddleCenter;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the degree of rotation by which the adornment will be transformed.\r\n        /// The centre of rotation will be the center point of the adornment.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The degree of rotation that will be applied to the adornment.\"),\r\n         DefaultValue(0),\r\n         NotifyParentProperty(true)]\r\n        public int Rotation {\r\n            get { return rotation; }\r\n            set { rotation = value; }\r\n        }\r\n        private int rotation;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the transparency of the overlay. \r\n        /// 0 is completely transparent, 255 is completely opaque.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The transparency of this adornment. 0 is completely transparent, 255 is completely opaque.\"),\r\n         DefaultValue(128)]\r\n        public int Transparency {\r\n            get { return transparency; }\r\n            set { transparency = Math.Min(255, Math.Max(0, value)); }\r\n        }\r\n        private int transparency = 128;\r\n\r\n        #endregion\r\n\r\n        #region Calculations\r\n\r\n        /// <summary>\r\n        /// Calculate the location of rectangle of the given size,\r\n        /// so that it's indicated corner would be at the given point.\r\n        /// </summary>\r\n        /// <param name=\"pt\">The point</param>\r\n        /// <param name=\"size\"></param>\r\n        /// <param name=\"corner\">Which corner will be positioned at the reference point</param>\r\n        /// <returns></returns>\r\n        /// <example>CalculateAlignedPosition(new Point(50, 100), new Size(10, 20), System.Drawing.ContentAlignment.TopLeft) -> Point(50, 100)</example>\r\n        /// <example>CalculateAlignedPosition(new Point(50, 100), new Size(10, 20), System.Drawing.ContentAlignment.MiddleCenter) -> Point(45, 90)</example>\r\n        /// <example>CalculateAlignedPosition(new Point(50, 100), new Size(10, 20), System.Drawing.ContentAlignment.BottomRight) -> Point(40, 80)</example>\r\n        public virtual Point CalculateAlignedPosition(Point pt, Size size, ContentAlignment corner) {\r\n            switch (corner) {\r\n                case ContentAlignment.TopLeft:\r\n                    return pt;\r\n                case ContentAlignment.TopCenter:\r\n                    return new Point(pt.X - (size.Width / 2), pt.Y);\r\n                case ContentAlignment.TopRight:\r\n                    return new Point(pt.X - size.Width, pt.Y);\r\n                case ContentAlignment.MiddleLeft:\r\n                    return new Point(pt.X, pt.Y - (size.Height / 2));\r\n                case ContentAlignment.MiddleCenter:\r\n                    return new Point(pt.X - (size.Width / 2), pt.Y - (size.Height / 2));\r\n                case ContentAlignment.MiddleRight:\r\n                    return new Point(pt.X - size.Width, pt.Y - (size.Height / 2));\r\n                case ContentAlignment.BottomLeft:\r\n                    return new Point(pt.X, pt.Y - size.Height);\r\n                case ContentAlignment.BottomCenter:\r\n                    return new Point(pt.X - (size.Width / 2), pt.Y - size.Height);\r\n                case ContentAlignment.BottomRight:\r\n                    return new Point(pt.X - size.Width, pt.Y - size.Height);\r\n            }\r\n\r\n            // Should never reach here\r\n            return pt;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate a rectangle that has the given size which is positioned so that\r\n        /// its alignment point is at the reference location of the given rect.\r\n        /// </summary>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"sz\"></param>\r\n        /// <returns></returns>\r\n        public virtual Rectangle CreateAlignedRectangle(Rectangle r, Size sz) {\r\n            return CreateAlignedRectangle(r, sz, ReferenceCorner, AdornmentCorner, Offset);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a rectangle of the given size which is positioned so that\r\n        /// its indicated corner is at the indicated corner of the reference rect.\r\n        /// </summary>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"sz\"></param>\r\n        /// <param name=\"corner\"></param>\r\n        /// <param name=\"referenceCorner\"></param>\r\n        /// <param name=\"offset\"></param>\r\n        /// <returns></returns>\r\n        /// <remarks>\r\n        /// <para>Creates a rectangle so that its bottom left is at the centre of the reference:\r\n        /// corner=BottomLeft, referenceCorner=MiddleCenter</para>\r\n        /// <para>This is a powerful concept that takes some getting used to, but is\r\n        /// very neat once you understand it.</para>\r\n        /// </remarks>\r\n        public virtual Rectangle CreateAlignedRectangle(Rectangle r, Size sz,\r\n            ContentAlignment corner, ContentAlignment referenceCorner, Size offset) {\r\n            Point referencePt = CalculateCorner(r, referenceCorner);\r\n            Point topLeft = CalculateAlignedPosition(referencePt, sz, corner);\r\n            return new Rectangle(topLeft + offset, sz);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the point at the indicated corner of the given rectangle (it doesn't\r\n        /// have to be a corner, but a named location)\r\n        /// </summary>\r\n        /// <param name=\"r\">The reference rectangle</param>\r\n        /// <param name=\"corner\">Which point of the rectangle should be returned?</param>\r\n        /// <returns>A point</returns>\r\n        /// <example>CalculateReferenceLocation(new Rectangle(0, 0, 50, 100), System.Drawing.ContentAlignment.TopLeft) -> Point(0, 0)</example>\r\n        /// <example>CalculateReferenceLocation(new Rectangle(0, 0, 50, 100), System.Drawing.ContentAlignment.MiddleCenter) -> Point(25, 50)</example>\r\n        /// <example>CalculateReferenceLocation(new Rectangle(0, 0, 50, 100), System.Drawing.ContentAlignment.BottomRight) -> Point(50, 100)</example>\r\n        public virtual Point CalculateCorner(Rectangle r, ContentAlignment corner) {\r\n            switch (corner) {\r\n                case ContentAlignment.TopLeft:\r\n                    return new Point(r.Left, r.Top);\r\n                case ContentAlignment.TopCenter:\r\n                    return new Point(r.X + (r.Width / 2), r.Top);\r\n                case ContentAlignment.TopRight:\r\n                    return new Point(r.Right, r.Top);\r\n                case ContentAlignment.MiddleLeft:\r\n                    return new Point(r.Left, r.Top + (r.Height / 2));\r\n                case ContentAlignment.MiddleCenter:\r\n                    return new Point(r.X + (r.Width / 2), r.Top + (r.Height  / 2));\r\n                case ContentAlignment.MiddleRight:\r\n                    return new Point(r.Right, r.Top + (r.Height / 2));\r\n                case ContentAlignment.BottomLeft:\r\n                    return new Point(r.Left, r.Bottom);\r\n                case ContentAlignment.BottomCenter:\r\n                    return new Point(r.X + (r.Width / 2), r.Bottom);\r\n                case ContentAlignment.BottomRight:\r\n                    return new Point(r.Right, r.Bottom);\r\n            }\r\n            \r\n            // Should never reach here\r\n            return r.Location;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Given the item and the subitem, calculate its bounds.\r\n        /// </summary>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItem\"></param>\r\n        /// <returns></returns>\r\n        public virtual Rectangle CalculateItemBounds(OLVListItem item, OLVListSubItem subItem) {\r\n            if (item == null)\r\n                return Rectangle.Empty;\r\n\r\n            if (subItem == null)\r\n                return item.Bounds;\r\n            \r\n            return item.GetSubItemBounds(item.SubItems.IndexOf(subItem));\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// Apply any specified rotation to the Graphic content.\r\n        /// </summary>\r\n        /// <param name=\"g\">The Graphics to be transformed</param>\r\n        /// <param name=\"r\">The rotation will be around the centre of this rect</param>\r\n        protected virtual void ApplyRotation(Graphics g, Rectangle r) {\r\n            if (Rotation == 0)\r\n                return;\r\n\r\n            // THINK: Do we want to reset the transform? I think we want to push a new transform\r\n            g.ResetTransform();\r\n            Matrix m = new Matrix();\r\n            m.RotateAt(Rotation, new Point(r.Left + r.Width / 2, r.Top + r.Height / 2));\r\n            g.Transform = m;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Reverse the rotation created by ApplyRotation()\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        protected virtual void UnapplyRotation(Graphics g) {\r\n            if (Rotation != 0)\r\n                g.ResetTransform();\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// An overlay that will draw an image over the top of the ObjectListView\r\n    /// </summary>\r\n    public class ImageAdornment : GraphicAdornment\r\n    {\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the image that will be drawn\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The image that will be drawn\"),\r\n         DefaultValue(null),\r\n         NotifyParentProperty(true)]\r\n        public Image Image {\r\n            get { return image; }\r\n            set { image = value; }\r\n        }\r\n        private Image image;\r\n\r\n        /// <summary>\r\n        /// Gets or sets if the image will be shrunk to fit with its horizontal bounds\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will the image be shrunk to fit within its width?\"),\r\n         DefaultValue(false)]\r\n        public bool ShrinkToWidth {\r\n            get { return shrinkToWidth; }\r\n            set { shrinkToWidth = value; }\r\n        }\r\n        private bool shrinkToWidth;\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// Draw the image in its specified location\r\n        /// </summary>\r\n        /// <param name=\"g\">The Graphics used for drawing</param>\r\n        /// <param name=\"r\">The bounds of the rendering</param>\r\n        public virtual void DrawImage(Graphics g, Rectangle r) {\r\n            if (ShrinkToWidth)\r\n                DrawScaledImage(g, r, Image, Transparency);\r\n            else\r\n                DrawImage(g, r, Image, Transparency); \r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the image in its specified location\r\n        /// </summary>\r\n        /// <param name=\"image\">The image to be drawn</param>\r\n        /// <param name=\"g\">The Graphics used for drawing</param>\r\n        /// <param name=\"r\">The bounds of the rendering</param>\r\n        /// <param name=\"transparency\">How transparent should the image be (0 is completely transparent, 255 is opaque)</param>\r\n        public virtual void DrawImage(Graphics g, Rectangle r, Image image, int transparency) {\r\n            if (image != null)\r\n                DrawImage(g, r, image, image.Size, transparency);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the image in its specified location\r\n        /// </summary>\r\n        /// <param name=\"image\">The image to be drawn</param>\r\n        /// <param name=\"g\">The Graphics used for drawing</param>\r\n        /// <param name=\"r\">The bounds of the rendering</param>\r\n        /// <param name=\"sz\">How big should the image be?</param>\r\n        /// <param name=\"transparency\">How transparent should the image be (0 is completely transparent, 255 is opaque)</param>\r\n        public virtual void DrawImage(Graphics g, Rectangle r, Image image, Size sz, int transparency) {\r\n            if (image == null)\r\n                return;\r\n\r\n            Rectangle adornmentBounds = CreateAlignedRectangle(r, sz);\r\n            try {\r\n                ApplyRotation(g, adornmentBounds);\r\n                DrawTransparentBitmap(g, adornmentBounds, image, transparency);\r\n            }\r\n            finally {\r\n                UnapplyRotation(g);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the image in its specified location, scaled so that it is not wider\r\n        /// than the given rectangle. Height is scaled proportional to the width.\r\n        /// </summary>\r\n        /// <param name=\"image\">The image to be drawn</param>\r\n        /// <param name=\"g\">The Graphics used for drawing</param>\r\n        /// <param name=\"r\">The bounds of the rendering</param>\r\n        /// <param name=\"transparency\">How transparent should the image be (0 is completely transparent, 255 is opaque)</param>\r\n        public virtual void DrawScaledImage(Graphics g, Rectangle r, Image image, int transparency) {\r\n            if (image == null)\r\n                return;\r\n\r\n            // If the image is too wide to be drawn in the space provided, proportionally scale it down.\r\n            // Too tall images are not scaled.\r\n            Size size = image.Size;\r\n            if (image.Width > r.Width) {\r\n                float scaleRatio = (float)r.Width / (float)image.Width;\r\n                size.Height = (int)((float)image.Height * scaleRatio);\r\n                size.Width = r.Width - 1;\r\n            }\r\n\r\n            DrawImage(g, r, image, size, transparency);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Utility to draw a bitmap transparenly.\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"image\"></param>\r\n        /// <param name=\"transparency\"></param>\r\n        protected virtual void DrawTransparentBitmap(Graphics g, Rectangle r, Image image, int transparency) {\r\n            ImageAttributes imageAttributes = null;\r\n            if (transparency != 255) {\r\n                imageAttributes = new ImageAttributes();\r\n                float a = (float)transparency / 255.0f;\r\n                float[][] colorMatrixElements = {\r\n                    new float[] {1,  0,  0,  0, 0},\r\n                    new float[] {0,  1,  0,  0, 0},\r\n                    new float[] {0,  0,  1,  0, 0},\r\n                    new float[] {0,  0,  0,  a, 0},\r\n                    new float[] {0,  0,  0,  0, 1}};\r\n\r\n                imageAttributes.SetColorMatrix(new ColorMatrix(colorMatrixElements));\r\n            }\r\n\r\n            g.DrawImage(image,\r\n               r,                                          // destination rectangle\r\n               0, 0, image.Size.Width, image.Size.Height,  // source rectangle\r\n               GraphicsUnit.Pixel,\r\n               imageAttributes);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// An adornment that will draw text\r\n    /// </summary>\r\n    public class TextAdornment : GraphicAdornment\r\n    {\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the background color of the text\r\n        /// Set this to Color.Empty to not draw a background\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The background color of the text\"),\r\n         DefaultValue(typeof(Color), \"\")]\r\n        public Color BackColor {\r\n            get { return backColor; }\r\n            set { backColor = value; }\r\n        }\r\n        private Color backColor = Color.Empty;\r\n\r\n        /// <summary>\r\n        /// Gets the brush that will be used to paint the text\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public Brush BackgroundBrush {\r\n            get {\r\n                return new SolidBrush(Color.FromArgb(workingTransparency, BackColor));\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the color of the border around the billboard.\r\n        /// Set this to Color.Empty to remove the border\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The color of the border around the text\"),\r\n         DefaultValue(typeof(Color), \"\")]\r\n        public Color BorderColor {\r\n            get { return borderColor; }\r\n            set { borderColor = value; }\r\n        }\r\n        private Color borderColor = Color.Empty;\r\n\r\n        /// <summary>\r\n        /// Gets the brush that will be used to paint the text\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public Pen BorderPen {\r\n            get {\r\n                return new Pen(Color.FromArgb(workingTransparency, BorderColor), BorderWidth);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the width of the border around the text\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The width of the border around the text\"),\r\n         DefaultValue(0.0f)]\r\n        public float BorderWidth {\r\n            get { return borderWidth; }\r\n            set { borderWidth = value; }\r\n        }\r\n        private float borderWidth;\r\n\r\n        /// <summary>\r\n        /// How rounded should the corners of the border be? 0 means no rounding.\r\n        /// </summary>\r\n        /// <remarks>If this value is too large, the edges of the border will appear odd.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How rounded should the corners of the border be? 0 means no rounding.\"),\r\n         DefaultValue(16.0f),\r\n         NotifyParentProperty(true)]\r\n        public float CornerRounding {\r\n            get { return cornerRounding; }\r\n            set { cornerRounding = value; }\r\n        }\r\n        private float cornerRounding = 16.0f;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the font that will be used to draw the text\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The font that will be used to draw the text\"),\r\n         DefaultValue(null),\r\n         NotifyParentProperty(true)]\r\n        public Font Font {\r\n            get { return font; }\r\n            set { font = value; }\r\n        }\r\n        private Font font;\r\n\r\n        /// <summary>\r\n        /// Gets the font that will be used to draw the text or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public Font FontOrDefault {\r\n            get {\r\n                return Font ?? new Font(\"Tahoma\", 16);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Does this text have a background?\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public bool HasBackground {\r\n            get {\r\n                return BackColor != Color.Empty;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Does this overlay have a border?\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public bool HasBorder {\r\n            get {\r\n                return BorderColor != Color.Empty && BorderWidth > 0;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the maximum width of the text. Text longer than this will wrap.\r\n        /// 0 means no maximum.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The maximum width the text (0 means no maximum). Text longer than this will wrap\"),\r\n         DefaultValue(0)]\r\n        public int MaximumTextWidth {\r\n            get { return maximumTextWidth; }\r\n            set { maximumTextWidth = value; }\r\n        }\r\n        private int maximumTextWidth;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the formatting that should be used on the text\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual StringFormat StringFormat {\r\n            get {\r\n                if (stringFormat == null) {\r\n                    stringFormat = new StringFormat();\r\n                    stringFormat.Alignment = StringAlignment.Center;\r\n                    stringFormat.LineAlignment = StringAlignment.Center;\r\n                    stringFormat.Trimming = StringTrimming.EllipsisCharacter;\r\n                    if (!Wrap)\r\n                        stringFormat.FormatFlags = StringFormatFlags.NoWrap;\r\n                }\r\n                return stringFormat; \r\n            }\r\n            set { stringFormat = value; }\r\n        }\r\n        private StringFormat stringFormat;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the text that will be drawn\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The text that will be drawn over the top of the ListView\"),\r\n         DefaultValue(null),\r\n         NotifyParentProperty(true),\r\n         Localizable(true)]\r\n        public string Text {\r\n            get { return text; }\r\n            set { text = value; }\r\n        }\r\n        private string text;\r\n\r\n        /// <summary>\r\n        /// Gets the brush that will be used to paint the text\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public Brush TextBrush {\r\n            get {\r\n                return new SolidBrush(Color.FromArgb(workingTransparency, TextColor));\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the color of the text\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The color of the text\"),\r\n         DefaultValue(typeof(Color), \"DarkBlue\"),\r\n         NotifyParentProperty(true)]\r\n        public Color TextColor {\r\n            get { return textColor; }\r\n            set { textColor = value; }\r\n        }\r\n        private Color textColor = Color.DarkBlue;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the text will wrap when it exceeds its bounds\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Will the text wrap?\"),\r\n         DefaultValue(true)]\r\n        public bool Wrap {\r\n            get { return wrap; }\r\n            set { wrap = value; }\r\n        }\r\n        private bool wrap = true;\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        /// <summary>\r\n        /// Draw our text with our stored configuration in relation to the given\r\n        /// reference rectangle\r\n        /// </summary>\r\n        /// <param name=\"g\">The Graphics used for drawing</param>\r\n        /// <param name=\"r\">The reference rectangle in relation to which the text will be drawn</param>\r\n        public virtual void DrawText(Graphics g, Rectangle r) {\r\n            DrawText(g, r, Text, Transparency);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the given text with our stored configuration\r\n        /// </summary>\r\n        /// <param name=\"g\">The Graphics used for drawing</param>\r\n        /// <param name=\"r\">The reference rectangle in relation to which the text will be drawn</param>\r\n        /// <param name=\"s\">The text to draw</param>\r\n        /// <param name=\"transparency\">How opaque should be text be</param>\r\n        public virtual void DrawText(Graphics g, Rectangle r, string s, int transparency) {\r\n            if (String.IsNullOrEmpty(s))\r\n                return;\r\n\r\n            Rectangle textRect = CalculateTextBounds(g, r, s);\r\n            DrawBorderedText(g, textRect, s, transparency);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the text with a border\r\n        /// </summary>\r\n        /// <param name=\"g\">The Graphics used for drawing</param>\r\n        /// <param name=\"textRect\">The bounds within which the text should be drawn</param>\r\n        /// <param name=\"text\">The text to draw</param>\r\n        /// <param name=\"transparency\">How opaque should be text be</param>\r\n        protected virtual void DrawBorderedText(Graphics g, Rectangle textRect, string text, int transparency) {\r\n            Rectangle borderRect = textRect;\r\n            borderRect.Inflate((int)BorderWidth / 2, (int)BorderWidth / 2);\r\n            borderRect.Y -= 1; // Looker better a little higher\r\n\r\n            try {\r\n                ApplyRotation(g, textRect);\r\n                using (GraphicsPath path = GetRoundedRect(borderRect, CornerRounding)) {\r\n                    workingTransparency = transparency;\r\n                    if (HasBackground) {\r\n                        using (Brush b = BackgroundBrush)\r\n                            g.FillPath(b, path);\r\n                    }\r\n\r\n                    using (Brush b = TextBrush)\r\n                        g.DrawString(text, FontOrDefault, b, textRect, StringFormat);\r\n\r\n                    if (HasBorder) {\r\n                        using (Pen p = BorderPen)\r\n                            g.DrawPath(p, path);\r\n                    }\r\n                }\r\n            }\r\n            finally {\r\n                UnapplyRotation(g);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the rectangle that will be the precise bounds of the displayed text\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"s\"></param>\r\n        /// <returns>The bounds of the text</returns>\r\n        protected virtual Rectangle CalculateTextBounds(Graphics g, Rectangle r, string s) {\r\n            int maxWidth = MaximumTextWidth <= 0 ? r.Width : MaximumTextWidth;\r\n            SizeF sizeF = g.MeasureString(s, FontOrDefault, maxWidth, StringFormat);\r\n            Size size = new Size(1 + (int)sizeF.Width, 1 + (int)sizeF.Height);\r\n            return CreateAlignedRectangle(r, size);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a GraphicPath that is a round cornered rectangle\r\n        /// </summary>\r\n        /// <param name=\"rect\">The rectangle</param>\r\n        /// <param name=\"diameter\">The diameter of the corners</param>\r\n        /// <returns>A round cornered rectagle path</returns>\r\n        /// <remarks>If I could rely on people using C# 3.0+, this should be\r\n        /// an extension method of GraphicsPath.</remarks>\r\n        protected virtual GraphicsPath GetRoundedRect(Rectangle rect, float diameter) {\r\n            GraphicsPath path = new GraphicsPath();\r\n\r\n            if (diameter > 0) {\r\n                RectangleF arc = new RectangleF(rect.X, rect.Y, diameter, diameter);\r\n                path.AddArc(arc, 180, 90);\r\n                arc.X = rect.Right - diameter;\r\n                path.AddArc(arc, 270, 90);\r\n                arc.Y = rect.Bottom - diameter;\r\n                path.AddArc(arc, 0, 90);\r\n                arc.X = rect.Left;\r\n                path.AddArc(arc, 90, 90);\r\n                path.CloseFigure();\r\n            } else {\r\n                path.AddRectangle(rect);\r\n            }\r\n\r\n            return path;\r\n        }\r\n\r\n        #endregion\r\n\r\n        private int workingTransparency;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Rendering/Decorations.cs",
    "content": "﻿/*\r\n * Decorations - Images, text or other things that can be rendered onto an ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 19/08/2009 10:56 PM\r\n *\r\n * Change log:\r\n * 2011-04-04   JPP  - Added ability to have a gradient background on BorderDecoration\r\n * v2.4\r\n * 2010-04-15   JPP  - Tweaked LightBoxDecoration a little\r\n * v2.3\r\n * 2009-09-23   JPP  - Added LeftColumn and RightColumn to RowBorderDecoration\r\n * 2009-08-23   JPP  - Added LightBoxDecoration\r\n * 2009-08-19   JPP  - Initial version. Separated from Overlays.cs\r\n *\r\n * To do:\r\n *\r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System.Drawing;\r\nusing System.Drawing.Drawing2D;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A decoration is an overlay that draws itself in relation to a given row or cell.\r\n    /// Decorations scroll when the listview scrolls.\r\n    /// </summary>\r\n    public interface IDecoration : IOverlay\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the row that is to be decorated\r\n        /// </summary>\r\n        OLVListItem ListItem { get; set; }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the subitem that is to be decorated\r\n        /// </summary>\r\n        OLVListSubItem SubItem { get; set; }\r\n    }\r\n\r\n    /// <summary>\r\n    /// An AbstractDecoration is a safe do-nothing implementation of the IDecoration interface\r\n    /// </summary>\r\n    public class AbstractDecoration : IDecoration\r\n    {\r\n        #region IDecoration Members\r\n\r\n        /// <summary>\r\n        /// Gets or sets the row that is to be decorated\r\n        /// </summary>\r\n        public OLVListItem ListItem {\r\n            get { return listItem; }\r\n            set { listItem = value; }\r\n        }\r\n        private OLVListItem listItem;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the subitem that is to be decorated\r\n        /// </summary>\r\n        public OLVListSubItem SubItem {\r\n            get { return subItem; }\r\n            set { subItem = value; }\r\n        }\r\n        private OLVListSubItem subItem;\r\n\r\n        #endregion\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets the bounds of the decorations row\r\n        /// </summary>\r\n        public Rectangle RowBounds {\r\n            get {\r\n                if (ListItem == null)\r\n                    return Rectangle.Empty;\r\n                else\r\n                    return ListItem.Bounds;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get the bounds of the decorations cell\r\n        /// </summary>\r\n        public Rectangle CellBounds {\r\n            get {\r\n                if (ListItem == null || SubItem == null)\r\n                    return Rectangle.Empty;\r\n                else\r\n                    return ListItem.GetSubItemBounds(ListItem.SubItems.IndexOf(SubItem));\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region IOverlay Members\r\n\r\n        /// <summary>\r\n        /// Draw the decoration\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        public virtual void Draw(ObjectListView olv, Graphics g, Rectangle r) {\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// This decoration draws a slight tint over a column of the\r\n    /// owning listview. If no column is explicitly set, the selected\r\n    /// column in the listview will be used.\r\n    /// The selected column is normally the sort column, but does not have to be.\r\n    /// </summary>\r\n    public class TintedColumnDecoration : AbstractDecoration\r\n    {\r\n        #region Constructors\r\n\r\n        /// <summary>\r\n        /// Create a TintedColumnDecoration\r\n        /// </summary>\r\n        public TintedColumnDecoration() {\r\n            Tint = Color.FromArgb(15, Color.Blue);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a TintedColumnDecoration\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        public TintedColumnDecoration(OLVColumn column)\r\n            : this() {\r\n            ColumnToTint = column;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the column that will be tinted\r\n        /// </summary>\r\n        public OLVColumn ColumnToTint {\r\n            get { return columnToTint; }\r\n            set { columnToTint = value; }\r\n        }\r\n        private OLVColumn columnToTint;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the color that will be 'tinted' over the selected column\r\n        /// </summary>\r\n        public Color Tint {\r\n            get { return tint; }\r\n            set {\r\n                if (tint == value)\r\n                    return;\r\n\r\n                if (tintBrush != null) {\r\n                    tintBrush.Dispose();\r\n                    tintBrush = null;\r\n                }\r\n\r\n                tint = value;\r\n                tintBrush = new SolidBrush(tint);\r\n            }\r\n        }\r\n        private Color tint;\r\n        private SolidBrush tintBrush;\r\n\r\n        #endregion\r\n\r\n        #region IOverlay Members\r\n\r\n        /// <summary>\r\n        /// Draw a slight colouring over our tinted column\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This overlay only works when:\r\n        /// - the list is in Details view\r\n        /// - there is at least one row\r\n        /// - there is a selected column (or a specified tint column)\r\n        /// </remarks>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        public override void Draw(ObjectListView olv, Graphics g, Rectangle r) {\r\n\r\n            if (olv.View != View.Details)\r\n                return;\r\n\r\n            if (olv.GetItemCount() == 0)\r\n                return;\r\n\r\n            OLVColumn column = ColumnToTint ?? olv.SelectedColumn;\r\n            if (column == null)\r\n                return;\r\n\r\n            Point sides = NativeMethods.GetScrolledColumnSides(olv, column.Index);\r\n            if (sides.X == -1)\r\n                return;\r\n\r\n            Rectangle columnBounds = new Rectangle(sides.X, r.Top, sides.Y - sides.X, r.Bottom);\r\n\r\n            // Find the bottom of the last item. The tinting should extend only to there.\r\n            OLVListItem lastItem = olv.GetLastItemInDisplayOrder();\r\n            if (lastItem != null) {\r\n                Rectangle lastItemBounds = lastItem.Bounds;\r\n                if (!lastItemBounds.IsEmpty && lastItemBounds.Bottom < columnBounds.Bottom)\r\n                    columnBounds.Height = lastItemBounds.Bottom - columnBounds.Top;\r\n            }\r\n            g.FillRectangle(tintBrush, columnBounds);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// This decoration draws an optionally filled border around a rectangle.\r\n    /// Subclasses must override CalculateBounds().\r\n    /// </summary>\r\n    public class BorderDecoration : AbstractDecoration\r\n    {\r\n        #region Constructors\r\n\r\n        /// <summary>\r\n        /// Create a BorderDecoration\r\n        /// </summary>\r\n        public BorderDecoration()\r\n            : this(new Pen(Color.FromArgb(64, Color.Blue), 1)) {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a BorderDecoration\r\n        /// </summary>\r\n        /// <param name=\"borderPen\">The pen used to draw the border</param>\r\n        public BorderDecoration(Pen borderPen) {\r\n            BorderPen = borderPen;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a BorderDecoration\r\n        /// </summary>\r\n        /// <param name=\"borderPen\">The pen used to draw the border</param>\r\n        /// <param name=\"fill\">The brush used to fill the rectangle</param>\r\n        public BorderDecoration(Pen borderPen, Brush fill) {\r\n            BorderPen = borderPen;\r\n            FillBrush = fill;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the pen that will be used to draw the border\r\n        /// </summary>\r\n        public Pen BorderPen {\r\n            get { return borderPen; }\r\n            set { borderPen = value; }\r\n        }\r\n        private Pen borderPen;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the padding that will be added to the bounds of the item\r\n        /// before drawing the border and fill.\r\n        /// </summary>\r\n        public Size BoundsPadding {\r\n            get { return boundsPadding; }\r\n            set { boundsPadding = value; }\r\n        }\r\n        private Size boundsPadding = new(-1, 2);\r\n\r\n        /// <summary>\r\n        /// How rounded should the corners of the border be? 0 means no rounding.\r\n        /// </summary>\r\n        /// <remarks>If this value is too large, the edges of the border will appear odd.</remarks>\r\n        public float CornerRounding {\r\n            get { return cornerRounding; }\r\n            set { cornerRounding = value; }\r\n        }\r\n        private float cornerRounding = 16.0f;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the brush that will be used to fill the border\r\n        /// </summary>\r\n        /// <remarks>This value is ignored when using gradient brush</remarks>\r\n        public Brush FillBrush {\r\n            get { return fillBrush; }\r\n            set { fillBrush = value; }\r\n        }\r\n        private Brush fillBrush = new SolidBrush(Color.FromArgb(64, Color.Blue));\r\n\r\n        /// <summary>\r\n        /// Gets or sets the color that will be used as the start of a gradient fill.\r\n        /// </summary>\r\n        /// <remarks>This and FillGradientTo must be given value to show a gradient</remarks>\r\n        public Color? FillGradientFrom {\r\n            get { return fillGradientFrom; }\r\n            set { fillGradientFrom = value; }\r\n        }\r\n        private Color? fillGradientFrom;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the color that will be used as the end of a gradient fill.\r\n        /// </summary>\r\n        /// <remarks>This and FillGradientFrom must be given value to show a gradient</remarks>\r\n        public Color? FillGradientTo {\r\n            get { return fillGradientTo; }\r\n            set { fillGradientTo = value; }\r\n        }\r\n        private Color? fillGradientTo;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the fill mode that will be used for the gradient.\r\n        /// </summary>\r\n        public LinearGradientMode FillGradientMode {\r\n            get { return fillGradientMode; }\r\n            set { fillGradientMode = value; }\r\n        }\r\n        private LinearGradientMode fillGradientMode = LinearGradientMode.Vertical;\r\n\r\n        #endregion\r\n\r\n        #region IOverlay Members\r\n\r\n        /// <summary>\r\n        /// Draw a filled border \r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        public override void Draw(ObjectListView olv, Graphics g, Rectangle r) {\r\n            Rectangle bounds = CalculateBounds();\r\n            if (!bounds.IsEmpty)\r\n                DrawFilledBorder(g, bounds);\r\n        }\r\n        \r\n        #endregion\r\n\r\n        #region Subclass responsibility\r\n\r\n        /// <summary>\r\n        /// Subclasses should override this to say where the border should be drawn\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        protected virtual Rectangle CalculateBounds() {\r\n            return Rectangle.Empty;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation utlities\r\n\r\n        /// <summary>\r\n        /// Do the actual work of drawing the filled border\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"bounds\"></param>\r\n        protected void DrawFilledBorder(Graphics g, Rectangle bounds) {\r\n            bounds.Inflate(BoundsPadding);\r\n            GraphicsPath path = GetRoundedRect(bounds, CornerRounding);\r\n            if (FillGradientFrom != null && FillGradientTo != null) {\r\n                if (FillBrush != null)\r\n                    FillBrush.Dispose();\r\n                FillBrush = new LinearGradientBrush(bounds, FillGradientFrom.Value, FillGradientTo.Value, FillGradientMode);\r\n            }\r\n            if (FillBrush != null)\r\n                g.FillPath(FillBrush, path);\r\n            if (BorderPen != null)\r\n                g.DrawPath(BorderPen, path);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a GraphicsPath that represents a round cornered rectangle.\r\n        /// </summary>\r\n        /// <param name=\"rect\"></param>\r\n        /// <param name=\"diameter\">If this is 0 or less, the rectangle will not be rounded.</param>\r\n        /// <returns></returns>\r\n        protected GraphicsPath GetRoundedRect(RectangleF rect, float diameter) {\r\n            GraphicsPath path = new GraphicsPath();\r\n\r\n            if (diameter <= 0.0f) {\r\n                path.AddRectangle(rect);\r\n            } else {\r\n                RectangleF arc = new RectangleF(rect.X, rect.Y, diameter, diameter);\r\n                path.AddArc(arc, 180, 90);\r\n                arc.X = rect.Right - diameter;\r\n                path.AddArc(arc, 270, 90);\r\n                arc.Y = rect.Bottom - diameter;\r\n                path.AddArc(arc, 0, 90);\r\n                arc.X = rect.Left;\r\n                path.AddArc(arc, 90, 90);\r\n                path.CloseFigure();\r\n            }\r\n\r\n            return path;\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// Instances of this class draw a border around the decorated row\r\n    /// </summary>\r\n    public class RowBorderDecoration : BorderDecoration\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the index of the left most column to be used for the border\r\n        /// </summary>\r\n        public int LeftColumn {\r\n            get { return leftColumn; }\r\n            set { leftColumn = value; }\r\n        }\r\n        private int leftColumn = -1;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the index of the right most column to be used for the border\r\n        /// </summary>\r\n        public int RightColumn {\r\n            get { return rightColumn; }\r\n            set { rightColumn = value; }\r\n        }\r\n        private int rightColumn = -1;\r\n\r\n        /// <summary>\r\n        /// Calculate the boundaries of the border\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        protected override Rectangle CalculateBounds() {\r\n            Rectangle bounds = RowBounds;\r\n            if (ListItem == null)\r\n                return bounds;\r\n\r\n            if (LeftColumn >= 0) {\r\n                Rectangle leftCellBounds = ListItem.GetSubItemBounds(LeftColumn);\r\n                if (!leftCellBounds.IsEmpty) {\r\n                    bounds.Width = bounds.Right - leftCellBounds.Left;\r\n                    bounds.X = leftCellBounds.Left;\r\n                }\r\n            }\r\n\r\n            if (RightColumn >= 0) {\r\n                Rectangle rightCellBounds = ListItem.GetSubItemBounds(RightColumn);\r\n                if (!rightCellBounds.IsEmpty) {\r\n                    bounds.Width = rightCellBounds.Right - bounds.Left;\r\n                }\r\n            }\r\n\r\n            return bounds;\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// Instances of this class draw a border around the decorated subitem.\r\n    /// </summary>\r\n    public class CellBorderDecoration : BorderDecoration\r\n    {\r\n        /// <summary>\r\n        /// Calculate the boundaries of the border\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        protected override Rectangle CalculateBounds() {\r\n            return CellBounds;\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// This decoration puts a border around the cell being edited and\r\n    /// optionally \"lightboxes\" the cell (makes the rest of the control dark).\r\n    /// </summary>\r\n    public class EditingCellBorderDecoration : BorderDecoration\r\n    {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create a EditingCellBorderDecoration\r\n        /// </summary>\r\n        public EditingCellBorderDecoration() {\r\n            FillBrush = null;\r\n            BorderPen = new Pen(Color.DarkBlue, 2);\r\n            CornerRounding = 8;\r\n            BoundsPadding = new Size(10, 8);\r\n\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a EditingCellBorderDecoration\r\n        /// </summary>\r\n        /// <param name=\"useLightBox\">Should the decoration use a lighbox display style?</param>\r\n        public EditingCellBorderDecoration(bool useLightBox) : this()\r\n        {\r\n            UseLightbox = useLightBox;\r\n        }\r\n\r\n        #endregion \r\n\r\n        #region Configuration properties\r\n\r\n        /// <summary>\r\n        /// Gets or set whether the decoration should make the rest of\r\n        /// the control dark when a cell is being edited\r\n        /// </summary>\r\n        /// <remarks>If this is true, FillBrush is used to overpaint\r\n        /// the control.</remarks>\r\n        public bool UseLightbox {\r\n            get { return useLightbox; }\r\n            set {\r\n                if (useLightbox == value)\r\n                    return;\r\n                useLightbox = value;\r\n                if (useLightbox) {\r\n                    if (FillBrush == null)\r\n                        FillBrush = new SolidBrush(Color.FromArgb(64, Color.Black));\r\n                }\r\n            }\r\n        }\r\n        private bool useLightbox;\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        /// <summary>\r\n        /// Draw the decoration\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        public override void Draw(ObjectListView olv, Graphics g, Rectangle r) {\r\n            if (!olv.IsCellEditing) \r\n                return;\r\n\r\n            Rectangle bounds = olv.CellEditor.Bounds;\r\n            if (bounds.IsEmpty)\r\n                return;\r\n\r\n            bounds.Inflate(BoundsPadding);\r\n            GraphicsPath path = GetRoundedRect(bounds, CornerRounding);\r\n            if (FillBrush != null) {\r\n                if (UseLightbox) {\r\n                    using (Region newClip = new Region(r)) {\r\n                        newClip.Exclude(path);\r\n                        Region originalClip = g.Clip;\r\n                        g.Clip = newClip;\r\n                        g.FillRectangle(FillBrush, r);\r\n                        g.Clip = originalClip;\r\n                    }\r\n                } else {\r\n                    g.FillPath(FillBrush, path);\r\n                }\r\n            }\r\n            if (BorderPen != null)\r\n                g.DrawPath(BorderPen, path);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// This decoration causes everything *except* the row under the mouse to be overpainted\r\n    /// with a tint, making the row under the mouse stand out in comparison.\r\n    /// The darker and more opaque the fill color, the more obvious the\r\n    /// decorated row becomes.\r\n    /// </summary>\r\n    public class LightBoxDecoration : BorderDecoration\r\n    {\r\n        /// <summary>\r\n        /// Create a LightBoxDecoration\r\n        /// </summary>\r\n        public LightBoxDecoration() {\r\n            BoundsPadding = new Size(-1, 4);\r\n            CornerRounding = 8.0f;\r\n            FillBrush = new SolidBrush(Color.FromArgb(72, Color.Black));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw a tint over everything in the ObjectListView except the \r\n        /// row under the mouse.\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        public override void Draw(ObjectListView olv, Graphics g, Rectangle r) {\r\n            if (!r.Contains(olv.PointToClient(Cursor.Position)))\r\n                return;\r\n\r\n            Rectangle bounds = RowBounds;\r\n            if (bounds.IsEmpty) {\r\n                if (olv.View == View.Tile)\r\n                    g.FillRectangle(FillBrush, r);\r\n                return;\r\n            }\r\n\r\n            using (Region newClip = new Region(r)) {\r\n                bounds.Inflate(BoundsPadding);\r\n                newClip.Exclude(GetRoundedRect(bounds, CornerRounding));\r\n                Region originalClip = g.Clip;\r\n                g.Clip = newClip;\r\n                g.FillRectangle(FillBrush, r);\r\n                g.Clip = originalClip;\r\n            }\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// Instances of this class put an Image over the row/cell that it is decorating\r\n    /// </summary>\r\n    public class ImageDecoration : ImageAdornment, IDecoration\r\n    {\r\n        #region Constructors\r\n\r\n        /// <summary>\r\n        /// Create an image decoration\r\n        /// </summary>\r\n        public ImageDecoration() {\r\n            Alignment = ContentAlignment.MiddleRight;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create an image decoration\r\n        /// </summary>\r\n        /// <param name=\"image\"></param>\r\n        public ImageDecoration(Image image)\r\n            : this() {\r\n            Image = image;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create an image decoration\r\n        /// </summary>\r\n        /// <param name=\"image\"></param>\r\n        /// <param name=\"transparency\"></param>\r\n        public ImageDecoration(Image image, int transparency)\r\n            : this() {\r\n            Image = image;\r\n            Transparency = transparency;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create an image decoration\r\n        /// </summary>\r\n        /// <param name=\"image\"></param>\r\n        /// <param name=\"alignment\"></param>\r\n        public ImageDecoration(Image image, ContentAlignment alignment)\r\n            : this() {\r\n            Image = image;\r\n            Alignment = alignment;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create an image decoration\r\n        /// </summary>\r\n        /// <param name=\"image\"></param>\r\n        /// <param name=\"transparency\"></param>\r\n        /// <param name=\"alignment\"></param>\r\n        public ImageDecoration(Image image, int transparency, ContentAlignment alignment)\r\n            : this() {\r\n            Image = image;\r\n            Transparency = transparency;\r\n            Alignment = alignment;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region IDecoration Members\r\n\r\n        /// <summary>\r\n        /// Gets or sets the item being decorated\r\n        /// </summary>\r\n        public OLVListItem ListItem {\r\n            get { return listItem; }\r\n            set { listItem = value; }\r\n        }\r\n        private OLVListItem listItem;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the sub item being decorated\r\n        /// </summary>\r\n        public OLVListSubItem SubItem {\r\n            get { return subItem; }\r\n            set { subItem = value; }\r\n        }\r\n        private OLVListSubItem subItem;\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// Draw this decoration\r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView being decorated</param>\r\n        /// <param name=\"g\">The Graphics used for drawing</param>\r\n        /// <param name=\"r\">The bounds of the rendering</param>\r\n        public virtual void Draw(ObjectListView olv, Graphics g, Rectangle r) {\r\n            DrawImage(g, CalculateItemBounds(ListItem, SubItem));\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// Instances of this class draw some text over the row/cell that they are decorating\r\n    /// </summary>\r\n    public class TextDecoration : TextAdornment, IDecoration\r\n    {\r\n        #region Constructors\r\n\r\n        /// <summary>\r\n        /// Create a TextDecoration\r\n        /// </summary>\r\n        public TextDecoration() {\r\n            Alignment = ContentAlignment.MiddleRight;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a TextDecoration\r\n        /// </summary>\r\n        /// <param name=\"text\"></param>\r\n        public TextDecoration(string text)\r\n            : this() {\r\n            Text = text;\r\n        }\r\n        \r\n        /// <summary>\r\n        /// Create a TextDecoration\r\n        /// </summary>\r\n        /// <param name=\"text\"></param>\r\n        /// <param name=\"transparency\"></param>\r\n        public TextDecoration(string text, int transparency)\r\n            : this() {\r\n            Text = text;\r\n            Transparency = transparency;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a TextDecoration\r\n        /// </summary>\r\n        /// <param name=\"text\"></param>\r\n        /// <param name=\"alignment\"></param>\r\n        public TextDecoration(string text, ContentAlignment alignment)\r\n            : this() {\r\n            Text = text;\r\n            Alignment = alignment;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a TextDecoration\r\n        /// </summary>\r\n        /// <param name=\"text\"></param>\r\n        /// <param name=\"transparency\"></param>\r\n        /// <param name=\"alignment\"></param>\r\n        public TextDecoration(string text, int transparency, ContentAlignment alignment)\r\n            : this() {\r\n            Text = text;\r\n            Transparency = transparency;\r\n            Alignment = alignment;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region IDecoration Members\r\n\r\n        /// <summary>\r\n        /// Gets or sets the item being decorated\r\n        /// </summary>\r\n        public OLVListItem ListItem {\r\n            get { return listItem; }\r\n            set { listItem = value; }\r\n        }\r\n        private OLVListItem listItem;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the sub item being decorated\r\n        /// </summary>\r\n        public OLVListSubItem SubItem {\r\n            get { return subItem; }\r\n            set { subItem = value; }\r\n        }\r\n        private OLVListSubItem subItem;\r\n\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// Draw this decoration\r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView being decorated</param>\r\n        /// <param name=\"g\">The Graphics used for drawing</param>\r\n        /// <param name=\"r\">The bounds of the rendering</param>\r\n        public virtual void Draw(ObjectListView olv, Graphics g, Rectangle r) {\r\n            DrawText(g, CalculateItemBounds(ListItem, SubItem));\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Rendering/Overlays.cs",
    "content": "/*\r\n * Overlays - Images, text or other things that can be rendered over the top of a ListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 14/04/2009 4:36 PM\r\n *\r\n * Change log:\r\n * v2.3\r\n * 2009-08-17   JPP  - Overlays now use Adornments\r\n *                   - Added ITransparentOverlay interface. Overlays can now have separate transparency levels\r\n * 2009-08-10   JPP  - Moved decoration related code to new file\r\n * v2.2.1\r\n * 200-07-24    JPP  - TintedColumnDecoration now works when last item is a member of a collapsed\r\n *                     group (well, it no longer crashes).\r\n * v2.2\r\n * 2009-06-01   JPP  - Make sure that TintedColumnDecoration reaches to the last item in group view\r\n * 2009-05-05   JPP  - Unified BillboardOverlay text rendering with that of TextOverlay\r\n * 2009-04-30   JPP  - Added TintedColumnDecoration\r\n * 2009-04-14   JPP  - Initial version\r\n *\r\n * To do:\r\n *\r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.ComponentModel;\r\nusing System.Drawing;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// The interface for an object which can draw itself over the top of\r\n    /// an ObjectListView.\r\n    /// </summary>\r\n    public interface IOverlay\r\n    {\r\n        /// <summary>\r\n        /// Draw this overlay\r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView that is being overlaid</param>\r\n        /// <param name=\"g\">The Graphics onto the given OLV</param>\r\n        /// <param name=\"r\">The content area of the OLV</param>\r\n        void Draw(ObjectListView olv, Graphics g, Rectangle r);\r\n    }\r\n\r\n    /// <summary>\r\n    /// An interface for an overlay that supports variable levels of transparency\r\n    /// </summary>\r\n    public interface ITransparentOverlay : IOverlay\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the transparency of the overlay. \r\n        /// 0 is completely transparent, 255 is completely opaque.\r\n        /// </summary>\r\n        int Transparency { get; set; }\r\n    }\r\n\r\n    /// <summary>\r\n    /// A null implementation of the IOverlay interface\r\n    /// </summary>\r\n    public class AbstractOverlay : ITransparentOverlay\r\n    {\r\n        #region IOverlay Members\r\n\r\n        /// <summary>\r\n        /// Draw this overlay\r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView that is being overlaid</param>\r\n        /// <param name=\"g\">The Graphics onto the given OLV</param>\r\n        /// <param name=\"r\">The content area of the OLV</param>\r\n        public virtual void Draw(ObjectListView olv, Graphics g, Rectangle r) {\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region ITransparentOverlay Members\r\n\r\n        /// <summary>\r\n        /// How transparent should this overlay be?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How transparent should this overlay be\"),\r\n         DefaultValue(128),\r\n         NotifyParentProperty(true)]\r\n        public int Transparency {\r\n            get { return transparency; }\r\n            set { transparency = Math.Min(255, Math.Max(0, value)); }\r\n        }\r\n        private int transparency = 128;\r\n\r\n        #endregion\r\n    }\r\n    \r\n    /// <summary>\r\n    /// An overlay that will draw an image over the top of the ObjectListView\r\n    /// </summary>\r\n    [TypeConverter(\"BrightIdeasSoftware.Design.OverlayConverter\")]\r\n    public class ImageOverlay : ImageAdornment, ITransparentOverlay\r\n    {\r\n        /// <summary>\r\n        /// Create an ImageOverlay\r\n        /// </summary>\r\n        public ImageOverlay() {\r\n            Alignment = ContentAlignment.BottomRight;\r\n        }\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the horizontal inset by which the position of the overlay will be adjusted\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The horizontal inset by which the position of the overlay will be adjusted\"),\r\n         DefaultValue(20),\r\n         NotifyParentProperty(true)]\r\n        public int InsetX {\r\n            get { return insetX; }\r\n            set { insetX = Math.Max(0, value); }\r\n        }\r\n        private int insetX = 20;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the vertical inset by which the position of the overlay will be adjusted\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Gets or sets the vertical inset by which the position of the overlay will be adjusted\"),\r\n         DefaultValue(20),\r\n         NotifyParentProperty(true)]\r\n        public int InsetY {\r\n            get { return insetY; }\r\n            set { insetY = Math.Max(0, value); }\r\n        }\r\n        private int insetY = 20;\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// Draw this overlay\r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView being decorated</param>\r\n        /// <param name=\"g\">The Graphics used for drawing</param>\r\n        /// <param name=\"r\">The bounds of the rendering</param>\r\n        public virtual void Draw(ObjectListView olv, Graphics g, Rectangle r) {\r\n            Rectangle insetRect = r;\r\n            insetRect.Inflate(-InsetX, -InsetY);\r\n\r\n            // We hard code a transparency of 255 here since transparency is handled by the glass panel\r\n            DrawImage(g, insetRect, Image, 255);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// An overlay that will draw text over the top of the ObjectListView\r\n    /// </summary>\r\n    [TypeConverter(\"BrightIdeasSoftware.Design.OverlayConverter\")]\r\n    public class TextOverlay : TextAdornment, ITransparentOverlay\r\n    {\r\n        /// <summary>\r\n        /// Create a TextOverlay\r\n        /// </summary>\r\n        public TextOverlay() {\r\n            Alignment = ContentAlignment.BottomRight;\r\n        }\r\n\r\n        #region Public properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets the horizontal inset by which the position of the overlay will be adjusted\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The horizontal inset by which the position of the overlay will be adjusted\"),\r\n         DefaultValue(20),\r\n         NotifyParentProperty(true)]\r\n        public int InsetX {\r\n            get { return insetX; }\r\n            set { insetX = Math.Max(0, value); }\r\n        }\r\n        private int insetX = 20;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the vertical inset by which the position of the overlay will be adjusted\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Gets or sets the vertical inset by which the position of the overlay will be adjusted\"),\r\n         DefaultValue(20),\r\n         NotifyParentProperty(true)]\r\n        public int InsetY {\r\n            get { return insetY; }\r\n            set { insetY = Math.Max(0, value); }\r\n        }\r\n        private int insetY = 20;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the border will be drawn with rounded corners\r\n        /// </summary>\r\n        [Browsable(false),\r\n         Obsolete(\"Use CornerRounding instead\", false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool RoundCorneredBorder {\r\n            get { return CornerRounding > 0; }\r\n            set {\r\n                if (value)\r\n                    CornerRounding = 16.0f;\r\n                else\r\n                    CornerRounding = 0.0f;\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// Draw this overlay\r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView being decorated</param>\r\n        /// <param name=\"g\">The Graphics used for drawing</param>\r\n        /// <param name=\"r\">The bounds of the rendering</param>\r\n        public virtual void Draw(ObjectListView olv, Graphics g, Rectangle r) {\r\n            if (String.IsNullOrEmpty(Text))\r\n                return;\r\n\r\n            Rectangle insetRect = r;\r\n            insetRect.Inflate(-InsetX, -InsetY);\r\n            // We hard code a transparency of 255 here since transparency is handled by the glass panel\r\n            DrawText(g, insetRect, Text, 255);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// A Billboard overlay is a TextOverlay positioned at an absolute point\r\n    /// </summary>\r\n    public class BillboardOverlay : TextOverlay\r\n    {\r\n        /// <summary>\r\n        /// Create a BillboardOverlay\r\n        /// </summary>\r\n        public BillboardOverlay() {\r\n            Transparency = 255;\r\n            BackColor = Color.PeachPuff;\r\n            TextColor = Color.Black;\r\n            BorderColor = Color.Empty;\r\n            Font = new Font(\"Tahoma\", 10);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets where should the top left of the billboard be placed\r\n        /// </summary>\r\n        public Point Location {\r\n            get { return location; }\r\n            set { location = value; }\r\n        }\r\n        private Point location;\r\n\r\n        /// <summary>\r\n        /// Draw this overlay\r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView being decorated</param>\r\n        /// <param name=\"g\">The Graphics used for drawing</param>\r\n        /// <param name=\"r\">The bounds of the rendering</param>\r\n        public override void Draw(ObjectListView olv, Graphics g, Rectangle r) {\r\n            if (String.IsNullOrEmpty(Text))\r\n                return;\r\n\r\n            // Calculate the bounds of the text, and then move it to where it should be\r\n            Rectangle textRect = CalculateTextBounds(g, r, Text);\r\n            textRect.Location = Location;\r\n\r\n            // Make sure the billboard is within the bounds of the List, as far as is possible\r\n            if (textRect.Right > r.Width)\r\n                textRect.X = Math.Max(r.Left, r.Width - textRect.Width);\r\n            if (textRect.Bottom > r.Height)\r\n                textRect.Y = Math.Max(r.Top, r.Height - textRect.Height);\r\n\r\n            DrawBorderedText(g, textRect, Text, 255);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Rendering/Renderers.cs",
    "content": "/*\r\n * Renderers - A collection of useful renderers that are used to owner draw a cell in an ObjectListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 27/09/2008 9:15 AM\r\n *\r\n * Change log: \r\n * v2.9\r\n * 2015-08-22   JPP  - Allow selected row back/fore colours to be specified for each row\r\n * 2015-06-23   JPP  - Added ColumnButtonRenderer plus general support for Buttons\r\n * 2015-06-22   JPP  - Added BaseRenderer.ConfigureItem() and ConfigureSubItem() to easily allow\r\n *                     other renderers to be chained for use within a primary renderer.\r\n *                   - Lots of tightening of hit tests and edit rectangles\r\n * 2015-05-15   JPP  - Handle renderering an Image when that Image is returned as an aspect.\r\n * v2.8\r\n * 2014-09-26   JPP  - Dispose of animation timer in a more robust fashion.\r\n * 2014-05-20   JPP  - Handle rendering disabled rows\r\n * v2.7\r\n * 2013-04-29   JPP  - Fixed bug where Images were not vertically aligned\r\n * v2.6\r\n * 2012-10-26   JPP  - Hit detection will no longer report check box hits on columns without checkboxes.\r\n * 2012-07-13   JPP  - [Breaking change] Added preferedSize parameter to IRenderer.GetEditRectangle().\r\n * v2.5.1\r\n * 2012-07-14   JPP  - Added CellPadding to various places. Replaced DescribedTaskRenderer.CellPadding.\r\n * 2012-07-11   JPP  - Added CellVerticalAlignment to various places allow cell contents to be vertically\r\n *                     aligned (rather than always being centered).\r\n * v2.5\r\n * 2010-08-24   JPP  - CheckBoxRenderer handles hot boxes and correctly vertically centers the box.\r\n * 2010-06-23   JPP  - Major rework of HighlightTextRenderer. Now uses TextMatchFilter directly.\r\n *                     Draw highlighting underneath text to improve legibility. Works with new\r\n *                     TextMatchFilter capabilities.\r\n * v2.4\r\n * 2009-10-30   JPP  - Plugged possible resource leak by using using() with CreateGraphics()\r\n * v2.3\r\n * 2009-09-28   JPP  - Added DescribedTaskRenderer\r\n * 2009-09-01   JPP  - Correctly handle an ImageRenderer's handling of an aspect that holds\r\n *                     the image to be displayed at Byte[].\r\n * 2009-08-29   JPP  - Fixed bug where some of a cell's background was not erased. \r\n * 2009-08-15   JPP  - Correctly MeasureText() using the appropriate graphic context\r\n *                   - Handle translucent selection setting\r\n * v2.2.1\r\n * 2009-07-24   JPP  - Try to honour CanWrap setting when GDI rendering text.\r\n * 2009-07-11   JPP  - Correctly calculate edit rectangle for subitems of a tree view\r\n *                     (previously subitems were indented in the same way as the primary column)\r\n * v2.2\r\n * 2009-06-06   JPP  - Tweaked text rendering so that column 0 isn't ellipsed unnecessarily.\r\n * 2009-05-05   JPP  - Added Unfocused foreground and background colors \r\n *                     (thanks to Christophe Hosten)\r\n * 2009-04-21   JPP  - Fixed off-by-1 error when calculating text widths. This caused\r\n *                     middle and right aligned columns to always wrap one character\r\n *                     when printed using ListViewPrinter (SF#2776634).\r\n * 2009-04-11   JPP  - Correctly renderer checkboxes when RowHeight is non-standard\r\n * 2009-04-06   JPP  - Allow for item indent when calculating edit rectangle\r\n * v2.1\r\n * 2009-02-24   JPP  - Work properly with ListViewPrinter again\r\n * 2009-01-26   JPP  - AUSTRALIA DAY (why aren't I on holidays!)\r\n *                   - Major overhaul of renderers. Now uses IRenderer interface.\r\n *                   - ImagesRenderer and FlagsRenderer<T> are now defunct.\r\n *                     The names are retained for backward compatibility.\r\n * 2009-01-23   JPP  - Align bitmap AND text according to column alignment (previously\r\n *                     only text was aligned and bitmap was always to the left).\r\n * 2009-01-21   JPP  - Changed to use TextRenderer rather than native GDI routines.\r\n * 2009-01-20   JPP  - Draw images directly from image list if possible. 30% faster!\r\n *                   - Tweaked some spacings to look more like native ListView\r\n *                   - Text highlight for non FullRowSelect is now the right color\r\n *                     when the control doesn't have focus.\r\n *                   - Commented out experimental animations. Still needs work.\r\n * 2009-01-19   JPP  - Changed to draw text using GDI routines. Looks more like\r\n *                     native control this way. Set UseGdiTextRendering to false to \r\n *                     revert to previous behavior.\r\n * 2009-01-15   JPP  - Draw background correctly when control is disabled\r\n *                   - Render checkboxes using CheckBoxRenderer\r\n * v2.0.1\r\n * 2008-12-29   JPP  - Render text correctly when HideSelection is true.\r\n * 2008-12-26   JPP  - BaseRenderer now works correctly in all Views\r\n * 2008-12-23   JPP  - Fixed two small bugs in BarRenderer\r\n * v2.0\r\n * 2008-10-26   JPP  - Don't owner draw when in Design mode\r\n * 2008-09-27   JPP  - Separated from ObjectListView.cs\r\n * \r\n * Copyright (C) 2006-2014 Phillip Piper\r\n * \r\n * TO DO:\r\n * - Hit detection on renderers doesn't change the controls standard selection behavior\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Diagnostics;\r\nusing System.Drawing;\r\nusing System.Drawing.Drawing2D;\r\nusing System.Drawing.Imaging;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Threading;\r\nusing System.Windows.Forms;\r\nusing System.Windows.Forms.VisualStyles;\r\nusing Timer = System.Threading.Timer;\r\n\r\nnamespace BrightIdeasSoftware {\r\n    /// <summary>\r\n    /// Renderers are the mechanism used for owner drawing cells. As such, they can also handle\r\n    /// hit detection and positioning of cell editing rectangles.\r\n    /// </summary>\r\n    public interface IRenderer {\r\n        /// <summary>\r\n        /// Render the whole item within an ObjectListView. This is only used in non-Details views.\r\n        /// </summary>\r\n        /// <param name=\"e\">The event</param>\r\n        /// <param name=\"g\">A Graphics for rendering</param>\r\n        /// <param name=\"itemBounds\">The bounds of the item</param>\r\n        /// <param name=\"rowObject\">The model object to be drawn</param>\r\n        /// <returns>Return true to indicate that the event was handled and no further processing is needed.</returns>\r\n        bool RenderItem(DrawListViewItemEventArgs e, Graphics g, Rectangle itemBounds, Object rowObject);\r\n\r\n        /// <summary>\r\n        /// Render one cell within an ObjectListView when it is in Details mode.\r\n        /// </summary>\r\n        /// <param name=\"e\">The event</param>\r\n        /// <param name=\"g\">A Graphics for rendering</param>\r\n        /// <param name=\"cellBounds\">The bounds of the cell</param>\r\n        /// <param name=\"rowObject\">The model object to be drawn</param>\r\n        /// <returns>Return true to indicate that the event was handled and no further processing is needed.</returns>\r\n        bool RenderSubItem(DrawListViewSubItemEventArgs e, Graphics g, Rectangle cellBounds, Object rowObject);\r\n\r\n        /// <summary>\r\n        /// What is under the given point?\r\n        /// </summary>\r\n        /// <param name=\"hti\"></param>\r\n        /// <param name=\"x\">x co-ordinate</param>\r\n        /// <param name=\"y\">y co-ordinate</param>\r\n        /// <remarks>This method should only alter HitTestLocation and/or UserData.</remarks>\r\n        void HitTest(OlvListViewHitTestInfo hti, int x, int y);\r\n\r\n        /// <summary>\r\n        /// When the value in the given cell is to be edited, where should the edit rectangle be placed?\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        /// <param name=\"preferredSize\"> </param>\r\n        /// <returns></returns>\r\n        Rectangle GetEditRectangle(Graphics g, Rectangle cellBounds, OLVListItem item, int subItemIndex, Size preferredSize);\r\n    }\r\n\r\n    /// <summary>\r\n    /// Renderers that implement this interface will have the filter property updated,\r\n    /// each time the filter on the ObjectListView is updated.\r\n    /// </summary>\r\n    public interface IFilterAwareRenderer\r\n    {\r\n        IModelFilter Filter { get; set; }\r\n    }\r\n\r\n    /// <summary>\r\n    /// An AbstractRenderer is a do-nothing implementation of the IRenderer interface.\r\n    /// </summary>\r\n    [Browsable(true),\r\n     ToolboxItem(false)]\r\n    public class AbstractRenderer : Component, IRenderer {\r\n        #region IRenderer Members\r\n\r\n        /// <summary>\r\n        /// Render the whole item within an ObjectListView. This is only used in non-Details views.\r\n        /// </summary>\r\n        /// <param name=\"e\">The event</param>\r\n        /// <param name=\"g\">A Graphics for rendering</param>\r\n        /// <param name=\"itemBounds\">The bounds of the item</param>\r\n        /// <param name=\"rowObject\">The model object to be drawn</param>\r\n        /// <returns>Return true to indicate that the event was handled and no further processing is needed.</returns>\r\n        public virtual bool RenderItem(DrawListViewItemEventArgs e, Graphics g, Rectangle itemBounds, object rowObject) {\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Render one cell within an ObjectListView when it is in Details mode.\r\n        /// </summary>\r\n        /// <param name=\"e\">The event</param>\r\n        /// <param name=\"g\">A Graphics for rendering</param>\r\n        /// <param name=\"cellBounds\">The bounds of the cell</param>\r\n        /// <param name=\"rowObject\">The model object to be drawn</param>\r\n        /// <returns>Return true to indicate that the event was handled and no further processing is needed.</returns>\r\n        public virtual bool RenderSubItem(DrawListViewSubItemEventArgs e, Graphics g, Rectangle cellBounds, object rowObject) {\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// What is under the given point?\r\n        /// </summary>\r\n        /// <param name=\"hti\"></param>\r\n        /// <param name=\"x\">x co-ordinate</param>\r\n        /// <param name=\"y\">y co-ordinate</param>\r\n        /// <remarks>This method should only alter HitTestLocation and/or UserData.</remarks>\r\n        public virtual void HitTest(OlvListViewHitTestInfo hti, int x, int y) {}\r\n\r\n        /// <summary>\r\n        /// When the value in the given cell is to be edited, where should the edit rectangle be placed?\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        /// <param name=\"preferredSize\"> </param>\r\n        /// <returns></returns>\r\n        public virtual Rectangle GetEditRectangle(Graphics g, Rectangle cellBounds, OLVListItem item, int subItemIndex, Size preferredSize) {\r\n            return cellBounds;\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// This class provides compatibility for v1 RendererDelegates\r\n    /// </summary>\r\n    [ToolboxItem(false)]\r\n    internal class Version1Renderer : AbstractRenderer {\r\n        public Version1Renderer(RenderDelegate renderDelegate) {\r\n            RenderDelegate = renderDelegate;\r\n        }\r\n\r\n        /// <summary>\r\n        /// The renderer delegate that this renderer wraps\r\n        /// </summary>\r\n        public RenderDelegate RenderDelegate;\r\n\r\n        #region IRenderer Members\r\n\r\n        public override bool RenderSubItem(DrawListViewSubItemEventArgs e, Graphics g, Rectangle cellBounds, object rowObject) {\r\n            if (RenderDelegate == null)\r\n                return base.RenderSubItem(e, g, cellBounds, rowObject);\r\n            else\r\n                return RenderDelegate(e, g, cellBounds, rowObject);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// A BaseRenderer provides useful base level functionality for any custom renderer.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>Subclasses will normally override the Render or OptionalRender method, and use the other\r\n    /// methods as helper functions.</para>\r\n    /// </remarks>\r\n    [Browsable(true),\r\n     ToolboxItem(true)]\r\n    public class BaseRenderer : AbstractRenderer {\r\n        internal const TextFormatFlags NormalTextFormatFlags = TextFormatFlags.NoPrefix |\r\n                                                               TextFormatFlags.EndEllipsis |\r\n                                                               TextFormatFlags.PreserveGraphicsTranslateTransform;\r\n\r\n        #region Configuration Properties\r\n\r\n        /// <summary>\r\n        /// Can the renderer wrap lines that do not fit completely within the cell?\r\n        /// </summary>\r\n        /// <remarks>Wrapping text doesn't work with the GDI renderer.</remarks>\r\n        [Category(\"Appearance\"),\r\n         Description(\"Can the renderer wrap text that does not fit completely within the cell\"),\r\n         DefaultValue(false)]\r\n        public bool CanWrap {\r\n            get { return canWrap; }\r\n            set {\r\n                canWrap = value;\r\n                if (canWrap)\r\n                    UseGdiTextRendering = false;\r\n            }\r\n        }\r\n        private bool canWrap;\r\n\r\n        /// <summary>\r\n        /// Gets or sets how many pixels will be left blank around this cell\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This setting only takes effect when the control is owner drawn.\r\n        /// </para>\r\n        /// <para><see cref=\"ObjectListView.CellPadding\"/> for more details.</para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The number of pixels that renderer will leave empty around the edge of the cell\"),\r\n         DefaultValue(null)]\r\n        public Rectangle? CellPadding {\r\n            get { return cellPadding; }\r\n            set { cellPadding = value; }\r\n        }\r\n        private Rectangle? cellPadding;\r\n\r\n        /// <summary>\r\n        /// Gets the horiztonal alignment of the column\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public HorizontalAlignment CellHorizontalAlignment\r\n        {\r\n            get { return Column == null ? HorizontalAlignment.Left : Column.TextAlign; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets how cells drawn by this renderer will be vertically aligned.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If this is not set, the value from the column or control itself will be used.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How will cell values be vertically aligned?\"),\r\n         DefaultValue(null)]\r\n        public virtual StringAlignment? CellVerticalAlignment {\r\n            get { return cellVerticalAlignment; }\r\n            set { cellVerticalAlignment = value; }\r\n        }\r\n        private StringAlignment? cellVerticalAlignment;\r\n\r\n        /// <summary>\r\n        /// Gets the optional padding that this renderer should apply before drawing.\r\n        /// This property considers all possible sources of padding\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        protected virtual Rectangle? EffectiveCellPadding {\r\n            get {\r\n                if (cellPadding.HasValue)\r\n                    return cellPadding.Value;\r\n\r\n                if (OLVSubItem != null && OLVSubItem.CellPadding.HasValue)\r\n                    return OLVSubItem.CellPadding.Value;\r\n\r\n                if (ListItem != null && ListItem.CellPadding.HasValue)\r\n                    return ListItem.CellPadding.Value;\r\n\r\n                if (Column != null && Column.CellPadding.HasValue)\r\n                    return Column.CellPadding.Value;\r\n\r\n                if (ListView != null && ListView.CellPadding.HasValue)\r\n                    return ListView.CellPadding.Value;\r\n\r\n                return null;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the vertical cell alignment that should govern the rendering.\r\n        /// This property considers all possible sources.\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        protected virtual StringAlignment EffectiveCellVerticalAlignment {\r\n            get {\r\n                if (cellVerticalAlignment.HasValue)\r\n                    return cellVerticalAlignment.Value;\r\n\r\n                if (OLVSubItem != null && OLVSubItem.CellVerticalAlignment.HasValue)\r\n                    return OLVSubItem.CellVerticalAlignment.Value;\r\n\r\n                if (ListItem != null && ListItem.CellVerticalAlignment.HasValue)\r\n                    return ListItem.CellVerticalAlignment.Value;\r\n\r\n                if (Column != null && Column.CellVerticalAlignment.HasValue)\r\n                    return Column.CellVerticalAlignment.Value;\r\n\r\n                if (ListView != null)\r\n                    return ListView.CellVerticalAlignment;\r\n\r\n                return StringAlignment.Center;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the image list from which keyed images will be fetched\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         Description(\"The image list from which keyed images will be fetched for drawing. If this is not given, the small ImageList from the ObjectListView will be used\"),\r\n         DefaultValue(null)]\r\n        public ImageList ImageList {\r\n            get { return imageList; }\r\n            set { imageList = value; }\r\n        }\r\n\r\n        private ImageList imageList;\r\n\r\n        /// <summary>\r\n        /// When rendering multiple images, how many pixels should be between each image?\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         Description(\"When rendering multiple images, how many pixels should be between each image?\"),\r\n         DefaultValue(1)]\r\n        public int Spacing {\r\n            get { return spacing; }\r\n            set { spacing = value; }\r\n        }\r\n\r\n        private int spacing = 1;\r\n\r\n        /// <summary>\r\n        /// Should text be rendered using GDI routines? This makes the text look more\r\n        /// like a native List view control.\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         Description(\"Should text be rendered using GDI routines?\"),\r\n         DefaultValue(true)]\r\n        public virtual bool UseGdiTextRendering {\r\n            get {\r\n                // Can't use GDI routines on a GDI+ printer context\r\n                return !IsPrinting && useGdiTextRendering;\r\n            }\r\n            set { useGdiTextRendering = value; }\r\n        }\r\n        private bool useGdiTextRendering = true;\r\n\r\n        #endregion\r\n\r\n        #region State Properties\r\n\r\n        /// <summary>\r\n        /// Get or set the aspect of the model object that this renderer should draw\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Object Aspect {\r\n            get {\r\n                if (aspect == null)\r\n                    aspect = column.GetValue(rowObject);\r\n                return aspect;\r\n            }\r\n            set { aspect = value; }\r\n        }\r\n\r\n        private Object aspect;\r\n\r\n        /// <summary>\r\n        /// What are the bounds of the cell that is being drawn?\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Rectangle Bounds {\r\n            get { return bounds; }\r\n            set { bounds = value; }\r\n        }\r\n\r\n        private Rectangle bounds;\r\n\r\n        /// <summary>\r\n        /// Get or set the OLVColumn that this renderer will draw\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public OLVColumn Column {\r\n            get { return column; }\r\n            set { column = value; }\r\n        }\r\n\r\n        private OLVColumn column;\r\n\r\n        /// <summary>\r\n        /// Get/set the event that caused this renderer to be called\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public DrawListViewItemEventArgs DrawItemEvent {\r\n            get { return drawItemEventArgs; }\r\n            set { drawItemEventArgs = value; }\r\n        }\r\n\r\n        private DrawListViewItemEventArgs drawItemEventArgs;\r\n\r\n        /// <summary>\r\n        /// Get/set the event that caused this renderer to be called\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public DrawListViewSubItemEventArgs Event {\r\n            get { return eventArgs; }\r\n            set { eventArgs = value; }\r\n        }\r\n\r\n        private DrawListViewSubItemEventArgs eventArgs;\r\n\r\n        /// <summary>\r\n        /// Gets or  sets the font to be used for text in this cell\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Font Font {\r\n            get {\r\n                if (font != null || ListItem == null)\r\n                    return font;\r\n\r\n                if (SubItem == null || ListItem.UseItemStyleForSubItems)\r\n                    return ListItem.Font;\r\n\r\n                return SubItem.Font;\r\n            }\r\n            set { font = value; }\r\n        }\r\n\r\n        private Font font;\r\n\r\n        /// <summary>\r\n        /// Gets the image list from which keyed images will be fetched\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public ImageList ImageListOrDefault {\r\n            get { return ImageList ?? ListView.SmallImageList; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should this renderer fill in the background before drawing?\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool IsDrawBackground {\r\n            get { return !IsPrinting; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Cache whether or not our item is selected\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool IsItemSelected {\r\n            get { return isItemSelected; }\r\n            set { isItemSelected = value; }\r\n        }\r\n\r\n        private bool isItemSelected;\r\n\r\n        /// <summary>\r\n        /// Is this renderer being used on a printer context?\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool IsPrinting {\r\n            get { return isPrinting; }\r\n            set { isPrinting = value; }\r\n        }\r\n\r\n        private bool isPrinting;\r\n\r\n        /// <summary>\r\n        /// Get or set the listitem that this renderer will be drawing\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public OLVListItem ListItem {\r\n            get { return listItem; }\r\n            set { listItem = value; }\r\n        }\r\n\r\n        private OLVListItem listItem;\r\n\r\n        /// <summary>\r\n        /// Get/set the listview for which the drawing is to be done\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public ObjectListView ListView {\r\n            get { return objectListView; }\r\n            set { objectListView = value; }\r\n        }\r\n\r\n        private ObjectListView objectListView;\r\n\r\n        /// <summary>\r\n        /// Get the specialized OLVSubItem that this renderer is drawing\r\n        /// </summary>\r\n        /// <remarks>This returns null for column 0.</remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public OLVListSubItem OLVSubItem {\r\n            get { return listSubItem; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the model object that this renderer should draw\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Object RowObject {\r\n            get { return rowObject; }\r\n            set { rowObject = value; }\r\n        }\r\n\r\n        private Object rowObject;\r\n\r\n        /// <summary>\r\n        /// Get or set the list subitem that this renderer will be drawing\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public OLVListSubItem SubItem {\r\n            get { return listSubItem; }\r\n            set { listSubItem = value; }\r\n        }\r\n\r\n        private OLVListSubItem listSubItem;\r\n\r\n        /// <summary>\r\n        /// The brush that will be used to paint the text\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Brush TextBrush {\r\n            get {\r\n                if (textBrush == null)\r\n                    return new SolidBrush(GetForegroundColor());\r\n                else\r\n                    return textBrush;\r\n            }\r\n            set { textBrush = value; }\r\n        }\r\n\r\n        private Brush textBrush;\r\n\r\n        /// <summary>\r\n        /// Will this renderer use the custom images from the parent ObjectListView\r\n        /// to draw the checkbox images.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If this is true, the renderer will use the images from the \r\n        /// StateImageList to represent checkboxes. 0 - unchecked, 1 - checked, 2 - indeterminate.\r\n        /// </para>\r\n        /// <para>If this is false (the default), then the renderer will use .NET's standard\r\n        /// CheckBoxRenderer.</para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool UseCustomCheckboxImages {\r\n            get { return useCustomCheckboxImages; }\r\n            set { useCustomCheckboxImages = value; }\r\n        }\r\n\r\n        private bool useCustomCheckboxImages;\r\n\r\n        private void ClearState() {\r\n            Event = null;\r\n            DrawItemEvent = null;\r\n            Aspect = null;\r\n            Font = null;\r\n            TextBrush = null;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Utilities\r\n\r\n        /// <summary>\r\n        /// Align the second rectangle with the first rectangle,\r\n        /// according to the alignment of the column\r\n        /// </summary>\r\n        /// <param name=\"outer\">The cell's bounds</param>\r\n        /// <param name=\"inner\">The rectangle to be aligned within the bounds</param>\r\n        /// <returns>An aligned rectangle</returns>\r\n        protected virtual Rectangle AlignRectangle(Rectangle outer, Rectangle inner) {\r\n            Rectangle r = new Rectangle(outer.Location, inner.Size);\r\n\r\n            // Align horizontally depending on the column alignment\r\n            if (inner.Width < outer.Width) {\r\n                r.X = AlignHorizontally(outer, inner);\r\n            }\r\n\r\n            // Align vertically too\r\n            if (inner.Height < outer.Height) {\r\n                r.Y = AlignVertically(outer, inner);\r\n            }\r\n\r\n            return r;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate the left edge of the rectangle that aligns the outer rectangle with the inner one \r\n        /// according to this renderer's horizontal alignment\r\n        /// </summary>\r\n        /// <param name=\"outer\"></param>\r\n        /// <param name=\"inner\"></param>\r\n        /// <returns></returns>\r\n        protected int AlignHorizontally(Rectangle outer, Rectangle inner) {\r\n            HorizontalAlignment alignment = CellHorizontalAlignment;\r\n            switch (alignment) {\r\n                case HorizontalAlignment.Left:\r\n                    return outer.Left + 1;\r\n                case HorizontalAlignment.Center:\r\n                    return outer.Left + ((outer.Width - inner.Width) / 2);\r\n                case HorizontalAlignment.Right:\r\n                    return outer.Right - inner.Width - 1;\r\n                default:\r\n                    throw new ArgumentOutOfRangeException();\r\n            }\r\n        }\r\n\r\n\r\n        /// <summary>\r\n        /// Calculate the top of the rectangle that aligns the outer rectangle with the inner rectangle\r\n        /// according to this renders vertical alignment\r\n        /// </summary>\r\n        /// <param name=\"outer\"></param>\r\n        /// <param name=\"inner\"></param>\r\n        /// <returns></returns>\r\n        protected int AlignVertically(Rectangle outer, Rectangle inner) {\r\n            return AlignVertically(outer, inner.Height);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate the top of the rectangle that aligns the outer rectangle with a rectangle of the given height\r\n        /// according to this renderer's vertical alignment\r\n        /// </summary>\r\n        /// <param name=\"outer\"></param>\r\n        /// <param name=\"innerHeight\"></param>\r\n        /// <returns></returns>\r\n        protected int AlignVertically(Rectangle outer, int innerHeight) {\r\n            switch (EffectiveCellVerticalAlignment) {\r\n                case StringAlignment.Near:\r\n                    return outer.Top + 1;\r\n                case StringAlignment.Center:\r\n                    return outer.Top + ((outer.Height - innerHeight) / 2);\r\n                case StringAlignment.Far:\r\n                    return outer.Bottom - innerHeight - 1;\r\n                default:\r\n                    throw new ArgumentOutOfRangeException();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate the space that our rendering will occupy and then align that space\r\n        /// with the given rectangle, according to the Column alignment\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\">Pre-padded bounds of the cell</param>\r\n        /// <returns></returns>\r\n        protected virtual Rectangle CalculateAlignedRectangle(Graphics g, Rectangle r) {\r\n            if (Column == null)\r\n                return r;\r\n\r\n            Rectangle contentRectangle = new Rectangle(Point.Empty, CalculateContentSize(g, r));\r\n            return AlignRectangle(r, contentRectangle);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate the size of the content of this cell.\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\">Pre-padded bounds of the cell</param>\r\n        /// <returns>The width and height of the content</returns>\r\n        protected virtual Size CalculateContentSize(Graphics g, Rectangle r)\r\n        {\r\n            Size checkBoxSize = CalculatePrimaryCheckBoxSize(g);\r\n            Size imageSize = CalculateImageSize(g, GetImageSelector());\r\n            Size textSize = CalculateTextSize(g, GetText(), r.Width - (checkBoxSize.Width + imageSize.Width));\r\n\r\n            // If the combined width is greater than the whole cell,  we just use the cell itself\r\n\r\n            int width = Math.Min(r.Width, checkBoxSize.Width + imageSize.Width + textSize.Width);\r\n            int componentMaxHeight = Math.Max(checkBoxSize.Height, Math.Max(imageSize.Height, textSize.Height));\r\n            int height = Math.Min(r.Height, componentMaxHeight);\r\n\r\n            return new Size(width, height);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate the bounds of a checkbox given the (pre-padded) cell bounds\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"cellBounds\">Pre-padded cell bounds</param>\r\n        /// <returns></returns>\r\n        protected Rectangle CalculateCheckBoxBounds(Graphics g, Rectangle cellBounds) {\r\n            Size checkBoxSize = CalculateCheckBoxSize(g);\r\n            return AlignRectangle(cellBounds, new Rectangle(0, 0, checkBoxSize.Width, checkBoxSize.Height));\r\n        }\r\n        \r\n        \r\n        /// <summary>\r\n        /// How much space will the check box for this cell occupy?\r\n        /// </summary>\r\n        /// <remarks>Only column 0 can have check boxes. Sub item checkboxes are\r\n        /// treated as images</remarks>\r\n        /// <param name=\"g\"></param>\r\n        /// <returns></returns>\r\n        protected virtual Size CalculateCheckBoxSize(Graphics g)\r\n        {\r\n            if (UseCustomCheckboxImages && ListView.StateImageList != null)\r\n                return ListView.StateImageList.ImageSize;\r\n\r\n            return CheckBoxRenderer.GetGlyphSize(g, CheckBoxState.UncheckedNormal);\r\n        }\r\n\r\n        /// <summary>\r\n        /// How much space will the check box for this row occupy? \r\n        /// If the list doesn't have checkboxes, or this isn't the primary column,\r\n        /// this returns an empty size.\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <returns></returns>\r\n        protected virtual Size CalculatePrimaryCheckBoxSize(Graphics g) {\r\n            if (!ListView.CheckBoxes || !ColumnIsPrimary)\r\n                return Size.Empty;\r\n            \r\n            Size size = CalculateCheckBoxSize(g);\r\n            size.Width += 6;\r\n            return size;\r\n        }\r\n\r\n        /// <summary>\r\n        /// How much horizontal space will the image of this cell occupy?\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"imageSelector\"></param>\r\n        /// <returns></returns>\r\n        protected virtual int CalculateImageWidth(Graphics g, object imageSelector)\r\n        {\r\n            return CalculateImageSize(g, imageSelector).Width + 2;\r\n        }\r\n\r\n        /// <summary>\r\n        /// How much vertical space will the image of this cell occupy?\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"imageSelector\"></param>\r\n        /// <returns></returns>\r\n        protected virtual int CalculateImageHeight(Graphics g, object imageSelector)\r\n        {\r\n            return CalculateImageSize(g, imageSelector).Height;\r\n        }\r\n\r\n        /// <summary>\r\n        /// How much space will the image of this cell occupy?\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"imageSelector\"></param>\r\n        /// <returns></returns>\r\n        protected virtual Size CalculateImageSize(Graphics g, object imageSelector)\r\n        {\r\n            if (imageSelector == null || imageSelector == DBNull.Value)\r\n                return Size.Empty;\r\n\r\n            // Check for the image in the image list (most common case)\r\n            ImageList il = ImageListOrDefault;\r\n            if (il != null)\r\n            {\r\n                int selectorAsInt = -1;\r\n\r\n                if (imageSelector is Int32)\r\n                    selectorAsInt = (Int32)imageSelector;\r\n                else\r\n                {\r\n                    if (imageSelector is string selectorAsString)\r\n                        selectorAsInt = il.Images.IndexOfKey(selectorAsString);\r\n                }\r\n                if (selectorAsInt >= 0)\r\n                    return il.ImageSize;\r\n            }\r\n\r\n            // Is the selector actually an image?\r\n            if (imageSelector is Image image)\r\n                return image.Size;\r\n\r\n            return Size.Empty;\r\n        }\r\n\r\n        /// <summary>\r\n        /// How much horizontal space will the text of this cell occupy?\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"txt\"></param>\r\n        /// <param name=\"width\"></param>\r\n        /// <returns></returns>\r\n        protected virtual int CalculateTextWidth(Graphics g, string txt, int width)\r\n        {\r\n            if (String.IsNullOrEmpty(txt))\r\n                return 0;\r\n\r\n            return CalculateTextSize(g, txt, width).Width;\r\n        }\r\n\r\n        /// <summary>\r\n        /// How much space will the text of this cell occupy?\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"txt\"></param>\r\n        /// <param name=\"width\"></param>\r\n        /// <returns></returns>\r\n        protected virtual Size CalculateTextSize(Graphics g, string txt, int width)\r\n        {\r\n            if (String.IsNullOrEmpty(txt))\r\n                return Size.Empty;\r\n\r\n            if (UseGdiTextRendering)\r\n            {\r\n                Size proposedSize = new Size(width, Int32.MaxValue);\r\n                return TextRenderer.MeasureText(g, txt, Font, proposedSize, NormalTextFormatFlags);\r\n            }\r\n            \r\n            // Using GDI+ renderering\r\n            using (StringFormat fmt = new StringFormat()) {\r\n                fmt.Trimming = StringTrimming.EllipsisCharacter;\r\n                SizeF sizeF = g.MeasureString(txt, Font, width, fmt);\r\n                return new Size(1 + (int)sizeF.Width, 1 + (int)sizeF.Height);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the Color that is the background color for this item's cell\r\n        /// </summary>\r\n        /// <returns>The background color of the subitem</returns>\r\n        public virtual Color GetBackgroundColor() {\r\n            if (!ListView.Enabled)\r\n                return SystemColors.Control;\r\n\r\n            if (IsItemSelected && !ListView.UseTranslucentSelection && ListView.FullRowSelect)\r\n                return GetSelectedBackgroundColor();\r\n\r\n            if (SubItem == null || ListItem.UseItemStyleForSubItems)\r\n                return ListItem.BackColor;\r\n\r\n            return SubItem.BackColor;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the color of the background color when the item is selected\r\n        /// </summary>\r\n        /// <returns>The background color of the subitem</returns>\r\n        public virtual Color GetSelectedBackgroundColor() {\r\n            if (ListView.Focused) \r\n                return ListItem.SelectedBackColor ?? ListView.SelectedBackColorOrDefault;\r\n\r\n            if (!ListView.HideSelection)\r\n                return ListView.UnfocusedSelectedBackColorOrDefault;\r\n\r\n            return ListItem.BackColor;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the color to be used for text in this cell\r\n        /// </summary>\r\n        /// <returns>The text color of the subitem</returns>\r\n        public virtual Color GetForegroundColor() {\r\n            if (IsItemSelected && \r\n                !ListView.UseTranslucentSelection &&\r\n                (ColumnIsPrimary || ListView.FullRowSelect)) \r\n                return GetSelectedForegroundColor();\r\n\r\n            return SubItem == null || ListItem.UseItemStyleForSubItems ? ListItem.ForeColor : SubItem.ForeColor;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the color of the foreground color when the item is selected\r\n        /// </summary>\r\n        /// <returns>The foreground color of the subitem</returns>\r\n        public virtual Color GetSelectedForegroundColor()\r\n        {\r\n            if (ListView.Focused)\r\n                return ListItem.SelectedForeColor ?? ListView.SelectedForeColorOrDefault;\r\n\r\n            if (!ListView.HideSelection)\r\n                return ListView.UnfocusedSelectedForeColorOrDefault;\r\n\r\n            return SubItem == null || ListItem.UseItemStyleForSubItems ? ListItem.ForeColor : SubItem.ForeColor;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the image that should be drawn against this subitem\r\n        /// </summary>\r\n        /// <returns>An Image or null if no image should be drawn.</returns>\r\n        protected virtual Image GetImage() {\r\n            return GetImage(GetImageSelector());\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the actual image that should be drawn when keyed by the given image selector.\r\n        /// An image selector can be: <list type=\"bullet\">\r\n        /// <item><description>an int, giving the index into the image list</description></item>\r\n        /// <item><description>a string, giving the image key into the image list</description></item>\r\n        /// <item><description>an Image, being the image itself</description></item>\r\n        /// </list>\r\n        /// </summary>\r\n        /// <param name=\"imageSelector\">The value that indicates the image to be used</param>\r\n        /// <returns>An Image or null</returns>\r\n        protected virtual Image GetImage(Object imageSelector) {\r\n            if (imageSelector == null || imageSelector == DBNull.Value)\r\n                return null;\r\n\r\n            ImageList il = ImageListOrDefault;\r\n            if (il != null) {\r\n                if (imageSelector is Int32) {\r\n                    Int32 index = (Int32) imageSelector;\r\n                    if (index < 0 || index >= il.Images.Count)\r\n                        return null;\r\n\r\n                    return il.Images[index];\r\n                }\r\n\r\n                if (imageSelector is string str) {\r\n                    if (il.Images.ContainsKey(str))\r\n                        return il.Images[str];\r\n\r\n                    return null;\r\n                }\r\n            }\r\n\r\n            return imageSelector as Image;\r\n        }\r\n\r\n        /// <summary>\r\n        /// </summary>\r\n        protected virtual Object GetImageSelector() {\r\n            return ColumnIsPrimary ? ListItem.ImageSelector : OLVSubItem.ImageSelector;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the string that should be drawn within this\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        protected virtual string GetText() {\r\n            return SubItem == null ? ListItem.Text : SubItem.Text;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the Color that is the background color for this item's text\r\n        /// </summary>\r\n        /// <returns>The background color of the subitem's text</returns>\r\n        [Obsolete(\"Use GetBackgroundColor() instead\")]\r\n        protected virtual Color GetTextBackgroundColor() {\r\n            return Color.Red; // just so it shows up if it is used\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region IRenderer members\r\n\r\n        /// <summary>\r\n        /// Render the whole item in a non-details view.\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"itemBounds\"></param>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        public override bool RenderItem(DrawListViewItemEventArgs e, Graphics g, Rectangle itemBounds, object model) {\r\n            ConfigureItem(e, itemBounds, model);\r\n            return OptionalRender(g, itemBounds);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Prepare this renderer to draw in response to the given event\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        /// <param name=\"itemBounds\"></param>\r\n        /// <param name=\"model\"></param>\r\n        /// <remarks>Use this if you want to chain a second renderer within a primary renderer.</remarks>\r\n        public virtual void ConfigureItem(DrawListViewItemEventArgs e, Rectangle itemBounds, object model)\r\n        {\r\n            ClearState();\r\n\r\n            DrawItemEvent = e;\r\n            ListItem = (OLVListItem)e.Item;\r\n            SubItem = null;\r\n            ListView = (ObjectListView)ListItem.ListView;\r\n            Column = ListView.GetColumn(0);\r\n            RowObject = model;\r\n            Bounds = itemBounds;\r\n            IsItemSelected = ListItem.Selected && ListItem.Enabled;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Render one cell\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        public override bool RenderSubItem(DrawListViewSubItemEventArgs e, Graphics g, Rectangle cellBounds, object model) {\r\n            ConfigureSubItem(e, cellBounds, model);\r\n            return OptionalRender(g, cellBounds);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Prepare this renderer to draw in response to the given event\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"model\"></param>\r\n        /// <remarks>Use this if you want to chain a second renderer within a primary renderer.</remarks>\r\n        public virtual void ConfigureSubItem(DrawListViewSubItemEventArgs e, Rectangle cellBounds, object model) {\r\n            ClearState();\r\n\r\n            Event = e;\r\n            ListItem = (OLVListItem)e.Item;\r\n            SubItem = (OLVListSubItem)e.SubItem;\r\n            ListView = (ObjectListView)ListItem.ListView;\r\n            Column = (OLVColumn)e.Header;\r\n            RowObject = model;\r\n            Bounds = cellBounds;\r\n            IsItemSelected = ListItem.Selected && ListItem.Enabled;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate which part of this cell was hit\r\n        /// </summary>\r\n        /// <param name=\"hti\"></param>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        public override void HitTest(OlvListViewHitTestInfo hti, int x, int y) {\r\n            ClearState();\r\n\r\n            ListView = hti.ListView;\r\n            ListItem = hti.Item;\r\n            SubItem = hti.SubItem;\r\n            Column = hti.Column;\r\n            RowObject = hti.RowObject;\r\n            IsItemSelected = ListItem.Selected && ListItem.Enabled;\r\n            if (SubItem == null)\r\n                Bounds = ListItem.Bounds;\r\n            else\r\n                Bounds = ListItem.GetSubItemBounds(Column.Index);\r\n\r\n            using (Graphics g = ListView.CreateGraphics()) {\r\n                HandleHitTest(g, hti, x, y);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate the edit rectangle\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        /// <param name=\"preferredSize\"> </param>\r\n        /// <returns></returns>\r\n        public override Rectangle GetEditRectangle(Graphics g, Rectangle cellBounds, OLVListItem item, int subItemIndex, Size preferredSize) {\r\n            ClearState();\r\n\r\n            ListView = (ObjectListView) item.ListView;\r\n            ListItem = item;\r\n            SubItem = item.GetSubItem(subItemIndex);\r\n            Column = ListView.GetColumn(subItemIndex);\r\n            RowObject = item.RowObject;\r\n            IsItemSelected = ListItem.Selected && ListItem.Enabled;\r\n            Bounds = cellBounds;\r\n\r\n            return HandleGetEditRectangle(g, cellBounds, item, subItemIndex, preferredSize);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region IRenderer implementation\r\n\r\n        // Subclasses will probably want to override these methods rather than the IRenderer\r\n        // interface methods.\r\n\r\n        /// <summary>\r\n        /// Draw our data into the given rectangle using the given graphics context.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>Subclasses should override this method.</para></remarks>\r\n        /// <param name=\"g\">The graphics context that should be used for drawing</param>\r\n        /// <param name=\"r\">The bounds of the subitem cell</param>\r\n        /// <returns>Returns whether the rendering has already taken place.\r\n        /// If this returns false, the default processing will take over.\r\n        /// </returns>\r\n        public virtual bool OptionalRender(Graphics g, Rectangle r) {\r\n            if (ListView.View != View.Details)\r\n                return false;\r\n\r\n            Render(g, r);\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw our data into the given rectangle using the given graphics context.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>Subclasses should override this method if they never want\r\n        /// to fall back on the default processing</para></remarks>\r\n        /// <param name=\"g\">The graphics context that should be used for drawing</param>\r\n        /// <param name=\"r\">The bounds of the subitem cell</param>\r\n        public virtual void Render(Graphics g, Rectangle r) {\r\n            StandardRender(g, r);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the actual work of hit testing. Subclasses should override this rather than HitTest()\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"hti\"></param>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        protected virtual void HandleHitTest(Graphics g, OlvListViewHitTestInfo hti, int x, int y) {\r\n            Rectangle r = CalculateAlignedRectangle(g, ApplyCellPadding(Bounds));\r\n            StandardHitTest(g, hti, r, x, y);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a HitTest request after all state information has been initialized\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        /// <param name=\"preferredSize\"> </param>\r\n        /// <returns></returns>\r\n        protected virtual Rectangle HandleGetEditRectangle(Graphics g, Rectangle cellBounds, OLVListItem item, int subItemIndex, Size preferredSize) {\r\n            // MAINTAINER NOTE: This type testing is wrong (design-wise). The base class should return cell bounds,\r\n            // and a more specialized class should return StandardGetEditRectangle(). But BaseRenderer is used directly\r\n            // to draw most normal cells, as well as being directly subclassed for user implemented renderers. And this\r\n            // method needs to return different bounds in each of those cases. We should have a StandardRenderer and make\r\n            // BaseRenderer into an ABC -- but that would break too much existing code. And so we have this hack :(\r\n\r\n            // If we are a standard renderer, return the position of the text, otherwise, use the whole cell.\r\n            if (GetType() == typeof (BaseRenderer))\r\n                return StandardGetEditRectangle(g, cellBounds, preferredSize);\r\n\r\n            // Center the editor vertically\r\n            if (cellBounds.Height != preferredSize.Height)\r\n                cellBounds.Y += (cellBounds.Height - preferredSize.Height) / 2;\r\n\r\n            return cellBounds;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Standard IRenderer implementations\r\n\r\n        /// <summary>\r\n        /// Draw the standard \"[checkbox] [image] [text]\" cell after the state properties have been initialized.\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        protected void StandardRender(Graphics g, Rectangle r) {\r\n            DrawBackground(g, r);\r\n\r\n            // Adjust the first columns rectangle to match the padding used by the native mode of the ListView\r\n            if (ColumnIsPrimary && CellHorizontalAlignment == HorizontalAlignment.Left ) {\r\n                r.X += 3;\r\n                r.Width -= 1;\r\n            }\r\n            r = ApplyCellPadding(r);\r\n            DrawAlignedImageAndText(g, r);\r\n\r\n            // Show where the bounds of the cell padding are (debugging)\r\n            if (ObjectListView.ShowCellPaddingBounds)\r\n                g.DrawRectangle(Pens.Purple, r);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the bounds of the given rectangle to take any cell padding into account\r\n        /// </summary>\r\n        /// <param name=\"r\"></param>\r\n        /// <returns></returns>\r\n        public virtual Rectangle ApplyCellPadding(Rectangle r) {\r\n            Rectangle? padding = EffectiveCellPadding;\r\n            if (!padding.HasValue)\r\n                return r;\r\n            // The two subtractions below look wrong, but are correct!\r\n            Rectangle paddingRectangle = padding.Value;\r\n            r.Width -= paddingRectangle.Right;\r\n            r.Height -= paddingRectangle.Bottom;\r\n            r.Offset(paddingRectangle.Location);\r\n            return r;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Perform normal hit testing relative to the given aligned content bounds\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"hti\"></param>\r\n        /// <param name=\"bounds\"></param>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        protected virtual void StandardHitTest(Graphics g, OlvListViewHitTestInfo hti, Rectangle alignedContentRectangle, int x, int y) {\r\n            Rectangle r = alignedContentRectangle;\r\n\r\n            // Match tweaking from renderer\r\n            if (ColumnIsPrimary && CellHorizontalAlignment == HorizontalAlignment.Left && !(this is TreeListView.TreeRenderer)) {\r\n                r.X += 3;\r\n                r.Width -= 1;\r\n            }\r\n            int width = 0;\r\n\r\n            // Did they hit a check box on the primary column?\r\n            if (ColumnIsPrimary && ListView.CheckBoxes) {\r\n                Size checkBoxSize = CalculateCheckBoxSize(g);\r\n                int checkBoxTop = AlignVertically(r, checkBoxSize.Height);\r\n                Rectangle r3 = new Rectangle(r.X, checkBoxTop, checkBoxSize.Width, checkBoxSize.Height);\r\n                width = r3.Width + 6;\r\n                // g.DrawRectangle(Pens.DarkGreen, r3);\r\n                if (r3.Contains(x, y)) {\r\n                    hti.HitTestLocation = HitTestLocation.CheckBox;\r\n                    return;\r\n                }\r\n            }\r\n\r\n            // Did they hit the image? If they hit the image of a \r\n            // non-primary column that has a checkbox, it counts as a \r\n            // checkbox hit\r\n            r.X += width;\r\n            r.Width -= width;\r\n            width = CalculateImageWidth(g, GetImageSelector());\r\n            Rectangle rTwo = r;\r\n            rTwo.Width = width;\r\n            // g.DrawRectangle(Pens.Red, rTwo);\r\n            if (rTwo.Contains(x, y)) {\r\n                if (Column != null && (Column.Index > 0 && Column.CheckBoxes))\r\n                    hti.HitTestLocation = HitTestLocation.CheckBox;\r\n                else\r\n                    hti.HitTestLocation = HitTestLocation.Image;\r\n                return;\r\n            }\r\n\r\n            // Did they hit the text?\r\n            r.X += width;\r\n            r.Width -= width;\r\n            width = CalculateTextWidth(g, GetText(), r.Width);\r\n            rTwo = r;\r\n            rTwo.Width = width;\r\n            // g.DrawRectangle(Pens.Blue, rTwo);\r\n            if (rTwo.Contains(x, y)) {\r\n                hti.HitTestLocation = HitTestLocation.Text;\r\n                return;\r\n            }\r\n\r\n            hti.HitTestLocation = HitTestLocation.InCell;\r\n        }\r\n\r\n        /// <summary>\r\n        /// This method calculates the bounds of the text within a standard layout\r\n        /// (i.e. optional checkbox, optional image, text)\r\n        /// </summary>\r\n        /// <remarks>This method only works correctly if the state of the renderer\r\n        /// has been fully initialized (see BaseRenderer.GetEditRectangle)</remarks>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"preferredSize\"> </param>\r\n        /// <returns></returns>\r\n        protected virtual Rectangle StandardGetEditRectangle(Graphics g, Rectangle cellBounds, Size preferredSize) {\r\n\r\n            Size contentSize = CalculateContentSize(g, cellBounds);\r\n            int contentWidth = Column.CellEditUseWholeCellEffective ? cellBounds.Width : contentSize.Width;\r\n            Rectangle editControlBounds = CalculatePaddedAlignedBounds(g, cellBounds, new Size(contentWidth, preferredSize.Height));\r\n\r\n            Size checkBoxSize = CalculatePrimaryCheckBoxSize(g);\r\n            int imageWidth = CalculateImageWidth(g, GetImageSelector());\r\n\r\n            int width = checkBoxSize.Width + imageWidth;\r\n\r\n            // Indent the primary column by the required amount\r\n            if (ListItem.IndentCount > 0) {\r\n                int indentWidth = ListView.SmallImageSize.Width * ListItem.IndentCount;\r\n                width += indentWidth;\r\n            }\r\n\r\n            editControlBounds.X += width;\r\n            editControlBounds.Width -= width;\r\n\r\n            if (editControlBounds.Width < 50)\r\n                editControlBounds.Width = 50;\r\n            if (editControlBounds.Right > cellBounds.Right)\r\n                editControlBounds.Width = cellBounds.Right - editControlBounds.Left;\r\n\r\n            return editControlBounds;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Apply any padding to the given bounds, and then align a rectangle of the given\r\n        /// size within that padded area.\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"preferredSize\"></param>\r\n        /// <returns></returns>\r\n        protected Rectangle CalculatePaddedAlignedBounds(Graphics g, Rectangle cellBounds, Size preferredSize) {\r\n            Rectangle r = ApplyCellPadding(cellBounds);\r\n            r = AlignRectangle(r, new Rectangle(Point.Empty, preferredSize));\r\n            return r;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Drawing routines\r\n\r\n        /// <summary>\r\n        /// Draw the given image aligned horizontally within the column.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Over tall images are scaled to fit. Over-wide images are\r\n        /// truncated. This is by design!\r\n        /// </remarks>\r\n        /// <param name=\"g\">Graphics context to use for drawing</param>\r\n        /// <param name=\"r\">Bounds of the cell</param>\r\n        /// <param name=\"image\">The image to be drawn</param>\r\n        protected virtual void DrawAlignedImage(Graphics g, Rectangle r, Image image) {\r\n            if (image == null)\r\n                return;\r\n\r\n            // By default, the image goes in the top left of the rectangle\r\n            Rectangle imageBounds = new Rectangle(r.Location, image.Size);\r\n\r\n            // If the image is too tall to be drawn in the space provided, proportionally scale it down.\r\n            // Too wide images are not scaled.\r\n            if (image.Height > r.Height) {\r\n                float scaleRatio = (float) r.Height / (float) image.Height;\r\n                imageBounds.Width = (int) ((float) image.Width * scaleRatio);\r\n                imageBounds.Height = r.Height - 1;\r\n            }\r\n\r\n            // Align and draw our (possibly scaled) image\r\n            Rectangle alignRectangle = AlignRectangle(r, imageBounds);\r\n            if (ListItem.Enabled)\r\n                g.DrawImage(image, alignRectangle);\r\n            else\r\n                ControlPaint.DrawImageDisabled(g, image, alignRectangle.X, alignRectangle.Y, GetBackgroundColor());\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw our subitems image and text\r\n        /// </summary>\r\n        /// <param name=\"g\">Graphics context to use for drawing</param>\r\n        /// <param name=\"r\">Pre-padded bounds of the cell</param>\r\n        protected virtual void DrawAlignedImageAndText(Graphics g, Rectangle r)\r\n        {\r\n            DrawImageAndText(g, r); //this.CalculateAlignedRectangle(g, r));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Fill in the background of this cell\r\n        /// </summary>\r\n        /// <param name=\"g\">Graphics context to use for drawing</param>\r\n        /// <param name=\"r\">Bounds of the cell</param>\r\n        protected virtual void DrawBackground(Graphics g, Rectangle r) {\r\n            if (!IsDrawBackground)\r\n                return;\r\n\r\n            Color backgroundColor = GetBackgroundColor();\r\n\r\n            using (Brush brush = new SolidBrush(backgroundColor)) {\r\n                g.FillRectangle(brush, r.X - 1, r.Y - 1, r.Width + 2, r.Height + 2);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the primary check box of this row (checkboxes in other sub items use a different method)\r\n        /// </summary>\r\n        /// <param name=\"g\">Graphics context to use for drawing</param>\r\n        /// <param name=\"r\">The pre-aligned and padded target rectangle</param>\r\n        protected virtual int DrawCheckBox(Graphics g, Rectangle r) {\r\n            // The odd constants are to match checkbox placement in native mode (on XP at least)\r\n            // TODO: Unify this with CheckStateRenderer\r\n\r\n            // The rectangle r is already horizontally aligned. We still need to align it vertically.\r\n            Size checkBoxSize = CalculateCheckBoxSize(g);\r\n            Point checkBoxLocation = new Point(r.X, AlignVertically(r, checkBoxSize.Height));\r\n\r\n            if (IsPrinting || UseCustomCheckboxImages) {\r\n                int imageIndex = ListItem.StateImageIndex;\r\n                if (ListView.StateImageList == null || imageIndex < 0 || imageIndex >= ListView.StateImageList.Images.Count)\r\n                    return 0;\r\n\r\n                return DrawImage(g, new Rectangle(checkBoxLocation, checkBoxSize), ListView.StateImageList.Images[imageIndex]) + 4;\r\n            }\r\n\r\n            CheckBoxState boxState = GetCheckBoxState(ListItem.CheckState);\r\n            CheckBoxRenderer.DrawCheckBox(g, checkBoxLocation, boxState);\r\n            return checkBoxSize.Width;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate the CheckBoxState we need to correctly draw the given state\r\n        /// </summary>\r\n        /// <param name=\"checkState\"></param>\r\n        /// <returns></returns>\r\n        protected virtual CheckBoxState GetCheckBoxState(CheckState checkState) {\r\n\r\n            // Should the checkbox be drawn as disabled?\r\n            if (IsCheckBoxDisabled) {\r\n                switch (checkState) {\r\n                    case CheckState.Checked:\r\n                        return CheckBoxState.CheckedDisabled;\r\n                    case CheckState.Unchecked:\r\n                        return CheckBoxState.UncheckedDisabled;\r\n                    default:\r\n                        return CheckBoxState.MixedDisabled;\r\n                }\r\n            }\r\n\r\n            // Is the cursor currently over this checkbox?\r\n            if (IsCheckboxHot) {\r\n                switch (checkState) {\r\n                    case CheckState.Checked:\r\n                        return CheckBoxState.CheckedHot;\r\n                    case CheckState.Unchecked:\r\n                        return CheckBoxState.UncheckedHot;\r\n                    default:\r\n                        return CheckBoxState.MixedHot;\r\n                }\r\n            }\r\n\r\n            // Not hot and not disabled -- just draw it normally\r\n            switch (checkState) {\r\n                case CheckState.Checked:\r\n                    return CheckBoxState.CheckedNormal;\r\n                case CheckState.Unchecked:\r\n                    return CheckBoxState.UncheckedNormal;\r\n                default:\r\n                    return CheckBoxState.MixedNormal;\r\n            }\r\n\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should this checkbox be drawn as disabled?\r\n        /// </summary>\r\n        protected virtual bool IsCheckBoxDisabled {\r\n            get {\r\n                if (ListItem != null && !ListItem.Enabled)\r\n                    return true;\r\n\r\n                if (!ListView.RenderNonEditableCheckboxesAsDisabled)\r\n                    return false;\r\n\r\n                return (ListView.CellEditActivation == ObjectListView.CellEditActivateMode.None ||\r\n                        (Column != null && !Column.IsEditable));\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Is the current item hot (i.e. under the mouse)?\r\n        /// </summary>\r\n        protected bool IsCellHot {\r\n            get {\r\n                return ListView != null &&\r\n                       ListView.HotRowIndex == ListItem.Index &&\r\n                       ListView.HotColumnIndex == (Column == null ? 0 : Column.Index);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Is the mouse over a checkbox in this cell?\r\n        /// </summary>\r\n        protected bool IsCheckboxHot {\r\n            get {\r\n                return IsCellHot && ListView.HotCellHitLocation == HitTestLocation.CheckBox;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the given text and optional image in the \"normal\" fashion\r\n        /// </summary>\r\n        /// <param name=\"g\">Graphics context to use for drawing</param>\r\n        /// <param name=\"r\">Bounds of the cell</param>\r\n        /// <param name=\"imageSelector\">The optional image to be drawn</param>\r\n        protected virtual int DrawImage(Graphics g, Rectangle r, Object imageSelector) {\r\n            if (imageSelector == null || imageSelector == DBNull.Value)\r\n                return 0;\r\n\r\n            // Draw from the image list (most common case)\r\n            ImageList il = ImageListOrDefault;\r\n            if (il != null) {\r\n\r\n                // Try to translate our imageSelector into a valid ImageList index\r\n                int selectorAsInt = -1;\r\n                if (imageSelector is Int32) {\r\n                    selectorAsInt = (Int32) imageSelector;\r\n                    if (selectorAsInt >= il.Images.Count)\r\n                        selectorAsInt = -1;\r\n                } else {\r\n                    if (imageSelector is string selectorAsString)\r\n                        selectorAsInt = il.Images.IndexOfKey(selectorAsString);\r\n                }\r\n\r\n                // If we found a valid index into the ImageList, draw it.\r\n                // We want to draw using the native DrawImageList calls, since that let's us do some nice effects\r\n                // But the native call does not work on PrinterDCs, so if we're printing we have to skip this bit.\r\n                if (selectorAsInt >= 0) {\r\n                    if (!IsPrinting) {\r\n                        if (il.ImageSize.Height < r.Height)\r\n                            r.Y = AlignVertically(r, new Rectangle(Point.Empty, il.ImageSize));\r\n\r\n                        // If we are not printing, it's probable that the given Graphics object is double buffered using a BufferedGraphics object.\r\n                        // But the ImageList.Draw method doesn't honor the Translation matrix that's probably in effect on the buffered\r\n                        // graphics. So we have to calculate our drawing rectangle, relative to the cells natural boundaries.\r\n                        // This effectively simulates the Translation matrix.\r\n\r\n                        Rectangle r2 = new Rectangle(r.X - Bounds.X, r.Y - Bounds.Y, r.Width, r.Height);\r\n                        NativeMethods.DrawImageList(g, il, selectorAsInt, r2.X, r2.Y, IsItemSelected, !ListItem.Enabled);\r\n                        return il.ImageSize.Width;\r\n                    }\r\n\r\n                    // For some reason, printing from an image list doesn't work onto a printer context\r\n                    // So get the image from the list and FALL THROUGH to the \"print an image\" case\r\n                    imageSelector = il.Images[selectorAsInt];\r\n                }\r\n            }\r\n\r\n            // Is the selector actually an image?\r\n            if (imageSelector is not Image image)\r\n                return 0; // no, give up\r\n\r\n            if (image.Size.Height < r.Height)\r\n                r.Y = AlignVertically(r, new Rectangle(Point.Empty, image.Size));\r\n\r\n            if (ListItem.Enabled)\r\n                g.DrawImageUnscaled(image, r.X, r.Y);\r\n            else\r\n                ControlPaint.DrawImageDisabled(g, image, r.X, r.Y, GetBackgroundColor());\r\n\r\n            return image.Width;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw our subitems image and text\r\n        /// </summary>\r\n        /// <param name=\"g\">Graphics context to use for drawing</param>\r\n        /// <param name=\"r\">Bounds of the cell</param>\r\n        protected virtual void DrawImageAndText(Graphics g, Rectangle r) {\r\n            int offset = 0;\r\n            if (ListView.CheckBoxes && ColumnIsPrimary) {\r\n                offset = DrawCheckBox(g, r) + 6;\r\n                r.X += offset;\r\n                r.Width -= offset;\r\n            }\r\n\r\n            offset = DrawImage(g, r, GetImageSelector());\r\n            r.X += offset;\r\n            r.Width -= offset;\r\n\r\n            DrawText(g, r, GetText());\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the given collection of image selectors\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"imageSelectors\"></param>\r\n        protected virtual int DrawImages(Graphics g, Rectangle r, ICollection imageSelectors) {\r\n            // Collect the non-null images\r\n            List<Image> images = new List<Image>();\r\n            foreach (Object selector in imageSelectors) {\r\n                Image image = GetImage(selector);\r\n                if (image != null)\r\n                    images.Add(image);\r\n            }\r\n\r\n            // Figure out how much space they will occupy\r\n            int width = 0;\r\n            int height = 0;\r\n            foreach (Image image in images) {\r\n                width += (image.Width + Spacing);\r\n                height = Math.Max(height, image.Height);\r\n            }\r\n\r\n            // Align the collection of images within the cell\r\n            Rectangle r2 = AlignRectangle(r, new Rectangle(0, 0, width, height));\r\n\r\n            // Finally, draw all the images in their correct location\r\n            Color backgroundColor = GetBackgroundColor();\r\n            Point pt = r2.Location;\r\n            foreach (Image image in images) {\r\n                if (ListItem.Enabled)\r\n                    g.DrawImage(image, pt);\r\n                else\r\n                    ControlPaint.DrawImageDisabled(g, image, pt.X, pt.Y, backgroundColor);\r\n                pt.X += (image.Width + Spacing);\r\n            }\r\n\r\n            // Return the width that the images occupy\r\n            return width;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the given text and optional image in the \"normal\" fashion\r\n        /// </summary>\r\n        /// <param name=\"g\">Graphics context to use for drawing</param>\r\n        /// <param name=\"r\">Bounds of the cell</param>\r\n        /// <param name=\"txt\">The string to be drawn</param>\r\n        public virtual void DrawText(Graphics g, Rectangle r, String txt) {\r\n            if (String.IsNullOrEmpty(txt))\r\n                return;\r\n\r\n            if (UseGdiTextRendering)\r\n                DrawTextGdi(g, r, txt);\r\n            else\r\n                DrawTextGdiPlus(g, r, txt);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Print the given text in the given rectangle using only GDI routines\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"txt\"></param>\r\n        /// <remarks>\r\n        /// The native list control uses GDI routines to do its drawing, so using them\r\n        /// here makes the owner drawn mode looks more natural.\r\n        /// <para>This method doesn't honour the CanWrap setting on the renderer. All\r\n        /// text is single line</para>\r\n        /// </remarks>\r\n        protected virtual void DrawTextGdi(Graphics g, Rectangle r, String txt) {\r\n            Color backColor = Color.Transparent;\r\n            if (IsDrawBackground && IsItemSelected && ColumnIsPrimary && !ListView.FullRowSelect)\r\n                backColor = GetSelectedBackgroundColor();\r\n\r\n            TextFormatFlags flags = NormalTextFormatFlags | CellVerticalAlignmentAsTextFormatFlag;\r\n\r\n            // I think there is a bug in the TextRenderer. Setting or not setting SingleLine doesn't make \r\n            // any difference -- it is always single line.\r\n            if (!CanWrap)\r\n                flags |= TextFormatFlags.SingleLine;\r\n            TextRenderer.DrawText(g, txt, Font, r, GetForegroundColor(), backColor, flags);\r\n        }\r\n\r\n        private bool ColumnIsPrimary {\r\n            get { return Column != null && Column.Index == 0; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the cell's vertical alignment as a TextFormatFlag\r\n        /// </summary>\r\n        /// <exception cref=\"ArgumentOutOfRangeException\"></exception>\r\n        protected TextFormatFlags CellVerticalAlignmentAsTextFormatFlag {\r\n            get {\r\n                switch (EffectiveCellVerticalAlignment) {\r\n                    case StringAlignment.Near:\r\n                        return TextFormatFlags.Top;\r\n                    case StringAlignment.Center:\r\n                        return TextFormatFlags.VerticalCenter;\r\n                    case StringAlignment.Far:\r\n                        return TextFormatFlags.Bottom;\r\n                    default:\r\n                        throw new ArgumentOutOfRangeException();\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the StringFormat needed when drawing text using GDI+\r\n        /// </summary>\r\n        protected virtual StringFormat StringFormatForGdiPlus {\r\n            get {\r\n                StringFormat fmt = new StringFormat();\r\n                fmt.LineAlignment = EffectiveCellVerticalAlignment;\r\n                fmt.Trimming = StringTrimming.EllipsisCharacter;\r\n                fmt.Alignment = Column == null ? StringAlignment.Near : Column.TextStringAlign;\r\n                if (!CanWrap)\r\n                    fmt.FormatFlags = StringFormatFlags.NoWrap;\r\n                return fmt;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Print the given text in the given rectangle using normal GDI+ .NET methods\r\n        /// </summary>\r\n        /// <remarks>Printing to a printer dc has to be done using this method.</remarks>\r\n        protected virtual void DrawTextGdiPlus(Graphics g, Rectangle r, String txt) {\r\n            using (StringFormat fmt = StringFormatForGdiPlus) {\r\n                // Draw the background of the text as selected, if it's the primary column\r\n                // and it's selected and it's not in FullRowSelect mode.\r\n                Font f = Font;\r\n                if (IsDrawBackground && IsItemSelected && ColumnIsPrimary && !ListView.FullRowSelect) {\r\n                    SizeF size = g.MeasureString(txt, f, r.Width, fmt);\r\n                    Rectangle r2 = r;\r\n                    r2.Width = (int) size.Width + 1;\r\n                    using (Brush brush = new SolidBrush(GetSelectedBackgroundColor())) {\r\n                        g.FillRectangle(brush, r2);\r\n                    }\r\n                }\r\n                RectangleF rf = r;\r\n                g.DrawString(txt, f, TextBrush, rf, fmt);\r\n            }\r\n\r\n            // We should put a focus rectangle around the column 0 text if it's selected --\r\n            // but we don't because:\r\n            // - I really dislike this UI convention\r\n            // - we are using buffered graphics, so the DrawFocusRecatangle method of the event doesn't work\r\n\r\n            //if (this.ColumnIsPrimary) {\r\n            //    Size size = TextRenderer.MeasureText(this.SubItem.Text, this.ListView.ListFont);\r\n            //    if (r.Width > size.Width)\r\n            //        r.Width = size.Width;\r\n            //    this.Event.DrawFocusRectangle(r);\r\n            //}\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// This renderer highlights substrings that match a given text filter. \r\n    /// </summary>\r\n    public class HighlightTextRenderer : BaseRenderer, IFilterAwareRenderer {\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create a HighlightTextRenderer\r\n        /// </summary>\r\n        public HighlightTextRenderer() {\r\n            FramePen = Pens.DarkGreen;\r\n            FillBrush = Brushes.Yellow;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a HighlightTextRenderer\r\n        /// </summary>\r\n        /// <param name=\"filter\"></param>\r\n        public HighlightTextRenderer(TextMatchFilter filter)\r\n            : this() {\r\n            Filter = filter;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a HighlightTextRenderer\r\n        /// </summary>\r\n        /// <param name=\"text\"></param>\r\n        [Obsolete(\"Use HighlightTextRenderer(TextMatchFilter) instead\", true)]\r\n        public HighlightTextRenderer(string text) {}\r\n\r\n        #endregion\r\n\r\n        #region Configuration properties\r\n\r\n        /// <summary>\r\n        /// Gets or set how rounded will be the corners of the text match frame\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         DefaultValue(3.0f),\r\n         Description(\"How rounded will be the corners of the text match frame?\")]\r\n        public float CornerRoundness {\r\n            get { return cornerRoundness; }\r\n            set { cornerRoundness = value; }\r\n        }\r\n\r\n        private float cornerRoundness = 3.0f;\r\n\r\n        /// <summary>\r\n        /// Gets or set the brush will be used to paint behind the matched substrings.\r\n        /// Set this to null to not fill the frame.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Brush FillBrush {\r\n            get { return fillBrush; }\r\n            set { fillBrush = value; }\r\n        }\r\n\r\n        private Brush fillBrush;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the filter that is filtering the ObjectListView and for\r\n        /// which this renderer should highlight text\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public TextMatchFilter Filter {\r\n            get { return filter; }\r\n            set { filter = value; }\r\n        }\r\n\r\n        private TextMatchFilter filter;\r\n\r\n        /// <summary>\r\n        /// When a filter changes, keep track of the text matching filters\r\n        /// </summary>\r\n        IModelFilter IFilterAwareRenderer.Filter\r\n        {\r\n            get { return filter; }\r\n            set { RegisterNewFilter(value); }\r\n        }\r\n\r\n        internal void RegisterNewFilter(IModelFilter newFilter) {\r\n            if (newFilter is TextMatchFilter textFilter)\r\n            {\r\n                Filter = textFilter;\r\n                return;\r\n            }\r\n\r\n            if (newFilter is CompositeFilter composite)\r\n            {\r\n                foreach (TextMatchFilter textSubFilter in composite.TextFilters)\r\n                {\r\n                    Filter = textSubFilter;\r\n                    return;\r\n                }\r\n            }\r\n            Filter = null; \r\n        } \r\n\r\n        /// <summary>\r\n        /// Gets or set the pen will be used to frame the matched substrings.\r\n        /// Set this to null to not draw a frame.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Pen FramePen {\r\n            get { return framePen; }\r\n            set { framePen = value; }\r\n        }\r\n\r\n        private Pen framePen;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the frame around a text match will have rounded corners\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         DefaultValue(true),\r\n         Description(\"Will the frame around a text match will have rounded corners?\")]\r\n        public bool UseRoundedRectangle {\r\n            get { return useRoundedRectangle; }\r\n            set { useRoundedRectangle = value; }\r\n        }\r\n\r\n        private bool useRoundedRectangle = true;\r\n\r\n        #endregion\r\n\r\n        #region Compatibility properties\r\n\r\n        /// <summary>\r\n        /// Gets or set the text that will be highlighted\r\n        /// </summary>\r\n        [Obsolete(\"Set the Filter directly rather than just the text\", true)]\r\n        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public string TextToHighlight {\r\n            get { return String.Empty; }\r\n            set { }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the manner in which substring will be compared.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Use this to control if substring matches are case sensitive or insensitive.</remarks>\r\n        [Obsolete(\"Set the Filter directly rather than just this setting\", true)]\r\n        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public StringComparison StringComparison {\r\n            get { return StringComparison.CurrentCultureIgnoreCase; }\r\n            set { }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region IRenderer interface overrides\r\n\r\n        /// <summary>\r\n        /// Handle a HitTest request after all state information has been initialized\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        /// <param name=\"preferredSize\"> </param>\r\n        /// <returns></returns>\r\n        protected override Rectangle HandleGetEditRectangle(Graphics g, Rectangle cellBounds, OLVListItem item, int subItemIndex, Size preferredSize) {\r\n            return StandardGetEditRectangle(g, cellBounds, preferredSize);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Rendering\r\n\r\n        // This class has two implement two highlighting schemes: one for GDI, another for GDI+.\r\n        // Naturally, GDI+ makes the task easier, but we have to provide something for GDI\r\n        // since that it is what is normally used.\r\n\r\n        /// <summary>\r\n        /// Draw text using GDI\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"txt\"></param>\r\n        protected override void DrawTextGdi(Graphics g, Rectangle r, string txt) {\r\n            if (ShouldDrawHighlighting)\r\n                DrawGdiTextHighlighting(g, r, txt);\r\n\r\n            base.DrawTextGdi(g, r, txt);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the highlighted text using GDI\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"txt\"></param>\r\n        protected virtual void DrawGdiTextHighlighting(Graphics g, Rectangle r, string txt) {\r\n\r\n            // TextRenderer puts horizontal padding around the strings, so we need to take\r\n            // that into account when measuring strings\r\n            const int paddingAdjustment = 6;\r\n\r\n            // Cache the font\r\n            Font f = Font;\r\n\r\n            foreach (CharacterRange range in Filter.FindAllMatchedRanges(txt)) {\r\n                // Measure the text that comes before our substring\r\n                Size precedingTextSize = Size.Empty;\r\n                if (range.First > 0) {\r\n                    string precedingText = txt.Substring(0, range.First);\r\n                    precedingTextSize = TextRenderer.MeasureText(g, precedingText, f, r.Size, NormalTextFormatFlags);\r\n                    precedingTextSize.Width -= paddingAdjustment;\r\n                }\r\n\r\n                // Measure the length of our substring (may be different each time due to case differences)\r\n                string highlightText = txt.Substring(range.First, range.Length);\r\n                Size textToHighlightSize = TextRenderer.MeasureText(g, highlightText, f, r.Size, NormalTextFormatFlags);\r\n                textToHighlightSize.Width -= paddingAdjustment;\r\n\r\n                float textToHighlightLeft = r.X + precedingTextSize.Width + 1;\r\n                float textToHighlightTop = AlignVertically(r, textToHighlightSize.Height);\r\n\r\n                // Draw a filled frame around our substring\r\n                DrawSubstringFrame(g, textToHighlightLeft, textToHighlightTop, textToHighlightSize.Width, textToHighlightSize.Height);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw an indication around the given frame that shows a text match\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        /// <param name=\"width\"></param>\r\n        /// <param name=\"height\"></param>\r\n        protected virtual void DrawSubstringFrame(Graphics g, float x, float y, float width, float height) {\r\n            if (UseRoundedRectangle) {\r\n                using (GraphicsPath path = GetRoundedRect(x, y, width, height, 3.0f)) {\r\n                    if (FillBrush != null)\r\n                        g.FillPath(FillBrush, path);\r\n                    if (FramePen != null)\r\n                        g.DrawPath(FramePen, path);\r\n                }\r\n            } else {\r\n                if (FillBrush != null)\r\n                    g.FillRectangle(FillBrush, x, y, width, height);\r\n                if (FramePen != null)\r\n                    g.DrawRectangle(FramePen, x, y, width, height);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the text using GDI+\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"txt\"></param>\r\n        protected override void DrawTextGdiPlus(Graphics g, Rectangle r, string txt) {\r\n            if (ShouldDrawHighlighting)\r\n                DrawGdiPlusTextHighlighting(g, r, txt);\r\n\r\n            base.DrawTextGdiPlus(g, r, txt);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the highlighted text using GDI+\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"txt\"></param>\r\n        protected virtual void DrawGdiPlusTextHighlighting(Graphics g, Rectangle r, string txt) {\r\n            // Find the substrings we want to highlight\r\n            List<CharacterRange> ranges = new List<CharacterRange>(Filter.FindAllMatchedRanges(txt));\r\n\r\n            if (ranges.Count == 0)\r\n                return;\r\n\r\n            using (StringFormat fmt = StringFormatForGdiPlus) {\r\n                RectangleF rf = r;\r\n                fmt.SetMeasurableCharacterRanges(ranges.ToArray());\r\n                Region[] stringRegions = g.MeasureCharacterRanges(txt, Font, rf, fmt);\r\n\r\n                foreach (Region region in stringRegions) {\r\n                    RectangleF bounds = region.GetBounds(g);\r\n                    DrawSubstringFrame(g, bounds.X - 1, bounds.Y - 1, bounds.Width + 2, bounds.Height);\r\n                }\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Utilities\r\n\r\n        /// <summary>\r\n        /// Gets whether the renderer should actually draw highlighting\r\n        /// </summary>\r\n        protected bool ShouldDrawHighlighting {\r\n            get { return Column == null || (Column.Searchable && Filter != null && Filter.HasComponents); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a GraphicPath that is a round cornered rectangle\r\n        /// </summary>\r\n        /// <returns>A round cornered rectangle path</returns>\r\n        /// <remarks>If I could rely on people using C# 3.0+, this should be\r\n        /// an extension method of GraphicsPath.</remarks>        \r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        /// <param name=\"width\"></param>\r\n        /// <param name=\"height\"></param>\r\n        /// <param name=\"diameter\"></param>\r\n        protected GraphicsPath GetRoundedRect(float x, float y, float width, float height, float diameter) {\r\n            return GetRoundedRect(new RectangleF(x, y, width, height), diameter);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a GraphicPath that is a round cornered rectangle\r\n        /// </summary>\r\n        /// <param name=\"rect\">The rectangle</param>\r\n        /// <param name=\"diameter\">The diameter of the corners</param>\r\n        /// <returns>A round cornered rectangle path</returns>\r\n        /// <remarks>If I could rely on people using C# 3.0+, this should be\r\n        /// an extension method of GraphicsPath.</remarks>\r\n        protected GraphicsPath GetRoundedRect(RectangleF rect, float diameter) {\r\n            GraphicsPath path = new GraphicsPath();\r\n\r\n            if (diameter > 0) {\r\n                RectangleF arc = new RectangleF(rect.X, rect.Y, diameter, diameter);\r\n                path.AddArc(arc, 180, 90);\r\n                arc.X = rect.Right - diameter;\r\n                path.AddArc(arc, 270, 90);\r\n                arc.Y = rect.Bottom - diameter;\r\n                path.AddArc(arc, 0, 90);\r\n                arc.X = rect.Left;\r\n                path.AddArc(arc, 90, 90);\r\n                path.CloseFigure();\r\n            } else {\r\n                path.AddRectangle(rect);\r\n            }\r\n\r\n            return path;\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// This class maps a data value to an image that should be drawn for that value.\r\n    /// </summary>\r\n    /// <remarks><para>It is useful for drawing data that is represented as an enum or boolean.</para></remarks>\r\n    public class MappedImageRenderer : BaseRenderer {\r\n        /// <summary>\r\n        /// Return a renderer that draw boolean values using the given images\r\n        /// </summary>\r\n        /// <param name=\"trueImage\">Draw this when our data value is true</param>\r\n        /// <param name=\"falseImage\">Draw this when our data value is false</param>\r\n        /// <returns>A Renderer</returns>\r\n        public static MappedImageRenderer Boolean(Object trueImage, Object falseImage) {\r\n            return new MappedImageRenderer(true, trueImage, false, falseImage);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a renderer that draw tristate boolean values using the given images\r\n        /// </summary>\r\n        /// <param name=\"trueImage\">Draw this when our data value is true</param>\r\n        /// <param name=\"falseImage\">Draw this when our data value is false</param>\r\n        /// <param name=\"nullImage\">Draw this when our data value is null</param>\r\n        /// <returns>A Renderer</returns>\r\n        public static MappedImageRenderer TriState(Object trueImage, Object falseImage, Object nullImage) {\r\n            return new MappedImageRenderer(new Object[] {true, trueImage, false, falseImage, null, nullImage});\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a new empty renderer\r\n        /// </summary>\r\n        public MappedImageRenderer() {\r\n            map = new Hashtable();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a new renderer that will show the given image when the given key is the aspect value\r\n        /// </summary>\r\n        /// <param name=\"key\">The data value to be matched</param>\r\n        /// <param name=\"image\">The image to be shown when the key is matched</param>\r\n        public MappedImageRenderer(Object key, Object image)\r\n            : this() {\r\n            Add(key, image);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a new renderer that will show the given images when it receives the given keys\r\n        /// </summary>\r\n        /// <param name=\"key1\"></param>\r\n        /// <param name=\"image1\"></param>\r\n        /// <param name=\"key2\"></param>\r\n        /// <param name=\"image2\"></param>\r\n        public MappedImageRenderer(Object key1, Object image1, Object key2, Object image2)\r\n            : this() {\r\n            Add(key1, image1);\r\n            Add(key2, image2);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Build a renderer from the given array of keys and their matching images\r\n        /// </summary>\r\n        /// <param name=\"keysAndImages\">An array of key/image pairs</param>\r\n        public MappedImageRenderer(Object[] keysAndImages)\r\n            : this() {\r\n            if ((keysAndImages.GetLength(0) % 2) != 0)\r\n                throw new ArgumentException(\"Array must have key/image pairs\");\r\n\r\n            for (int i = 0; i < keysAndImages.GetLength(0); i += 2)\r\n                Add(keysAndImages[i], keysAndImages[i + 1]);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Register the image that should be drawn when our Aspect has the data value.\r\n        /// </summary>\r\n        /// <param name=\"value\">Value that the Aspect must match</param>\r\n        /// <param name=\"image\">An ImageSelector -- an int, string or image</param>\r\n        public void Add(Object value, Object image) {\r\n            if (value == null)\r\n                nullImage = image;\r\n            else\r\n                map[value] = image;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Render our value\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        public override void Render(Graphics g, Rectangle r) {\r\n            DrawBackground(g, r);\r\n            r = ApplyCellPadding(r);\r\n\r\n            if (Aspect is not ICollection aspectAsCollection)\r\n                RenderOne(g, r, Aspect);\r\n            else\r\n                RenderCollection(g, r, aspectAsCollection);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw a collection of images\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"imageSelectors\"></param>\r\n        protected void RenderCollection(Graphics g, Rectangle r, ICollection imageSelectors) {\r\n            ArrayList images = new ArrayList();\r\n            Image image = null;\r\n            foreach (Object selector in imageSelectors) {\r\n                if (selector == null)\r\n                    image = GetImage(nullImage);\r\n                else if (map.ContainsKey(selector))\r\n                    image = GetImage(map[selector]);\r\n                else\r\n                    image = null;\r\n\r\n                if (image != null)\r\n                    images.Add(image);\r\n            }\r\n\r\n            DrawImages(g, r, images);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw one image\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"selector\"></param>\r\n        protected void RenderOne(Graphics g, Rectangle r, Object selector) {\r\n            Image image = null;\r\n            if (selector == null)\r\n                image = GetImage(nullImage);\r\n            else if (map.ContainsKey(selector))\r\n                image = GetImage(map[selector]);\r\n\r\n            if (image != null)\r\n                DrawAlignedImage(g, r, image);\r\n        }\r\n\r\n        #region Private variables\r\n\r\n        private Hashtable map; // Track the association between values and images\r\n        private Object nullImage; // image to be drawn for null values (since null can't be a key)\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// This renderer draws just a checkbox to match the check state of our model object.\r\n    /// </summary>\r\n    public class CheckStateRenderer : BaseRenderer {\r\n        /// <summary>\r\n        /// Draw our cell\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        public override void Render(Graphics g, Rectangle r) {\r\n            DrawBackground(g, r);\r\n            if (Column == null)\r\n                return;\r\n            r = ApplyCellPadding(r);\r\n            CheckState state = Column.GetCheckState(RowObject);\r\n            if (IsPrinting) {\r\n                // Renderers don't work onto printer DCs, so we have to draw the image ourselves\r\n                string key = ObjectListView.CHECKED_KEY;\r\n                if (state == CheckState.Unchecked)\r\n                    key = ObjectListView.UNCHECKED_KEY;\r\n                if (state == CheckState.Indeterminate)\r\n                    key = ObjectListView.INDETERMINATE_KEY;\r\n                DrawAlignedImage(g, r, ImageListOrDefault.Images[key]);\r\n            } else {\r\n                r = CalculateCheckBoxBounds(g, r);\r\n                CheckBoxRenderer.DrawCheckBox(g, r.Location, GetCheckBoxState(state));\r\n            }\r\n        }\r\n\r\n\r\n        /// <summary>\r\n        /// Handle the GetEditRectangle request\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        /// <param name=\"preferredSize\"> </param>\r\n        /// <returns></returns>\r\n        protected override Rectangle HandleGetEditRectangle(Graphics g, Rectangle cellBounds, OLVListItem item, int subItemIndex, Size preferredSize) {\r\n            return CalculatePaddedAlignedBounds(g, cellBounds, preferredSize);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the HitTest request\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"hti\"></param>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        protected override void HandleHitTest(Graphics g, OlvListViewHitTestInfo hti, int x, int y) {\r\n            Rectangle r = CalculateCheckBoxBounds(g, Bounds);\r\n            if (r.Contains(x, y))\r\n                hti.HitTestLocation = HitTestLocation.CheckBox;\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// Render an image that comes from our data source.\r\n    /// </summary>\r\n    /// <remarks>The image can be sourced from:\r\n    /// <list type=\"bullet\">\r\n    /// <item><description>a byte-array (normally when the image to be shown is\r\n    /// stored as a value in a database)</description></item>\r\n    /// <item><description>an int, which is treated as an index into the image list</description></item>\r\n    /// <item><description>a string, which is treated first as a file name, and failing that as an index into the image list</description></item>\r\n    /// <item><description>an ICollection of ints or strings, which will be drawn as consecutive images</description></item>\r\n    /// </list>\r\n    /// <para>If an image is an animated GIF, it's state is stored in the SubItem object.</para>\r\n    /// <para>By default, the image renderer does not render animations (it begins life with animations paused).\r\n    /// To enable animations, you must call Unpause().</para>\r\n    /// <para>In the current implementation (2009-09), each column showing animated gifs must have a \r\n    /// different instance of ImageRenderer assigned to it. You cannot share the same instance of\r\n    /// an image renderer between two animated gif columns. If you do, only the last column will be\r\n    /// animated.</para>\r\n    /// </remarks>\r\n    public class ImageRenderer : BaseRenderer {\r\n        /// <summary>\r\n        /// Make an empty image renderer\r\n        /// </summary>\r\n        public ImageRenderer() {\r\n            stopwatch = new Stopwatch();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make an empty image renderer that begins life ready for animations\r\n        /// </summary>\r\n        public ImageRenderer(bool startAnimations)\r\n            : this() {\r\n            Paused = !startAnimations;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Finalizer\r\n        /// </summary>\r\n        protected override void Dispose(bool disposing) {\r\n            Paused = true;\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Should the animations in this renderer be paused?\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public bool Paused {\r\n            get { return isPaused; }\r\n            set {\r\n                if (isPaused == value)\r\n                    return;\r\n\r\n                isPaused = value;\r\n                if (isPaused) {\r\n                    StopTickler();\r\n                    stopwatch.Stop();\r\n                } else {\r\n                    Tickler.Change(1, Timeout.Infinite);\r\n                    stopwatch.Start();\r\n                }\r\n            }\r\n        }\r\n\r\n        private bool isPaused = true;\r\n\r\n        private void StopTickler() {\r\n            if (tickler == null)\r\n                return;\r\n\r\n            tickler.Dispose();\r\n            tickler = null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets a timer that can be used to trigger redraws on animations\r\n        /// </summary>\r\n        protected Timer Tickler {\r\n            get {\r\n                if (tickler == null)\r\n                    tickler = new Timer(new TimerCallback(OnTimer), null, Timeout.Infinite, Timeout.Infinite);\r\n                return tickler;\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// Pause any animations\r\n        /// </summary>\r\n        public void Pause() {\r\n            Paused = true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Unpause any animations\r\n        /// </summary>\r\n        public void Unpause() {\r\n            Paused = false;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Drawing\r\n\r\n        /// <summary>\r\n        /// Draw our image\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        public override void Render(Graphics g, Rectangle r) {\r\n            DrawBackground(g, r);\r\n\r\n            if (Aspect == null || Aspect == DBNull.Value)\r\n                return;\r\n            r = ApplyCellPadding(r);\r\n\r\n            if (Aspect is Byte[]) {\r\n                DrawAlignedImage(g, r, GetImageFromAspect());\r\n            } else {\r\n                if (Aspect is not ICollection imageSelectors)\r\n                    DrawAlignedImage(g, r, GetImageFromAspect());\r\n                else\r\n                    DrawImages(g, r, imageSelectors);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Translate our Aspect into an image.\r\n        /// </summary>\r\n        /// <remarks>The strategy is:<list type=\"bullet\">\r\n        /// <item><description>If its a byte array, we treat it as an in-memory image</description></item>\r\n        /// <item><description>If it's an int, we use that as an index into our image list</description></item>\r\n        /// <item><description>If it's a string, we try to load a file by that name. If we can't, \r\n        /// we use the string as an index into our image list.</description></item>\r\n        ///</list></remarks>\r\n        /// <returns>An image</returns>\r\n        protected Image GetImageFromAspect() {\r\n            // If we've already figured out the image, don't do it again\r\n            if (OLVSubItem != null && OLVSubItem.ImageSelector is Image) {\r\n                if (OLVSubItem.AnimationState == null)\r\n                    return (Image) OLVSubItem.ImageSelector;\r\n                else\r\n                    return OLVSubItem.AnimationState.image;\r\n            }\r\n\r\n            // Try to convert our Aspect into an Image\r\n            // If its a byte array, we treat it as an in-memory image\r\n            // If it's an int, we use that as an index into our image list\r\n            // If it's a string, we try to find a file by that name.\r\n            //    If we can't, we use the string as an index into our image list.\r\n            Image image = Aspect as Image;\r\n            if (image != null) {\r\n                // Don't do anything else\r\n            } else if (Aspect is Byte[]) {\r\n                using (MemoryStream stream = new MemoryStream((Byte[]) Aspect)) {\r\n                    try {\r\n                        image = Image.FromStream(stream);\r\n                    }\r\n                    catch (ArgumentException) {\r\n                        // ignore\r\n                    }\r\n                }\r\n            } else if (Aspect is Int32) {\r\n                image = GetImage(Aspect);\r\n            } else {\r\n                String str = Aspect as String;\r\n                if (!String.IsNullOrEmpty(str)) {\r\n                    try {\r\n                        image = Image.FromFile(str);\r\n                    }\r\n                    catch (FileNotFoundException) {\r\n                        image = GetImage(Aspect);\r\n                    }\r\n                    catch (OutOfMemoryException) {\r\n                        image = GetImage(Aspect);\r\n                    }\r\n                }\r\n            }\r\n\r\n            // If this image is an animation, initialize the animation process\r\n            if (OLVSubItem != null && AnimationState.IsAnimation(image)) {\r\n                OLVSubItem.AnimationState = new AnimationState(image);\r\n            }\r\n\r\n            // Cache the image so we don't repeat this dreary process\r\n            if (OLVSubItem != null)\r\n                OLVSubItem.ImageSelector = image;\r\n\r\n            return image;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Events\r\n\r\n        /// <summary>\r\n        /// This is the method that is invoked by the timer. It basically switches control to the listview thread.\r\n        /// </summary>\r\n        /// <param name=\"state\">not used</param>\r\n        public void OnTimer(Object state) {\r\n\r\n            if (IsListViewDead)\r\n                return;\r\n\r\n            if (Paused)\r\n                return;\r\n\r\n            if (ListView.InvokeRequired)\r\n                ListView.Invoke((MethodInvoker) delegate { OnTimer(state); });\r\n            else\r\n                OnTimerInThread();\r\n        }\r\n\r\n        private bool IsListViewDead {\r\n            get {\r\n                // Apply a whole heap of sanity checks, which basically ensure that the ListView is still alive\r\n                return ListView == null ||\r\n                       ListView.Disposing ||\r\n                       ListView.IsDisposed ||\r\n                       !ListView.IsHandleCreated;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// This is the OnTimer callback, but invoked in the same thread as the creator of the ListView.\r\n        /// This method can use all of ListViews methods without creating a CrossThread exception.\r\n        /// </summary>\r\n        protected void OnTimerInThread() {\r\n            // MAINTAINER NOTE: This method must renew the tickler. If it doesn't the animations will stop.\r\n\r\n            // If this listview has been destroyed, we can't do anything, so we return without\r\n            // renewing the tickler, effectively killing all animations on this renderer\r\n\r\n            if (IsListViewDead)\r\n                return;\r\n\r\n            if (Paused)\r\n                return;\r\n\r\n            // If we're not in Detail view or our column has been removed from the list,\r\n            // we can't do anything at the moment, but we still renew the tickler because the view may change later.\r\n            if (ListView.View != View.Details || Column == null || Column.Index < 0) {\r\n                Tickler.Change(1000, Timeout.Infinite);\r\n                return;\r\n            }\r\n\r\n            long elapsedMilliseconds = stopwatch.ElapsedMilliseconds;\r\n            int subItemIndex = Column.Index;\r\n            long nextCheckAt = elapsedMilliseconds + 1000; // wait at most one second before checking again\r\n            Rectangle updateRect = new Rectangle(); // what part of the view must be updated to draw the changed gifs?\r\n\r\n            // Run through all the subitems in the view for our column, and for each one that\r\n            // has an animation attached to it, see if the frame needs updating.\r\n\r\n            for (int i = 0; i < ListView.GetItemCount(); i++) {\r\n                OLVListItem lvi = ListView.GetItem(i);\r\n\r\n                // Get the animation state from the subitem. If there isn't an animation state, skip this row.\r\n                OLVListSubItem lvsi = lvi.GetSubItem(subItemIndex);\r\n                AnimationState state = lvsi.AnimationState;\r\n                if (state == null || !state.IsValid)\r\n                    continue;\r\n\r\n                // Has this frame of the animation expired?\r\n                if (elapsedMilliseconds >= state.currentFrameExpiresAt) {\r\n                    state.AdvanceFrame(elapsedMilliseconds);\r\n\r\n                    // Track the area of the view that needs to be redrawn to show the changed images\r\n                    if (updateRect.IsEmpty)\r\n                        updateRect = lvsi.Bounds;\r\n                    else\r\n                        updateRect = Rectangle.Union(updateRect, lvsi.Bounds);\r\n                }\r\n\r\n                // Remember the minimum time at which a frame is next due to change\r\n                nextCheckAt = Math.Min(nextCheckAt, state.currentFrameExpiresAt);\r\n            }\r\n\r\n            // Update the part of the listview where frames have changed\r\n            if (!updateRect.IsEmpty)\r\n                ListView.Invalidate(updateRect);\r\n\r\n            // Renew the tickler in time for the next frame change\r\n            Tickler.Change(nextCheckAt - elapsedMilliseconds, Timeout.Infinite);\r\n        }\r\n\r\n        #endregion\r\n\r\n        /// <summary>\r\n        /// Instances of this class kept track of the animation state of a single image.\r\n        /// </summary>\r\n        internal class AnimationState {\r\n            private const int PropertyTagTypeShort = 3;\r\n            private const int PropertyTagTypeLong = 4;\r\n            private const int PropertyTagFrameDelay = 0x5100;\r\n            private const int PropertyTagLoopCount = 0x5101;\r\n\r\n            /// <summary>\r\n            /// Is the given image an animation\r\n            /// </summary>\r\n            /// <param name=\"image\">The image to be tested</param>\r\n            /// <returns>Is the image an animation?</returns>\r\n            public static bool IsAnimation(Image image) {\r\n                if (image == null)\r\n                    return false;\r\n                else\r\n                    return (new List<Guid>(image.FrameDimensionsList)).Contains(FrameDimension.Time.Guid);\r\n            }\r\n\r\n            /// <summary>\r\n            /// Create an AnimationState in a quiet state\r\n            /// </summary>\r\n            public AnimationState() {\r\n                imageDuration = new List<int>();\r\n            }\r\n\r\n            /// <summary>\r\n            /// Create an animation state for the given image, which may or may not\r\n            /// be an animation\r\n            /// </summary>\r\n            /// <param name=\"image\">The image to be rendered</param>\r\n            public AnimationState(Image image)\r\n                : this() {\r\n                if (!IsAnimation(image))\r\n                    return;\r\n\r\n                // How many frames in the animation?\r\n                this.image = image;\r\n                frameCount = this.image.GetFrameCount(FrameDimension.Time);\r\n\r\n                // Find the delay between each frame.\r\n                // The delays are stored an array of 4-byte ints. Each int is the\r\n                // number of 1/100th of a second that should elapsed before the frame expires\r\n                foreach (PropertyItem pi in this.image.PropertyItems) {\r\n                    if (pi.Id == PropertyTagFrameDelay) {\r\n                        for (int i = 0; i < pi.Len; i += 4) {\r\n                            //TODO: There must be a better way to convert 4-bytes to an int\r\n                            int delay = (pi.Value[i + 3] << 24) + (pi.Value[i + 2] << 16) + (pi.Value[i + 1] << 8) + pi.Value[i];\r\n                            imageDuration.Add(delay * 10); // store delays as milliseconds\r\n                        }\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                // There should be as many frame durations as frames\r\n                Debug.Assert(imageDuration.Count == frameCount, \"There should be as many frame durations as there are frames.\");\r\n            }\r\n\r\n            /// <summary>\r\n            /// Does this state represent a valid animation\r\n            /// </summary>\r\n            public bool IsValid {\r\n                get { return (image != null && frameCount > 0); }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Advance our images current frame and calculate when it will expire\r\n            /// </summary>\r\n            public void AdvanceFrame(long millisecondsNow) {\r\n                currentFrame = (currentFrame + 1) % frameCount;\r\n                currentFrameExpiresAt = millisecondsNow + imageDuration[currentFrame];\r\n                image.SelectActiveFrame(FrameDimension.Time, currentFrame);\r\n            }\r\n\r\n            internal int currentFrame;\r\n            internal long currentFrameExpiresAt;\r\n            internal Image image;\r\n            internal List<int> imageDuration;\r\n            internal int frameCount;\r\n        }\r\n\r\n        #region Private variables\r\n\r\n        private Timer tickler; // timer used to tickle the animations\r\n        private Stopwatch stopwatch; // clock used to time the animation frame changes\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// Render our Aspect as a progress bar\r\n    /// </summary>\r\n    public class BarRenderer : BaseRenderer {\r\n        #region Constructors\r\n\r\n        /// <summary>\r\n        /// Make a BarRenderer\r\n        /// </summary>\r\n        public BarRenderer()\r\n            : base() {}\r\n\r\n        /// <summary>\r\n        /// Make a BarRenderer for the given range of data values\r\n        /// </summary>\r\n        public BarRenderer(int minimum, int maximum)\r\n            : this() {\r\n            MinimumValue = minimum;\r\n            MaximumValue = maximum;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a BarRenderer using a custom bar scheme\r\n        /// </summary>\r\n        public BarRenderer(Pen pen, Brush brush)\r\n            : this() {\r\n            Pen = pen;\r\n            Brush = brush;\r\n            UseStandardBar = false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a BarRenderer using a custom bar scheme\r\n        /// </summary>\r\n        public BarRenderer(int minimum, int maximum, Pen pen, Brush brush)\r\n            : this(minimum, maximum) {\r\n            Pen = pen;\r\n            Brush = brush;\r\n            UseStandardBar = false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a BarRenderer that uses a horizontal gradient\r\n        /// </summary>\r\n        public BarRenderer(Pen pen, Color start, Color end)\r\n            : this() {\r\n            Pen = pen;\r\n            SetGradient(start, end);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a BarRenderer that uses a horizontal gradient\r\n        /// </summary>\r\n        public BarRenderer(int minimum, int maximum, Pen pen, Color start, Color end)\r\n            : this(minimum, maximum) {\r\n            Pen = pen;\r\n            SetGradient(start, end);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Configuration Properties\r\n\r\n        /// <summary>\r\n        /// Should this bar be drawn in the system style?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should this bar be drawn in the system style?\"),\r\n         DefaultValue(true)]\r\n        public bool UseStandardBar {\r\n            get { return useStandardBar; }\r\n            set { useStandardBar = value; }\r\n        }\r\n\r\n        private bool useStandardBar = true;\r\n\r\n        /// <summary>\r\n        /// How many pixels in from our cell border will this bar be drawn\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How many pixels in from our cell border will this bar be drawn\"),\r\n         DefaultValue(2)]\r\n        public int Padding {\r\n            get { return padding; }\r\n            set { padding = value; }\r\n        }\r\n\r\n        private int padding = 2;\r\n\r\n        /// <summary>\r\n        /// What color will be used to fill the interior of the control before the \r\n        /// progress bar is drawn?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The color of the interior of the bar\"),\r\n         DefaultValue(typeof (Color), \"AliceBlue\")]\r\n        public Color BackgroundColor {\r\n            get { return backgroundColor; }\r\n            set { backgroundColor = value; }\r\n        }\r\n\r\n        private Color backgroundColor = Color.AliceBlue;\r\n\r\n        /// <summary>\r\n        /// What color should the frame of the progress bar be?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"What color should the frame of the progress bar be\"),\r\n         DefaultValue(typeof (Color), \"Black\")]\r\n        public Color FrameColor {\r\n            get { return frameColor; }\r\n            set { frameColor = value; }\r\n        }\r\n\r\n        private Color frameColor = Color.Black;\r\n\r\n        /// <summary>\r\n        /// How many pixels wide should the frame of the progress bar be?\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"How many pixels wide should the frame of the progress bar be\"),\r\n         DefaultValue(1.0f)]\r\n        public float FrameWidth {\r\n            get { return frameWidth; }\r\n            set { frameWidth = value; }\r\n        }\r\n\r\n        private float frameWidth = 1.0f;\r\n\r\n        /// <summary>\r\n        /// What color should the 'filled in' part of the progress bar be?\r\n        /// </summary>\r\n        /// <remarks>This is only used if GradientStartColor is Color.Empty</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"What color should the 'filled in' part of the progress bar be\"),\r\n         DefaultValue(typeof (Color), \"BlueViolet\")]\r\n        public Color FillColor {\r\n            get { return fillColor; }\r\n            set { fillColor = value; }\r\n        }\r\n\r\n        private Color fillColor = Color.BlueViolet;\r\n\r\n        /// <summary>\r\n        /// Use a gradient to fill the progress bar starting with this color\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Use a gradient to fill the progress bar starting with this color\"),\r\n         DefaultValue(typeof (Color), \"CornflowerBlue\")]\r\n        public Color GradientStartColor {\r\n            get { return startColor; }\r\n            set { startColor = value; }\r\n        }\r\n\r\n        private Color startColor = Color.CornflowerBlue;\r\n\r\n        /// <summary>\r\n        /// Use a gradient to fill the progress bar ending with this color\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Use a gradient to fill the progress bar ending with this color\"),\r\n         DefaultValue(typeof (Color), \"DarkBlue\")]\r\n        public Color GradientEndColor {\r\n            get { return endColor; }\r\n            set { endColor = value; }\r\n        }\r\n\r\n        private Color endColor = Color.DarkBlue;\r\n\r\n        /// <summary>\r\n        /// Regardless of how wide the column become the progress bar will never be wider than this\r\n        /// </summary>\r\n        [Category(\"Behavior\"),\r\n         Description(\"The progress bar will never be wider than this\"),\r\n         DefaultValue(100)]\r\n        public int MaximumWidth {\r\n            get { return maximumWidth; }\r\n            set { maximumWidth = value; }\r\n        }\r\n\r\n        private int maximumWidth = 100;\r\n\r\n        /// <summary>\r\n        /// Regardless of how high the cell is  the progress bar will never be taller than this\r\n        /// </summary>\r\n        [Category(\"Behavior\"),\r\n         Description(\"The progress bar will never be taller than this\"),\r\n         DefaultValue(16)]\r\n        public int MaximumHeight {\r\n            get { return maximumHeight; }\r\n            set { maximumHeight = value; }\r\n        }\r\n\r\n        private int maximumHeight = 16;\r\n\r\n        /// <summary>\r\n        /// The minimum data value expected. Values less than this will given an empty bar\r\n        /// </summary>\r\n        [Category(\"Behavior\"),\r\n         Description(\"The minimum data value expected. Values less than this will given an empty bar\"),\r\n         DefaultValue(0.0)]\r\n        public double MinimumValue {\r\n            get { return minimumValue; }\r\n            set { minimumValue = value; }\r\n        }\r\n\r\n        private double minimumValue = 0.0;\r\n\r\n        /// <summary>\r\n        /// The maximum value for the range. Values greater than this will give a full bar\r\n        /// </summary>\r\n        [Category(\"Behavior\"),\r\n         Description(\"The maximum value for the range. Values greater than this will give a full bar\"),\r\n         DefaultValue(100.0)]\r\n        public double MaximumValue {\r\n            get { return maximumValue; }\r\n            set { maximumValue = value; }\r\n        }\r\n\r\n        private double maximumValue = 100.0;\r\n\r\n        #endregion\r\n\r\n        #region Public Properties (non-IDE)\r\n\r\n        /// <summary>\r\n        /// The Pen that will draw the frame surrounding this bar\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Pen Pen {\r\n            get {\r\n                if (pen == null && !FrameColor.IsEmpty)\r\n                    return new Pen(FrameColor, FrameWidth);\r\n                else\r\n                    return pen;\r\n            }\r\n            set { pen = value; }\r\n        }\r\n\r\n        private Pen pen;\r\n\r\n        /// <summary>\r\n        /// The brush that will be used to fill the bar\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Brush Brush {\r\n            get {\r\n                if (brush == null && !FillColor.IsEmpty)\r\n                    return new SolidBrush(FillColor);\r\n                else\r\n                    return brush;\r\n            }\r\n            set { brush = value; }\r\n        }\r\n\r\n        private Brush brush;\r\n\r\n        /// <summary>\r\n        /// The brush that will be used to fill the background of the bar\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Brush BackgroundBrush {\r\n            get {\r\n                if (backgroundBrush == null && !BackgroundColor.IsEmpty)\r\n                    return new SolidBrush(BackgroundColor);\r\n                else\r\n                    return backgroundBrush;\r\n            }\r\n            set { backgroundBrush = value; }\r\n        }\r\n\r\n        private Brush backgroundBrush;\r\n\r\n        #endregion\r\n\r\n        /// <summary>\r\n        /// Draw this progress bar using a gradient\r\n        /// </summary>\r\n        /// <param name=\"start\"></param>\r\n        /// <param name=\"end\"></param>\r\n        public void SetGradient(Color start, Color end) {\r\n            GradientStartColor = start;\r\n            GradientEndColor = end;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw our aspect\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        public override void Render(Graphics g, Rectangle r) {\r\n            DrawBackground(g, r);\r\n\r\n            r = ApplyCellPadding(r);\r\n\r\n            Rectangle frameRect = Rectangle.Inflate(r, 0 - Padding, 0 - Padding);\r\n            frameRect.Width = Math.Min(frameRect.Width, MaximumWidth);\r\n            frameRect.Height = Math.Min(frameRect.Height, MaximumHeight);\r\n            frameRect = AlignRectangle(r, frameRect);\r\n\r\n            // Convert our aspect to a numeric value\r\n            if (Aspect is not IConvertible convertable)\r\n                return;\r\n            double aspectValue = convertable.ToDouble(NumberFormatInfo.InvariantInfo);\r\n\r\n            Rectangle fillRect = Rectangle.Inflate(frameRect, -1, -1);\r\n            if (aspectValue <= MinimumValue)\r\n                fillRect.Width = 0;\r\n            else if (aspectValue < MaximumValue)\r\n                fillRect.Width = (int) (fillRect.Width * (aspectValue - MinimumValue) / MaximumValue);\r\n\r\n            // MS-themed progress bars don't work when printing\r\n            if (UseStandardBar && ProgressBarRenderer.IsSupported && !IsPrinting) {\r\n                ProgressBarRenderer.DrawHorizontalBar(g, frameRect);\r\n                ProgressBarRenderer.DrawHorizontalChunks(g, fillRect);\r\n            } else {\r\n                g.FillRectangle(BackgroundBrush, frameRect);\r\n                if (fillRect.Width > 0) {\r\n                    // FillRectangle fills inside the given rectangle, so expand it a little\r\n                    fillRect.Width++;\r\n                    fillRect.Height++;\r\n                    if (GradientStartColor == Color.Empty)\r\n                        g.FillRectangle(Brush, fillRect);\r\n                    else {\r\n                        using (LinearGradientBrush gradient = new LinearGradientBrush(frameRect, GradientStartColor, GradientEndColor, LinearGradientMode.Horizontal)) {\r\n                            g.FillRectangle(gradient, fillRect);\r\n                        }\r\n                    }\r\n                }\r\n                g.DrawRectangle(Pen, frameRect);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the GetEditRectangle request\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"cellBounds\"></param>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"subItemIndex\"></param>\r\n        /// <param name=\"preferredSize\"> </param>\r\n        /// <returns></returns>\r\n        protected override Rectangle HandleGetEditRectangle(Graphics g, Rectangle cellBounds, OLVListItem item, int subItemIndex, Size preferredSize) {\r\n            return CalculatePaddedAlignedBounds(g, cellBounds, preferredSize);\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// An ImagesRenderer draws zero or more images depending on the data returned by its Aspect.\r\n    /// </summary>\r\n    /// <remarks><para>This renderer's Aspect must return a ICollection of ints, strings or Images,\r\n    /// each of which will be drawn horizontally one after the other.</para>\r\n    /// <para>As of v2.1, this functionality has been absorbed into ImageRenderer and this is now an\r\n    /// empty shell, solely for backwards compatibility.</para>\r\n    /// </remarks>\r\n    [ToolboxItem(false)]\r\n    public class ImagesRenderer : ImageRenderer {}\r\n\r\n    /// <summary>\r\n    /// A MultiImageRenderer draws the same image a number of times based on our data value\r\n    /// </summary>\r\n    /// <remarks><para>The stars in the Rating column of iTunes is a good example of this type of renderer.</para></remarks>\r\n    public class MultiImageRenderer : BaseRenderer {\r\n        /// <summary>\r\n        /// Make a quiet renderer\r\n        /// </summary>\r\n        public MultiImageRenderer()\r\n            : base() {}\r\n\r\n        /// <summary>\r\n        /// Make an image renderer that will draw the indicated image, at most maxImages times.\r\n        /// </summary>\r\n        /// <param name=\"imageSelector\"></param>\r\n        /// <param name=\"maxImages\"></param>\r\n        /// <param name=\"minValue\"></param>\r\n        /// <param name=\"maxValue\"></param>\r\n        public MultiImageRenderer(Object imageSelector, int maxImages, int minValue, int maxValue)\r\n            : this() {\r\n            ImageSelector = imageSelector;\r\n            MaxNumberImages = maxImages;\r\n            MinimumValue = minValue;\r\n            MaximumValue = maxValue;\r\n        }\r\n\r\n        #region Configuration Properties\r\n\r\n        /// <summary>\r\n        /// The index of the image that should be drawn\r\n        /// </summary>\r\n        [Category(\"Behavior\"),\r\n         Description(\"The index of the image that should be drawn\"),\r\n         DefaultValue(-1)]\r\n        public int ImageIndex {\r\n            get {\r\n                if (imageSelector is Int32)\r\n                    return (Int32) imageSelector;\r\n                else\r\n                    return -1;\r\n            }\r\n            set { imageSelector = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// The name of the image that should be drawn\r\n        /// </summary>\r\n        [Category(\"Behavior\"),\r\n         Description(\"The index of the image that should be drawn\"),\r\n         DefaultValue(null)]\r\n        public string ImageName {\r\n            get { return imageSelector as String; }\r\n            set { imageSelector = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// The image selector that will give the image to be drawn\r\n        /// </summary>\r\n        /// <remarks>Like all image selectors, this can be an int, string or Image</remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Object ImageSelector {\r\n            get { return imageSelector; }\r\n            set { imageSelector = value; }\r\n        }\r\n\r\n        private Object imageSelector;\r\n\r\n        /// <summary>\r\n        /// What is the maximum number of images that this renderer should draw?\r\n        /// </summary>\r\n        [Category(\"Behavior\"),\r\n         Description(\"The maximum number of images that this renderer should draw\"),\r\n         DefaultValue(10)]\r\n        public int MaxNumberImages {\r\n            get { return maxNumberImages; }\r\n            set { maxNumberImages = value; }\r\n        }\r\n\r\n        private int maxNumberImages = 10;\r\n\r\n        /// <summary>\r\n        /// Values less than or equal to this will have 0 images drawn\r\n        /// </summary>\r\n        [Category(\"Behavior\"),\r\n         Description(\"Values less than or equal to this will have 0 images drawn\"),\r\n         DefaultValue(0)]\r\n        public int MinimumValue {\r\n            get { return minimumValue; }\r\n            set { minimumValue = value; }\r\n        }\r\n\r\n        private int minimumValue = 0;\r\n\r\n        /// <summary>\r\n        /// Values greater than or equal to this will have MaxNumberImages images drawn\r\n        /// </summary>\r\n        [Category(\"Behavior\"),\r\n         Description(\"Values greater than or equal to this will have MaxNumberImages images drawn\"),\r\n         DefaultValue(100)]\r\n        public int MaximumValue {\r\n            get { return maximumValue; }\r\n            set { maximumValue = value; }\r\n        }\r\n\r\n        private int maximumValue = 100;\r\n\r\n        #endregion\r\n\r\n        /// <summary>\r\n        /// Draw our data value\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        public override void Render(Graphics g, Rectangle r) {\r\n            DrawBackground(g, r);\r\n            r = ApplyCellPadding(r);\r\n\r\n            Image image = GetImage(ImageSelector);\r\n            if (image == null)\r\n                return;\r\n\r\n            // Convert our aspect to a numeric value\r\n            if (Aspect is not IConvertible convertable)\r\n                return;\r\n            double aspectValue = convertable.ToDouble(NumberFormatInfo.InvariantInfo);\r\n\r\n            // Calculate how many images we need to draw to represent our aspect value\r\n            int numberOfImages;\r\n            if (aspectValue <= MinimumValue)\r\n                numberOfImages = 0;\r\n            else if (aspectValue < MaximumValue)\r\n                numberOfImages = 1 + (int) (MaxNumberImages * (aspectValue - MinimumValue) / MaximumValue);\r\n            else\r\n                numberOfImages = MaxNumberImages;\r\n\r\n            // If we need to shrink the image, what will its on-screen dimensions be?\r\n            int imageScaledWidth = image.Width;\r\n            int imageScaledHeight = image.Height;\r\n            if (r.Height < image.Height) {\r\n                imageScaledWidth = (int) ((float) image.Width * (float) r.Height / (float) image.Height);\r\n                imageScaledHeight = r.Height;\r\n            }\r\n            // Calculate where the images should be drawn\r\n            Rectangle imageBounds = r;\r\n            imageBounds.Width = (MaxNumberImages * (imageScaledWidth + Spacing)) - Spacing;\r\n            imageBounds.Height = imageScaledHeight;\r\n            imageBounds = AlignRectangle(r, imageBounds);\r\n\r\n            // Finally, draw the images\r\n            Rectangle singleImageRect = new Rectangle(imageBounds.X, imageBounds.Y, imageScaledWidth, imageScaledHeight);\r\n            Color backgroundColor = GetBackgroundColor();\r\n            for (int i = 0; i < numberOfImages; i++) {\r\n                if (ListItem.Enabled) {\r\n                    DrawImage(g, singleImageRect, ImageSelector);\r\n                }  else\r\n                    ControlPaint.DrawImageDisabled(g, image, singleImageRect.X, singleImageRect.Y, backgroundColor);\r\n                singleImageRect.X += (imageScaledWidth + Spacing);\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    /// <summary>\r\n    /// A class to render a value that contains a bitwise-OR'ed collection of values.\r\n    /// </summary>\r\n    public class FlagRenderer : BaseRenderer {\r\n        /// <summary>\r\n        /// Register the given image to the given value\r\n        /// </summary>\r\n        /// <param name=\"key\">When this flag is present...</param>\r\n        /// <param name=\"imageSelector\">...draw this image</param>\r\n        public void Add(Object key, Object imageSelector) {\r\n            Int32 k2 = ((IConvertible) key).ToInt32(NumberFormatInfo.InvariantInfo);\r\n\r\n            imageMap[k2] = imageSelector;\r\n            keysInOrder.Remove(k2);\r\n            keysInOrder.Add(k2);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the flags\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        public override void Render(Graphics g, Rectangle r) {\r\n            DrawBackground(g, r);\r\n\r\n            if (Aspect is not IConvertible convertable)\r\n                return;\r\n\r\n            r = ApplyCellPadding(r);\r\n\r\n            Int32 v2 = convertable.ToInt32(NumberFormatInfo.InvariantInfo);\r\n            ArrayList images = new ArrayList();\r\n            foreach (Int32 key in keysInOrder) {\r\n                if ((v2 & key) == key) {\r\n                    Image image = GetImage(imageMap[key]);\r\n                    if (image != null)\r\n                        images.Add(image);\r\n                }\r\n            }\r\n            if (images.Count > 0)\r\n                DrawImages(g, r, images);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the actual work of hit testing. Subclasses should override this rather than HitTest()\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"hti\"></param>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        protected override void HandleHitTest(Graphics g, OlvListViewHitTestInfo hti, int x, int y) {\r\n            if (Aspect is not IConvertible convertable)\r\n                return;\r\n\r\n            Int32 v2 = convertable.ToInt32(NumberFormatInfo.InvariantInfo);\r\n\r\n            Point pt = Bounds.Location;\r\n            foreach (Int32 key in keysInOrder) {\r\n                if ((v2 & key) == key) {\r\n                    Image image = GetImage(imageMap[key]);\r\n                    if (image != null) {\r\n                        Rectangle imageRect = new Rectangle(pt, image.Size);\r\n                        if (imageRect.Contains(x, y)) {\r\n                            hti.UserData = key;\r\n                            return;\r\n                        }\r\n                        pt.X += (image.Width + Spacing);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        private List<Int32> keysInOrder = new();\r\n        private Dictionary<Int32, Object> imageMap = new();\r\n    }\r\n\r\n    /// <summary>\r\n    /// This renderer draws an image, a single line title, and then multi-line description\r\n    /// under the title.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>This class works best with FullRowSelect = true.</para>\r\n    /// <para>It's not designed to work with cell editing -- it will work but will look odd.</para>\r\n    /// <para>\r\n    /// It's not RightToLeft friendly.\r\n    /// </para>\r\n    /// </remarks>\r\n    public class DescribedTaskRenderer : BaseRenderer, IFilterAwareRenderer\r\n    {\r\n        private readonly StringFormat noWrapStringFormat;\r\n        private readonly HighlightTextRenderer highlightTextRenderer = new();\r\n\r\n        /// <summary>\r\n        /// Create a DescribedTaskRenderer\r\n        /// </summary>\r\n        public DescribedTaskRenderer() {\r\n            noWrapStringFormat = new StringFormat(StringFormatFlags.NoWrap);\r\n            noWrapStringFormat.Trimming = StringTrimming.EllipsisCharacter;\r\n            noWrapStringFormat.Alignment = StringAlignment.Near;\r\n            noWrapStringFormat.LineAlignment = StringAlignment.Near;\r\n            highlightTextRenderer.CellVerticalAlignment = StringAlignment.Near;\r\n        }\r\n\r\n        #region Configuration properties\r\n\r\n        /// <summary>\r\n        /// Should text be rendered using GDI routines? This makes the text look more\r\n        /// like a native List view control.\r\n        /// </summary>\r\n        public override bool UseGdiTextRendering\r\n        {\r\n            get { return base.UseGdiTextRendering; }\r\n            set\r\n            {\r\n                base.UseGdiTextRendering = value;\r\n                highlightTextRenderer.UseGdiTextRendering = value;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or set the font that will be used to draw the title of the task\r\n        /// </summary>\r\n        /// <remarks>If this is null, the ListView's font will be used</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The font that will be used to draw the title of the task\"),\r\n         DefaultValue(null)]\r\n        public Font TitleFont {\r\n            get { return titleFont; }\r\n            set { titleFont = value; }\r\n        }\r\n\r\n        private Font titleFont;\r\n\r\n        /// <summary>\r\n        /// Return a font that has been set for the title or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public Font TitleFontOrDefault {\r\n            get { return TitleFont ?? ListView.Font; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or set the color of the title of the task\r\n        /// </summary>\r\n        /// <remarks>This color is used when the task is not selected or when the listview\r\n        /// has a translucent selection mechanism.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The color of the title\"),\r\n         DefaultValue(typeof (Color), \"\")]\r\n        public Color TitleColor {\r\n            get { return titleColor; }\r\n            set { titleColor = value; }\r\n        }\r\n\r\n        private Color titleColor;\r\n\r\n        /// <summary>\r\n        /// Return the color of the title of the task or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public Color TitleColorOrDefault {\r\n            get {\r\n                if (!ListItem.Enabled)\r\n                    return SubItem.ForeColor;\r\n                if (IsItemSelected || TitleColor.IsEmpty)\r\n                    return GetForegroundColor();\r\n                \r\n                return TitleColor;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or set the font that will be used to draw the description of the task\r\n        /// </summary>\r\n        /// <remarks>If this is null, the ListView's font will be used</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The font that will be used to draw the description of the task\"),\r\n         DefaultValue(null)]\r\n        public Font DescriptionFont {\r\n            get { return descriptionFont; }\r\n            set { descriptionFont = value; }\r\n        }\r\n\r\n        private Font descriptionFont;\r\n\r\n        /// <summary>\r\n        /// Return a font that has been set for the title or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public Font DescriptionFontOrDefault {\r\n            get { return DescriptionFont ?? ListView.Font; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or set the color of the description of the task\r\n        /// </summary>\r\n        /// <remarks>This color is used when the task is not selected or when the listview\r\n        /// has a translucent selection mechanism.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The color of the description\"),\r\n         DefaultValue(typeof (Color), \"\")]\r\n        public Color DescriptionColor {\r\n            get { return descriptionColor; }\r\n            set { descriptionColor = value; }\r\n        }\r\n        private Color descriptionColor = Color.Empty;\r\n\r\n        /// <summary>\r\n        /// Return the color of the description of the task or a reasonable default\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public Color DescriptionColorOrDefault {\r\n            get {\r\n                if (!ListItem.Enabled)\r\n                    return SubItem.ForeColor;\r\n                if (IsItemSelected && !ListView.UseTranslucentSelection)\r\n                    return GetForegroundColor();\r\n                return DescriptionColor.IsEmpty ? defaultDescriptionColor : DescriptionColor;\r\n            }\r\n        }\r\n        private static Color defaultDescriptionColor = Color.FromArgb(45, 46, 49);\r\n\r\n        /// <summary>\r\n        /// Gets or sets the number of pixels that will be left between the image and the text\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The number of pixels that that will be left between the image and the text\"),\r\n         DefaultValue(4)]\r\n        public int ImageTextSpace\r\n        {\r\n            get { return imageTextSpace; }\r\n            set { imageTextSpace = value; }\r\n        }\r\n        private int imageTextSpace = 4;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the number of pixels that will be left between the title and the description\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The number of pixels that that will be left between the title and the description\"),\r\n         DefaultValue(2)]\r\n        public int TitleDescriptionSpace\r\n        {\r\n            get { return titleDescriptionSpace; }\r\n            set { titleDescriptionSpace = value; }\r\n        }\r\n        private int titleDescriptionSpace = 2;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the name of the aspect of the model object that contains the task description\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The name of the aspect of the model object that contains the task description\"),\r\n         DefaultValue(null)]\r\n        public string DescriptionAspectName {\r\n            get { return descriptionAspectName; }\r\n            set { descriptionAspectName = value; }\r\n        }\r\n        private string descriptionAspectName;\r\n\r\n        #endregion\r\n\r\n        #region Text highlighting\r\n\r\n        /// <summary>\r\n        /// Gets or sets the filter that is filtering the ObjectListView and for\r\n        /// which this renderer should highlight text\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public TextMatchFilter Filter\r\n        {\r\n            get { return highlightTextRenderer.Filter; }\r\n            set { highlightTextRenderer.Filter = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// When a filter changes, keep track of the text matching filters\r\n        /// </summary>\r\n        IModelFilter IFilterAwareRenderer.Filter {\r\n            get { return Filter; }\r\n            set { highlightTextRenderer.RegisterNewFilter(value); }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Calculating\r\n\r\n        /// <summary>\r\n        /// Fetch the description from the model class\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        public virtual string GetDescription(object model) {\r\n            if (String.IsNullOrEmpty(DescriptionAspectName))\r\n                return String.Empty;\r\n\r\n            if (descriptionGetter == null)\r\n                descriptionGetter = new Munger(DescriptionAspectName);\r\n\r\n            return descriptionGetter.GetValue(model) as string;\r\n        }\r\n        private Munger descriptionGetter;\r\n\r\n        #endregion\r\n\r\n        #region Rendering\r\n\r\n        public override void ConfigureSubItem(DrawListViewSubItemEventArgs e, Rectangle cellBounds, object model) {\r\n            base.ConfigureSubItem(e, cellBounds, model);\r\n            highlightTextRenderer.ConfigureSubItem(e, cellBounds, model);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw our item\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        public override void Render(Graphics g, Rectangle r) {\r\n            DrawBackground(g, r);\r\n            r = ApplyCellPadding(r);\r\n            DrawDescribedTask(g, r, GetText(), GetDescription(RowObject), GetImageSelector());\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the task\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"title\"></param>\r\n        /// <param name=\"description\"></param>\r\n        /// <param name=\"imageSelector\"></param>\r\n        protected virtual void DrawDescribedTask(Graphics g, Rectangle r, string title, string description, object imageSelector) {\r\n\r\n            //Debug.WriteLine(String.Format(\"DrawDescribedTask({0}, {1}, {2}, {3})\", r, title, description, imageSelector));\r\n\r\n            // Draw the image if one's been given\r\n            Rectangle textBounds = r;\r\n            if (imageSelector != null) {\r\n                int imageWidth = DrawImage(g, r, imageSelector);\r\n                int gapToText = imageWidth + ImageTextSpace;\r\n                textBounds.X += gapToText;\r\n                textBounds.Width -= gapToText;\r\n            }\r\n\r\n            // Draw the title\r\n            if (!String.IsNullOrEmpty(title)) {\r\n                using (SolidBrush b = new SolidBrush(TitleColorOrDefault)) {\r\n                    highlightTextRenderer.CanWrap = false;\r\n                    highlightTextRenderer.Font = TitleFontOrDefault;\r\n                    highlightTextRenderer.TextBrush = b;\r\n                    highlightTextRenderer.DrawText(g, textBounds, title);\r\n                }\r\n\r\n                // How tall was the title?\r\n                SizeF size = g.MeasureString(title, TitleFontOrDefault, textBounds.Width, noWrapStringFormat);\r\n                int pixelsToDescription = TitleDescriptionSpace + (int)size.Height;\r\n                textBounds.Y += pixelsToDescription;\r\n                textBounds.Height -= pixelsToDescription;\r\n            }\r\n\r\n            // Draw the description\r\n            if (!String.IsNullOrEmpty(description)) {\r\n                using (SolidBrush b = new SolidBrush(DescriptionColorOrDefault)) {\r\n                    highlightTextRenderer.CanWrap = true;\r\n                    highlightTextRenderer.Font = DescriptionFontOrDefault;\r\n                    highlightTextRenderer.TextBrush = b;\r\n                    highlightTextRenderer.DrawText(g, textBounds, description); \r\n                }\r\n            }\r\n\r\n            //g.DrawRectangle(Pens.OrangeRed, r);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Hit Testing\r\n\r\n        /// <summary>\r\n        /// Handle the HitTest request\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"hti\"></param>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        protected override void HandleHitTest(Graphics g, OlvListViewHitTestInfo hti, int x, int y) {\r\n            if (Bounds.Contains(x, y))\r\n                hti.HitTestLocation = HitTestLocation.Text;\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n    /// <summary>\r\n    /// This renderer draws a functioning button in its cell\r\n    /// </summary>\r\n    public class ColumnButtonRenderer : BaseRenderer {\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets how each button will be sized\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"How each button will be sized\"),\r\n        DefaultValue(OLVColumn.ButtonSizingMode.TextBounds)]\r\n        public OLVColumn.ButtonSizingMode SizingMode\r\n        {\r\n            get { return sizingMode; }\r\n            set { sizingMode = value; }\r\n        }\r\n        private OLVColumn.ButtonSizingMode sizingMode = OLVColumn.ButtonSizingMode.TextBounds;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the size of the button when the SizingMode is FixedBounds\r\n        /// </summary>\r\n        /// <remarks>If this is not set, the bounds of the cell will be used</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"The size of the button when the SizingMode is FixedBounds\"),\r\n        DefaultValue(null)]\r\n        public Size? ButtonSize\r\n        {\r\n            get { return buttonSize; }\r\n            set { buttonSize = value; }\r\n        }\r\n        private Size? buttonSize;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the extra space that surrounds the cell when the SizingMode is TextBounds\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"The extra space that surrounds the cell when the SizingMode is TextBounds\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public Size? ButtonPadding\r\n        {\r\n            get { return buttonPadding; }\r\n            set { buttonPadding = value; }\r\n        }\r\n        private Size? buttonPadding = new Size(10, 10);\r\n\r\n        private Size ButtonPaddingOrDefault {\r\n            get { return ButtonPadding ?? new Size(10, 10); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the maximum width that a button can occupy.\r\n        /// -1 means there is no maximum width.\r\n        /// </summary>\r\n        /// <remarks>This is only considered when the SizingMode is TextBounds</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"The maximum width that a button can occupy when the SizingMode is TextBounds\"),\r\n        DefaultValue(-1)]\r\n        public int MaxButtonWidth\r\n        {\r\n            get { return maxButtonWidth; }\r\n            set { maxButtonWidth = value; }\r\n        }\r\n        private int maxButtonWidth = -1;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the minimum width that a button can occupy.\r\n        /// -1 means there is no minimum width.\r\n        /// </summary>\r\n        /// <remarks>This is only considered when the SizingMode is TextBounds</remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"The minimum width that a button can be when the SizingMode is TextBounds\"),\r\n         DefaultValue(-1)]\r\n        public int MinButtonWidth {\r\n            get { return minButtonWidth; }\r\n            set { minButtonWidth = value; }\r\n        }\r\n        private int minButtonWidth = -1;\r\n\r\n        #endregion\r\n\r\n        #region Rendering\r\n\r\n        /// <summary>\r\n        /// Calculate the size of the contents\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <returns></returns>\r\n        protected override Size CalculateContentSize(Graphics g, Rectangle r) {\r\n            if (SizingMode == OLVColumn.ButtonSizingMode.CellBounds)\r\n                return r.Size;\r\n\r\n            if (SizingMode == OLVColumn.ButtonSizingMode.FixedBounds)\r\n                return ButtonSize ?? r.Size;\r\n\r\n            // Ok, SizingMode must be TextBounds. So figure out the size of the text\r\n            Size textSize = CalculateTextSize(g, GetText(), r.Width);\r\n\r\n            // Allow for padding and max width\r\n            textSize.Height += ButtonPaddingOrDefault.Height * 2;\r\n            textSize.Width += ButtonPaddingOrDefault.Width * 2;\r\n            if (MaxButtonWidth != -1 && textSize.Width > MaxButtonWidth)\r\n                textSize.Width = MaxButtonWidth;\r\n            if (textSize.Width < MinButtonWidth)\r\n                textSize.Width = MinButtonWidth;\r\n\r\n            return textSize;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the button\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        protected override void DrawImageAndText(Graphics g, Rectangle r) {\r\n            TextFormatFlags textFormatFlags = TextFormatFlags.HorizontalCenter |\r\n                                              TextFormatFlags.VerticalCenter |\r\n                                              TextFormatFlags.EndEllipsis |\r\n                                              TextFormatFlags.NoPadding |\r\n                                              TextFormatFlags.SingleLine |\r\n                                              TextFormatFlags.PreserveGraphicsTranslateTransform;\r\n            if (ListView.RightToLeftLayout)\r\n                textFormatFlags |= TextFormatFlags.RightToLeft;\r\n\r\n            string buttonText = GetText();\r\n            if (!String.IsNullOrEmpty(buttonText))\r\n                ButtonRenderer.DrawButton(g, r, buttonText, Font, textFormatFlags, false, CalculatePushButtonState());\r\n        }\r\n\r\n        /// <summary>\r\n        /// What part of the control is under the given point?\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"hti\"></param>\r\n        /// <param name=\"bounds\"></param>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        protected override void StandardHitTest(Graphics g, OlvListViewHitTestInfo hti, Rectangle bounds, int x, int y) {\r\n            Rectangle r = ApplyCellPadding(bounds);\r\n            if (r.Contains(x, y))\r\n                hti.HitTestLocation = HitTestLocation.Button;\r\n        }\r\n\r\n        /// <summary>\r\n        /// What is the state of the button?\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        protected PushButtonState CalculatePushButtonState() {\r\n            if (!ListItem.Enabled && !Column.EnableButtonWhenItemIsDisabled)\r\n                return PushButtonState.Disabled;\r\n\r\n            if (IsButtonHot)\r\n                return ObjectListView.IsLeftMouseDown ? PushButtonState.Pressed : PushButtonState.Hot;\r\n\r\n            return PushButtonState.Normal;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Is the mouse over the button?\r\n        /// </summary>\r\n        protected bool IsButtonHot {\r\n            get {\r\n                return IsCellHot && ListView.HotCellHitLocation == HitTestLocation.Button;\r\n            }\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Rendering/Styles.cs",
    "content": "﻿/*\r\n * Styles - A style is a group of formatting attributes that can be applied to a row or a cell\r\n *\r\n * Author: Phillip Piper\r\n * Date: 29/07/2009 23:09\r\n *\r\n * Change log:\r\n * v2.4\r\n * 2010-03-23  JPP  - Added HeaderFormatStyle and support\r\n * v2.3\r\n * 2009-08-15  JPP  - Added Decoration and Overlay properties to HotItemStyle\r\n * 2009-07-29  JPP  - Initial version\r\n *\r\n * To do:\r\n * - These should be more generally available. It should be possible to do something like this:\r\n *       this.olv.GetItem(i).Style = new ItemStyle();\r\n *       this.olv.GetItem(i).GetSubItem(j).Style = new CellStyle();\r\n * \r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System.ComponentModel;\r\nusing System.Drawing;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// The common interface supported by all style objects\r\n    /// </summary>\r\n    public interface IItemStyle\r\n    {\r\n        /// <summary>\r\n        /// Gets or set the font that will be used by this style\r\n        /// </summary>\r\n        Font Font { get; set; }\r\n\r\n        /// <summary>\r\n        /// Gets or set the font style\r\n        /// </summary>\r\n        FontStyle FontStyle { get; set; }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the ForeColor\r\n        /// </summary>\r\n        Color ForeColor { get; set; }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the BackColor\r\n        /// </summary>\r\n        Color BackColor { get; set; }\r\n    }\r\n\r\n    /// <summary>\r\n    /// Basic implementation of IItemStyle\r\n    /// </summary>\r\n    public class SimpleItemStyle : Component, IItemStyle\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the font that will be applied by this style\r\n        /// </summary>\r\n        [DefaultValue(null)]\r\n        public Font Font\r\n        {\r\n            get { return font; }\r\n            set { font = value; }\r\n        }\r\n\r\n        private Font font;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the style of font that will be applied by this style\r\n        /// </summary>\r\n        [DefaultValue(FontStyle.Regular)]\r\n        public FontStyle FontStyle\r\n        {\r\n            get { return fontStyle; }\r\n            set { fontStyle = value; }\r\n        }\r\n\r\n        private FontStyle fontStyle;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the color of the text that will be applied by this style\r\n        /// </summary>\r\n        [DefaultValue(typeof (Color), \"\")]\r\n        public Color ForeColor\r\n        {\r\n            get { return foreColor; }\r\n            set { foreColor = value; }\r\n        }\r\n\r\n        private Color foreColor;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the background color that will be applied by this style\r\n        /// </summary>\r\n        [DefaultValue(typeof (Color), \"\")]\r\n        public Color BackColor\r\n        {\r\n            get { return backColor; }\r\n            set { backColor = value; }\r\n        }\r\n\r\n        private Color backColor;\r\n    }\r\n\r\n\r\n    /// <summary>\r\n    /// Instances of this class specify how should \"hot items\" (non-selected\r\n    /// rows under the cursor) be renderered.\r\n    /// </summary>\r\n    public class HotItemStyle : SimpleItemStyle\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the overlay that should be drawn as part of the hot item\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IOverlay Overlay {\r\n            get { return overlay; }\r\n            set { overlay = value; }\r\n        }\r\n        private IOverlay overlay;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the decoration that should be drawn as part of the hot item\r\n        /// </summary>\r\n        /// <remarks>A decoration is different from an overlay in that an decoration\r\n        /// scrolls with the listview contents, whilst an overlay does not.</remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IDecoration Decoration {\r\n            get { return decoration; }\r\n            set { decoration = value; }\r\n        }\r\n        private IDecoration decoration;\r\n    }\r\n\r\n    /// <summary>\r\n    /// This class defines how a cell should be formatted\r\n    /// </summary>\r\n    [TypeConverter(typeof(ExpandableObjectConverter))]\r\n    public class CellStyle : IItemStyle\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the font that will be applied by this style\r\n        /// </summary>\r\n        public Font Font {\r\n            get { return font; }\r\n            set { font = value; }\r\n        }\r\n        private Font font;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the style of font that will be applied by this style\r\n        /// </summary>\r\n        [DefaultValue(FontStyle.Regular)]\r\n        public FontStyle FontStyle {\r\n            get { return fontStyle; }\r\n            set { fontStyle = value; }\r\n        }\r\n        private FontStyle fontStyle;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the color of the text that will be applied by this style\r\n        /// </summary>\r\n        [DefaultValue(typeof(Color), \"\")]\r\n        public Color ForeColor {\r\n            get { return foreColor; }\r\n            set { foreColor = value; }\r\n        }\r\n        private Color foreColor;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the background color that will be applied by this style\r\n        /// </summary>\r\n        [DefaultValue(typeof(Color), \"\")]\r\n        public Color BackColor {\r\n            get { return backColor; }\r\n            set { backColor = value; }\r\n        }\r\n        private Color backColor;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Instances of this class describe how hyperlinks will appear\r\n    /// </summary>\r\n    public class HyperlinkStyle : Component\r\n    {\r\n        /// <summary>\r\n        /// Create a HyperlinkStyle\r\n        /// </summary>\r\n        public HyperlinkStyle() {\r\n            Normal = new CellStyle();\r\n            Normal.ForeColor = Color.Blue;\r\n            Over = new CellStyle();\r\n            Over.FontStyle = FontStyle.Underline;\r\n            Visited = new CellStyle();\r\n            Visited.ForeColor = Color.Purple;\r\n            OverCursor = Cursors.Hand;\r\n        }\r\n\r\n        /// <summary>\r\n        /// What sort of formatting should be applied to hyperlinks in their normal state?\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         Description(\"How should hyperlinks be drawn\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public CellStyle Normal\r\n        {\r\n            get { return normalStyle; }\r\n            set { normalStyle = value; }\r\n        }\r\n        private CellStyle normalStyle;\r\n\r\n        /// <summary>\r\n        /// What sort of formatting should be applied to hyperlinks when the mouse is over them?\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         Description(\"How should hyperlinks be drawn when the mouse is over them?\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public CellStyle Over\r\n        {\r\n            get { return overStyle; }\r\n            set { overStyle = value; }\r\n        }\r\n        private CellStyle overStyle;\r\n\r\n        /// <summary>\r\n        /// What sort of formatting should be applied to hyperlinks after they have been clicked?\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         Description(\"How should hyperlinks be drawn after they have been clicked\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public CellStyle Visited\r\n        {\r\n            get { return visitedStyle; }\r\n            set { visitedStyle = value; }\r\n        }\r\n        private CellStyle visitedStyle;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the cursor that should be shown when the mouse is over a hyperlink.\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         Description(\"What cursor should be shown when the mouse is over a link?\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public Cursor OverCursor\r\n        {\r\n            get { return overCursor; }\r\n            set { overCursor = value; }\r\n        }\r\n        private Cursor overCursor;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Instances of this class control one the styling of one particular state\r\n    /// (normal, hot, pressed) of a header control\r\n    /// </summary>\r\n    [TypeConverter(typeof(ExpandableObjectConverter))]\r\n    public class HeaderStateStyle\r\n    {\r\n        /// <summary>\r\n        /// Gets or sets the font that will be applied by this style\r\n        /// </summary>\r\n        [DefaultValue(null)]\r\n        public Font Font {\r\n            get { return font; }\r\n            set { font = value; }\r\n        }\r\n        private Font font;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the color of the text that will be applied by this style\r\n        /// </summary>\r\n        [DefaultValue(typeof(Color), \"\")]\r\n        public Color ForeColor {\r\n            get { return foreColor; }\r\n            set { foreColor = value; }\r\n        }\r\n        private Color foreColor;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the background color that will be applied by this style\r\n        /// </summary>\r\n        [DefaultValue(typeof(Color), \"\")]\r\n        public Color BackColor {\r\n            get { return backColor; }\r\n            set { backColor = value; }\r\n        }\r\n        private Color backColor;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the color in which a frame will be drawn around the header for this column\r\n        /// </summary>\r\n        [DefaultValue(typeof(Color), \"\")]\r\n        public Color FrameColor {\r\n            get { return frameColor; }\r\n            set { frameColor = value; }\r\n        }\r\n        private Color frameColor;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the width of the frame that will be drawn around the header for this column\r\n        /// </summary>\r\n        [DefaultValue(0.0f)]\r\n        public float FrameWidth {\r\n            get { return frameWidth; }\r\n            set { frameWidth = value; }\r\n        }\r\n        private float frameWidth;\r\n    }\r\n\r\n    /// <summary>\r\n    /// This class defines how a header should be formatted in its various states.\r\n    /// </summary>\r\n    public class HeaderFormatStyle : Component\r\n    {\r\n        /// <summary>\r\n        /// Create a new HeaderFormatStyle\r\n        /// </summary>\r\n        public HeaderFormatStyle() {\r\n            Hot = new HeaderStateStyle();\r\n            Normal = new HeaderStateStyle();\r\n            Pressed = new HeaderStateStyle();\r\n        }\r\n\r\n        /// <summary>\r\n        /// What sort of formatting should be applied to a column header when the mouse is over it?\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         Description(\"How should the header be drawn when the mouse is over it?\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public HeaderStateStyle Hot\r\n        {\r\n            get { return hotStyle; }\r\n            set { hotStyle = value; }\r\n        }\r\n        private HeaderStateStyle hotStyle;\r\n\r\n        /// <summary>\r\n        /// What sort of formatting should be applied to a column header in its normal state?\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         Description(\"How should a column header normally be drawn\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public HeaderStateStyle Normal\r\n        {\r\n            get { return normalStyle; }\r\n            set { normalStyle = value; }\r\n        }\r\n        private HeaderStateStyle normalStyle;\r\n\r\n        /// <summary>\r\n        /// What sort of formatting should be applied to a column header when pressed?\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         Description(\"How should a column header be drawn when it is pressed\")]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public HeaderStateStyle Pressed\r\n        {\r\n            get { return pressedStyle; }\r\n            set { pressedStyle = value; }\r\n        }\r\n        private HeaderStateStyle pressedStyle;\r\n\r\n        /// <summary>\r\n        /// Set the font for all three states\r\n        /// </summary>\r\n        /// <param name=\"font\"></param>\r\n        public void SetFont(Font font) {\r\n            Normal.Font = font;\r\n            Hot.Font = font;\r\n            Pressed.Font = font;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the fore color for all three states\r\n        /// </summary>\r\n        /// <param name=\"color\"></param>\r\n        public void SetForeColor(Color color) {\r\n            Normal.ForeColor = color;\r\n            Hot.ForeColor = color;\r\n            Pressed.ForeColor = color;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the back color for all three states\r\n        /// </summary>\r\n        /// <param name=\"color\"></param>\r\n        public void SetBackColor(Color color) {\r\n            Normal.BackColor = color;\r\n            Hot.BackColor = color;\r\n            Pressed.BackColor = color;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Rendering/TreeRenderer.cs",
    "content": "﻿/*\r\n * TreeRenderer - Draw the major column in a TreeListView\r\n *\r\n * Author: Phillip Piper\r\n * Date: 27/06/2015 \r\n *\r\n * Change log:\r\n * 2016-07-17  JPP  - Added TreeRenderer.UseTriangles and IsShowGlyphs\r\n * 2015-06-27  JPP  - Split out from TreeListView.cs\r\n * \r\n */\r\n\r\nusing System.Collections.Generic;\r\nusing System.Drawing;\r\nusing System.Windows.Forms;\r\nusing System.Windows.Forms.VisualStyles;\r\nusing System.Drawing.Drawing2D;\r\nusing System.ComponentModel;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    public partial class TreeListView {\r\n        /// <summary>\r\n        /// This class handles drawing the tree structure of the primary column.\r\n        /// </summary>\r\n        public class TreeRenderer : HighlightTextRenderer {\r\n            /// <summary>\r\n            /// Create a TreeRenderer\r\n            /// </summary>\r\n            public TreeRenderer() {\r\n                LinePen = new Pen(Color.Blue, 1.0f);\r\n                LinePen.DashStyle = DashStyle.Dot;\r\n            }\r\n\r\n            #region Configuration properties\r\n\r\n            /// <summary>\r\n            /// Should the renderer draw glyphs at the expansion points?\r\n            /// </summary>\r\n            /// <remarks>The expansion points will still function to expand/collapse even if this is false.</remarks>\r\n            [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n            public bool IsShowGlyphs\r\n            {\r\n                get { return isShowGlyphs; }\r\n                set { isShowGlyphs = value; }\r\n            }\r\n            private bool isShowGlyphs = true;\r\n\r\n            /// <summary>\r\n            /// Should the renderer draw lines connecting siblings?\r\n            /// </summary>\r\n            [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n            public bool IsShowLines\r\n            {\r\n                get { return isShowLines; }\r\n                set { isShowLines = value; }\r\n            }\r\n            private bool isShowLines = true;\r\n\r\n            /// <summary>\r\n            /// Return the pen that will be used to draw the lines between branches\r\n            /// </summary>\r\n            [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n            public Pen LinePen\r\n            {\r\n                get { return linePen; }\r\n                set { linePen = value; }\r\n            }\r\n            private Pen linePen;\r\n\r\n            /// <summary>\r\n            /// Should the renderer draw triangles as the expansion glyphs?\r\n            /// </summary>\r\n            /// <remarks>\r\n            /// This looks best with ShowLines = false\r\n            /// </remarks>\r\n            [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n            public bool UseTriangles\r\n            {\r\n                get { return useTriangles; }\r\n                set { useTriangles = value; }\r\n            }\r\n            private bool useTriangles = false;\r\n\r\n            #endregion\r\n\r\n            /// <summary>\r\n            /// Return the branch that the renderer is currently drawing.\r\n            /// </summary>\r\n            private Branch Branch {\r\n                get {\r\n                    return TreeListView.TreeModel.GetBranch(RowObject);\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Return the TreeListView for which the renderer is being used.\r\n            /// </summary>\r\n            public TreeListView TreeListView {\r\n                get {\r\n                    return (TreeListView)ListView;\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// How many pixels will be reserved for each level of indentation?\r\n            /// </summary>\r\n            public static int PIXELS_PER_LEVEL = 16 + 1;\r\n\r\n            /// <summary>\r\n            /// The real work of drawing the tree is done in this method\r\n            /// </summary>\r\n            /// <param name=\"g\"></param>\r\n            /// <param name=\"r\"></param>\r\n            public override void Render(Graphics g, Rectangle r) {\r\n                DrawBackground(g, r);\r\n\r\n                Branch br = Branch;\r\n\r\n                Rectangle paddedRectangle = ApplyCellPadding(r);\r\n\r\n                Rectangle expandGlyphRectangle = paddedRectangle;\r\n                expandGlyphRectangle.Offset((br.Level - 1) * PIXELS_PER_LEVEL, 0);\r\n                expandGlyphRectangle.Width = PIXELS_PER_LEVEL;\r\n                expandGlyphRectangle.Height = PIXELS_PER_LEVEL;\r\n                expandGlyphRectangle.Y = AlignVertically(paddedRectangle, expandGlyphRectangle);\r\n                int expandGlyphRectangleMidVertical = expandGlyphRectangle.Y + (expandGlyphRectangle.Height/2);\r\n\r\n                if (IsShowLines)\r\n                    DrawLines(g, r, LinePen, br, expandGlyphRectangleMidVertical);\r\n\r\n                if (br.CanExpand && IsShowGlyphs) \r\n                    DrawExpansionGlyph(g, expandGlyphRectangle, br.IsExpanded);\r\n\r\n                int indent = br.Level * PIXELS_PER_LEVEL;\r\n                paddedRectangle.Offset(indent, 0);\r\n                paddedRectangle.Width -= indent;\r\n\r\n                DrawImageAndText(g, paddedRectangle);\r\n            }\r\n\r\n            /// <summary>\r\n            /// Draw the expansion indicator\r\n            /// </summary>\r\n            /// <param name=\"g\"></param>\r\n            /// <param name=\"r\"></param>\r\n            /// <param name=\"isExpanded\"></param>\r\n            protected virtual void DrawExpansionGlyph(Graphics g, Rectangle r, bool isExpanded) {\r\n                if (UseStyles) {\r\n                    DrawExpansionGlyphStyled(g, r, isExpanded);\r\n                } else {\r\n                    DrawExpansionGlyphManual(g, r, isExpanded);\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Gets whether or not we should render using styles\r\n            /// </summary>\r\n            protected virtual bool UseStyles {\r\n                get {\r\n                    return !IsPrinting && Application.RenderWithVisualStyles;\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Draw the expansion indicator using styles\r\n            /// </summary>\r\n            /// <param name=\"g\"></param>\r\n            /// <param name=\"r\"></param>\r\n            /// <param name=\"isExpanded\"></param>\r\n            protected virtual void DrawExpansionGlyphStyled(Graphics g, Rectangle r, bool isExpanded) {\r\n                if (UseTriangles && IsShowLines) {\r\n                    using (SolidBrush b = new SolidBrush(GetBackgroundColor())) {\r\n                        Rectangle r2 = r;\r\n                        r2.Inflate(-2, -2);\r\n                        g.FillRectangle(b, r2);\r\n                    }\r\n                }\r\n\r\n                VisualStyleRenderer renderer = new VisualStyleRenderer(DecideVisualElement(isExpanded));\r\n                renderer.DrawBackground(g, r);\r\n            }\r\n\r\n            private VisualStyleElement DecideVisualElement(bool isExpanded) {\r\n                string klass = UseTriangles ? \"Explorer::TreeView\" : \"TREEVIEW\";\r\n                int part = UseTriangles && IsExpansionHot ? 4 : 2;\r\n                int state = isExpanded ? 2 : 1;\r\n                return VisualStyleElement.CreateElement(klass, part, state);\r\n            }\r\n\r\n            /// <summary>\r\n            /// Is the mouse over a checkbox in this cell?\r\n            /// </summary>\r\n            protected bool IsExpansionHot {\r\n                get { return IsCellHot && ListView.HotCellHitLocation == HitTestLocation.ExpandButton; }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Draw the expansion indicator without using styles\r\n            /// </summary>\r\n            /// <param name=\"g\"></param>\r\n            /// <param name=\"r\"></param>\r\n            /// <param name=\"isExpanded\"></param>\r\n            protected virtual void DrawExpansionGlyphManual(Graphics g, Rectangle r, bool isExpanded) {\r\n                int h = 8;\r\n                int w = 8;\r\n                int x = r.X + 4;\r\n                int y = r.Y + (r.Height / 2) - 4;\r\n\r\n                g.DrawRectangle(new Pen(SystemBrushes.ControlDark), x, y, w, h);\r\n                g.FillRectangle(Brushes.White, x + 1, y + 1, w - 1, h - 1);\r\n                g.DrawLine(Pens.Black, x + 2, y + 4, x + w - 2, y + 4);\r\n\r\n                if (!isExpanded)\r\n                    g.DrawLine(Pens.Black, x + 4, y + 2, x + 4, y + h - 2);\r\n            }\r\n\r\n            /// <summary>\r\n            /// Draw the lines of the tree\r\n            /// </summary>\r\n            /// <param name=\"g\"></param>\r\n            /// <param name=\"r\"></param>\r\n            /// <param name=\"p\"></param>\r\n            /// <param name=\"br\"></param>\r\n            /// <param name=\"glyphMidVertical\"> </param>\r\n            protected virtual void DrawLines(Graphics g, Rectangle r, Pen p, Branch br, int glyphMidVertical) {\r\n                Rectangle r2 = r;\r\n                r2.Width = PIXELS_PER_LEVEL;\r\n\r\n                // Vertical lines have to start on even points, otherwise the dotted line looks wrong.\r\n                // This is only needed if pen is dotted.\r\n                int top = r2.Top;\r\n                //if (p.DashStyle == DashStyle.Dot && (top & 1) == 0)\r\n                //    top += 1;\r\n\r\n                // Draw lines for ancestors\r\n                int midX;\r\n                IList<Branch> ancestors = br.Ancestors;\r\n                foreach (Branch ancestor in ancestors) {\r\n                    if (!ancestor.IsLastChild && !ancestor.IsOnlyBranch) {\r\n                        midX = r2.Left + r2.Width / 2;\r\n                        g.DrawLine(p, midX, top, midX, r2.Bottom);\r\n                    }\r\n                    r2.Offset(PIXELS_PER_LEVEL, 0);\r\n                }\r\n\r\n                // Draw lines for this branch\r\n                midX = r2.Left + r2.Width / 2;\r\n\r\n                // Horizontal line first\r\n                g.DrawLine(p, midX, glyphMidVertical, r2.Right, glyphMidVertical);\r\n\r\n                // Vertical line second\r\n                if (br.IsFirstBranch) {\r\n                    if (!br.IsLastChild && !br.IsOnlyBranch)\r\n                        g.DrawLine(p, midX, glyphMidVertical, midX, r2.Bottom);\r\n                } else {\r\n                    if (br.IsLastChild)\r\n                        g.DrawLine(p, midX, top, midX, glyphMidVertical);\r\n                    else\r\n                        g.DrawLine(p, midX, top, midX, r2.Bottom);\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Do the hit test\r\n            /// </summary>\r\n            /// <param name=\"g\"></param>\r\n            /// <param name=\"hti\"></param>\r\n            /// <param name=\"x\"></param>\r\n            /// <param name=\"y\"></param>\r\n            protected override void HandleHitTest(Graphics g, OlvListViewHitTestInfo hti, int x, int y) {\r\n                Branch br = Branch;\r\n\r\n                Rectangle r = ApplyCellPadding(Bounds);\r\n                if (br.CanExpand) {\r\n                    r.Offset((br.Level - 1) * PIXELS_PER_LEVEL, 0);\r\n                    r.Width = PIXELS_PER_LEVEL;\r\n                    if (r.Contains(x, y)) {\r\n                        hti.HitTestLocation = HitTestLocation.ExpandButton;\r\n                        return;\r\n                    }\r\n                }\r\n\r\n                r = Bounds;\r\n                int indent = br.Level * PIXELS_PER_LEVEL;\r\n                r.X += indent;\r\n                r.Width -= indent;\r\n\r\n                // Ignore events in the indent zone\r\n                if (x < r.Left) {\r\n                    hti.HitTestLocation = HitTestLocation.Nothing;\r\n                } else {\r\n                    StandardHitTest(g, hti, r, x, y);\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Calculate the edit rect\r\n            /// </summary>\r\n            /// <param name=\"g\"></param>\r\n            /// <param name=\"cellBounds\"></param>\r\n            /// <param name=\"item\"></param>\r\n            /// <param name=\"subItemIndex\"></param>\r\n            /// <param name=\"preferredSize\"> </param>\r\n            /// <returns></returns>\r\n            protected override Rectangle HandleGetEditRectangle(Graphics g, Rectangle cellBounds, OLVListItem item, int subItemIndex, Size preferredSize) {\r\n                return StandardGetEditRectangle(g, cellBounds, preferredSize);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/ObjectListView/SubControls/GlassPanelForm.cs",
    "content": "﻿/*\r\n * GlassPanelForm - A transparent form that is placed over an ObjectListView\r\n * to allow flicker-free overlay images during scrolling.\r\n *\r\n * Author: Phillip Piper\r\n * Date: 14/04/2009 4:36 PM\r\n *\r\n * Change log:\r\n * 2010-08-18   JPP  - Added WS_EX_TOOLWINDOW style so that the form won't appear in Alt-Tab list.\r\n * v2.4\r\n * 2010-03-11   JPP  - Work correctly in MDI applications -- more or less. Actually, less than more.\r\n *                     They don't crash but they don't correctly handle overlapping MDI children.\r\n *                     Overlays from one control are shown on top of other other windows.\r\n * 2010-03-09   JPP  - Correctly Unbind() when the related ObjectListView is disposed.\r\n * 2009-10-28   JPP  - Use FindForm() rather than TopMostControl, since the latter doesn't work\r\n *                     as I expected when the OLV is part of an MDI child window. Thanks to\r\n *                     wvd_vegt who tracked this down.\r\n * v2.3\r\n * 2009-08-19   JPP  - Only hide the glass pane on resize, not on move\r\n *                   - Each glass panel now only draws one overlays\r\n * v2.2\r\n * 2009-06-05   JPP  - Handle when owning window is a topmost window\r\n * 2009-04-14   JPP  - Initial version\r\n *\r\n * To do:\r\n * \r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Drawing;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A GlassPanelForm sits transparently over an ObjectListView to show overlays.\r\n    /// </summary>\r\n    internal partial class GlassPanelForm : Form\r\n    {\r\n        public GlassPanelForm() {\r\n            Name = \"GlassPanelForm\";\r\n            Text = \"GlassPanelForm\";\r\n\r\n            ClientSize = new Size(0, 0);\r\n            ControlBox = false;\r\n            FormBorderStyle = FormBorderStyle.None;\r\n            SizeGripStyle = SizeGripStyle.Hide;\r\n            StartPosition = FormStartPosition.Manual;\r\n            MaximizeBox = false;\r\n            MinimizeBox = false;\r\n            ShowIcon = false;\r\n            ShowInTaskbar = false;\r\n            FormBorderStyle = FormBorderStyle.None;\r\n\r\n            SetStyle(ControlStyles.Selectable, false);\r\n            \r\n            Opacity = 0.5f;\r\n            BackColor = Color.FromArgb(255, 254, 254, 254);\r\n            TransparencyKey = BackColor;\r\n            HideGlass();\r\n            NativeMethods.ShowWithoutActivate(this);\r\n        }\r\n\r\n        protected override void Dispose(bool disposing) {\r\n            if (disposing)\r\n                Unbind();\r\n\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Get the low-level windows flag that will be given to CreateWindow.\r\n        /// </summary>\r\n        protected override CreateParams CreateParams {\r\n            get {\r\n                CreateParams cp = base.CreateParams;\r\n                cp.ExStyle |= 0x20; // WS_EX_TRANSPARENT\r\n                cp.ExStyle |= 0x80; // WS_EX_TOOLWINDOW \r\n                return cp;\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// Attach this form to the given ObjectListView\r\n        /// </summary>        \r\n        public void Bind(ObjectListView olv, IOverlay overlay) {\r\n            if (objectListView != null)\r\n                Unbind();\r\n\r\n            objectListView = olv;\r\n            Overlay = overlay;\r\n            mdiClient = null;\r\n            mdiOwner = null;\r\n\r\n            if (objectListView == null)\r\n                return;\r\n\r\n            // NOTE: If you listen to any events here, you *must* stop listening in Unbind()\r\n\r\n            objectListView.Disposed += new EventHandler(objectListView_Disposed);\r\n            objectListView.LocationChanged += new EventHandler(objectListView_LocationChanged);\r\n            objectListView.SizeChanged += new EventHandler(objectListView_SizeChanged);\r\n            objectListView.VisibleChanged += new EventHandler(objectListView_VisibleChanged);\r\n            objectListView.ParentChanged += new EventHandler(objectListView_ParentChanged);\r\n\r\n            // Collect our ancestors in the widget hierachy\r\n            if (ancestors == null)\r\n                ancestors = new List<Control>();\r\n            Control parent = objectListView.Parent;\r\n            while (parent != null) {\r\n                ancestors.Add(parent);\r\n                parent = parent.Parent;\r\n            } \r\n\r\n            // Listen for changes in the hierachy\r\n            foreach (Control ancestor in ancestors) {\r\n                ancestor.ParentChanged += new EventHandler(objectListView_ParentChanged);\r\n                if (ancestor is TabControl tabControl) {\r\n                    tabControl.Selected += new TabControlEventHandler(tabControl_Selected);\r\n                }\r\n            }\r\n\r\n            // Listen for changes in our owning form\r\n            Owner = objectListView.FindForm();\r\n            myOwner = Owner;\r\n            if (Owner != null) {\r\n                Owner.LocationChanged += new EventHandler(Owner_LocationChanged);\r\n                Owner.SizeChanged += new EventHandler(Owner_SizeChanged);\r\n                Owner.ResizeBegin += new EventHandler(Owner_ResizeBegin);\r\n                Owner.ResizeEnd += new EventHandler(Owner_ResizeEnd);\r\n                if (Owner.TopMost) {\r\n                    // We can't do this.TopMost = true; since that will activate the panel,\r\n                    // taking focus away from the owner of the listview\r\n                    NativeMethods.MakeTopMost(this);\r\n                }\r\n\r\n                // We need special code to handle MDI\r\n                mdiOwner = Owner.MdiParent;\r\n                if (mdiOwner != null) {\r\n                    mdiOwner.LocationChanged += new EventHandler(Owner_LocationChanged);\r\n                    mdiOwner.SizeChanged += new EventHandler(Owner_SizeChanged);\r\n                    mdiOwner.ResizeBegin += new EventHandler(Owner_ResizeBegin);\r\n                    mdiOwner.ResizeEnd += new EventHandler(Owner_ResizeEnd);\r\n\r\n                    // Find the MDIClient control, which houses all MDI children\r\n                    foreach (Control c in mdiOwner.Controls) {\r\n                        mdiClient = c as MdiClient;\r\n                        if (mdiClient != null) {\r\n                            break;\r\n                        }\r\n                    }\r\n                    if (mdiClient != null) {\r\n                        mdiClient.ClientSizeChanged += new EventHandler(myMdiClient_ClientSizeChanged);\r\n                    }\r\n                }\r\n            }\r\n\r\n            UpdateTransparency();\r\n        }\r\n\r\n        void myMdiClient_ClientSizeChanged(object sender, EventArgs e) {\r\n            RecalculateBounds();\r\n            Invalidate();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Made the overlay panel invisible\r\n        /// </summary>\r\n        public void HideGlass() {\r\n            if (!isGlassShown)\r\n                return;\r\n            isGlassShown = false;\r\n            Bounds = new Rectangle(-10000, -10000, 1, 1);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Show the overlay panel in its correctly location\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If the panel is always shown, this method does nothing.\r\n        /// If the panel is being resized, this method also does nothing.\r\n        /// </remarks>\r\n        public void ShowGlass() {\r\n            if (isGlassShown || isDuringResizeSequence)\r\n                return;\r\n\r\n            isGlassShown = true;\r\n            RecalculateBounds();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Detach this glass panel from its previous ObjectListView\r\n        /// </summary>        \r\n        /// <remarks>\r\n        /// You should unbind the overlay panel before making any changes to the \r\n        /// widget hierarchy.\r\n        /// </remarks>\r\n        public void Unbind() {\r\n            if (objectListView != null) {\r\n                objectListView.Disposed -= new EventHandler(objectListView_Disposed);\r\n                objectListView.LocationChanged -= new EventHandler(objectListView_LocationChanged);\r\n                objectListView.SizeChanged -= new EventHandler(objectListView_SizeChanged);\r\n                objectListView.VisibleChanged -= new EventHandler(objectListView_VisibleChanged);\r\n                objectListView.ParentChanged -= new EventHandler(objectListView_ParentChanged);\r\n                objectListView = null;\r\n            }\r\n\r\n            if (ancestors != null) {\r\n                foreach (Control parent in ancestors) {\r\n                    parent.ParentChanged -= new EventHandler(objectListView_ParentChanged);\r\n                    if (parent is TabControl tabControl) {\r\n                        tabControl.Selected -= new TabControlEventHandler(tabControl_Selected);\r\n                    }\r\n                }\r\n                ancestors = null;\r\n            }\r\n\r\n            if (myOwner != null) {\r\n                myOwner.LocationChanged -= new EventHandler(Owner_LocationChanged);\r\n                myOwner.SizeChanged -= new EventHandler(Owner_SizeChanged);\r\n                myOwner.ResizeBegin -= new EventHandler(Owner_ResizeBegin);\r\n                myOwner.ResizeEnd -= new EventHandler(Owner_ResizeEnd);\r\n                myOwner = null;\r\n            }\r\n\r\n            if (mdiOwner != null) {\r\n                mdiOwner.LocationChanged -= new EventHandler(Owner_LocationChanged);\r\n                mdiOwner.SizeChanged -= new EventHandler(Owner_SizeChanged);\r\n                mdiOwner.ResizeBegin -= new EventHandler(Owner_ResizeBegin);\r\n                mdiOwner.ResizeEnd -= new EventHandler(Owner_ResizeEnd);\r\n                mdiOwner = null;\r\n            }\r\n\r\n            if (mdiClient != null) {\r\n                mdiClient.ClientSizeChanged -= new EventHandler(myMdiClient_ClientSizeChanged);\r\n                mdiClient = null;\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Event Handlers\r\n\r\n        void objectListView_Disposed(object sender, EventArgs e) {\r\n            Unbind();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle when the form that owns the ObjectListView begins to be resized\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        void Owner_ResizeBegin(object sender, EventArgs e) {\r\n            // When the top level window is being resized, we just want to hide\r\n            // the overlay window. When the resizing finishes, we want to show\r\n            // the overlay window, if it was shown before the resize started.\r\n            isDuringResizeSequence = true;\r\n            wasGlassShownBeforeResize = isGlassShown;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle when the form that owns the ObjectListView finished to be resized\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        void Owner_ResizeEnd(object sender, EventArgs e) {\r\n            isDuringResizeSequence = false;\r\n            if (wasGlassShownBeforeResize)\r\n                ShowGlass();\r\n        }\r\n\r\n        /// <summary>\r\n        /// The owning form has moved. Move the overlay panel too.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        void Owner_LocationChanged(object sender, EventArgs e) {\r\n            if (mdiOwner != null)\r\n                HideGlass();\r\n            else\r\n                RecalculateBounds();\r\n        }\r\n\r\n        /// <summary>\r\n        /// The owning form is resizing. Hide our overlay panel until the resizing stops\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        void Owner_SizeChanged(object sender, EventArgs e) {\r\n            HideGlass();\r\n        }\r\n\r\n\r\n        /// <summary>\r\n        /// Handle when the bound OLV changes its location. The overlay panel must \r\n        /// be moved too, IFF it is currently visible.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        void objectListView_LocationChanged(object sender, EventArgs e) {\r\n            if (isGlassShown) {\r\n                RecalculateBounds();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle when the bound OLV changes size. The overlay panel must \r\n        /// resize too, IFF it is currently visible.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        void objectListView_SizeChanged(object sender, EventArgs e) {\r\n            // This event is triggered in all sorts of places, and not always when the size changes.\r\n            //if (this.isGlassShown) {\r\n            //    this.Size = this.objectListView.ClientSize;\r\n            //}\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle when the bound OLV is part of a TabControl and that\r\n        /// TabControl changes tabs. The overlay panel is hidden. The\r\n        /// first time the bound OLV is redrawn, the overlay panel will\r\n        /// be shown again.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        void tabControl_Selected(object sender, TabControlEventArgs e) {\r\n            HideGlass();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Somewhere the parent of the bound OLV has changed. Update\r\n        /// our events.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        void objectListView_ParentChanged(object sender, EventArgs e) {\r\n            ObjectListView olv = objectListView;\r\n            IOverlay overlay = Overlay;\r\n            Unbind();\r\n            Bind(olv, overlay);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle when the bound OLV changes its visibility.\r\n        /// The overlay panel should match the OLV's visibility.\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        void objectListView_VisibleChanged(object sender, EventArgs e) {\r\n            if (objectListView.Visible)\r\n                ShowGlass();\r\n            else\r\n                HideGlass();\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        protected override void OnPaint(PaintEventArgs e) {\r\n            if (objectListView == null || Overlay == null)\r\n                return;\r\n\r\n            Graphics g = e.Graphics;\r\n            g.TextRenderingHint = ObjectListView.TextRenderingHint;\r\n            g.SmoothingMode = ObjectListView.SmoothingMode;\r\n            //g.DrawRectangle(new Pen(Color.Green, 4.0f), this.ClientRectangle);\r\n\r\n            // If we are part of an MDI app, make sure we don't draw outside the bounds\r\n            if (mdiClient != null) {\r\n                Rectangle r = mdiClient.RectangleToScreen(mdiClient.ClientRectangle);\r\n                Rectangle r2 = objectListView.RectangleToClient(r);\r\n                g.SetClip(r2, System.Drawing.Drawing2D.CombineMode.Intersect);\r\n            }\r\n\r\n            Overlay.Draw(objectListView, g, objectListView.ClientRectangle);\r\n        }\r\n\r\n        protected void RecalculateBounds() {\r\n            if (!isGlassShown)\r\n                return;\r\n\r\n            Rectangle rect = objectListView.ClientRectangle;\r\n            rect.X = 0;\r\n            rect.Y = 0;\r\n            Bounds = objectListView.RectangleToScreen(rect);\r\n        }\r\n\r\n        internal void UpdateTransparency() {\r\n            if (Overlay is not ITransparentOverlay transparentOverlay)\r\n                Opacity = objectListView.OverlayTransparency / 255.0f;\r\n            else\r\n                Opacity = transparentOverlay.Transparency / 255.0f;\r\n        }\r\n\r\n        protected override void WndProc(ref Message m) {\r\n            const int WM_NCHITTEST = 132;\r\n            const int HTTRANSPARENT = -1;\r\n            switch (m.Msg) {\r\n                // Ignore all mouse interactions\r\n                case WM_NCHITTEST:\r\n                    m.Result = (IntPtr)HTTRANSPARENT;\r\n                    break;\r\n            }\r\n            base.WndProc(ref m);\r\n        }\r\n\r\n        #endregion\r\n        \r\n        #region Implementation variables\r\n\r\n        internal IOverlay Overlay;\r\n\r\n        #endregion\r\n\r\n        #region Private variables\r\n\r\n        private ObjectListView objectListView;\r\n        private bool isDuringResizeSequence;\r\n        private bool isGlassShown;\r\n        private bool wasGlassShownBeforeResize;\r\n\r\n        // Cache these so we can unsubscribe from events even when the OLV has been disposed.\r\n        private Form myOwner;\r\n        private Form mdiOwner;\r\n        private List<Control> ancestors;\r\n        MdiClient mdiClient;\r\n\r\n        #endregion\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/SubControls/HeaderControl.cs",
    "content": "/*\r\n * HeaderControl - A limited implementation of HeaderControl\r\n *\r\n * Author: Phillip Piper\r\n * Date: 25/11/2008 17:15 \r\n *\r\n * Change log:\r\n * 2015-06-12  JPP  - Use HeaderTextAlignOrDefault instead of HeaderTextAlign\r\n * 2014-09-07  JPP  - Added ability to have checkboxes in headers\r\n * \r\n * 2011-05-11  JPP  - Fixed bug that prevented columns from being resized in IDE Designer\r\n *                    by dragging the column divider\r\n * 2011-04-12  JPP  - Added ability to draw filter indicator in a column's header\r\n * v2.4.1\r\n * 2010-08-23  JPP  - Added ability to draw header vertically (thanks to Mark Fenwick)\r\n *                  - Uses OLVColumn.HeaderTextAlign to decide how to align the column's header\r\n * 2010-08-08  JPP  - Added ability to have image in header\r\n * v2.4\r\n * 2010-03-22  JPP  - Draw header using header styles\r\n * 2009-10-30  JPP  - Plugged GDI resource leak, where font handles were created during custom\r\n *                    drawing, but never destroyed\r\n * v2.3\r\n * 2009-10-03  JPP  - Handle when ListView.HeaderFormatStyle is None\r\n * 2009-08-24  JPP  - Handle the header being destroyed\r\n * v2.2.1\r\n * 2009-08-16  JPP  - Correctly handle header themes\r\n * 2009-08-15  JPP  - Added formatting capabilities: font, color, word wrap\r\n * v2.2\r\n * 2009-06-01  JPP  - Use ToolTipControl\r\n * 2009-05-10  JPP  - Removed all unsafe code\r\n * 2008-11-25  JPP  - Initial version\r\n *\r\n * TO DO:\r\n * - Put drawing code into header style object, so that it can be easily customized.\r\n * \r\n * Copyright (C) 2006-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Drawing;\r\nusing System.Windows.Forms;\r\nusing System.Runtime.InteropServices;\r\nusing System.Windows.Forms.VisualStyles;\r\nusing System.Drawing.Drawing2D;\r\nusing BrightIdeasSoftware.Properties;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// Class used to capture window messages for the header of the list view\r\n    /// control.\r\n    /// </summary>\r\n    public class HeaderControl : NativeWindow {\r\n        /// <summary>\r\n        /// Create a header control for the given ObjectListView.\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        public HeaderControl(ObjectListView olv) {\r\n            ListView = olv;\r\n            AssignHandle(NativeMethods.GetHeaderControl(olv));\r\n        }\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Return the index of the column under the current cursor position,\r\n        /// or -1 if the cursor is not over a column\r\n        /// </summary>\r\n        /// <returns>Index of the column under the cursor, or -1</returns>\r\n        public int ColumnIndexUnderCursor {\r\n            get {\r\n                Point pt = ScrolledCursorPosition;\r\n                return NativeMethods.GetColumnUnderPoint(Handle, pt);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the Windows handle behind this control\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// When an ObjectListView is initialized as part of a UserControl, the\r\n        /// GetHeaderControl() method returns 0 until the UserControl is\r\n        /// completely initialized. So the AssignHandle() call in the constructor\r\n        /// doesn't work. So we override the Handle property so value is always\r\n        /// current.\r\n        /// </remarks>\r\n        public new IntPtr Handle {\r\n            get { return NativeMethods.GetHeaderControl(ListView); }\r\n        }\r\n\r\n        //TODO: The Handle property may no longer be necessary. CHECK! 2008/11/28\r\n\r\n        /// <summary>\r\n        /// Gets or sets a style that should be applied to the font of the\r\n        /// column's header text when the mouse is over that column\r\n        /// </summary>\r\n        /// <remarks>THIS IS EXPERIMENTAL. USE AT OWN RISK. August 2009</remarks>\r\n        [Obsolete(\"Use HeaderStyle.Hot.FontStyle instead\")]\r\n        public FontStyle HotFontStyle {\r\n            get { return FontStyle.Regular; }\r\n            set { }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the index of the column under the cursor if the cursor is over it's checkbox\r\n        /// </summary>\r\n        protected int GetColumnCheckBoxUnderCursor() {\r\n            Point pt = ScrolledCursorPosition;\r\n\r\n            int columnIndex = NativeMethods.GetColumnUnderPoint(Handle, pt);\r\n            return IsPointOverHeaderCheckBox(columnIndex, pt) ? columnIndex : -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the client rectangle for the header\r\n        /// </summary>\r\n        public Rectangle ClientRectangle {\r\n            get {\r\n                Rectangle r = new Rectangle();\r\n                NativeMethods.GetClientRect(Handle, ref r);\r\n                return r;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return true if the given point is over the checkbox for the given column.\r\n        /// </summary>\r\n        /// <param name=\"columnIndex\"></param>\r\n        /// <param name=\"pt\"></param>\r\n        /// <returns></returns>\r\n        protected bool IsPointOverHeaderCheckBox(int columnIndex, Point pt) {\r\n            if (columnIndex < 0 || columnIndex >= ListView.Columns.Count)\r\n                return false;\r\n\r\n            OLVColumn column = ListView.GetColumn(columnIndex);\r\n            if (!HasCheckBox(column))\r\n                return false;\r\n\r\n            Rectangle r = GetCheckBoxBounds(column);\r\n            r.Inflate(1, 1); // make the target slightly bigger\r\n            return r.Contains(pt);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether the cursor is over a \"locked\" divider, i.e.\r\n        /// one that cannot be dragged by the user.\r\n        /// </summary>\r\n        protected bool IsCursorOverLockedDivider {\r\n            get {\r\n                Point pt = ScrolledCursorPosition;\r\n                int dividerIndex = NativeMethods.GetDividerUnderPoint(Handle, pt);\r\n                if (dividerIndex >= 0 && dividerIndex < ListView.Columns.Count) {\r\n                    OLVColumn column = ListView.GetColumn(dividerIndex);\r\n                    return column.IsFixedWidth || column.FillsFreeSpace;\r\n                } else\r\n                    return false;\r\n            }\r\n        }\r\n\r\n        private Point ScrolledCursorPosition {\r\n            get {\r\n                Point pt = ListView.PointToClient(Cursor.Position);\r\n                pt.X += ListView.LowLevelScrollPosition.X;\r\n                return pt;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the listview that this header belongs to\r\n        /// </summary>\r\n        protected ObjectListView ListView {\r\n            get { return listView; }\r\n            set { listView = value; }\r\n        }\r\n\r\n        private ObjectListView listView;\r\n\r\n        /// <summary>\r\n        /// Gets the maximum height of the header. -1 means no maximum.\r\n        /// </summary>\r\n        public int MaximumHeight\r\n        {\r\n            get { return ListView.HeaderMaximumHeight; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the minimum height of the header. -1 means no minimum.\r\n        /// </summary>\r\n        public int MinimumHeight\r\n        {\r\n            get { return ListView.HeaderMinimumHeight; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the ToolTip that shows tips for the header\r\n        /// </summary>\r\n        public ToolTipControl ToolTip {\r\n            get {\r\n                if (toolTip == null) {\r\n                    CreateToolTip();\r\n                }\r\n                return toolTip;\r\n            }\r\n            protected set { toolTip = value; }\r\n        }\r\n\r\n        private ToolTipControl toolTip;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether the text in column headers should be word\r\n        /// wrapped when it is too long to fit within the column\r\n        /// </summary>\r\n        public bool WordWrap {\r\n            get { return wordWrap; }\r\n            set { wordWrap = value; }\r\n        }\r\n\r\n        private bool wordWrap;\r\n        \r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// Calculate how height the header needs to be\r\n        /// </summary>\r\n        /// <returns>Height in pixels</returns>\r\n        protected int CalculateHeight(Graphics g) {\r\n            TextFormatFlags flags = TextFormatFlags;\r\n            int columnUnderCursor = ColumnIndexUnderCursor;\r\n            float height = MinimumHeight;\r\n            for (int i = 0; i < ListView.Columns.Count; i++) {\r\n                OLVColumn column = ListView.GetColumn(i);\r\n                height = Math.Max(height, CalculateColumnHeight(g, column, flags, columnUnderCursor == i, i));\r\n            }\r\n            return MaximumHeight == -1 ? (int) height : Math.Min(MaximumHeight, (int) height);\r\n        }\r\n\r\n        private float CalculateColumnHeight(Graphics g, OLVColumn column, TextFormatFlags flags, bool isHot, int i) {\r\n            Font f = CalculateFont(column, isHot, false);\r\n            if (column.IsHeaderVertical)\r\n                return TextRenderer.MeasureText(g, column.Text, f, new Size(10000, 10000), flags).Width;\r\n\r\n            const int fudge = 9; // 9 is a magic constant that makes it perfectly match XP behavior\r\n            if (!WordWrap)\r\n                return f.Height + fudge;\r\n\r\n            Rectangle r = GetHeaderDrawRect(i);\r\n            if (HasNonThemedSortIndicator(column))\r\n                r.Width -= 16;\r\n            if (column.HasHeaderImage)\r\n                r.Width -= column.ImageList.ImageSize.Width + 3;\r\n            if (HasFilterIndicator(column))\r\n                r.Width -= CalculateFilterIndicatorWidth(r);\r\n            if (HasCheckBox(column))\r\n                r.Width -= CalculateCheckBoxBounds(g, r).Width;\r\n            SizeF size = TextRenderer.MeasureText(g, column.Text, f, new Size(r.Width, 100), flags);\r\n            return size.Height + fudge;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get the bounds of the checkbox against the given column\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns></returns>\r\n        public Rectangle GetCheckBoxBounds(OLVColumn column) {\r\n            Rectangle r = GetHeaderDrawRect(column.Index);\r\n\r\n            using (Graphics g = ListView.CreateGraphics())\r\n                return CalculateCheckBoxBounds(g, r);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should the given column be drawn with a checkbox against it?\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns></returns>\r\n        public bool HasCheckBox(OLVColumn column) {\r\n            return column.HeaderCheckBox || column.HeaderTriStateCheckBox;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should the given column show a sort indicator?\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns></returns>\r\n        protected bool HasSortIndicator(OLVColumn column) {\r\n            if (!ListView.ShowSortIndicators)\r\n                return false;\r\n            return column == ListView.LastSortColumn && ListView.LastSortOrder != SortOrder.None;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should the given column be drawn with a filter indicator against it?\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns></returns>\r\n        protected bool HasFilterIndicator(OLVColumn column) {\r\n            return (ListView.UseFiltering && ListView.UseFilterIndicator && column.HasFilterIndicator);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should the given column show a non-themed sort indicator?\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns></returns>\r\n        protected bool HasNonThemedSortIndicator(OLVColumn column) {\r\n            if (!ListView.ShowSortIndicators)\r\n                return false;\r\n            if (VisualStyleRenderer.IsSupported)\r\n                return !VisualStyleRenderer.IsElementDefined(VisualStyleElement.Header.SortArrow.SortedUp) &&\r\n                    HasSortIndicator(column);\r\n            else\r\n                return HasSortIndicator(column);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the bounds of the item with the given index\r\n        /// </summary>\r\n        /// <param name=\"itemIndex\"></param>\r\n        /// <returns></returns>\r\n        public Rectangle GetItemRect(int itemIndex) {\r\n            const int HDM_FIRST = 0x1200;\r\n            const int HDM_GETITEMRECT = HDM_FIRST + 7;\r\n            NativeMethods.RECT r = new NativeMethods.RECT();\r\n            NativeMethods.SendMessageRECT(Handle, HDM_GETITEMRECT, itemIndex, ref r);\r\n            return Rectangle.FromLTRB(r.left, r.top, r.right, r.bottom);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the bounds within which the given column will be drawn\r\n        /// </summary>\r\n        /// <param name=\"itemIndex\"></param>\r\n        /// <returns></returns>\r\n        public Rectangle GetHeaderDrawRect(int itemIndex) {\r\n            Rectangle r = GetItemRect(itemIndex);\r\n\r\n            // Tweak the text rectangle a little to improve aethestics\r\n            r.Inflate(-3, 0);\r\n            r.Y -= 2;\r\n\r\n            return r;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Force the header to redraw by invalidating it\r\n        /// </summary>\r\n        public void Invalidate() {\r\n            NativeMethods.InvalidateRect(Handle, 0, true);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Force the header to redraw a single column by invalidating it\r\n        /// </summary>\r\n        public void Invalidate(OLVColumn column) {\r\n            NativeMethods.InvalidateRect(Handle, 0, true); // todo\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Tooltip\r\n\r\n        /// <summary>\r\n        /// Create a native tool tip control for this listview\r\n        /// </summary>\r\n        protected virtual void CreateToolTip() {\r\n            ToolTip = new ToolTipControl();\r\n            ToolTip.Create(Handle);\r\n            ToolTip.AddTool(this);\r\n            ToolTip.Showing += new EventHandler<ToolTipShowingEventArgs>(ListView.HeaderToolTipShowingCallback);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Windows messaging\r\n\r\n        /// <summary>\r\n        /// Override the basic message pump\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        protected override void WndProc(ref Message m) {\r\n            const int WM_DESTROY = 2;\r\n            const int WM_SETCURSOR = 0x20;\r\n            const int WM_NOTIFY = 0x4E;\r\n            const int WM_MOUSEMOVE = 0x200;\r\n            const int WM_LBUTTONDOWN = 0x201;\r\n            const int WM_LBUTTONUP = 0x202;\r\n            const int WM_MOUSELEAVE = 675;\r\n            const int HDM_FIRST = 0x1200;\r\n            const int HDM_LAYOUT = (HDM_FIRST + 5);\r\n\r\n            // System.Diagnostics.Debug.WriteLine(String.Format(\"WndProc: {0}\", m.Msg));\r\n\r\n            switch (m.Msg) {\r\n                case WM_SETCURSOR:\r\n                    if (!HandleSetCursor(ref m))\r\n                        return;\r\n                    break;\r\n\r\n                case WM_NOTIFY:\r\n                    if (!HandleNotify(ref m))\r\n                        return;\r\n                    break;\r\n\r\n                case WM_MOUSEMOVE:\r\n                    if (!HandleMouseMove(ref m))\r\n                        return;\r\n                    break;\r\n\r\n                case WM_MOUSELEAVE:\r\n                    if (!HandleMouseLeave(ref m))\r\n                        return;\r\n                    break;\r\n\r\n                case HDM_LAYOUT:\r\n                    if (!HandleLayout(ref m))\r\n                        return;\r\n                    break;\r\n\r\n                case WM_DESTROY:\r\n                    if (!HandleDestroy(ref m))\r\n                        return;\r\n                    break;\r\n\r\n                case WM_LBUTTONDOWN:\r\n                    if (!HandleLButtonDown(ref m))\r\n                        return;\r\n                    break;\r\n\r\n                case WM_LBUTTONUP:\r\n                    if (!HandleLButtonUp(ref m))\r\n                        return;\r\n                    break;\r\n            }\r\n\r\n            base.WndProc(ref m);\r\n        }\r\n\r\n        private bool HandleReflectNotify(ref Message m)\r\n        {\r\n            NativeMethods.NMHDR nmhdr = (NativeMethods.NMHDR)m.GetLParam(typeof(NativeMethods.NMHDR));\r\n            System.Diagnostics.Debug.WriteLine(String.Format(\"rn: {0}\", nmhdr.code));\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the LButtonDown windows message\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns></returns>\r\n        protected bool HandleLButtonDown(ref Message m)\r\n        {\r\n            // Was there a header checkbox under the cursor?\r\n            columnIndexCheckBoxMouseDown = GetColumnCheckBoxUnderCursor();\r\n            if (columnIndexCheckBoxMouseDown < 0)\r\n                return true;\r\n\r\n            // Redraw the header so the checkbox redraws\r\n            Invalidate();\r\n\r\n            // Force the owning control to ignore this mouse click \r\n            // We don't want to sort the listview when they click the checkbox\r\n            m.Result = (IntPtr)1;\r\n            return false;\r\n        }\r\n\r\n        private int columnIndexCheckBoxMouseDown = -1;\r\n\r\n        /// <summary>\r\n        /// Handle the LButtonUp windows message\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns></returns>\r\n        protected bool HandleLButtonUp(ref Message m) {\r\n            //System.Diagnostics.Debug.WriteLine(\"WM_LBUTTONUP\");\r\n\r\n            // Was the mouse released over a header checkbox?\r\n            if (columnIndexCheckBoxMouseDown < 0)\r\n                return true;\r\n\r\n            // Was the mouse released over the same checkbox on which it was pressed?\r\n            if (columnIndexCheckBoxMouseDown != GetColumnCheckBoxUnderCursor())\r\n                return true;\r\n\r\n            // Toggle the header's checkbox\r\n            OLVColumn column = ListView.GetColumn(columnIndexCheckBoxMouseDown);\r\n            ListView.ToggleHeaderCheckBox(column);\r\n\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the SetCursor windows message\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns></returns>\r\n        protected bool HandleSetCursor(ref Message m) {\r\n            if (IsCursorOverLockedDivider) {\r\n                m.Result = (IntPtr) 1; // Don't change the cursor\r\n                return false;\r\n            }\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the MouseMove windows message\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns></returns>\r\n        protected bool HandleMouseMove(ref Message m) {\r\n\r\n            // Forward the mouse move event to the ListView itself\r\n            if (ListView.TriggerCellOverEventsWhenOverHeader) {\r\n                int x = m.LParam.ToInt32() & 0xFFFF;\r\n                int y = (m.LParam.ToInt32() >> 16) & 0xFFFF;\r\n                ListView.HandleMouseMove(new Point(x, y));\r\n            }\r\n\r\n            int columnIndex = ColumnIndexUnderCursor;\r\n\r\n            // If the mouse has moved to a different header, pop the current tip (if any)\r\n            // For some reason, references this.ToolTip when in design mode, causes the \r\n            // columns to not be resizable by dragging the divider in the Designer. No idea why.\r\n            if (columnIndex != columnShowingTip && !ListView.IsDesignMode) {\r\n                ToolTip.PopToolTip(this);\r\n                columnShowingTip = columnIndex;\r\n            }\r\n\r\n            // If the mouse has moved onto or away from a checkbox, we need to draw\r\n            int checkBoxUnderCursor = GetColumnCheckBoxUnderCursor();\r\n            if (checkBoxUnderCursor != lastCheckBoxUnderCursor) {\r\n                Invalidate();\r\n                lastCheckBoxUnderCursor = checkBoxUnderCursor;\r\n            }\r\n\r\n            return true;\r\n        }\r\n\r\n        private int columnShowingTip = -1;\r\n        private int lastCheckBoxUnderCursor = -1;\r\n\r\n        /// <summary>\r\n        /// Handle the MouseLeave windows message\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns></returns>\r\n        protected bool HandleMouseLeave(ref Message m) {\r\n            // Forward the mouse leave event to the ListView itself\r\n            if (ListView.TriggerCellOverEventsWhenOverHeader)\r\n                ListView.HandleMouseMove(new Point(-1, -1));\r\n\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the Notify windows message\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns></returns>\r\n        protected bool HandleNotify(ref Message m) {\r\n            // Can this ever happen? JPP 2009-05-22\r\n            if (m.LParam == IntPtr.Zero)\r\n                return false;\r\n\r\n            NativeMethods.NMHDR nmhdr = (NativeMethods.NMHDR)m.GetLParam(typeof(NativeMethods.NMHDR));\r\n            switch (nmhdr.code)\r\n            {\r\n\r\n                case ToolTipControl.TTN_SHOW:\r\n                    //System.Diagnostics.Debug.WriteLine(\"hdr TTN_SHOW\");\r\n                    //System.Diagnostics.Trace.Assert(this.ToolTip.Handle == nmhdr.hwndFrom);\r\n                    return ToolTip.HandleShow(ref m);\r\n\r\n                case ToolTipControl.TTN_POP:\r\n                    //System.Diagnostics.Debug.WriteLine(\"hdr TTN_POP\");\r\n                    //System.Diagnostics.Trace.Assert(this.ToolTip.Handle == nmhdr.hwndFrom);\r\n                    return ToolTip.HandlePop(ref m);\r\n\r\n                case ToolTipControl.TTN_GETDISPINFO:\r\n                    //System.Diagnostics.Debug.WriteLine(\"hdr TTN_GETDISPINFO\");\r\n                    //System.Diagnostics.Trace.Assert(this.ToolTip.Handle == nmhdr.hwndFrom);\r\n                    return ToolTip.HandleGetDispInfo(ref m);\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the CustomDraw windows message\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns></returns>\r\n        internal virtual bool HandleHeaderCustomDraw(ref Message m) {\r\n            const int CDRF_NEWFONT = 2;\r\n            const int CDRF_SKIPDEFAULT = 4;\r\n            const int CDRF_NOTIFYPOSTPAINT = 0x10;\r\n            const int CDRF_NOTIFYITEMDRAW = 0x20;\r\n\r\n            const int CDDS_PREPAINT = 1;\r\n            const int CDDS_POSTPAINT = 2;\r\n            const int CDDS_ITEM = 0x00010000;\r\n            const int CDDS_ITEMPREPAINT = (CDDS_ITEM | CDDS_PREPAINT);\r\n            const int CDDS_ITEMPOSTPAINT = (CDDS_ITEM | CDDS_POSTPAINT);\r\n\r\n            NativeMethods.NMCUSTOMDRAW nmcustomdraw = (NativeMethods.NMCUSTOMDRAW) m.GetLParam(typeof (NativeMethods.NMCUSTOMDRAW));\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"header cd: {0:x}, {1}, {2:x}\", nmcustomdraw.dwDrawStage, nmcustomdraw.dwItemSpec, nmcustomdraw.uItemState));\r\n            switch (nmcustomdraw.dwDrawStage) {\r\n                case CDDS_PREPAINT:\r\n                    cachedNeedsCustomDraw = NeedsCustomDraw();\r\n                    m.Result = (IntPtr) CDRF_NOTIFYITEMDRAW;\r\n                    return true;\r\n\r\n                case CDDS_ITEMPREPAINT:\r\n                    int columnIndex = nmcustomdraw.dwItemSpec.ToInt32();\r\n                    OLVColumn column = ListView.GetColumn(columnIndex);\r\n\r\n                    // These don't work when visual styles are enabled\r\n                    //NativeMethods.SetBkColor(nmcustomdraw.hdc, ColorTranslator.ToWin32(Color.Red));\r\n                    //NativeMethods.SetTextColor(nmcustomdraw.hdc, ColorTranslator.ToWin32(Color.Blue));\r\n                    //m.Result = IntPtr.Zero;\r\n\r\n                    if (cachedNeedsCustomDraw) {\r\n                        using (Graphics g = Graphics.FromHdc(nmcustomdraw.hdc)) {\r\n                            g.TextRenderingHint = ObjectListView.TextRenderingHint;\r\n                            CustomDrawHeaderCell(g, columnIndex, nmcustomdraw.uItemState);\r\n                        }\r\n                        m.Result = (IntPtr) CDRF_SKIPDEFAULT;\r\n                    } else {\r\n                        const int CDIS_SELECTED = 1;\r\n                        bool isPressed = ((nmcustomdraw.uItemState & CDIS_SELECTED) == CDIS_SELECTED);\r\n\r\n                        // We don't need to modify this based on checkboxes, since there can't be checkboxes if we are here\r\n                        bool isHot = columnIndex == ColumnIndexUnderCursor;\r\n\r\n                        Font f = CalculateFont(column, isHot, isPressed);\r\n\r\n                        fontHandle = f.ToHfont();\r\n                        NativeMethods.SelectObject(nmcustomdraw.hdc, fontHandle);\r\n\r\n                        m.Result = (IntPtr) (CDRF_NEWFONT | CDRF_NOTIFYPOSTPAINT);\r\n                    }\r\n\r\n                    return true;\r\n\r\n                case CDDS_ITEMPOSTPAINT:\r\n                    if (fontHandle != IntPtr.Zero) {\r\n                        NativeMethods.DeleteObject(fontHandle);\r\n                        fontHandle = IntPtr.Zero;\r\n                    }\r\n                    break;\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        private bool cachedNeedsCustomDraw;\r\n        private IntPtr fontHandle;\r\n\r\n        /// <summary>\r\n        /// The message divides a ListView's space between the header and the rows of the listview.\r\n        /// The WINDOWPOS structure controls the headers bounds, the RECT controls the listview bounds.\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns></returns>\r\n        protected bool HandleLayout(ref Message m) {\r\n            if (ListView.HeaderStyle == ColumnHeaderStyle.None)\r\n                return true;\r\n\r\n            NativeMethods.HDLAYOUT hdlayout = (NativeMethods.HDLAYOUT) m.GetLParam(typeof (NativeMethods.HDLAYOUT));\r\n            NativeMethods.RECT rect = (NativeMethods.RECT) Marshal.PtrToStructure(hdlayout.prc, typeof (NativeMethods.RECT));\r\n            NativeMethods.WINDOWPOS wpos = (NativeMethods.WINDOWPOS) Marshal.PtrToStructure(hdlayout.pwpos, typeof (NativeMethods.WINDOWPOS));\r\n\r\n            using (Graphics g = ListView.CreateGraphics()) {\r\n                g.TextRenderingHint = ObjectListView.TextRenderingHint;\r\n                int height = CalculateHeight(g);\r\n                wpos.hwnd = Handle;\r\n                wpos.hwndInsertAfter = IntPtr.Zero;\r\n                wpos.flags = NativeMethods.SWP_FRAMECHANGED;\r\n                wpos.x = rect.left;\r\n                wpos.y = rect.top;\r\n                wpos.cx = rect.right - rect.left;\r\n                wpos.cy = height;\r\n\r\n                rect.top = height;\r\n\r\n                Marshal.StructureToPtr(rect, hdlayout.prc, false);\r\n                Marshal.StructureToPtr(wpos, hdlayout.pwpos, false);\r\n            }\r\n\r\n            ListView.BeginInvoke((MethodInvoker) delegate {\r\n                Invalidate();\r\n                ListView.Invalidate();\r\n            });\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle when the underlying header control is destroyed\r\n        /// </summary>\r\n        /// <param name=\"m\"></param>\r\n        /// <returns></returns>\r\n        protected bool HandleDestroy(ref Message m) {\r\n            if (toolTip != null) {\r\n                toolTip.Showing -= new EventHandler<ToolTipShowingEventArgs>(ListView.HeaderToolTipShowingCallback);\r\n            }\r\n            return false;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Rendering\r\n\r\n        /// <summary>\r\n        /// Does this header need to be custom drawn?\r\n        /// </summary>\r\n        /// <remarks>Word wrapping and colored text require custom drawning. Funnily enough, we\r\n        /// can change the font natively.</remarks>\r\n        protected bool NeedsCustomDraw() {\r\n            if (WordWrap)\r\n                return true;\r\n            \r\n            if (ListView.HeaderUsesThemes)\r\n                return false;\r\n\r\n            if (NeedsCustomDraw(ListView.HeaderFormatStyle))\r\n                return true;\r\n            \r\n            foreach (OLVColumn column in ListView.Columns) {\r\n                if (column.HasHeaderImage ||\r\n                    !column.ShowTextInHeader ||\r\n                    column.IsHeaderVertical || \r\n                    HasFilterIndicator(column) ||\r\n                    HasCheckBox(column) ||\r\n                    column.TextAlign != column.HeaderTextAlignOrDefault ||\r\n                    (column.Index == 0 && column.HeaderTextAlignOrDefault != HorizontalAlignment.Left) ||\r\n                    NeedsCustomDraw(column.HeaderFormatStyle))\r\n                    return true;\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        private bool NeedsCustomDraw(HeaderFormatStyle style) {\r\n            if (style == null)\r\n                return false;\r\n\r\n            return (NeedsCustomDraw(style.Normal) || \r\n                NeedsCustomDraw(style.Hot) ||\r\n                NeedsCustomDraw(style.Pressed));\r\n        }\r\n\r\n        private bool NeedsCustomDraw(HeaderStateStyle style) {\r\n            if (style == null)\r\n                return false;\r\n\r\n            // If we want fancy colors or frames, we have to custom draw. Oddly enough, we \r\n            // can handle font changes without custom drawing.\r\n            if (!style.BackColor.IsEmpty)\r\n                return true;\r\n            \r\n            if (style.FrameWidth > 0f && !style.FrameColor.IsEmpty)\r\n                return true;\r\n\r\n            return (!style.ForeColor.IsEmpty && style.ForeColor != Color.Black);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw one cell of the header\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"columnIndex\"></param>\r\n        /// <param name=\"itemState\"></param>\r\n        protected void CustomDrawHeaderCell(Graphics g, int columnIndex, int itemState) {\r\n            OLVColumn column = ListView.GetColumn(columnIndex);\r\n\r\n            bool hasCheckBox = HasCheckBox(column);\r\n            bool isMouseOverCheckBox = columnIndex == lastCheckBoxUnderCursor;\r\n            bool isMouseDownOnCheckBox = isMouseOverCheckBox && Control.MouseButtons == MouseButtons.Left;\r\n            bool isHot = (columnIndex == ColumnIndexUnderCursor) && (!(hasCheckBox && isMouseOverCheckBox));\r\n\r\n            const int CDIS_SELECTED = 1;\r\n            bool isPressed = ((itemState & CDIS_SELECTED) == CDIS_SELECTED);\r\n\r\n           // System.Diagnostics.Debug.WriteLine(String.Format(\"{2:hh:mm:ss.ff} - HeaderCustomDraw: {0}, {1}\", columnIndex, itemState, DateTime.Now));\r\n\r\n            // Calculate which style should be used for the header\r\n            HeaderStateStyle stateStyle = CalculateStateStyle(column, isHot, isPressed);\r\n\r\n            // If there is an owner drawn delegate installed, give it a chance to draw the header\r\n            Rectangle fullCellBounds = GetItemRect(columnIndex);\r\n            if (column.HeaderDrawing != null)\r\n            {\r\n                if (!column.HeaderDrawing(g, fullCellBounds, columnIndex, column, isPressed, stateStyle))\r\n                    return;\r\n            }\r\n\r\n            // Draw the background\r\n            if (ListView.HeaderUsesThemes &&\r\n                VisualStyleRenderer.IsSupported &&\r\n                VisualStyleRenderer.IsElementDefined(VisualStyleElement.Header.Item.Normal))\r\n                DrawThemedBackground(g, fullCellBounds, columnIndex, isPressed, isHot);\r\n            else\r\n                DrawUnthemedBackground(g, fullCellBounds, columnIndex, isPressed, isHot, stateStyle);\r\n            \r\n            Rectangle r = GetHeaderDrawRect(columnIndex);\r\n\r\n            // Draw the sort indicator if this column has one\r\n            if (HasSortIndicator(column)) {\r\n                if (ListView.HeaderUsesThemes &&\r\n                    VisualStyleRenderer.IsSupported &&\r\n                    VisualStyleRenderer.IsElementDefined(VisualStyleElement.Header.SortArrow.SortedUp))\r\n                    DrawThemedSortIndicator(g, r);\r\n                else\r\n                    r = DrawUnthemedSortIndicator(g, r);\r\n            }\r\n\r\n            if (HasFilterIndicator(column))\r\n                r = DrawFilterIndicator(g, r);\r\n\r\n            if (hasCheckBox)\r\n                r = DrawCheckBox(g, r, column.HeaderCheckState, column.HeaderCheckBoxDisabled, isMouseOverCheckBox, isMouseDownOnCheckBox);\r\n\r\n            // Debugging - Where is the text going to be drawn\r\n            //            g.DrawRectangle(Pens.Blue, r);\r\n\r\n            // Finally draw the text\r\n            DrawHeaderImageAndText(g, r, column, stateStyle);\r\n        }\r\n\r\n        private Rectangle DrawCheckBox(Graphics g, Rectangle r, CheckState checkState, bool isDisabled, bool isHot,\r\n            bool isPressed) {\r\n            CheckBoxState checkBoxState = GetCheckBoxState(checkState, isDisabled, isHot, isPressed);\r\n            Rectangle checkBoxBounds = CalculateCheckBoxBounds(g, r);\r\n            CheckBoxRenderer.DrawCheckBox(g, checkBoxBounds.Location, checkBoxState);\r\n\r\n            // Move the left edge without changing the right edge\r\n            int newX = checkBoxBounds.Right + 3;\r\n            r.Width -= (newX - r.X);\r\n            r.X = newX;\r\n\r\n            return r;\r\n        }\r\n\r\n        private Rectangle CalculateCheckBoxBounds(Graphics g, Rectangle cellBounds) {\r\n            Size checkBoxSize = CheckBoxRenderer.GetGlyphSize(g, CheckBoxState.CheckedNormal);\r\n\r\n            // Vertically center the checkbox\r\n            int topOffset = (cellBounds.Height - checkBoxSize.Height)/2;\r\n            return new Rectangle(cellBounds.X + 3, cellBounds.Y + topOffset, checkBoxSize.Width, checkBoxSize.Height);\r\n        }\r\n\r\n        private CheckBoxState GetCheckBoxState(CheckState checkState, bool isDisabled, bool isHot, bool isPressed) {\r\n            // Should the checkbox be drawn as disabled?\r\n            if (isDisabled) {\r\n                switch (checkState) {\r\n                    case CheckState.Checked:\r\n                        return CheckBoxState.CheckedDisabled;\r\n                    case CheckState.Unchecked:\r\n                        return CheckBoxState.UncheckedDisabled;\r\n                    default:\r\n                        return CheckBoxState.MixedDisabled;\r\n                }\r\n            }\r\n\r\n            // Is the mouse button currently down?\r\n            if (isPressed) {\r\n                switch (checkState) {\r\n                    case CheckState.Checked:\r\n                        return CheckBoxState.CheckedPressed;\r\n                    case CheckState.Unchecked:\r\n                        return CheckBoxState.UncheckedPressed;\r\n                    default:\r\n                        return CheckBoxState.MixedPressed;\r\n                }\r\n            }\r\n\r\n            // Is the cursor currently over this checkbox?\r\n            if (isHot) {\r\n                switch (checkState) {\r\n                    case CheckState.Checked:\r\n                        return CheckBoxState.CheckedHot;\r\n                    case CheckState.Unchecked:\r\n                        return CheckBoxState.UncheckedHot;\r\n                    default:\r\n                        return CheckBoxState.MixedHot;\r\n                }\r\n            }\r\n\r\n            // Not hot and not disabled -- just draw it normally\r\n            switch (checkState) {\r\n                case CheckState.Checked:\r\n                    return CheckBoxState.CheckedNormal;\r\n                case CheckState.Unchecked:\r\n                    return CheckBoxState.UncheckedNormal;\r\n                default:\r\n                    return CheckBoxState.MixedNormal;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw a background for the header, without using Themes.\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"columnIndex\"></param>\r\n        /// <param name=\"isPressed\"></param>\r\n        /// <param name=\"isHot\"></param>\r\n        /// <param name=\"stateStyle\"></param>\r\n        protected void DrawUnthemedBackground(Graphics g, Rectangle r, int columnIndex, bool isPressed, bool isHot, HeaderStateStyle stateStyle) {\r\n            if (stateStyle.BackColor.IsEmpty)\r\n                // I know we're supposed to be drawing the unthemed background, but let's just see if we\r\n                // can draw something more interesting than the dull raised block\r\n                if (VisualStyleRenderer.IsSupported &&\r\n                    VisualStyleRenderer.IsElementDefined(VisualStyleElement.Header.Item.Normal))\r\n                    DrawThemedBackground(g, r, columnIndex, isPressed, isHot);\r\n                else\r\n                    ControlPaint.DrawBorder3D(g, r, Border3DStyle.RaisedInner);\r\n            else {\r\n                using (Brush b = new SolidBrush(stateStyle.BackColor))\r\n                    g.FillRectangle(b, r);\r\n            }\r\n\r\n            // Draw the frame if the style asks for one\r\n            if (!stateStyle.FrameColor.IsEmpty && stateStyle.FrameWidth > 0f) {\r\n                RectangleF r2 = r;\r\n                r2.Inflate(-stateStyle.FrameWidth, -stateStyle.FrameWidth);\r\n                using (Pen pen = new Pen(stateStyle.FrameColor, stateStyle.FrameWidth))\r\n                    g.DrawRectangle(pen, r2.X, r2.Y, r2.Width, r2.Height);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw a more-or-less pure themed header background.\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"columnIndex\"></param>\r\n        /// <param name=\"isPressed\"></param>\r\n        /// <param name=\"isHot\"></param>\r\n        protected void DrawThemedBackground(Graphics g, Rectangle r, int columnIndex, bool isPressed, bool isHot) {\r\n            int part = 1; // normal item\r\n            if (columnIndex == 0 &&\r\n                VisualStyleRenderer.IsElementDefined(VisualStyleElement.Header.ItemLeft.Normal))\r\n                part = 2; // left item\r\n            if (columnIndex == ListView.Columns.Count - 1 &&\r\n                VisualStyleRenderer.IsElementDefined(VisualStyleElement.Header.ItemRight.Normal))\r\n                part = 3; // right item\r\n\r\n            int state = 1; // normal state\r\n            if (isPressed)\r\n                state = 3; // pressed\r\n            else if (isHot)\r\n                state = 2; // hot\r\n\r\n            VisualStyleRenderer renderer = new VisualStyleRenderer(\"HEADER\", part, state);\r\n            renderer.DrawBackground(g, r);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw a sort indicator using themes\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        protected void DrawThemedSortIndicator(Graphics g, Rectangle r) {\r\n            VisualStyleRenderer renderer2 = null;\r\n            if (ListView.LastSortOrder == SortOrder.Ascending)\r\n                renderer2 = new VisualStyleRenderer(VisualStyleElement.Header.SortArrow.SortedUp);\r\n            if (ListView.LastSortOrder == SortOrder.Descending)\r\n                renderer2 = new VisualStyleRenderer(VisualStyleElement.Header.SortArrow.SortedDown);\r\n            if (renderer2 != null) {\r\n                Size sz = renderer2.GetPartSize(g, ThemeSizeType.True);\r\n                Point pt = renderer2.GetPoint(PointProperty.Offset);\r\n                // GetPoint() should work, but if it doesn't, put the arrow in the top middle\r\n                if (pt.X == 0 && pt.Y == 0)\r\n                    pt = new Point(r.X + (r.Width/2) - (sz.Width/2), r.Y);\r\n                renderer2.DrawBackground(g, new Rectangle(pt, sz));\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw a sort indicator without using themes\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <returns></returns>\r\n        protected Rectangle DrawUnthemedSortIndicator(Graphics g, Rectangle r) {\r\n            // No theme support for sort indicators. So, we draw a triangle at the right edge\r\n            // of the column header.\r\n            const int triangleHeight = 16;\r\n            const int triangleWidth = 16;\r\n            const int midX = triangleWidth/2;\r\n            const int midY = (triangleHeight/2) - 1;\r\n            const int deltaX = midX - 2;\r\n            const int deltaY = deltaX/2;\r\n\r\n            Point triangleLocation = new Point(r.Right - triangleWidth - 2, r.Top + (r.Height - triangleHeight)/2);\r\n            Point[] pts = new Point[] {triangleLocation, triangleLocation, triangleLocation};\r\n\r\n            if (ListView.LastSortOrder == SortOrder.Ascending) {\r\n                pts[0].Offset(midX - deltaX, midY + deltaY);\r\n                pts[1].Offset(midX, midY - deltaY - 1);\r\n                pts[2].Offset(midX + deltaX, midY + deltaY);\r\n            } else {\r\n                pts[0].Offset(midX - deltaX, midY - deltaY);\r\n                pts[1].Offset(midX, midY + deltaY);\r\n                pts[2].Offset(midX + deltaX, midY - deltaY);\r\n            }\r\n\r\n            g.FillPolygon(Brushes.SlateGray, pts);\r\n            r.Width -= triangleWidth;\r\n            return r;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw an indication that this column has a filter applied to it\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <returns></returns>\r\n        protected Rectangle DrawFilterIndicator(Graphics g, Rectangle r) {\r\n            int width = CalculateFilterIndicatorWidth(r);\r\n            if (width <= 0)\r\n                return r;\r\n\r\n            Image indicator = Resources.ColumnFilterIndicator;\r\n            int x = r.Right - width;\r\n            int y = r.Top + (r.Height - indicator.Height)/2;\r\n            g.DrawImageUnscaled(indicator, x, y);\r\n\r\n            r.Width -= width;\r\n            return r;\r\n        }\r\n\r\n        private int CalculateFilterIndicatorWidth(Rectangle r) {\r\n            if (Resources.ColumnFilterIndicator == null || r.Width < 48)\r\n                return 0;\r\n            return Resources.ColumnFilterIndicator.Width + 1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Draw the header's image and text\r\n        /// </summary>\r\n        /// <param name=\"g\"></param>\r\n        /// <param name=\"r\"></param>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"stateStyle\"></param>\r\n        protected void DrawHeaderImageAndText(Graphics g, Rectangle r, OLVColumn column, HeaderStateStyle stateStyle) {\r\n\r\n            TextFormatFlags flags = TextFormatFlags;\r\n            flags |= TextFormatFlags.VerticalCenter;\r\n            if (column.HeaderTextAlignOrDefault == HorizontalAlignment.Center)\r\n                flags |= TextFormatFlags.HorizontalCenter;\r\n            if (column.HeaderTextAlignOrDefault == HorizontalAlignment.Right)\r\n                flags |= TextFormatFlags.Right;\r\n\r\n            Font f = ListView.HeaderUsesThemes ? ListView.Font : stateStyle.Font ?? ListView.Font;\r\n            Color color = ListView.HeaderUsesThemes ? Color.Black : stateStyle.ForeColor;\r\n            if (color.IsEmpty)\r\n                color = Color.Black;\r\n\r\n            const int imageTextGap = 3;\r\n\r\n            if (column.IsHeaderVertical) {\r\n                DrawVerticalText(g, r, column, f, color);\r\n            } else {\r\n                // Does the column have a header image and is there space for it?\r\n                if (column.HasHeaderImage && r.Width > column.ImageList.ImageSize.Width*2)\r\n                    DrawImageAndText(g, r, column, flags, f, color, imageTextGap);\r\n                else\r\n                    DrawText(g, r, column, flags, f, color);\r\n            }\r\n        }\r\n\r\n        private void DrawText(Graphics g, Rectangle r, OLVColumn column, TextFormatFlags flags, Font f, Color color) {\r\n            if (column.ShowTextInHeader)\r\n                TextRenderer.DrawText(g, column.Text, f, r, color, Color.Transparent, flags);\r\n        }\r\n\r\n        private void DrawImageAndText(Graphics g, Rectangle r, OLVColumn column, TextFormatFlags flags, Font f,\r\n            Color color, int imageTextGap) {\r\n            Rectangle textRect = r;\r\n            textRect.X += (column.ImageList.ImageSize.Width + imageTextGap);\r\n            textRect.Width -= (column.ImageList.ImageSize.Width + imageTextGap);\r\n\r\n            Size textSize = Size.Empty;\r\n            if (column.ShowTextInHeader)\r\n                textSize = TextRenderer.MeasureText(g, column.Text, f, textRect.Size, flags);\r\n\r\n            int imageY = r.Top + ((r.Height - column.ImageList.ImageSize.Height)/2);\r\n            int imageX = textRect.Left;\r\n            if (column.HeaderTextAlignOrDefault == HorizontalAlignment.Center)\r\n                imageX = textRect.Left + ((textRect.Width - textSize.Width)/2);\r\n            if (column.HeaderTextAlignOrDefault == HorizontalAlignment.Right)\r\n                imageX = textRect.Right - textSize.Width;\r\n            imageX -= (column.ImageList.ImageSize.Width + imageTextGap);\r\n\r\n            column.ImageList.Draw(g, imageX, imageY, column.ImageList.Images.IndexOfKey(column.HeaderImageKey));\r\n\r\n            DrawText(g, textRect, column, flags, f, color);\r\n        }\r\n\r\n        private static void DrawVerticalText(Graphics g, Rectangle r, OLVColumn column, Font f, Color color) {\r\n            try {\r\n                // Create a matrix transformation that will rotate the text 90 degrees vertically\r\n                // AND place the text in the middle of where it was previously. [Think of tipping\r\n                // a box over by its bottom left edge -- you have to move it back a bit so it's\r\n                // in the same place as it started]\r\n                Matrix m = new Matrix();\r\n                m.RotateAt(-90, new Point(r.X, r.Bottom));\r\n                m.Translate(0, r.Height);\r\n                g.Transform = m;\r\n                StringFormat fmt = new StringFormat(StringFormatFlags.NoWrap);\r\n                fmt.Alignment = StringAlignment.Near;\r\n                fmt.LineAlignment = column.HeaderTextAlignAsStringAlignment;\r\n                //fmt.Trimming = StringTrimming.EllipsisCharacter;\r\n\r\n                // The drawing is rotated 90 degrees, so switch our text boundaries\r\n                Rectangle textRect = r;\r\n                textRect.Width = r.Height;\r\n                textRect.Height = r.Width;\r\n                using (Brush b = new SolidBrush(color))\r\n                    g.DrawString(column.Text, f, b, textRect, fmt);\r\n            }\r\n            finally {\r\n                g.ResetTransform();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the header format that should be used for the given column\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns></returns>\r\n        protected HeaderFormatStyle CalculateHeaderStyle(OLVColumn column) {\r\n            return column.HeaderFormatStyle ?? ListView.HeaderFormatStyle ?? new HeaderFormatStyle();\r\n        }\r\n\r\n        /// <summary>\r\n        /// What style should be applied to the header?\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"isHot\"></param>\r\n        /// <param name=\"isPressed\"></param>\r\n        /// <returns></returns>\r\n        protected HeaderStateStyle CalculateStateStyle(OLVColumn column, bool isHot, bool isPressed) {\r\n            HeaderFormatStyle headerStyle = CalculateHeaderStyle(column);\r\n            if (ListView.IsDesignMode) \r\n                return headerStyle.Normal;\r\n            if (isPressed)\r\n                return headerStyle.Pressed;\r\n            if (isHot)\r\n                return headerStyle.Hot;\r\n            return headerStyle.Normal;\r\n        }\r\n\r\n        /// <summary>\r\n        /// What font should be used to draw the header text?\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"isHot\"></param>\r\n        /// <param name=\"isPressed\"></param>\r\n        /// <returns></returns>\r\n        protected Font CalculateFont(OLVColumn column, bool isHot, bool isPressed) {\r\n            HeaderStateStyle stateStyle = CalculateStateStyle(column, isHot, isPressed);\r\n            return stateStyle.Font ?? ListView.Font;\r\n        }\r\n\r\n        /// <summary>\r\n        /// What flags will be used when drawing text\r\n        /// </summary>\r\n        protected TextFormatFlags TextFormatFlags {\r\n            get {\r\n                TextFormatFlags flags = TextFormatFlags.EndEllipsis | \r\n                    TextFormatFlags.NoPrefix |\r\n                    TextFormatFlags.WordEllipsis | \r\n                    TextFormatFlags.PreserveGraphicsTranslateTransform;\r\n                if (WordWrap)\r\n                    flags |= TextFormatFlags.WordBreak;\r\n                else\r\n                    flags |= TextFormatFlags.SingleLine;\r\n                if (ListView.RightToLeft == RightToLeft.Yes)\r\n                    flags |= TextFormatFlags.RightToLeft;\r\n\r\n                return flags;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Perform a HitTest for the header control\r\n        /// </summary>\r\n        /// <param name=\"x\"></param>\r\n        /// <param name=\"y\"></param>\r\n        /// <returns>Null if the given point isn't over the header</returns>\r\n        internal OlvListViewHitTestInfo.HeaderHitTestInfo HitTest(int x, int y)\r\n        {\r\n            Rectangle r = ClientRectangle;\r\n            if (!r.Contains(x, y))\r\n                return null;\r\n\r\n            Point pt = new Point(x + ListView.LowLevelScrollPosition.X, y);\r\n\r\n            OlvListViewHitTestInfo.HeaderHitTestInfo hti = new OlvListViewHitTestInfo.HeaderHitTestInfo();\r\n            hti.ColumnIndex = NativeMethods.GetColumnUnderPoint(Handle, pt);\r\n            hti.IsOverCheckBox = IsPointOverHeaderCheckBox(hti.ColumnIndex, pt);\r\n            hti.OverDividerIndex = NativeMethods.GetDividerUnderPoint(Handle, pt);\r\n\r\n            return hti;\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/SubControls/ToolStripCheckedListBox.cs",
    "content": "﻿/*\r\n * ToolStripCheckedListBox - Puts a CheckedListBox into a tool strip menu item\r\n *\r\n * Author: Phillip Piper\r\n * Date: 4-March-2011 11:59 pm\r\n *\r\n * Change log:\r\n * 2011-03-04  JPP  - First version\r\n * \r\n * Copyright (C) 2011-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System.Windows.Forms;\r\nusing System.Drawing;\r\nusing System.ComponentModel;\r\n\r\nnamespace BrightIdeasSoftware {\r\n\r\n    /// <summary>\r\n    /// Instances of this class put a CheckedListBox into a tool strip menu item.\r\n    /// </summary>\r\n    public class ToolStripCheckedListBox : ToolStripControlHost {\r\n\r\n        /// <summary>\r\n        /// Create a ToolStripCheckedListBox\r\n        /// </summary>\r\n        public ToolStripCheckedListBox()\r\n            : base(new CheckedListBox()) {\r\n            CheckedListBoxControl.MaximumSize = new Size(400, 700);\r\n            CheckedListBoxControl.ThreeDCheckBoxes = true;\r\n            CheckedListBoxControl.CheckOnClick = true;\r\n            CheckedListBoxControl.SelectionMode = SelectionMode.One;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the control embedded in the menu\r\n        /// </summary>\r\n        public CheckedListBox CheckedListBoxControl {\r\n            get {\r\n                return Control as CheckedListBox;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the items shown in the checkedlistbox\r\n        /// </summary>\r\n        public CheckedListBox.ObjectCollection Items {\r\n            get {\r\n                return CheckedListBoxControl.Items;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether an item should be checked when it is clicked\r\n        /// </summary>\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public bool CheckedOnClick\r\n        {\r\n            get {\r\n                return CheckedListBoxControl.CheckOnClick;\r\n            }\r\n            set {\r\n                CheckedListBoxControl.CheckOnClick = value;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets a collection of the checked items\r\n        /// </summary>\r\n        public CheckedListBox.CheckedItemCollection CheckedItems {\r\n            get {\r\n                return CheckedListBoxControl.CheckedItems;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Add a possibly checked item to the control\r\n        /// </summary>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"isChecked\"></param>\r\n        public void AddItem(object item, bool isChecked) {\r\n            Items.Add(item);\r\n            if (isChecked)\r\n                CheckedListBoxControl.SetItemChecked(Items.Count - 1, true);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Add an item with the given state to the control\r\n        /// </summary>\r\n        /// <param name=\"item\"></param>\r\n        /// <param name=\"state\"></param>\r\n        public void AddItem(object item, CheckState state) {\r\n            Items.Add(item);\r\n            CheckedListBoxControl.SetItemCheckState(Items.Count - 1, state);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the checkedness of the i'th item\r\n        /// </summary>\r\n        /// <param name=\"i\"></param>\r\n        /// <returns></returns>\r\n        public CheckState GetItemCheckState(int i) {\r\n            return CheckedListBoxControl.GetItemCheckState(i);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the checkedness of the i'th item\r\n        /// </summary>\r\n        /// <param name=\"i\"></param>\r\n        /// <param name=\"checkState\"></param>\r\n        public void SetItemState(int i, CheckState checkState) {\r\n            if (i >= 0 && i < Items.Count)\r\n                CheckedListBoxControl.SetItemCheckState(i, checkState);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Check all the items in the control\r\n        /// </summary>\r\n        public void CheckAll() {\r\n            for (int i = 0; i < Items.Count; i++)\r\n                CheckedListBoxControl.SetItemChecked(i, true);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Unchecked all the items in the control\r\n        /// </summary>\r\n        public void UncheckAll() {\r\n            for (int i = 0; i < Items.Count; i++)\r\n                CheckedListBoxControl.SetItemChecked(i, false);\r\n        }\r\n\r\n        #region Events\r\n\r\n        /// <summary>\r\n        /// Listen for events on the underlying control\r\n        /// </summary>\r\n        /// <param name=\"c\"></param>\r\n        protected override void OnSubscribeControlEvents(Control c) {\r\n            base.OnSubscribeControlEvents(c);\r\n\r\n            CheckedListBox control = (CheckedListBox)c;\r\n            control.ItemCheck += new ItemCheckEventHandler(OnItemCheck);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Stop listening for events on the underlying control\r\n        /// </summary>\r\n        /// <param name=\"c\"></param>\r\n        protected override void OnUnsubscribeControlEvents(Control c) {\r\n            base.OnUnsubscribeControlEvents(c);\r\n\r\n            CheckedListBox control = (CheckedListBox)c;\r\n            control.ItemCheck -= new ItemCheckEventHandler(OnItemCheck);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Tell the world that an item was checked\r\n        /// </summary>\r\n        public event ItemCheckEventHandler ItemCheck;\r\n\r\n        /// <summary>\r\n        /// Trigger the ItemCheck event\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        private void OnItemCheck(object sender, ItemCheckEventArgs e) {\r\n            if (ItemCheck != null) {\r\n                ItemCheck(this, e);\r\n            }\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/SubControls/ToolTipControl.cs",
    "content": "/*\r\n * ToolTipControl - A limited wrapper around a Windows tooltip control\r\n *\r\n * For some reason, the ToolTip class in the .NET framework is implemented in a significantly\r\n * different manner to other controls. For our purposes, the worst of these problems\r\n * is that we cannot get the Handle, so we cannot send Windows level messages to the control.\r\n * \r\n * Author: Phillip Piper\r\n * Date: 2009-05-17 7:22PM \r\n *\r\n * Change log:\r\n * v2.3\r\n * 2009-06-13  JPP  - Moved ToolTipShowingEventArgs to Events.cs\r\n * v2.2\r\n * 2009-06-06  JPP  - Fixed some Vista specific problems\r\n * 2009-05-17  JPP  - Initial version\r\n *\r\n * TO DO:\r\n *\r\n * Copyright (C) 2006-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Drawing;\r\nusing System.Runtime.InteropServices;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A limited wrapper around a Windows tooltip window.\r\n    /// </summary>\r\n    public class ToolTipControl : NativeWindow\r\n    {\r\n        #region Constants\r\n\r\n        /// <summary>\r\n        /// These are the standard icons that a tooltip can display.\r\n        /// </summary>\r\n        public enum StandardIcons\r\n        {\r\n            /// <summary>\r\n            /// No icon\r\n            /// </summary>\r\n            None = 0,\r\n\r\n            /// <summary>\r\n            /// Info\r\n            /// </summary>\r\n            Info = 1,\r\n\r\n            /// <summary>\r\n            /// Warning\r\n            /// </summary>\r\n            Warning = 2,\r\n\r\n            /// <summary>\r\n            /// Error\r\n            /// </summary>\r\n            Error = 3,\r\n\r\n            /// <summary>\r\n            /// Large info (Vista and later only)\r\n            /// </summary>\r\n            InfoLarge = 4,\r\n\r\n            /// <summary>\r\n            /// Large warning (Vista and later only)\r\n            /// </summary>\r\n            WarningLarge = 5,\r\n\r\n            /// <summary>\r\n            /// Large error (Vista and later only)\r\n            /// </summary>\r\n            ErrorLarge = 6\r\n        }\r\n\r\n        const int GWL_STYLE = -16;\r\n        const int WM_GETFONT = 0x31;\r\n        const int WM_SETFONT = 0x30;\r\n        const int WS_BORDER = 0x800000;\r\n        const int WS_EX_TOPMOST = 8;\r\n\r\n        const int TTM_ADDTOOL = 0x432;\r\n        const int TTM_ADJUSTRECT = 0x400 + 31;\r\n        const int TTM_DELTOOL = 0x433;\r\n        const int TTM_GETBUBBLESIZE = 0x400 + 30;\r\n        const int TTM_GETCURRENTTOOL = 0x400 + 59;\r\n        const int TTM_GETTIPBKCOLOR = 0x400 + 22;\r\n        const int TTM_GETTIPTEXTCOLOR = 0x400 + 23;\r\n        const int TTM_GETDELAYTIME = 0x400 + 21;\r\n        const int TTM_NEWTOOLRECT = 0x400 + 52;\r\n        const int TTM_POP = 0x41c;\r\n        const int TTM_SETDELAYTIME = 0x400 + 3;\r\n        const int TTM_SETMAXTIPWIDTH = 0x400 + 24;\r\n        const int TTM_SETTIPBKCOLOR = 0x400 + 19;\r\n        const int TTM_SETTIPTEXTCOLOR = 0x400 + 20;\r\n        const int TTM_SETTITLE = 0x400 + 33;\r\n        const int TTM_SETTOOLINFO = 0x400 + 54;\r\n\r\n        const int TTF_IDISHWND = 1;\r\n        //const int TTF_ABSOLUTE = 0x80;\r\n        const int TTF_CENTERTIP = 2;\r\n        const int TTF_RTLREADING = 4;\r\n        const int TTF_SUBCLASS = 0x10;\r\n        //const int TTF_TRACK = 0x20;\r\n        //const int TTF_TRANSPARENT = 0x100;\r\n        const int TTF_PARSELINKS = 0x1000;\r\n\r\n        const int TTS_NOPREFIX = 2;\r\n        const int TTS_BALLOON = 0x40;\r\n        const int TTS_USEVISUALSTYLE = 0x100;\r\n\r\n        const int TTN_FIRST = -520;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public const int TTN_SHOW = (TTN_FIRST - 1);\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public const int TTN_POP = (TTN_FIRST - 2);\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public const int TTN_LINKCLICK = (TTN_FIRST - 3);\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public const int TTN_GETDISPINFO = (TTN_FIRST - 10);\r\n\r\n        const int TTDT_AUTOMATIC = 0;\r\n        const int TTDT_RESHOW = 1;\r\n        const int TTDT_AUTOPOP = 2;\r\n        const int TTDT_INITIAL = 3;\r\n\r\n        #endregion\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Get or set if the style of the tooltip control\r\n        /// </summary>\r\n        internal int WindowStyle {\r\n            get {\r\n                return (int)NativeMethods.GetWindowLong(Handle, GWL_STYLE);\r\n            }\r\n            set {\r\n                NativeMethods.SetWindowLong(Handle, GWL_STYLE, value);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set if the tooltip should be shown as a ballon\r\n        /// </summary>\r\n        public bool IsBalloon {\r\n            get {\r\n                return (WindowStyle & TTS_BALLOON) == TTS_BALLOON;\r\n            }\r\n            set {\r\n                if (IsBalloon == value)\r\n                    return;\r\n\r\n                int windowStyle = WindowStyle;\r\n                if (value) {\r\n                    windowStyle |= (TTS_BALLOON | TTS_USEVISUALSTYLE);\r\n                    // On XP, a border makes the ballon look wrong\r\n                    if (!ObjectListView.IsVistaOrLater)\r\n                        windowStyle &= ~WS_BORDER; \r\n                } else {\r\n                    windowStyle &= ~(TTS_BALLOON | TTS_USEVISUALSTYLE);\r\n                    if (!ObjectListView.IsVistaOrLater) {\r\n                        if (hasBorder)\r\n                            windowStyle |= WS_BORDER;\r\n                        else\r\n                            windowStyle &= ~WS_BORDER;\r\n                    }\r\n                }\r\n                WindowStyle = windowStyle;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set if the tooltip should be shown as a ballon\r\n        /// </summary>\r\n        public bool HasBorder {\r\n            get {\r\n                return hasBorder;\r\n            }\r\n            set {\r\n                if (hasBorder == value)\r\n                    return;\r\n\r\n                if (value) {\r\n                    WindowStyle |= WS_BORDER;\r\n                } else {\r\n                    WindowStyle &= ~WS_BORDER;\r\n                }\r\n            }\r\n        }\r\n        private bool hasBorder = true;\r\n\r\n        /// <summary>\r\n        /// Get or set the background color of the tooltip\r\n        /// </summary>\r\n        public Color BackColor {\r\n            get {\r\n                int color = (int)NativeMethods.SendMessage(Handle, TTM_GETTIPBKCOLOR, 0, 0);\r\n                return ColorTranslator.FromWin32(color);\r\n            }\r\n            set {\r\n                // For some reason, setting the color fails on Vista and messes up later ops.\r\n                // So we don't even try to set it.\r\n                if (!ObjectListView.IsVistaOrLater) {\r\n                    int color = ColorTranslator.ToWin32(value);\r\n                    NativeMethods.SendMessage(Handle, TTM_SETTIPBKCOLOR, color, 0);\r\n                    //int x2 = Marshal.GetLastWin32Error();\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the color of the text and border on the tooltip.\r\n        /// </summary>\r\n        public Color ForeColor {\r\n            get {\r\n                int color = (int)NativeMethods.SendMessage(Handle, TTM_GETTIPTEXTCOLOR, 0, 0);\r\n                return ColorTranslator.FromWin32(color);\r\n            }\r\n            set {\r\n                // For some reason, setting the color fails on Vista and messes up later ops.\r\n                // So we don't even try to set it.\r\n                if (!ObjectListView.IsVistaOrLater) {\r\n                    int color = ColorTranslator.ToWin32(value);\r\n                    NativeMethods.SendMessage(Handle, TTM_SETTIPTEXTCOLOR, color, 0);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the title that will be shown on the tooltip.\r\n        /// </summary>\r\n        public string Title {\r\n            get {\r\n                return title;\r\n            }\r\n            set {\r\n                if (String.IsNullOrEmpty(value))\r\n                    title = String.Empty;\r\n                else\r\n                    if (value.Length >= 100)\r\n                        title = value.Substring(0, 99);\r\n                    else\r\n                        title = value;\r\n                NativeMethods.SendMessageString(Handle, TTM_SETTITLE, (int)standardIcon, title);\r\n            }\r\n        }\r\n        private string title;\r\n\r\n        /// <summary>\r\n        /// Get or set the icon that will be shown on the tooltip.\r\n        /// </summary>\r\n        public StandardIcons StandardIcon {\r\n            get {\r\n                return standardIcon;\r\n            }\r\n            set {\r\n                standardIcon = value;\r\n                NativeMethods.SendMessageString(Handle, TTM_SETTITLE, (int)standardIcon, title);\r\n            }\r\n        }\r\n        private StandardIcons standardIcon;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the font that will be used to draw this control.\r\n        /// is still.\r\n        /// </summary>\r\n        /// <remarks>Setting this to null reverts to the default font.</remarks>\r\n        public Font Font {\r\n            get {\r\n                IntPtr hfont = NativeMethods.SendMessage(Handle, WM_GETFONT, 0, 0);\r\n                if (hfont == IntPtr.Zero)\r\n                    return Control.DefaultFont;\r\n                else\r\n                    return Font.FromHfont(hfont);\r\n            }\r\n            set {\r\n                Font newFont = value ?? Control.DefaultFont;\r\n                if (newFont == font)\r\n                    return;\r\n\r\n                font = newFont;\r\n                IntPtr hfont = font.ToHfont(); // THINK: When should we delete this hfont?\r\n                NativeMethods.SendMessage(Handle, WM_SETFONT, hfont, 0);\r\n            }\r\n        }\r\n        private Font font;\r\n\r\n        /// <summary>\r\n        /// Gets or sets how many milliseconds the tooltip will remain visible while the mouse\r\n        /// is still.\r\n        /// </summary>\r\n        public int AutoPopDelay {\r\n            get { return GetDelayTime(TTDT_AUTOPOP); }\r\n            set { SetDelayTime(TTDT_AUTOPOP, value); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets how many milliseconds the mouse must be still before the tooltip is shown.\r\n        /// </summary>\r\n        public int InitialDelay {\r\n            get { return GetDelayTime(TTDT_INITIAL); }\r\n            set { SetDelayTime(TTDT_INITIAL, value); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets how many milliseconds the mouse must be still before the tooltip is shown again.\r\n        /// </summary>\r\n        public int ReshowDelay {\r\n            get { return GetDelayTime(TTDT_RESHOW); }\r\n            set { SetDelayTime(TTDT_RESHOW, value); }\r\n        }\r\n\r\n        private int GetDelayTime(int which) {\r\n            return (int)NativeMethods.SendMessage(Handle, TTM_GETDELAYTIME, which, 0);\r\n        }\r\n\r\n        private void SetDelayTime(int which, int value) {\r\n            NativeMethods.SendMessage(Handle, TTM_SETDELAYTIME, which, value);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// Create the underlying control.\r\n        /// </summary>\r\n        /// <param name=\"parentHandle\">The parent of the tooltip</param>\r\n        /// <remarks>This does nothing if the control has already been created</remarks>\r\n        public void Create(IntPtr parentHandle) {\r\n            if (Handle != IntPtr.Zero)\r\n                return;\r\n\r\n            CreateParams cp = new CreateParams();\r\n            cp.ClassName = \"tooltips_class32\";\r\n            cp.Style = TTS_NOPREFIX;\r\n            cp.ExStyle = WS_EX_TOPMOST;\r\n            cp.Parent = parentHandle;\r\n            CreateHandle(cp);\r\n            \r\n            // Ensure that multiline tooltips work correctly\r\n            SetMaxWidth();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Take a copy of the current settings and restore them when the \r\n        /// tooltip is poppped.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This call cannot be nested. Subsequent calls to this method will be ignored\r\n        /// until PopSettings() is called.\r\n        /// </remarks>\r\n        public void PushSettings() {\r\n            // Ignore any nested calls\r\n            if (settings != null)\r\n                return;\r\n            settings = new Hashtable();\r\n            settings[\"IsBalloon\"] = IsBalloon;\r\n            settings[\"HasBorder\"] = HasBorder;\r\n            settings[\"BackColor\"] = BackColor;\r\n            settings[\"ForeColor\"] = ForeColor;\r\n            settings[\"Title\"] = Title;\r\n            settings[\"StandardIcon\"] = StandardIcon;\r\n            settings[\"AutoPopDelay\"] = AutoPopDelay;\r\n            settings[\"InitialDelay\"] = InitialDelay;\r\n            settings[\"ReshowDelay\"] = ReshowDelay;\r\n            settings[\"Font\"] = Font;\r\n        }\r\n        private Hashtable settings;\r\n\r\n        /// <summary>\r\n        /// Restore the settings of the tooltip as they were when PushSettings()\r\n        /// was last called.\r\n        /// </summary>\r\n        public void PopSettings() {\r\n            if (settings == null)\r\n                return;\r\n\r\n            IsBalloon = (bool)settings[\"IsBalloon\"];\r\n            HasBorder = (bool)settings[\"HasBorder\"];\r\n            BackColor = (Color)settings[\"BackColor\"];\r\n            ForeColor = (Color)settings[\"ForeColor\"];\r\n            Title = (string)settings[\"Title\"];\r\n            StandardIcon = (StandardIcons)settings[\"StandardIcon\"];\r\n            AutoPopDelay = (int)settings[\"AutoPopDelay\"];\r\n            InitialDelay = (int)settings[\"InitialDelay\"];\r\n            ReshowDelay = (int)settings[\"ReshowDelay\"];\r\n            Font = (Font)settings[\"Font\"];\r\n\r\n            settings = null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Add the given window to those for whom this tooltip will show tips\r\n        /// </summary>\r\n        /// <param name=\"window\">The window</param>\r\n        public void AddTool(IWin32Window window) {\r\n            NativeMethods.TOOLINFO lParam = MakeToolInfoStruct(window);\r\n            NativeMethods.SendMessageTOOLINFO(Handle, TTM_ADDTOOL, 0, lParam);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Hide any currently visible tooltip\r\n        /// </summary>\r\n        /// <param name=\"window\"></param>\r\n        public void PopToolTip(IWin32Window window) {\r\n            NativeMethods.SendMessage(Handle, TTM_POP, 0, 0);\r\n        }\r\n\r\n        //public void Munge() {\r\n        //    NativeMethods.TOOLINFO tool = new NativeMethods.TOOLINFO();\r\n        //    IntPtr result = NativeMethods.SendMessageTOOLINFO(this.Handle, TTM_GETCURRENTTOOL, 0, tool);\r\n        //    System.Diagnostics.Trace.WriteLine(\"-\");\r\n        //    System.Diagnostics.Trace.WriteLine(result);\r\n        //    result = NativeMethods.SendMessageTOOLINFO(this.Handle, TTM_GETBUBBLESIZE, 0, tool);\r\n        //    System.Diagnostics.Trace.WriteLine(String.Format(\"{0} {1}\", result.ToInt32() >> 16, result.ToInt32() & 0xFFFF));\r\n        //    NativeMethods.ChangeSize(this, result.ToInt32() & 0xFFFF, result.ToInt32() >> 16);\r\n        //    //NativeMethods.RECT r = new NativeMethods.RECT();\r\n        //    //r.right \r\n        //    //IntPtr x = NativeMethods.SendMessageRECT(this.Handle, TTM_ADJUSTRECT, true, ref r);\r\n\r\n        //    //System.Diagnostics.Trace.WriteLine(String.Format(\"{0} {1} {2} {3}\", r.left, r.top, r.right, r.bottom));\r\n        //}\r\n\r\n        /// <summary>\r\n        /// Remove the given window from those managed by this tooltip\r\n        /// </summary>\r\n        /// <param name=\"window\"></param>\r\n        public void RemoveToolTip(IWin32Window window) {\r\n            NativeMethods.TOOLINFO lParam = MakeToolInfoStruct(window);\r\n            NativeMethods.SendMessageTOOLINFO(Handle, TTM_DELTOOL, 0, lParam);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the maximum width of a tooltip string.\r\n        /// </summary>\r\n        public void SetMaxWidth() {\r\n            SetMaxWidth(SystemInformation.MaxWindowTrackSize.Width);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the maximum width of a tooltip string.\r\n        /// </summary>\r\n        /// <remarks>Setting this ensures that line breaks in the tooltip are honoured.</remarks>\r\n        public void SetMaxWidth(int maxWidth) {\r\n            NativeMethods.SendMessage(Handle, TTM_SETMAXTIPWIDTH, 0, maxWidth);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        /// <summary>\r\n        /// Make a TOOLINFO structure for the given window\r\n        /// </summary>\r\n        /// <param name=\"window\"></param>\r\n        /// <returns>A filled in TOOLINFO</returns>\r\n        private NativeMethods.TOOLINFO MakeToolInfoStruct(IWin32Window window) {\r\n\r\n            NativeMethods.TOOLINFO toolinfo_tooltip = new NativeMethods.TOOLINFO();\r\n            toolinfo_tooltip.hwnd = window.Handle;\r\n            toolinfo_tooltip.uFlags = TTF_IDISHWND | TTF_SUBCLASS;\r\n            toolinfo_tooltip.uId = window.Handle;\r\n            toolinfo_tooltip.lpszText = (IntPtr)(-1); // LPSTR_TEXTCALLBACK\r\n\r\n            return toolinfo_tooltip;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a WmNotify message\r\n        /// </summary>\r\n        /// <param name=\"msg\">The msg</param>\r\n        /// <returns>True if the message has been handled</returns>\r\n        protected virtual bool HandleNotify(ref Message msg) {\r\n\r\n            //THINK: What do we have to do here? Nothing it seems :)\r\n\r\n            //NativeMethods.NMHEADER nmheader = (NativeMethods.NMHEADER)msg.GetLParam(typeof(NativeMethods.NMHEADER));\r\n            //System.Diagnostics.Trace.WriteLine(\"HandleNotify\");\r\n            //System.Diagnostics.Trace.WriteLine(nmheader.nhdr.code);\r\n\r\n            //switch (nmheader.nhdr.code) {\r\n            //}\r\n\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a get display info message\r\n        /// </summary>\r\n        /// <param name=\"msg\">The msg</param>\r\n        /// <returns>True if the message has been handled</returns>\r\n        public virtual bool HandleGetDispInfo(ref Message msg) {\r\n            //System.Diagnostics.Trace.WriteLine(\"HandleGetDispInfo\");\r\n            SetMaxWidth();\r\n            ToolTipShowingEventArgs args = new ToolTipShowingEventArgs();\r\n            args.ToolTipControl = this;\r\n            OnShowing(args);\r\n            if (String.IsNullOrEmpty(args.Text))\r\n                return false;\r\n\r\n            ApplyEventFormatting(args);\r\n\r\n            NativeMethods.NMTTDISPINFO dispInfo = (NativeMethods.NMTTDISPINFO)msg.GetLParam(typeof(NativeMethods.NMTTDISPINFO));\r\n            dispInfo.lpszText = args.Text;\r\n            dispInfo.hinst = IntPtr.Zero;\r\n            if (args.RightToLeft == RightToLeft.Yes)\r\n                dispInfo.uFlags |= TTF_RTLREADING;\r\n            Marshal.StructureToPtr(dispInfo, msg.LParam, false);\r\n\r\n            return true;\r\n        }\r\n\r\n        private void ApplyEventFormatting(ToolTipShowingEventArgs args) {\r\n            if (!args.IsBalloon.HasValue &&\r\n                !args.BackColor.HasValue &&\r\n                !args.ForeColor.HasValue &&\r\n                args.Title == null &&\r\n                !args.StandardIcon.HasValue &&\r\n                !args.AutoPopDelay.HasValue &&\r\n                args.Font == null)\r\n                return;\r\n\r\n            PushSettings();\r\n            if (args.IsBalloon.HasValue)\r\n                IsBalloon = args.IsBalloon.Value;\r\n            if (args.BackColor.HasValue)\r\n                BackColor = args.BackColor.Value;\r\n            if (args.ForeColor.HasValue)\r\n                ForeColor = args.ForeColor.Value;\r\n            if (args.StandardIcon.HasValue)\r\n                StandardIcon = args.StandardIcon.Value;\r\n            if (args.AutoPopDelay.HasValue)\r\n                AutoPopDelay = args.AutoPopDelay.Value;\r\n            if (args.Font != null)\r\n                Font = args.Font;\r\n            if (args.Title != null)\r\n                Title = args.Title;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a TTN_LINKCLICK message\r\n        /// </summary>\r\n        /// <param name=\"msg\">The msg</param>\r\n        /// <returns>True if the message has been handled</returns>\r\n        /// <remarks>This cannot call base.WndProc() since the msg may have come from another control.</remarks>\r\n        public virtual bool HandleLinkClick(ref Message msg) {\r\n            //System.Diagnostics.Trace.WriteLine(\"HandleLinkClick\");\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a TTN_POP message\r\n        /// </summary>\r\n        /// <param name=\"msg\">The msg</param>\r\n        /// <returns>True if the message has been handled</returns>\r\n        /// <remarks>This cannot call base.WndProc() since the msg may have come from another control.</remarks>\r\n        public virtual bool HandlePop(ref Message msg) {\r\n            //System.Diagnostics.Trace.WriteLine(\"HandlePop\");\r\n            PopSettings();\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a TTN_SHOW message\r\n        /// </summary>\r\n        /// <param name=\"msg\">The msg</param>\r\n        /// <returns>True if the message has been handled</returns>\r\n        /// <remarks>This cannot call base.WndProc() since the msg may have come from another control.</remarks>\r\n        public virtual bool HandleShow(ref Message msg) {\r\n            //System.Diagnostics.Trace.WriteLine(\"HandleShow\");\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a reflected notify message\r\n        /// </summary>\r\n        /// <param name=\"msg\">The msg</param>\r\n        /// <returns>True if the message has been handled</returns>\r\n        protected virtual bool HandleReflectNotify(ref Message msg) {\r\n\r\n            NativeMethods.NMHEADER nmheader = (NativeMethods.NMHEADER)msg.GetLParam(typeof(NativeMethods.NMHEADER));\r\n            switch (nmheader.nhdr.code) {\r\n                case TTN_SHOW:\r\n                    //System.Diagnostics.Trace.WriteLine(\"reflect TTN_SHOW\");\r\n                    if (HandleShow(ref msg))\r\n                        return true;\r\n                    break;\r\n                case TTN_POP:\r\n                    //System.Diagnostics.Trace.WriteLine(\"reflect TTN_POP\");\r\n                    if (HandlePop(ref msg))\r\n                        return true;\r\n                    break;\r\n                case TTN_LINKCLICK:\r\n                    //System.Diagnostics.Trace.WriteLine(\"reflect TTN_LINKCLICK\");\r\n                    if (HandleLinkClick(ref msg))\r\n                        return true;\r\n                    break;\r\n                case TTN_GETDISPINFO:\r\n                    //System.Diagnostics.Trace.WriteLine(\"reflect TTN_GETDISPINFO\");\r\n                    if (HandleGetDispInfo(ref msg))\r\n                        return true;\r\n                    break;\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Mess with the basic message pump of the tooltip\r\n        /// </summary>\r\n        /// <param name=\"msg\"></param>\r\n        override protected void WndProc(ref Message msg) {\r\n            //System.Diagnostics.Trace.WriteLine(String.Format(\"xx {0:x}\", msg.Msg));\r\n            switch (msg.Msg) {\r\n                case 0x4E: // WM_NOTIFY\r\n                    if (!HandleNotify(ref msg))\r\n                        return;\r\n                    break;\r\n\r\n                case 0x204E: // WM_REFLECT_NOTIFY\r\n                    if (!HandleReflectNotify(ref msg))\r\n                        return;\r\n                    break;\r\n            }\r\n\r\n            base.WndProc(ref msg);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Events\r\n\r\n        /// <summary>\r\n        /// Tell the world that a tooltip is about to show\r\n        /// </summary>\r\n        public event EventHandler<ToolTipShowingEventArgs> Showing;\r\n\r\n        /// <summary>\r\n        /// Tell the world that a tooltip is about to disappear\r\n        /// </summary>\r\n        public event EventHandler<EventArgs> Pop;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnShowing(ToolTipShowingEventArgs e) {\r\n            if (Showing != null)\r\n                Showing(this, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void OnPop(EventArgs e) {\r\n            if (Pop != null)\r\n                Pop(this, e);\r\n        }\r\n\r\n        #endregion\r\n    }\r\n\r\n}"
  },
  {
    "path": "source/ObjectListView/TreeListView.cs",
    "content": "/*\r\n * TreeListView - A listview that can show a tree of objects in a column\r\n *\r\n * Author: Phillip Piper\r\n * Date: 23/09/2008 11:15 AM\r\n * \r\n * Change log:\r\n * v2.9\r\n * 2015-08-02  JPP  - Fixed buy with hierarchical checkboxes where setting the checkedness of a deeply\r\n *                    nested object would sometimes not correctly calculate the changes in the hierarchy. SF #150.\r\n * 2015-06-27  JPP  - Corrected small UI glitch when focus was lost and HideSelection was false. SF #135.\r\n * v2.8.1\r\n * 2014-11-28  JPP  - Fixed issue in RefreshObject() where a model with less children than previous that could not\r\n *                    longer be expanded would cause an exception.\r\n * 2014-11-23  JPP  - Fixed an issue where collapsing a branch could leave the internal object->index map out of date.\r\n * v2.8\r\n * 2014-10-08  JPP  - Fixed an issue where pre-expanded branches would not initially expand properly\r\n * 2014-09-29  JPP  - Fixed issue where RefreshObject() on a root object could cause exceptions\r\n *                  - Fixed issue where CollapseAll() while filtering could cause exception\r\n * 2014-03-09  JPP  - Fixed issue where removing a branches only child and then calling RefreshObject()\r\n *                    could throw an exception.\r\n * v2.7\r\n * 2014-02-23  JPP  - Added Reveal() method to show a deeply nested models.\r\n * 2014-02-05  JPP  - Fix issue where refreshing a non-root item would collapse all expanded children of that item\r\n * 2014-02-01  JPP  - ClearObjects() now actually, you know, clears objects :)\r\n *                  - Corrected issue where Expanded event was being raised twice.\r\n *                  - RebuildChildren() no longer checks if CanExpand is true before rebuilding.\r\n * 2014-01-16  JPP  - Corrected an off-by-1 error in hit detection, which meant that clicking in the last 16 pixels\r\n *                    of an items label was being ignored.\r\n * 2013-11-20  JPP  - Moved event triggers into Collapse() and Expand() so that the events are always triggered.\r\n *                  - CheckedObjects now includes objects that are in a branch that is currently collapsed\r\n *                  - CollapseAll() and ExpandAll() now trigger cancellable events\r\n * 2013-09-29  JPP  - Added TreeFactory to allow the underlying Tree to be replaced by another implementation.\r\n * 2013-09-23  JPP  - Fixed long standing issue where RefreshObject() would not work on root objects\r\n *                    which overrode Equals()/GetHashCode().\r\n * 2013-02-23  JPP  - Added HierarchicalCheckboxes. When this is true, the checkedness of a parent\r\n *                    is an synopsis of the checkedness of its children. When all children are checked,\r\n *                    the parent is checked. When all children are unchecked, the parent is unchecked.\r\n *                    If some children are checked and some are not, the parent is indeterminate.\r\n * v2.6\r\n * 2012-10-25  JPP  - Circumvent annoying issue in ListView control where changing\r\n *                    selection would leave artifacts on the control.\r\n * 2012-08-10  JPP  - Don't trigger selection changed events during expands\r\n * \r\n * v2.5.1\r\n * 2012-04-30  JPP  - Fixed issue where CheckedObjects would return model objects that had been filtered out.\r\n *                  - Allow any column to render the tree, not just column 0 (still not sure about this one)\r\n * v2.5.0\r\n * 2011-04-20  JPP  - Added ExpandedObjects property and RebuildAll() method.\r\n * 2011-04-09  JPP  - Added Expanding, Collapsing, Expanded and Collapsed events.\r\n *                    The ..ing events are cancellable. These are only fired in response\r\n *                    to user actions.\r\n * v2.4.1\r\n * 2010-06-15  JPP  - Fixed issue in Tree.RemoveObjects() which resulted in removed objects\r\n *                    being reported as still existing.\r\n * v2.3\r\n * 2009-09-01  JPP  - Fixed off-by-one error that was messing up hit detection\r\n * 2009-08-27  JPP  - Fixed issue when dragging a node from one place to another in the tree\r\n * v2.2.1\r\n * 2009-07-14  JPP  - Clicks to the left of the expander in tree cells are now ignored.\r\n * v2.2\r\n * 2009-05-12  JPP  - Added tree traverse operations: GetParent and GetChildren.\r\n *                  - Added DiscardAllState() to completely reset the TreeListView.\r\n * 2009-05-10  JPP  - Removed all unsafe code\r\n * 2009-05-09  JPP  - Fixed issue where any command (Expand/Collapse/Refresh) on a model\r\n *                    object that was once visible but that is currently in a collapsed branch\r\n *                    would cause the control to crash.\r\n * 2009-05-07  JPP  - Fixed issue where RefreshObjects() would fail when none of the given\r\n *                    objects were present/visible.\r\n * 2009-04-20  JPP  - Fixed issue where calling Expand() on an already expanded branch confused\r\n *                    the display of the children (SF#2499313)\r\n * 2009-03-06  JPP  - Calculate edit rectangle on column 0 more accurately\r\n * v2.1\r\n * 2009-02-24  JPP  - All commands now work when the list is empty (SF #2631054)\r\n *                  - TreeListViews can now be printed with ListViewPrinter\r\n * 2009-01-27  JPP  - Changed to use new Renderer and HitTest scheme\r\n * 2009-01-22  JPP  - Added RevealAfterExpand property. If this is true (the default),\r\n *                    after expanding a branch, the control scrolls to reveal as much of the\r\n *                    expanded branch as possible.\r\n * 2009-01-13  JPP  - Changed TreeRenderer to work with visual styles are disabled\r\n * v2.0.1\r\n * 2009-01-07  JPP  - Made all public and protected methods virtual \r\n *                  - Changed some classes from 'internal' to 'protected' so that they\r\n *                    can be accessed by subclasses of TreeListView.\r\n * 2008-12-22  JPP  - Added UseWaitCursorWhenExpanding property\r\n *                  - Made TreeRenderer public so that it can be subclassed\r\n *                  - Added LinePen property to TreeRenderer to allow the connection drawing \r\n *                    pen to be changed \r\n *                  - Fixed some rendering issues where the text highlight rect was miscalculated\r\n *                  - Fixed connection line problem when there is only a single root\r\n * v2.0\r\n * 2008-12-10  JPP  - Expand/collapse with mouse now works when there is no SmallImageList.\r\n * 2008-12-01  JPP  - Search-by-typing now works.\r\n * 2008-11-26  JPP  - Corrected calculation of expand/collapse icon (SF#2338819)\r\n *                  - Fixed ugliness with dotted lines in renderer (SF#2332889)\r\n *                  - Fixed problem with custom selection colors (SF#2338805)\r\n * 2008-11-19  JPP  - Expand/collapse now preserve the selection -- more or less :)\r\n *                  - Overrode RefreshObjects() to rebuild the given objects and their children\r\n * 2008-11-05  JPP  - Added ExpandAll() and CollapseAll() commands\r\n *                  - CanExpand is no longer cached\r\n *                  - Renamed InitialBranches to RootModels since it deals with model objects\r\n * 2008-09-23  JPP  Initial version\r\n *\r\n * TO DO:\r\n * \r\n * Copyright (C) 2006-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Diagnostics;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A TreeListView combines an expandable tree structure with list view columns.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>To support tree operations, two delegates must be provided:</para>\r\n    /// <list type=\"table\">\r\n    /// <item>\r\n    /// <term>\r\n    /// CanExpandGetter\r\n    /// </term> \r\n    /// <description>\r\n    /// This delegate must accept a model object and return a boolean indicating\r\n    /// if that model should be expandable. \r\n    /// </description>\r\n    /// </item>\r\n    /// <item>\r\n    /// <term>\r\n    /// ChildrenGetter\r\n    /// </term> \r\n    /// <description>\r\n    /// This delegate must accept a model object and return an IEnumerable of model\r\n    /// objects that will be displayed as children of the parent model. This delegate will only be called\r\n    /// for a model object if the CanExpandGetter has already returned true for that model.\r\n    /// </description>\r\n    /// </item>\r\n    /// <item>\r\n    /// <term>\r\n    /// ParentGetter\r\n    /// </term> \r\n    /// <description>\r\n    /// This delegate must accept a model object and return the parent model. \r\n    /// This delegate will only be called when HierarchicalCheckboxes is true OR when Reveal() is called. \r\n    /// </description>\r\n    /// </item>\r\n    /// </list>\r\n    /// <para>\r\n    /// The top level branches of the tree are set via the Roots property. SetObjects(), AddObjects() \r\n    /// and RemoveObjects() are interpreted as operations on this collection of roots.\r\n    /// </para>\r\n    /// <para>\r\n    /// To add new children to an existing branch, make changes to your model objects and then\r\n    /// call RefreshObject() on the parent.\r\n    /// </para>\r\n    /// <para>The tree must be a directed acyclic graph -- no cycles are allowed. Put more mundanely, \r\n    /// each model object must appear only once in the tree. If the same model object appears in two\r\n    /// places in the tree, the control will become confused.</para>\r\n    /// </remarks>\r\n    public partial class TreeListView : VirtualObjectListView\r\n    {\r\n        /// <summary>\r\n        /// Make a default TreeListView\r\n        /// </summary>\r\n        public TreeListView() {\r\n            OwnerDraw = true;\r\n            View = View.Details;\r\n            CheckedObjectsMustStillExistInList = false;\r\n\r\n// ReSharper disable DoNotCallOverridableMethodsInConstructor\r\n            RegenerateTree();\r\n            TreeColumnRenderer = new TreeRenderer();\r\n// ReSharper restore DoNotCallOverridableMethodsInConstructor\r\n\r\n            // This improves hit detection even if we don't have any state image\r\n            SmallImageList = new ImageList();\r\n           // this.StateImageList.ImageSize = new Size(6, 6);\r\n        }\r\n\r\n        //------------------------------------------------------------------------------------------\r\n        // Properties\r\n\r\n        /// <summary>\r\n        /// This is the delegate that will be used to decide if a model object can be expanded.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This is called *often* -- on every mouse move when required. It must be fast.\r\n        /// Don't do database lookups, linear searches, or pi calculations. Just return the\r\n        /// value of a property.\r\n        /// </para>\r\n        /// <para>\r\n        /// When this delegate is called, the TreeListView is not in a stable state. Don't make\r\n        /// calls back into the control.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual CanExpandGetterDelegate CanExpandGetter {\r\n            get { return TreeModel.CanExpandGetter; }\r\n            set { TreeModel.CanExpandGetter = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets whether or not this listview is capable of showing groups\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public override bool CanShowGroups {\r\n            get {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// This is the delegate that will be used to fetch the children of a model object\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This delegate will only be called if the CanExpand delegate has \r\n        /// returned true for the model object.\r\n        /// </para>\r\n        /// <para>\r\n        /// When this delegate is called, the TreeListView is not in a stable state. Don't do anything\r\n        /// that will result in calls being made back into the control.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual ChildrenGetterDelegate ChildrenGetter {\r\n            get { return TreeModel.ChildrenGetter; }\r\n            set { TreeModel.ChildrenGetter = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// This is the delegate that will be used to fetch the parent of a model object\r\n        /// </summary>\r\n        /// <returns>The parent of the given model, or null if the model doesn't exist or \r\n        /// if the model is a root</returns>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public ParentGetterDelegate ParentGetter {\r\n            get { return parentGetter; }\r\n            set { parentGetter = value; }\r\n        }\r\n        private ParentGetterDelegate parentGetter;\r\n\r\n        /// <summary>\r\n        /// Get or set the collection of model objects that are checked.\r\n        /// When setting this property, any row whose model object isn't\r\n        /// in the given collection will be unchecked. Setting to null is\r\n        /// equivalent to unchecking all.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This property returns a simple collection. Changes made to the returned\r\n        /// collection do NOT affect the list. This is different to the behaviour of\r\n        /// CheckedIndicies collection.\r\n        /// </para>\r\n        /// <para>\r\n        /// When getting CheckedObjects, the performance of this method is O(n) where n is the number of checked objects.\r\n        /// When setting CheckedObjects, the performance of this method is O(n) where n is the number of checked objects plus\r\n        /// the number of objects to be checked.\r\n        /// </para>\r\n        /// <para>\r\n        /// If the ListView is not currently showing CheckBoxes, this property does nothing. It does\r\n        /// not remember any check box settings made.\r\n        /// </para>\r\n        /// </remarks>\r\n        public override IList CheckedObjects {\r\n            get {\r\n                return base.CheckedObjects;\r\n            }\r\n            set {\r\n                ArrayList objectsToRecalculate = new ArrayList(CheckedObjects);\r\n                if (value != null)\r\n                    objectsToRecalculate.AddRange(value);\r\n\r\n                base.CheckedObjects = value;\r\n\r\n                if (HierarchicalCheckboxes)\r\n                    RecalculateHierarchicalCheckBoxGraph(objectsToRecalculate);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the model objects that are expanded.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>This can be used to expand model objects before they are seen.</para>\r\n        /// <para>\r\n        /// Setting this does *not* force the control to rebuild\r\n        /// its display. You need to call RebuildAll(true).\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IEnumerable ExpandedObjects {\r\n            get {\r\n                return TreeModel.mapObjectToExpanded.Keys;\r\n            }\r\n            set {\r\n                TreeModel.mapObjectToExpanded.Clear();\r\n                if (value != null) {\r\n                    foreach (object x in value)\r\n                        TreeModel.SetModelExpanded(x, true);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or  sets the filter that is applied to our whole list of objects.\r\n        /// TreeListViews do not currently support whole list filters.\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public override IListFilter ListFilter {\r\n            get { return null; }\r\n            set {\r\n                Debug.Assert(value == null, \"TreeListView do not support ListFilters\");\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether this tree list view will display hierarchical checkboxes.\r\n        /// Hierarchical checkboxes is when a parent's \"checkedness\" is calculated from\r\n        /// the \"checkedness\" of its children. If all children are checked, the parent\r\n        /// will be checked. If all children are unchecked, the parent will also be unchecked.\r\n        /// If some children are checked and others are not, the parent will be indeterminate.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Hierarchical checkboxes don't work with either CheckStateGetters or CheckedAspectName\r\n        /// (which is basically the same thing). This is because it is too expensive to build the \r\n        /// initial state of the control if these are installed, since the control would have to walk\r\n        /// *every* branch recursively since a single bottom level leaf could change the checkedness\r\n        /// of the top root.\r\n        /// </remarks>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Show hierarchical checkboxes be enabled?\"),\r\n         DefaultValue(false)]\r\n        public virtual bool HierarchicalCheckboxes {\r\n            get { return hierarchicalCheckboxes; }\r\n            set {\r\n                if (hierarchicalCheckboxes == value)\r\n                    return;\r\n\r\n                hierarchicalCheckboxes = value;\r\n                CheckBoxes = value;\r\n                if (value)\r\n                    TriStateCheckBoxes = false;\r\n            }\r\n        }\r\n        private bool hierarchicalCheckboxes;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the collection of root objects of the tree\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public override IEnumerable Objects {\r\n            get { return Roots; }\r\n            set { Roots = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets the collection of objects that will be considered when creating clusters\r\n        /// (which are used to generate Excel-like column filters)\r\n        /// </summary>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public override IEnumerable ObjectsForClustering {\r\n            get {\r\n                for (int i = 0; i < TreeModel.GetObjectCount(); i++)\r\n                    yield return TreeModel.GetNthObject(i);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// After expanding a branch, should the TreeListView attempts to show as much of the \r\n        /// revealed descendents as possible.\r\n        /// </summary>\r\n        [Category(\"ObjectListView\"),\r\n         Description(\"Should the parent of an expand subtree be scrolled to the top revealing the children?\"),\r\n         DefaultValue(true)]\r\n        public bool RevealAfterExpand {\r\n            get { return revealAfterExpand; }\r\n            set { revealAfterExpand = value; }\r\n        }\r\n        private bool revealAfterExpand = true;\r\n\r\n        /// <summary>\r\n        /// The model objects that form the top level branches of the tree.\r\n        /// </summary>\r\n        /// <remarks>Setting this does <b>NOT</b> reset the state of the control.\r\n        /// In particular, it does not collapse branches.</remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IEnumerable Roots {\r\n            get { return TreeModel.RootObjects; }\r\n            set {\r\n                TreeColumnRenderer = TreeColumnRenderer;\r\n                TreeModel.RootObjects = value ?? new ArrayList();\r\n                UpdateVirtualListSize();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make sure that at least one column is displaying a tree. \r\n        /// If no columns is showing the tree, make column 0 do it.\r\n        /// </summary>\r\n        protected virtual void EnsureTreeRendererPresent(TreeRenderer renderer) {\r\n            if (Columns.Count == 0) \r\n                return;\r\n\r\n            foreach (OLVColumn col in Columns) {\r\n                if (col.Renderer is TreeRenderer) {\r\n                    col.Renderer = renderer;\r\n                    return;\r\n                }\r\n            }\r\n\r\n            // No column held a tree renderer, so give column 0 one\r\n            OLVColumn columnZero = GetColumn(0);\r\n            columnZero.Renderer = renderer;\r\n            columnZero.WordWrap = columnZero.WordWrap;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the renderer that will be used to draw the tree structure.\r\n        /// Setting this to null resets the renderer to default.\r\n        /// </summary>\r\n        /// <remarks>If a column is currently rendering the tree, the renderer\r\n        /// for that column will be replaced. If no column is rendering the tree,\r\n        /// column 0 will be given this renderer.</remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual TreeRenderer TreeColumnRenderer {\r\n            get { return treeRenderer ?? (treeRenderer = new TreeRenderer()); }\r\n            set {\r\n                treeRenderer = value ?? new TreeRenderer();\r\n                EnsureTreeRendererPresent(treeRenderer);\r\n            }\r\n        }\r\n        private TreeRenderer treeRenderer;\r\n\r\n        /// <summary>\r\n        /// This is the delegate that will be used to create the underlying Tree structure\r\n        /// that the TreeListView uses to manage the information about the tree.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>The factory must not return null. </para>\r\n        /// <para>\r\n        /// Most users of TreeListView will never have to use this delegate.\r\n        /// </para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public TreeFactoryDelegate TreeFactory {\r\n            get { return treeFactory; }\r\n            set { treeFactory = value; }\r\n        }\r\n        private TreeFactoryDelegate treeFactory;\r\n\r\n        /// <summary>\r\n        /// Should a wait cursor be shown when a branch is being expanded?\r\n        /// </summary>\r\n        /// <remarks>When this is true, the wait cursor will be shown whilst the children of the \r\n        /// branch are being fetched. If the children of the branch have already been cached, \r\n        /// the cursor will not change.</remarks>\r\n        [Category(\"ObjectListView\"),\r\n        Description(\"Should a wait cursor be shown when a branch is being expanded?\"),\r\n        DefaultValue(true)]\r\n        public virtual bool UseWaitCursorWhenExpanding {\r\n            get { return useWaitCursorWhenExpanding; }\r\n            set { useWaitCursorWhenExpanding = value; }\r\n        }\r\n        private bool useWaitCursorWhenExpanding = true;\r\n\r\n        /// <summary>\r\n        /// Gets the model that is used to manage the tree structure\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Don't mess with this property unless you really know what you are doing.\r\n        /// If you don't already know what it's for, you don't need it.</remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public Tree TreeModel {\r\n            get { return treeModel; }\r\n            protected set { treeModel = value; } \r\n        }\r\n        private Tree treeModel;\r\n\r\n        //------------------------------------------------------------------------------------------\r\n        // Accessing\r\n\r\n        /// <summary>\r\n        /// Return true if the branch at the given model is expanded\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        public virtual bool IsExpanded(Object model) {\r\n            Branch br = TreeModel.GetBranch(model);\r\n            return (br != null && br.IsExpanded);\r\n        }\r\n\r\n        //------------------------------------------------------------------------------------------\r\n        // Commands\r\n\r\n        /// <summary>\r\n        /// Collapse the subtree underneath the given model\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        public virtual void Collapse(Object model) {\r\n            if (GetItemCount() == 0)\r\n                return;\r\n            \r\n            OLVListItem item = ModelToItem(model);\r\n            TreeBranchCollapsingEventArgs args = new TreeBranchCollapsingEventArgs(model, item);\r\n            OnCollapsing(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            IList selection = SelectedObjects;\r\n            int index = TreeModel.Collapse(model);\r\n            if (index >= 0) {\r\n                UpdateVirtualListSize();\r\n                SelectedObjects = selection;\r\n                if (index < GetItemCount())\r\n                    RedrawItems(index, GetItemCount() - 1, true);\r\n                OnCollapsed(new TreeBranchCollapsedEventArgs(model, item));\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Collapse all subtrees within this control\r\n        /// </summary>\r\n        public virtual void CollapseAll() {\r\n            if (GetItemCount() == 0)\r\n                return;\r\n\r\n            TreeBranchCollapsingEventArgs args = new TreeBranchCollapsingEventArgs(null, null);\r\n            OnCollapsing(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            IList selection = SelectedObjects;\r\n            int index = TreeModel.CollapseAll();\r\n            if (index >= 0) {\r\n                UpdateVirtualListSize();\r\n                SelectedObjects = selection;\r\n                if (index < GetItemCount())\r\n                    RedrawItems(index, GetItemCount() - 1, true);\r\n                OnCollapsed(new TreeBranchCollapsedEventArgs(null, null));\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove all items from this list\r\n        /// </summary>\r\n        /// <remark>This method can safely be called from background threads.</remark>\r\n        public override void ClearObjects() {\r\n            if (InvokeRequired)\r\n                Invoke(new MethodInvoker(ClearObjects));\r\n            else {\r\n                Roots = null;\r\n                DiscardAllState();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Collapse all roots and forget everything we know about all models\r\n        /// </summary>\r\n        public virtual void DiscardAllState() {\r\n            CheckStateMap.Clear();\r\n            RebuildAll(false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Expand the subtree underneath the given model object\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        public virtual void Expand(Object model) {\r\n            if (GetItemCount() == 0)\r\n                return;\r\n\r\n            // Give the world a chance to cancel the expansion\r\n            OLVListItem item = ModelToItem(model);\r\n            TreeBranchExpandingEventArgs args = new TreeBranchExpandingEventArgs(model, item);\r\n            OnExpanding(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            // Remember the selection so we can put it back later\r\n            IList selection = SelectedObjects;\r\n\r\n            // Expand the model first\r\n            int index = TreeModel.Expand(model);\r\n            if (index < 0)\r\n                return;\r\n\r\n            // Update the size of the list and restore the selection\r\n            UpdateVirtualListSize();\r\n            using (SuspendSelectionEventsDuring())\r\n                SelectedObjects = selection;\r\n\r\n            // Redraw the items that were changed by the expand operation\r\n            RedrawItems(index, GetItemCount() - 1, true);\r\n\r\n            OnExpanded(new TreeBranchExpandedEventArgs(model, item));\r\n\r\n            if (RevealAfterExpand && index > 0) {\r\n                // TODO: This should be a separate method\r\n                BeginUpdate();\r\n                try {\r\n                    int countPerPage = NativeMethods.GetCountPerPage(this);\r\n                    int descedentCount = TreeModel.GetVisibleDescendentCount(model);\r\n                    // If all of the descendents can be shown in the window, make sure that last one is visible.\r\n                    // If all the descendents can't fit into the window, move the model to the top of the window\r\n                    // (which will show as many of the descendents as possible)\r\n                    if (descedentCount < countPerPage) {\r\n                        EnsureVisible(index + descedentCount);\r\n                    } else {\r\n                        TopItemIndex = index;\r\n                    }\r\n                }\r\n                finally {\r\n                    EndUpdate();\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Expand all the branches within this tree recursively.\r\n        /// </summary>\r\n        /// <remarks>Be careful: this method could take a long time for large trees.</remarks>\r\n        public virtual void ExpandAll() {\r\n            if (GetItemCount() == 0)\r\n                return;\r\n\r\n            // Give the world a chance to cancel the expansion\r\n            TreeBranchExpandingEventArgs args = new TreeBranchExpandingEventArgs(null, null);\r\n            OnExpanding(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            IList selection = SelectedObjects;\r\n            int index = TreeModel.ExpandAll();\r\n            if (index < 0) \r\n                return;\r\n\r\n            UpdateVirtualListSize();\r\n            using (SuspendSelectionEventsDuring())\r\n                SelectedObjects = selection;\r\n            RedrawItems(index, GetItemCount() - 1, true);\r\n            OnExpanded(new TreeBranchExpandedEventArgs(null, null));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Completely rebuild the tree structure\r\n        /// </summary>\r\n        /// <param name=\"preserveState\">If true, the control will try to preserve selection and expansion</param>\r\n        public virtual void RebuildAll(bool preserveState) {\r\n            int previousTopItemIndex = preserveState ? TopItemIndex : -1;\r\n\r\n            RebuildAll(\r\n                preserveState ? SelectedObjects : null,\r\n                preserveState ? ExpandedObjects : null,\r\n                preserveState ? CheckedObjects : null);\r\n\r\n            if (preserveState)\r\n                TopItemIndex = previousTopItemIndex;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Completely rebuild the tree structure\r\n        /// </summary>\r\n        /// <param name=\"selected\">If not null, this list of objects will be selected after the tree is rebuilt</param>\r\n        /// <param name=\"expanded\">If not null, this collection of objects will be expanded after the tree is rebuilt</param>\r\n        /// <param name=\"checkedObjects\">If not null, this collection of objects will be checked after the tree is rebuilt</param>\r\n        protected virtual void RebuildAll(IList selected, IEnumerable expanded, IList checkedObjects) {\r\n            // Remember the bits of info we don't want to forget (anyone ever see Memento?)\r\n            IEnumerable roots = Roots;\r\n            CanExpandGetterDelegate canExpand = CanExpandGetter;\r\n            ChildrenGetterDelegate childrenGetter = ChildrenGetter;\r\n\r\n            try {\r\n                BeginUpdate();\r\n\r\n                // Give ourselves a new data structure\r\n                RegenerateTree();\r\n\r\n                // Put back the bits we didn't want to forget\r\n                CanExpandGetter = canExpand;\r\n                ChildrenGetter = childrenGetter;\r\n                if (expanded != null)\r\n                    ExpandedObjects = expanded;\r\n                Roots = roots;\r\n                if (selected != null)\r\n                    SelectedObjects = selected;\r\n                if (checkedObjects != null)\r\n                    CheckedObjects = checkedObjects;\r\n            }\r\n            finally {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Unroll all the ancestors of the given model and make sure it is then visible.\r\n        /// </summary>\r\n        /// <remarks>This works best when a ParentGetter is installed.</remarks>\r\n        /// <param name=\"modelToReveal\">The object to be revealed</param>\r\n        /// <param name=\"selectAfterReveal\">If true, the model will be selected and focused after being revealed</param>\r\n        /// <returns>True if the object was found and revealed. False if it was not found.</returns>\r\n        public virtual void Reveal(object modelToReveal, bool selectAfterReveal) {\r\n            // Collect all the ancestors of the model\r\n            ArrayList ancestors = new ArrayList();\r\n            foreach (object ancestor in GetAncestors(modelToReveal))\r\n                ancestors.Add(ancestor);\r\n\r\n            // Arrange them from root down to the model's immediate parent\r\n            ancestors.Reverse();\r\n            try {\r\n                BeginUpdate();\r\n                foreach (object ancestor in ancestors)\r\n                    Expand(ancestor);\r\n                EnsureModelVisible(modelToReveal);\r\n                if (selectAfterReveal)\r\n                    SelectObject(modelToReveal, true);\r\n            }\r\n            finally {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the rows that are showing the given objects\r\n        /// </summary>\r\n        public override void RefreshObjects(IList modelObjects) {\r\n            if (InvokeRequired) {\r\n                Invoke((MethodInvoker) delegate { RefreshObjects(modelObjects); });\r\n                return;\r\n            }\r\n            // There is no point in refreshing anything if the list is empty\r\n            if (GetItemCount() == 0)\r\n                return;\r\n\r\n            // Remember the selection so we can put it back later\r\n            IList selection = SelectedObjects;\r\n\r\n            // We actually need to refresh the parents.\r\n            // Refreshes on root objects have to be handled differently\r\n            ArrayList updatedRoots = new ArrayList();\r\n            Hashtable modelsAndParents = new Hashtable();\r\n            foreach (Object model in modelObjects) {\r\n                if (model == null)\r\n                    continue;\r\n                modelsAndParents[model] = true;\r\n                object parent = GetParent(model);\r\n                if (parent == null) {\r\n                    updatedRoots.Add(model);\r\n                } else {\r\n                    modelsAndParents[parent] = true;\r\n                }\r\n            }\r\n\r\n            // Update any changed roots\r\n            if (updatedRoots.Count > 0) {\r\n                ArrayList newRoots = EnumerableToArray(Roots, false);\r\n                bool changed = false;\r\n                foreach (Object model in updatedRoots) {\r\n                    int index = newRoots.IndexOf(model);\r\n                    if (index >= 0 && !ReferenceEquals(newRoots[index], model)) {\r\n                        newRoots[index] = model;\r\n                        changed = true;\r\n                    }\r\n                }\r\n                if (changed)\r\n                    Roots = newRoots;\r\n            }\r\n\r\n            // Refresh each object, remembering where the first update occurred\r\n            int firstChange = Int32.MaxValue;\r\n            foreach (Object model in modelsAndParents.Keys) {\r\n                if (model != null) {\r\n                    int index = TreeModel.RebuildChildren(model);\r\n                    if (index >= 0)\r\n                        firstChange = Math.Min(firstChange, index);\r\n                }\r\n            }\r\n\r\n            // If we didn't refresh any objects, don't do anything else\r\n            if (firstChange >= GetItemCount())\r\n                return;\r\n\r\n            ClearCachedInfo();\r\n            UpdateVirtualListSize();\r\n            SelectedObjects = selection;\r\n\r\n            // Redraw everything from the first update to the end of the list\r\n            RedrawItems(firstChange, GetItemCount() - 1, true);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the check state of the given object to be the given state.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// If the given model object isn't in the list, we still try to remember\r\n        /// its state, in case it is referenced in the future.</remarks>\r\n        /// <param name=\"modelObject\"></param>\r\n        /// <param name=\"state\"></param>\r\n        /// <returns>True if the checkedness of the model changed</returns>\r\n        protected override bool SetObjectCheckedness(object modelObject, CheckState state) {\r\n            // If the checkedness of the given model changes AND this tree has \r\n            // hierarchical checkboxes, then we need to update the checkedness of \r\n            // its children, and recalculate the checkedness of the parent (recursively)\r\n            if (!base.SetObjectCheckedness(modelObject, state))\r\n                return false;\r\n\r\n            if (!HierarchicalCheckboxes)\r\n                return true;\r\n\r\n            // Give each child the same checkedness as the model\r\n\r\n            CheckState? checkedness = GetCheckState(modelObject);\r\n            if (!checkedness.HasValue || checkedness.Value == CheckState.Indeterminate)\r\n                return true;\r\n\r\n            foreach (object child in GetChildrenWithoutExpanding(modelObject)) {\r\n                SetObjectCheckedness(child, checkedness.Value);\r\n            }\r\n\r\n            ArrayList args = new ArrayList();\r\n            args.Add(modelObject);\r\n            RecalculateHierarchicalCheckBoxGraph(args);\r\n\r\n            return true;\r\n        }\r\n\r\n\r\n        private IEnumerable GetChildrenWithoutExpanding(Object model) {\r\n            Branch br = TreeModel.GetBranch(model);\r\n            if (br == null || !br.CanExpand)\r\n                return new ArrayList();\r\n\r\n            return br.Children;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Toggle the expanded state of the branch at the given model object\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        public virtual void ToggleExpansion(Object model) {\r\n            if (IsExpanded(model)) \r\n                Collapse(model);\r\n            else \r\n                Expand(model);\r\n            }\r\n\r\n        //------------------------------------------------------------------------------------------\r\n        // Commands - Tree traversal\r\n\r\n        /// <summary>\r\n        /// Return whether or not the given model can expand.\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <remarks>The given model must have already been seen in the tree</remarks>\r\n        public virtual bool CanExpand(Object model) {\r\n            Branch br = TreeModel.GetBranch(model);\r\n            return (br != null && br.CanExpand);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the model object that is the parent of the given model object.\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <returns></returns>\r\n        /// <remarks>The given model must have already been seen in the tree.</remarks>\r\n        public virtual Object GetParent(Object model) {\r\n            Branch br = TreeModel.GetBranch(model);\r\n            return br == null || br.ParentBranch == null ? null : br.ParentBranch.Model;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the collection of model objects that are the children of the \r\n        /// given model as they exist in the tree at the moment.\r\n        /// </summary>\r\n        /// <param name=\"model\"></param>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This method returns the collection of children as the tree knows them. If the given\r\n        /// model has never been presented to the user (e.g. it belongs to a parent that has\r\n        /// never been expanded), then this method will return an empty collection.</para>\r\n        /// <para>\r\n        /// Because of this, if you want to traverse the whole tree, this is not the method to use.\r\n        /// It's better to traverse the your data model directly.\r\n        /// </para>\r\n        /// <para>\r\n        /// If the given model has not already been seen in the tree or\r\n        /// if it is not expandable, an empty collection will be returned.\r\n        /// </para>\r\n        /// </remarks>\r\n        public virtual IEnumerable GetChildren(Object model) {\r\n            Branch br = TreeModel.GetBranch(model);\r\n            if (br == null || !br.CanExpand)\r\n                return new ArrayList();\r\n            \r\n            br.FetchChildren();\r\n\r\n            return br.Children;\r\n        }\r\n\r\n        //------------------------------------------------------------------------------------------\r\n        // Delegates\r\n\r\n        /// <summary>\r\n        /// Delegates of this type are use to decide if the given model object can be expanded\r\n        /// </summary>\r\n        /// <param name=\"model\">The model under consideration</param>\r\n        /// <returns>Can the given model be expanded?</returns>\r\n        public delegate bool CanExpandGetterDelegate(Object model);\r\n\r\n        /// <summary>\r\n        /// Delegates of this type are used to fetch the children of the given model object\r\n        /// </summary>\r\n        /// <param name=\"model\">The parent whose children should be fetched</param>\r\n        /// <returns>An enumerable over the children</returns>\r\n        public delegate IEnumerable ChildrenGetterDelegate(Object model);\r\n\r\n        /// <summary>\r\n        /// Delegates of this type are used to fetch the parent of the given model object.\r\n        /// </summary>\r\n        /// <param name=\"model\">The child whose parent should be fetched</param>\r\n        /// <returns>The parent of the child or null if the child is a root</returns>\r\n        public delegate Object ParentGetterDelegate(Object model);\r\n\r\n        /// <summary>\r\n        /// Delegates of this type are used to create a new underlying Tree structure.\r\n        /// </summary>\r\n        /// <param name=\"view\">The view for which the Tree is being created</param>\r\n        /// <returns>A subclass of Tree</returns>\r\n        public delegate Tree TreeFactoryDelegate(TreeListView view);\r\n\r\n        //------------------------------------------------------------------------------------------\r\n        #region Implementation\r\n\r\n        /// <summary>\r\n        /// Handle a left button down event\r\n        /// </summary>\r\n        /// <param name=\"hti\"></param>\r\n        /// <returns></returns>\r\n        protected override bool ProcessLButtonDown(OlvListViewHitTestInfo hti) {\r\n            // Did they click in the expander?\r\n            if (hti.HitTestLocation == HitTestLocation.ExpandButton) {\r\n                PossibleFinishCellEditing();\r\n                ToggleExpansion(hti.RowObject);\r\n                return true;\r\n            }\r\n\r\n            return base.ProcessLButtonDown(hti);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a OLVListItem for given row index\r\n        /// </summary>\r\n        /// <param name=\"itemIndex\">The index of the row that is needed</param>\r\n        /// <returns>An OLVListItem</returns>\r\n        /// <remarks>This differs from the base method by also setting up the IndentCount property.</remarks>\r\n        public override OLVListItem MakeListViewItem(int itemIndex) {\r\n            OLVListItem olvItem = base.MakeListViewItem(itemIndex);\r\n            Branch br = TreeModel.GetBranch(olvItem.RowObject);\r\n            if (br != null)\r\n                olvItem.IndentCount = br.Level;\r\n            return olvItem;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Reinitialize the Tree structure\r\n        /// </summary>\r\n        protected virtual void RegenerateTree() {\r\n            TreeModel = TreeFactory == null ? new Tree(this) : TreeFactory(this);\r\n            Trace.Assert(TreeModel != null);\r\n            VirtualListDataSource = TreeModel;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Recalculate the state of the checkboxes of all the items in the given list\r\n        /// and their ancestors.\r\n        /// </summary>\r\n        /// <remarks>This only makes sense when HierarchicalCheckboxes is true.</remarks>\r\n        /// <param name=\"toCheck\"></param>\r\n        protected virtual void RecalculateHierarchicalCheckBoxGraph(IList toCheck) {\r\n            if (toCheck == null || toCheck.Count == 0)\r\n                return;\r\n\r\n            // Avoid recursive calculations\r\n            if (isRecalculatingHierarchicalCheckBox)\r\n                return;\r\n\r\n            try {\r\n                isRecalculatingHierarchicalCheckBox = true;\r\n                foreach (object ancestor in CalculateDistinctAncestors(toCheck))\r\n                    RecalculateSingleHierarchicalCheckBox(ancestor);\r\n            }\r\n            finally {\r\n                isRecalculatingHierarchicalCheckBox = false;\r\n            }\r\n\r\n        }\r\n        private bool isRecalculatingHierarchicalCheckBox;\r\n\r\n        /// <summary>\r\n        /// Recalculate the hierarchy state of the given item and its ancestors\r\n        /// </summary>\r\n        /// <remarks>This only makes sense when HierarchicalCheckboxes is true.</remarks>\r\n        /// <param name=\"modelObject\"></param>\r\n        protected virtual void RecalculateSingleHierarchicalCheckBox(object modelObject) {\r\n\r\n            if (modelObject == null)\r\n                return;\r\n\r\n            // Only branches have calculated check states. Leaf node checkedness is not calculated\r\n            if (!CanExpandUncached(modelObject))\r\n                return;\r\n\r\n            // Set the checkedness of the given model based on the state of its children.\r\n            CheckState? aggregate = null;\r\n            foreach (object child in GetChildrenUncached(modelObject)) {\r\n                CheckState? checkedness = GetCheckState(child);\r\n                if (!checkedness.HasValue)\r\n                    continue;\r\n\r\n                if (aggregate.HasValue) {\r\n                    if (aggregate.Value != checkedness.Value) {\r\n                        aggregate = CheckState.Indeterminate;\r\n                        break;\r\n                    }\r\n                } else\r\n                    aggregate = checkedness;\r\n            }\r\n\r\n            base.SetObjectCheckedness(modelObject, aggregate ?? CheckState.Indeterminate);\r\n        }\r\n\r\n        private bool CanExpandUncached(object model) {\r\n            return CanExpandGetter != null && model != null && CanExpandGetter(model);\r\n        }\r\n\r\n        private IEnumerable GetChildrenUncached(object model) {\r\n            return ChildrenGetter != null && model != null ? ChildrenGetter(model) : new ArrayList();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Yield the unique ancestors of the given collection of objects.\r\n        /// The order of the ancestors is guaranteed to be deeper objects first.\r\n        /// Roots will always be last.\r\n        /// </summary>\r\n        /// <param name=\"toCheck\"></param>\r\n        /// <returns>Unique ancestors of the given objects</returns>\r\n        protected virtual IEnumerable CalculateDistinctAncestors(IList toCheck) {\r\n\r\n            if (toCheck.Count == 1) {\r\n                foreach (object ancestor in GetAncestors(toCheck[0])) {\r\n                    yield return ancestor;\r\n                }\r\n            } else {\r\n                // WARNING - Clever code\r\n\r\n                // Example:  Root --> GP +--> P +--> A\r\n                //                       |      +--> B\r\n                //                       |\r\n                //                       +--> Q +--> X\r\n                //                              +--> Y\r\n                //\r\n                // Calculate ancestors of A, B, X and Y\r\n\r\n                // Build a list of all ancestors of all objects we need to check\r\n                ArrayList allAncestors = new ArrayList();\r\n                foreach (object child in toCheck) {\r\n                    foreach (object ancestor in GetAncestors(child)) {\r\n                        allAncestors.Add(ancestor);\r\n                    }\r\n                }\r\n\r\n                // allAncestors = { P, GP, Root, P, GP, Root, Q, GP, Root, Q, GP, Root }\r\n\r\n                // Reverse them so \"higher\" ancestors come first\r\n                allAncestors.Reverse();\r\n\r\n                // allAncestors = { Root, GP, Q, Root, GP, Q, Root, GP, P, Root, GP, P  }\r\n\r\n                ArrayList uniqueAncestors = new ArrayList();\r\n                Dictionary<object, bool> alreadySeen = new Dictionary<object, bool>();\r\n                foreach (object ancestor in allAncestors) {\r\n                    if (!alreadySeen.ContainsKey(ancestor)) {\r\n                        alreadySeen[ancestor] = true;\r\n                        uniqueAncestors.Add(ancestor);\r\n                    }\r\n                }\r\n\r\n                // uniqueAncestors = { Root, GP, Q, P }\r\n\r\n                uniqueAncestors.Reverse();\r\n                foreach (object x in uniqueAncestors)\r\n                    yield return x;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return all the ancestors of the given model\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This uses ParentGetter if possible.\r\n        /// </para>\r\n        /// <para>If the given model is a root OR if the model doesn't exist, the collection will be empty</para>\r\n        /// </remarks>\r\n        /// <param name=\"model\">The model whose ancestors should be calculated</param>\r\n        /// <returns>Return a collection of ancestors of the given model.</returns>\r\n        protected virtual IEnumerable GetAncestors(object model) {\r\n            ParentGetterDelegate parentGetterDelegate = ParentGetter ?? GetParent;\r\n\r\n            object parent = parentGetterDelegate(model);\r\n            while (parent != null) {\r\n                yield return parent;\r\n                parent = parentGetterDelegate(parent);\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        //------------------------------------------------------------------------------------------\r\n        #region Event handlers\r\n\r\n        /// <summary>\r\n        /// The application is idle and a SelectionChanged event has been scheduled\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected override void HandleApplicationIdle(object sender, EventArgs e) {\r\n            base.HandleApplicationIdle(sender, e);\r\n\r\n            // There is an annoying redraw issue on ListViews that use indentation and\r\n            // that have full row select enabled. When the selection reduces to a subset\r\n            // of previously selected rows, or when the selection is extended using\r\n            // shift-pageup/down, then the space occupied by the indentation is not\r\n            // invalidated, and hence remains highlighted.\r\n            // Ideally we'd want to know exactly which rows were selected or deselected\r\n            // and then invalidate just the indentation region of those rows,\r\n            // but that's too much work. So just redraw the control.\r\n            // Actually... the selection issues show just slightly for non-full row select\r\n            // controls as well. So, always redraw the control after the selection\r\n            // changes.\r\n            Invalidate();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Decide if the given key event should be handled as a normal key input to the control?\r\n        /// </summary>\r\n        /// <param name=\"keyData\"></param>\r\n        /// <returns></returns>\r\n        protected override bool IsInputKey(Keys keyData) {\r\n            // We want to handle Left and Right keys within the control\r\n            Keys key = keyData & Keys.KeyCode;\r\n            if (key == Keys.Left || key == Keys.Right) \r\n                return true;\r\n            \r\n            return base.IsInputKey(keyData);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle focus being lost, including making sure that the whole control is redrawn.\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        protected override void OnLostFocus(EventArgs e)\r\n        {\r\n            // When this focus is lost, the normal invalidation logic doesn't invalid the region\r\n            // of the control created by the IndentLevel on each row. This makes the control \r\n            // look wrong when HideSelection is false, since part of the selected row's background\r\n            // correctly changes colour to the \"inactive\" colour, but the left part of the row\r\n            // created by IndentLevel doesn't change colour.\r\n            // SF #135.\r\n\r\n            Invalidate();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the keyboard input to mimic a TreeView.\r\n        /// </summary>\r\n        /// <param name=\"e\"></param>\r\n        /// <returns>Was the key press handled?</returns>\r\n        protected override void OnKeyDown(KeyEventArgs e) {\r\n            if (FocusedItem is not OLVListItem focused) {\r\n                base.OnKeyDown(e);\r\n                return;\r\n            }\r\n\r\n            Object modelObject = focused.RowObject;\r\n            Branch br = TreeModel.GetBranch(modelObject);\r\n\r\n            switch (e.KeyCode) {\r\n                case Keys.Left:\r\n                    // If the branch is expanded, collapse it. If it's collapsed,\r\n                    // select the parent of the branch.\r\n                    if (br.IsExpanded)\r\n                        Collapse(modelObject);\r\n                    else {\r\n                        if (br.ParentBranch != null && br.ParentBranch.Model != null)\r\n                            SelectObject(br.ParentBranch.Model, true);\r\n                    }\r\n                    e.Handled = true;\r\n                    break;\r\n\r\n                case Keys.Right:\r\n                    // If the branch is expanded, select the first child.\r\n                    // If it isn't expanded and can be, expand it.\r\n                    if (br.IsExpanded) {\r\n                        List<Branch> filtered = br.FilteredChildBranches;\r\n                        if (filtered.Count > 0)\r\n                            SelectObject(filtered[0].Model, true);\r\n                    } else {\r\n                        if (br.CanExpand)\r\n                            Expand(modelObject);\r\n                    }\r\n                    e.Handled = true;\r\n                    break;\r\n            }\r\n\r\n            base.OnKeyDown(e);\r\n        }\r\n\r\n        #endregion\r\n\r\n        //------------------------------------------------------------------------------------------\r\n        // Support classes\r\n\r\n        /// <summary>\r\n        /// A Tree object represents a tree structure data model that supports both \r\n        /// tree and flat list operations as well as fast access to branches.\r\n        /// </summary>\r\n        /// <remarks>If you create a subclass of Tree, you must install it in the TreeListView\r\n        /// via the TreeFactory delegate.</remarks>\r\n        public class Tree : IVirtualListDataSource, IFilterableDataSource\r\n        {\r\n            /// <summary>\r\n            /// Create a Tree\r\n            /// </summary>\r\n            /// <param name=\"treeView\"></param>\r\n            public Tree(TreeListView treeView) {\r\n                this.treeView = treeView;\r\n                trunk = new Branch(null, this, null);\r\n                trunk.IsExpanded = true;\r\n            }\r\n\r\n            //------------------------------------------------------------------------------------------\r\n            // Properties\r\n\r\n            /// <summary>\r\n            /// This is the delegate that will be used to decide if a model object can be expanded.\r\n            /// </summary>\r\n            public CanExpandGetterDelegate CanExpandGetter {\r\n                get { return canExpandGetter; }\r\n                set { canExpandGetter = value; }\r\n            }\r\n            private CanExpandGetterDelegate canExpandGetter;\r\n\r\n            /// <summary>\r\n            /// This is the delegate that will be used to fetch the children of a model object\r\n            /// </summary>\r\n            /// <remarks>This delegate will only be called if the CanExpand delegate has \r\n            /// returned true for the model object.</remarks>\r\n            public ChildrenGetterDelegate ChildrenGetter {\r\n                get { return childrenGetter; }\r\n                set { childrenGetter = value; }\r\n            }\r\n            private ChildrenGetterDelegate childrenGetter;\r\n\r\n\r\n            /// <summary>\r\n            /// Get or return the top level model objects in the tree\r\n            /// </summary>\r\n            public IEnumerable RootObjects {\r\n                get { return trunk.Children; }\r\n                set {\r\n                    trunk.Children = value;\r\n                    foreach (Branch br in trunk.ChildBranches)\r\n                        br.RefreshChildren();\r\n                    RebuildList();\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// What tree view is this Tree the model for?\r\n            /// </summary>\r\n            public TreeListView TreeView {\r\n                get { return treeView; }\r\n            }\r\n\r\n            //------------------------------------------------------------------------------------------\r\n            // Commands\r\n\r\n            /// <summary>\r\n            /// Collapse the subtree underneath the given model\r\n            /// </summary>\r\n            /// <param name=\"model\">The model to be collapsed. If the model isn't in the tree,\r\n            /// or if it is already collapsed, the command does nothing.</param>\r\n            /// <returns>The index of the model in flat list version of the tree</returns>\r\n            public virtual int Collapse(Object model) {\r\n                Branch br = GetBranch(model);\r\n                if (br == null || !br.IsExpanded)\r\n                    return -1;\r\n\r\n                // Remember that the branch is collapsed, even if it's currently not visible\r\n                if (!br.Visible) {\r\n                    br.Collapse();\r\n                    return -1;\r\n                }\r\n\r\n                int count = br.NumberVisibleDescendents;\r\n                br.Collapse();\r\n\r\n                // Remove the visible descendents from after the branch itself\r\n                int index = GetObjectIndex(model);\r\n                objectList.RemoveRange(index + 1, count);\r\n                RebuildObjectMap(0);\r\n                return index;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Collapse all branches in this tree\r\n            /// </summary>\r\n            /// <returns>Nothing useful</returns>\r\n            public virtual int CollapseAll() {\r\n                trunk.CollapseAll();\r\n                RebuildList();\r\n                return 0;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Expand the subtree underneath the given model object\r\n            /// </summary>\r\n            /// <param name=\"model\">The model to be expanded.</param> \r\n            /// <returns>The index of the model in flat list version of the tree</returns>\r\n            /// <remarks>\r\n            /// If the model isn't in the tree,\r\n            /// if it cannot be expanded or if it is already expanded, the command does nothing.\r\n            /// </remarks>\r\n            public virtual int Expand(Object model) {\r\n                Branch br = GetBranch(model);\r\n                if (br == null || !br.CanExpand || br.IsExpanded)\r\n                    return -1;\r\n\r\n                // Remember that the branch is expanded, even if it's currently not visible\r\n                br.Expand();\r\n                if (!br.Visible)\r\n                {\r\n                    return -1;\r\n                }\r\n\r\n                int index = GetObjectIndex(model);\r\n                InsertChildren(br, index + 1);\r\n                return index;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Expand all branches in this tree\r\n            /// </summary>\r\n            /// <returns>Return the index of the first branch that was expanded</returns>\r\n            public virtual int ExpandAll() {\r\n                trunk.ExpandAll();\r\n                Sort(lastSortColumn, lastSortOrder);\r\n                return 0;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Return the Branch object that represents the given model in the tree\r\n            /// </summary>\r\n            /// <param name=\"model\">The model whose branches is to be returned</param>\r\n            /// <returns>The branch that represents the given model, or null if the model\r\n            /// isn't in the tree.</returns>\r\n            public virtual Branch GetBranch(object model) {\r\n                if (model == null)\r\n                    return null;\r\n\r\n                Branch br;\r\n                mapObjectToBranch.TryGetValue(model, out br);\r\n                return br;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Return the number of visible descendents that are below the given model.\r\n            /// </summary>\r\n            /// <param name=\"model\">The model whose descendent count is to be returned</param>\r\n            /// <returns>The number of visible descendents. 0 if the model doesn't exist or is collapsed</returns>\r\n            public virtual int GetVisibleDescendentCount(object model)\r\n            {\r\n                Branch br = GetBranch(model);\r\n                return br == null || !br.IsExpanded ? 0 : br.NumberVisibleDescendents;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Rebuild the children of the given model, refreshing any cached information held about the given object\r\n            /// </summary>\r\n            /// <param name=\"model\"></param>\r\n            /// <returns>The index of the model in flat list version of the tree</returns>\r\n            public virtual int RebuildChildren(Object model) {\r\n                Branch br = GetBranch(model);\r\n                if (br == null || !br.Visible)\r\n                    return -1;\r\n\r\n                int count = br.NumberVisibleDescendents;\r\n\r\n                // Remove the visible descendents from after the branch itself\r\n                int index = GetObjectIndex(model);\r\n                if (count > 0)\r\n                    objectList.RemoveRange(index + 1, count);\r\n\r\n                // Refresh our knowledge of our children (do this even if CanExpand is false, because\r\n                // the branch have already collected some children and that information could be stale)\r\n                    br.RefreshChildren();\r\n\r\n                // Insert the refreshed children if the branch can expand and is expanded\r\n                if (br.CanExpand && br.IsExpanded)\r\n                    InsertChildren(br, index + 1);\r\n                else\r\n                    RebuildObjectMap(index);\r\n\r\n                return index;\r\n            }\r\n\r\n            //------------------------------------------------------------------------------------------\r\n            // Implementation\r\n\r\n            /// <summary>\r\n            /// Is the given model expanded?\r\n            /// </summary>\r\n            /// <param name=\"model\"></param>\r\n            /// <returns></returns>\r\n            internal bool IsModelExpanded(object model) {\r\n                // Special case: model == null is the container for the roots. This is always expanded\r\n                if (model == null)\r\n                    return true;\r\n                bool isExpanded;\r\n                mapObjectToExpanded.TryGetValue(model, out isExpanded);\r\n                return isExpanded;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Remember whether or not the given model was expanded\r\n            /// </summary>\r\n            /// <param name=\"model\"></param>\r\n            /// <param name=\"isExpanded\"></param>\r\n            internal void SetModelExpanded(object model, bool isExpanded) {\r\n                if (model == null) return;\r\n\r\n                if (isExpanded)\r\n                    mapObjectToExpanded[model] = true;\r\n                else\r\n                    mapObjectToExpanded.Remove(model);\r\n            }\r\n\r\n            /// <summary>\r\n            /// Insert the children of the given branch into the given position\r\n            /// </summary>\r\n            /// <param name=\"br\">The branch whose children should be inserted</param>\r\n            /// <param name=\"index\">The index where the children should be inserted</param>\r\n            protected virtual void InsertChildren(Branch br, int index) {\r\n                // Expand the branch\r\n                br.Expand();\r\n                br.Sort(GetBranchComparer());\r\n\r\n                // Insert the branch's visible descendents after the branch itself\r\n                objectList.InsertRange(index, br.Flatten());\r\n                RebuildObjectMap(index);\r\n            }\r\n\r\n            /// <summary>\r\n            /// Rebuild our flat internal list of objects.\r\n            /// </summary>\r\n            protected virtual void RebuildList() {\r\n                objectList = ArrayList.Adapter(trunk.Flatten());\r\n                List<Branch> filtered = trunk.FilteredChildBranches;\r\n                if (filtered.Count > 0) {\r\n                    filtered[0].IsFirstBranch = true;\r\n                    filtered[0].IsOnlyBranch = (filtered.Count == 1);\r\n                }\r\n                RebuildObjectMap(0);\r\n            }\r\n\r\n            /// <summary>\r\n            /// Rebuild our reverse index that maps an object to its location\r\n            /// in the filteredObjectList array.\r\n            /// </summary>\r\n            /// <param name=\"startIndex\"></param>\r\n            protected virtual void RebuildObjectMap(int startIndex) {\r\n                if (startIndex == 0)\r\n                    mapObjectToIndex.Clear();\r\n                for (int i = startIndex; i < objectList.Count; i++)\r\n                    mapObjectToIndex[objectList[i]] = i;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Create a new branch within this tree\r\n            /// </summary>\r\n            /// <param name=\"parent\"></param>\r\n            /// <param name=\"model\"></param>\r\n            /// <returns></returns>\r\n            internal Branch MakeBranch(Branch parent, object model) {\r\n                Branch br = new Branch(parent, this, model);\r\n\r\n                // Remember that the given branch is part of this tree.\r\n                mapObjectToBranch[model] = br;\r\n                return br;\r\n            }\r\n\r\n            //------------------------------------------------------------------------------------------\r\n\r\n            #region IVirtualListDataSource Members\r\n\r\n            /// <summary>\r\n            /// \r\n            /// </summary>\r\n            /// <param name=\"n\"></param>\r\n            /// <returns></returns>\r\n            public virtual object GetNthObject(int n) {\r\n                return objectList[n];\r\n            }\r\n\r\n            /// <summary>\r\n            /// \r\n            /// </summary>\r\n            /// <returns></returns>\r\n            public virtual int GetObjectCount() {\r\n                return trunk.NumberVisibleDescendents;\r\n            }\r\n\r\n            /// <summary>\r\n            /// \r\n            /// </summary>\r\n            /// <param name=\"model\"></param>\r\n            /// <returns></returns>\r\n            public virtual int GetObjectIndex(object model)\r\n            {\r\n                int index;\r\n                if (model != null && mapObjectToIndex.TryGetValue(model, out index))\r\n                    return index;\r\n\r\n                return -1;\r\n            }\r\n\r\n            /// <summary>\r\n            /// \r\n            /// </summary>\r\n            /// <param name=\"first\"></param>\r\n            /// <param name=\"last\"></param>\r\n            public virtual void PrepareCache(int first, int last) {\r\n            }\r\n\r\n            /// <summary>\r\n            /// \r\n            /// </summary>\r\n            /// <param name=\"value\"></param>\r\n            /// <param name=\"first\"></param>\r\n            /// <param name=\"last\"></param>\r\n            /// <param name=\"column\"></param>\r\n            /// <returns></returns>\r\n            public virtual int SearchText(string value, int first, int last, OLVColumn column) {\r\n                return AbstractVirtualListDataSource.DefaultSearchText(value, first, last, column, this);\r\n            }\r\n\r\n            /// <summary>\r\n            /// Sort the tree on the given column and in the given order\r\n            /// </summary>\r\n            /// <param name=\"column\"></param>\r\n            /// <param name=\"order\"></param>\r\n            public virtual void Sort(OLVColumn column, SortOrder order) {\r\n                lastSortColumn = column;\r\n                lastSortOrder = order;\r\n\r\n                // TODO: Need to raise an AboutToSortEvent here\r\n\r\n                // Sorting is going to change the order of the branches so clear\r\n                // the \"first branch\" flag\r\n                foreach (Branch b in trunk.ChildBranches)\r\n                    b.IsFirstBranch = false;\r\n\r\n                trunk.Sort(GetBranchComparer());\r\n                RebuildList();\r\n            }\r\n\r\n            /// <summary>\r\n            /// \r\n            /// </summary>\r\n            /// <returns></returns>\r\n            protected virtual BranchComparer GetBranchComparer() {\r\n                if (lastSortColumn == null)\r\n                    return null;\r\n                \r\n                return new BranchComparer(new ModelObjectComparer(\r\n                    lastSortColumn, \r\n                    lastSortOrder,\r\n                    treeView.SecondarySortColumn ?? treeView.GetColumn(0), \r\n                    treeView.SecondarySortColumn == null ? lastSortOrder : treeView.SecondarySortOrder));\r\n            }\r\n\r\n            /// <summary>\r\n            /// Add the given collection of objects to the roots of this tree\r\n            /// </summary>\r\n            /// <param name=\"modelObjects\"></param>\r\n            public virtual void AddObjects(ICollection modelObjects) {\r\n                ArrayList newRoots = EnumerableToArray(treeView.Roots, true);\r\n                foreach (Object x in modelObjects)\r\n                    newRoots.Add(x);\r\n                SetObjects(newRoots);\r\n            }\r\n\r\n            /// <summary>\r\n            /// \r\n            /// </summary>\r\n            /// <param name=\"index\"></param>\r\n            /// <param name=\"modelObjects\"></param>\r\n            public void InsertObjects(int index, ICollection modelObjects) {\r\n                throw new NotImplementedException();\r\n            }\r\n\r\n            /// <summary>\r\n            /// Remove all of the given objects from the roots of the tree.\r\n            /// Any objects that is not already in the roots collection is ignored.\r\n            /// </summary>\r\n            /// <param name=\"modelObjects\"></param>\r\n            public virtual void RemoveObjects(ICollection modelObjects) {\r\n                ArrayList newRoots = new ArrayList();\r\n                foreach (Object x in treeView.Roots)\r\n                    newRoots.Add(x);\r\n                foreach (Object x in modelObjects) {\r\n                    newRoots.Remove(x);\r\n                    mapObjectToIndex.Remove(x);\r\n                }\r\n                SetObjects(newRoots);\r\n            }\r\n\r\n            /// <summary>\r\n            /// Set the roots of this tree to be the given collection\r\n            /// </summary>\r\n            /// <param name=\"collection\"></param>\r\n            public virtual void SetObjects(IEnumerable collection) {\r\n                // We interpret a SetObjects() call as setting the roots of the tree\r\n                treeView.Roots = collection;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Update/replace the nth object with the given object\r\n            /// </summary>\r\n            /// <param name=\"index\"></param>\r\n            /// <param name=\"modelObject\"></param>\r\n            public void UpdateObject(int index, object modelObject) {\r\n                ArrayList newRoots = EnumerableToArray(treeView.Roots, false);\r\n                if (index < newRoots.Count)\r\n                    newRoots[index] = modelObject;\r\n                SetObjects(newRoots);\r\n            }\r\n\r\n            #endregion\r\n\r\n            #region IFilterableDataSource Members\r\n\r\n            /// <summary>\r\n            /// \r\n            /// </summary>\r\n            /// <param name=\"mFilter\"></param>\r\n            /// <param name=\"lFilter\"></param>\r\n            public void ApplyFilters(IModelFilter mFilter, IListFilter lFilter) {\r\n                modelFilter = mFilter;\r\n                listFilter = lFilter;\r\n                RebuildList();\r\n            }\r\n\r\n            /// <summary>\r\n            /// Is this list currently being filtered?\r\n            /// </summary>\r\n            internal bool IsFiltering {\r\n                get {\r\n                    return treeView.UseFiltering && (modelFilter != null || listFilter != null);\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Should the given model be included in this control?\r\n            /// </summary>\r\n            /// <param name=\"model\">The model to consider</param>\r\n            /// <returns>True if it will be included</returns>\r\n            internal bool IncludeModel(object model) {\r\n                if (!treeView.UseFiltering)\r\n                    return true;\r\n\r\n                if (modelFilter == null)\r\n                    return true;\r\n\r\n                return modelFilter.Filter(model);\r\n            }\r\n\r\n            #endregion\r\n\r\n            //------------------------------------------------------------------------------------------\r\n            // Private instance variables\r\n\r\n            private OLVColumn lastSortColumn;\r\n            private SortOrder lastSortOrder;\r\n            private readonly Dictionary<Object, Branch> mapObjectToBranch = new();\r\n// ReSharper disable once InconsistentNaming\r\n            internal Dictionary<Object, bool> mapObjectToExpanded = new();\r\n            private readonly Dictionary<Object, int> mapObjectToIndex = new();\r\n            private ArrayList objectList = new();\r\n            private readonly TreeListView treeView;\r\n            private readonly Branch trunk;\r\n\r\n            /// <summary>\r\n            /// \r\n            /// </summary>\r\n// ReSharper disable once InconsistentNaming\r\n            protected IModelFilter modelFilter;\r\n            /// <summary>\r\n            /// \r\n            /// </summary>\r\n// ReSharper disable once InconsistentNaming\r\n            protected IListFilter listFilter;\r\n        }\r\n\r\n        /// <summary>\r\n        /// A Branch represents a sub-tree within a tree\r\n        /// </summary>\r\n        public class Branch\r\n        {\r\n            /// <summary>\r\n            /// Indicators for branches\r\n            /// </summary>\r\n            [Flags]\r\n            public enum BranchFlags\r\n            {\r\n                /// <summary>\r\n                /// FirstBranch of tree\r\n                /// </summary>\r\n                FirstBranch = 1,\r\n\r\n                /// <summary>\r\n                /// LastChild of parent\r\n                /// </summary>\r\n                LastChild = 2,\r\n\r\n                /// <summary>\r\n                /// OnlyBranch of tree\r\n                /// </summary>\r\n                OnlyBranch = 4\r\n            }\r\n\r\n            #region Life and death\r\n\r\n            /// <summary>\r\n            /// Create a Branch\r\n            /// </summary>\r\n            /// <param name=\"parent\"></param>\r\n            /// <param name=\"tree\"></param>\r\n            /// <param name=\"model\"></param>\r\n            public Branch(Branch parent, Tree tree, Object model) {\r\n                ParentBranch = parent;\r\n                Tree = tree;\r\n                Model = model;\r\n            }\r\n\r\n            #endregion\r\n\r\n            #region Public properties\r\n\r\n            //------------------------------------------------------------------------------------------\r\n            // Properties\r\n\r\n            /// <summary>\r\n            /// Get the ancestor branches of this branch, with the 'oldest' ancestor first.\r\n            /// </summary>\r\n            public virtual IList<Branch> Ancestors {\r\n                get {\r\n                    List<Branch> ancestors = new List<Branch>();\r\n                    if (ParentBranch != null)\r\n                        ParentBranch.PushAncestors(ancestors);\r\n                    return ancestors;\r\n                }\r\n            }\r\n\r\n            private void PushAncestors(IList<Branch> list) {\r\n                // This is designed to ignore the trunk (which has no parent)\r\n                if (ParentBranch != null) {\r\n                    ParentBranch.PushAncestors(list);\r\n                    list.Add(this);\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Can this branch be expanded?\r\n            /// </summary>\r\n            public virtual bool CanExpand {\r\n                get {\r\n                    if (Tree.CanExpandGetter == null || Model == null)\r\n                        return false;\r\n                    \r\n                    return Tree.CanExpandGetter(Model);\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Gets or sets our children\r\n            /// </summary>\r\n            public List<Branch> ChildBranches {\r\n                get { return childBranches; }\r\n                set { childBranches = value; }\r\n            }\r\n            private List<Branch> childBranches = new();\r\n\r\n            /// <summary>\r\n            /// Get/set the model objects that are beneath this branch\r\n            /// </summary>\r\n            public virtual IEnumerable Children {\r\n                get {\r\n                    ArrayList children = new ArrayList();\r\n                    foreach (Branch x in ChildBranches)\r\n                        children.Add(x.Model);\r\n                    return children;\r\n                }\r\n                set {\r\n                    ChildBranches.Clear();\r\n\r\n                    TreeListView treeListView = Tree.TreeView;\r\n                    CheckState? checkedness = null;\r\n                    if (treeListView != null && treeListView.HierarchicalCheckboxes)\r\n                        checkedness = treeListView.GetCheckState(Model);\r\n                    foreach (Object x in value) {\r\n                        AddChild(x);\r\n\r\n                        // If the tree view is showing hierarchical checkboxes, then\r\n                        // when a child object is first added, it has the same checkedness as this branch\r\n                        if (checkedness.HasValue && checkedness.Value == CheckState.Checked)\r\n                            treeListView.SetObjectCheckedness(x, checkedness.Value);\r\n                    }\r\n                }\r\n            }\r\n\r\n            private void AddChild(object childModel) {\r\n                Branch br = Tree.GetBranch(childModel);\r\n                if (br == null)\r\n                    br = Tree.MakeBranch(this, childModel);\r\n                else {\r\n                    br.ParentBranch = this;\r\n                    br.Model = childModel;\r\n                    br.ClearCachedInfo();\r\n                }\r\n                ChildBranches.Add(br);\r\n            }\r\n\r\n            /// <summary>\r\n            /// Gets a list of all the branches that survive filtering\r\n            /// </summary>\r\n            public List<Branch> FilteredChildBranches {\r\n                get {\r\n                    if (!IsExpanded)\r\n                        return new List<Branch>();\r\n\r\n                    if (!Tree.IsFiltering)\r\n                        return ChildBranches;\r\n\r\n                    List<Branch> filtered = new List<Branch>();\r\n                    foreach (Branch b in ChildBranches) {\r\n                        if (Tree.IncludeModel(b.Model))\r\n                            filtered.Add(b);\r\n                        else {\r\n                            // Also include this branch if it has any filtered branches (yes, its recursive)\r\n                            if (b.FilteredChildBranches.Count > 0)\r\n                                filtered.Add(b);\r\n                        }\r\n                    }\r\n                    return filtered;\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Gets or set whether this branch is expanded\r\n            /// </summary>\r\n            public bool IsExpanded {\r\n                get { return Tree.IsModelExpanded(Model); }\r\n                set { Tree.SetModelExpanded(Model, value); }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Return true if this branch is the first branch of the entire tree\r\n            /// </summary>\r\n            public virtual bool IsFirstBranch {\r\n                get {\r\n                    return ((flags & BranchFlags.FirstBranch) != 0);\r\n                }\r\n                set {\r\n                    if (value)\r\n                        flags |= BranchFlags.FirstBranch;\r\n                    else\r\n                        flags &= ~BranchFlags.FirstBranch;\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Return true if this branch is the last child of its parent\r\n            /// </summary>\r\n            public virtual bool IsLastChild {\r\n                get {\r\n                    return ((flags & BranchFlags.LastChild) != 0);\r\n                }\r\n                set {\r\n                    if (value)\r\n                        flags |= BranchFlags.LastChild;\r\n                    else\r\n                        flags &= ~BranchFlags.LastChild;\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Return true if this branch is the only top level branch\r\n            /// </summary>\r\n            public virtual bool IsOnlyBranch {\r\n                get {\r\n                    return ((flags & BranchFlags.OnlyBranch) != 0);\r\n                }\r\n                set {\r\n                    if (value)\r\n                        flags |= BranchFlags.OnlyBranch;\r\n                    else\r\n                        flags &= ~BranchFlags.OnlyBranch;\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Gets the depth level of this branch\r\n            /// </summary>\r\n            public int Level {\r\n                get {\r\n                    if (ParentBranch == null)\r\n                        return 0;\r\n                    \r\n                    return ParentBranch.Level + 1;\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Gets or sets which model is represented by this branch\r\n            /// </summary>\r\n            public Object Model {\r\n                get { return model; }\r\n                set { model = value; }\r\n            }\r\n            private Object model;\r\n\r\n            /// <summary>\r\n            /// Return the number of descendents of this branch that are currently visible\r\n            /// </summary>\r\n            /// <returns></returns>\r\n            public virtual int NumberVisibleDescendents {\r\n                get {\r\n                    if (!IsExpanded)\r\n                        return 0;\r\n\r\n                    List<Branch> filtered = FilteredChildBranches;\r\n                    int count = filtered.Count;\r\n                    foreach (Branch br in filtered)\r\n                        count += br.NumberVisibleDescendents;\r\n                    return count;\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Gets or sets our parent branch\r\n            /// </summary>\r\n            public Branch ParentBranch {\r\n                get { return parentBranch; }\r\n                set { parentBranch = value; }\r\n            }\r\n            private Branch parentBranch;\r\n\r\n            /// <summary>\r\n            /// Gets or sets our overall tree\r\n            /// </summary>\r\n            public Tree Tree {\r\n                get { return tree; }\r\n                set { tree = value; }\r\n            }\r\n            private Tree tree;\r\n\r\n            /// <summary>\r\n            /// Is this branch currently visible? A branch is visible\r\n            /// if it has no parent (i.e. it's a root), or its parent\r\n            /// is visible and expanded.\r\n            /// </summary>\r\n            public virtual bool Visible {\r\n                get {\r\n                    if (ParentBranch == null)\r\n                        return true;\r\n                    \r\n                    return ParentBranch.IsExpanded && ParentBranch.Visible;\r\n                }\r\n            }\r\n\r\n            #endregion\r\n\r\n            #region Commands\r\n\r\n            //------------------------------------------------------------------------------------------\r\n            // Commands\r\n\r\n            /// <summary>\r\n            /// Clear any cached information that this branch is holding\r\n            /// </summary>\r\n            public virtual void ClearCachedInfo() {\r\n                Children = new ArrayList();\r\n                alreadyHasChildren = false;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Collapse this branch\r\n            /// </summary>\r\n            public virtual void Collapse() {\r\n                IsExpanded = false;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Expand this branch\r\n            /// </summary>\r\n            public virtual void Expand() {\r\n                if (CanExpand) {\r\n                    IsExpanded = true;\r\n                    FetchChildren();\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Expand this branch recursively\r\n            /// </summary>\r\n            public virtual void ExpandAll() {\r\n                Expand();\r\n                foreach (Branch br in ChildBranches) {\r\n                    if (br.CanExpand)\r\n                        br.ExpandAll();\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Collapse all branches in this tree\r\n            /// </summary>\r\n            /// <returns>Nothing useful</returns>\r\n            public virtual void CollapseAll()\r\n            {\r\n                Collapse();\r\n                foreach (Branch br in ChildBranches) {\r\n                    if (br.IsExpanded)\r\n                        br.CollapseAll();\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Fetch the children of this branch.\r\n            /// </summary>\r\n            /// <remarks>This should only be called when CanExpand is true.</remarks>\r\n            public virtual void FetchChildren() {\r\n                if (alreadyHasChildren)\r\n                    return;\r\n\r\n                alreadyHasChildren = true;\r\n\r\n                if (Tree.ChildrenGetter == null)\r\n                    return;\r\n\r\n                Cursor previous = Cursor.Current;\r\n                try {\r\n                    if (Tree.TreeView.UseWaitCursorWhenExpanding)\r\n                        Cursor.Current = Cursors.WaitCursor;\r\n                    Children = Tree.ChildrenGetter(Model);\r\n                }\r\n                finally {\r\n                    Cursor.Current = previous;\r\n                }\r\n            }\r\n\r\n            /// <summary>\r\n            /// Collapse the visible descendents of this branch into list of model objects\r\n            /// </summary>\r\n            /// <returns></returns>\r\n            public virtual IList Flatten() {\r\n                ArrayList flatList = new ArrayList();\r\n                if (IsExpanded)\r\n                    FlattenOnto(flatList);\r\n                return flatList;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Flatten this branch's visible descendents onto the given list.\r\n            /// </summary>\r\n            /// <param name=\"flatList\"></param>\r\n            /// <remarks>The branch itself is <b>not</b> included in the list.</remarks>\r\n            public virtual void FlattenOnto(IList flatList) {\r\n                Branch lastBranch = null;\r\n                foreach (Branch br in FilteredChildBranches) {\r\n                    lastBranch = br;\r\n                    br.IsLastChild = false;\r\n                    flatList.Add(br.Model);\r\n                    if (br.IsExpanded) {\r\n                        br.FetchChildren(); // make sure we have the branches children\r\n                        br.FlattenOnto(flatList);\r\n                    }\r\n                }\r\n                if (lastBranch != null)\r\n                    lastBranch.IsLastChild = true;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Force a refresh of all children recursively\r\n            /// </summary>\r\n            public virtual void RefreshChildren() {\r\n                \r\n                // Forget any previous children. We always do this so that if\r\n                // IsExpanded or CanExpand have changed, we aren't left with stale information.\r\n                ClearCachedInfo();\r\n\r\n                if (!IsExpanded || !CanExpand) \r\n                    return;\r\n\r\n                FetchChildren();\r\n                foreach (Branch br in ChildBranches)\r\n                    br.RefreshChildren();\r\n            }\r\n\r\n            /// <summary>\r\n            /// Sort the sub-branches and their descendents so they are ordered according\r\n            /// to the given comparer.\r\n            /// </summary>\r\n            /// <param name=\"comparer\">The comparer that orders the branches</param>\r\n            public virtual void Sort(BranchComparer comparer) {\r\n                if (ChildBranches.Count == 0)\r\n                    return;\r\n\r\n                if (comparer != null)\r\n                    ChildBranches.Sort(comparer);\r\n\r\n                foreach (Branch br in ChildBranches)\r\n                    br.Sort(comparer);\r\n            }\r\n\r\n            #endregion\r\n\r\n\r\n            //------------------------------------------------------------------------------------------\r\n            // Private instance variables\r\n\r\n            private bool alreadyHasChildren;\r\n            private BranchFlags flags;\r\n        }\r\n\r\n        /// <summary>\r\n        /// This class sorts branches according to how their respective model objects are sorted\r\n        /// </summary>\r\n        public class BranchComparer : IComparer<Branch>\r\n        {\r\n            /// <summary>\r\n            /// Create a BranchComparer\r\n            /// </summary>\r\n            /// <param name=\"actualComparer\"></param>\r\n            public BranchComparer(IComparer actualComparer) {\r\n                this.actualComparer = actualComparer;\r\n            }\r\n\r\n            /// <summary>\r\n            /// Order the two branches\r\n            /// </summary>\r\n            /// <param name=\"x\"></param>\r\n            /// <param name=\"y\"></param>\r\n            /// <returns></returns>\r\n            public int Compare(Branch x, Branch y) {\r\n                return actualComparer.Compare(x.Model, y.Model);\r\n            }\r\n\r\n            private readonly IComparer actualComparer;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Utilities/ColumnSelectionForm.Designer.cs",
    "content": "namespace BrightIdeasSoftware\r\n{\r\n    partial class ColumnSelectionForm\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null)) {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            this.buttonMoveUp = new System.Windows.Forms.Button();\r\n            this.buttonMoveDown = new System.Windows.Forms.Button();\r\n            this.buttonShow = new System.Windows.Forms.Button();\r\n            this.buttonHide = new System.Windows.Forms.Button();\r\n            this.label1 = new System.Windows.Forms.Label();\r\n            this.buttonOK = new System.Windows.Forms.Button();\r\n            this.buttonCancel = new System.Windows.Forms.Button();\r\n            this.objectListView1 = new BrightIdeasSoftware.ObjectListView();\r\n            this.olvColumn1 = new BrightIdeasSoftware.OLVColumn();\r\n            ((System.ComponentModel.ISupportInitialize)(this.objectListView1)).BeginInit();\r\n            this.SuspendLayout();\r\n            // \r\n            // buttonMoveUp\r\n            // \r\n            this.buttonMoveUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));\r\n            this.buttonMoveUp.Location = new System.Drawing.Point(295, 31);\r\n            this.buttonMoveUp.Name = \"buttonMoveUp\";\r\n            this.buttonMoveUp.Size = new System.Drawing.Size(87, 23);\r\n            this.buttonMoveUp.TabIndex = 1;\r\n            this.buttonMoveUp.Text = \"Move &Up\";\r\n            this.buttonMoveUp.UseVisualStyleBackColor = true;\r\n            this.buttonMoveUp.Click += new System.EventHandler(this.buttonMoveUp_Click);\r\n            // \r\n            // buttonMoveDown\r\n            // \r\n            this.buttonMoveDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));\r\n            this.buttonMoveDown.Location = new System.Drawing.Point(295, 60);\r\n            this.buttonMoveDown.Name = \"buttonMoveDown\";\r\n            this.buttonMoveDown.Size = new System.Drawing.Size(87, 23);\r\n            this.buttonMoveDown.TabIndex = 2;\r\n            this.buttonMoveDown.Text = \"Move &Down\";\r\n            this.buttonMoveDown.UseVisualStyleBackColor = true;\r\n            this.buttonMoveDown.Click += new System.EventHandler(this.buttonMoveDown_Click);\r\n            // \r\n            // buttonShow\r\n            // \r\n            this.buttonShow.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));\r\n            this.buttonShow.Location = new System.Drawing.Point(295, 89);\r\n            this.buttonShow.Name = \"buttonShow\";\r\n            this.buttonShow.Size = new System.Drawing.Size(87, 23);\r\n            this.buttonShow.TabIndex = 3;\r\n            this.buttonShow.Text = \"&Show\";\r\n            this.buttonShow.UseVisualStyleBackColor = true;\r\n            this.buttonShow.Click += new System.EventHandler(this.buttonShow_Click);\r\n            // \r\n            // buttonHide\r\n            // \r\n            this.buttonHide.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));\r\n            this.buttonHide.Location = new System.Drawing.Point(295, 118);\r\n            this.buttonHide.Name = \"buttonHide\";\r\n            this.buttonHide.Size = new System.Drawing.Size(87, 23);\r\n            this.buttonHide.TabIndex = 4;\r\n            this.buttonHide.Text = \"&Hide\";\r\n            this.buttonHide.UseVisualStyleBackColor = true;\r\n            this.buttonHide.Click += new System.EventHandler(this.buttonHide_Click);\r\n            // \r\n            // label1\r\n            // \r\n            this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)\r\n                        | System.Windows.Forms.AnchorStyles.Right)));\r\n            this.label1.BackColor = System.Drawing.SystemColors.Control;\r\n            this.label1.Location = new System.Drawing.Point(13, 9);\r\n            this.label1.Name = \"label1\";\r\n            this.label1.Size = new System.Drawing.Size(366, 19);\r\n            this.label1.TabIndex = 5;\r\n            this.label1.Text = \"Choose the columns you want to see in this list. \";\r\n            // \r\n            // buttonOK\r\n            // \r\n            this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));\r\n            this.buttonOK.Location = new System.Drawing.Point(198, 304);\r\n            this.buttonOK.Name = \"buttonOK\";\r\n            this.buttonOK.Size = new System.Drawing.Size(87, 23);\r\n            this.buttonOK.TabIndex = 6;\r\n            this.buttonOK.Text = \"&OK\";\r\n            this.buttonOK.UseVisualStyleBackColor = true;\r\n            this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);\r\n            // \r\n            // buttonCancel\r\n            // \r\n            this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));\r\n            this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;\r\n            this.buttonCancel.Location = new System.Drawing.Point(295, 304);\r\n            this.buttonCancel.Name = \"buttonCancel\";\r\n            this.buttonCancel.Size = new System.Drawing.Size(87, 23);\r\n            this.buttonCancel.TabIndex = 7;\r\n            this.buttonCancel.Text = \"&Cancel\";\r\n            this.buttonCancel.UseVisualStyleBackColor = true;\r\n            this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);\r\n            // \r\n            // objectListView1\r\n            // \r\n            this.objectListView1.AllColumns.Add(this.olvColumn1);\r\n            this.objectListView1.AlternateRowBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));\r\n            this.objectListView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)\r\n                        | System.Windows.Forms.AnchorStyles.Left)\r\n                        | System.Windows.Forms.AnchorStyles.Right)));\r\n            this.objectListView1.CellEditActivation = BrightIdeasSoftware.ObjectListView.CellEditActivateMode.SingleClick;\r\n            this.objectListView1.CheckBoxes = true;\r\n            this.objectListView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {\r\n            this.olvColumn1});\r\n            this.objectListView1.FullRowSelect = true;\r\n            this.objectListView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;\r\n            this.objectListView1.HideSelection = false;\r\n            this.objectListView1.Location = new System.Drawing.Point(12, 31);\r\n            this.objectListView1.MultiSelect = false;\r\n            this.objectListView1.Name = \"objectListView1\";\r\n            this.objectListView1.ShowGroups = false;\r\n            this.objectListView1.ShowSortIndicators = false;\r\n            this.objectListView1.Size = new System.Drawing.Size(273, 259);\r\n            this.objectListView1.TabIndex = 0;\r\n            this.objectListView1.UseCompatibleStateImageBehavior = false;\r\n            this.objectListView1.View = System.Windows.Forms.View.Details;\r\n            this.objectListView1.SelectionChanged += new System.EventHandler(this.objectListView1_SelectionChanged);\r\n            // \r\n            // olvColumn1\r\n            // \r\n            this.olvColumn1.AspectName = \"Text\";\r\n            this.olvColumn1.IsVisible = true;\r\n            this.olvColumn1.Text = \"Column\";\r\n            this.olvColumn1.Width = 267;\r\n            // \r\n            // ColumnSelectionForm\r\n            // \r\n            this.AcceptButton = this.buttonOK;\r\n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            this.CancelButton = this.buttonCancel;\r\n            this.ClientSize = new System.Drawing.Size(391, 339);\r\n            this.Controls.Add(this.buttonCancel);\r\n            this.Controls.Add(this.buttonOK);\r\n            this.Controls.Add(this.label1);\r\n            this.Controls.Add(this.buttonHide);\r\n            this.Controls.Add(this.buttonShow);\r\n            this.Controls.Add(this.buttonMoveDown);\r\n            this.Controls.Add(this.buttonMoveUp);\r\n            this.Controls.Add(this.objectListView1);\r\n            this.MaximizeBox = false;\r\n            this.MinimizeBox = false;\r\n            this.Name = \"ColumnSelectionForm\";\r\n            this.ShowIcon = false;\r\n            this.ShowInTaskbar = false;\r\n            this.Text = \"Column Selection\";\r\n            ((System.ComponentModel.ISupportInitialize)(this.objectListView1)).EndInit();\r\n            this.ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private BrightIdeasSoftware.ObjectListView objectListView1;\r\n        private System.Windows.Forms.Button buttonMoveUp;\r\n        private System.Windows.Forms.Button buttonMoveDown;\r\n        private System.Windows.Forms.Button buttonShow;\r\n        private System.Windows.Forms.Button buttonHide;\r\n        private BrightIdeasSoftware.OLVColumn olvColumn1;\r\n        private System.Windows.Forms.Label label1;\r\n        private System.Windows.Forms.Button buttonOK;\r\n        private System.Windows.Forms.Button buttonCancel;\r\n    }\r\n}"
  },
  {
    "path": "source/ObjectListView/Utilities/ColumnSelectionForm.cs",
    "content": "/*\r\n * ColumnSelectionForm - A utility form that allows columns to be rearranged and/or hidden\r\n *\r\n * Author: Phillip Piper\r\n * Date: 1/04/2011 11:15 AM\r\n *\r\n * Change log:\r\n * 2013-04-21  JPP  - Fixed obscure bug in column re-ordered. Thanks to Edwin Chen.\r\n */\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// This form is an example of how an application could allows the user to select which columns \r\n    /// an ObjectListView will display, as well as select which order the columns are displayed in.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>In Tile view, ColumnHeader.DisplayIndex does nothing. To reorder the columns you have\r\n    /// to change the order of objects in the Columns property.</para>\r\n    /// <para>Remember that the first column is special!\r\n    /// It has to remain the first column.</para>\r\n    /// </remarks>\r\n    public partial class ColumnSelectionForm : Form\r\n    {\r\n    \t/// <summary>\r\n    \t/// Make a new ColumnSelectionForm\r\n    \t/// </summary>\r\n        public ColumnSelectionForm()\r\n        {\r\n            InitializeComponent();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Open this form so it will edit the columns that are available in the listview's current view\r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView whose columns are to be altered</param>\r\n        public void OpenOn(ObjectListView olv)\r\n        {\r\n            OpenOn(olv, olv.View);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Open this form so it will edit the columns that are available in the given listview\r\n        /// when the listview is showing the given type of view.\r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView whose columns are to be altered</param>\r\n        /// <param name=\"view\">The view that is to be altered. Must be View.Details or View.Tile</param>\r\n        public void OpenOn(ObjectListView olv, View view)\r\n        {\r\n            if (view != View.Details && view != View.Tile)\r\n                return;\r\n\r\n            InitializeForm(olv, view);\r\n            if (ShowDialog() == DialogResult.OK) \r\n                Apply(olv, view);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Initialize the form to show the columns of the given view\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"view\"></param>\r\n        protected void InitializeForm(ObjectListView olv, View view)\r\n        {\r\n            AllColumns = olv.AllColumns;\r\n            RearrangableColumns = new List<OLVColumn>(AllColumns);\r\n            foreach (OLVColumn col in RearrangableColumns) {\r\n                if (view == View.Details)\r\n                    MapColumnToVisible[col] = col.IsVisible;\r\n                else\r\n                    MapColumnToVisible[col] = col.IsTileViewColumn;\r\n            }\r\n            RearrangableColumns.Sort(new SortByDisplayOrder(this));\r\n\r\n            objectListView1.BooleanCheckStateGetter = delegate(Object rowObject) {\r\n                return MapColumnToVisible[(OLVColumn)rowObject];\r\n            };\r\n\r\n            objectListView1.BooleanCheckStatePutter = delegate(Object rowObject, bool newValue) {\r\n                // Some columns should always be shown, so ignore attempts to hide them\r\n                OLVColumn column = (OLVColumn)rowObject;\r\n                if (!column.CanBeHidden) \r\n                    return true;\r\n\r\n                MapColumnToVisible[column] = newValue;\r\n                EnableControls();\r\n                return newValue;\r\n            };\r\n\r\n            objectListView1.SetObjects(RearrangableColumns);\r\n            EnableControls();\r\n        }\r\n        private List<OLVColumn> AllColumns = null;\r\n        private List<OLVColumn> RearrangableColumns = new();\r\n        private Dictionary<OLVColumn, bool> MapColumnToVisible = new();\r\n\r\n        /// <summary>\r\n        /// The user has pressed OK. Do what's requied.\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"view\"></param>\r\n        protected void Apply(ObjectListView olv, View view)\r\n        {\r\n            olv.Freeze();\r\n\r\n            // Update the column definitions to reflect whether they have been hidden\r\n            if (view == View.Details) {\r\n                foreach (OLVColumn col in olv.AllColumns)\r\n                    col.IsVisible = MapColumnToVisible[col];\r\n            } else {\r\n                foreach (OLVColumn col in olv.AllColumns)\r\n                    col.IsTileViewColumn = MapColumnToVisible[col];\r\n            }\r\n\r\n            // Collect the columns are still visible\r\n            List<OLVColumn> visibleColumns = RearrangableColumns.FindAll(\r\n                delegate(OLVColumn x) { return MapColumnToVisible[x]; });\r\n\r\n            // Detail view and Tile view have to be handled in different ways.\r\n            if (view == View.Details) {\r\n                // Of the still visible columns, change DisplayIndex to reflect their position in the rearranged list\r\n                olv.ChangeToFilteredColumns(view);\r\n                foreach (OLVColumn col in visibleColumns) {\r\n                    col.DisplayIndex = visibleColumns.IndexOf((OLVColumn)col);\r\n                    col.LastDisplayIndex = col.DisplayIndex;\r\n                }\r\n            } else {\r\n                // In Tile view, DisplayOrder does nothing. So to change the display order, we have to change the \r\n                // order of the columns in the Columns property.\r\n                // Remember, the primary column is special and has to remain first!\r\n                OLVColumn primaryColumn = AllColumns[0];\r\n                visibleColumns.Remove(primaryColumn);\r\n\r\n                olv.Columns.Clear();\r\n                olv.Columns.Add(primaryColumn);\r\n                olv.Columns.AddRange(visibleColumns.ToArray());\r\n                olv.CalculateReasonableTileSize();\r\n            }\r\n\r\n            olv.Unfreeze();\r\n        }\r\n\r\n        #region Event handlers\r\n\r\n        private void buttonMoveUp_Click(object sender, EventArgs e)\r\n        {\r\n            int selectedIndex = objectListView1.SelectedIndices[0];\r\n            OLVColumn col = RearrangableColumns[selectedIndex];\r\n            RearrangableColumns.RemoveAt(selectedIndex);\r\n            RearrangableColumns.Insert(selectedIndex-1, col);\r\n\r\n            objectListView1.BuildList();\r\n\r\n            EnableControls();\r\n        }\r\n\r\n        private void buttonMoveDown_Click(object sender, EventArgs e)\r\n        {\r\n            int selectedIndex = objectListView1.SelectedIndices[0];\r\n            OLVColumn col = RearrangableColumns[selectedIndex];\r\n            RearrangableColumns.RemoveAt(selectedIndex);\r\n            RearrangableColumns.Insert(selectedIndex + 1, col);\r\n\r\n            objectListView1.BuildList();\r\n\r\n            EnableControls();\r\n        }\r\n\r\n        private void buttonShow_Click(object sender, EventArgs e)\r\n        {\r\n            objectListView1.SelectedItem.Checked = true;\r\n        }\r\n\r\n        private void buttonHide_Click(object sender, EventArgs e)\r\n        {\r\n            objectListView1.SelectedItem.Checked = false;\r\n        }\r\n\r\n        private void buttonOK_Click(object sender, EventArgs e)\r\n        {\r\n            DialogResult = DialogResult.OK;\r\n            Close();\r\n        }\r\n\r\n        private void buttonCancel_Click(object sender, EventArgs e)\r\n        {\r\n            DialogResult = DialogResult.Cancel;\r\n            Close();\r\n        }\r\n\r\n        private void objectListView1_SelectionChanged(object sender, EventArgs e)\r\n        {\r\n            EnableControls();\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Control enabling\r\n\r\n        /// <summary>\r\n        /// Enable the controls on the dialog to match the current state\r\n        /// </summary>\r\n        protected void EnableControls()\r\n        {\r\n            if (objectListView1.SelectedIndices.Count == 0) {\r\n                buttonMoveUp.Enabled = false;\r\n                buttonMoveDown.Enabled = false;\r\n                buttonShow.Enabled = false;\r\n                buttonHide.Enabled = false;\r\n            } else {\r\n                // Can't move the first row up or the last row down\r\n                buttonMoveUp.Enabled = (objectListView1.SelectedIndices[0] != 0);\r\n                buttonMoveDown.Enabled = (objectListView1.SelectedIndices[0] < (objectListView1.GetItemCount() - 1));\r\n\r\n                OLVColumn selectedColumn = (OLVColumn)objectListView1.SelectedObject;\r\n\r\n                // Some columns cannot be hidden (and hence cannot be Shown)\r\n                buttonShow.Enabled = !MapColumnToVisible[selectedColumn] && selectedColumn.CanBeHidden;\r\n                buttonHide.Enabled = MapColumnToVisible[selectedColumn] && selectedColumn.CanBeHidden;\r\n            }\r\n        }\r\n        #endregion\r\n\r\n        /// <summary>\r\n        /// A Comparer that will sort a list of columns so that visible ones come before hidden ones,\r\n        /// and that are ordered by their display order.\r\n        /// </summary>\r\n        private class SortByDisplayOrder : IComparer<OLVColumn>\r\n        {\r\n            public SortByDisplayOrder(ColumnSelectionForm form)\r\n            {\r\n                Form = form;\r\n            }\r\n            private ColumnSelectionForm Form;\r\n\r\n            #region IComparer<OLVColumn> Members\r\n\r\n            int IComparer<OLVColumn>.Compare(OLVColumn x, OLVColumn y)\r\n            {\r\n                if (Form.MapColumnToVisible[x] && !Form.MapColumnToVisible[y])\r\n                    return -1;\r\n\r\n                if (!Form.MapColumnToVisible[x] && Form.MapColumnToVisible[y])\r\n                    return 1;\r\n\r\n                if (x.DisplayIndex == y.DisplayIndex)\r\n                    return string.Compare(x.Text, y.Text, StringComparison.CurrentCultureIgnoreCase);\r\n                else\r\n                    return x.DisplayIndex - y.DisplayIndex;\r\n            }\r\n\r\n            #endregion\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Utilities/ColumnSelectionForm.resx",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n</root>"
  },
  {
    "path": "source/ObjectListView/Utilities/Generator.cs",
    "content": "﻿/*\r\n * Generator - Utility methods that generate columns or methods\r\n *\r\n * Author: Phillip Piper\r\n * Date: 15/08/2009 22:37\r\n *\r\n * Change log:\r\n * 2015-06-17  JPP  - Columns without [OLVColumn] now auto size\r\n * 2012-08-16  JPP  - Generator now considers [OLVChildren] and [OLVIgnore] attributes.\r\n * 2012-06-14  JPP  - Allow columns to be generated even if they are not marked with [OLVColumn]\r\n *                  - Converted class from static to instance to allow it to be subclassed.\r\n *                    Also, added IGenerator to allow it to be completely reimplemented.\r\n * v2.5.1\r\n * 2010-11-01  JPP  - DisplayIndex is now set correctly for columns that lack that attribute\r\n * v2.4.1\r\n * 2010-08-25  JPP  - Generator now also resets sort columns\r\n * v2.4\r\n * 2010-04-14  JPP  - Allow Name property to be set\r\n *                  - Don't double set the Text property\r\n * v2.3\r\n * 2009-08-15  JPP  - Initial version\r\n *\r\n * To do:\r\n * \r\n * Copyright (C) 2009-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Globalization;\r\nusing System.Reflection;\r\nusing System.Text.RegularExpressions;\r\nusing System.Windows.Forms;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// An object that implements the IGenerator interface provides the ability \r\n    /// to dynamically create columns\r\n    /// for an ObjectListView based on the characteristics of a given collection\r\n    /// of model objects.\r\n    /// </summary>\r\n    public interface IGenerator {\r\n        /// <summary>\r\n        /// Generate columns into the given ObjectListView that come from the given \r\n        /// model object type. \r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView to modify</param>\r\n        /// <param name=\"type\">The model type whose attributes will be considered.</param>\r\n        /// <param name=\"allProperties\">Will columns be generated for properties that are not marked with [OLVColumn].</param>\r\n        void GenerateAndReplaceColumns(ObjectListView olv, Type type, bool allProperties);\r\n\r\n        /// <summary>\r\n        /// Generate a list of OLVColumns based on the attributes of the given type\r\n        /// If allProperties to true, all public properties will have a matching column generated.\r\n        /// If allProperties is false, only properties that have a OLVColumn attribute will have a column generated.\r\n        /// </summary>\r\n        /// <param name=\"type\"></param>\r\n        /// <param name=\"allProperties\">Will columns be generated for properties that are not marked with [OLVColumn].</param>\r\n        /// <returns>A collection of OLVColumns matching the attributes of Type that have OLVColumnAttributes.</returns>\r\n        IList<OLVColumn> GenerateColumns(Type type, bool allProperties);\r\n    }\r\n\r\n    /// <summary>\r\n    /// The Generator class provides methods to dynamically create columns\r\n    /// for an ObjectListView based on the characteristics of a given collection\r\n    /// of model objects.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>For a given type, a Generator can create columns to match the public properties\r\n    /// of that type. The generator can consider all public properties or only those public properties marked with\r\n    /// [OLVColumn] attribute.</para>\r\n    /// </remarks>\r\n    public class Generator : IGenerator {\r\n        #region Static convenience methods\r\n\r\n        /// <summary>\r\n        /// Gets or sets the actual generator used by the static convinence methods.\r\n        /// </summary>\r\n        /// <remarks>If you subclass the standard generator or implement IGenerator yourself, \r\n        /// you should install an instance of your subclass/implementation here.</remarks>\r\n        public static IGenerator Instance {\r\n            get { return instance ?? (instance = new Generator()); }\r\n            set { instance = value; }\r\n        }\r\n        private static IGenerator instance;\r\n\r\n        /// <summary>\r\n        /// Replace all columns of the given ObjectListView with columns generated\r\n        /// from the first member of the given enumerable. If the enumerable is \r\n        /// empty or null, the ObjectListView will be cleared.\r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView to modify</param>\r\n        /// <param name=\"enumerable\">The collection whose first element will be used to generate columns.</param>\r\n        static public void GenerateColumns(ObjectListView olv, IEnumerable enumerable) {\r\n            GenerateColumns(olv, enumerable, false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Replace all columns of the given ObjectListView with columns generated\r\n        /// from the first member of the given enumerable. If the enumerable is \r\n        /// empty or null, the ObjectListView will be cleared.\r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView to modify</param>\r\n        /// <param name=\"enumerable\">The collection whose first element will be used to generate columns.</param>\r\n        /// <param name=\"allProperties\">Will columns be generated for properties that are not marked with [OLVColumn].</param>\r\n        static public void GenerateColumns(ObjectListView olv, IEnumerable enumerable, bool allProperties) {\r\n            // Generate columns based on the type of the first model in the collection and then quit\r\n            if (enumerable != null) {\r\n                foreach (object model in enumerable) {\r\n                    Instance.GenerateAndReplaceColumns(olv, model.GetType(), allProperties);\r\n                    return;\r\n                }\r\n            }\r\n\r\n            // If we reach here, the collection was empty, so we clear the list\r\n            Instance.GenerateAndReplaceColumns(olv, null, allProperties);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Generate columns into the given ObjectListView that come from the public properties of the given \r\n        /// model object type. \r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView to modify</param>\r\n        /// <param name=\"type\">The model type whose attributes will be considered.</param>\r\n        static public void GenerateColumns(ObjectListView olv, Type type) {\r\n            Instance.GenerateAndReplaceColumns(olv, type, false);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Generate columns into the given ObjectListView that come from the public properties of the given \r\n        /// model object type. \r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView to modify</param>\r\n        /// <param name=\"type\">The model type whose attributes will be considered.</param>\r\n        /// <param name=\"allProperties\">Will columns be generated for properties that are not marked with [OLVColumn].</param>\r\n        static public void GenerateColumns(ObjectListView olv, Type type, bool allProperties) {\r\n            Instance.GenerateAndReplaceColumns(olv, type, allProperties);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Generate a list of OLVColumns based on the public properties of the given type\r\n        /// that have a OLVColumn attribute.\r\n        /// </summary>\r\n        /// <param name=\"type\"></param>\r\n        /// <returns>A collection of OLVColumns matching the attributes of Type that have OLVColumnAttributes.</returns>\r\n        static public IList<OLVColumn> GenerateColumns(Type type) {\r\n            return Instance.GenerateColumns(type, false);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Public interface\r\n\r\n        /// <summary>\r\n        /// Generate columns into the given ObjectListView that come from the given \r\n        /// model object type. \r\n        /// </summary>\r\n        /// <param name=\"olv\">The ObjectListView to modify</param>\r\n        /// <param name=\"type\">The model type whose attributes will be considered.</param>\r\n        /// <param name=\"allProperties\">Will columns be generated for properties that are not marked with [OLVColumn].</param>\r\n        public virtual void GenerateAndReplaceColumns(ObjectListView olv, Type type, bool allProperties) {\r\n            IList<OLVColumn> columns = GenerateColumns(type, allProperties);\r\n            if (olv is TreeListView tlv)\r\n                TryGenerateChildrenDelegates(tlv, type);\r\n            ReplaceColumns(olv, columns);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Generate a list of OLVColumns based on the attributes of the given type\r\n        /// If allProperties to true, all public properties will have a matching column generated.\r\n        /// If allProperties is false, only properties that have a OLVColumn attribute will have a column generated.\r\n        /// </summary>\r\n        /// <param name=\"type\"></param>\r\n        /// <param name=\"allProperties\">Will columns be generated for properties that are not marked with [OLVColumn].</param>\r\n        /// <returns>A collection of OLVColumns matching the attributes of Type that have OLVColumnAttributes.</returns>\r\n        public virtual IList<OLVColumn> GenerateColumns(Type type, bool allProperties) {\r\n            List<OLVColumn> columns = new List<OLVColumn>();\r\n            \r\n            // Sanity\r\n            if (type == null)\r\n                return columns;\r\n\r\n            // Iterate all public properties in the class and build columns from those that have\r\n            // an OLVColumn attribute and that are not ignored.\r\n            foreach (PropertyInfo pinfo in type.GetProperties()) {\r\n                if (Attribute.GetCustomAttribute(pinfo, typeof(OLVIgnoreAttribute)) != null)\r\n                    continue;\r\n\r\n                if (Attribute.GetCustomAttribute(pinfo, typeof(OLVColumnAttribute)) is not OLVColumnAttribute attr) {\r\n                    if (allProperties)\r\n                        columns.Add(MakeColumnFromPropertyInfo(pinfo));\r\n                } else {\r\n                    columns.Add(MakeColumnFromAttribute(pinfo, attr));\r\n                }\r\n            }\r\n\r\n            // How many columns have DisplayIndex specifically set?\r\n            int countPositiveDisplayIndex = 0;\r\n            foreach (OLVColumn col in columns) {\r\n                if (col.DisplayIndex >= 0)\r\n                    countPositiveDisplayIndex += 1;\r\n            }\r\n\r\n            // Give columns that don't have a DisplayIndex an incremental index\r\n            int columnIndex = countPositiveDisplayIndex;\r\n            foreach (OLVColumn col in columns)\r\n                if (col.DisplayIndex < 0)\r\n                    col.DisplayIndex = (columnIndex++);\r\n\r\n            columns.Sort(delegate(OLVColumn x, OLVColumn y) {\r\n                return x.DisplayIndex.CompareTo(y.DisplayIndex);\r\n            });\r\n\r\n            return columns;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        /// <summary>\r\n        /// Replace all the columns in the given listview with the given list of columns.\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"columns\"></param>\r\n        protected virtual void ReplaceColumns(ObjectListView olv, IList<OLVColumn> columns) {\r\n            olv.Reset();\r\n\r\n            // Are there new columns to add?\r\n            if (columns == null || columns.Count == 0) \r\n                return;\r\n\r\n            // Setup the columns\r\n            olv.AllColumns.AddRange(columns);\r\n            PostCreateColumns(olv);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Post process columns after creating them and adding them to the AllColumns collection.\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        public virtual void PostCreateColumns(ObjectListView olv) {\r\n            if (olv.AllColumns.Exists(delegate(OLVColumn x) { return x.CheckBoxes; }))\r\n                olv.UseSubItemCheckBoxes = true;\r\n            if (olv.AllColumns.Exists(delegate(OLVColumn x) { return x.Index > 0 && (x.ImageGetter != null || !String.IsNullOrEmpty(x.ImageAspectName)); }))\r\n                olv.ShowImagesOnSubItems = true;\r\n            olv.RebuildColumns();\r\n            olv.AutoSizeColumns();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a column from the given PropertyInfo and OLVColumn attribute\r\n        /// </summary>\r\n        /// <param name=\"pinfo\"></param>\r\n        /// <param name=\"attr\"></param>\r\n        /// <returns></returns>\r\n        protected virtual OLVColumn MakeColumnFromAttribute(PropertyInfo pinfo, OLVColumnAttribute attr) {\r\n            return MakeColumn(pinfo.Name, DisplayNameToColumnTitle(pinfo.Name), pinfo.CanWrite, pinfo.PropertyType, attr);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a column from the given PropertyInfo\r\n        /// </summary>\r\n        /// <param name=\"pinfo\"></param>\r\n        /// <returns></returns>\r\n        protected virtual OLVColumn MakeColumnFromPropertyInfo(PropertyInfo pinfo) {\r\n            return MakeColumn(pinfo.Name, DisplayNameToColumnTitle(pinfo.Name), pinfo.CanWrite, pinfo.PropertyType, null);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a column from the given PropertyDescriptor\r\n        /// </summary>\r\n        /// <param name=\"pd\"></param>\r\n        /// <returns></returns>\r\n        public virtual OLVColumn MakeColumnFromPropertyDescriptor(PropertyDescriptor pd) {\r\n            OLVColumnAttribute attr = pd.Attributes[typeof(OLVColumnAttribute)] as OLVColumnAttribute;\r\n            return MakeColumn(pd.Name, DisplayNameToColumnTitle(pd.DisplayName), !pd.IsReadOnly, pd.PropertyType, attr);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a column with all the given information\r\n        /// </summary>\r\n        /// <param name=\"aspectName\"></param>\r\n        /// <param name=\"title\"></param>\r\n        /// <param name=\"editable\"></param>\r\n        /// <param name=\"propertyType\"></param>\r\n        /// <param name=\"attr\"></param>\r\n        /// <returns></returns>\r\n        protected virtual OLVColumn MakeColumn(string aspectName, string title, bool editable, Type propertyType, OLVColumnAttribute attr) {\r\n\r\n            OLVColumn column = MakeColumn(aspectName, title, attr);\r\n            column.Name = (attr == null || String.IsNullOrEmpty(attr.Name)) ? aspectName : attr.Name;\r\n            ConfigurePossibleBooleanColumn(column, propertyType);\r\n\r\n            if (attr == null) {\r\n                column.IsEditable = editable;\r\n                column.Width = -1; // Auto size\r\n                return column;                \r\n            }\r\n\r\n            column.AspectToStringFormat = attr.AspectToStringFormat;\r\n            if (attr.IsCheckBoxesSet)\r\n                column.CheckBoxes = attr.CheckBoxes;\r\n            column.DisplayIndex = attr.DisplayIndex;\r\n            column.FillsFreeSpace = attr.FillsFreeSpace;\r\n            if (attr.IsFreeSpaceProportionSet)\r\n                column.FreeSpaceProportion = attr.FreeSpaceProportion;\r\n            column.GroupWithItemCountFormat = attr.GroupWithItemCountFormat;\r\n            column.GroupWithItemCountSingularFormat = attr.GroupWithItemCountSingularFormat;\r\n            column.Hyperlink = attr.Hyperlink;\r\n            column.ImageAspectName = attr.ImageAspectName;\r\n            column.IsEditable = attr.IsEditableSet ? attr.IsEditable : editable;\r\n            column.IsTileViewColumn = attr.IsTileViewColumn;\r\n            column.IsVisible = attr.IsVisible;\r\n            column.MaximumWidth = attr.MaximumWidth;\r\n            column.MinimumWidth = attr.MinimumWidth;\r\n            column.Tag = attr.Tag;\r\n            if (attr.IsTextAlignSet)\r\n                column.TextAlign = attr.TextAlign;\r\n            column.ToolTipText = attr.ToolTipText;\r\n            if (attr.IsTriStateCheckBoxesSet)\r\n                column.TriStateCheckBoxes = attr.TriStateCheckBoxes;\r\n            column.UseInitialLetterForGroup = attr.UseInitialLetterForGroup;\r\n            column.Width = attr.Width;\r\n            if (attr.GroupCutoffs != null && attr.GroupDescriptions != null)\r\n                column.MakeGroupies(attr.GroupCutoffs, attr.GroupDescriptions);\r\n            return column;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a column.\r\n        /// </summary>\r\n        /// <param name=\"aspectName\"></param>\r\n        /// <param name=\"title\"></param>\r\n        /// <param name=\"attr\"></param>\r\n        /// <returns></returns>\r\n        protected virtual OLVColumn MakeColumn(string aspectName, string title, OLVColumnAttribute attr) {\r\n            string columnTitle = (attr == null || String.IsNullOrEmpty(attr.Title)) ? title : attr.Title;\r\n            return new OLVColumn(columnTitle, aspectName);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Convert a property name to a displayable title.\r\n        /// </summary>\r\n        /// <param name=\"displayName\"></param>\r\n        /// <returns></returns>\r\n        protected virtual string DisplayNameToColumnTitle(string displayName) {\r\n            string title = displayName.Replace(\"_\", \" \");\r\n            // Put a space between a lower-case letter that is followed immediately by an upper case letter\r\n            title = Regex.Replace(title, @\"(\\p{Ll})(\\p{Lu})\", @\"$1 $2\");\r\n            return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(title);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Configure the given column to show a checkbox if appropriate\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"propertyType\"></param>\r\n        protected virtual void ConfigurePossibleBooleanColumn(OLVColumn column, Type propertyType) {\r\n            if (propertyType != typeof(bool) && propertyType != typeof(bool?) && propertyType != typeof(CheckState)) \r\n                return;\r\n\r\n            column.CheckBoxes = true;\r\n            column.TextAlign = HorizontalAlignment.Center;\r\n            column.Width = 32;\r\n            column.TriStateCheckBoxes = (propertyType == typeof(bool?) || propertyType == typeof(CheckState));\r\n        }\r\n\r\n        /// <summary>\r\n        /// If this given type has an property marked with [OLVChildren], make delegates that will\r\n        /// traverse that property as the children of an instance of the model\r\n        /// </summary>\r\n        /// <param name=\"tlv\"></param>\r\n        /// <param name=\"type\"></param>\r\n        protected virtual void TryGenerateChildrenDelegates(TreeListView tlv, Type type) {\r\n            foreach (PropertyInfo pinfo in type.GetProperties()) {\r\n                if (Attribute.GetCustomAttribute(pinfo, typeof(OLVChildrenAttribute)) is OLVChildrenAttribute attr) {\r\n                    GenerateChildrenDelegates(tlv, pinfo);\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Generate CanExpand and ChildrenGetter delegates from the given property.\r\n        /// </summary>\r\n        /// <param name=\"tlv\"></param>\r\n        /// <param name=\"pinfo\"></param>\r\n        protected virtual void GenerateChildrenDelegates(TreeListView tlv, PropertyInfo pinfo) {\r\n            Munger childrenGetter = new Munger(pinfo.Name);\r\n            tlv.CanExpandGetter = delegate(object x) {\r\n                try {\r\n                    IEnumerable result = childrenGetter.GetValueEx(x) as IEnumerable;\r\n                    return !ObjectListView.IsEnumerableEmpty(result);\r\n                }\r\n                catch (MungerException ex) {\r\n                    System.Diagnostics.Debug.WriteLine(ex);\r\n                    return false;\r\n                }\r\n            };\r\n            tlv.ChildrenGetter = delegate(object x) {\r\n                try {\r\n                    return childrenGetter.GetValueEx(x) as IEnumerable;\r\n                }\r\n                catch (MungerException ex) {\r\n                    System.Diagnostics.Debug.WriteLine(ex);\r\n                    return null;\r\n                }\r\n            };\r\n        }\r\n        #endregion\r\n\r\n        /*\r\n        #region Dynamic methods\r\n\r\n        /// <summary>\r\n        /// Generate methods so that reflection is not needed.\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"type\"></param>\r\n        public static void GenerateMethods(ObjectListView olv, Type type) {\r\n            foreach (OLVColumn column in olv.Columns) {\r\n                GenerateColumnMethods(column, type);\r\n            }\r\n        }\r\n\r\n        public static void GenerateColumnMethods(OLVColumn column, Type type) {\r\n            if (column.AspectGetter == null && !String.IsNullOrEmpty(column.AspectName))\r\n                column.AspectGetter = Generator.GenerateAspectGetter(type, column.AspectName);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Generates an aspect getter method dynamically. The method will execute\r\n        /// the given dotted chain of selectors against a model object given at runtime.\r\n        /// </summary>\r\n        /// <param name=\"type\">The type of model object to be passed to the generated method</param>\r\n        /// <param name=\"path\">A dotted chain of selectors. Each selector can be the name of a \r\n        /// field, property or parameter-less method.</param>\r\n        /// <returns>A typed delegate</returns>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If you have an AspectName of \"Owner.Address.Postcode\", this will generate\r\n        /// the equivilent of: <code>this.AspectGetter = delegate (object x) {\r\n        ///     return x.Owner.Address.Postcode;\r\n        /// }\r\n        /// </code>\r\n        /// </para>\r\n        /// </remarks>\r\n        private static AspectGetterDelegate GenerateAspectGetter(Type type, string path) {\r\n            DynamicMethod getter = new DynamicMethod(String.Empty, typeof(Object), new Type[] { type }, type, true);\r\n            Generator.GenerateIL(type, path, getter.GetILGenerator());\r\n            return (AspectGetterDelegate)getter.CreateDelegate(typeof(AspectGetterDelegate));\r\n        }\r\n\r\n        /// <summary>\r\n        /// This method generates the actual IL for the method.\r\n        /// </summary>\r\n        /// <param name=\"type\"></param>\r\n        /// <param name=\"path\"></param>\r\n        /// <param name=\"il\"></param>\r\n        private static void GenerateIL(Type modelType, string path, ILGenerator il) {\r\n            // Push our model object onto the stack\r\n            il.Emit(OpCodes.Ldarg_0);\r\n            OpCodes.Castclass\r\n            // Generate the IL to access each part of the dotted chain\r\n            Type type = modelType;\r\n            string[] parts = path.Split('.');\r\n            for (int i = 0; i < parts.Length; i++) {\r\n                type = Generator.GeneratePart(il, type, parts[i], (i == parts.Length - 1));\r\n                if (type == null)\r\n                    break;\r\n            }\r\n\r\n            // If the object to be returned is a value type (e.g. int, bool), it\r\n            // must be boxed, since the delegate returns an Object\r\n            if (type != null && type.IsValueType && !modelType.IsValueType)\r\n                il.Emit(OpCodes.Box, type);\r\n\r\n            il.Emit(OpCodes.Ret);\r\n        }\r\n\r\n        private static Type GeneratePart(ILGenerator il, Type type, string pathPart, bool isLastPart) {\r\n            // TODO: Generate check for null\r\n\r\n            // Find the first member with the given nam that is a field, property, or parameter-less method\r\n            List<MemberInfo> infos = new List<MemberInfo>(type.GetMember(pathPart));\r\n            MemberInfo info = infos.Find(delegate(MemberInfo x) {\r\n                if (x.MemberType == MemberTypes.Field || x.MemberType == MemberTypes.Property)\r\n                    return true;\r\n                if (x.MemberType == MemberTypes.Method)\r\n                    return ((MethodInfo)x).GetParameters().Length == 0;\r\n                else\r\n                    return false;\r\n            });\r\n\r\n            // If we couldn't find anything with that name, pop the current result and return an error\r\n            if (info == null) {\r\n                il.Emit(OpCodes.Pop);\r\n                il.Emit(OpCodes.Ldstr, String.Format(\"'{0}' is not a parameter-less method, property or field of type '{1}'\", pathPart, type.FullName));\r\n                return null;\r\n            }\r\n\r\n            // Generate the correct IL to access the member. We remember the type of object that is going to be returned\r\n            // so that we can do a method lookup on it at the next iteration\r\n            Type resultType = null;\r\n            switch (info.MemberType) {\r\n                case MemberTypes.Method:\r\n                    MethodInfo mi = (MethodInfo)info;\r\n                    if (mi.IsVirtual)\r\n                        il.Emit(OpCodes.Callvirt, mi);\r\n                    else\r\n                        il.Emit(OpCodes.Call, mi);\r\n                    resultType = mi.ReturnType;\r\n                    break;\r\n                case MemberTypes.Property:\r\n                    PropertyInfo pi = (PropertyInfo)info;\r\n                    il.Emit(OpCodes.Call, pi.GetGetMethod());\r\n                    resultType = pi.PropertyType;\r\n                    break;\r\n                case MemberTypes.Field:\r\n                    FieldInfo fi = (FieldInfo)info;\r\n                    il.Emit(OpCodes.Ldfld, fi);\r\n                    resultType = fi.FieldType;\r\n                    break;\r\n            }\r\n\r\n            // If the method returned a value type, and something is going to call a method on that value,\r\n            // we need to load its address onto the stack, rather than the object itself.\r\n            if (resultType.IsValueType && !isLastPart) {\r\n                LocalBuilder lb = il.DeclareLocal(resultType);\r\n                il.Emit(OpCodes.Stloc, lb);\r\n                il.Emit(OpCodes.Ldloca, lb);\r\n            }\r\n\r\n            return resultType;\r\n        }\r\n\r\n        #endregion\r\n         */ \r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/Utilities/OLVExporter.cs",
    "content": "﻿/*\r\n * OLVExporter - Export the contents of an ObjectListView into various text-based formats\r\n *\r\n * Author: Phillip Piper\r\n * Date: 7 August 2012, 10:35pm\r\n *\r\n * Change log:\r\n * 2012-08-07  JPP  Initial code\r\n * \r\n * Copyright (C) 2012 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Globalization;\r\nusing System.Text;\r\n\r\nnamespace BrightIdeasSoftware {\r\n    /// <summary>\r\n    /// An OLVExporter converts a collection of rows from an ObjectListView\r\n    /// into a variety of textual formats.\r\n    /// </summary>\r\n    public class OLVExporter {\r\n\r\n        /// <summary>\r\n        /// What format will be used for exporting\r\n        /// </summary>\r\n        public enum ExportFormat {\r\n\r\n            /// <summary>\r\n            /// Tab separated values, according to http://www.iana.org/assignments/media-types/text/tab-separated-values\r\n            /// </summary>\r\n            TabSeparated = 1,\r\n\r\n            /// <summary>\r\n            /// Alias for TabSeparated\r\n            /// </summary>\r\n            TSV = 1,\r\n\r\n            /// <summary>\r\n            /// Comma separated values, according to http://www.ietf.org/rfc/rfc4180.txt\r\n            /// </summary>\r\n            CSV,\r\n\r\n            /// <summary>\r\n            /// HTML table, according to me\r\n            /// </summary>\r\n            HTML\r\n        }\r\n\r\n        #region Life and death\r\n\r\n        /// <summary>\r\n        /// Create an empty exporter\r\n        /// </summary>\r\n        public OLVExporter() {}\r\n\r\n        /// <summary>\r\n        /// Create an exporter that will export all the rows of the given ObjectListView\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        public OLVExporter(ObjectListView olv) : this(olv, olv.Objects) {}\r\n\r\n        /// <summary>\r\n        /// Create an exporter that will export all the given rows from the given ObjectListView\r\n        /// </summary>\r\n        /// <param name=\"olv\"></param>\r\n        /// <param name=\"objectsToExport\"></param>\r\n        public OLVExporter(ObjectListView olv, IEnumerable objectsToExport) {\r\n            if (objectsToExport == null) throw new ArgumentNullException(\"objectsToExport\");\r\n\r\n            ListView = olv ?? throw new ArgumentNullException(\"olv\");\r\n            ModelObjects = ObjectListView.EnumerableToArray(objectsToExport, true);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Properties\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether hidden columns will also be included in the textual\r\n        /// representation. If this is false (the default), only visible columns will\r\n        /// be included.\r\n        /// </summary>\r\n        public bool IncludeHiddenColumns {\r\n            get { return includeHiddenColumns; }\r\n            set { includeHiddenColumns = value; }\r\n        }\r\n        private bool includeHiddenColumns;\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether column headers will also be included in the text\r\n        /// and HTML representation. Default is true.\r\n        /// </summary>\r\n        public bool IncludeColumnHeaders {\r\n            get { return includeColumnHeaders; }\r\n            set { includeColumnHeaders = value; }\r\n        }\r\n        private bool includeColumnHeaders = true;\r\n\r\n        /// <summary>\r\n        /// Gets the ObjectListView that is being used as the source of the data\r\n        /// to be exported\r\n        /// </summary>\r\n        public ObjectListView ListView {\r\n            get { return objectListView; }\r\n            set { objectListView = value; }\r\n        }\r\n        private ObjectListView objectListView;\r\n\r\n        /// <summary>\r\n        /// Gets the model objects that are to be placed in the data object\r\n        /// </summary>\r\n        public IList ModelObjects {\r\n            get { return modelObjects; }\r\n            set { modelObjects = value; }\r\n        }\r\n        private IList modelObjects = new ArrayList();\r\n\r\n        #endregion\r\n\r\n        #region Commands\r\n\r\n        /// <summary>\r\n        /// Export the nominated rows from the nominated ObjectListView.\r\n        /// Returns the result in the expected format.\r\n        /// </summary>\r\n        /// <param name=\"format\"></param>\r\n        /// <returns></returns>\r\n        /// <remarks>This will perform only one conversion, even if called multiple times with different formats.</remarks>\r\n        public string ExportTo(ExportFormat format) {\r\n            if (results == null)\r\n                Convert();\r\n\r\n            return results[format];\r\n        }\r\n\r\n        /// <summary>\r\n        /// Convert \r\n        /// </summary>\r\n        public void Convert() {\r\n\r\n            IList<OLVColumn> columns = IncludeHiddenColumns ? ListView.AllColumns : ListView.ColumnsInDisplayOrder;\r\n\r\n            StringBuilder sbText = new StringBuilder();\r\n            StringBuilder sbCsv = new StringBuilder();\r\n            StringBuilder sbHtml = new StringBuilder(\"<table>\");\r\n\r\n            // Include column headers\r\n            if (IncludeColumnHeaders) {\r\n                List<string> strings = new List<string>();\r\n                foreach (OLVColumn col in columns) \r\n                    strings.Add(col.Text);\r\n\r\n                WriteOneRow(sbText, strings, \"\", \"\\t\", \"\", null);\r\n                WriteOneRow(sbHtml, strings, \"<tr><td>\", \"</td><td>\", \"</td></tr>\", HtmlEncode);\r\n                WriteOneRow(sbCsv, strings, \"\", \",\", \"\", CsvEncode);\r\n            }\r\n\r\n            foreach (object modelObject in ModelObjects) {\r\n                List<string> strings = new List<string>();\r\n                foreach (OLVColumn col in columns)\r\n                    strings.Add(col.GetStringValue(modelObject));\r\n\r\n                WriteOneRow(sbText, strings, \"\", \"\\t\", \"\", null);\r\n                WriteOneRow(sbHtml, strings, \"<tr><td>\", \"</td><td>\", \"</td></tr>\", HtmlEncode);\r\n                WriteOneRow(sbCsv, strings, \"\", \",\", \"\", CsvEncode);\r\n            }\r\n            sbHtml.AppendLine(\"</table>\");\r\n\r\n            results = new Dictionary<ExportFormat, string>();\r\n            results[ExportFormat.TabSeparated] = sbText.ToString();\r\n            results[ExportFormat.CSV] = sbCsv.ToString();\r\n            results[ExportFormat.HTML] = sbHtml.ToString();\r\n        }\r\n\r\n        private delegate string StringToString(string str);\r\n\r\n        private void WriteOneRow(StringBuilder sb, IEnumerable<string> strings, string startRow, string betweenCells, string endRow, StringToString encoder) {\r\n            sb.Append(startRow);\r\n            bool first = true;\r\n            foreach (string s in strings) {\r\n                if (!first)\r\n                    sb.Append(betweenCells);\r\n                sb.Append(encoder == null ? s : encoder(s));\r\n                first = false;\r\n            }\r\n            sb.AppendLine(endRow);\r\n        }\r\n\r\n        private Dictionary<ExportFormat, string> results; \r\n\r\n        #endregion\r\n\r\n        #region Encoding\r\n\r\n        /// <summary>\r\n        /// Encode a string such that it can be used as a value in a CSV file.\r\n        /// This basically means replacing any quote mark with two quote marks,\r\n        /// and enclosing the whole string in quotes.\r\n        /// </summary>\r\n        /// <param name=\"text\"></param>\r\n        /// <returns></returns>\r\n        private static string CsvEncode(string text) {\r\n            if (text == null)\r\n                return null;\r\n\r\n            const string DOUBLEQUOTE = \"\\\"\"; // one double quote\r\n            const string TWODOUBEQUOTES = \"\\\"\\\"\"; // two double quotes\r\n\r\n            StringBuilder sb = new StringBuilder(DOUBLEQUOTE);\r\n            sb.Append(text.Replace(DOUBLEQUOTE, TWODOUBEQUOTES));\r\n            sb.Append(DOUBLEQUOTE);\r\n\r\n            return sb.ToString();\r\n        }\r\n\r\n        /// <summary>\r\n        /// HTML-encodes a string and returns the encoded string.\r\n        /// </summary>\r\n        /// <param name=\"text\">The text string to encode. </param>\r\n        /// <returns>The HTML-encoded text.</returns>\r\n        /// <remarks>Taken from http://www.west-wind.com/weblog/posts/2009/Feb/05/Html-and-Uri-String-Encoding-without-SystemWeb</remarks>\r\n        private static string HtmlEncode(string text) {\r\n            if (text == null)\r\n                return null;\r\n\r\n            StringBuilder sb = new StringBuilder(text.Length);\r\n\r\n            int len = text.Length;\r\n            for (int i = 0; i < len; i++) {\r\n                switch (text[i]) {\r\n                    case '<':\r\n                        sb.Append(\"&lt;\");\r\n                        break;\r\n                    case '>':\r\n                        sb.Append(\"&gt;\");\r\n                        break;\r\n                    case '\"':\r\n                        sb.Append(\"&quot;\");\r\n                        break;\r\n                    case '&':\r\n                        sb.Append(\"&amp;\");\r\n                        break;\r\n                    default:\r\n                        if (text[i] > 159) {\r\n                            // decimal numeric entity\r\n                            sb.Append(\"&#\");\r\n                            sb.Append(((int)text[i]).ToString(CultureInfo.InvariantCulture));\r\n                            sb.Append(';');\r\n                        } else\r\n                            sb.Append(text[i]);\r\n                        break;\r\n                }\r\n            }\r\n            return sb.ToString();\r\n        }\r\n        #endregion\r\n    }\r\n}"
  },
  {
    "path": "source/ObjectListView/Utilities/TypedObjectListView.cs",
    "content": "/*\r\n * TypedObjectListView - A wrapper around an ObjectListView that provides type-safe delegates.\r\n *\r\n * Author: Phillip Piper\r\n * Date: 27/09/2008 9:15 AM\r\n *\r\n * Change log:\r\n * v2.6\r\n * 2012-10-26   JPP  - Handle rare case where a null model object was passed into aspect getters.\r\n * v2.3\r\n * 2009-03-31   JPP  - Added Objects property\r\n * 2008-11-26   JPP  - Added tool tip getting methods\r\n * 2008-11-05   JPP  - Added CheckState handling methods\r\n * 2008-10-24   JPP  - Generate dynamic methods MkII. This one handles value types\r\n * 2008-10-21   JPP  - Generate dynamic methods\r\n * 2008-09-27   JPP  - Separated from ObjectListView.cs\r\n * \r\n * Copyright (C) 2006-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Windows.Forms;\r\nusing System.Reflection;\r\nusing System.Reflection.Emit;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A TypedObjectListView is a type-safe wrapper around an ObjectListView.\r\n    /// </summary>\r\n    /// <remarks>\r\n    /// <para>VCS does not support generics on controls. It can be faked to some degree, but it\r\n    /// cannot be completely overcome. In our case in particular, there is no way to create\r\n    /// the custom OLVColumn's that we need to truly be generic. So this wrapper is an \r\n    /// experiment in providing some type-safe access in a way that is useful and available today.</para>\r\n    /// <para>A TypedObjectListView is not more efficient than a normal ObjectListView.\r\n    /// Underneath, the same name of casts are performed. But it is easier to use since you\r\n    /// do not have to write the casts yourself.\r\n    /// </para>\r\n    /// </remarks>\r\n    /// <typeparam name=\"T\">The class of model object that the list will manage</typeparam>\r\n    /// <example>\r\n    /// To use a TypedObjectListView, you write code like this:\r\n    /// <code>\r\n    /// TypedObjectListView&lt;Person> tlist = new TypedObjectListView&lt;Person>(this.listView1);\r\n    /// tlist.CheckStateGetter = delegate(Person x) { return x.IsActive; };\r\n    /// tlist.GetColumn(0).AspectGetter = delegate(Person x) { return x.Name; };\r\n    /// ...\r\n    /// </code>\r\n    /// To iterate over the selected objects, you can write something elegant like this:\r\n    /// <code>\r\n    /// foreach (Person x in tlist.SelectedObjects) {\r\n    ///     x.GrantSalaryIncrease();\r\n    /// }\r\n    /// </code>\r\n    /// </example>\r\n    public class TypedObjectListView<T> where T : class\r\n    {\r\n        /// <summary>\r\n        /// Create a typed wrapper around the given list.\r\n        /// </summary>\r\n        /// <param name=\"olv\">The listview to be wrapped</param>\r\n        public TypedObjectListView(ObjectListView olv) {\r\n            this.olv = olv;\r\n        }\r\n\r\n        //--------------------------------------------------------------------------------------\r\n        // Properties\r\n\r\n        /// <summary>\r\n        /// Return the model object that is checked, if only one row is checked.\r\n        /// If zero rows are checked, or more than one row, null is returned.\r\n        /// </summary>\r\n        public virtual T CheckedObject {\r\n            get { return (T)olv.CheckedObject; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the list of all the checked model objects\r\n        /// </summary>\r\n        public virtual IList<T> CheckedObjects {\r\n            get {\r\n                IList checkedObjects = olv.CheckedObjects;\r\n                List<T> objects = new List<T>(checkedObjects.Count);\r\n                foreach (object x in checkedObjects)\r\n                    objects.Add((T)x);\r\n\r\n                return objects;\r\n            }\r\n            set { olv.CheckedObjects = (IList)value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// The ObjectListView that is being wrapped\r\n        /// </summary>\r\n        public virtual ObjectListView ListView {\r\n            get { return olv; }\r\n            set { olv = value; }\r\n        }\r\n        private ObjectListView olv;\r\n\r\n        /// <summary>\r\n        /// Get or set the list of all model objects\r\n        /// </summary>\r\n        public virtual IList<T> Objects {\r\n            get {\r\n                List<T> objects = new List<T>(olv.GetItemCount());\r\n                for (int i = 0; i < olv.GetItemCount(); i++)\r\n                    objects.Add(GetModelObject(i));\r\n\r\n                return objects;\r\n            }\r\n            set { olv.SetObjects(value); }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the model object that is selected, if only one row is selected.\r\n        /// If zero rows are selected, or more than one row, null is returned.\r\n        /// </summary>\r\n        public virtual T SelectedObject {\r\n            get { return (T)olv.SelectedObject; }\r\n            set { olv.SelectedObject = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// The list of model objects that are selected.\r\n        /// </summary>\r\n        public virtual IList<T> SelectedObjects {\r\n            get {\r\n                List<T> objects = new List<T>(olv.SelectedIndices.Count);\r\n                foreach (int index in olv.SelectedIndices)\r\n                    objects.Add((T)olv.GetModelObject(index));\r\n\r\n                return objects;\r\n            }\r\n            set { olv.SelectedObjects = (IList)value; }\r\n        }\r\n\r\n        //--------------------------------------------------------------------------------------\r\n        // Accessors\r\n\r\n        /// <summary>\r\n        /// Return a typed wrapper around the column at the given index\r\n        /// </summary>\r\n        /// <param name=\"i\">The index of the column</param>\r\n        /// <returns>A typed column or null</returns>\r\n        public virtual TypedColumn<T> GetColumn(int i) {\r\n            return new TypedColumn<T>(olv.GetColumn(i));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return a typed wrapper around the column with the given name\r\n        /// </summary>\r\n        /// <param name=\"name\">The name of the column</param>\r\n        /// <returns>A typed column or null</returns>\r\n        public virtual TypedColumn<T> GetColumn(string name) {\r\n            return new TypedColumn<T>(olv.GetColumn(name));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the model object at the given index\r\n        /// </summary>\r\n        /// <param name=\"index\">The index of the model object</param>\r\n        /// <returns>The model object or null</returns>\r\n        public virtual T GetModelObject(int index) {\r\n            return (T)olv.GetModelObject(index);\r\n        }\r\n\r\n        //--------------------------------------------------------------------------------------\r\n        // Delegates\r\n\r\n        /// <summary>\r\n        /// CheckStateGetter\r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <returns></returns>\r\n        public delegate CheckState TypedCheckStateGetterDelegate(T rowObject);\r\n\r\n        /// <summary>\r\n        /// Gets or sets the check state getter\r\n        /// </summary>\r\n        public virtual TypedCheckStateGetterDelegate CheckStateGetter {\r\n            get { return checkStateGetter; }\r\n            set {\r\n                checkStateGetter = value;\r\n                if (value == null)\r\n                    olv.CheckStateGetter = null;\r\n                else\r\n                    olv.CheckStateGetter = delegate(object x) {\r\n                        return checkStateGetter((T)x);\r\n                    };\r\n            }\r\n        }\r\n        private TypedCheckStateGetterDelegate checkStateGetter;\r\n\r\n        /// <summary>\r\n        /// BooleanCheckStateGetter\r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <returns></returns>\r\n        public delegate bool TypedBooleanCheckStateGetterDelegate(T rowObject);\r\n\r\n        /// <summary>\r\n        /// Gets or sets the boolean check state getter\r\n        /// </summary>\r\n        public virtual TypedBooleanCheckStateGetterDelegate BooleanCheckStateGetter {\r\n            set {\r\n                if (value == null)\r\n                    olv.BooleanCheckStateGetter = null;\r\n                else\r\n                    olv.BooleanCheckStateGetter = delegate(object x) {\r\n                        return value((T)x);\r\n                    };\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// CheckStatePutter\r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <param name=\"newValue\"></param>\r\n        /// <returns></returns>\r\n        public delegate CheckState TypedCheckStatePutterDelegate(T rowObject, CheckState newValue);\r\n\r\n        /// <summary>\r\n        /// Gets or sets the check state putter delegate\r\n        /// </summary>\r\n        public virtual TypedCheckStatePutterDelegate CheckStatePutter {\r\n            get { return checkStatePutter; }\r\n            set {\r\n                checkStatePutter = value;\r\n                if (value == null)\r\n                    olv.CheckStatePutter = null;\r\n                else\r\n                    olv.CheckStatePutter = delegate(object x, CheckState newValue) {\r\n                        return checkStatePutter((T)x, newValue);\r\n                    };\r\n            }\r\n        }\r\n        private TypedCheckStatePutterDelegate checkStatePutter;\r\n\r\n        /// <summary>\r\n        /// BooleanCheckStatePutter\r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <param name=\"newValue\"></param>\r\n        /// <returns></returns>\r\n        public delegate bool TypedBooleanCheckStatePutterDelegate(T rowObject, bool newValue);\r\n\r\n        /// <summary>\r\n        /// Gets or sets the boolean check state putter\r\n        /// </summary>\r\n        public virtual TypedBooleanCheckStatePutterDelegate BooleanCheckStatePutter {\r\n            set {\r\n                if (value == null)\r\n                    olv.BooleanCheckStatePutter = null;\r\n                else\r\n                    olv.BooleanCheckStatePutter = delegate(object x, bool newValue) {\r\n                        return value((T)x, newValue);\r\n                    };\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// ToolTipGetter\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        /// <param name=\"modelObject\"></param>\r\n        /// <returns></returns>\r\n        public delegate String TypedCellToolTipGetterDelegate(OLVColumn column, T modelObject);\r\n\r\n        /// <summary>\r\n        /// Gets or sets the cell tooltip getter\r\n        /// </summary>\r\n        public virtual TypedCellToolTipGetterDelegate CellToolTipGetter {\r\n            set {\r\n                if (value == null)\r\n                    olv.CellToolTipGetter = null;\r\n                else\r\n                    olv.CellToolTipGetter = delegate(OLVColumn col, Object x) {\r\n                        return value(col, (T)x);\r\n                    };\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the header tool tip getter\r\n        /// </summary>\r\n        public virtual HeaderToolTipGetterDelegate HeaderToolTipGetter {\r\n            get { return olv.HeaderToolTipGetter; }\r\n            set { olv.HeaderToolTipGetter = value; }\r\n        }\r\n\r\n        //--------------------------------------------------------------------------------------\r\n        // Commands\r\n\r\n        /// <summary>\r\n        /// This method will generate AspectGetters for any column that has an AspectName.\r\n        /// </summary>\r\n        public virtual void GenerateAspectGetters() {\r\n            for (int i = 0; i < ListView.Columns.Count; i++)\r\n                GetColumn(i).GenerateAspectGetter();\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// A type-safe wrapper around an OLVColumn\r\n    /// </summary>\r\n    /// <typeparam name=\"T\"></typeparam>\r\n    public class TypedColumn<T> where T : class\r\n    {\r\n        /// <summary>\r\n        /// Creates a TypedColumn\r\n        /// </summary>\r\n        /// <param name=\"column\"></param>\r\n        public TypedColumn(OLVColumn column) {\r\n            this.column = column;\r\n        }\r\n        private OLVColumn column;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <returns></returns>\r\n        public delegate Object TypedAspectGetterDelegate(T rowObject);\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <param name=\"newValue\"></param>\r\n        public delegate void TypedAspectPutterDelegate(T rowObject, Object newValue);\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <returns></returns>\r\n        public delegate Object TypedGroupKeyGetterDelegate(T rowObject);\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        /// <param name=\"rowObject\"></param>\r\n        /// <returns></returns>\r\n        public delegate Object TypedImageGetterDelegate(T rowObject);\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public TypedAspectGetterDelegate AspectGetter {\r\n            get { return aspectGetter; }\r\n            set {\r\n                aspectGetter = value;\r\n                if (value == null)\r\n                    column.AspectGetter = null;\r\n                else\r\n                    column.AspectGetter = delegate(object x) {\r\n                        return x == null ? null : aspectGetter((T)x);\r\n                    };\r\n            }\r\n        }\r\n        private TypedAspectGetterDelegate aspectGetter;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public TypedAspectPutterDelegate AspectPutter {\r\n            get { return aspectPutter; }\r\n            set {\r\n                aspectPutter = value;\r\n                if (value == null)\r\n                    column.AspectPutter = null;\r\n                else\r\n                    column.AspectPutter = delegate(object x, object newValue) {\r\n                        aspectPutter((T)x, newValue);\r\n                    };\r\n            }\r\n        }\r\n        private TypedAspectPutterDelegate aspectPutter;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public TypedImageGetterDelegate ImageGetter {\r\n            get { return imageGetter; }\r\n            set {\r\n                imageGetter = value;\r\n                if (value == null)\r\n                    column.ImageGetter = null;\r\n                else\r\n                    column.ImageGetter = delegate(object x) {\r\n                        return imageGetter((T)x);\r\n                    };\r\n            }\r\n        }\r\n        private TypedImageGetterDelegate imageGetter;\r\n\r\n        /// <summary>\r\n        /// \r\n        /// </summary>\r\n        public TypedGroupKeyGetterDelegate GroupKeyGetter {\r\n            get { return groupKeyGetter; }\r\n            set {\r\n                groupKeyGetter = value;\r\n                if (value == null)\r\n                    column.GroupKeyGetter = null;\r\n                else\r\n                    column.GroupKeyGetter = delegate(object x) {\r\n                        return groupKeyGetter((T)x);\r\n                    };\r\n            }\r\n        }\r\n        private TypedGroupKeyGetterDelegate groupKeyGetter;\r\n\r\n        #region Dynamic methods\r\n\r\n        /// <summary>\r\n        /// Generate an aspect getter that does the same thing as the AspectName,\r\n        /// except without using reflection.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// If you have an AspectName of \"Owner.Address.Postcode\", this will generate\r\n        /// the equivilent of: <code>this.AspectGetter = delegate (object x) {\r\n        ///     return x.Owner.Address.Postcode;\r\n        /// }\r\n        /// </code>\r\n        /// </para>\r\n        /// <para>\r\n        /// If AspectName is empty, this method will do nothing, otherwise \r\n        /// this will replace any existing AspectGetter.\r\n        /// </para>\r\n        /// </remarks>\r\n        public void GenerateAspectGetter() {\r\n            if (!String.IsNullOrEmpty(column.AspectName))\r\n                AspectGetter = GenerateAspectGetter(typeof(T), column.AspectName);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Generates an aspect getter method dynamically. The method will execute\r\n        /// the given dotted chain of selectors against a model object given at runtime.\r\n        /// </summary>\r\n        /// <param name=\"type\">The type of model object to be passed to the generated method</param>\r\n        /// <param name=\"path\">A dotted chain of selectors. Each selector can be the name of a \r\n        /// field, property or parameter-less method.</param>\r\n        /// <returns>A typed delegate</returns>\r\n        private TypedAspectGetterDelegate GenerateAspectGetter(Type type, string path) {\r\n            DynamicMethod getter = new DynamicMethod(String.Empty,\r\n                typeof(Object), new Type[] { type }, type, true);\r\n            GenerateIL(type, path, getter.GetILGenerator());\r\n            return (TypedAspectGetterDelegate)getter.CreateDelegate(typeof(TypedAspectGetterDelegate));\r\n        }\r\n\r\n        /// <summary>\r\n        /// This method generates the actual IL for the method.\r\n        /// </summary>\r\n        /// <param name=\"type\"></param>\r\n        /// <param name=\"path\"></param>\r\n        /// <param name=\"il\"></param>\r\n        private void GenerateIL(Type type, string path, ILGenerator il) {\r\n            // Push our model object onto the stack\r\n            il.Emit(OpCodes.Ldarg_0);\r\n\r\n            // Generate the IL to access each part of the dotted chain\r\n            string[] parts = path.Split('.');\r\n            for (int i = 0; i < parts.Length; i++) {\r\n                type = GeneratePart(il, type, parts[i], (i == parts.Length - 1));\r\n                if (type == null)\r\n                    break;\r\n            }\r\n\r\n            // If the object to be returned is a value type (e.g. int, bool), it\r\n            // must be boxed, since the delegate returns an Object\r\n            if (type != null && type.IsValueType && !typeof(T).IsValueType)\r\n                il.Emit(OpCodes.Box, type);\r\n\r\n            il.Emit(OpCodes.Ret);\r\n        }\r\n\r\n        private Type GeneratePart(ILGenerator il, Type type, string pathPart, bool isLastPart) {\r\n            // TODO: Generate check for null\r\n\r\n            // Find the first member with the given nam that is a field, property, or parameter-less method\r\n            List<MemberInfo> infos = new List<MemberInfo>(type.GetMember(pathPart));\r\n            MemberInfo info = infos.Find(delegate(MemberInfo x) {\r\n                if (x.MemberType == MemberTypes.Field || x.MemberType == MemberTypes.Property)\r\n                    return true;\r\n                if (x.MemberType == MemberTypes.Method)\r\n                    return ((MethodInfo)x).GetParameters().Length == 0;\r\n                else\r\n                    return false;\r\n            });\r\n\r\n            // If we couldn't find anything with that name, pop the current result and return an error\r\n            if (info == null) {\r\n                il.Emit(OpCodes.Pop);\r\n                if (Munger.IgnoreMissingAspects)\r\n                    il.Emit(OpCodes.Ldnull);\r\n                else\r\n                    il.Emit(OpCodes.Ldstr, String.Format(\"'{0}' is not a parameter-less method, property or field of type '{1}'\", pathPart, type.FullName));\r\n                return null;\r\n            }\r\n\r\n            // Generate the correct IL to access the member. We remember the type of object that is going to be returned\r\n            // so that we can do a method lookup on it at the next iteration\r\n            Type resultType = null;\r\n            switch (info.MemberType) {\r\n                case MemberTypes.Method:\r\n                    MethodInfo mi = (MethodInfo)info;\r\n                    if (mi.IsVirtual)\r\n                        il.Emit(OpCodes.Callvirt, mi);\r\n                    else\r\n                        il.Emit(OpCodes.Call, mi);\r\n                    resultType = mi.ReturnType;\r\n                    break;\r\n                case MemberTypes.Property:\r\n                    PropertyInfo pi = (PropertyInfo)info;\r\n                    il.Emit(OpCodes.Call, pi.GetGetMethod());\r\n                    resultType = pi.PropertyType;\r\n                    break;\r\n                case MemberTypes.Field:\r\n                    FieldInfo fi = (FieldInfo)info;\r\n                    il.Emit(OpCodes.Ldfld, fi);\r\n                    resultType = fi.FieldType;\r\n                    break;\r\n            }\r\n\r\n            // If the method returned a value type, and something is going to call a method on that value,\r\n            // we need to load its address onto the stack, rather than the object itself.\r\n            if (resultType.IsValueType && !isLastPart) {\r\n                LocalBuilder lb = il.DeclareLocal(resultType);\r\n                il.Emit(OpCodes.Stloc, lb);\r\n                il.Emit(OpCodes.Ldloca, lb);\r\n            }\r\n\r\n            return resultType;\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/ObjectListView/VirtualObjectListView.cs",
    "content": "/*\r\n * VirtualObjectListView - A virtual listview delays fetching model objects until they are actually displayed.\r\n *\r\n * Author: Phillip Piper\r\n * Date: 27/09/2008 9:15 AM\r\n *\r\n * Change log:\r\n * 2015-06-14   JPP  - Moved handling of CheckBoxes on virtual lists into base class (ObjectListView).\r\n *                     This allows the property to be set correctly, even when set via an upcast reference.\r\n * 2015-03-25   JPP  - Subscribe to change notifications when objects are added\r\n * v2.8\r\n * 2014-09-26   JPP  - Correct an incorrect use of checkStateMap when setting CheckedObjects\r\n *                     and a CheckStateGetter is installed\r\n * v2.6\r\n * 2012-06-13   JPP  - Corrected several bugs related to groups on virtual lists.\r\n *                   - Added EnsureNthGroupVisible() since EnsureGroupVisible() can't work on virtual lists.\r\n * v2.5.1\r\n * 2012-05-04   JPP  - Avoid bug/feature in ListView.VirtalListSize setter that causes flickering\r\n *                     when the size of the list changes.\r\n * 2012-04-24   JPP  - Fixed bug that occurred when adding/removing item while the view was grouped.\r\n * v2.5\r\n * 2011-05-31   JPP  - Setting CheckedObjects is more efficient on large collections\r\n * 2011-04-05   JPP  - CheckedObjects now only returns objects that are currently in the list.\r\n *                     ClearObjects() now resets all check state info.\r\n * 2011-03-31   JPP  - Filtering on grouped virtual lists no longer behaves strangely.\r\n * 2011-03-17   JPP  - Virtual lists can (finally) set CheckBoxes back to false if it has been set to true.\r\n *                     (this is a little hacky and may not work reliably).\r\n *                   - GetNextItem() and GetPreviousItem() now work on grouped virtual lists.\r\n * 2011-03-08   JPP  - BREAKING CHANGE: 'DataSource' was renamed to 'VirtualListDataSource'. This was necessary\r\n *                     to allow FastDataListView which is both a DataListView AND a VirtualListView --\r\n *                     which both used a 'DataSource' property :(\r\n * v2.4\r\n * 2010-04-01   JPP  - Support filtering\r\n * v2.3\r\n * 2009-08-28   JPP  - BIG CHANGE. Virtual lists can now have groups!\r\n *                   - Objects property now uses \"yield return\" -- much more efficient for big lists\r\n * 2009-08-07   JPP  - Use new scheme for formatting rows/cells\r\n * v2.2.1\r\n * 2009-07-24   JPP  - Added specialised version of RefreshSelectedObjects() which works efficiently with virtual lists\r\n *                     (thanks to chriss85 for finding this bug)\r\n * 2009-07-03   JPP  - Standardized code format\r\n * v2.2\r\n * 2009-04-06   JPP  - ClearObjects() now works again\r\n * v2.1\r\n * 2009-02-24   JPP  - Removed redundant OnMouseDown() since checkbox\r\n *                     handling is now handled in the base class\r\n * 2009-01-07   JPP  - Made all public and protected methods virtual \r\n * 2008-12-07   JPP  - Trigger Before/AfterSearching events\r\n * 2008-11-15   JPP  - Fixed some caching issues\r\n * 2008-11-05   JPP  - Rewrote handling of check boxes\r\n * 2008-10-28   JPP  - Handle SetSelectedObjects(null)\r\n * 2008-10-02   JPP  - MAJOR CHANGE: Use IVirtualListDataSource\r\n * 2008-09-27   JPP  - Separated from ObjectListView.cs\r\n * \r\n * Copyright (C) 2006-2014 Phillip Piper\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r\n *\r\n * If you wish to use this code in a closed source application, please contact phillip.piper@gmail.com.\r\n */\r\n\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Diagnostics;\r\nusing System.Drawing;\r\nusing System.Reflection;\r\nusing System.Windows.Forms;\r\nusing System.Runtime.InteropServices;\r\nusing MethodInvoker = System.Windows.Forms.MethodInvoker;\r\n\r\nnamespace BrightIdeasSoftware\r\n{\r\n    /// <summary>\r\n    /// A virtual object list view operates in virtual mode, that is, it only gets model objects for\r\n    /// a row when it is needed. This gives it the ability to handle very large numbers of rows with\r\n    /// minimal resources.\r\n    /// </summary>\r\n    /// <remarks><para>A listview is not a great user interface for a large number of items. But if you've\r\n    /// ever wanted to have a list with 10 million items, go ahead, knock yourself out.</para>\r\n    /// <para>Virtual lists can never iterate their contents. That would defeat the whole purpose.</para>\r\n    /// <para>Animated GIFs should not be used in virtual lists. Animated GIFs require some state\r\n    /// information to be stored for each animation, but virtual lists specifically do not keep any state information.\r\n    /// In any case, you really do not want to keep state information for 10 million animations!</para>\r\n    /// <para>\r\n    /// Although it isn't documented, .NET virtual lists cannot have checkboxes. This class codes around this limitation,\r\n    /// but you must use the functions provided by ObjectListView: CheckedObjects, CheckObject(), UncheckObject() and their friends. \r\n    /// If you use the normal check box properties (CheckedItems or CheckedIndicies), they will throw an exception, since the\r\n    /// list is in virtual mode, and .NET \"knows\" it can't handle checkboxes in virtual mode.\r\n    /// </para>\r\n    /// <para>Due to the limits of the underlying Windows control, virtual lists do not trigger ItemCheck/ItemChecked events. \r\n    /// Use a CheckStatePutter instead.</para>\r\n    /// <para>To enable grouping, you must provide an implmentation of IVirtualGroups interface, via the GroupingStrategy property.</para>\r\n    /// <para>Similarly, to enable filtering on the list, your VirtualListDataSource must also implement the IFilterableDataSource interface.</para>\r\n    /// </remarks>\r\n    public class VirtualObjectListView : ObjectListView\r\n    {\r\n        /// <summary>\r\n        /// Create a VirtualObjectListView\r\n        /// </summary>\r\n        public VirtualObjectListView()\r\n            : base() {\r\n            VirtualMode = true; // Virtual lists have to be virtual -- no prizes for guessing that :)\r\n\r\n            CacheVirtualItems += new CacheVirtualItemsEventHandler(HandleCacheVirtualItems);\r\n            RetrieveVirtualItem += new RetrieveVirtualItemEventHandler(HandleRetrieveVirtualItem);\r\n            SearchForVirtualItem += new SearchForVirtualItemEventHandler(HandleSearchForVirtualItem);\r\n\r\n            // At the moment, we don't need to handle this event. But we'll keep this comment to remind us about it.\r\n            //this.VirtualItemsSelectionRangeChanged += new ListViewVirtualItemsSelectionRangeChangedEventHandler(VirtualObjectListView_VirtualItemsSelectionRangeChanged);\r\n\r\n            VirtualListDataSource = new VirtualListVersion1DataSource(this);\r\n\r\n            // Virtual lists have to manage their own check state, since the normal ListView control \r\n            // doesn't even allow checkboxes on virtual lists\r\n            PersistentCheckBoxes = true;\r\n        }\r\n\r\n        #region Public Properties\r\n\r\n        /// <summary>\r\n        /// Gets whether or not this listview is capabale of showing groups\r\n        /// </summary>\r\n        [Browsable(false)]\r\n        public override bool CanShowGroups {\r\n            get {\r\n                // Virtual lists need Vista and a grouping strategy to show groups\r\n                return (IsVistaOrLater && GroupingStrategy != null);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get or set the collection of model objects that are checked.\r\n        /// When setting this property, any row whose model object isn't\r\n        /// in the given collection will be unchecked. Setting to null is\r\n        /// equivilent to unchecking all.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This property returns a simple collection. Changes made to the returned\r\n        /// collection do NOT affect the list. This is different to the behaviour of\r\n        /// CheckedIndicies collection.\r\n        /// </para>\r\n        /// <para>\r\n        /// When getting CheckedObjects, the performance of this method is O(n) where n is the number of checked objects.\r\n        /// When setting CheckedObjects, the performance of this method is O(n) where n is the number of checked objects plus\r\n        /// the number of objects to be checked.\r\n        /// </para>\r\n        /// <para>\r\n        /// If the ListView is not currently showing CheckBoxes, this property does nothing. It does\r\n        /// not remember any check box settings made.\r\n        /// </para>\r\n        /// <para>\r\n        /// This class optimizes the management of CheckStates so that it will work efficiently even on\r\n        /// large lists of item. However, those optimizations are impossible if you install a CheckStateGetter.\r\n        /// With a CheckStateGetter installed, the performance of this method is O(n) where n is the size \r\n        /// of the list. This could be painfully slow.</para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public override IList CheckedObjects {\r\n            get {\r\n                // If we aren't should checkboxes, then no objects can be checked\r\n                if (!CheckBoxes)\r\n                    return new ArrayList();\r\n\r\n                // If the data source has somehow vanished, we can't do anything\r\n                if (VirtualListDataSource == null)\r\n                    return new ArrayList();\r\n\r\n                // If a custom check state getter is install, we can't use our check state management\r\n                // We have to use the (slower) base version.\r\n                if (CheckStateGetter != null)\r\n                    return base.CheckedObjects;\r\n\r\n                // Collect items that are checked AND that still exist in the list.\r\n                ArrayList objects = new ArrayList();\r\n                foreach (KeyValuePair<Object, CheckState> kvp in CheckStateMap)\r\n                {\r\n                    if (kvp.Value == CheckState.Checked && \r\n                        (!CheckedObjectsMustStillExistInList ||\r\n                         VirtualListDataSource.GetObjectIndex(kvp.Key) >= 0))\r\n                        objects.Add(kvp.Key);\r\n                }\r\n                return objects;\r\n            }\r\n            set {\r\n                if (!CheckBoxes)\r\n                    return;\r\n\r\n                // If a custom check state getter is install, we can't use our check state management\r\n                // We have to use the (slower) base version.\r\n                if (CheckStateGetter != null) {\r\n                    base.CheckedObjects = value;\r\n                    return;\r\n                }\r\n\r\n                Stopwatch sw = Stopwatch.StartNew();\r\n\r\n                // Set up an efficient way of testing for the presence of a particular model\r\n                Hashtable table = new Hashtable(GetItemCount());\r\n                if (value != null) {\r\n                    foreach (object x in value)\r\n                        table[x] = true;\r\n                }\r\n\r\n                BeginUpdate();\r\n\r\n                // Uncheck anything that is no longer checked\r\n                Object[] keys = new Object[CheckStateMap.Count];\r\n                CheckStateMap.Keys.CopyTo(keys, 0);\r\n                foreach (Object key in keys) {\r\n                    if (!table.Contains(key))\r\n                        SetObjectCheckedness(key, CheckState.Unchecked);\r\n                }\r\n\r\n                // Check all the new checked objects\r\n                foreach (Object x in table.Keys)\r\n                    SetObjectCheckedness(x, CheckState.Checked);\r\n\r\n                EndUpdate();\r\n\r\n                Debug.WriteLine(String.Format(\"PERF - Setting virtual CheckedObjects on {2} objects took {0}ms / {1} ticks\", sw.ElapsedMilliseconds, sw.ElapsedTicks, GetItemCount()));\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets whether or not an object will be included in the CheckedObjects\r\n        /// collection, even if it is not present in the control at the moment\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This property is an implementation detail and should not be altered.\r\n        /// </remarks>\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        protected internal bool CheckedObjectsMustStillExistInList\r\n        {\r\n            get { return checkedObjectsMustStillExistInList; }\r\n            set { checkedObjectsMustStillExistInList = value; }\r\n        }\r\n        private bool checkedObjectsMustStillExistInList = true;\r\n\r\n        /// <summary>\r\n        /// Gets the collection of objects that survive any filtering that may be in place.\r\n        /// </summary>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public override IEnumerable FilteredObjects {\r\n            get {\r\n                for (int i = 0; i < GetItemCount(); i++)\r\n                    yield return GetModelObject(i);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Gets or sets the strategy that will be used to create groups\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This must be provided for a virtual list to show groups.\r\n        /// </remarks>\r\n        [Browsable(false),\r\n        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public IVirtualGroups GroupingStrategy {\r\n            get { return groupingStrategy; }\r\n            set { groupingStrategy = value; }\r\n        }\r\n        private IVirtualGroups groupingStrategy;\r\n\r\n        /// <summary>\r\n        /// Gets whether or not the current list is filtering its contents\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// This is only possible if our underlying data source supports filtering.\r\n        /// </remarks>\r\n        public override bool IsFiltering {\r\n            get {\r\n                return base.IsFiltering && (VirtualListDataSource is IFilterableDataSource);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get/set the collection of objects that this list will show\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// The contents of the control will be updated immediately after setting this property.\r\n        /// </para>\r\n        /// <para>Setting this property preserves selection, if possible. Use SetObjects() if\r\n        /// you do not want to preserve the selection. Preserving selection is the slowest part of this\r\n        /// code -- performance is O(n) where n is the number of selected rows.</para>\r\n        /// <para>This method is not thread safe.</para>\r\n        /// <para>The property DOES work on virtual lists, but if you try to iterate through a list \r\n        /// of 10 million objects, it may take some time :)</para>\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public override IEnumerable Objects {\r\n            get {\r\n                IFilterableDataSource filterable = VirtualListDataSource as IFilterableDataSource;\r\n                try {\r\n                    // If we are filtering, we have to temporarily disable filtering so we get\r\n                    // the whole collection\r\n                    if (filterable != null && UseFiltering)\r\n                        filterable.ApplyFilters(null, null);\r\n                    return FilteredObjects;\r\n                } finally {\r\n                    if (filterable != null && UseFiltering)\r\n                        filterable.ApplyFilters(ModelFilter, ListFilter);\r\n                }\r\n            }\r\n            set { base.Objects = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// This delegate is used to fetch a rowObject, given it's index within the list\r\n        /// </summary>\r\n        /// <remarks>Only use this property if you are not using a VirtualListDataSource.</remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual RowGetterDelegate RowGetter {\r\n            get { return ((VirtualListVersion1DataSource)virtualListDataSource).RowGetter; }\r\n            set { ((VirtualListVersion1DataSource)virtualListDataSource).RowGetter = value; }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Should this list show its items in groups?\r\n        /// </summary>\r\n        [Category(\"Appearance\"),\r\n         Description(\"Should the list view show items in groups?\"),\r\n         DefaultValue(true)]\r\n        override public bool ShowGroups {\r\n            get {\r\n                // Pre-Vista, virtual lists cannot show groups\r\n                return IsVistaOrLater && showGroups;\r\n            }\r\n            set {\r\n                showGroups = value;\r\n                if (Created && !value) \r\n                    DisableVirtualGroups();\r\n            }\r\n        }\r\n        private bool showGroups;\r\n\r\n\r\n        /// <summary>\r\n        /// Get/set the data source that is behind this virtual list\r\n        /// </summary>\r\n        /// <remarks>Setting this will cause the list to redraw.</remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public virtual IVirtualListDataSource VirtualListDataSource {\r\n            get {\r\n                return virtualListDataSource;\r\n            }\r\n            set {\r\n                virtualListDataSource = value;\r\n                CustomSorter = delegate(OLVColumn column, SortOrder sortOrder) {\r\n                    ClearCachedInfo();\r\n                    virtualListDataSource.Sort(column, sortOrder);\r\n                };\r\n                BuildList(false);\r\n            }\r\n        }\r\n        private IVirtualListDataSource virtualListDataSource;\r\n\r\n        /// <summary>\r\n        /// Gets or sets the number of rows in this virtual list.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// There is an annoying feature/bug in the .NET ListView class. \r\n        /// When you change the VirtualListSize property, it always scrolls so\r\n        /// that the focused item is the top item. This is annoying since it makes\r\n        /// the virtual list seem to flicker as the control scrolls to show the focused\r\n        /// item and then scrolls back to where ObjectListView wants it to be.\r\n        /// </remarks>\r\n        [Browsable(false),\r\n         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        protected new virtual int VirtualListSize {\r\n            get { return base.VirtualListSize; }\r\n            set {\r\n                if (value == VirtualListSize || value < 0)\r\n                    return;\r\n\r\n                // Get around the 'private' marker on 'virtualListSize' field using reflection\r\n                if (virtualListSizeFieldInfo == null) {\r\n                    virtualListSizeFieldInfo = typeof(ListView).GetField(\"virtualListSize\", BindingFlags.NonPublic | BindingFlags.Instance);\r\n                    Debug.Assert(virtualListSizeFieldInfo != null);\r\n                }\r\n\r\n                // Set the base class private field so that it keeps on working\r\n                virtualListSizeFieldInfo.SetValue(this, value);\r\n\r\n                // Send a raw message to change the virtual list size *without* changing the scroll position\r\n                if (IsHandleCreated && !DesignMode)\r\n                    NativeMethods.SetItemCount(this, value);\r\n            }\r\n        }\r\n        static private FieldInfo virtualListSizeFieldInfo;\r\n\r\n        #endregion\r\n\r\n        #region OLV accessing\r\n\r\n        /// <summary>\r\n        /// Return the number of items in the list\r\n        /// </summary>\r\n        /// <returns>the number of items in the list</returns>\r\n        public override int GetItemCount() {\r\n            return VirtualListSize;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the model object at the given index\r\n        /// </summary>\r\n        /// <param name=\"index\">Index of the model object to be returned</param>\r\n        /// <returns>A model object</returns>\r\n        public override object GetModelObject(int index) {\r\n            if (VirtualListDataSource != null && index >= 0 && index < GetItemCount())\r\n                return VirtualListDataSource.GetNthObject(index);\r\n            else\r\n                return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Find the given model object within the listview and return its index\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The model object to be found</param>\r\n        /// <returns>The index of the object. -1 means the object was not present</returns>\r\n        public override int IndexOf(Object modelObject) {\r\n            if (VirtualListDataSource == null || modelObject == null)\r\n                return -1;\r\n\r\n            return VirtualListDataSource.GetObjectIndex(modelObject);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the OLVListItem that displays the given model object\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">The modelObject whose item is to be found</param>\r\n        /// <returns>The OLVListItem that displays the model, or null</returns>\r\n        /// <remarks>This method has O(n) performance.</remarks>\r\n        public override OLVListItem ModelToItem(object modelObject) {\r\n            if (VirtualListDataSource == null || modelObject == null)\r\n                return null;\r\n\r\n            int index = VirtualListDataSource.GetObjectIndex(modelObject);\r\n            return index >= 0 ? GetItem(index) : null;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Object manipulation\r\n\r\n        /// <summary>\r\n        /// Add the given collection of model objects to this control.\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">A collection of model objects</param>\r\n        /// <remarks>\r\n        /// <para>The added objects will appear in their correct sort position, if sorting\r\n        /// is active. Otherwise, they will appear at the end of the list.</para>\r\n        /// <para>No check is performed to see if any of the objects are already in the ListView.</para>\r\n        /// <para>Null objects are silently ignored.</para>\r\n        /// </remarks>\r\n        public override void AddObjects(ICollection modelObjects) {\r\n            if (VirtualListDataSource == null)\r\n                return;\r\n\r\n            // Give the world a chance to cancel or change the added objects\r\n            ItemsAddingEventArgs args = new ItemsAddingEventArgs(modelObjects);\r\n            OnItemsAdding(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            try\r\n            {\r\n                BeginUpdate();\r\n                VirtualListDataSource.AddObjects(args.ObjectsToAdd);\r\n                BuildList();\r\n                SubscribeNotifications(args.ObjectsToAdd);\r\n            }\r\n            finally\r\n            {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove all items from this list\r\n        /// </summary>\r\n        /// <remark>This method can safely be called from background threads.</remark>\r\n        public override void ClearObjects() {\r\n            if (InvokeRequired)\r\n                Invoke(new MethodInvoker(ClearObjects));\r\n            else {\r\n                CheckStateMap.Clear();\r\n                SetObjects(new ArrayList());\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Scroll the listview so that the given group is at the top.\r\n        /// </summary>\r\n        /// <param name=\"groupIndex\">The index of the group to be revealed</param>\r\n        /// <remarks><para>\r\n        /// If the group is already visible, the list will still be scrolled to move\r\n        /// the group to the top, if that is possible.\r\n        /// </para>\r\n        /// <para>This only works when the list is showing groups (obviously).</para>\r\n        /// </remarks>\r\n        public virtual void EnsureNthGroupVisible(int groupIndex) {\r\n            if (!ShowGroups)\r\n                return;\r\n\r\n            if (groupIndex <= 0 || groupIndex >= OLVGroups.Count) {\r\n                // There is no easy way to scroll back to the beginning of the list\r\n                int delta = 0 - NativeMethods.GetScrollPosition(this, false);\r\n                NativeMethods.Scroll(this, 0, delta);\r\n            } else {\r\n                // Find the display rectangle of the last item in the previous group\r\n                OLVGroup previousGroup = OLVGroups[groupIndex - 1];\r\n                int lastItemInGroup = GroupingStrategy.GetGroupMember(previousGroup, previousGroup.VirtualItemCount - 1);\r\n                Rectangle r = GetItemRect(lastItemInGroup);\r\n\r\n                // Scroll so that the last item of the previous group is just out of sight,\r\n                // which will make the desired group header visible.\r\n                int delta = r.Y + r.Height / 2;\r\n                NativeMethods.Scroll(this, 0, delta);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Inserts the given collection of model objects to this control at hte given location\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">A collection of model objects</param>\r\n        /// <remarks>\r\n        /// <para>The added objects will appear in their correct sort position, if sorting\r\n        /// is active. Otherwise, they will appear at the given position of the list.</para>\r\n        /// <para>No check is performed to see if any of the objects are already in the ListView.</para>\r\n        /// <para>Null objects are silently ignored.</para>\r\n        /// </remarks>\r\n        public override void InsertObjects(int index, ICollection modelObjects)\r\n        {\r\n            if (VirtualListDataSource == null)\r\n                return;\r\n\r\n            // Give the world a chance to cancel or change the added objects\r\n            ItemsAddingEventArgs args = new ItemsAddingEventArgs(index, modelObjects);\r\n            OnItemsAdding(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            try\r\n            {\r\n                BeginUpdate();\r\n                VirtualListDataSource.InsertObjects(index, args.ObjectsToAdd);\r\n                BuildList();\r\n                SubscribeNotifications(args.ObjectsToAdd);\r\n            }\r\n            finally\r\n            {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the rows that are showing the given objects\r\n        /// </summary>\r\n        /// <remarks>This method does not resort the items.</remarks>\r\n        public override void RefreshObjects(IList modelObjects) {\r\n            if (InvokeRequired) {\r\n                Invoke(new MethodInvoker(() => RefreshObjects(modelObjects)));\r\n                return;\r\n            }\r\n\r\n            // Without a data source, we can't do this.\r\n            if (VirtualListDataSource == null)\r\n                return;\r\n\r\n            try {\r\n                BeginUpdate();\r\n                ClearCachedInfo();\r\n                foreach (object modelObject in modelObjects) {\r\n                    int index = VirtualListDataSource.GetObjectIndex(modelObject);\r\n                    if (index >= 0) {\r\n                        VirtualListDataSource.UpdateObject(index, modelObject);\r\n                        RedrawItems(index, index, true);\r\n                    }\r\n                }\r\n            }\r\n            finally {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Update the rows that are selected\r\n        /// </summary>\r\n        /// <remarks>This method does not resort or regroup the view.</remarks>\r\n        public override void RefreshSelectedObjects() {\r\n            foreach (int index in SelectedIndices)\r\n                RedrawItems(index, index, true);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove all of the given objects from the control\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">Collection of objects to be removed</param>\r\n        /// <remarks>\r\n        /// <para>Nulls and model objects that are not in the ListView are silently ignored.</para>\r\n        /// <para>Due to problems in the underlying ListView, if you remove all the objects from\r\n        /// the control using this method and the list scroll vertically when you do so,\r\n        /// then when you subsequenially add more objects to the control,\r\n        /// the vertical scroll bar will become confused and the control will draw one or more\r\n        /// blank lines at the top of the list. </para>\r\n        /// </remarks>\r\n        public override void RemoveObjects(ICollection modelObjects) {\r\n            if (VirtualListDataSource == null)\r\n                return;\r\n\r\n            // Give the world a chance to cancel or change the removed objects\r\n            ItemsRemovingEventArgs args = new ItemsRemovingEventArgs(modelObjects);\r\n            OnItemsRemoving(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            try {\r\n                BeginUpdate();\r\n                VirtualListDataSource.RemoveObjects(args.ObjectsToRemove);\r\n                BuildList();\r\n                UnsubscribeNotifications(args.ObjectsToRemove);\r\n            }\r\n            finally {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Select the row that is displaying the given model object. All other rows are deselected.\r\n        /// </summary>\r\n        /// <param name=\"modelObject\">Model object to select</param>\r\n        /// <param name=\"setFocus\">Should the object be focused as well?</param>\r\n        public override void SelectObject(object modelObject, bool setFocus) {\r\n            // Without a data source, we can't do this.\r\n            if (VirtualListDataSource == null)\r\n                return;\r\n\r\n            // Check that the object is in the list (plus not all data sources can locate objects)\r\n            int index = VirtualListDataSource.GetObjectIndex(modelObject);\r\n            if (index < 0 || index >= VirtualListSize)\r\n                return;\r\n\r\n            // If the given model is already selected, don't do anything else (prevents an flicker)\r\n            if (SelectedIndices.Count == 1 && SelectedIndices[0] == index)\r\n                return;\r\n\r\n            // Finally, select the row\r\n            SelectedIndices.Clear();\r\n            SelectedIndices.Add(index);\r\n            if (setFocus && SelectedItem != null)\r\n                SelectedItem.Focused = true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Select the rows that is displaying any of the given model object. All other rows are deselected.\r\n        /// </summary>\r\n        /// <param name=\"modelObjects\">A collection of model objects</param>\r\n        /// <remarks>This method has O(n) performance where n is the number of model objects passed.\r\n        /// Do not use this to select all the rows in the list -- use SelectAll() for that.</remarks>\r\n        public override void SelectObjects(IList modelObjects) {\r\n            // Without a data source, we can't do this.\r\n            if (VirtualListDataSource == null)\r\n                return;\r\n\r\n            SelectedIndices.Clear();\r\n\r\n            if (modelObjects == null)\r\n                return;\r\n\r\n            foreach (object modelObject in modelObjects) {\r\n                int index = VirtualListDataSource.GetObjectIndex(modelObject);\r\n                if (index >= 0 && index < VirtualListSize)\r\n                    SelectedIndices.Add(index);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Set the collection of objects that this control will show.\r\n        /// </summary>\r\n        /// <param name=\"collection\"></param>\r\n        /// <param name=\"preserveState\">Should the state of the list be preserved as far as is possible.</param>\r\n        public override void SetObjects(IEnumerable collection, bool preserveState) {\r\n            if (InvokeRequired) {\r\n                Invoke((MethodInvoker)delegate { SetObjects(collection, preserveState); });\r\n                return;\r\n            }\r\n\r\n            if (VirtualListDataSource == null)\r\n                return;\r\n\r\n            // Give the world a chance to cancel or change the assigned collection\r\n            ItemsChangingEventArgs args = new ItemsChangingEventArgs(null, collection);\r\n            OnItemsChanging(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            BeginUpdate();\r\n            try {\r\n                VirtualListDataSource.SetObjects(args.NewObjects);\r\n                BuildList();\r\n                UpdateNotificationSubscriptions(args.NewObjects);\r\n            }\r\n            finally {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Check boxes\r\n//\r\n//        /// <summary>\r\n//        /// Check all rows\r\n//        /// </summary>\r\n//        /// <remarks>The performance of this method is O(n) where n is the number of rows in the control.</remarks>\r\n//        public override void CheckAll()\r\n//        {\r\n//            if (!this.CheckBoxes)\r\n//                return;\r\n//\r\n//            Stopwatch sw = Stopwatch.StartNew();\r\n//\r\n//            this.BeginUpdate();\r\n//\r\n//            foreach (Object x in this.Objects)\r\n//                this.SetObjectCheckedness(x, CheckState.Checked);\r\n//\r\n//            this.EndUpdate();\r\n//\r\n//            Debug.WriteLine(String.Format(\"PERF - CheckAll() on {2} objects took {0}ms / {1} ticks\", sw.ElapsedMilliseconds, sw.ElapsedTicks, this.GetItemCount()));\r\n//\r\n//        }\r\n//\r\n//        /// <summary>\r\n//        /// Uncheck all rows\r\n//        /// </summary>\r\n//        /// <remarks>The performance of this method is O(n) where n is the number of rows in the control.</remarks>\r\n//        public override void UncheckAll()\r\n//        {\r\n//            if (!this.CheckBoxes)\r\n//                return;\r\n//\r\n//            Stopwatch sw = Stopwatch.StartNew();\r\n//\r\n//            this.BeginUpdate();\r\n//\r\n//            foreach (Object x in this.Objects)\r\n//                this.SetObjectCheckedness(x, CheckState.Unchecked);\r\n//\r\n//            this.EndUpdate();\r\n//\r\n//            Debug.WriteLine(String.Format(\"PERF - UncheckAll() on {2} objects took {0}ms / {1} ticks\", sw.ElapsedMilliseconds, sw.ElapsedTicks, this.GetItemCount()));\r\n//        }\r\n\r\n        /// <summary>\r\n        /// Get the checkedness of an object from the model. Returning null means the\r\n        /// model does know and the value from the control will be used.\r\n        /// </summary>\r\n        /// <param name=\"modelObject\"></param>\r\n        /// <returns></returns>\r\n        protected override CheckState? GetCheckState(object modelObject)\r\n        {\r\n            if (CheckStateGetter != null)\r\n                return base.GetCheckState(modelObject);\r\n\r\n            CheckState state;\r\n            if (modelObject != null && CheckStateMap.TryGetValue(modelObject, out state))\r\n                return state;\r\n            return CheckState.Unchecked;\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Implementation\r\n\r\n        /// <summary>\r\n        /// Rebuild the list with its current contents.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// Invalidate any cached information when we rebuild the list.\r\n        /// </remarks>\r\n        public override void BuildList(bool shouldPreserveSelection) {\r\n            UpdateVirtualListSize();\r\n            ClearCachedInfo();\r\n            if (ShowGroups)\r\n                BuildGroups();\r\n            else\r\n                Sort();\r\n            Invalidate();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Clear any cached info this list may have been using\r\n        /// </summary>\r\n        public override void ClearCachedInfo() {\r\n            lastRetrieveVirtualItemIndex = -1;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the work of creating groups for this control\r\n        /// </summary>\r\n        /// <param name=\"groups\"></param>\r\n        protected override void CreateGroups(IEnumerable<OLVGroup> groups) {\r\n\r\n            // In a virtual list, we cannot touch the Groups property.\r\n            // It was obviously not written for virtual list and often throws exceptions.\r\n\r\n            NativeMethods.ClearGroups(this);\r\n\r\n            EnableVirtualGroups();\r\n\r\n            foreach (OLVGroup group in groups) {\r\n                Debug.Assert(group.Items.Count == 0, \"Groups in virtual lists cannot set Items. Use VirtualItemCount instead.\");\r\n                Debug.Assert(group.VirtualItemCount > 0, \"VirtualItemCount must be greater than 0.\");\r\n\r\n                group.InsertGroupNewStyle(this);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the plumbing to disable groups on a virtual list\r\n        /// </summary>\r\n        protected void DisableVirtualGroups() {\r\n            NativeMethods.ClearGroups(this);\r\n            //System.Diagnostics.Debug.WriteLine(err);\r\n\r\n            const int LVM_ENABLEGROUPVIEW = 0x1000 + 157;\r\n            IntPtr x = NativeMethods.SendMessage(Handle, LVM_ENABLEGROUPVIEW, 0, 0);\r\n            //System.Diagnostics.Debug.WriteLine(x);\r\n\r\n            const int LVM_SETOWNERDATACALLBACK = 0x10BB;\r\n            IntPtr x2 = NativeMethods.SendMessage(Handle, LVM_SETOWNERDATACALLBACK, 0, 0);\r\n            //System.Diagnostics.Debug.WriteLine(x2);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Do the plumbing to enable groups on a virtual list\r\n        /// </summary>\r\n        protected void EnableVirtualGroups() {\r\n\r\n            // We need to implement the IOwnerDataCallback interface\r\n            if (ownerDataCallbackImpl == null)\r\n                ownerDataCallbackImpl = new OwnerDataCallbackImpl(this);\r\n\r\n            const int LVM_SETOWNERDATACALLBACK = 0x10BB;\r\n            IntPtr ptr = Marshal.GetComInterfaceForObject(ownerDataCallbackImpl, typeof(IOwnerDataCallback));\r\n            IntPtr x = NativeMethods.SendMessage(Handle, LVM_SETOWNERDATACALLBACK, ptr, 0);\r\n            //System.Diagnostics.Debug.WriteLine(x);\r\n            Marshal.Release(ptr);\r\n\r\n            const int LVM_ENABLEGROUPVIEW = 0x1000 + 157;\r\n            x = NativeMethods.SendMessage(Handle, LVM_ENABLEGROUPVIEW, 1, 0);\r\n            //System.Diagnostics.Debug.WriteLine(x);\r\n        }\r\n        private OwnerDataCallbackImpl ownerDataCallbackImpl;\r\n\r\n        /// <summary>\r\n        /// Return the position of the given itemIndex in the list as it currently shown to the user.\r\n        /// If the control is not grouped, the display order is the same as the\r\n        /// sorted list order. But if the list is grouped, the display order is different.\r\n        /// </summary>\r\n        /// <param name=\"itemIndex\"></param>\r\n        /// <returns></returns>\r\n        public override int GetDisplayOrderOfItemIndex(int itemIndex) {\r\n            if (!ShowGroups)\r\n                return itemIndex;\r\n\r\n            int groupIndex = GroupingStrategy.GetGroup(itemIndex);\r\n            int displayIndex = 0;\r\n            for (int i = 0; i < groupIndex - 1; i++)\r\n                displayIndex += OLVGroups[i].VirtualItemCount;\r\n            displayIndex += GroupingStrategy.GetIndexWithinGroup(OLVGroups[groupIndex], itemIndex);\r\n\r\n            return displayIndex;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the last item in the order they are shown to the user.\r\n        /// If the control is not grouped, the display order is the same as the\r\n        /// sorted list order. But if the list is grouped, the display order is different.\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        public override OLVListItem GetLastItemInDisplayOrder() {\r\n            if (!ShowGroups)\r\n                return base.GetLastItemInDisplayOrder();\r\n\r\n            if (OLVGroups.Count > 0) {\r\n                OLVGroup lastGroup = OLVGroups[OLVGroups.Count - 1];\r\n                if (lastGroup.VirtualItemCount > 0)\r\n                    return GetItem(GroupingStrategy.GetGroupMember(lastGroup, lastGroup.VirtualItemCount - 1));\r\n            }\r\n\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the n'th item (0-based) in the order they are shown to the user.\r\n        /// If the control is not grouped, the display order is the same as the\r\n        /// sorted list order. But if the list is grouped, the display order is different.\r\n        /// </summary>\r\n        /// <param name=\"n\"></param>\r\n        /// <returns></returns>\r\n        public override OLVListItem GetNthItemInDisplayOrder(int n) {\r\n            if (!ShowGroups || OLVGroups == null || OLVGroups.Count == 0)\r\n                return GetItem(n);\r\n\r\n            foreach (OLVGroup group in OLVGroups) {\r\n                if (n < group.VirtualItemCount)\r\n                    return GetItem(GroupingStrategy.GetGroupMember(group, n));\r\n\r\n                n -= group.VirtualItemCount;\r\n            }\r\n\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the ListViewItem that appears immediately after the given item.\r\n        /// If the given item is null, the first item in the list will be returned.\r\n        /// Return null if the given item is the last item.\r\n        /// </summary>\r\n        /// <param name=\"itemToFind\">The item that is before the item that is returned, or null</param>\r\n        /// <returns>A OLVListItem</returns>\r\n        public override OLVListItem GetNextItem(OLVListItem itemToFind) {\r\n            if (!ShowGroups) \r\n                return base.GetNextItem(itemToFind);\r\n\r\n            // Sanity\r\n            if (OLVGroups == null || OLVGroups.Count == 0)\r\n                return null;\r\n\r\n            // If the given item is null, return the first member of the first group\r\n            if (itemToFind == null) {\r\n                return GetItem(GroupingStrategy.GetGroupMember(OLVGroups[0], 0));\r\n            }\r\n\r\n            // Find where this item occurs (which group and where in that group)\r\n            int groupIndex = GroupingStrategy.GetGroup(itemToFind.Index);\r\n            int indexWithinGroup = GroupingStrategy.GetIndexWithinGroup(OLVGroups[groupIndex], itemToFind.Index);\r\n\r\n            // If it's not the last member, just return the next member\r\n            if (indexWithinGroup < OLVGroups[groupIndex].VirtualItemCount - 1)\r\n                return GetItem(GroupingStrategy.GetGroupMember(OLVGroups[groupIndex], indexWithinGroup + 1));\r\n            \r\n            // The item is the last member of its group. Return the first member of the next group\r\n            // (unless there isn't a next group)\r\n            if (groupIndex < OLVGroups.Count - 1)\r\n                return GetItem(GroupingStrategy.GetGroupMember(OLVGroups[groupIndex + 1], 0));\r\n\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Return the ListViewItem that appears immediately before the given item.\r\n        /// If the given item is null, the last item in the list will be returned.\r\n        /// Return null if the given item is the first item.\r\n        /// </summary>\r\n        /// <param name=\"itemToFind\">The item that is before the item that is returned</param>\r\n        /// <returns>A ListViewItem</returns>\r\n        public override OLVListItem GetPreviousItem(OLVListItem itemToFind) {\r\n            if (!ShowGroups) \r\n                return base.GetPreviousItem(itemToFind);\r\n\r\n            // Sanity\r\n            if (OLVGroups == null || OLVGroups.Count == 0)\r\n                return null;\r\n\r\n            // If the given items is null, return the last member of the last group\r\n            if (itemToFind == null) {\r\n                OLVGroup lastGroup = OLVGroups[OLVGroups.Count - 1];\r\n                return GetItem(GroupingStrategy.GetGroupMember(lastGroup, lastGroup.VirtualItemCount - 1));\r\n            }\r\n\r\n            // Find where this item occurs (which group and where in that group)\r\n            int groupIndex = GroupingStrategy.GetGroup(itemToFind.Index);\r\n            int indexWithinGroup = GroupingStrategy.GetIndexWithinGroup(OLVGroups[groupIndex], itemToFind.Index);\r\n\r\n            // If it's not the first member of the group, just return the previous member\r\n            if (indexWithinGroup > 0)\r\n                return GetItem(GroupingStrategy.GetGroupMember(OLVGroups[groupIndex], indexWithinGroup - 1));\r\n\r\n            // The item is the first member of its group. Return the last member of the previous group\r\n            // (if there is one)\r\n            if (groupIndex > 0) {\r\n                OLVGroup previousGroup = OLVGroups[groupIndex - 1];\r\n                return GetItem(GroupingStrategy.GetGroupMember(previousGroup, previousGroup.VirtualItemCount - 1));\r\n            }\r\n\r\n            return null;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make a list of groups that should be shown according to the given parameters\r\n        /// </summary>\r\n        /// <param name=\"parms\"></param>\r\n        /// <returns></returns>\r\n        protected override IList<OLVGroup> MakeGroups(GroupingParameters parms) {\r\n            if (GroupingStrategy == null)\r\n                return new List<OLVGroup>();\r\n            else\r\n                return GroupingStrategy.GetGroups(parms);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Create a OLVListItem for given row index\r\n        /// </summary>\r\n        /// <param name=\"itemIndex\">The index of the row that is needed</param>\r\n        /// <returns>An OLVListItem</returns>\r\n        public virtual OLVListItem MakeListViewItem(int itemIndex) {\r\n            OLVListItem olvi = new OLVListItem(GetModelObject(itemIndex));\r\n            FillInValues(olvi, olvi.RowObject);\r\n\r\n            PostProcessOneRow(itemIndex, GetDisplayOrderOfItemIndex(itemIndex), olvi);\r\n\r\n            if (HotRowIndex == itemIndex)\r\n                UpdateHotRow(olvi);\r\n\r\n            return olvi;\r\n        }\r\n\r\n        /// <summary>\r\n        /// On virtual lists, this cannot work.\r\n        /// </summary>\r\n        protected override void PostProcessRows() {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Record the change of checkstate for the given object in the model.\r\n        /// This does not update the UI -- only the model\r\n        /// </summary>\r\n        /// <param name=\"modelObject\"></param>\r\n        /// <param name=\"state\"></param>\r\n        /// <returns>The check state that was recorded and that should be used to update\r\n        /// the control.</returns>\r\n        protected override CheckState PutCheckState(object modelObject, CheckState state) {\r\n            state = base.PutCheckState(modelObject, state);\r\n            CheckStateMap[modelObject] = state;\r\n            return state;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Refresh the given item in the list\r\n        /// </summary>\r\n        /// <param name=\"olvi\">The item to refresh</param>\r\n        public override void RefreshItem(OLVListItem olvi) {\r\n            ClearCachedInfo();\r\n            RedrawItems(olvi.Index, olvi.Index, true);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the size of the list\r\n        /// </summary>\r\n        /// <param name=\"newSize\"></param>\r\n        protected virtual void SetVirtualListSize(int newSize) {\r\n            if (newSize < 0 || VirtualListSize == newSize)\r\n                return;\r\n\r\n            int oldSize = VirtualListSize;\r\n\r\n            ClearCachedInfo();\r\n\r\n            // There is a bug in .NET when a virtual ListView is cleared\r\n            // (i.e. VirtuaListSize set to 0) AND it is scrolled vertically: the scroll position \r\n            // is wrong when the list is next populated. To avoid this, before \r\n            // clearing a virtual list, we make sure the list is scrolled to the top.\r\n            // [6 weeks later] Damn this is a pain! There are cases where this can also throw exceptions!\r\n            try {\r\n                if (newSize == 0 && TopItemIndex > 0)\r\n                    TopItemIndex = 0;\r\n            }\r\n            catch (Exception) {\r\n                // Ignore any failures\r\n            }\r\n\r\n            // In strange cases, this can throw the exceptions too. The best we can do is ignore them :(\r\n            try {\r\n                VirtualListSize = newSize;\r\n            }\r\n            catch (ArgumentOutOfRangeException) {\r\n                // pass\r\n            }\r\n            catch (NullReferenceException) {\r\n                // pass\r\n            }\r\n\r\n            // Tell the world that the size of the list has changed\r\n            OnItemsChanged(new ItemsChangedEventArgs(oldSize, VirtualListSize));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Take ownership of the 'objects' collection. This separates our collection from the source.\r\n        /// </summary>\r\n        /// <remarks>\r\n        /// <para>\r\n        /// This method\r\n        /// separates the 'objects' instance variable from its source, so that any AddObject/RemoveObject\r\n        /// calls will modify our collection and not the original colleciton.\r\n        /// </para>\r\n        /// <para>\r\n        /// VirtualObjectListViews always own their collections, so this is a no-op.\r\n        /// </para>\r\n        /// </remarks>\r\n        protected override void TakeOwnershipOfObjects() {\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the state of the control to reflect changes in filtering\r\n        /// </summary>\r\n        protected override void UpdateFiltering() {\r\n            if (VirtualListDataSource is not IFilterableDataSource filterable)\r\n                return;\r\n\r\n            BeginUpdate();\r\n            try {\r\n                int originalSize = VirtualListSize;\r\n                filterable.ApplyFilters(ModelFilter, ListFilter);\r\n                BuildList();\r\n\r\n                //// If the filtering actually did something, rebuild the groups if they are being shown\r\n                //if (originalSize != this.VirtualListSize && this.ShowGroups)\r\n                //    this.BuildGroups();\r\n            }\r\n            finally {\r\n                EndUpdate();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Change the size of the virtual list so that it matches its data source\r\n        /// </summary>\r\n        public virtual void UpdateVirtualListSize() {\r\n            if (VirtualListDataSource != null)\r\n                SetVirtualListSize(VirtualListDataSource.GetObjectCount());\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Event handlers\r\n\r\n        /// <summary>\r\n        /// Handle the CacheVirtualItems event\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleCacheVirtualItems(object sender, CacheVirtualItemsEventArgs e) {\r\n            if (VirtualListDataSource != null)\r\n                VirtualListDataSource.PrepareCache(e.StartIndex, e.EndIndex);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle a RetrieveVirtualItem\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleRetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e) {\r\n            // .NET 2.0 seems to generate a lot of these events. Before drawing *each* sub-item,\r\n            // this event is triggered 4-8 times for the same index. So we save lots of CPU time\r\n            // by caching the last result.\r\n            //System.Diagnostics.Debug.WriteLine(String.Format(\"HandleRetrieveVirtualItem({0})\", e.ItemIndex));\r\n\r\n            if (lastRetrieveVirtualItemIndex != e.ItemIndex) {\r\n                lastRetrieveVirtualItemIndex = e.ItemIndex;\r\n                lastRetrieveVirtualItem = MakeListViewItem(e.ItemIndex);\r\n            }\r\n            e.Item = lastRetrieveVirtualItem;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Handle the SearchForVirtualList event, which is called when the user types into a virtual list\r\n        /// </summary>\r\n        /// <param name=\"sender\"></param>\r\n        /// <param name=\"e\"></param>\r\n        protected virtual void HandleSearchForVirtualItem(object sender, SearchForVirtualItemEventArgs e) {\r\n            // The event has e.IsPrefixSearch, but as far as I can tell, this is always false (maybe that's different under Vista)\r\n            // So we ignore IsPrefixSearch and IsTextSearch and always to a case insensitve prefix match.\r\n\r\n            // We can't do anything if we don't have a data source\r\n            if (VirtualListDataSource == null)\r\n                return;\r\n\r\n            // Where should we start searching? If the last row is focused, the SearchForVirtualItemEvent starts searching\r\n            // from the next row, which is actually an invalidate index -- so we make sure we never go past the last object.\r\n            int start = Math.Min(e.StartIndex, VirtualListDataSource.GetObjectCount() - 1);\r\n\r\n            // Give the world a chance to fiddle with or completely avoid the searching process\r\n            BeforeSearchingEventArgs args = new BeforeSearchingEventArgs(e.Text, start);\r\n            OnBeforeSearching(args);\r\n            if (args.Canceled)\r\n                return;\r\n\r\n            // Do the search\r\n            int i = FindMatchingRow(args.StringToFind, args.StartSearchFrom, e.Direction);\r\n\r\n            // Tell the world that a search has occurred\r\n            AfterSearchingEventArgs args2 = new AfterSearchingEventArgs(args.StringToFind, i);\r\n            OnAfterSearching(args2);\r\n\r\n            // If we found a match, tell the event\r\n            if (i != -1)\r\n                e.Index = i;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Find the first row in the given range of rows that prefix matches the string value of the given column.\r\n        /// </summary>\r\n        /// <param name=\"text\"></param>\r\n        /// <param name=\"first\"></param>\r\n        /// <param name=\"last\"></param>\r\n        /// <param name=\"column\"></param>\r\n        /// <returns>The index of the matched row, or -1</returns>\r\n        protected override int FindMatchInRange(string text, int first, int last, OLVColumn column) {\r\n            return VirtualListDataSource.SearchText(text, first, last, column);\r\n        }\r\n\r\n        #endregion\r\n\r\n        #region Variable declaractions\r\n\r\n        private OLVListItem lastRetrieveVirtualItem;\r\n        private int lastRetrieveVirtualItemIndex = -1;\r\n\r\n        #endregion\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/OculusHelper/OculusApp.cs",
    "content": "﻿/*\n    Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nnamespace OculusHelper\n{\n    internal class OculusApp\n    {\n        public OculusApp(string canonicalName, string version, bool isCore, string installLocation, string launchFile)\n        {\n            CanonicalName = canonicalName;\n            Version = version;\n            IsCore = isCore;\n            InstallLocation = installLocation;\n            LaunchFile = launchFile;\n        }\n\n        public string CanonicalName { get; }\n        public string Version { get; }\n        public bool IsCore { get; }\n        public string InstallLocation { get; }\n        public string LaunchFile { get; }\n    }\n}"
  },
  {
    "path": "source/OculusHelper/OculusHelper.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\t<PropertyGroup>\n\t\t<OutputType>Exe</OutputType>\n\n\t\t<AssemblyTitle>Utility for discovering and uninstalling games and apps installed through Oculus Store</AssemblyTitle>\n\n\t\t<StartupObject>OculusHelper.Program</StartupObject>\n\t</PropertyGroup>\n\n\t<ItemGroup>\n\t\t<ProjectReference Include=\"..\\KlocTools\\KlocTools.csproj\" />\n\t</ItemGroup>\n\n\t<ItemGroup>\n\t\t<PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.4\" />\n\t\t<PackageReference Include=\"System.ServiceProcess.ServiceController\" Version=\"[8.*,9)\" />\n\t</ItemGroup>\n</Project>"
  },
  {
    "path": "source/OculusHelper/OculusManager.cs",
    "content": "﻿/*\n    Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.ServiceProcess;\nusing System.Threading;\nusing Klocman;\nusing Klocman.Tools;\nusing Microsoft.Win32;\nusing Newtonsoft.Json;\n\nnamespace OculusHelper\n{\n    internal static class OculusManager\n    {\n        private static IEnumerable<string> _oculusLibraryLocations;\n\n        private static IEnumerable<string> OculusLibraryLocations =>\n            _oculusLibraryLocations ?? (_oculusLibraryLocations = FindOculusLibraryLocations());\n\n        private static IEnumerable<string> FindOculusLibraryLocations()\n        {\n            var libPaths = new List<string>();\n\n            // Default library is in install dir and is not listed in the Libraries key.\n            foreach (var softwareKey in new[]\n                {@\"SOFTWARE\\Oculus VR, LLC\\Oculus\", @\"SOFTWARE\\WOW6432Node\\Oculus VR, LLC\\Oculus\"})\n                try\n                {\n                    using (var key = Registry.LocalMachine.OpenSubKey(softwareKey))\n                    {\n                        if (key != null)\n                            if (key.GetValue(\"Base\", null, RegistryValueOptions.None) is string path)\n                                libPaths.Add(path);\n                    }\n                }\n                catch (SystemException ex)\n                {\n                    Console.WriteLine(ex);\n                }\n\n            const string oculusLibPath = @\"Software\\Oculus VR, LLC\\Oculus\\Libraries\";\n\n            // Each user can have different libaries set up\n            foreach (var userName in Registry.Users.GetSubKeyNames())\n                try\n                {\n                    using (var key = Registry.Users.OpenSubKey(Path.Combine(userName, oculusLibPath), false))\n                    {\n                        if (key == null) continue;\n\n                        foreach (var libKeyName in key.GetSubKeyNames())\n                            using (var libKey = key.OpenSubKey(libKeyName))\n                            {\n                                if (libKey != null)\n                                    if (libKey.GetValue(\"Path\", null, RegistryValueOptions.None) is string path)\n                                        libPaths.Add(path);\n                            }\n                    }\n                }\n                catch (SystemException ex)\n                {\n                    Console.WriteLine(ex);\n                }\n\n            return libPaths.Select(x => x.Trim().ToLowerInvariant())\n                .Select(PathTools.ResolveVolumeIdToPath)\n                .Where(Directory.Exists)\n                .Distinct();\n        }\n\n        public static IEnumerable<OculusApp> QueryOculusApps()\n        {\n            var apps = new List<OculusApp>();\n\n            foreach (var lib in OculusLibraryLocations)\n            {\n                var software = Path.Combine(lib, \"Software\");\n                //var support = Path.Combine(lib, \"Support\");\n                var manifests = Path.Combine(lib, \"Manifests\");\n                if (!Directory.Exists(manifests)) continue;\n\n                var jsonFiles = Directory.GetFiles(manifests)\n                    .Where(x => x.EndsWith(\".json\", StringComparison.OrdinalIgnoreCase));\n                foreach (var jsonFile in jsonFiles)\n                {\n                    if (!File.Exists(jsonFile)) continue;\n\n                    try\n                    {\n                        var json = JsonConvert.DeserializeXNode(File.ReadAllText(jsonFile), \"root\")?.Root;\n                        if (json == null) continue;\n\n                        var name = json.Element(\"canonicalName\")?.Value;\n                        if (string.IsNullOrWhiteSpace(name)) continue;\n\n                        var installLoc = Path.Combine(software, name);\n                        if (!Directory.Exists(installLoc)) continue;\n\n                        var launchFile = json.Element(\"launchFile\")?.Value;\n                        var executable = string.IsNullOrWhiteSpace(launchFile)\n                            ? null\n                            : Path.Combine(installLoc, launchFile);\n\n                        apps.Add(new OculusApp(\n                            name,\n                            json.Element(\"version\")?.Value,\n                            \"true\".Equals(json.Element(\"isCore\")?.Value, StringComparison.OrdinalIgnoreCase),\n                            installLoc,\n                            executable));\n                    }\n                    catch (SystemException ex)\n                    {\n                        LogWriter.WriteExceptionToLog(ex);\n                    }\n                }\n            }\n\n            return apps;\n        }\n\n        public static void RemoveApp(string canonicalName)\n        {\n            Console.WriteLine(\"Looking for apps with canonical name: \" + canonicalName);\n\n            var apps = QueryOculusApps()\n                .Where(x => canonicalName.Equals(x.CanonicalName, StringComparison.OrdinalIgnoreCase))\n                .ToList();\n\n            if (apps.Count == 0)\n            {\n                Console.WriteLine(\"Invalid app name or app can't be uninstalled\");\n                throw new Exception($\"{canonicalName} is not a recognized or allowed app name\");\n            }\n\n            foreach (var app in apps)\n                RemoveApp(app);\n        }\n\n        public static void RemoveApp(OculusApp app)\n        {\n            CloseOculusClient();\n\n            Console.WriteLine(\"Removing Oculus app: \" + app.CanonicalName);\n            Debug.Assert(app.CanonicalName.Length > 10);\n\n            foreach (var libraryLocation in OculusLibraryLocations)\n            {\n                // Collect paths first to avoid crashing halfway\n                var dirs = Directory.GetDirectories(libraryLocation,\n                    $\"*{app.CanonicalName}*\", SearchOption.AllDirectories);\n                var files = Directory.GetFiles(libraryLocation,\n                    $\"*{app.CanonicalName}*\", SearchOption.AllDirectories);\n\n                foreach (var path in dirs)\n                {\n                    Console.WriteLine(\"Deleting \" + path);\n                    Directory.Delete(path, true);\n                }\n\n                foreach (var path in files)\n                {\n                    Console.WriteLine(\"Deleting \" + path);\n                    File.Delete(path);\n                }\n            }\n\n            RestartOculusService();\n\n            Console.WriteLine(\"Finished\");\n        }\n\n        /// <summary>\n        /// After removing an app the oculus library service has to be restarted to update the state.\n        /// </summary>\n        private static void RestartOculusService()\n        {\n            try\n            {\n                // Library service can't be restarted by itself, have to do it through OVRService\n                var serviceController = new ServiceController(@\"OVRService\");\n\n                if(serviceController.Status.Equals(ServiceControllerStatus.Stopped)) return;\n\n                if (serviceController.Status.Equals(ServiceControllerStatus.Running) || \n                    serviceController.Status.Equals(ServiceControllerStatus.StartPending))\n                {\n                    Console.WriteLine(\"Stopping Oculus VR Services...\");\n                    serviceController.Stop();\n                }\n                serviceController.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(20));\n                Console.WriteLine(\"Restarting Oculus VR Services...\");\n                serviceController.Start();\n                serviceController.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(20));\n            }\n            catch (SystemException ex)\n            {\n                Console.WriteLine(\"Restarting Oculus VR Service failed - \" + ex.Message);\n            }\n        }\n\n        private static void CloseOculusClient()\n        {\n            var processes = Process.GetProcessesByName(\"OculusClient\");\n\n            if (processes.Length == 0) return;\n\n            Console.WriteLine(\"Closing Oculus Client...\");\n\n            foreach (var process in processes)\n            {\n                try\n                {\n                    if (!process.HasExited)\n                        process.Kill(true);\n                }\n                catch (SystemException ex)\n                {\n                    Console.WriteLine($\"Failed to kill process {process.ProcessName} - {ex.Message}\");\n                    Console.WriteLine(\"Please close the Oculus Client manually to continue.\");\n                }\n            }\n\n            Console.WriteLine(\"Waiting for Oculus Client to close...\");\n\n            while (processes.Any(x=>!x.HasExited))\n            {\n                Thread.Sleep(250);\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/OculusHelper/Program.cs",
    "content": "﻿/*\n    Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.IO;\nusing Klocman;\nusing Microsoft.Win32.Interop;\n\nnamespace OculusHelper\n{\n    internal static class Program\n    {\n        private static int Main(string[] args)\n        {\n            if (args.Length == 0)\n                return (int)ResultWin32.ERROR_BAD_ARGUMENTS;\n\n            HelperTools.SetupEncoding();\n\n            if (args.Length == 1 && string.Equals(args[0], @\"/query\", StringComparison.OrdinalIgnoreCase))\n                try\n                {\n                    var result = OculusManager.QueryOculusApps();\n                    foreach (var app in result)\n                        Console.WriteLine(HelperTools.ObjectToConsoleOutput(app));\n                    return (int)ResultWin32.ERROR_SUCCESS;\n                }\n                catch (IOException ex)\n                {\n                    LogWriter.WriteExceptionToLog(ex);\n                    return (int)HelperTools.ExtractHrefCode(ex);\n                }\n                catch (Exception ex)\n                {\n                    LogWriter.WriteExceptionToLog(ex);\n                    return (int)ResultWin32.ERROR_FUNCTION_FAILED;\n                }\n\n            if (args.Length == 2 && string.Equals(args[0], @\"/uninstall\", StringComparison.OrdinalIgnoreCase))\n                try\n                {\n                    OculusManager.RemoveApp(args[1]);\n                    return (int)ResultWin32.ERROR_SUCCESS;\n                }\n                catch (IOException ex)\n                {\n                    return (int)HelperTools.ExtractHrefCode(ex);\n                }\n                catch (Exception ex)\n                {\n                    LogWriter.WriteExceptionToLog(ex);\n                    return (int)ResultWin32.ERROR_SUCCESS;\n                }\n\n            return (int)ResultWin32.ERROR_BAD_ARGUMENTS;\n        }\n    }\n}"
  },
  {
    "path": "source/PortableSettingsProvider/PortableSettingsProvider.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Specialized;\nusing System.Configuration;\nusing System.IO;\nusing System.Linq;\nusing System.Windows.Forms;\nusing System.Xml;\n\nnamespace PortableSettingsProvider\n{\n    /// <summary>\n    /// License: The Code Project Open License (CPOL) 1.02\n    /// 18 Oct 2007 - CodeChimp - Public VB release\n    /// Mar 26, 2016 - HakanL - Converted project to C#, cleanup\n    /// 2010-2018 - Marcin Szeniak - Bugfixes, cleanup, improvements\n    /// </summary>\n    public class PortableSettingsProvider : SettingsProvider\n    {\n        //XML Root Node name\n        private const string SettingsRootName = \"Settings\";\n        \n        public static string ApplicationNameOverride { get; set; }\n        public override string ApplicationName\n        {\n            get => ApplicationNameOverride ?? Path.GetFileNameWithoutExtension(Application.ExecutablePath);\n            set { }\n        }\n\n        private XmlDocument _settingsXml;\n        private XmlNode _settingsRootNode;\n        private readonly string _localMachineName;\n\n        public PortableSettingsProvider()\n        {\n            var machineName = Environment.MachineName;\n            if (string.IsNullOrEmpty(machineName))\n                machineName = $\"{Environment.UserDomainName}-{Environment.UserName}\";\n            _localMachineName = XmlConvert.EncodeName(machineName);\n        }\n\n        private XmlDocument SettingsXml\n        {\n            get\n            {\n                //If we dont hold an xml document, try opening one.  \n                //If it doesnt exist then create a new one ready.\n                if (_settingsXml == null)\n                {\n                    _settingsXml = new XmlDocument();\n\n                    try\n                    {\n                        _settingsXml.Load(Path.Combine(GetAppSettingsPath(), GetAppSettingsFilename()));\n\n                        if (_settingsXml.SelectSingleNode(SettingsRootName) == null)\n                            throw new Exception(\"Invalid config file\");\n                    }\n                    catch (Exception)\n                    {\n                        //Create new document\n                        var dec = _settingsXml.CreateXmlDeclaration(\"1.0\", \"utf-8\", string.Empty);\n                        _settingsXml.AppendChild(dec);\n\n                        var nodeRoot = _settingsXml.CreateNode(XmlNodeType.Element, SettingsRootName, \"\");\n                        _settingsXml.AppendChild(nodeRoot);\n                    }\n                }\n\n                return _settingsXml;\n            }\n        }\n\n        private XmlNode SettingsRootNode\n        {\n            get\n            {\n                if (_settingsRootNode == null)\n                    _settingsRootNode = SettingsXml.SelectSingleNode(SettingsRootName);\n                return _settingsRootNode;\n            }\n        }\n\n        public override void Initialize(string name, NameValueCollection col)\n        {\n            base.Initialize(ApplicationName, col);\n        }\n        public static string AppSettingsPathOverride { get; set; }\n        public virtual string GetAppSettingsPath()\n        {\n            if (Directory.Exists(AppSettingsPathOverride)) return AppSettingsPathOverride;\n            //Used to determine where to store the settings\n            var fi = new FileInfo(Application.ExecutablePath);\n            return fi.DirectoryName;\n        }\n\n        public virtual string GetAppSettingsFilename()\n        {\n            //Used to determine the filename to store the settings\n            return ApplicationName + \".settings\";\n        }\n\n        public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection propvals)\n        {\n            //Iterate through the settings to be stored\n            //Only dirty settings are included in propvals, and only ones relevant to this provider\n            foreach (SettingsPropertyValue propval in propvals)\n            {\n                SetValue(propval);\n            }\n\n            try\n            {\n                SettingsXml.Save(Path.Combine(GetAppSettingsPath(), GetAppSettingsFilename()));\n            }\n            catch (Exception ex)\n            {\n                Console.WriteLine(\"Failed to save settings - \" + ex);\n            }\n        }\n\n        public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context,\n            SettingsPropertyCollection props)\n        {\n            //Create new collection of values\n            var values = new SettingsPropertyValueCollection();\n\n            //Iterate through the settings to be retrieved\n\n            foreach (SettingsProperty setting in props)\n            {\n                var value = new SettingsPropertyValue(setting);\n                value.IsDirty = false;\n                value.SerializedValue = GetValue(setting);\n                values.Add(value);\n            }\n            return values;\n        }\n\n        private string GetValue(SettingsProperty setting)\n        {\n            try\n            {\n                if (IsRoaming(setting))\n                {\n                    return SettingsXml.SelectSingleNode(SettingsRootName + \"/\" + setting.Name)?.InnerText\n                           ?? GetDefaultValue(setting);\n                }\n\n                return SettingsXml.SelectSingleNode(SettingsRootName + \"/\" + _localMachineName\n                                                    + \"/\" + setting.Name)?.InnerText ?? GetDefaultValue(setting);\n            }\n            catch (Exception)\n            {\n                return GetDefaultValue(setting);\n            }\n        }\n\n        private static string GetDefaultValue(SettingsProperty setting)\n        {\n            return setting.DefaultValue?.ToString() ?? string.Empty;\n        }\n\n        private void SetValue(SettingsPropertyValue propVal)\n        {\n            if (propVal == null)\n                throw new ArgumentNullException(nameof(propVal));\n            if (propVal.SerializedValue == null)\n                throw new ArgumentNullException(nameof(propVal.SerializedValue));\n\n            XmlElement settingNode;\n\n            //Determine if the setting is roaming.\n            //If roaming then the value is stored as an element under the root\n            //Otherwise it is stored under a machine name node \n            try\n            {\n                if (IsRoaming(propVal.Property))\n                {\n                    settingNode = (XmlElement)SettingsXml.SelectSingleNode(\n                        SettingsRootName + \"/\" + propVal.Name);\n                }\n                else\n                {\n                    settingNode = (XmlElement)SettingsXml.SelectSingleNode(\n                        SettingsRootName + \"/\" + _localMachineName + \"/\" + propVal.Name);\n                }\n            }\n            catch (Exception)\n            {\n                settingNode = null;\n            }\n\n            if (settingNode != null)\n            {\n                settingNode.InnerText = propVal.SerializedValue.ToString();\n            }\n            else\n            {\n                if (IsRoaming(propVal.Property))\n                {\n                    CreateRoamingValue(propVal);\n                }\n                else\n                {\n                    CreateLocalValue(propVal);\n                }\n            }\n        }\n\n        /// <summary>\n        /// Its machine specific, store as an element of the machine name node,\n        /// creating a new machine name node if one doesnt exist.\n        /// </summary>\n        private void CreateLocalValue(SettingsPropertyValue propVal)\n        {\n            XmlElement machineNode;\n            try\n            {\n                machineNode = (XmlElement)SettingsXml.SelectSingleNode(\n                    SettingsRootName + \"/\" + _localMachineName);\n            }\n            catch (Exception)\n            {\n                machineNode = SettingsXml.CreateElement(_localMachineName);\n                SettingsRootNode.AppendChild(machineNode);\n            }\n\n            if (machineNode == null)\n            {\n                machineNode = SettingsXml.CreateElement(_localMachineName);\n                SettingsRootNode.AppendChild(machineNode);\n            }\n\n            var settingNode = SettingsXml.CreateElement(propVal.Name);\n            settingNode.InnerText = propVal.SerializedValue.ToString();\n            machineNode.AppendChild(settingNode);\n        }\n\n        /// <summary>\n        /// Store the value as an element of the Settings Root Node\n        /// </summary>\n        private void CreateRoamingValue(SettingsPropertyValue propVal)\n        {\n            var serializedValue = propVal.SerializedValue;\n            if (serializedValue != null)\n            {\n                if (SettingsRootNode == null) throw new ArgumentNullException(nameof(SettingsRootNode));\n                if (SettingsXml == null) throw new ArgumentNullException(nameof(SettingsXml));\n                var settingNode = SettingsXml.CreateElement(propVal.Name);\n                settingNode.InnerText = serializedValue.ToString();\n                SettingsRootNode.AppendChild(settingNode);\n            }\n        }\n\n        /// <summary>\n        /// Determine if the setting is marked as Roaming\n        /// </summary>\n        private bool IsRoaming(SettingsProperty prop)\n        {\n            try\n            {\n                return prop.Attributes.Cast<DictionaryEntry>().Select(x => x.Value)\n                    .OfType<SettingsManageabilityAttribute>()\n                    .Any(x => x.Manageability == SettingsManageability.Roaming);\n            }\n            catch (Exception)\n            {\n                return false;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/PortableSettingsProvider/PortableSettingsProvider.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\t<PropertyGroup>\r\n\t\t<OutputType>Library</OutputType>\r\n\t\t<GenerateAssemblyInfo>false</GenerateAssemblyInfo>\r\n\t</PropertyGroup>\r\n</Project>"
  },
  {
    "path": "source/PortableSettingsProvider/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"PortableSettingsProvider\")]\n[assembly: AssemblyDescription(\"Library that allows saving of .NET settings to a portable file\")]\n[assembly: AssemblyConfiguration(\"Release\")]\n[assembly: AssemblyCompany(\"Marcin Szeniak, HakanL, CodeChimp\")]\n[assembly: AssemblyProduct(\"PortableSettingsProvider\")]\n[assembly: AssemblyCopyright(\"Copyright © 2007\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"68c10a7e-883f-443a-b7a0-41e06ad56602\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.2.1\")]\n"
  },
  {
    "path": "source/PortableSettingsProvider/U3SettingsProvider.cs",
    "content": "﻿using System;\n\nnamespace PortableSettingsProvider\n{\n    public class U3SettingsProvider : PortableSettingsProvider\n    {\n        private const string U3APPDATAPATH = \"U3_APP_DATA_PATH\";\n\n        public override string GetAppSettingsPath()\n        {\n            // Get the environment variable set by the U3 application for a pointer to its data\n            try\n            {\n                return Environment.GetEnvironmentVariable(U3APPDATAPATH);\n            }\n            catch (Exception)\n            {\n                // Not running in a U3 environment, just return the application path\n\n                return base.GetAppSettingsPath();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/ScriptHelper/Program.cs",
    "content": "﻿/*\n    Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Klocman;\nusing Microsoft.Win32.Interop;\n\nnamespace ScriptHelper\n{\n    internal static class Program\n    {\n        private static QueryType _queryType;\n        private static string _appId;\n\n        [STAThread]\n        private static int Main(string[] args)\n        {\n            HelperTools.SetupEncoding();\n\n            try\n            {\n                ProcessCommandlineArguments(args);\n\n                switch (_queryType)\n                {\n                    case QueryType.Uninstall:\n                        Console.WriteLine(\"Uninstalling \" + _appId);\n                        var tweakEntry = Tweaks.GetEntry(_appId);\n                        if (tweakEntry == null) throw new ArgumentException(\"Could not find a tweak with this name to uninstall\");\n                        tweakEntry.OnUninstall(true);\n                        break;\n                    case QueryType.List:\n                        foreach (var result in Tweaks.GetConsoleOutput())\n                        {\n                            var converted = result.Select(x => new KeyValuePair<string, object>(x.Key, x.Value)).ToList();\n                            Console.WriteLine(HelperTools.KeyValueListToConsoleOutput(converted));\n                        }\n                        break;\n                    default:\n                        Console.WriteLine(\"Accepted commands:\\nlist\\nuninstall <id>\");\n                        break;\n                }\n            }\n            catch (OperationCanceledException)\n            {\n                return (int)ResultWin32.ERROR_CANCELLED;\n            }\n            catch (FormatException ex)\n            {\n                LogWriter.WriteExceptionToLog(ex);\n                return (int)ResultWin32.ERROR_BAD_ARGUMENTS;\n            }\n            catch (Exception ex)\n            {\n                LogWriter.WriteExceptionToLog(ex);\n                return (int)ResultWin32.ERROR_UNEXP_NET_ERR;\n            }\n            return (int)ResultWin32.ERROR_SUCCESS;\n        }\n\n        private static void ProcessCommandlineArguments(IEnumerable<string> args)\n        {\n            foreach (var arg in args)\n            {\n                switch (arg.ToLowerInvariant())\n                {\n                    case @\"u\":\n                    case @\"uninstall\":\n                        if (_queryType != QueryType.None) throw new FormatException(@\"Multiple commands specified\");\n                        _queryType = QueryType.Uninstall;\n                        break;\n\n                    case @\"l\":\n                    case @\"list\":\n                        if (_queryType != QueryType.None) throw new FormatException(@\"Multiple commands specified\");\n                        _queryType = QueryType.List;\n                        break;\n\n                    default:\n                        if (_appId != null) throw new FormatException(@\"Too many parameters\");\n                        _appId = arg;\n                        break;\n                }\n            }\n\n            if (_queryType == QueryType.None)\n                throw new FormatException(@\"No commands specified\");\n            if (_queryType == QueryType.Uninstall && _appId == null)\n                throw new FormatException(@\"Missing ID parameter for what to uninstall\");\n        }\n\n        private enum QueryType\n        {\n            None,\n            Uninstall,\n            List,\n        }\n    }\n}"
  },
  {
    "path": "source/ScriptHelper/Properties/launchSettings.json",
    "content": "{\n  \"profiles\": {\n    \"ScriptHelper\": {\n      \"commandName\": \"Project\",\n      \"commandLineArgs\": \"list\"\n    },\n    \"newProfile1\": {\n      \"commandName\": \"Project\",\n      \"commandLineArgs\": \"uninstall Tweak-Showing3DObjectsUnderThisPC\"\n    }\n  }\n}"
  },
  {
    "path": "source/ScriptHelper/ScriptHelper.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\t<PropertyGroup>\n\t\t<OutputType>Exe</OutputType>\n\n\t\t<AssemblyTitle>Provides various registry tweaks and scripts to BCU</AssemblyTitle>\n\n\t\t<StartupObject>ScriptHelper.Program</StartupObject>\n\t</PropertyGroup>\n\n\t<ItemGroup>\n\t\t<ProjectReference Include=\"..\\KlocTools\\KlocTools.csproj\" />\n\t</ItemGroup>\n</Project>"
  },
  {
    "path": "source/ScriptHelper/Tweaks.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Klocman;\nusing Klocman.Extensions;\nusing Microsoft.Win32;\n\nnamespace ScriptHelper\n{\n    /*  Some scripts are based on https://github.com/W4RH4WK/Debloat-Windows-10/\n     * \n     * ## Thanks To\n     * \n     * - [10se1ucgo](https://github.com/10se1ucgo)\n     * - [Plumebit](https://github.com/Plumebit)\n     * - [aramboi](https://github.com/aramboi)\n     * - [maci0](https://github.com/maci0)\n     * - [narutards](https://github.com/narutards)\n     * - [tumpio](https://github.com/tumpio)\n     * \n     * ## License\n     * \n     * \"THE BEER-WARE LICENSE\" (Revision 42):\n     * \n     * As long as you retain this notice you can do whatever you want with this\n     * stuff. If we meet some day, and you think this stuff is worth it, you can\n     * buy us a beer in return.\n     * \n     * This project is distributed in the hope that it will be useful, but WITHOUT\n     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n     * FITNESS FOR A PARTICULAR PURPOSE.\n     */\n    internal static class Tweaks\n    {\n        static Tweaks()\n        {\n            _tweaks = new List<TweakEntry>\n            {\n                new()\n                {\n                    DisplayName = \"Easy Access Keyboard Shortcuts\",\n                    Publisher = \"Microsoft Corporation\",\n                    SystemIcon = \"Shield\",\n                    OnUninstall = _ =>\n                    {\n                        Registry.CurrentUser.OpenSubKey(@\"Control Panel\\Accessibility\\StickyKeys\")?.SetValue(\"Flags\", \"506\", RegistryValueKind.String);\n                        Registry.CurrentUser.OpenSubKey(@\"Control Panel\\Accessibility\\Keyboard Response\")?.SetValue(\"Flags\", \"122\", RegistryValueKind.String);\n                        Registry.CurrentUser.OpenSubKey(@\"Control Panel\\Accessibility\\ToggleKeys\")?.SetValue(\"Flags\", \"58\", RegistryValueKind.String);\n                    },\n                    IsPresent = () => Registry.CurrentUser.OpenSubKey(@\"Control Panel\\Accessibility\\StickyKeys\")?.GetValue(\"Flags\")?.ToString() != \"506\" ||\n                                      Registry.CurrentUser.OpenSubKey(@\"Control Panel\\Accessibility\\Keyboard Response\")?.GetValue(\"Flags\")?.ToString() != \"122\" ||\n                                      Registry.CurrentUser.OpenSubKey(@\"Control Panel\\Accessibility\\ToggleKeys\")?.GetValue(\"Flags\")?.ToString() != \"58\"\n                },\n                new()\n                {\n                    DisplayName = \"Subscribed content (Auto-install suggested apps)\",\n                    Publisher = \"Microsoft Corporation\",\n                    SystemIcon = \"Shield\",\n                    OnUninstall = _ =>\n                    {\n                        Console.WriteLine(@\"Disabling automatic downloading and installing of subscribed content\");\n                        var key = Registry.CurrentUser.OpenSubKey(@\"Software\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager\");\n                        if (key != null)\n                        {\n                            key.SetValue(\"FeatureManagementEnabled\", 0, RegistryValueKind.DWord);\n                            key.SetValue(\"OemPreInstalledAppsEnabled\", 0, RegistryValueKind.DWord);\n                            key.SetValue(\"PreInstalledAppsEnabled\", 0, RegistryValueKind.DWord);\n                            key.SetValue(\"SilentInstalledAppsEnabled\", 0, RegistryValueKind.DWord);\n                            key.SetValue(\"ContentDeliveryAllowed\", 0, RegistryValueKind.DWord);\n                            key.SetValue(\"PreInstalledAppsEverEnabled\", 0, RegistryValueKind.DWord);\n                            key.SetValue(\"SubscribedContentEnabled\", 0, RegistryValueKind.DWord);\n                            key.SetValue(\"SubscribedContent-338388Enabled\", 0, RegistryValueKind.DWord);\n                            key.SetValue(\"SubscribedContent-338389Enabled\", 0, RegistryValueKind.DWord);\n                            key.SetValue(\"SubscribedContent-314559Enabled\", 0, RegistryValueKind.DWord);\n                            key.SetValue(\"SubscribedContent-338387Enabled\", 0, RegistryValueKind.DWord);\n                            key.SetValue(\"SubscribedContent-338393Enabled\", 0, RegistryValueKind.DWord);\n                            key.SetValue(\"SystemPaneSuggestionsEnabled\", 0, RegistryValueKind.DWord);\n                        }\n\n                        Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Policies\\Microsoft\\WindowsStore\")?.SetValue(\"AutoDownload\", 2, RegistryValueKind.DWord);\n                        Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent\")\n                            ?.SetValue(\"DisableWindowsConsumerFeatures\", 1, RegistryValueKind.DWord);\n                    },\n                    IsPresent = () =>\n                    {\n                        // If ContentDeliveryManager doesn't exist it's likely not supported by the OS\n                        // If SubscribedContentEnabled value doesn't exist assume it's turned on. It's disabled if set to 0\n                        var key = Registry.CurrentUser.OpenSubKey(@\"Software\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager\");\n                        return key != null && key.GetValue(\"SubscribedContentEnabled\", 1)?.ToString() != \"0\";\n                    }\n                },\n                new()\n                {\n                    DisplayName = \"Decreased Wallpaper quality (high compression)\",\n                    Publisher = \"Microsoft Corporation\",\n                    SystemIcon = \"Shield\",\n                    OnUninstall = _ => { Registry.CurrentUser.OpenSubKey(@\"Control Panel\\Desktop\")?.SetValue(\"JPEGImportQuality\", 100, RegistryValueKind.DWord); },\n                    IsPresent = () =>\n                    {\n                        var key = Registry.CurrentUser.OpenSubKey(@\"Control Panel\\Desktop\");\n                        // ReSharper disable once PossibleNullReferenceException\n                        return key != null && (int)key.GetValue(\"JPEGImportQuality\", 0) < 100;\n                    }\n                },\n                new()\n                {\n                    DisplayName = \"Mouse Acceleration\",\n                    Publisher = \"Microsoft Corporation\",\n                    SystemIcon = \"Shield\",\n                    OnUninstall = _ =>\n                    {\n                        var key = Registry.CurrentUser.OpenSubKey(@\"Control Panel\\Mouse\");\n                        if (key != null)\n                        {\n                            Console.WriteLine(@\"Disabling mouse acceleration\");\n                            key.SetValue(\"MouseSensitivity\", \"10\", RegistryValueKind.String);\n                            key.SetValue(\"MouseSpeed\", \"0\", RegistryValueKind.String);\n                            key.SetValue(\"MouseThreshold1\", \"0\", RegistryValueKind.String);\n                            key.SetValue(\"MouseThreshold2\", \"0\", RegistryValueKind.String);\n\n                            // Curves depend on display dpi and hz. They can be generated with MarkC's mouse acceleration fix\n                            // They are only active with mouse acceleration turned on, so no reason to mess with them\n                            //key.SetValue(\"SmoothMouseXCurve\", new byte[]{0x00, 0x00, 0x00,\n                            //    0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xCC, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,\n                            //    0x80, 0x99, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x26, 0x00, 0x00,\n                            //    0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00}, RegistryValueKind.Binary);\n                            //key.SetValue(\"SmoothMouseYCurve\", new byte[]{0x00, 0x00, 0x00,\n                            //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,\n                            //    0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00,\n                            //    0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00}, RegistryValueKind.Binary);\n                        }\n                    },\n                    IsPresent = () => Registry.CurrentUser.OpenSubKey(@\"Control Panel\\Mouse\")?.GetValue(\"MouseSpeed\", \"0\")?.ToString() == \"1\"\n                },\n                new()\n                {\n                    DisplayName = \"Showing Desktop under This PC\",\n                    Publisher = \"Microsoft Corporation\",\n                    SystemIcon = \"Shield\",\n                    OnUninstall = _ =>\n                    {\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}\", false);\n                    },\n                    IsPresent = () => Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}\") != null\n                },\n                new()\n                {\n                    DisplayName = \"Showing Documents under This PC\",\n                    Publisher = \"Microsoft Corporation\",\n                    SystemIcon = \"Shield\",\n                    OnUninstall = _ =>\n                    {\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{A8CDFF1C-4878-43be-B5FD-F8091C1C60D0}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{d3162b92-9365-467a-956b-92703aca08af}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{A8CDFF1C-4878-43be-B5FD-F8091C1C60D0}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{d3162b92-9365-467a-956b-92703aca08af}\", false);\n                    },\n                    IsPresent = () => Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{A8CDFF1C-4878-43be-B5FD-F8091C1C60D0}\") != null\n                },\n                new()\n                {\n                    DisplayName = \"Showing Downloads under This PC\",\n                    Publisher = \"Microsoft Corporation\",\n                    SystemIcon = \"Shield\",\n                    OnUninstall = _ =>\n                    {\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{374DE290-123F-4565-9164-39C4925E467B}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{088e3905-0323-4b02-9826-5d99428e115f}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{374DE290-123F-4565-9164-39C4925E467B}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{088e3905-0323-4b02-9826-5d99428e115f}\", false);\n                    },\n                    IsPresent = () => Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{374DE290-123F-4565-9164-39C4925E467B}\") != null\n                },\n                new()\n                {\n                    DisplayName = \"Showing Music under This PC\",\n                    Publisher = \"Microsoft Corporation\",\n                    SystemIcon = \"Shield\",\n                    OnUninstall = _ =>\n                    {\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{1CF1260C-4DD0-4ebb-811F-33C572699FDE}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{3dfdf296-dbec-4fb4-81d1-6a3438bcf4de}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{1CF1260C-4DD0-4ebb-811F-33C572699FDE}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{3dfdf296-dbec-4fb4-81d1-6a3438bcf4de}\", false);\n                    },\n                    IsPresent = () => Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{1CF1260C-4DD0-4ebb-811F-33C572699FDE}\") != null\n                },\n                new()\n                {\n                    DisplayName = \"Showing Pictures under This PC\",\n                    Publisher = \"Microsoft Corporation\",\n                    SystemIcon = \"Shield\",\n                    OnUninstall = _ =>\n                    {\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{3ADD1653-EB32-4cb0-BBD7-DFA0ABB5ACCA}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{24ad3ad4-a569-4530-98e1-ab02f9417aa8}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{3ADD1653-EB32-4cb0-BBD7-DFA0ABB5ACCA}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{24ad3ad4-a569-4530-98e1-ab02f9417aa8}\", false);\n                    },\n                    IsPresent = () => Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{3ADD1653-EB32-4cb0-BBD7-DFA0ABB5ACCA}\") != null\n                },\n                new()\n                {\n                    DisplayName = \"Showing Videos under This PC\",\n                    Publisher = \"Microsoft Corporation\",\n                    SystemIcon = \"Shield\",\n                    OnUninstall = _ =>\n                    {\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{A0953C92-50DC-43bf-BE83-3742FED03C9C}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{A0953C92-50DC-43bf-BE83-3742FED03C9C}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a}\", false);\n                    },\n                    IsPresent = () => Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{A0953C92-50DC-43bf-BE83-3742FED03C9C}\") != null\n                },\n                new()\n                {\n                    DisplayName = \"Showing 3D Objects under This PC\",\n                    Publisher = \"Microsoft Corporation\",\n                    SystemIcon = \"Shield\",\n                    OnUninstall = _ =>\n                    {\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}\", false);\n                        Registry.LocalMachine.DeleteSubKey(@\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}\", false);\n                    },\n                    IsPresent = () => Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}\") != null\n                },\n                /*new TweakEntry todo check if this still works and convert into a c# script\n                {\n                    DisplayName = \"Microsoft OneDrive\",\n                    Publisher = \"Microsoft Corporation\",\n                    SystemIcon = \"Shield\",\n                    OnUninstall = _ =>\n                    {\n                        //# This script will remove and disable OneDrive integration.\n                        // \n                        // Write-Output \"Kill OneDrive process\"\n                        // taskkill.exe /F /IM \"OneDrive.exe\"\n                        // taskkill.exe /F /IM \"explorer.exe\"\n                        // \n                        // Write-Output \"Remove OneDrive\"\n                        // if (Test-Path \"$env:systemroot\\System32\\OneDriveSetup.exe\") {\n                        //     & \"$env:systemroot\\System32\\OneDriveSetup.exe\" /uninstall\n                        // }\n                        // if (Test-Path \"$env:systemroot\\SysWOW64\\OneDriveSetup.exe\") {\n                        //     & \"$env:systemroot\\SysWOW64\\OneDriveSetup.exe\" /uninstall\n                        // }\n                        // \n                        // Write-Output \"Removing OneDrive leftovers\"\n                        // Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:localappdata\\Microsoft\\OneDrive\"\n                        // Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:programdata\\Microsoft OneDrive\"\n                        // Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:systemdrive\\OneDriveTemp\"\n                        // # check if directory is empty before removing:\n                        // If ((Get-ChildItem \"$env:userprofile\\OneDrive\" -Recurse | Measure-Object).Count -eq 0) {\n                        //     Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:userprofile\\OneDrive\"\n                        // }\n                        // \n                        // Write-Output \"Disable OneDrive via Group Policies\"\n                        // force-mkdir \"HKLM:\\SOFTWARE\\Wow6432Node\\Policies\\Microsoft\\Windows\\OneDrive\"\n                        // Set-ItemProperty \"HKLM:\\SOFTWARE\\Wow6432Node\\Policies\\Microsoft\\Windows\\OneDrive\" \"DisableFileSyncNGSC\" 1\n                        // \n                        // Write-Output \"Remove Onedrive from explorer sidebar\"\n                        // New-PSDrive -PSProvider \"Registry\" -Root \"HKEY_CLASSES_ROOT\" -Name \"HKCR\"\n                        // mkdir -Force \"HKCR:\\CLSID\\{018D5C66-4533-4307-9B53-224DE2ED1FE6}\"\n                        // Set-ItemProperty \"HKCR:\\CLSID\\{018D5C66-4533-4307-9B53-224DE2ED1FE6}\" \"System.IsPinnedToNameSpaceTree\" 0\n                        // mkdir -Force \"HKCR:\\Wow6432Node\\CLSID\\{018D5C66-4533-4307-9B53-224DE2ED1FE6}\"\n                        // Set-ItemProperty \"HKCR:\\Wow6432Node\\CLSID\\{018D5C66-4533-4307-9B53-224DE2ED1FE6}\" \"System.IsPinnedToNameSpaceTree\" 0\n                        // Remove-PSDrive \"HKCR\"\n                        // \n                        // # Thank you Matthew Israelsson\n                        // Write-Output \"Removing run hook for new users\"\n                        // reg load \"hku\\Default\" \"C:\\Users\\Default\\NTUSER.DAT\"\n                        // reg delete \"HKEY_USERS\\Default\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"OneDriveSetup\" /f\n                        // reg unload \"hku\\Default\"\n                        // \n                        // Write-Output \"Removing startmenu entry\"\n                        // Remove-Item -Force -ErrorAction SilentlyContinue \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\OneDrive.lnk\"\n                        // \n                        // Write-Output \"Removing scheduled task\"\n                        // Get-ScheduledTask -TaskPath '\\' -TaskName 'OneDrive*' -ea SilentlyContinue | Unregister-ScheduledTask -Confirm:$false\n                        // \n                        // Write-Output \"Restarting explorer\"\n                        // Start-Process \"explorer.exe\"\n                        // \n                        // Write-Output \"Waiting for explorer to complete loading\"\n                        // Start-Sleep 10\n                        // \n                        // Write-Output \"Removing additional OneDrive leftovers\"\n                        // foreach ($item in (Get-ChildItem \"$env:WinDir\\WinSxS\\*onedrive*\")) {\n                        //     Takeown-Folder $item.FullName\n                        //     Remove-Item -Recurse -Force $item.FullName\n                        // }\n                    },\n                    IsPresent = () =>\n                    {\n                        var key = Registry.ClassesRoot.OpenSubKey(@\"CLSID\\{018D5C66-4533-4307-9B53-224DE2ED1FE6}\");\n                        if (key != null && (int)key.GetValue(\"System.IsPinnedToNameSpaceTree\", 0) > 0) return true;\n\n                        key = Registry.ClassesRoot.OpenSubKey(@\"Wow6432Node\\CLSID\\{018D5C66-4533-4307-9B53-224DE2ED1FE6}\");\n                        return (key != null && (int)key.GetValue(\"System.IsPinnedToNameSpaceTree\", 0) > 0);\n                    }\n                }*/\n            };\n        }\n\n        internal record TweakEntry\n        {\n            public string DisplayName { get; init; }\n            public string RatingId => \"Tweak-\" + DisplayName.ToPascalCase().RemoveSpecialCharacters();\n            public string Publisher { get; init; }\n            public string SystemIcon { get; init; }\n\n            public Action<bool> OnUninstall { get; init; }\n            public Func<bool> IsPresent { get; init; }\n        }\n\n        private static readonly List<TweakEntry> _tweaks;\n\n        public static TweakEntry GetEntry(string ratingId) => _tweaks.FirstOrDefault(x => x.RatingId == ratingId);\n\n        public static IEnumerable<Dictionary<string, string>> GetConsoleOutput()\n        {\n            var fileLoc = Path.Combine(Path.GetDirectoryName(typeof(Tweaks).Assembly.Location) ?? throw new InvalidOperationException(\"null Location\"), \"ScriptHelper.exe\");\n\n            foreach (var tweakEntry in _tweaks)\n            {\n                Dictionary<string, string> dic = null;\n                try\n                {\n                    if (tweakEntry.IsPresent())\n                    {\n                        dic = new Dictionary<string, string>();\n                        dic[\"DisplayName\"] = tweakEntry.DisplayName;\n                        dic[\"Publisher\"] = tweakEntry.Publisher;\n                        var ratingId = tweakEntry.RatingId;\n                        dic[\"RatingId\"] = ratingId;\n                        var uninsStr = $\"\\\"{fileLoc}\\\" uninstall {ratingId}\";\n                        dic[\"UninstallString\"] = uninsStr;\n                        dic[\"QuietUninstallString\"] = uninsStr;\n                    }\n                }\n                catch (Exception ex)\n                {\n                    LogWriter.WriteExceptionToLog(ex);\n                    //Console.WriteLine(ex);\n                    continue;\n                }\n                if (dic != null) yield return dic;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/SimpleTreeMap/Element.cs",
    "content": "using System.Drawing;\r\n\r\nnamespace SimpleTreeMap\r\n{\r\n    public class Element<T>\r\n    {\r\n        public T Object { get; set; }\r\n\r\n        public double Value { get; set; }\r\n\r\n        public Color Color { get; set; }\r\n        public string Text { get; set; }\r\n    }\r\n}"
  },
  {
    "path": "source/SimpleTreeMap/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General Information about an assembly is controlled through the following \r\n// set of attributes. Change these attribute values to modify the information\r\n// associated with an assembly.\r\n[assembly: AssemblyTitle(\"SimpleTreeMap\")]\r\n[assembly: AssemblyDescription(\"\")]\r\n[assembly: AssemblyConfiguration(\"\")]\r\n[assembly: AssemblyCompany(\"\")]\r\n[assembly: AssemblyProduct(\"SimpleTreeMap\")]\r\n[assembly: AssemblyCopyright(\"Copyright ©  2017\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// Setting ComVisible to false makes the types in this assembly not visible \r\n// to COM components.  If you need to access a type in this assembly from \r\n// COM, set the ComVisible attribute to true on that type.\r\n[assembly: ComVisible(false)]\r\n\r\n// The following GUID is for the ID of the typelib if this project is exposed to COM\r\n[assembly: Guid(\"52fcbdb1-48d8-448d-b8ca-07f10ab3ca25\")]\r\n\r\n// Version information for an assembly consists of the following four values:\r\n//\r\n//      Major Version\r\n//      Minor Version \r\n//      Build Number\r\n//      Revision\r\n//\r\n// You can specify all the values or you can default the Build and Revision Numbers \r\n// by using the '*' as shown below:\r\n// [assembly: AssemblyVersion(\"1.0.*\")]\r\n[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\r\n"
  },
  {
    "path": "source/SimpleTreeMap/SimpleTreeMap.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\t<PropertyGroup>\r\n\t\t<OutputType>Library</OutputType>\r\n\t\t<GenerateAssemblyInfo>false</GenerateAssemblyInfo>\r\n\t</PropertyGroup>\r\n\r\n\t<ItemGroup>\r\n\t\t<ProjectReference Include=\"..\\ObjectListView\\ObjectListView.csproj\" />\r\n\t</ItemGroup>\r\n</Project>"
  },
  {
    "path": "source/SimpleTreeMap/Slice.cs",
    "content": "using System.Collections.Generic;\r\nusing System.Linq;\r\n\r\nnamespace SimpleTreeMap\r\n{\r\n    public class Slice<T>\r\n    {\r\n        public ICollection<Element<T>> Elements { get; set; }\r\n\r\n        public double Size { get; set; }\r\n\r\n        public ICollection<Slice<T>> SubSlices { get; set; }\r\n        \r\n        public string ToElementNames()\r\n        {\r\n            return string.Join(\"\\n\", Elements.Select(x => x.Text).ToArray());\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/SimpleTreeMap/SliceMaker.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\n\r\nnamespace SimpleTreeMap\r\n{\r\n    /// <summary>\r\n    /// Based on https://pascallaurin42.blogspot.com/2013/12/implementing-treemap-in-c.html\r\n    /// </summary>\r\n    internal static class SliceMaker\r\n    {\r\n        public static SliceResult<T> GetElementsForSlice<T>(ICollection<Element<T>> elements, double sliceWidth)\r\n        {\r\n            var elementsInSlice = new List<Element<T>>();\r\n            var remainingElements = new List<Element<T>>();\r\n            var current = 0d;\r\n            var total = elements.Sum(x => x.Value);\r\n\r\n            foreach (var element in elements)\r\n            {\r\n                if (current > sliceWidth)\r\n                    remainingElements.Add(element);\r\n                else\r\n                {\r\n                    elementsInSlice.Add(element);\r\n                    current += element.Value/total;\r\n                }\r\n            }\r\n\r\n            return new SliceResult<T>\r\n            {\r\n                Elements = elementsInSlice,\r\n                ElementsSize = current,\r\n                RemainingElements = remainingElements\r\n            };\r\n        }\r\n\r\n        public static IEnumerable<SliceRectangle<T>> GetRectangles<T>(Slice<T> slice, int width, int height)\r\n        {\r\n            if (slice == null)\r\n                yield break;\r\n\r\n            var area = new SliceRectangle<T>\r\n            {Slice = slice, Width = width, Height = height};\r\n\r\n            // Handle single-item lists\r\n            if(slice.SubSlices == null && slice.Elements.Count == 1)\r\n            {\r\n                var sliceRectangle = new SliceRectangle<T>\r\n                {\r\n                    X = 0,\r\n                    Y = 0,\r\n                    Height = height,\r\n                    Width = width,\r\n                    Slice = slice\r\n                };\r\n                yield return sliceRectangle;\r\n                yield break;\r\n            }\r\n\r\n            foreach (var rect in GetRectangles(area))\r\n            {\r\n                // Make sure no rectangle go outside the original area\r\n                if (rect.X + rect.Width > area.Width) rect.Width = area.Width - rect.X;\r\n                if (rect.Y + rect.Height > area.Height) rect.Height = area.Height - rect.Y;\r\n\r\n                yield return rect;\r\n            }\r\n        }\r\n\r\n        public static IEnumerable<SliceRectangle<T>> GetRectangles<T>(SliceRectangle<T> sliceRectangle)\r\n        {\r\n            var isHorizontalSplit = sliceRectangle.Width >= sliceRectangle.Height;\r\n            var currentPos = 0;\r\n\r\n            if (sliceRectangle.Slice?.SubSlices == null) yield break;\r\n\r\n            foreach (var subSlice in sliceRectangle.Slice.SubSlices)\r\n            {\r\n                var subRect = new SliceRectangle<T> {Slice = subSlice};\r\n                int rectSize;\r\n\r\n                if (isHorizontalSplit)\r\n                {\r\n                    rectSize = (int) Math.Round(sliceRectangle.Width*subSlice.Size);\r\n                    subRect.X = sliceRectangle.X + currentPos;\r\n                    subRect.Y = sliceRectangle.Y;\r\n                    subRect.Width = rectSize;\r\n                    subRect.Height = sliceRectangle.Height;\r\n                }\r\n                else\r\n                {\r\n                    rectSize = (int) Math.Round(sliceRectangle.Height*subSlice.Size);\r\n                    subRect.X = sliceRectangle.X;\r\n                    subRect.Y = sliceRectangle.Y + currentPos;\r\n                    subRect.Width = sliceRectangle.Width;\r\n                    subRect.Height = rectSize;\r\n                }\r\n\r\n                currentPos += rectSize;\r\n\r\n                if (subSlice.Elements.Count > 1)\r\n                {\r\n                    foreach (var sr in GetRectangles(subRect))\r\n                        yield return sr;\r\n                }\r\n                else if (subSlice.Elements.Count == 1)\r\n                    yield return subRect;\r\n            }\r\n        }\r\n\r\n        public static Slice<T> GetSlice<T>(ICollection<Element<T>> elements, double totalSize,\r\n            double sliceWidth)\r\n        {\r\n            if (!elements.Any()) return null;\r\n            if (elements.Count == 1)\r\n                return new Slice<T> {Elements = elements, Size = totalSize};\r\n\r\n            var sliceResult = GetElementsForSlice(elements, sliceWidth);\r\n\r\n            return new Slice<T>\r\n            {\r\n                Elements = elements,\r\n                Size = totalSize,\r\n                SubSlices = new[]\r\n                {\r\n                    GetSlice(sliceResult.Elements, sliceResult.ElementsSize, sliceWidth),\r\n                    GetSlice(sliceResult.RemainingElements, 1 - sliceResult.ElementsSize,\r\n                        sliceWidth)\r\n                }\r\n            };\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/SimpleTreeMap/SliceRectangle.cs",
    "content": "using System.Drawing;\r\n\r\nnamespace SimpleTreeMap\r\n{\r\n    public class SliceRectangle<T>\r\n    {\r\n        public int Height { get; set; }\r\n\r\n        public Slice<T> Slice { get; set; }\r\n\r\n        public int Width { get; set; }\r\n\r\n        public int X { get; set; }\r\n\r\n        public int Y { get; set; }\r\n        public Rectangle PaintRect { get; set; }\r\n\r\n        public bool Contains(Point p)\r\n        {\r\n            return p.X >= X && p.X <= X + Width && p.Y >= Y && p.Y <= Y + Height;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/SimpleTreeMap/SliceResult.cs",
    "content": "using System.Collections.Generic;\r\n\r\nnamespace SimpleTreeMap\r\n{\r\n    public class SliceResult<T>\r\n    {\r\n        public ICollection<Element<T>> Elements { get; set; }\r\n\r\n        public double ElementsSize { get; set; }\r\n\r\n        public ICollection<Element<T>> RemainingElements { get; set; }\r\n    }\r\n}"
  },
  {
    "path": "source/SimpleTreeMap/TreeMap.Designer.cs",
    "content": "﻿namespace SimpleTreeMap\r\n{\r\n    partial class TreeMap\r\n    {\r\n        /// <summary> \r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary> \r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Component Designer generated code\r\n\r\n        /// <summary> \r\n        /// Required method for Designer support - do not modify \r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            this.components = new System.ComponentModel.Container();\r\n            this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);\r\n            this.SuspendLayout();\r\n            // \r\n            // toolTip1\r\n            // \r\n            this.toolTip1.AutomaticDelay = 0;\r\n            this.toolTip1.ShowAlways = true;\r\n            this.toolTip1.UseAnimation = false;\r\n            this.toolTip1.UseFading = false;\r\n            // \r\n            // TreeMap\r\n            // \r\n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            this.Name = \"TreeMap\";\r\n            this.Size = new System.Drawing.Size(364, 136);\r\n            this.ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.ToolTip toolTip1;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/SimpleTreeMap/TreeMap.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Drawing;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\n\r\nnamespace SimpleTreeMap\r\n{\r\n    public partial class TreeMap : UserControl\r\n    {\r\n        public class SliceEventArgs : EventArgs\r\n        {\r\n            public ICollection<object> Objects { get; }\r\n\r\n            public SliceRectangle<object> Rectangle { get; }\r\n\r\n            public SliceEventArgs(SliceRectangle<object> rectangle)\r\n                : this(rectangle, rectangle.Slice.Elements.Select(x => x.Object).ToList())\r\n            {\r\n            }\r\n\r\n            public SliceEventArgs(SliceRectangle<object> rectangle, ICollection<object> o)\r\n            {\r\n                Rectangle = rectangle;\r\n                Objects = o;\r\n            }\r\n        }\r\n\r\n        public class SliceClickedEventArgs : SliceEventArgs\r\n        {\r\n            public bool AddToSelection { get; }\r\n\r\n            public SliceClickedEventArgs(SliceRectangle<object> rectangle, bool addToSelection)\r\n                : base(rectangle)\r\n            {\r\n                AddToSelection = addToSelection;\r\n            }\r\n\r\n            public SliceClickedEventArgs(SliceRectangle<object> rectangle, ICollection<object> o, bool addToSelection)\r\n                : base(rectangle, o)\r\n            {\r\n                AddToSelection = addToSelection;\r\n            }\r\n        }\r\n\r\n        public event EventHandler<SliceClickedEventArgs> SliceClicked;\r\n        public event EventHandler<SliceEventArgs> SliceHovered;\r\n        public event EventHandler<SliceClickedEventArgs> SliceRightClicked;\r\n\r\n        private const double MinSliceRatio = 0.35;\r\n        private Slice<object> _currentSlice;\r\n        private List<SliceRectangle<object>> _rectangles;\r\n        private HashSet<object> _selectedObjects;\r\n        private SliceRectangle<object> _currentHoveredRectangle;\r\n        private static readonly SolidBrush SelectedRectBrush = new(Color.DodgerBlue);\r\n        readonly Dictionary<Color, Brush> _brushCache = new();\r\n\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        [ReadOnly(true)]\r\n        public Func<object, Color> ObjectColorGetter { get; set; }\r\n\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        [ReadOnly(true)]\r\n        public Func<object, string> ObjectNameGetter { get; set; }\r\n\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        [ReadOnly(true)]\r\n        public Func<object, double> ObjectValueGetter { get; set; }\r\n\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public bool ShowToolTip { get; set; }\r\n\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]\r\n        public bool UseLogValueScaling { get; set; }\r\n\r\n        public TreeMap()\r\n        {\r\n            InitializeComponent();\r\n\r\n            SetStyle(ControlStyles.ResizeRedraw, true);\r\n            SetStyle(ControlStyles.DoubleBuffer, true);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Calculate area to be drawn for this rectangle.\r\n        /// Make sure to leave a 1px border around the map and between other rectangles.\r\n        /// </summary>\r\n        private void CalculatePaintRect(SliceRectangle<object> r)\r\n        {\r\n            r.PaintRect = new Rectangle(r.X == 0 ? 1 : r.X, r.Y == 0 ? 1 : r.Y, r.Width - (r.X == 0 ? 2 : 1), r.Height - (r.Y == 0 ? 2 : 1));\r\n\r\n            r.PaintRect.Offset(ClientRectangle.Location);\r\n\r\n            // Avoid unnecessary drawing\r\n            if (r.PaintRect.Height < 2 || r.PaintRect.Width < 2)\r\n                r.PaintRect = Rectangle.Empty;\r\n        }\r\n\r\n        private SliceRectangle<object> GetRectangleUnderMouse()\r\n        {\r\n            if (_rectangles == null) return null;\r\n            var mousePos = PointToClient(MousePosition);\r\n            var hoveredItem = _rectangles.FirstOrDefault(x => x.Contains(mousePos));\r\n            return hoveredItem;\r\n        }\r\n\r\n        protected override void OnEnter(EventArgs e)\r\n        {\r\n            base.OnEnter(e);\r\n\r\n            if (ShowToolTip) toolTip1.Hide(this);\r\n        }\r\n\r\n        protected override void OnLeave(EventArgs e)\r\n        {\r\n            base.OnLeave(e);\r\n\r\n            if (ShowToolTip) toolTip1.Hide(this);\r\n        }\r\n\r\n        protected override void OnLostFocus(EventArgs e)\r\n        {\r\n            base.OnLostFocus(e);\r\n\r\n            if (ShowToolTip) toolTip1.Hide(this);\r\n        }\r\n\r\n        protected override void OnMouseClick(MouseEventArgs e)\r\n        {\r\n            base.OnMouseClick(e);\r\n\r\n            var r = GetRectangleUnderMouse();\r\n\r\n            if (r != null)\r\n            {\r\n                switch (e.Button)\r\n                {\r\n                    case MouseButtons.Left:\r\n                        OnSliceClicked(new SliceClickedEventArgs(r, (ModifierKeys & Keys.Control) != 0));\r\n                        break;\r\n                    case MouseButtons.Right:\r\n                        OnSliceRightClicked(new SliceClickedEventArgs(r, (ModifierKeys & Keys.Control) != 0));\r\n                        break;\r\n                }\r\n            }\r\n        }\r\n\r\n        protected override void OnMouseHover(EventArgs e)\r\n        {\r\n            base.OnMouseHover(e);\r\n\r\n            OnSliceHovered();\r\n        }\r\n\r\n        protected override void OnMouseMove(MouseEventArgs e)\r\n        {\r\n            base.OnMouseMove(e);\r\n\r\n            OnSliceHovered();\r\n        }\r\n\r\n        protected override void OnPaint(PaintEventArgs e)\r\n        {\r\n            base.OnPaint(e);\r\n\r\n            // todo draw whole thing based on input, input is set by populate\r\n\r\n            //var font = new Font(\"Arial\", 8);\r\n            var gfx = e.Graphics;\r\n\r\n            gfx.FillRectangle(new SolidBrush(Color.Black), ClientRectangle);\r\n\r\n            if (_rectangles == null)\r\n            {\r\n                if (DesignMode)\r\n                    PopulateWithDemoData();\r\n                return;\r\n            }\r\n\r\n            foreach (var r in _rectangles)\r\n            {\r\n                if (r.PaintRect.IsEmpty)\r\n                    continue;\r\n\r\n                if (_selectedObjects != null && r.Slice.Elements.Any(x => _selectedObjects.Contains(x.Object)))\r\n                    gfx.FillRectangle(SelectedRectBrush, r.PaintRect);\r\n                else\r\n                    gfx.FillRectangle(_brushCache[r.Slice.Elements.First().Color], r.PaintRect);\r\n\r\n                //gfx.DrawString(r.Slice.Elements.First().Object.ToString(), font,\r\n                //    new SolidBrush(Control.DefaultForeColor), r.X, r.Y);\r\n            }\r\n        }\r\n\r\n        protected override void OnResize(EventArgs e)\r\n        {\r\n            base.OnResize(e);\r\n\r\n            if (_currentSlice != null)\r\n                UpdateRectangles();\r\n        }\r\n\r\n        protected virtual void OnSliceClicked(SliceClickedEventArgs e)\r\n        {\r\n            SliceClicked?.Invoke(this, e);\r\n        }\r\n\r\n        protected virtual void OnSliceHovered()\r\n        {\r\n            if (Disposing || IsDisposed) return;\r\n\r\n            var hoveredItem = GetRectangleUnderMouse();\r\n\r\n            if (ShowToolTip)\r\n            {\r\n                if (hoveredItem == null)\r\n                    toolTip1.Hide(this);\r\n                else if (!toolTip1.Active || _currentHoveredRectangle != hoveredItem)\r\n                    toolTip1.Show(hoveredItem.Slice.ToElementNames(), this, new Point(0, Height + 2));\r\n            }\r\n\r\n            if (_currentHoveredRectangle != hoveredItem && hoveredItem != null)\r\n                SliceHovered?.Invoke(this, new SliceEventArgs(hoveredItem));\r\n\r\n            _currentHoveredRectangle = hoveredItem;\r\n        }\r\n\r\n        private void OnSliceRightClicked(SliceClickedEventArgs e)\r\n        {\r\n            SliceRightClicked?.Invoke(this, e);\r\n        }\r\n\r\n        public void Populate(IEnumerable<object> objects)\r\n        {\r\n            if (Disposing || IsDisposed) return;\r\n\r\n            if (ObjectValueGetter == null)\r\n                throw new InvalidOperationException(nameof(ObjectValueGetter) + \" can't be null\");\r\n            if (ObjectNameGetter == null)\r\n                throw new InvalidOperationException(nameof(ObjectNameGetter) + \" can't be null\");\r\n\r\n            var elements = objects.Select(x =>\r\n            {\r\n                var element = new Element<object>\r\n                {\r\n                    Object = x,\r\n                    Text = ObjectNameGetter(x),\r\n                    Value = ObjectValueGetter(x)\r\n                };\r\n\r\n                if (ObjectColorGetter != null)\r\n                {\r\n                    element.Color = ObjectColorGetter.Invoke(x);\r\n                    if (element.Color.IsEmpty)\r\n                        element.Color = BackColor;\r\n                }\r\n                else\r\n                {\r\n                    element.Color = BackColor;\r\n                }\r\n\r\n                return element;\r\n            }).Where(x => x.Value > 0.0001).OrderByDescending(x => x.Value).ToList();\r\n\r\n            if (UseLogValueScaling)\r\n                ScaleValuesLog(elements);\r\n\r\n            _currentSlice = SliceMaker.GetSlice(elements, 1, MinSliceRatio);\r\n\r\n            foreach (var c in elements.Select(x => x.Color).Distinct())\r\n                _brushCache[c] = new SolidBrush(c);\r\n\r\n            UpdateRectangles();\r\n\r\n            Refresh();\r\n        }\r\n\r\n        private void PopulateWithDemoData()\r\n        {\r\n            ObjectNameGetter = o => o.ToString();\r\n            ObjectValueGetter = o => (int)o;\r\n            Populate(new[] { 10, 9, 8, 7, 6, 5, 3, 3, 3, 1 }.Cast<object>());\r\n        }\r\n\r\n        private void ScaleValuesLog(ICollection<Element<object>> elements)\r\n        {\r\n            var max = elements.Max(x => x.Value);\r\n\r\n            foreach (var element in elements)\r\n            {\r\n                element.Value = (Math.Log10(element.Value / max + 0.3174) + 0.5) * 1.6;\r\n            }\r\n        }\r\n\r\n        public void SetSelectedObjects(IEnumerable<object> objects)\r\n        {\r\n            _selectedObjects = new HashSet<object>(objects);\r\n            Refresh();\r\n        }\r\n\r\n        private void UpdateRectangles()\r\n        {\r\n            if (Disposing || IsDisposed) return;\r\n\r\n            _rectangles = SliceMaker.GetRectangles(_currentSlice, ClientSize.Width, ClientSize.Height).ToList();\r\n            foreach (var r in _rectangles)\r\n                CalculatePaintRect(r);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/SimpleTreeMap/TreeMap.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <metadata name=\"toolTip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>21, 18</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/SimpleTreeMapTests/Form1.Designer.cs",
    "content": "﻿namespace SimpleTreeMapTests\r\n{\r\n    partial class Form1\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            this.treeMap1 = new SimpleTreeMap.TreeMap();\r\n            this.SuspendLayout();\r\n            // \r\n            // treeMap1\r\n            // \r\n            this.treeMap1.Dock = System.Windows.Forms.DockStyle.Fill;\r\n            this.treeMap1.Location = new System.Drawing.Point(33, 33);\r\n            this.treeMap1.Name = \"treeMap1\";\r\n            this.treeMap1.Size = new System.Drawing.Size(403, 239);\r\n            this.treeMap1.TabIndex = 1;\r\n            // \r\n            // Form1\r\n            // \r\n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            this.ClientSize = new System.Drawing.Size(469, 305);\r\n            this.Controls.Add(this.treeMap1);\r\n            this.Name = \"Form1\";\r\n            this.Padding = new System.Windows.Forms.Padding(33);\r\n            this.Text = \"Form1\";\r\n            this.ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n        private SimpleTreeMap.TreeMap treeMap1;\r\n    }\r\n}\r\n\r\n"
  },
  {
    "path": "source/SimpleTreeMapTests/Form1.cs",
    "content": "﻿using System.Linq;\r\nusing System.Windows.Forms;\r\n\r\nnamespace SimpleTreeMapTests\r\n{\r\n    public partial class Form1 : Form\r\n    {\r\n        public Form1()\r\n        {\r\n            InitializeComponent();\r\n            \r\n            treeMap1.ObjectNameGetter = o => o.ToString();\r\n            treeMap1.ObjectValueGetter = o => (int)o;\r\n            treeMap1.Populate(new [] {10,9,8,7,6,5,3,3,3,1}.Cast<object>());\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/SimpleTreeMapTests/Form1.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n</root>"
  },
  {
    "path": "source/SimpleTreeMapTests/Program.cs",
    "content": "﻿using System;\r\nusing System.Windows.Forms;\r\n\r\nnamespace SimpleTreeMapTests\r\n{\r\n    static class Program\r\n    {\r\n        /// <summary>\r\n        /// The main entry point for the application.\r\n        /// </summary>\r\n        [STAThread]\r\n        static void Main()\r\n        {\r\n            Application.EnableVisualStyles();\r\n            Application.SetCompatibleTextRenderingDefault(false);\r\n            Application.Run(new Form1());\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/SimpleTreeMapTests/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General Information about an assembly is controlled through the following \r\n// set of attributes. Change these attribute values to modify the information\r\n// associated with an assembly.\r\n[assembly: AssemblyTitle(\"SimpleTreeMapTests\")]\r\n[assembly: AssemblyDescription(\"\")]\r\n[assembly: AssemblyConfiguration(\"\")]\r\n[assembly: AssemblyCompany(\"\")]\r\n[assembly: AssemblyProduct(\"SimpleTreeMapTests\")]\r\n[assembly: AssemblyCopyright(\"Copyright ©  2017\")]\r\n[assembly: AssemblyTrademark(\"\")]\r\n[assembly: AssemblyCulture(\"\")]\r\n\r\n// Setting ComVisible to false makes the types in this assembly not visible \r\n// to COM components.  If you need to access a type in this assembly from \r\n// COM, set the ComVisible attribute to true on that type.\r\n[assembly: ComVisible(false)]\r\n\r\n// The following GUID is for the ID of the typelib if this project is exposed to COM\r\n[assembly: Guid(\"3f3d249f-885b-4af5-b760-3900d077d66b\")]\r\n\r\n// Version information for an assembly consists of the following four values:\r\n//\r\n//      Major Version\r\n//      Minor Version \r\n//      Build Number\r\n//      Revision\r\n//\r\n// You can specify all the values or you can default the Build and Revision Numbers \r\n// by using the '*' as shown below:\r\n// [assembly: AssemblyVersion(\"1.0.*\")]\r\n[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\r\n"
  },
  {
    "path": "source/SimpleTreeMapTests/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace SimpleTreeMapTests.Properties\r\n{\r\n\r\n\r\n    /// <summary>\r\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\r\n    /// </summary>\r\n    // This class was auto-generated by the StronglyTypedResourceBuilder\r\n    // class via a tool like ResGen or Visual Studio.\r\n    // To add or remove a member, edit your .ResX file then rerun ResGen\r\n    // with the /str option, or rebuild your VS project.\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"4.0.0.0\")]\r\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    internal class Resources\r\n    {\r\n\r\n        private static global::System.Resources.ResourceManager resourceMan;\r\n\r\n        private static global::System.Globalization.CultureInfo resourceCulture;\r\n\r\n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\r\n        internal Resources()\r\n        {\r\n        }\r\n\r\n        /// <summary>\r\n        ///   Returns the cached ResourceManager instance used by this class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Resources.ResourceManager ResourceManager\r\n        {\r\n            get\r\n            {\r\n                if ((resourceMan == null))\r\n                {\r\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"SimpleTreeMapTests.Properties.Resources\", typeof(Resources).Assembly);\r\n                    resourceMan = temp;\r\n                }\r\n                return resourceMan;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///   Overrides the current thread's CurrentUICulture property for all\r\n        ///   resource lookups using this strongly typed resource class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Globalization.CultureInfo Culture\r\n        {\r\n            get\r\n            {\r\n                return resourceCulture;\r\n            }\r\n            set\r\n            {\r\n                resourceCulture = value;\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/SimpleTreeMapTests/Properties/Settings.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace SimpleTreeMapTests.Properties\r\n{\r\n\r\n\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator\", \"11.0.0.0\")]\r\n    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase\r\n    {\r\n\r\n        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));\r\n\r\n        public static Settings Default\r\n        {\r\n            get\r\n            {\r\n                return defaultInstance;\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/SimpleTreeMapTests/Properties/Settings.settings",
    "content": "﻿<?xml version='1.0' encoding='utf-8'?>\r\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\" CurrentProfile=\"(Default)\">\r\n  <Profiles>\r\n    <Profile Name=\"(Default)\" />\r\n  </Profiles>\r\n  <Settings />\r\n</SettingsFile>\r\n"
  },
  {
    "path": "source/SimpleTreeMapTests/SimpleTreeMapTestApp.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>WinExe</OutputType>\n    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>\n\t\t<OutputPath>bin</OutputPath>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"..\\SimpleTreeMap\\SimpleTreeMap.csproj\" />\n  </ItemGroup>\n</Project>"
  },
  {
    "path": "source/SteamHelper/Misc.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\n\r\nnamespace SteamHelper\r\n{\r\n    public static class Misc\r\n    {\r\n        /// <summary>\r\n        ///     Attempts to separate filename (or filename with path) from the supplied arguments.\r\n        ///     KeyValuePair(filename, arguments)\r\n        /// </summary>\r\n        public static KeyValuePair<string, string> SeparateArgsFromCommand(string fullCommand)\r\n        {\r\n            if (fullCommand == null)\r\n                throw new ArgumentNullException(nameof(fullCommand));\r\n\r\n            // Get rid of whitespaces\r\n            fullCommand = fullCommand.Trim();\r\n\r\n            if (string.IsNullOrEmpty(fullCommand))\r\n                throw new ArgumentException();\r\n\r\n            var firstDot = fullCommand.IndexOf('.');\r\n            if (firstDot < 0)\r\n                throw new FormatException();\r\n\r\n            // Check if the path is contained inside of quotation marks.\r\n            // Assume that the quotation mark must come before the dot. Otherwise, it is likely that the arguments use quotations.\r\n            var pathEnd = fullCommand.IndexOf('\"', 0, firstDot);\r\n\r\n            if (pathEnd >= 0)\r\n            {\r\n                // If yes, find the closing quotation mark and set its index as path end\r\n                pathEnd = fullCommand.IndexOf('\"', pathEnd + 1);\r\n\r\n                if (pathEnd < 0)\r\n                {\r\n                    // If no ending quote has been found, explode gracefully.\r\n                    throw new FormatException();\r\n                }\r\n                pathEnd += 1; //?\r\n            }\r\n\r\n            // If quotation marks were missing, check for any invalid characters after last dot\r\n            // in case of eg: c:\\test.dir thing\\filename.exe?0 used to get icons\r\n            if (pathEnd < 0)\r\n            {\r\n                var endIndex = 0;\r\n                while (true)\r\n                {\r\n                    var dot = fullCommand.IndexOf('.', endIndex);\r\n                    if (dot < 0)\r\n                        break;\r\n\r\n                    var space = fullCommand.IndexOfAny(\" ,:;?-=\", dot);\r\n                    var dash = fullCommand.IndexOfAny(\"\\\\/\", dot);\r\n                    if (space < 0)\r\n                        break;\r\n\r\n                    if (space < dash || dash < 0)\r\n                    {\r\n                        pathEnd = space;\r\n                        break;\r\n                    }\r\n                    endIndex = dash;\r\n                }\r\n            }\r\n\r\n            // Begin extracting filename and arguments\r\n            string filename;\r\n            var args = string.Empty;\r\n\r\n            if (pathEnd < 0 || pathEnd >= fullCommand.Length)\r\n            {\r\n                // Looks like there were no arguments, assume whole command is a filename\r\n                filename = fullCommand;\r\n            }\r\n            else\r\n            {\r\n                // pathEnd shows the end of the filename (and start of the arguments)\r\n                filename = fullCommand.Substring(0, pathEnd).TrimEnd();\r\n                args = fullCommand.Substring(pathEnd).TrimStart();\r\n            }\r\n\r\n            filename = filename.Trim('\"'); // Get rid of the quotation marks\r\n            return new KeyValuePair<string, string>(filename, args);\r\n        }\r\n\r\n        public static int IndexOfAny(this string str, IEnumerable<char> chars, int startIndex)\r\n        {\r\n            foreach (var c in chars)\r\n            {\r\n                var i = str.IndexOf(c, startIndex);\r\n                if (i >= 0)\r\n                    return i;\r\n            }\r\n            return -1;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/SteamHelper/Program.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing System.Text;\r\nusing Klocman;\r\nusing Microsoft.Win32.Interop;\r\n\r\nnamespace SteamHelper\r\n{\r\n    internal static class Program\r\n    {\r\n        private static QueryType _queryType = QueryType.None;\r\n        private static bool _silentSwitch, _infoSwitch;\r\n        private static int _appId;\r\n\r\n        /// <summary>\r\n        /// Return codes:\r\n        /// 0 - The operation completed successfully.\r\n        /// 59 - An unexpected network error occurred.\r\n        /// 1223 - The operation was canceled by the user.\r\n        /// \r\n        /// Commands\r\n        /// u[ninstall] [/s[ilent]] AppID     - Uninstall a Steam App\r\n        /// i[nfo] AppID                      - Show information about a Steam App\r\n        /// l[ist]                            - List all detected Steam App ID's\r\n        /// l[ist] /i[nfo]                    - List information about all detected Steam Apps\r\n        /// steam                             - Show Steam install location\r\n        /// </summary>                        \r\n        private static int Main(string[] args)\r\n        {\r\n            try\r\n            {\r\n                try { Console.OutputEncoding = Encoding.Unicode; }\r\n                catch (IOException) { /*Old .NET v4 without support for unicode output*/ }\r\n\r\n                ProcessCommandlineArguments(args);\r\n\r\n                switch (_queryType)\r\n                {\r\n                    case QueryType.GetInfo:\r\n                        var appInfo = SteamApplicationInfo.FromAppId(_appId);\r\n                        foreach (var property in typeof(SteamApplicationInfo).GetProperties(BindingFlags.Public | BindingFlags.Instance))\r\n                            Console.WriteLine(\"{0} - {1}\", property.Name, property.GetValue(appInfo, null) ?? \"N/A\");\r\n                        break;\r\n\r\n                    case QueryType.Uninstall:\r\n                        SteamUninstaller.UninstallSteamApp(SteamApplicationInfo.FromAppId(_appId), _silentSwitch);\r\n                        break;\r\n\r\n                    case QueryType.List:\r\n                        if (!_infoSwitch)\r\n                        {\r\n                            foreach (var result in SteamInstallation.Instance.SteamAppsLocations\r\n                                    .SelectMany(x => Directory.GetFiles(x, @\"appmanifest_*.acf\")\r\n                                                              .Select(p => Path.GetFileNameWithoutExtension(p).Substring(12)))\r\n                                    .Select(x => int.TryParse(x, out var num) ? num : (int?)null)\r\n                                    .Where(x => x != null)\r\n                                    .Distinct()\r\n                                    .OrderBy(x => x))\r\n                                Console.WriteLine(result);\r\n                        }\r\n                        else\r\n                        {\r\n                            var query = from appsLocStr in SteamInstallation.Instance.SteamAppsLocations\r\n                                        let appsLocation = new DirectoryInfo(appsLocStr)\r\n                                        from manifest in appsLocation.GetFiles(@\"appmanifest_*.acf\")\r\n                                        let info = SteamApplicationInfo.FromAppManifest(manifest, appsLocation)\r\n                                        where info != null\r\n                                        orderby info.AppId\r\n                                        select info;\r\n                            foreach (var applicationInfo in query)\r\n                                Console.WriteLine(HelperTools.ObjectToConsoleOutput(applicationInfo));\r\n                        }\r\n\r\n                        break;\r\n\r\n                    case QueryType.SteamDir:\r\n                        Console.WriteLine(SteamInstallation.Instance.InstallationDirectory);\r\n                        break;\r\n\r\n                    default:\r\n                        throw new ArgumentOutOfRangeException(nameof(_queryType), _queryType, null);\r\n                }\r\n            }\r\n            catch (OperationCanceledException)\r\n            {\r\n                return (int)ResultWin32.ERROR_CANCELLED;\r\n            }\r\n            catch (FormatException ex)\r\n            {\r\n                LogWriter.WriteExceptionToLog(ex);\r\n                return (int)ResultWin32.ERROR_BAD_ARGUMENTS;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                LogWriter.WriteExceptionToLog(ex);\r\n                return (int)ResultWin32.ERROR_UNEXP_NET_ERR;\r\n            }\r\n            return (int)ResultWin32.ERROR_SUCCESS;\r\n        }\r\n\r\n        private static void ProcessCommandlineArguments(IEnumerable<string> args)\r\n        {\r\n            foreach (var arg in args)\r\n            {\r\n                switch (arg.ToLowerInvariant())\r\n                {\r\n                    case @\"u\":\r\n                    case @\"uninstall\":\r\n                        if (_queryType != QueryType.None) throw new FormatException(@\"Multiple commands specified\");\r\n                        _queryType = QueryType.Uninstall;\r\n                        break;\r\n\r\n                    case @\"i\":\r\n                    case @\"info\":\r\n                        if (_queryType != QueryType.None) throw new FormatException(@\"Multiple commands specified\");\r\n                        _queryType = QueryType.GetInfo;\r\n                        break;\r\n\r\n                    case @\"/i\":\r\n                    case @\"/info\":\r\n                        if (_queryType != QueryType.List) throw new FormatException(@\"/info must follow the list command\");\r\n                        _infoSwitch = true;\r\n                        break;\r\n\r\n                    case @\"/s\":\r\n                    case @\"/silent\":\r\n                        if (_queryType != QueryType.Uninstall) throw new FormatException(@\"/silent must follow the uninstall command\");\r\n                        _silentSwitch = true;\r\n                        break;\r\n\r\n                    case @\"l\":\r\n                    case @\"list\":\r\n                        if (_queryType != QueryType.None) throw new FormatException(@\"Multiple commands specified\");\r\n                        _queryType = QueryType.List;\r\n                        break;\r\n\r\n                    case @\"steam\":\r\n                        if (_queryType != QueryType.None) throw new FormatException(@\"Multiple commands specified\");\r\n                        _queryType = QueryType.SteamDir;\r\n                        break;\r\n\r\n                    default:\r\n                        if (_appId != default(int)) throw new FormatException(@\"Multiple AppIDs specified\");\r\n                        if (!int.TryParse(arg, out _appId)) throw new FormatException($@\"Unknown argument: {arg}\");\r\n                        break;\r\n                }\r\n            }\r\n\r\n            if (_queryType == QueryType.None)\r\n                throw new FormatException(@\"No commands specified\");\r\n\r\n            if (_queryType != QueryType.List\r\n                && _queryType != QueryType.SteamDir\r\n                && _appId == default(int))\r\n                throw new FormatException(@\"No AppID specified\");\r\n        }\r\n\r\n        private enum QueryType\r\n        {\r\n            None,\r\n            Uninstall,\r\n            GetInfo,\r\n            List,\r\n            SteamDir\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/SteamHelper/Properties/launchSettings.json",
    "content": "{\n  \"profiles\": {\n    \"SteamHelper\": {\n      \"commandName\": \"Project\",\n      \"commandLineArgs\": \"list /info\"\n    }\n  }\n}"
  },
  {
    "path": "source/SteamHelper/SteamApplicationInfo.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing System.Text.RegularExpressions;\r\n\r\nnamespace SteamHelper\r\n{\r\n    internal class SteamApplicationInfo\r\n    {\r\n        private SteamApplicationInfo(int appId)\r\n        {\r\n            AppId = appId;\r\n        }\r\n\r\n        public static SteamApplicationInfo FromAppManifest(FileInfo manifestFile, DirectoryInfo containingAppsDir)\r\n        {\r\n            var m = Regex.Match(manifestFile.Name, @\"appmanifest_(\\d+)\\.acf\");\r\n            if (m.Success)\r\n            {\r\n                var idStr = m.Groups[1].Value;\r\n                if (!string.IsNullOrEmpty(idStr))\r\n                {\r\n                    return FromParams(int.Parse(idStr, CultureInfo.InvariantCulture), manifestFile, containingAppsDir);\r\n                }\r\n            }\r\n            return null;\r\n        }\r\n\r\n        public static SteamApplicationInfo FromAppId(int appId)\r\n        {\r\n            DirectoryInfo dir = null;\r\n            FileInfo manifestFile = null;\r\n            var appIdStr = appId.ToString(\"G\");\r\n\r\n            foreach (var steamAppsLocation in SteamInstallation.Instance.SteamAppsLocations)\r\n            {\r\n                var result = Directory.GetFiles(steamAppsLocation, @\"appmanifest_*.acf\")\r\n                    .FirstOrDefault(x => appIdStr.Equals(Path.GetFileNameWithoutExtension(x).Substring(12), StringComparison.InvariantCulture));\r\n                if (!string.IsNullOrEmpty(result))\r\n                {\r\n                    manifestFile = new FileInfo(result);\r\n                    dir = new DirectoryInfo(steamAppsLocation);\r\n                    break;\r\n                }\r\n            }\r\n\r\n            if (dir == null)\r\n                throw new ArgumentException(\"Could not find Steam App with the ID \" + appIdStr);\r\n\r\n            return FromParams(appId, manifestFile, dir);\r\n        }\r\n\r\n        private static SteamApplicationInfo FromParams(int appId, FileInfo manifestFile, DirectoryInfo containingAppsDir)\r\n        {\r\n            var appIdStr = appId.ToString(\"G\");\r\n            var output = new SteamApplicationInfo(appId);\r\n            output.ManifestPath = manifestFile.FullName;\r\n\r\n            //\"C:\\Steam\\steam.exe\" steam://uninstall/123\r\n            output.UninstallString = $\"\\\"{SteamInstallation.Instance.MainExecutableFilename}\\\" steam://uninstall/{appIdStr}\";\r\n\r\n            var manifestStrings = File.ReadAllLines(output.ManifestPath);\r\n            output.Name = GetManifestValue(manifestStrings, \"name\");\r\n            output.SizeOnDisk = GetManifestValue(manifestStrings, \"SizeOnDisk\");\r\n            var installDirName = GetManifestValue(manifestStrings, \"installdir\");\r\n            if (!string.IsNullOrEmpty(installDirName))\r\n            {\r\n                var path = Path.Combine(Path.Combine(containingAppsDir.FullName, @\"common\"), installDirName);\r\n                if (Directory.Exists(path))\r\n                    output.InstallDirectory = path;\r\n\r\n                if (output.Name == null)\r\n                    output.Name = installDirName;\r\n            }\r\n\r\n            output.DownloadDirectory = containingAppsDir.GetDirectories(@\"downloading\").SingleOrDefault()?.GetDirectories(appIdStr).SingleOrDefault()?.FullName;\r\n\r\n            var workshopDir = containingAppsDir.GetDirectories(@\"workshop\").SingleOrDefault();\r\n            if (workshopDir != null)\r\n            {\r\n                output.WorkshopManifestPath = workshopDir.GetFiles($@\"appworkshop_{appIdStr}.acf\").SingleOrDefault()?.FullName;\r\n                output.WorkshopDirectory = workshopDir.GetDirectories(@\"content\").SingleOrDefault()?.GetDirectories(appIdStr).SingleOrDefault()?.FullName;\r\n            }\r\n\r\n            return output;\r\n        }\r\n\r\n        public static string GetManifestValue(string[] manifestStrings, string keyName)\r\n        {\r\n            var targetLine = manifestStrings\r\n                .FirstOrDefault(x => x.Contains($\"\\\"{keyName.Trim().Trim('\\\"')}\\\"\", StringComparison.InvariantCultureIgnoreCase));\r\n\r\n            return string.IsNullOrEmpty(targetLine) ? null : targetLine.Split('\\\"').Select(x => x.Trim()).LastOrDefault(x => x.Length > 0);\r\n        }\r\n\r\n        public int AppId { get; }\r\n        public string Name { get; private set; }\r\n        public string SizeOnDisk { get; private set; }\r\n        public string UninstallString { get; private set; }\r\n        public string ManifestPath { get; private set; }\r\n        public string InstallDirectory { get; private set; }\r\n        public string DownloadDirectory { get; private set; }\r\n        public string WorkshopManifestPath { get; private set; }\r\n        public string WorkshopDirectory { get; private set; }\r\n\r\n        public void WriteTo(TextWriter wr)\r\n        {\r\n            foreach (var property in typeof(SteamApplicationInfo).GetProperties(BindingFlags.Public | BindingFlags.Instance))\r\n                wr.WriteLine(\"{0} - {1}\", property.Name, property.GetValue(this, null) ?? \"N/A\");\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/SteamHelper/SteamHelper.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\t<PropertyGroup>\r\n\t\t<OutputType>Exe</OutputType>\r\n\r\n\t\t<AssemblyTitle>Utility for discovering and uninstalling games and apps installed through Steam</AssemblyTitle>\r\n\r\n\t\t<ApplicationIcon>steam.ico</ApplicationIcon>\r\n\t\t<StartupObject>SteamHelper.Program</StartupObject>\r\n\t</PropertyGroup>\r\n\r\n\t<ItemGroup>\r\n\t\t<ProjectReference Include=\"..\\KlocTools\\KlocTools.csproj\" />\r\n\t</ItemGroup>\r\n</Project>"
  },
  {
    "path": "source/SteamHelper/SteamInstallation.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Microsoft.Win32;\r\n\r\nnamespace SteamHelper\r\n{\r\n    internal class SteamInstallation\r\n    {\r\n        private static SteamInstallation _instance;\r\n        private IReadOnlyList<string> _steamAppsLocations;\r\n\r\n        private SteamInstallation()\r\n        {\r\n            InstallationDirectory = FindSteamInstallationLocation();\r\n            MainExecutableFilename = Path.Combine(InstallationDirectory, \"Steam.exe\");\r\n        }\r\n\r\n        public static SteamInstallation Instance => _instance ??= new SteamInstallation();\r\n\r\n        public string InstallationDirectory { get; }\r\n\r\n        public IReadOnlyList<string> SteamAppsLocations => _steamAppsLocations ??= FindSteamAppsLocations(InstallationDirectory).ToList().AsReadOnly();\r\n\r\n        public string MainExecutableFilename { get; }\r\n\r\n        private static IEnumerable<string> FindSteamAppsLocations(string installationDirectory)\r\n        {\r\n            var libraryLocations = new List<string> { Path.Combine(installationDirectory, @\"SteamApps\") };\r\n\r\n            // The libraryfolders seems to appear in multiple locations. To be safe gather info from all of them\r\n            foreach (var vdfPath in new[] { @\"config\\libraryfolders.vdf\", @\"SteamApps\\libraryfolders.vdf\" }.Select(x => Path.Combine(installationDirectory, x)))\r\n            {\r\n                if (!File.Exists(vdfPath)) continue;\r\n\r\n                foreach (var line in File.ReadAllLines(vdfPath))\r\n                {\r\n                    // Gather key/value pairs from the file. It seems to be in a proprietary format\r\n                    var pieces = line.Split('\\\"').Where(p => !string.IsNullOrWhiteSpace(p.Trim())).ToList();\r\n                    if (pieces.Count != 2) continue;\r\n                    // Only path matters, it specifies absolute path to the library folder\r\n                    if (pieces[0] == \"path\")\r\n                    {\r\n                        var path = Path.Combine(pieces[1].Replace(@\"\\\\\", @\"\\\"), \"steamapps\");\r\n                        libraryLocations.Add(path);\r\n                    }\r\n                }\r\n            }\r\n\r\n            return libraryLocations.Distinct(StringComparer.CurrentCultureIgnoreCase).Where(Directory.Exists);\r\n        }\r\n\r\n        private static string FindSteamInstallationLocation()\r\n        {\r\n            foreach (var keyPath in new[] { @\"SOFTWARE\\Valve\\Steam\", @\"SOFTWARE\\WOW6432Node\\Valve\\Steam\" })\r\n            {\r\n                using (var key = Registry.LocalMachine.OpenSubKey(keyPath))\r\n                {\r\n                    if (key == null) continue;\r\n\r\n                    var path = key.GetStringSafe(@\"InstallPath\");\r\n                    if (path != null && Directory.Exists(path))\r\n                        return path;\r\n                }\r\n            }\r\n\r\n            try\r\n            {\r\n                using (var key = Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Classes\\steam\\Shell\\Open\\Command\"))\r\n                {\r\n                    var command = key?.GetStringSafe(null);\r\n                    var path = Path.GetDirectoryName(Misc.SeparateArgsFromCommand(command).Key);\r\n\r\n                    if (path != null && Directory.Exists(path))\r\n                        return path;\r\n                }\r\n                throw new IOException();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                throw new IOException(\r\n                    \"Failed to detect your Steam installation. Launch Steam, exit it gracefully, and try again.\", ex);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/SteamHelper/SteamUninstaller.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Threading;\r\n\r\nnamespace SteamHelper\r\n{\r\n    internal static class SteamUninstaller\r\n    {\r\n        public static void UninstallSteamApp(SteamApplicationInfo appInfo, bool silent)\r\n        {\r\n            Console.WriteLine(\"Uninstalling SteamApp with ID {0}{1}\", appInfo.AppId, silent ? \" silently\" : string.Empty);\r\n\r\n            if (silent)\r\n                QuietUninstall(appInfo);\r\n            else\r\n                LoudUninstall(appInfo);\r\n        }\r\n\r\n        private static void LoudUninstall(SteamApplicationInfo appInfo)\r\n        {\r\n            Console.WriteLine(\"Running \" + appInfo.UninstallString);\r\n            var uninstallCommand = Misc.SeparateArgsFromCommand(appInfo.UninstallString);\r\n            Process.Start(new ProcessStartInfo(uninstallCommand.Key, uninstallCommand.Value) { UseShellExecute = true });\r\n\r\n            Console.WriteLine();\r\n            Console.WriteLine(\"To stop waiting for Steam and cancel the operation press any key.\");\r\n\r\n            while (File.Exists(appInfo.ManifestPath))\r\n            {\r\n                Thread.Sleep(400);\r\n                if (Console.KeyAvailable)\r\n                    throw new OperationCanceledException();\r\n            }\r\n        }\r\n\r\n        private static void QuietUninstall(SteamApplicationInfo appInfo)\r\n        {\r\n            //var steamPath = Misc.SeparateArgsFromCommand(appInfo.UninstallString).Key;\r\n            //var processes = Process.GetProcesses().Where(x => x.MainModule.FileName.Equals(steamPath)).ToList();\r\n            var processes = Process.GetProcessesByName(\"Steam\");\r\n            if (processes.Any())\r\n            {\r\n                Console.WriteLine(\"Killing Steam processes\");\r\n                foreach (var process in processes)\r\n                {\r\n                    process.Kill();\r\n                    process.Dispose();\r\n                }\r\n            }\r\n\r\n            if (Directory.Exists(appInfo.DownloadDirectory))\r\n            {\r\n                Console.WriteLine(\"Deleting \" + appInfo.DownloadDirectory);\r\n                Directory.Delete(appInfo.DownloadDirectory, true);\r\n            }\r\n\r\n            if (Directory.Exists(appInfo.WorkshopDirectory))\r\n            {\r\n                Console.WriteLine(\"Deleting \" + appInfo.WorkshopDirectory);\r\n                Directory.Delete(appInfo.WorkshopDirectory, true);\r\n            }\r\n\r\n            if (File.Exists(appInfo.WorkshopManifestPath))\r\n            {\r\n                Console.WriteLine(\"Deleting \" + appInfo.WorkshopManifestPath);\r\n                File.Delete(appInfo.WorkshopManifestPath);\r\n            }\r\n\r\n            if (Directory.Exists(appInfo.InstallDirectory))\r\n            {\r\n                Console.WriteLine(\"Deleting \" + appInfo.InstallDirectory);\r\n                Directory.Delete(appInfo.InstallDirectory, true);\r\n            }\r\n\r\n            if (File.Exists(appInfo.ManifestPath))\r\n            {\r\n                Console.WriteLine(\"Deleting \" + appInfo.ManifestPath);\r\n                File.Delete(appInfo.ManifestPath);\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/StoreAppHelper/App.cs",
    "content": "﻿namespace StoreAppHelper\n{\n    public sealed class App\n    {\n        public App(string fullName, string displayName, string publisherDisplayName, string logo,\n            string installedLocation, bool isProtected)\n        {\n            FullName = fullName;\n            DisplayName = displayName;\n            PublisherDisplayName = publisherDisplayName;\n            Logo = logo;\n            InstalledLocation = installedLocation;\n            IsProtected = isProtected;\n        }\n\n        public string FullName { get; }\n        public string DisplayName { get; }\n        public string PublisherDisplayName { get; }\n        public string Logo { get; }\n        public string InstalledLocation { get; }\n        public bool IsProtected { get; }\n    }\n}"
  },
  {
    "path": "source/StoreAppHelper/AppManager.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Runtime.InteropServices;\r\nusing System.Security.Principal;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing Windows.ApplicationModel;\r\nusing Windows.Foundation;\r\nusing Windows.Management.Deployment;\r\nusing Klocman;\r\nusing System.Xml;\r\n\r\nnamespace StoreAppHelper\r\n{\r\n    public static class AppManager\r\n    {\r\n        public static void UninstallApp(string fullName)\r\n        {\r\n            var packageManager = new PackageManager();\r\n\r\n            var deploymentOperation = packageManager.RemovePackageAsync(fullName);\r\n\r\n            var opCompletedEvent = new ManualResetEvent(false);\r\n            deploymentOperation.Completed += (info, status) => opCompletedEvent.Set();\r\n\r\n            Console.WriteLine($\"Uninstalling \\\"{fullName}\\\"\");\r\n\r\n            opCompletedEvent.WaitOne();\r\n\r\n            // Check the status of the operation\r\n            switch (deploymentOperation.Status)\r\n            {\r\n                case AsyncStatus.Error:\r\n                    var deploymentResult = deploymentOperation.GetResults();\r\n                    Console.WriteLine(@\"Error code: {0}\", deploymentOperation.ErrorCode);\r\n                    Console.WriteLine(@\"Error text: {0}\", deploymentResult.ErrorText);\r\n                    throw new IOException(deploymentResult.ErrorText);\r\n\r\n                case AsyncStatus.Canceled:\r\n                    Console.WriteLine(@\"Uninstallation was cancelled\");\r\n                    throw new OperationCanceledException();\r\n\r\n                case AsyncStatus.Completed:\r\n                    Console.WriteLine(@\"Uninstallation completed successfully\");\r\n                    return;\r\n\r\n                default:\r\n                    Console.WriteLine(@\"Invalid status: {0}\", deploymentOperation.Status);\r\n                    throw new IOException();\r\n            }\r\n        }\r\n\r\n        public static IEnumerable<App> QueryApps()\r\n        {\r\n            var packageManager = new PackageManager();\r\n            var userSecurityId = WindowsIdentity.GetCurrent().User?.Value;\r\n            var packages = packageManager.FindPackagesForUserWithPackageTypes(userSecurityId, PackageTypes.Main);\r\n\r\n            foreach (var package in packages)\r\n            {\r\n                if ( /*package.IsFramework || package.IsResourcePackage ||*/\r\n                    package.Status.Disabled || package.Status.NotAvailable)\r\n                    continue;\r\n\r\n                var result = TryCreateAppFromPackage(package);\r\n                if (result != null)\r\n                    yield return result;\r\n            }\r\n        }\r\n\r\n        private static App TryCreateAppFromPackage(Package package)\r\n        {\r\n            var manifestContents = TryGetAppManifest(package);\r\n            if (manifestContents == null) return null;\r\n            try\r\n            {\r\n                var installPath = package.InstalledLocation.Path;\r\n                var externalPath = package.EffectiveLocation.Path.Equals(installPath, StringComparison.OrdinalIgnoreCase) ? null : package.EffectiveLocation.Path;\r\n\r\n                var xmlDoc = new XmlDocument();\r\n                xmlDoc.LoadXml(manifestContents);\r\n                // namespaces are mandatory, even if there's a default namespace\r\n                var nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);\r\n                nsmgr.AddNamespace(\"ns\", xmlDoc.DocumentElement!.NamespaceURI);\r\n                var properties = xmlDoc.DocumentElement.SelectSingleNode(\"//ns:Properties\", nsmgr);\r\n\r\n                var displayNameRes = properties!.SelectSingleNode(\"ns:DisplayName/text()\", nsmgr)?.Value;\r\n                var displayNameExtracted = ExtractDisplayName(installPath, package.Id.Name, displayNameRes)\r\n                                           ?? (externalPath != null ? ExtractDisplayName(externalPath, package.Id.Name, displayNameRes) : null);\r\n\r\n                var logoPathRes = properties.SelectSingleNode(\"ns:Logo/text()\", nsmgr)?.Value;\r\n                var logoPathExtracted = ExtractDisplayIcon(installPath, logoPathRes)\r\n                                         ?? (externalPath != null ? ExtractDisplayIcon(externalPath, logoPathRes) : null);\r\n\r\n                var publisherDisplayNameRes = properties.SelectSingleNode(\"ns:PublisherDisplayName/text()\", nsmgr)?.Value;\r\n                var publisherDisplayNameExtracted = ExtractDisplayName(installPath, package.Id.Name, publisherDisplayNameRes)\r\n                                           ?? (externalPath != null ? ExtractDisplayName(externalPath, package.Id.Name, publisherDisplayNameRes) : null);\r\n\r\n                return new App(\r\n                    fullName: package.Id.FullName,\r\n                    displayName: FirstValidName(displayNameExtracted, displayNameRes, package.DisplayName) ?? package.InstalledLocation.DisplayName,\r\n                    publisherDisplayName: FirstValidName(publisherDisplayNameExtracted, package.PublisherDisplayName) ?? \"\",\r\n                    logo: logoPathExtracted,\r\n                    installedLocation: installPath,\r\n                    isProtected: package.SignatureKind == PackageSignatureKind.System);\r\n            }\r\n            catch (SystemException exception)\r\n            {\r\n                LogWriter.WriteExceptionToLog(exception);\r\n                return null;\r\n            }\r\n        }\r\n\r\n        private static string FirstValidName(params string[] names)\r\n        {\r\n            return names.FirstOrDefault(s => !string.IsNullOrEmpty(s) && !s.StartsWith(\"ms-resource:\"));\r\n        }\r\n\r\n        private static string TryGetAppManifest(Package package)\r\n        {\r\n            try\r\n            {\r\n                var file = Path.Combine(package.InstalledLocation.Path, \"AppxManifest.xml\");\r\n                if (!File.Exists(file)) return null;\r\n                var manifestContents = File.ReadAllText(file);\r\n                return string.IsNullOrWhiteSpace(manifestContents) ? null : manifestContents;\r\n            }\r\n            catch (SystemException exception)\r\n            {\r\n                LogWriter.WriteExceptionToLog(exception);\r\n                return null;\r\n            }\r\n        }\r\n\r\n        private static string ExtractDisplayIcon(string appDir, string iconDir)\r\n        {\r\n            var logo = Path.Combine(appDir, iconDir);\r\n            if (File.Exists(logo))\r\n                return logo;\r\n\r\n            logo = Path.Combine(appDir, Path.ChangeExtension(logo, \"scale-100.png\"));\r\n            if (File.Exists(logo))\r\n                return logo;\r\n\r\n            var localized = Path.Combine(Path.Combine(appDir, \"en-us\"), iconDir);\r\n            localized = Path.Combine(appDir, Path.ChangeExtension(localized, \"scale-100.png\"));\r\n            return File.Exists(localized) ? localized : null;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Grabs display name from resources if necessary.\r\n        /// </summary>\r\n        /// <param name=\"appDir\">package.InstalledLocation.Path</param>\r\n        /// <param name=\"packageName\">Package.Id.Name</param>\r\n        /// <param name=\"displayName\">Application.VisualElements.DisplayName</param>\r\n        private static string ExtractDisplayName(string appDir, string packageName, string displayName)\r\n        {\r\n            if (!Uri.TryCreate(displayName, UriKind.Absolute, out var uri))\r\n                return displayName;\r\n\r\n            var priPath = Path.Combine(appDir, \"resources.pri\");\r\n            var resource = $\"ms-resource://{packageName}/resources/{uri.Segments.Last()}\";\r\n            var name = NativeMethods.ExtractStringFromPriFile(priPath, resource)?.Trim();\r\n            if (!string.IsNullOrEmpty(name))\r\n                return name;\r\n\r\n            var res = string.Concat(uri.Segments.Skip(1));\r\n            resource = $\"ms-resource://{packageName}/{res}\";\r\n            name = NativeMethods.ExtractStringFromPriFile(priPath, resource)?.Trim();\r\n            if (!string.IsNullOrEmpty(name))\r\n                return name;\r\n\r\n            name = NativeMethods.ExtractStringFromPriFile(priPath, displayName)?.Trim();\r\n            if (!string.IsNullOrEmpty(name))\r\n                return name;\r\n\r\n            return null;\r\n        }\r\n\r\n        private static class NativeMethods\r\n        {\r\n            [DllImport(\"shlwapi.dll\", BestFitMapping = false, CharSet = CharSet.Unicode, ExactSpelling = true,\r\n                SetLastError = false, ThrowOnUnmappableChar = true)]\r\n            private static extern int SHLoadIndirectString(string pszSource, StringBuilder pszOutBuf, int cchOutBuf,\r\n                IntPtr ppvReserved);\r\n\r\n            internal static string ExtractStringFromPriFile(string pathToPri, string resourceKey)\r\n            {\r\n                var sWin8ManifestString = $\"@{{{pathToPri}? {resourceKey}}}\";\r\n                var outBuff = new StringBuilder(1024);\r\n                SHLoadIndirectString(sWin8ManifestString, outBuff, outBuff.Capacity, IntPtr.Zero);\r\n                return outBuff.ToString();\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/StoreAppHelper/Program.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\nusing Klocman;\r\nusing Microsoft.Win32.Interop;\r\n\r\nnamespace StoreAppHelper\r\n{\r\n    internal static class Program\r\n    {\r\n        [STAThread]\r\n        private static int Main(string[] args)\r\n        {\r\n            if (args.Length == 0)\r\n                return (int)ResultWin32.ERROR_BAD_ARGUMENTS;\r\n\r\n            HelperTools.SetupEncoding();\r\n\r\n            if (args.Length == 1 && string.Equals(args[0], @\"/query\", StringComparison.OrdinalIgnoreCase))\r\n            {\r\n                try\r\n                {\r\n                    var result = AppManager.QueryApps();\r\n                    foreach (var app in result)\r\n                        Console.WriteLine(HelperTools.ObjectToConsoleOutput(app));\r\n                    return (int)ResultWin32.ERROR_SUCCESS;\r\n                }\r\n                catch (IOException ex)\r\n                {\r\n                    LogWriter.WriteExceptionToLog(ex);\r\n                    return (int)HelperTools.ExtractHrefCode(ex);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    LogWriter.WriteExceptionToLog(ex);\r\n                    return (int)ResultWin32.ERROR_FUNCTION_FAILED;\r\n                }\r\n            }\r\n\r\n            if (args.Length == 2 && string.Equals(args[0], @\"/uninstall\", StringComparison.OrdinalIgnoreCase))\r\n            {\r\n                try\r\n                {\r\n                    AppManager.UninstallApp(args[1]);\r\n                    return (int)ResultWin32.ERROR_SUCCESS;\r\n                }\r\n                catch (IOException ex)\r\n                {\r\n                    return (int)HelperTools.ExtractHrefCode(ex);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    LogWriter.WriteExceptionToLog(ex);\r\n                    return (int)ResultWin32.ERROR_FUNCTION_FAILED;\r\n                }\r\n            }\r\n\r\n            return (int)ResultWin32.ERROR_BAD_ARGUMENTS;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/StoreAppHelper/StoreAppHelper.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\t<PropertyGroup>\r\n\t\t<OutputType>Exe</OutputType>\r\n\r\n\t\t<AssemblyTitle>Utility for discovering and uninstalling Windows Store apps (including pre-installed apps)</AssemblyTitle>\r\n\r\n\t\t<ApplicationIcon>icon.ico</ApplicationIcon>\r\n\t\t<StartupObject>StoreAppHelper.Program</StartupObject>\r\n\t</PropertyGroup>\r\n</Project>"
  },
  {
    "path": "source/UninstallTools/ApplicationEntrySerializer.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools\r\n{\r\n    public sealed class ApplicationEntrySerializer\r\n    {\r\n        public static void SerializeApplicationEntries(string filename, IEnumerable<ApplicationUninstallerEntry> items)\r\n        {\r\n            SerializationTools.SerializeToXml(filename, new ApplicationEntrySerializer(items));\r\n        }\r\n\r\n        public ApplicationEntrySerializer(IEnumerable<ApplicationUninstallerEntry> items)\r\n        {\r\n            Items = items.ToList();\r\n        }\r\n\r\n        // Needed for serialization\r\n        public ApplicationEntrySerializer()\r\n        {\r\n        }\r\n\r\n        public List<ApplicationUninstallerEntry> Items { get; set; }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/ApplicationUninstallerEntry.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Drawing;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Security.Cryptography.X509Certificates;\r\nusing System.Text;\r\nusing System.Xml.Serialization;\r\nusing Klocman.Extensions;\r\nusing Klocman.IO;\r\nusing Klocman.Localising;\r\nusing Klocman.Tools;\r\nusing Microsoft.Win32;\r\nusing UninstallTools.Factory;\r\nusing UninstallTools.Factory.InfoAdders;\r\nusing UninstallTools.Lists;\r\nusing UninstallTools.Properties;\r\nusing UninstallTools.Startup;\r\n\r\nnamespace UninstallTools\r\n{\r\n    public class ApplicationUninstallerEntry\r\n    {\r\n        /// <summary>\r\n        /// List of properties that migh have changed by updating the key property\r\n        /// IMPORTANT: Keep up to date!\r\n        /// </summary>\r\n        internal static readonly ILookup<string, string> PropertyRelationships = new Dictionary<string, List<string>>\r\n        {\r\n            {\r\n                nameof(UninstallString),\r\n                new List<string>\r\n                {\r\n                    nameof(UninstallerLocation),\r\n                    nameof(UninstallerFullFilename)\r\n                }\r\n            },\r\n            {\r\n                nameof(UninstallerFullFilename),\r\n                new List<string> {nameof(UninstallerLocation)}\r\n            },\r\n            {\r\n                nameof(RawDisplayName),\r\n                new List<string> {nameof(DisplayName)}\r\n            },\r\n            {\r\n                nameof(RegistryKeyName),\r\n                new List<string> {nameof(RatingId)}\r\n            },\r\n        }.SelectMany(x => x.Value.Select(y => new { x.Key, Value = y })).ToLookup(x => x.Key, x => x.Value);\r\n\r\n        internal static readonly IEnumerable<string> CompanyNameEndTrimmers =\r\n            new[] { \"corp\", \"corporation\", \"limited\", \"inc\", \"incorporated\" };\r\n\r\n        private X509Certificate2 _certificate;\r\n        private bool _certificateGotten;\r\n        private bool? _certificateValid;\r\n        private string _ratingId;\r\n        private string _installLocation;\r\n        private string _installSource;\r\n        private string _modifyPath;\r\n        private string _displayIcon;\r\n        private string _uninstallString;\r\n        private string _uninstallerFullFilename;\r\n\r\n        /// <summary>\r\n        /// Junk specified during creation of the entry that would not be detected afterwards. It's added to the results during junk scan.\r\n        /// </summary>\r\n        [XmlIgnore]\r\n        internal readonly List<Junk.Containers.IJunkResult> AdditionalJunk = new();\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.DisplayName))]\r\n        public string DisplayName\r\n        {\r\n            get { return (string.IsNullOrEmpty(RawDisplayName) ? RegistryKeyName : RawDisplayName) ?? string.Empty; }\r\n            set { RawDisplayName = value; }\r\n        }\r\n\r\n        [XmlIgnore]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.DisplayNameTrimmed))]\r\n        public string DisplayNameTrimmed => StringTools.StripStringFromVersionNumber(DisplayName);\r\n\r\n        [XmlIgnore]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.PublisherTrimmed))]\r\n        public string PublisherTrimmed => string.IsNullOrEmpty(Publisher)\r\n            ? string.Empty\r\n            : Publisher.Replace(\"(R)\", string.Empty)\r\n                .ExtendedTrimEndAny(CompanyNameEndTrimmers, StringComparison.CurrentCultureIgnoreCase);\r\n\r\n        [XmlIgnore]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.QuietUninstallPossible))]\r\n        public bool QuietUninstallPossible => !string.IsNullOrEmpty(QuietUninstallString) ||\r\n                                              (UninstallerKind == UninstallerType.Msiexec &&\r\n                                               BundleProviderKey != Guid.Empty);\r\n\r\n        [XmlIgnore]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.UninstallPossible))]\r\n        public bool UninstallPossible => !string.IsNullOrEmpty(UninstallString);\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.AboutUrl))]\r\n        public string AboutUrl { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Product code used by msiexec. If it wasn't found, returns Guid.Empty.\r\n        /// </summary>\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.BundleProviderKey))]\r\n        public Guid BundleProviderKey { get; set; }\r\n\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.Comment))]\r\n        public string Comment { get; set; }\r\n\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.DisplayIcon))]\r\n        public string DisplayIcon\r\n        {\r\n            get { return _displayIcon; }\r\n            set { _displayIcon = CleanupPath(value, true); }\r\n        }\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.DisplayVersion))]\r\n        public string DisplayVersion { get; set; }\r\n\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.EstimatedSize))]\r\n        public FileSize EstimatedSize { get; set; }\r\n\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.InstallDate))]\r\n        public DateTime InstallDate { get; set; }\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.InstallLocation))]\r\n        public string InstallLocation\r\n        {\r\n            get { return _installLocation; }\r\n            set { _installLocation = CleanupPath(value); }\r\n        }\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.InstallSource))]\r\n        public string InstallSource\r\n        {\r\n            get { return _installSource; }\r\n            set { _installSource = CleanupPath(value); }\r\n        }\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.Is64Bit))]\r\n        public MachineType Is64Bit { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Protection from uninstalling.\r\n        /// </summary>\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.IsProtected))]\r\n        public bool IsProtected { get; set; }\r\n\r\n        /// <summary>\r\n        ///     The application's uniunstaller is mentioned in the registry (if it's not normal uninstallers will not see it)\r\n        /// </summary>\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.IsRegistered))]\r\n        public bool IsRegistered { get; set; }\r\n\r\n        /// <summary>\r\n        ///     The application is present on the drive, but not in any of the application listings\r\n        /// </summary>\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.IsOrphaned))]\r\n        public bool IsOrphaned { get; set; }\r\n\r\n        /// <summary>\r\n        ///     True if this is an update for another product\r\n        /// </summary>\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.IsUpdate))]\r\n        public bool IsUpdate { get; set; }\r\n\r\n        /// <summary>\r\n        ///     True if the application can be uninstalled. False if the uninstaller is missing or is otherwise invalid.\r\n        /// </summary>\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.IsValid))]\r\n        public bool IsValid { get; set; }\r\n\r\n        /// <summary>\r\n        ///     True if the application is listed as a web browser.\r\n        /// </summary>\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.IsWebBrowser))]\r\n        public bool IsWebBrowser { get; set; }\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.ModifyPath))]\r\n        public string ModifyPath\r\n        {\r\n            get { return _modifyPath; }\r\n            set { _modifyPath = CleanupPath(value); }\r\n        }\r\n\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.ParentKeyName))]\r\n        public string ParentKeyName { get; set; }\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.Publisher))]\r\n        public string Publisher { get; set; }\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.QuietUninstallString))]\r\n        public string QuietUninstallString { get; set; }\r\n\r\n        /// <summary>\r\n        /// Get a unique cache ID of this item. \r\n        /// Returns null if there isn't enough information to get a reasonably unique key.\r\n        /// </summary>\r\n        public string GetCacheId()\r\n        {\r\n            if (!string.IsNullOrEmpty(CacheIdOverride))\r\n                return CacheIdOverride;\r\n\r\n            var rid = RatingId;\r\n            if (!string.IsNullOrEmpty(rid))\r\n                return rid;\r\n\r\n            if (!string.IsNullOrEmpty(DisplayName) && !string.IsNullOrEmpty(InstallLocation))\r\n                return DisplayName + InstallLocation;// + DisplayVersion + InstallDate + EstimatedSize;\r\n\r\n            return null;\r\n        }\r\n\r\n        public string CacheIdOverride;\r\n\r\n        public string RatingId\r\n        {\r\n            get\r\n            {\r\n                if (!string.IsNullOrEmpty(_ratingId))\r\n                    return _ratingId;\r\n                if (!string.IsNullOrEmpty(RegistryKeyName))\r\n                    return RegistryKeyName;\r\n                //if (BundleProviderKey != Guid.Empty)\r\n                //    return BundleProviderKey.ToString();\r\n                return null;\r\n            }\r\n            set { _ratingId = value; }\r\n        }\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.RegistryKeyName))]\r\n        public string RegistryKeyName { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Full registry path of this entry\r\n        /// </summary>\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.RegistryPath))]\r\n        public string RegistryPath { get; set; }\r\n\r\n        [XmlIgnore]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.StartupEntries))]\r\n        public IEnumerable<StartupEntryBase> StartupEntries { get; set; }\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.HasStartupEntries))]\r\n        public bool HasStartups => StartupEntries != null && StartupEntries.Any();\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.SystemComponent))]\r\n        public bool SystemComponent { get; set; }\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.UninstallerFullFilename))]\r\n        public string UninstallerFullFilename\r\n        {\r\n            get { return _uninstallerFullFilename; }\r\n            set\r\n            {\r\n                _uninstallerFullFilename = value;\r\n\r\n                UninstallerLocation = ApplicationEntryTools.ExtractDirectoryName(UninstallerFullFilename)\r\n                                      ?? UninstallerLocation ?? string.Empty;\r\n            }\r\n        }\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.UninstallerKind))]\r\n        public UninstallerType UninstallerKind { get; set; }\r\n\r\n        //[LocalisedName(typeof(Localisation), nameof(Localisation.IsInstalled))]\r\n        //public bool IsInstalled { get; internal set; }\r\n\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.UninstallerLocation))]\r\n        public string UninstallerLocation { get; set; }\r\n\r\n        [ComparisonTarget]\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.UninstallString))]\r\n        public string UninstallString\r\n        {\r\n            get { return _uninstallString; }\r\n            set\r\n            {\r\n                _uninstallString = value;\r\n\r\n                UninstallerFullFilename = ApplicationEntryTools.ExtractFullFilename(value)\r\n                    ?? UninstallerFullFilename ?? string.Empty;\r\n            }\r\n        }\r\n\r\n        internal string RawDisplayName { get; set; }\r\n\r\n        internal Icon IconBitmap { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Check if the install location is not empty and is not a system directory\r\n        /// </summary>\r\n        public bool IsInstallLocationValid()\r\n        {\r\n            if (string.IsNullOrEmpty(InstallLocation?.Trim()))\r\n                return false;\r\n            return !UninstallToolsGlobalConfig.GetAllProgramFiles().Any(x => PathTools.PathsEqual(x, InstallLocation));\r\n        }\r\n\r\n        /*/// <summary>\r\n        ///     Get the certificate associated to the uninstaller or application.\r\n        /// </summary>\r\n        /// <param name=\"onlyStored\">If true only return the stored value, otherwise generate it if needed.</param>\r\n        public X509Certificate2 GetCertificate(bool onlyStored)\r\n        {\r\n            return onlyStored ? _certificate : GetCertificate();\r\n        }*/\r\n\r\n        /// <summary>\r\n        ///     Get the certificate associated to the uninstaller or application.\r\n        /// </summary>\r\n        public X509Certificate2 GetCertificate()\r\n        {\r\n            if (!_certificateGotten)\r\n            {\r\n                _certificateGotten = true;\r\n                _certificate = CertificateGetter.TryGetCertificate(this);\r\n\r\n                if (_certificate != null)\r\n                    _certificateValid = _certificate.Verify();\r\n            }\r\n            return _certificate;\r\n        }\r\n\r\n        public void SetCertificate(X509Certificate2 c)\r\n        {\r\n            _certificateGotten = true;\r\n            _certificate = c;\r\n\r\n            if (_certificate != null)\r\n                _certificateValid = _certificate.Verify();\r\n        }\r\n\r\n        public void SetCertificate(X509Certificate2 c, bool v)\r\n        {\r\n            _certificateGotten = true;\r\n            _certificate = c;\r\n            _certificateValid = v;\r\n        }\r\n\r\n        public Icon GetIcon()\r\n        {\r\n            return IconBitmap;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Ordered collection of filenames that could be the main executable of the application.\r\n        ///     The most likely files are first, the least likely are last.\r\n        /// </summary>\r\n        internal string[] SortedExecutables { get; set; }\r\n\r\n        public IEnumerable<string> GetSortedExecutables()\r\n        {\r\n            if (SortedExecutables == null)\r\n                return Enumerable.Empty<string>();\r\n            var output = SortedExecutables.AsEnumerable();\r\n            if (!string.IsNullOrEmpty(UninstallerFullFilename))\r\n                output = output.OrderBy(x => x.Equals(UninstallerFullFilename, StringComparison.InvariantCultureIgnoreCase));\r\n            return output;\r\n        }\r\n\r\n        public Uri GetAboutUri()\r\n        {\r\n            var temp = AboutUrl;\r\n            if (!temp.IsNotEmpty()) return null;\r\n\r\n            temp = temp.ToLowerInvariant().Replace(\"www.\",\r\n                temp.StartsWith(\"www.\", StringComparison.InvariantCulture) ? @\"http://www.\" : string.Empty);\r\n\r\n            try\r\n            {\r\n                return new Uri(temp, UriKind.Absolute);\r\n            }\r\n            catch\r\n            {\r\n                return null;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Check if certificate is valid. It returns null if the certificate is missing or GetCertificate has not\r\n        ///     been ran yet and onlyStored is set to true.\r\n        /// </summary>\r\n        public bool? IsCertificateValid(bool onlyStored)\r\n        {\r\n            if (!onlyStored && !_certificateGotten)\r\n                GetCertificate();\r\n\r\n            return _certificateValid;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Opens a new read-only instance of registry key used by this uninstaller. Remember to close it!\r\n        /// </summary>\r\n        public RegistryKey OpenRegKey()\r\n        {\r\n            return RegistryPath != null ? RegistryTools.OpenRegistryKey(RegistryPath) : null;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Opens a new instance of registry key used by this uninstaller. Remember to close it!\r\n        /// </summary>\r\n        /// <exception cref=\"System.Security.SecurityException\">\r\n        ///     The user does not have the permissions required to access the registry key in the\r\n        ///     specified mode.\r\n        /// </exception>\r\n        public RegistryKey OpenRegKey(bool writable)\r\n        {\r\n            return RegistryTools.OpenRegistryKey(RegistryPath, writable);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Check if entry has not been uninstalled already (check registry key)\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        public bool RegKeyStillExists()\r\n        {\r\n            if (string.IsNullOrEmpty(RegistryPath))\r\n                return false;\r\n            try\r\n            {\r\n                using (var key = OpenRegKey())\r\n                    return key != null;\r\n            }\r\n            catch\r\n            {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        public string ToLongString()\r\n        {\r\n            var sb = new StringBuilder();\r\n            sb.Append(DisplayName);\r\n            sb.AppendFormat(\" | {0}\", Publisher);\r\n            sb.AppendFormat(\" | {0}\", DisplayVersion);\r\n            sb.AppendFormat(\" | {0}\", GetInstallDateString());\r\n            sb.AppendFormat(\" | {0}\", EstimatedSize);\r\n            sb.AppendFormat(\" | {0}\", RegistryPath);\r\n            sb.AppendFormat(\" | {0}\", UninstallerKind);\r\n            sb.AppendFormat(\" | {0}\", UninstallString);\r\n            sb.AppendFormat(\" | {0}\", QuietUninstallString);\r\n            sb.AppendFormat(\" | {0}\", Comment);\r\n\r\n            return sb.ToString();\r\n        }\r\n\r\n        private string GetInstallDateString()\r\n        {\r\n            try\r\n            {\r\n                return DateTime.MinValue.Equals(InstallDate) ? string.Empty : InstallDate.ToShortDateString();\r\n            }\r\n            catch (SystemException)\r\n            {\r\n                return string.Empty;\r\n            }\r\n        }\r\n\r\n        public override string ToString()\r\n        {\r\n            var sb = new StringBuilder();\r\n            sb.Append(DisplayName);\r\n            sb.AppendFormat(\" | {0}\", Publisher);\r\n            sb.AppendFormat(\" | {0}\", DisplayVersion);\r\n            sb.AppendFormat(\" | {0}\", UninstallString);\r\n            sb.AppendFormat(\" | {0}\", Comment);\r\n\r\n            return sb.ToString();\r\n        }\r\n\r\n        private static readonly char[] InvalidPathChars = Path.GetInvalidPathChars();\r\n        private static string CleanupPath(string path, bool isFilename = false)\r\n        {\r\n            if (string.IsNullOrEmpty(path)) return null;\r\n\r\n            if (!isFilename)\r\n            {\r\n                // Try the fast method first for directories\r\n                var trimmed = path.Trim('\"', ' ', '\\'', '\\\\', '/');\r\n\r\n                if (!trimmed.ContainsAny(InvalidPathChars))\r\n                    return trimmed;\r\n            }\r\n\r\n            try\r\n            {\r\n                path = ProcessTools.SeparateArgsFromCommand(path).FileName;\r\n                if (!isFilename && path.Contains('.') && !Directory.Exists(path))\r\n                    return Path.GetDirectoryName(path);\r\n            }\r\n            catch\r\n            {\r\n                // If sanitization failed just leave it be, it will be handled afterwards\r\n            }\r\n            return path.TrimEnd('\\\\');\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.Designer.cs",
    "content": "﻿using System;\r\n\r\nnamespace UninstallTools.Controls\r\n{\r\n    partial class FilterEditor\r\n    {\r\n        /// <summary> \r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary> \r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Component Designer generated code\r\n\r\n        /// <summary> \r\n        /// Required method for Designer support - do not modify \r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FilterEditor));\r\n            this.labelText = new System.Windows.Forms.Label();\r\n            this.textBoxFilterText = new System.Windows.Forms.TextBox();\r\n            this.label2 = new System.Windows.Forms.Label();\r\n            this.comboBoxCompareMethod = new System.Windows.Forms.ComboBox();\r\n            this.comboBox1 = new System.Windows.Forms.ComboBox();\r\n            this.label1 = new System.Windows.Forms.Label();\r\n            this.panel1 = new System.Windows.Forms.Panel();\r\n            this.checkBoxInvert = new System.Windows.Forms.CheckBox();\r\n            this.searchBox1 = new Klocman.Controls.SearchBox();\r\n            this.panel1.SuspendLayout();\r\n            this.SuspendLayout();\r\n            // \r\n            // labelText\r\n            // \r\n            this.labelText.AccessibleRole = System.Windows.Forms.AccessibleRole.StaticText;\r\n            resources.ApplyResources(this.labelText, \"labelText\");\r\n            this.labelText.Name = \"labelText\";\r\n            // \r\n            // textBoxFilterText\r\n            // \r\n            resources.ApplyResources(this.textBoxFilterText, \"textBoxFilterText\");\r\n            this.textBoxFilterText.Name = \"textBoxFilterText\";\r\n            this.textBoxFilterText.TextChanged += new System.EventHandler(this.textBoxFilterText_TextChanged);\r\n            // \r\n            // label2\r\n            // \r\n            this.label2.AccessibleRole = System.Windows.Forms.AccessibleRole.StaticText;\r\n            resources.ApplyResources(this.label2, \"label2\");\r\n            this.label2.Name = \"label2\";\r\n            // \r\n            // comboBoxCompareMethod\r\n            // \r\n            resources.ApplyResources(this.comboBoxCompareMethod, \"comboBoxCompareMethod\");\r\n            this.comboBoxCompareMethod.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;\r\n            this.comboBoxCompareMethod.Name = \"comboBoxCompareMethod\";\r\n            this.comboBoxCompareMethod.Sorted = true;\r\n            this.comboBoxCompareMethod.SelectedIndexChanged += new System.EventHandler(this.comboBoxCompareMethod_SelectedIndexChanged);\r\n            // \r\n            // comboBox1\r\n            // \r\n            resources.ApplyResources(this.comboBox1, \"comboBox1\");\r\n            this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;\r\n            this.comboBox1.Name = \"comboBox1\";\r\n            this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);\r\n            // \r\n            // label1\r\n            // \r\n            this.label1.AccessibleRole = System.Windows.Forms.AccessibleRole.StaticText;\r\n            resources.ApplyResources(this.label1, \"label1\");\r\n            this.label1.Name = \"label1\";\r\n            // \r\n            // panel1\r\n            // \r\n            resources.ApplyResources(this.panel1, \"panel1\");\r\n            this.panel1.Controls.Add(this.checkBoxInvert);\r\n            this.panel1.Name = \"panel1\";\r\n            // \r\n            // checkBoxInvert\r\n            // \r\n            resources.ApplyResources(this.checkBoxInvert, \"checkBoxInvert\");\r\n            this.checkBoxInvert.Name = \"checkBoxInvert\";\r\n            this.checkBoxInvert.UseVisualStyleBackColor = true;\r\n            this.checkBoxInvert.CheckedChanged += new System.EventHandler(this.checkBoxInvert_CheckedChanged);\r\n            // \r\n            // searchBox1\r\n            // \r\n            resources.ApplyResources(this.searchBox1, \"searchBox1\");\r\n            this.searchBox1.BackColor = System.Drawing.SystemColors.Window;\r\n            this.searchBox1.Cursor = System.Windows.Forms.Cursors.Default;\r\n            this.searchBox1.InactiveSearchColor = System.Drawing.SystemColors.GrayText;\r\n            this.searchBox1.Name = \"searchBox1\";\r\n            this.searchBox1.NormalSearchColor = System.Drawing.SystemColors.WindowText;\r\n            this.searchBox1.SearchBoxBorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r\n            this.searchBox1.SearchTextChanged += new System.EventHandler<Klocman.Controls.SearchBox.SearchEventArgs>(this.searchBox1_SearchTextChanged);\r\n            // \r\n            // FilterEditor\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            this.Controls.Add(this.panel1);\r\n            this.Controls.Add(this.comboBox1);\r\n            this.Controls.Add(this.label1);\r\n            this.Controls.Add(this.comboBoxCompareMethod);\r\n            this.Controls.Add(this.label2);\r\n            this.Controls.Add(this.textBoxFilterText);\r\n            this.Controls.Add(this.labelText);\r\n            this.Controls.Add(this.searchBox1);\r\n            this.Name = \"FilterEditor\";\r\n            this.panel1.ResumeLayout(false);\r\n            this.panel1.PerformLayout();\r\n            this.ResumeLayout(false);\r\n            this.PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.Label labelText;\r\n        private System.Windows.Forms.TextBox textBoxFilterText;\r\n        private System.Windows.Forms.Label label2;\r\n        private System.Windows.Forms.ComboBox comboBoxCompareMethod;\r\n        private Klocman.Controls.SearchBox searchBox1;\r\n        private System.Windows.Forms.ComboBox comboBox1;\r\n        private System.Windows.Forms.Label label1;\r\n        private System.Windows.Forms.Panel panel1;\r\n        private System.Windows.Forms.CheckBox checkBoxInvert;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>نص الفلتر</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>طريقة المقارنة</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>الخصائص المستهدفة</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>عكس النتائج</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing Klocman.Controls;\r\nusing Klocman.Localising;\r\nusing UninstallTools.Lists;\r\n\r\nnamespace UninstallTools.Controls\r\n{\r\n    public partial class FilterEditor : UserControl\r\n    {\r\n        public event EventHandler FocusSearchTarget\r\n        {\r\n            add { searchBox1.FocusSearchTarget += value; }\r\n            remove { searchBox1.FocusSearchTarget -= value; }\r\n        }\r\n\r\n        private static readonly LocalisedEnumWrapper[] FilteringOptions;\r\n        private static readonly Dictionary<string, ComparisonTargetInfo> PropertyTargets;\r\n        private FilterCondition _targetFilterCondition;\r\n\r\n        static FilterEditor()\r\n        {\r\n            FilteringOptions = Enum.GetValues(typeof(ComparisonMethod))\r\n                .Cast<ComparisonMethod>().Select(x => new LocalisedEnumWrapper(x)).ToArray();\r\n\r\n            PropertyTargets = new Dictionary<string, ComparisonTargetInfo>();\r\n            foreach (var comparisonTarget in ComparisonTargetInfo.ComparisonTargets.OrderBy(x => x.DisplayName))\r\n            {\r\n                PropertyTargets.Add(comparisonTarget.DisplayName, comparisonTarget);\r\n            }\r\n        }\r\n\r\n        public FilterEditor()\r\n        {\r\n            InitializeComponent();\r\n\r\n            comboBoxCompareMethod.Items.AddRange(FilteringOptions.Cast<object>().ToArray());\r\n            comboBoxCompareMethod.SelectedIndex = 0;\r\n\r\n            comboBox1.Items.Add(ComparisonTargetInfo.AllTargetComparison.DisplayName);\r\n            comboBox1.Items.AddRange(PropertyTargets.Keys.Cast<object>().ToArray());\r\n            comboBox1.SelectedIndex = 0;\r\n\r\n            var autoCompleteStringCollection = new AutoCompleteStringCollection();\r\n\r\n            textBoxFilterText.AutoCompleteCustomSource = autoCompleteStringCollection;\r\n            textBoxFilterText.AutoCompleteMode = AutoCompleteMode.SuggestAppend;\r\n            textBoxFilterText.AutoCompleteSource = AutoCompleteSource.CustomSource;\r\n\r\n            searchBox1.AutoCompleteCustomSource = autoCompleteStringCollection;\r\n        }\r\n\r\n        private ComparisonTargetInfo SelectedTargetInfo\r\n        {\r\n            get\r\n            {\r\n                var selection = comboBox1.SelectedItem?.ToString();\r\n                if (string.IsNullOrEmpty(selection))\r\n                    return ComparisonTargetInfo.AllTargetComparison;\r\n\r\n                ComparisonTargetInfo c;\r\n                return PropertyTargets.TryGetValue(selection, out c) ? c : ComparisonTargetInfo.AllTargetComparison;\r\n            }\r\n        }\r\n\r\n        [Browsable(false)]\r\n        [ReadOnly(true)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public FilterCondition TargetFilterCondition\r\n        {\r\n            get\r\n            {\r\n\r\n                return _targetFilterCondition;\r\n            }\r\n            set\r\n            {\r\n                _targetFilterCondition = value;\r\n\r\n                RefreshEditor();\r\n                //event\r\n            }\r\n        }\r\n\r\n        public void RefreshEditor()\r\n        {\r\n            if (_targetFilterCondition == null)\r\n            {\r\n                Enabled = false;\r\n                textBoxFilterText.Text = string.Empty;\r\n                checkBoxInvert.Checked = false;\r\n                comboBox1.SelectedIndex = 0;\r\n                comboBoxCompareMethod.SelectedIndex = 0;\r\n                return;\r\n            }\r\n            Enabled = true;\r\n\r\n            var option = FilteringOptions.FirstOrDefault(x => _targetFilterCondition.ComparisonMethod.Equals(x.TargetEnum));\r\n            comboBoxCompareMethod.SelectedItem = option ?? FilteringOptions[0];\r\n\r\n            comboBox1.SelectedIndex = string.IsNullOrEmpty(_targetFilterCondition.TargetPropertyId)\r\n                ? 0\r\n                : Math.Max(0, comboBox1.Items.IndexOf(PropertyTargets.First(x=>x.Value.Id.Equals(_targetFilterCondition.TargetPropertyId)).Key));\r\n\r\n            if (textBoxFilterText.Text != _targetFilterCondition.FilterText)\r\n                textBoxFilterText.Text = _targetFilterCondition.FilterText;\r\n\r\n            if (searchBox1.SearchString != _targetFilterCondition.FilterText)\r\n            {\r\n                searchBox1.SearchTextChanged -= searchBox1_SearchTextChanged;\r\n                searchBox1.Search(_targetFilterCondition.FilterText);\r\n                searchBox1.SearchTextChanged += searchBox1_SearchTextChanged;\r\n            }\r\n\r\n            if (checkBoxInvert.Checked != _targetFilterCondition.InvertResults)\r\n                checkBoxInvert.Checked = _targetFilterCondition.InvertResults;\r\n        }\r\n\r\n        [DefaultValue(false)]\r\n        public bool ShowAsSearch\r\n        {\r\n            get { return searchBox1.Visible; }\r\n            set\r\n            {\r\n                searchBox1.Visible = value;\r\n                searchBox1.Enabled = value;\r\n                labelText.Visible = !value;\r\n                textBoxFilterText.Visible = !value;\r\n                textBoxFilterText.Enabled = !value;\r\n            }\r\n        }\r\n\r\n\r\n        /// <summary>\r\n        /// Fires after any part of the edited comparison method is changed.\r\n        /// </summary>\r\n        public event EventHandler ComparisonMethodChanged;\r\n\r\n        private void OnComparisonMethodChanged(object sender, EventArgs e)\r\n        {\r\n            if (!IsDisposed && !Disposing && Enabled)\r\n                ComparisonMethodChanged?.Invoke(sender, e);\r\n        }\r\n\r\n        public void FocusSearchbox()\r\n        {\r\n            if (searchBox1.Visible)\r\n                searchBox1.FocusSearchBox();\r\n            else\r\n                textBoxFilterText.Focus();\r\n        }\r\n\r\n        public void Search(string searchStr, ComparisonMethod method, string targetPropertyName = null, bool negate = false)\r\n        {\r\n            _targetFilterCondition.ComparisonMethod = method;\r\n            _targetFilterCondition.InvertResults = negate;\r\n            _targetFilterCondition.FilterText = searchStr;\r\n            _targetFilterCondition.TargetPropertyId = targetPropertyName;\r\n\r\n            searchBox1.SearchTextChanged -= searchBox1_SearchTextChanged;\r\n            searchBox1.Search(searchStr);\r\n            searchBox1.SearchTextChanged += searchBox1_SearchTextChanged;\r\n            \r\n            RefreshEditor();\r\n            OnComparisonMethodChanged(this, EventArgs.Empty);\r\n        }\r\n\r\n        private void comboBoxCompareMethod_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n            if (comboBoxCompareMethod.SelectedItem is not LocalisedEnumWrapper localisedEnumWrapper || _targetFilterCondition == null\r\n                                                                                                   || _targetFilterCondition.ComparisonMethod == (ComparisonMethod)localisedEnumWrapper.TargetEnum)\r\n                return;\r\n\r\n            _targetFilterCondition.ComparisonMethod = (ComparisonMethod)localisedEnumWrapper.TargetEnum;\r\n            OnComparisonMethodChanged(sender, e);\r\n        }\r\n\r\n        private void searchBox1_SearchTextChanged(object sender, SearchBox.SearchEventArgs searchEventArgs)\r\n        {\r\n            if (_targetFilterCondition == null || _targetFilterCondition.FilterText == searchEventArgs.SearchText) return;\r\n\r\n            _targetFilterCondition.FilterText = searchEventArgs.SearchText;\r\n            OnComparisonMethodChanged(sender, searchEventArgs);\r\n        }\r\n\r\n        private void textBoxFilterText_TextChanged(object sender, EventArgs e)\r\n        {\r\n            if (_targetFilterCondition == null || _targetFilterCondition.FilterText == textBoxFilterText.Text) return;\r\n\r\n            _targetFilterCondition.FilterText = textBoxFilterText.Text;\r\n            OnComparisonMethodChanged(sender, e);\r\n        }\r\n\r\n        private void checkBoxInvert_CheckedChanged(object sender, EventArgs e)\r\n        {\r\n            if (_targetFilterCondition == null || _targetFilterCondition.InvertResults == checkBoxInvert.Checked) return;\r\n\r\n            _targetFilterCondition.InvertResults = checkBoxInvert.Checked;\r\n            OnComparisonMethodChanged(sender, e);\r\n        }\r\n\r\n        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n            if (_targetFilterCondition == null)\r\n                return;\r\n\r\n            textBoxFilterText.AutoCompleteCustomSource.Clear();\r\n            var targetInfo = SelectedTargetInfo;\r\n            if (targetInfo == null)\r\n                return;\r\n\r\n            if (targetInfo.PossibleStrings != null)\r\n            {\r\n                textBoxFilterText.AutoCompleteCustomSource.AddRange(SelectedTargetInfo.PossibleStrings);\r\n                //textBoxFilterText.Text = SelectedTargetInfo.PossibleStrings.First();\r\n            }\r\n\r\n            if (_targetFilterCondition.TargetPropertyId\r\n                .Equals(targetInfo.Id, StringComparison.InvariantCultureIgnoreCase)) return;\r\n\r\n            _targetFilterCondition.TargetPropertyId = targetInfo.Id;\r\n            OnComparisonMethodChanged(sender, e);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Filtr textu</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Srovnávací metoda</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Vlastnost cíle</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Otočení výsledků</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Filtertext</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Vergleichsmethode</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Zieleigenschaft</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Umgekehrte Ergebnisse</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Filtrar texto</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Método de comparación</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Invertir resultados</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Propiedad de destino</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Filtrer le texte</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Méthode de comparaison</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Propriété de la cible</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Inverser les résultats</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Szűrő szövege</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Összehasonlító módszer</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Céltulajdonság</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Eredmények megfordítása</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Filtro del testo</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Medoto di comparazione</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Proprietà della destinazione</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Inverti i risultati</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\n    <value>テキストをフィルタリング</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>比較方法</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>対象プロパティ</value>\n  </data>\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\n    <value>結果を反転させる</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Filter tekst</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Vergelijkingsmethode</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Doel eigenschap</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Resultaten omkeren</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Tekst filtru</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Metoda porównania</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Porównane pole</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Odwróć wynik</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Filtrar o texto.</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Método de comparação</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Propriedade do destino</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Inverter os resultados</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Filtrar o texto.</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Método de comparação</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Propriedade do destino</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Inverter os resultados</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.resx",
    "content": "﻿<root>\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelText.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelText.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"labelText.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"labelText.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 27</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"labelText.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelText.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 3</value>\r\n  </data>\r\n  <data name=\"labelText.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>71, 23</value>\r\n  </data>\r\n  <data name=\"labelText.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Filter text</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelText.Name\" xml:space=\"preserve\">\r\n    <value>labelText</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelText.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelText.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelText.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"textBoxFilterText.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"textBoxFilterText.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 50</value>\r\n  </data>\r\n  <data name=\"textBoxFilterText.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"textBoxFilterText.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>133, 27</value>\r\n  </data>\r\n  <data name=\"textBoxFilterText.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxFilterText.Name\" xml:space=\"preserve\">\r\n    <value>textBoxFilterText</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxFilterText.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxFilterText.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxFilterText.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"label2.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label2.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 77</value>\r\n  </data>\r\n  <data name=\"label2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 6, 0, 3</value>\r\n  </data>\r\n  <data name=\"label2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>145, 29</value>\r\n  </data>\r\n  <data name=\"label2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Comparison method</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Name\" xml:space=\"preserve\">\r\n    <value>label2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label2.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"comboBoxCompareMethod.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"comboBoxCompareMethod.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 106</value>\r\n  </data>\r\n  <data name=\"comboBoxCompareMethod.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"comboBoxCompareMethod.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>133, 28</value>\r\n  </data>\r\n  <data name=\"comboBoxCompareMethod.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxCompareMethod.Name\" xml:space=\"preserve\">\r\n    <value>comboBoxCompareMethod</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxCompareMethod.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxCompareMethod.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxCompareMethod.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"comboBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"comboBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 163</value>\r\n  </data>\r\n  <data name=\"comboBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"comboBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>133, 28</value>\r\n  </data>\r\n  <data name=\"comboBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBox1.Name\" xml:space=\"preserve\">\r\n    <value>comboBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"label1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"label1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"label1.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"label1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 134</value>\r\n  </data>\r\n  <data name=\"label1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"label1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 6, 0, 3</value>\r\n  </data>\r\n  <data name=\"label1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>111, 29</value>\r\n  </data>\r\n  <data name=\"label1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Target property</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Name\" xml:space=\"preserve\">\r\n    <value>label1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;label1.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"panel1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 6</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>1, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>130, 24</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Invert results</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInvert.Name\" xml:space=\"preserve\">\r\n    <value>checkBoxInvert</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInvert.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInvert.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;checkBoxInvert.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 191</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"panel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 6, 3, 0</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>133, 30</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"searchBox1.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"searchBox1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"searchBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"searchBox1.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"searchBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"searchBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"searchBox1.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>67, 0</value>\r\n  </data>\r\n  <data name=\"searchBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>133, 27</value>\r\n  </data>\r\n  <data name=\"searchBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"searchBox1.Visible\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;searchBox1.Name\" xml:space=\"preserve\">\r\n    <value>searchBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;searchBox1.Type\" xml:space=\"preserve\">\r\n    <value>Klocman.Controls.SearchBox, KlocTools, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;searchBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;searchBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>7</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>8, 20</value>\r\n  </data>\r\n  <data name=\"$this.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"$this.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>133, 0</value>\r\n  </data>\r\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>133, 221</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>FilterEditor</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Текст фильтра</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Метод сравнения</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Целевое свойство</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Обратить результаты</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\r\n    <value>Filtriraj besedilo</value>\r\n  </data>\r\n  <data name=\"label2.Text\" xml:space=\"preserve\">\r\n    <value>Metoda primerjave</value>\r\n  </data>\r\n  <data name=\"label1.Text\" xml:space=\"preserve\">\r\n    <value>Lastnost cilja</value>\r\n  </data>\r\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\r\n    <value>Obrni rezultate</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\n    <value>Filter text</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Jämförelsemetod</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Målegenskaper</value>\n  </data>\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\n    <value>Omvänd resultat</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\n    <value>Metni filtrele</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Karşılaştırma yöntemi</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Hedef özelliği</value>\n  </data>\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\n    <value>Sonuçları ters çevir</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\n    <value>Văn bản lọc</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>Phương thức so sánh</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Thuộc tính mục tiêu</value>\n  </data>\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\n    <value>Đảo ngược kết quả</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\n    <value>筛选器文本</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>比较方法</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>目标属性</value>\n  </data>\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\n    <value>反转结果</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/FilterEditor.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelText.Text\" xml:space=\"preserve\">\n    <value>篩選器文字</value>\n  </data>\n  <data name=\"label2.Text\" xml:space=\"preserve\">\n    <value>比較方式</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>目標屬性</value>\n  </data>\n  <data name=\"checkBoxInvert.Text\" xml:space=\"preserve\">\n    <value>反向結果</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.Designer.cs",
    "content": "﻿namespace UninstallTools.Controls\r\n{\r\n    partial class UninstallListEditor\r\n    {\r\n        /// <summary> \r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary> \r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Component Designer generated code\r\n\r\n        /// <summary> \r\n        /// Required method for Designer support - do not modify \r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UninstallListEditor));\r\n            this.splitContainer1 = new System.Windows.Forms.SplitContainer();\r\n            this.groupBoxFilterList = new System.Windows.Forms.GroupBox();\r\n            this.listView1 = new System.Windows.Forms.ListView();\r\n            this.columnHeaderName = new System.Windows.Forms.ColumnHeader();\r\n            this.columnHeaderType = new System.Windows.Forms.ColumnHeader();\r\n            this.columnHeaderConditions = new System.Windows.Forms.ColumnHeader();\r\n            this.toolStrip1 = new System.Windows.Forms.ToolStrip();\r\n            this.toolStripButtonAddFilter = new System.Windows.Forms.ToolStripButton();\r\n            this.toolStripButtonRemoveFilter = new System.Windows.Forms.ToolStripButton();\r\n            this.toolStripButtonAddFiltersFromList = new System.Windows.Forms.ToolStripButton();\r\n            this.panel2 = new System.Windows.Forms.Panel();\r\n            this.groupBoxFilterSettings = new System.Windows.Forms.GroupBox();\r\n            this.textBoxFilterName = new System.Windows.Forms.TextBox();\r\n            this.labelFilterType = new System.Windows.Forms.Label();\r\n            this.comboBoxFilterType = new System.Windows.Forms.ComboBox();\r\n            this.labelFilterName = new System.Windows.Forms.Label();\r\n            this.splitContainer2 = new System.Windows.Forms.SplitContainer();\r\n            this.groupBoxConditions = new System.Windows.Forms.GroupBox();\r\n            this.panel1 = new System.Windows.Forms.Panel();\r\n            this.listBoxConditions = new System.Windows.Forms.ListBox();\r\n            this.toolStrip2 = new System.Windows.Forms.ToolStrip();\r\n            this.toolStripButtonAddCondition = new System.Windows.Forms.ToolStripButton();\r\n            this.toolStripButtonRemoveCondition = new System.Windows.Forms.ToolStripButton();\r\n            this.groupBoxConditionEditor = new System.Windows.Forms.GroupBox();\r\n            this.filterEditor = new UninstallTools.Controls.FilterEditor();\r\n            this.openFileDialog = new System.Windows.Forms.OpenFileDialog();\r\n            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();\r\n            this.splitContainer1.Panel1.SuspendLayout();\r\n            this.splitContainer1.Panel2.SuspendLayout();\r\n            this.splitContainer1.SuspendLayout();\r\n            this.groupBoxFilterList.SuspendLayout();\r\n            this.toolStrip1.SuspendLayout();\r\n            this.groupBoxFilterSettings.SuspendLayout();\r\n            ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();\r\n            this.splitContainer2.Panel1.SuspendLayout();\r\n            this.splitContainer2.Panel2.SuspendLayout();\r\n            this.splitContainer2.SuspendLayout();\r\n            this.groupBoxConditions.SuspendLayout();\r\n            this.panel1.SuspendLayout();\r\n            this.toolStrip2.SuspendLayout();\r\n            this.groupBoxConditionEditor.SuspendLayout();\r\n            this.SuspendLayout();\r\n            // \r\n            // splitContainer1\r\n            // \r\n            resources.ApplyResources(this.splitContainer1, \"splitContainer1\");\r\n            this.splitContainer1.Name = \"splitContainer1\";\r\n            // \r\n            // splitContainer1.Panel1\r\n            // \r\n            this.splitContainer1.Panel1.Controls.Add(this.groupBoxFilterList);\r\n            this.splitContainer1.Panel1.Controls.Add(this.panel2);\r\n            this.splitContainer1.Panel1.Controls.Add(this.groupBoxFilterSettings);\r\n            resources.ApplyResources(this.splitContainer1.Panel1, \"splitContainer1.Panel1\");\r\n            // \r\n            // splitContainer1.Panel2\r\n            // \r\n            this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);\r\n            // \r\n            // groupBoxFilterList\r\n            // \r\n            this.groupBoxFilterList.Controls.Add(this.listView1);\r\n            this.groupBoxFilterList.Controls.Add(this.toolStrip1);\r\n            resources.ApplyResources(this.groupBoxFilterList, \"groupBoxFilterList\");\r\n            this.groupBoxFilterList.Name = \"groupBoxFilterList\";\r\n            this.groupBoxFilterList.TabStop = false;\r\n            // \r\n            // listView1\r\n            // \r\n            this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {\r\n            this.columnHeaderName,\r\n            this.columnHeaderType,\r\n            this.columnHeaderConditions});\r\n            resources.ApplyResources(this.listView1, \"listView1\");\r\n            this.listView1.FullRowSelect = true;\r\n            this.listView1.GridLines = true;\r\n            this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;\r\n            this.listView1.HideSelection = false;\r\n            this.listView1.MultiSelect = false;\r\n            this.listView1.Name = \"listView1\";\r\n            this.listView1.ShowGroups = false;\r\n            this.listView1.ShowItemToolTips = true;\r\n            this.listView1.Sorting = System.Windows.Forms.SortOrder.Ascending;\r\n            this.listView1.UseCompatibleStateImageBehavior = false;\r\n            this.listView1.View = System.Windows.Forms.View.Details;\r\n            this.listView1.SelectedIndexChanged += new System.EventHandler(this.OnSelectedFilterChanged);\r\n            // \r\n            // columnHeaderName\r\n            // \r\n            resources.ApplyResources(this.columnHeaderName, \"columnHeaderName\");\r\n            // \r\n            // columnHeaderType\r\n            // \r\n            resources.ApplyResources(this.columnHeaderType, \"columnHeaderType\");\r\n            // \r\n            // columnHeaderConditions\r\n            // \r\n            resources.ApplyResources(this.columnHeaderConditions, \"columnHeaderConditions\");\r\n            // \r\n            // toolStrip1\r\n            // \r\n            this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;\r\n            this.toolStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);\r\n            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\r\n            this.toolStripButtonAddFilter,\r\n            this.toolStripButtonRemoveFilter,\r\n            this.toolStripButtonAddFiltersFromList});\r\n            resources.ApplyResources(this.toolStrip1, \"toolStrip1\");\r\n            this.toolStrip1.Name = \"toolStrip1\";\r\n            // \r\n            // toolStripButtonAddFilter\r\n            // \r\n            this.toolStripButtonAddFilter.Image = global::UninstallTools.Properties.Resources.add;\r\n            resources.ApplyResources(this.toolStripButtonAddFilter, \"toolStripButtonAddFilter\");\r\n            this.toolStripButtonAddFilter.Name = \"toolStripButtonAddFilter\";\r\n            this.toolStripButtonAddFilter.Click += new System.EventHandler(this.buttonAdd_Click);\r\n            // \r\n            // toolStripButtonRemoveFilter\r\n            // \r\n            this.toolStripButtonRemoveFilter.Image = global::UninstallTools.Properties.Resources.minus;\r\n            resources.ApplyResources(this.toolStripButtonRemoveFilter, \"toolStripButtonRemoveFilter\");\r\n            this.toolStripButtonRemoveFilter.Name = \"toolStripButtonRemoveFilter\";\r\n            this.toolStripButtonRemoveFilter.Click += new System.EventHandler(this.buttonRemove_Click);\r\n            // \r\n            // toolStripButtonAddFiltersFromList\r\n            // \r\n            this.toolStripButtonAddFiltersFromList.Image = global::UninstallTools.Properties.Resources.folder_open;\r\n            resources.ApplyResources(this.toolStripButtonAddFiltersFromList, \"toolStripButtonAddFiltersFromList\");\r\n            this.toolStripButtonAddFiltersFromList.Name = \"toolStripButtonAddFiltersFromList\";\r\n            this.toolStripButtonAddFiltersFromList.Click += new System.EventHandler(this.buttonImport_Click);\r\n            // \r\n            // panel2\r\n            // \r\n            resources.ApplyResources(this.panel2, \"panel2\");\r\n            this.panel2.Name = \"panel2\";\r\n            // \r\n            // groupBoxFilterSettings\r\n            // \r\n            this.groupBoxFilterSettings.Controls.Add(this.textBoxFilterName);\r\n            this.groupBoxFilterSettings.Controls.Add(this.labelFilterType);\r\n            this.groupBoxFilterSettings.Controls.Add(this.comboBoxFilterType);\r\n            this.groupBoxFilterSettings.Controls.Add(this.labelFilterName);\r\n            resources.ApplyResources(this.groupBoxFilterSettings, \"groupBoxFilterSettings\");\r\n            this.groupBoxFilterSettings.Name = \"groupBoxFilterSettings\";\r\n            this.groupBoxFilterSettings.TabStop = false;\r\n            // \r\n            // textBoxFilterName\r\n            // \r\n            resources.ApplyResources(this.textBoxFilterName, \"textBoxFilterName\");\r\n            this.textBoxFilterName.Name = \"textBoxFilterName\";\r\n            this.textBoxFilterName.TextChanged += new System.EventHandler(this.textBoxFilterName_TextChanged);\r\n            // \r\n            // labelFilterType\r\n            // \r\n            resources.ApplyResources(this.labelFilterType, \"labelFilterType\");\r\n            this.labelFilterType.Name = \"labelFilterType\";\r\n            // \r\n            // comboBoxFilterType\r\n            // \r\n            resources.ApplyResources(this.comboBoxFilterType, \"comboBoxFilterType\");\r\n            this.comboBoxFilterType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;\r\n            this.comboBoxFilterType.FormattingEnabled = true;\r\n            this.comboBoxFilterType.Items.AddRange(new object[] {\r\n            resources.GetString(\"comboBoxFilterType.Items\"),\r\n            resources.GetString(\"comboBoxFilterType.Items1\")});\r\n            this.comboBoxFilterType.Name = \"comboBoxFilterType\";\r\n            this.comboBoxFilterType.SelectedIndexChanged += new System.EventHandler(this.comboBoxFilterType_SelectedIndexChanged);\r\n            // \r\n            // labelFilterName\r\n            // \r\n            resources.ApplyResources(this.labelFilterName, \"labelFilterName\");\r\n            this.labelFilterName.Name = \"labelFilterName\";\r\n            // \r\n            // splitContainer2\r\n            // \r\n            resources.ApplyResources(this.splitContainer2, \"splitContainer2\");\r\n            this.splitContainer2.Name = \"splitContainer2\";\r\n            // \r\n            // splitContainer2.Panel1\r\n            // \r\n            this.splitContainer2.Panel1.Controls.Add(this.groupBoxConditions);\r\n            // \r\n            // splitContainer2.Panel2\r\n            // \r\n            this.splitContainer2.Panel2.Controls.Add(this.groupBoxConditionEditor);\r\n            // \r\n            // groupBoxConditions\r\n            // \r\n            this.groupBoxConditions.Controls.Add(this.panel1);\r\n            resources.ApplyResources(this.groupBoxConditions, \"groupBoxConditions\");\r\n            this.groupBoxConditions.Name = \"groupBoxConditions\";\r\n            this.groupBoxConditions.TabStop = false;\r\n            // \r\n            // panel1\r\n            // \r\n            resources.ApplyResources(this.panel1, \"panel1\");\r\n            this.panel1.Controls.Add(this.listBoxConditions);\r\n            this.panel1.Controls.Add(this.toolStrip2);\r\n            this.panel1.Name = \"panel1\";\r\n            // \r\n            // listBoxConditions\r\n            // \r\n            resources.ApplyResources(this.listBoxConditions, \"listBoxConditions\");\r\n            this.listBoxConditions.FormattingEnabled = true;\r\n            this.listBoxConditions.Name = \"listBoxConditions\";\r\n            this.listBoxConditions.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);\r\n            // \r\n            // toolStrip2\r\n            // \r\n            this.toolStrip2.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;\r\n            this.toolStrip2.ImageScalingSize = new System.Drawing.Size(20, 20);\r\n            this.toolStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\r\n            this.toolStripButtonAddCondition,\r\n            this.toolStripButtonRemoveCondition});\r\n            resources.ApplyResources(this.toolStrip2, \"toolStrip2\");\r\n            this.toolStrip2.Name = \"toolStrip2\";\r\n            // \r\n            // toolStripButtonAddCondition\r\n            // \r\n            this.toolStripButtonAddCondition.Image = global::UninstallTools.Properties.Resources.add;\r\n            resources.ApplyResources(this.toolStripButtonAddCondition, \"toolStripButtonAddCondition\");\r\n            this.toolStripButtonAddCondition.Name = \"toolStripButtonAddCondition\";\r\n            this.toolStripButtonAddCondition.Click += new System.EventHandler(this.toolStripButtonAddCondition_Click);\r\n            // \r\n            // toolStripButtonRemoveCondition\r\n            // \r\n            this.toolStripButtonRemoveCondition.Image = global::UninstallTools.Properties.Resources.minus;\r\n            resources.ApplyResources(this.toolStripButtonRemoveCondition, \"toolStripButtonRemoveCondition\");\r\n            this.toolStripButtonRemoveCondition.Name = \"toolStripButtonRemoveCondition\";\r\n            this.toolStripButtonRemoveCondition.Click += new System.EventHandler(this.toolStripButtonRemoveCondition_Click);\r\n            // \r\n            // groupBoxConditionEditor\r\n            // \r\n            this.groupBoxConditionEditor.Controls.Add(this.filterEditor);\r\n            resources.ApplyResources(this.groupBoxConditionEditor, \"groupBoxConditionEditor\");\r\n            this.groupBoxConditionEditor.Name = \"groupBoxConditionEditor\";\r\n            this.groupBoxConditionEditor.TabStop = false;\r\n            // \r\n            // filterEditor\r\n            // \r\n            resources.ApplyResources(this.filterEditor, \"filterEditor\");\r\n            this.filterEditor.Name = \"filterEditor\";\r\n            // \r\n            // openFileDialog\r\n            // \r\n            resources.ApplyResources(this.openFileDialog, \"openFileDialog\");\r\n            this.openFileDialog.Multiselect = true;\r\n            this.openFileDialog.FileOk += new System.ComponentModel.CancelEventHandler(this.openFileDialog_FileOk);\r\n            // \r\n            // UninstallListEditor\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            this.Controls.Add(this.splitContainer1);\r\n            this.Name = \"UninstallListEditor\";\r\n            this.splitContainer1.Panel1.ResumeLayout(false);\r\n            this.splitContainer1.Panel2.ResumeLayout(false);\r\n            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();\r\n            this.splitContainer1.ResumeLayout(false);\r\n            this.groupBoxFilterList.ResumeLayout(false);\r\n            this.groupBoxFilterList.PerformLayout();\r\n            this.toolStrip1.ResumeLayout(false);\r\n            this.toolStrip1.PerformLayout();\r\n            this.groupBoxFilterSettings.ResumeLayout(false);\r\n            this.groupBoxFilterSettings.PerformLayout();\r\n            this.splitContainer2.Panel1.ResumeLayout(false);\r\n            this.splitContainer2.Panel2.ResumeLayout(false);\r\n            ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();\r\n            this.splitContainer2.ResumeLayout(false);\r\n            this.groupBoxConditions.ResumeLayout(false);\r\n            this.panel1.ResumeLayout(false);\r\n            this.panel1.PerformLayout();\r\n            this.toolStrip2.ResumeLayout(false);\r\n            this.toolStrip2.PerformLayout();\r\n            this.groupBoxConditionEditor.ResumeLayout(false);\r\n            this.groupBoxConditionEditor.PerformLayout();\r\n            this.ResumeLayout(false);\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.GroupBox groupBoxFilterList;\r\n        private System.Windows.Forms.ListView listView1;\r\n        private System.Windows.Forms.ColumnHeader columnHeaderName;\r\n        private System.Windows.Forms.ColumnHeader columnHeaderType;\r\n        private System.Windows.Forms.GroupBox groupBoxConditions;\r\n        private System.Windows.Forms.OpenFileDialog openFileDialog;\r\n        private System.Windows.Forms.ColumnHeader columnHeaderConditions;\r\n        private System.Windows.Forms.ToolStrip toolStrip1;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonAddFilter;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonRemoveFilter;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonAddFiltersFromList;\r\n        private System.Windows.Forms.Panel panel1;\r\n        private System.Windows.Forms.SplitContainer splitContainer1;\r\n        private System.Windows.Forms.SplitContainer splitContainer2;\r\n        private System.Windows.Forms.ToolStrip toolStrip2;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonAddCondition;\r\n        private System.Windows.Forms.ListBox listBoxConditions;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonRemoveCondition;\r\n        private System.Windows.Forms.GroupBox groupBoxConditionEditor;\r\n        private FilterEditor filterEditor;\r\n        private System.Windows.Forms.Panel panel2;\r\n        private System.Windows.Forms.GroupBox groupBoxFilterSettings;\r\n        private System.Windows.Forms.TextBox textBoxFilterName;\r\n        private System.Windows.Forms.Label labelFilterType;\r\n        private System.Windows.Forms.ComboBox comboBoxFilterType;\r\n        private System.Windows.Forms.Label labelFilterName;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>اسم الفلتر</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>نوع</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>ظروف</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>اضافه</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>ازاله</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>اضافه من القائمه...</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>قائمه الفلاتر</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>نوع:</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>تضمين</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>استبعاد</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>اسم:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>اعدادات الفلتر</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>اضافه</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>ازاله</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>شروط الفلتر</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>محرر الشرط</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>قوائم الغاء تثبيت(*.bcul)|*.bcul|All files|*.*</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>تحميل قائمه الغاء التثبيت...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing Klocman.Forms.Tools;\r\nusing UninstallTools.Lists;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Controls\r\n{\r\n    public partial class UninstallListEditor : UserControl\r\n    {\r\n        private UninstallList _currentList;\r\n\r\n        public UninstallListEditor()\r\n        {\r\n            InitializeComponent();\r\n\r\n            comboBoxFilterType.SelectedIndex = 0;\r\n\r\n            filterEditor.ComparisonMethodChanged += OnFiltersChanged;\r\n            filterEditor.LostFocus += EditorFocusLost;\r\n\r\n            groupBoxFilterSettings.Enabled = false;\r\n            splitContainer1.Panel2.Enabled = false;\r\n            filterEditor.TargetFilterCondition = null;\r\n        }\r\n\r\n        [ReadOnly(true)]\r\n        [Browsable(false)]\r\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r\n        public UninstallList CurrentList\r\n        {\r\n            get { return _currentList; }\r\n            set\r\n            {\r\n                _currentList = value;\r\n                Enabled = _currentList != null;\r\n                PopulateList();\r\n                OnCurrentListChanged(this, EventArgs.Empty);\r\n            }\r\n        }\r\n\r\n        private Filter CurrentlySelected\r\n        {\r\n            get\r\n            {\r\n                if (listView1.SelectedItems.Count <= 0)\r\n                    return null;\r\n                return listView1.SelectedItems[0].Tag as Filter;\r\n            }\r\n        }\r\n\r\n        public event EventHandler CurrentListChanged;\r\n\r\n        private void OnCurrentListChanged(object sender, EventArgs e)\r\n        {\r\n            OnFiltersChanged(sender, e);\r\n            CurrentListChanged?.Invoke(sender, e);\r\n        }\r\n\r\n        private void buttonAdd_Click(object sender, EventArgs e)\r\n        {\r\n            Filter newItem;\r\n            try\r\n            {\r\n                newItem = new Filter(Localisation.UninstallListEditor_NewFilter, Localisation.UninstallListEditor_NewFilter);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n                return;\r\n            }\r\n\r\n            CurrentList.Add(newItem);\r\n            PopulateList();\r\n            OnFiltersChanged(sender, e);\r\n        }\r\n\r\n        private void buttonImport_Click(object sender, EventArgs e)\r\n        {\r\n            openFileDialog.ShowDialog();\r\n        }\r\n\r\n        private void buttonRemove_Click(object sender, EventArgs e)\r\n        {\r\n            var item = CurrentlySelected;\r\n            if (item == null)\r\n                return;\r\n\r\n            CurrentList.Remove(item);\r\n            PopulateList();\r\n            OnFiltersChanged(sender, e);\r\n        }\r\n\r\n        private void EditorFocusLost(object sender, EventArgs e)\r\n        {\r\n            RefreshSelectedFilter();\r\n        }\r\n\r\n        private void OnSelectedFilterChanged(object sender, EventArgs e)\r\n        {\r\n            var selection = CurrentlySelected;\r\n            if (selection != null)\r\n            {\r\n                textBoxFilterName.Text = selection.Name;\r\n                comboBoxFilterType.SelectedIndex = selection.Exclude ? 1 : 0;\r\n\r\n                splitContainer1.Panel2.Enabled = true;\r\n                groupBoxFilterSettings.Enabled = true;\r\n            }\r\n            else\r\n            {\r\n                groupBoxFilterSettings.Enabled = false;\r\n                splitContainer1.Panel2.Enabled = false;\r\n            }\r\n\r\n            PopulateConditions();\r\n        }\r\n\r\n        private void PopulateConditions()\r\n        {\r\n            listBoxConditions.SelectedItem = null;\r\n            listBoxConditions.Items.Clear();\r\n\r\n            var selection = CurrentlySelected;\r\n            if (selection?.ComparisonEntries != null)\r\n            {\r\n                groupBoxConditions.Enabled = true;\r\n                listBoxConditions.Items.AddRange(selection.ComparisonEntries.AsEnumerable().Reverse().Cast<object>().ToArray());\r\n            }\r\n            else\r\n            {\r\n                groupBoxConditions.Enabled = false;\r\n            }\r\n        }\r\n\r\n        private void openFileDialog_FileOk(object sender, CancelEventArgs e)\r\n        {\r\n            try\r\n            {\r\n                CurrentList.AddItems(UninstallList.ReadFromFile(openFileDialog.FileName).Filters);\r\n                PopulateList();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n                e.Cancel = true;\r\n            }\r\n        }\r\n\r\n        public void PopulateList()\r\n        {\r\n            groupBoxConditions.Enabled = false;\r\n            listView1.Items.Clear();\r\n\r\n            textBoxFilterName.Text = string.Empty;\r\n            comboBoxFilterType.SelectedIndex = 0;\r\n\r\n            if (CurrentList == null)\r\n                return;\r\n\r\n            listView1.Items.AddRange(CurrentList.Filters.Select(x => new ListViewItem(\r\n                new[]\r\n                {\r\n                    x.Name,\r\n                    Filter.ExcludeToString(x.Exclude),\r\n                    x.ComparisonEntries.Count.ToString()\r\n                })\r\n            { Tag = x }).ToArray());\r\n        }\r\n\r\n        private void OnFiltersChanged(object sender, EventArgs e)\r\n        {\r\n            listBoxConditions.Update();\r\n            FiltersChanged?.Invoke(sender, e);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Fires whenever the filters can potentially give a different result\r\n        /// </summary>\r\n        public event EventHandler FiltersChanged;\r\n\r\n        private void RefreshSelectedFilter()\r\n        {\r\n            if (listView1.SelectedItems.Count <= 0)\r\n                return;\r\n\r\n            var item = listView1.SelectedItems[0];\r\n            var tag = CurrentlySelected;\r\n\r\n            item.SubItems[0].Text = tag.Name;\r\n            item.SubItems[1].Text = Filter.ExcludeToString(tag.Exclude);\r\n            item.SubItems[2].Text = tag.ComparisonEntries.Count.ToString();\r\n            item.EnsureVisible();\r\n        }\r\n\r\n        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n            if (listBoxConditions.SelectedItem is not FilterCondition item)\r\n            {\r\n                filterEditor.TargetFilterCondition = null;\r\n            }\r\n            else if (!ReferenceEquals(filterEditor.TargetFilterCondition, item))\r\n            {\r\n                filterEditor.TargetFilterCondition = item;\r\n            }\r\n        }\r\n\r\n        private void toolStripButtonAddCondition_Click(object sender, EventArgs e)\r\n        {\r\n            filterEditor.TargetFilterCondition = null;\r\n\r\n            CurrentlySelected.ComparisonEntries.Add(new FilterCondition());\r\n\r\n            PopulateConditions();\r\n            OnFiltersChanged(sender, e);\r\n        }\r\n\r\n        private void toolStripButtonRemoveCondition_Click(object sender, EventArgs e)\r\n        {\r\n            if (listBoxConditions.SelectedItem is not FilterCondition item) return;\r\n            filterEditor.TargetFilterCondition = null;\r\n\r\n            CurrentlySelected.ComparisonEntries.Remove(item);\r\n            PopulateConditions();\r\n            OnFiltersChanged(sender, e);\r\n        }\r\n\r\n        private void textBoxFilterName_TextChanged(object sender, EventArgs e)\r\n        {\r\n            if (CurrentlySelected == null) return;\r\n            CurrentlySelected.Name = textBoxFilterName.Text ?? string.Empty;\r\n            RefreshSelectedFilter();\r\n        }\r\n\r\n        private void comboBoxFilterType_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n            if (CurrentlySelected == null) return;\r\n            CurrentlySelected.Exclude = comboBoxFilterType.SelectedIndex != 0;\r\n            RefreshSelectedFilter();\r\n            OnFiltersChanged(sender, e);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Název filtru</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Typ</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Podmínky</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Přidat</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Odstranit</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Přidat ze seznamu ...</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Filtr seznamu</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Typ:</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Zahrnout</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Vyloučit</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Název:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Nastavení filtru</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Přidat</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Odstranit</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Podmínky filtru</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Editor podmínek</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Seznam odinstalace (*.bcul)|*.bcul|All files|*.*</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Načíst seznam odinstalace...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Hinzufügen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Entfernen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Hinzufügen von Liste...</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Filterliste</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Hinzufügen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Entfernen</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Uninstall-Listen (*.bcul)|*.bcul|All files|*.*</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Uninstall-Liste laden...</value>\r\n  </data>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Filter Name</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Vorbild</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Bedingungen</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Vorbild</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Einschließen</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Ausschließen</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Name:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Filter Einstellungen</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Filterbedingungen</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Bedingungseditor</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Añadir desde la lista...</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Excluir</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Cargar lista de desinstalación...</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Editor de condición</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Eliminar</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Añadir</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Lista del filtro</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Agregar</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Incluir</value>\r\n  </data>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Nombre del filtro</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Eliminar</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Tipo</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Nombre:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Ajustes del filtro</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Condiciones</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listas de desinstalación (*.bcul)|*.bcul|Todos los archivos|*.*</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Tipo:</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Condiciones del filtro</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Ajouter</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Supprimer</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Ajouter depuis la liste...</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Filtrer la liste</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Ajouter</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Supprimer</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listes de désinstallation (*.bcul)|*.bcul|Tous les fichiers|*.*</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Charger la liste de désinstallation...</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Exclure</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Éditeur de condition</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Inclure</value>\r\n  </data>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Nom de filtre</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Conditions de filtre</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Type</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Nom:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Réglages de filtre</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Conditions</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Type:</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Hozzáadás listából...</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Kihagyva</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Eltávolítási lista betöltése...</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Feltételszerkesztő</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Törlés</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Hozzáad</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Szűrőlista</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Hozzáad</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Tartalmazza</value>\r\n  </data>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Szűrőnév</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Eltávolítási lista (*.bcul)|*.bcul|Minden fájl|*.*</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Törlés</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Szűrőfeltételek</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Típus</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Név:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Szűrőbeállítások</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Feltételek</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Típus:</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Aggiungi dalla lista...</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Escludi</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Carica la lista di disinstallazione...</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Editore di condizioni</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Rimuovi</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Aggiungi</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Filtro della lista</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Aggiungi</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Includi</value>\r\n  </data>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Nome del filtro</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Liste di disinstallazione (*.bcul)|*.bcul|Tutti i file|*.*</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Rimuovi</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Condizioni del filtro</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Tipo</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Nome:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Configurazione del filtro</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Condizioni</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Tipo:</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\n    <value>フィルター名</value>\n  </data>\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\n    <value>タイプ</value>\n  </data>\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\n    <value>条件</value>\n  </data>\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\n    <value>追加</value>\n  </data>\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\n    <value>削除</value>\n  </data>\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\n    <value>リストから追加...</value>\n  </data>\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\n    <value>フィルターリスト</value>\n  </data>\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\n    <value>タイプ：</value>\n  </data>\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\n    <value>含む</value>\n  </data>\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\n    <value>除外する</value>\n  </data>\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\n    <value>名前:</value>\n  </data>\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\n    <value>フィルター設定</value>\n  </data>\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\n    <value>追加</value>\n  </data>\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\n    <value>削除</value>\n  </data>\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\n    <value>フィルター条件</value>\n  </data>\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\n    <value>条件エディタ</value>\n  </data>\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\n    <value>アンインストールリスト (*.bcul)|*.bcul|All files|*.*</value>\n  </data>\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\n    <value>アンインストールリストを読み込む...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Filternaam</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Type</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Condities</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Toevoegen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Verwijderen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Toevoegen uit lijst</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Filterlijst</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Type:</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Inclusief</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Exclusief</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Naam:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Filter instellingen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Toevoegen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Verwijderen</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Filter condities</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Conditie editor</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>De-installatie lijsten (*.bcul)|*.bcul|Alle bestanden|*.*</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>De-installatie lijst laden...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Nazwa filtra</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Typ</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Kondycje</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Dodaj</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Usuń</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Dodaj z listy...</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Lista filtrów</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Typ:</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Uwzględnij</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Wyklucz</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Nazwa:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Ustawienia filtra</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Dodaj</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Usuń</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Kondycje filtra</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Edytor kondycji</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listy dezinstalatorów (*.bcul)|*.bcul|Wszystkie pliki|*.*</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Otwórz listę dezinstalatorów...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Nome do filtro</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Tipo</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Condições</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Adicionar</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Remover</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Adicionar da lista...</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Filtrar a lista</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Tipo:</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Incluir</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Excluir</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Nome:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Configurações do filtro</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Adicionar</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Remover</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Condições de filtro</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Editor de condição</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listas de Desinstalações (*.bcul)|*.bcul|Todos os arquivos|*.*</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Carregar Lista de Desinstalação...</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Adicionar da lista...</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Excluir</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Carregar a Lista de Desinstalação...</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Editor de condição</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Remover</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Adicionar</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Filtrar a lista</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Adicionar</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Incluir</value>\r\n  </data>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Nome do filtro</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Listas de Desinstalações (*.bcul)|*.bcul|Todos os ficheiros|*.*</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Remover</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Condições de filtro</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Tipo</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Nome:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Configurações do filtro</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Condições</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Tipo:</value>\r\n  </data>\r\n  <metadata name=\"openFileDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>cs</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.TrayHeight\" type=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>81</value>\r\n  </metadata>\r\n  <metadata name=\"toolStrip2.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>255, 17</value>\r\n  </metadata>\r\n  <metadata name=\"toolStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>150, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.resx",
    "content": "﻿<root>\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"splitContainer1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"splitContainer1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"splitContainer1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"splitContainer1.Orientation\" type=\"System.Windows.Forms.Orientation, System.Windows.Forms\">\r\n    <value>Horizontal</value>\r\n  </data>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Filter name</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"columnHeaderName.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>130</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Type</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>100</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Conditions</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>100</value>\r\n  </data>\r\n  <data name=\"listView1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"listView1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 56</value>\r\n  </data>\r\n  <data name=\"listView1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"listView1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>417, 296</value>\r\n  </data>\r\n  <data name=\"listView1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listView1.Name\" xml:space=\"preserve\">\r\n    <value>listView1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listView1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ListView, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listView1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxFilterList</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listView1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"toolStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>150, 17</value>\r\n  </metadata>\r\n  <data name=\"toolStripButtonAddFilter.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>61, 24</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Add</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>87, 24</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Remove</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFiltersFromList.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>129, 24</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Add from list...</value>\r\n  </data>\r\n  <data name=\"toolStrip1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>8, 29</value>\r\n  </data>\r\n  <data name=\"toolStrip1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>417, 27</value>\r\n  </data>\r\n  <data name=\"toolStrip1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip1.Name\" xml:space=\"preserve\">\r\n    <value>toolStrip1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxFilterList</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 6</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>8, 9, 8, 9</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>433, 361</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Filter list</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxFilterList.Name\" xml:space=\"preserve\">\r\n    <value>groupBoxFilterList</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxFilterList.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxFilterList.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxFilterList.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"panel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 367</value>\r\n  </data>\r\n  <data name=\"panel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"panel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>433, 6</value>\r\n  </data>\r\n  <data name=\"panel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Name\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"textBoxFilterName.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"textBoxFilterName.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>65, 26</value>\r\n  </data>\r\n  <data name=\"textBoxFilterName.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"textBoxFilterName.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>185, 27</value>\r\n  </data>\r\n  <data name=\"textBoxFilterName.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxFilterName.Name\" xml:space=\"preserve\">\r\n    <value>textBoxFilterName</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxFilterName.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxFilterName.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxFilterSettings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;textBoxFilterName.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelFilterType.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"labelFilterType.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>250, 26</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>51, 30</value>\r\n  </data>\r\n  <data name=\"labelFilterType.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Type:</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelFilterType.Name\" xml:space=\"preserve\">\r\n    <value>labelFilterType</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelFilterType.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelFilterType.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxFilterSettings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelFilterType.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Include</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Exclude</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>301, 26</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>127, 28</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxFilterType.Name\" xml:space=\"preserve\">\r\n    <value>comboBoxFilterType</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxFilterType.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxFilterType.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxFilterSettings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxFilterType.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"labelFilterName.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"labelFilterName.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 26</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 0, 4, 0</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>60, 30</value>\r\n  </data>\r\n  <data name=\"labelFilterName.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Name:</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelFilterName.Name\" xml:space=\"preserve\">\r\n    <value>labelFilterName</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelFilterName.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelFilterName.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxFilterSettings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;labelFilterName.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 373</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 6, 5, 6</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>433, 66</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Filter settings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxFilterSettings.Name\" xml:space=\"preserve\">\r\n    <value>groupBoxFilterSettings</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxFilterSettings.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxFilterSettings.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxFilterSettings.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"splitContainer1.Panel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 6, 5, 6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel1.Name\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel1.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"splitContainer2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"splitContainer2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"splitContainer2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"panel1.AutoScroll\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"listBoxConditions.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"listBoxConditions.IntegralHeight\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"listBoxConditions.ItemHeight\" type=\"System.Int32, mscorlib\">\r\n    <value>20</value>\r\n  </data>\r\n  <data name=\"listBoxConditions.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 27</value>\r\n  </data>\r\n  <data name=\"listBoxConditions.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"listBoxConditions.ScrollAlwaysVisible\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"listBoxConditions.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>185, 259</value>\r\n  </data>\r\n  <data name=\"listBoxConditions.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>14</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listBoxConditions.Name\" xml:space=\"preserve\">\r\n    <value>listBoxConditions</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listBoxConditions.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ListBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listBoxConditions.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listBoxConditions.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"toolStrip2.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>255, 17</value>\r\n  </metadata>\r\n  <data name=\"toolStripButtonAddCondition.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>61, 24</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Add</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>87, 24</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Remove</value>\r\n  </data>\r\n  <data name=\"toolStrip2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"toolStrip2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>185, 27</value>\r\n  </data>\r\n  <data name=\"toolStrip2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>13</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip2.Name\" xml:space=\"preserve\">\r\n    <value>toolStrip2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip2.Parent\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>5, 26</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>185, 286</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>12</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxConditions</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Enabled\" type=\"System.Boolean, mscorlib\">\r\n    <value>False</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 6, 5, 6</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>195, 318</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Filter conditions</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxConditions.Name\" xml:space=\"preserve\">\r\n    <value>groupBoxConditions</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxConditions.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxConditions.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer2.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxConditions.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer2.Panel1.Name\" xml:space=\"preserve\">\r\n    <value>splitContainer2.Panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer2.Panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer2.Panel1.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer2.Panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"filterEditor.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"filterEditor.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"filterEditor.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Top</value>\r\n  </data>\r\n  <data name=\"filterEditor.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>4, 25</value>\r\n  </data>\r\n  <data name=\"filterEditor.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 0, 0, 0</value>\r\n  </data>\r\n  <data name=\"filterEditor.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>5, 6, 5, 6</value>\r\n  </data>\r\n  <data name=\"filterEditor.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>236, 206</value>\r\n  </data>\r\n  <data name=\"filterEditor.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>17</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;filterEditor.Name\" xml:space=\"preserve\">\r\n    <value>filterEditor</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;filterEditor.Type\" xml:space=\"preserve\">\r\n    <value>UninstallTools.Controls.FilterEditor, UninstallTools, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;filterEditor.Parent\" xml:space=\"preserve\">\r\n    <value>groupBoxConditionEditor</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;filterEditor.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>244, 318</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>17</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Condition editor</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxConditionEditor.Name\" xml:space=\"preserve\">\r\n    <value>groupBoxConditionEditor</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxConditionEditor.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxConditionEditor.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer2.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBoxConditionEditor.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer2.Panel2.Name\" xml:space=\"preserve\">\r\n    <value>splitContainer2.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer2.Panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer2.Panel2.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer2.Panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"splitContainer2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>443, 318</value>\r\n  </data>\r\n  <data name=\"splitContainer2.SplitterDistance\" type=\"System.Int32, mscorlib\">\r\n    <value>195</value>\r\n  </data>\r\n  <data name=\"splitContainer2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer2.Name\" xml:space=\"preserve\">\r\n    <value>splitContainer2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer2.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer2.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel2.Name\" xml:space=\"preserve\">\r\n    <value>splitContainer1.Panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel2.Parent\" xml:space=\"preserve\">\r\n    <value>splitContainer1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"splitContainer1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>443, 769</value>\r\n  </data>\r\n  <data name=\"splitContainer1.SplitterDistance\" type=\"System.Int32, mscorlib\">\r\n    <value>445</value>\r\n  </data>\r\n  <data name=\"splitContainer1.SplitterWidth\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"splitContainer1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>11</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Name\" xml:space=\"preserve\">\r\n    <value>splitContainer1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;splitContainer1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"openFileDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Uninstall lists (*.bcul)|*.bcul|All files|*.*</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Load Uninstall List...</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.TrayHeight\" type=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>81</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>8, 20</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 5, 4, 5</value>\r\n  </data>\r\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>443, 769</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeaderName.Name\" xml:space=\"preserve\">\r\n    <value>columnHeaderName</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeaderName.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeaderType.Name\" xml:space=\"preserve\">\r\n    <value>columnHeaderType</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeaderType.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeaderConditions.Name\" xml:space=\"preserve\">\r\n    <value>columnHeaderConditions</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeaderConditions.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonAddFilter.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonAddFilter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonAddFilter.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonRemoveFilter.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonRemoveFilter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonRemoveFilter.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonAddFiltersFromList.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonAddFiltersFromList</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonAddFiltersFromList.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonAddCondition.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonAddCondition</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonAddCondition.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonRemoveCondition.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonRemoveCondition</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonRemoveCondition.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openFileDialog.Name\" xml:space=\"preserve\">\r\n    <value>openFileDialog</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openFileDialog.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>UninstallListEditor</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Добавить из списка...</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Исключить</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Загрузить список деинсталляции...</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Редактор условий</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Удалить</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Добавить</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Список фильтров</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Добавить</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Включить</value>\r\n  </data>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Имя фильтра</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Список деинсталляции (*.bcul)|*.bcul|Все файлы|*.*</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Удалить</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Условия фильтрации</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Тип</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Имя:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Установки фильтра</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Условия</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Тип:</value>\r\n  </data>\r\n  <metadata name=\"openFileDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Language\" type=\"System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>cs</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <metadata name=\"$this.TrayHeight\" type=\"System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>81</value>\r\n  </metadata>\r\n  <metadata name=\"toolStrip2.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>255, 17</value>\r\n  </metadata>\r\n  <metadata name=\"toolStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>150, 17</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\r\n    <value>Filtriraj seznam</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Seznami odstranjevanja (*.bcul)|*.bcul|Vse datoteke|*.*</value>\r\n  </data>\r\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\r\n    <value>Naloži seznam odstranjevanja...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\r\n    <value>Dodaj</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\r\n    <value>Odstrani</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\r\n    <value>Dodaj s seznama...</value>\r\n  </data>\r\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\r\n    <value>Dodaj</value>\r\n  </data>\r\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\r\n    <value>Odstrani</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\r\n    <value>Izključi</value>\r\n  </data>\r\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\r\n    <value>Urejevalnik pogoja</value>\r\n  </data>\r\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\r\n    <value>Vključi</value>\r\n  </data>\r\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\r\n    <value>Pogoji filtra</value>\r\n  </data>\r\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\r\n    <value>Vrsta</value>\r\n  </data>\r\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\r\n    <value>Ime:</value>\r\n  </data>\r\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\r\n    <value>Nastavitve filtra</value>\r\n  </data>\r\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\r\n    <value>Pogoji</value>\r\n  </data>\r\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\r\n    <value>Vrsta:</value>\r\n  </data>\r\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\r\n    <value>Ime filtra</value>\r\n  </data>\r\n  <metadata name=\"openFileDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\n    <value>Filternamn</value>\n  </data>\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\n    <value>Typ</value>\n  </data>\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\n    <value>Villkor</value>\n  </data>\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\n    <value>Lägg till</value>\n  </data>\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\n    <value>Ta bort</value>\n  </data>\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\n    <value>Lägg till från lista...</value>\n  </data>\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\n    <value>Filtrera lista</value>\n  </data>\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\n    <value>Typ:</value>\n  </data>\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\n    <value>Inkludera</value>\n  </data>\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\n    <value>Exkludera</value>\n  </data>\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\n    <value>Namn:</value>\n  </data>\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\n    <value>Filter-inställningar</value>\n  </data>\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\n    <value>Lägg till</value>\n  </data>\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\n    <value>Ta bort</value>\n  </data>\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\n    <value>Filter villkor</value>\n  </data>\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\n    <value>Villkors-redigerare</value>\n  </data>\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\n    <value>Avinstallationslistor (*.bcul)|*.bcul|Alla filer|*.*</value>\n  </data>\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\n    <value>Ladda avinstallationslista...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\n    <value>Filtreleme adı</value>\n  </data>\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\n    <value>Tip</value>\n  </data>\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\n    <value>Koşullar</value>\n  </data>\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\n    <value>Ekle</value>\n  </data>\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\n    <value>Kaldır</value>\n  </data>\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\n    <value>Listeden ekle...</value>\n  </data>\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\n    <value>Listeyi filtrele</value>\n  </data>\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\n    <value>Tip:</value>\n  </data>\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\n    <value>Dahil et</value>\n  </data>\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\n    <value>Hariç tut</value>\n  </data>\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\n    <value>Adı:</value>\n  </data>\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\n    <value>Filtreleme ayarları</value>\n  </data>\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\n    <value>Ekle</value>\n  </data>\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\n    <value>Kaldır</value>\n  </data>\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\n    <value>Filtreleme koşulları</value>\n  </data>\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\n    <value>Koşul düzenleyici</value>\n  </data>\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\n    <value>Listeleri kaldır (*.bcul)|*.bcul|Tüm dosyalar|*. *</value>\n  </data>\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\n    <value>Kaldırma listesini yükle</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\n    <value>Tên bộ lọc</value>\n  </data>\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\n    <value>Kiểu</value>\n  </data>\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\n    <value>Điều kiện</value>\n  </data>\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\n    <value>Thêm</value>\n  </data>\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\n    <value>Loại bỏ</value>\n  </data>\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\n    <value>Thêm từ danh sách...</value>\n  </data>\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\n    <value>Danh sách bộ lọc</value>\n  </data>\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\n    <value>Kiểu: </value>\n  </data>\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\n    <value>Bao gôm</value>\n  </data>\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\n    <value>Ngoại trừ</value>\n  </data>\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\n    <value>Tên: </value>\n  </data>\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\n    <value>Cài đặt bộ lọc</value>\n  </data>\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\n    <value>Thêm</value>\n  </data>\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\n    <value>Loại bỏ</value>\n  </data>\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\n    <value>Điều kiện bộ lọc</value>\n  </data>\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\n    <value>Trình chỉnh sửa điều kiện</value>\n  </data>\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\n    <value>Danh sách bộ lọc gỡ cài đặt (*.bcul)|*.bcul|Tất cả tệp|*.*</value>\n  </data>\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\n    <value>Làm mới danh sách bộ lọc gỡ cài đặt</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\n    <value>筛选器名</value>\n  </data>\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\n    <value>类型</value>\n  </data>\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\n    <value>条件</value>\n  </data>\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\n    <value>添加</value>\n  </data>\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\n    <value>从列表添加...</value>\n  </data>\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\n    <value>筛选器列表</value>\n  </data>\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\n    <value>类型:</value>\n  </data>\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\n    <value>包括</value>\n  </data>\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\n    <value>排除</value>\n  </data>\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\n    <value>名称:</value>\n  </data>\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\n    <value>筛选器设置</value>\n  </data>\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\n    <value>添加</value>\n  </data>\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\n    <value>筛选器条件</value>\n  </data>\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\n    <value>筛选器编辑器</value>\n  </data>\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\n    <value>卸载列表(*.bcul)|*.bcul|所有文件|*.*</value>\n  </data>\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\n    <value>加载卸载列表...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallListEditor.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"columnHeaderName.Text\" xml:space=\"preserve\">\n    <value>選項名稱</value>\n  </data>\n  <data name=\"columnHeaderType.Text\" xml:space=\"preserve\">\n    <value>類型</value>\n  </data>\n  <data name=\"columnHeaderConditions.Text\" xml:space=\"preserve\">\n    <value>條件</value>\n  </data>\n  <data name=\"toolStripButtonAddFilter.Text\" xml:space=\"preserve\">\n    <value>新增</value>\n  </data>\n  <data name=\"toolStripButtonRemoveFilter.Text\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"toolStripButtonAddFiltersFromList.Text\" xml:space=\"preserve\">\n    <value>從清單新增</value>\n  </data>\n  <data name=\"groupBoxFilterList.Text\" xml:space=\"preserve\">\n    <value>篩選清單</value>\n  </data>\n  <data name=\"labelFilterType.Text\" xml:space=\"preserve\">\n    <value>類型:</value>\n  </data>\n  <data name=\"comboBoxFilterType.Items\" xml:space=\"preserve\">\n    <value>包含</value>\n  </data>\n  <data name=\"comboBoxFilterType.Items1\" xml:space=\"preserve\">\n    <value>不包含</value>\n  </data>\n  <data name=\"labelFilterName.Text\" xml:space=\"preserve\">\n    <value>名稱:</value>\n  </data>\n  <data name=\"groupBoxFilterSettings.Text\" xml:space=\"preserve\">\n    <value>選項設定</value>\n  </data>\n  <data name=\"toolStripButtonAddCondition.Text\" xml:space=\"preserve\">\n    <value>新增</value>\n  </data>\n  <data name=\"toolStripButtonRemoveCondition.Text\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"groupBoxConditions.Text\" xml:space=\"preserve\">\n    <value>選項條件</value>\n  </data>\n  <data name=\"groupBoxConditionEditor.Text\" xml:space=\"preserve\">\n    <value>選項編輯器</value>\n  </data>\n  <data name=\"openFileDialog.Filter\" xml:space=\"preserve\">\n    <value>移除列表(*.bcul)|*.bcul|所有檔案|*.*</value>\n  </data>\n  <data name=\"openFileDialog.Title\" xml:space=\"preserve\">\n    <value>載入移除清單...</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Controls/UninstallerIconGetter.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Drawing;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing Klocman.Extensions;\r\n\r\nnamespace UninstallTools.Controls\r\n{\r\n    public class UninstallerIconGetter : Component\r\n    {\r\n        private static readonly string ApplicationIconKey = \"applicationIcon\";\r\n        private static readonly string InvalidIconKey = \"invalidIcon\";\r\n        private static readonly string MsiexecIconKey = \"msiexecIcon\";\r\n        private static readonly string UpdateIconKey = \"updateIcon\";\r\n        // The name \"OperatingSystem\" is important\r\n        private static readonly string WindowsIconKey = \"OperatingSystem\";\r\n\r\n        public UninstallerIconGetter()\r\n        {\r\n            Disposed += DisposeHandler;\r\n        }\r\n\r\n        public ImageList IconList { get; private set; }\r\n\r\n        public object ColumnImageGetter(object rowObj)\r\n        {\r\n            if (rowObj is not ApplicationUninstallerEntry entry || IconList == null)\r\n                return null;\r\n\r\n            if (IconListContainsKey(entry.DisplayName))\r\n                return entry.DisplayName;\r\n\r\n            if (entry.ParentKeyName.IsNotEmpty())\r\n            {\r\n                if (entry.ParentKeyName.Equals(WindowsIconKey))\r\n                    return WindowsIconKey;\r\n\r\n                if (IconListContainsKey(entry.ParentKeyName))\r\n                    return entry.ParentKeyName;\r\n            }\r\n\r\n            if (entry.IsUpdate || entry.UninstallerKind == UninstallerType.WindowsFeature)\r\n                return UpdateIconKey;\r\n\r\n            if (entry.UninstallerKind == UninstallerType.Msiexec || entry.UninstallerKind == UninstallerType.SdbInst)\r\n                return MsiexecIconKey;\r\n\r\n            if (entry.IsValid)\r\n                return ApplicationIconKey;\r\n\r\n            return InvalidIconKey;\r\n        }\r\n\r\n        /// <exception cref=\"PlatformNotSupportedException\">The current platform is not supported.</exception>\r\n        public void UpdateIconList(IEnumerable<ApplicationUninstallerEntry> objList)\r\n        {\r\n            IconList = new ImageList();\r\n            var windowsPath = Environment.GetFolderPath(Environment.SpecialFolder.System);\r\n            IconList.Images.Add(ApplicationIconKey, SystemIcons.Application);\r\n            IconList.Images.Add(InvalidIconKey, SystemIcons.Exclamation);\r\n            IconList.Images.Add(WindowsIconKey, SystemIcons.Shield); //SystemIcons.WinLogo); winlogo not working on xp?\r\n            IconList.Images.Add(UpdateIconKey, SystemIcons.Shield);\r\n            var msiIcon = UninstallToolsGlobalConfig.TryExtractAssociatedIcon(windowsPath + @\"\\msiexec.exe\");\r\n            IconList.Images.Add(MsiexecIconKey, msiIcon ?? SystemIcons.Application);\r\n\r\n            foreach (var obj in objList)\r\n            {\r\n                if (IconListContainsKey(obj.DisplayName))\r\n                    continue;\r\n\r\n                try\r\n                {\r\n                    var image = obj.GetIcon();\r\n                    if (image != null)\r\n                    {\r\n                        IconList.Images.Add(obj.DisplayName, image);\r\n                    }\r\n                }\r\n                catch\r\n                {\r\n                    // Revert to default icon\r\n                }\r\n            }\r\n        }\r\n\r\n        private void DisposeHandler(object x, EventArgs y)\r\n        {\r\n            if (IconList != null)\r\n            {\r\n                IconList.Dispose();\r\n                IconList = null;\r\n            }\r\n        }\r\n\r\n        private bool IconListContainsKey(string key)\r\n        {\r\n            if (string.IsNullOrEmpty(key))\r\n                return false;\r\n\r\n            if (IconList == null)\r\n                throw new InvalidOperationException(\"IconListContainsKey called when IconList is null\");\r\n\r\n            return IconList.Images.Keys.Cast<string>().Any(x => x.Equals(key));\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.Designer.cs",
    "content": "﻿using BrightIdeasSoftware;\r\n\r\nnamespace UninstallTools.Dialogs\r\n{\r\n    partial class StartupManagerWindow\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            components = new System.ComponentModel.Container();\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(StartupManagerWindow));\r\n            panel2 = new System.Windows.Forms.Panel();\r\n            panel5 = new System.Windows.Forms.Panel();\r\n            comboBoxFilter = new System.Windows.Forms.ComboBox();\r\n            panel4 = new System.Windows.Forms.Panel();\r\n            panel3 = new System.Windows.Forms.Panel();\r\n            buttonRefresh = new System.Windows.Forms.Button();\r\n            panel1 = new System.Windows.Forms.Panel();\r\n            buttonCancel = new System.Windows.Forms.Button();\r\n            buttonExport = new System.Windows.Forms.Button();\r\n            groupBox1 = new System.Windows.Forms.GroupBox();\r\n            listView1 = new ObjectListView();\r\n            columnHeader1 = new OLVColumn();\r\n            columnHeader5 = new OLVColumn();\r\n            columnHeader2 = new OLVColumn();\r\n            columnHeader3 = new OLVColumn();\r\n            columnHeader4 = new OLVColumn();\r\n            contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(components);\r\n            openFileLocationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r\n            openLinkLocationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r\n            runCommandToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r\n            toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();\r\n            copyToClipboardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r\n            createBackupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r\n            toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();\r\n            moveToRegistryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r\n            runForAllUsersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r\n            toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();\r\n            enableToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r\n            deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r\n            exportDialog = new System.Windows.Forms.SaveFileDialog();\r\n            folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();\r\n            panel2.SuspendLayout();\r\n            panel5.SuspendLayout();\r\n            groupBox1.SuspendLayout();\r\n            ((System.ComponentModel.ISupportInitialize)listView1).BeginInit();\r\n            contextMenuStrip.SuspendLayout();\r\n            SuspendLayout();\r\n            // \r\n            // panel2\r\n            // \r\n            panel2.Controls.Add(panel5);\r\n            panel2.Controls.Add(panel4);\r\n            panel2.Controls.Add(panel3);\r\n            panel2.Controls.Add(buttonRefresh);\r\n            panel2.Controls.Add(panel1);\r\n            panel2.Controls.Add(buttonCancel);\r\n            panel2.Controls.Add(buttonExport);\r\n            resources.ApplyResources(panel2, \"panel2\");\r\n            panel2.Name = \"panel2\";\r\n            // \r\n            // panel5\r\n            // \r\n            panel5.Controls.Add(comboBoxFilter);\r\n            resources.ApplyResources(panel5, \"panel5\");\r\n            panel5.Name = \"panel5\";\r\n            // \r\n            // comboBoxFilter\r\n            // \r\n            resources.ApplyResources(comboBoxFilter, \"comboBoxFilter\");\r\n            comboBoxFilter.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;\r\n            comboBoxFilter.FormattingEnabled = true;\r\n            comboBoxFilter.Items.AddRange(new object[] { resources.GetString(\"comboBoxFilter.Items\"), resources.GetString(\"comboBoxFilter.Items1\"), resources.GetString(\"comboBoxFilter.Items2\"), resources.GetString(\"comboBoxFilter.Items3\"), resources.GetString(\"comboBoxFilter.Items4\") });\r\n            comboBoxFilter.Name = \"comboBoxFilter\";\r\n            comboBoxFilter.SelectedIndexChanged += comboBoxFilter_SelectedIndexChanged;\r\n            // \r\n            // panel4\r\n            // \r\n            resources.ApplyResources(panel4, \"panel4\");\r\n            panel4.Name = \"panel4\";\r\n            // \r\n            // panel3\r\n            // \r\n            resources.ApplyResources(panel3, \"panel3\");\r\n            panel3.Name = \"panel3\";\r\n            // \r\n            // buttonRefresh\r\n            // \r\n            resources.ApplyResources(buttonRefresh, \"buttonRefresh\");\r\n            buttonRefresh.Name = \"buttonRefresh\";\r\n            buttonRefresh.UseVisualStyleBackColor = true;\r\n            buttonRefresh.Click += buttonRefresh_Click;\r\n            // \r\n            // panel1\r\n            // \r\n            resources.ApplyResources(panel1, \"panel1\");\r\n            panel1.Name = \"panel1\";\r\n            // \r\n            // buttonCancel\r\n            // \r\n            resources.ApplyResources(buttonCancel, \"buttonCancel\");\r\n            buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;\r\n            buttonCancel.Name = \"buttonCancel\";\r\n            buttonCancel.UseVisualStyleBackColor = true;\r\n            buttonCancel.Click += buttonCancel_Click;\r\n            // \r\n            // buttonExport\r\n            // \r\n            resources.ApplyResources(buttonExport, \"buttonExport\");\r\n            buttonExport.Name = \"buttonExport\";\r\n            buttonExport.UseVisualStyleBackColor = true;\r\n            buttonExport.Click += buttonExport_Click;\r\n            // \r\n            // groupBox1\r\n            // \r\n            groupBox1.Controls.Add(listView1);\r\n            resources.ApplyResources(groupBox1, \"groupBox1\");\r\n            groupBox1.Name = \"groupBox1\";\r\n            groupBox1.TabStop = false;\r\n            // \r\n            // listView1\r\n            // \r\n            listView1.AutoArrange = false;\r\n            listView1.CellEditUseWholeCell = false;\r\n            listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { columnHeader1, columnHeader5, columnHeader2, columnHeader3, columnHeader4 });\r\n            listView1.ContextMenuStrip = contextMenuStrip;\r\n            resources.ApplyResources(listView1, \"listView1\");\r\n            listView1.FullRowSelect = true;\r\n            listView1.GridLines = true;\r\n            listView1.Name = \"listView1\";\r\n            listView1.ShowGroups = false;\r\n            listView1.ShowItemToolTips = true;\r\n            listView1.Sorting = System.Windows.Forms.SortOrder.Ascending;\r\n            listView1.UseCompatibleStateImageBehavior = false;\r\n            listView1.View = System.Windows.Forms.View.Details;\r\n            listView1.SelectedIndexChanged += SelectionChanged;\r\n            listView1.MouseClick += listView1_MouseClick;\r\n            listView1.MouseDoubleClick += listView1_MouseDoubleClick;\r\n            // \r\n            // columnHeader1\r\n            // \r\n            columnHeader1.AspectName = \"ProgramName\";\r\n            resources.ApplyResources(columnHeader1, \"columnHeader1\");\r\n            // \r\n            // columnHeader5\r\n            // \r\n            columnHeader5.AspectName = \"Disabled\";\r\n            resources.ApplyResources(columnHeader5, \"columnHeader5\");\r\n            // \r\n            // columnHeader2\r\n            // \r\n            columnHeader2.AspectName = \"Company\";\r\n            resources.ApplyResources(columnHeader2, \"columnHeader2\");\r\n            // \r\n            // columnHeader3\r\n            // \r\n            columnHeader3.AspectName = \"ParentShortName\";\r\n            resources.ApplyResources(columnHeader3, \"columnHeader3\");\r\n            // \r\n            // columnHeader4\r\n            // \r\n            columnHeader4.AspectName = \"Command\";\r\n            resources.ApplyResources(columnHeader4, \"columnHeader4\");\r\n            // \r\n            // contextMenuStrip\r\n            // \r\n            contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { openFileLocationToolStripMenuItem, openLinkLocationToolStripMenuItem, runCommandToolStripMenuItem, toolStripSeparator2, copyToClipboardToolStripMenuItem, createBackupToolStripMenuItem, toolStripSeparator1, moveToRegistryToolStripMenuItem, runForAllUsersToolStripMenuItem, toolStripSeparator3, enableToolStripMenuItem, deleteToolStripMenuItem });\r\n            contextMenuStrip.Name = \"contextMenuStrip1\";\r\n            resources.ApplyResources(contextMenuStrip, \"contextMenuStrip\");\r\n            contextMenuStrip.Opening += contextMenuStrip1_Opening;\r\n            // \r\n            // openFileLocationToolStripMenuItem\r\n            // \r\n            resources.ApplyResources(openFileLocationToolStripMenuItem, \"openFileLocationToolStripMenuItem\");\r\n            openFileLocationToolStripMenuItem.Image = Properties.Resources.folder_open;\r\n            openFileLocationToolStripMenuItem.Name = \"openFileLocationToolStripMenuItem\";\r\n            openFileLocationToolStripMenuItem.Click += openFileLocationToolStripMenuItem_Click;\r\n            // \r\n            // openLinkLocationToolStripMenuItem\r\n            // \r\n            openLinkLocationToolStripMenuItem.Image = Properties.Resources.link;\r\n            openLinkLocationToolStripMenuItem.Name = \"openLinkLocationToolStripMenuItem\";\r\n            resources.ApplyResources(openLinkLocationToolStripMenuItem, \"openLinkLocationToolStripMenuItem\");\r\n            openLinkLocationToolStripMenuItem.Click += openLinkLocationToolStripMenuItem_Click;\r\n            // \r\n            // runCommandToolStripMenuItem\r\n            // \r\n            runCommandToolStripMenuItem.Image = Properties.Resources.app;\r\n            runCommandToolStripMenuItem.Name = \"runCommandToolStripMenuItem\";\r\n            resources.ApplyResources(runCommandToolStripMenuItem, \"runCommandToolStripMenuItem\");\r\n            runCommandToolStripMenuItem.Click += runCommandToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator2\r\n            // \r\n            toolStripSeparator2.Name = \"toolStripSeparator2\";\r\n            resources.ApplyResources(toolStripSeparator2, \"toolStripSeparator2\");\r\n            // \r\n            // copyToClipboardToolStripMenuItem\r\n            // \r\n            copyToClipboardToolStripMenuItem.Image = Properties.Resources.page_copy;\r\n            copyToClipboardToolStripMenuItem.Name = \"copyToClipboardToolStripMenuItem\";\r\n            resources.ApplyResources(copyToClipboardToolStripMenuItem, \"copyToClipboardToolStripMenuItem\");\r\n            copyToClipboardToolStripMenuItem.Click += copyToClipboardToolStripMenuItem_Click;\r\n            // \r\n            // createBackupToolStripMenuItem\r\n            // \r\n            createBackupToolStripMenuItem.Image = Properties.Resources.page_duplicate;\r\n            createBackupToolStripMenuItem.Name = \"createBackupToolStripMenuItem\";\r\n            resources.ApplyResources(createBackupToolStripMenuItem, \"createBackupToolStripMenuItem\");\r\n            createBackupToolStripMenuItem.Click += createBackupToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator1\r\n            // \r\n            toolStripSeparator1.Name = \"toolStripSeparator1\";\r\n            resources.ApplyResources(toolStripSeparator1, \"toolStripSeparator1\");\r\n            // \r\n            // moveToRegistryToolStripMenuItem\r\n            // \r\n            moveToRegistryToolStripMenuItem.Image = Properties.Resources.arrow_right;\r\n            moveToRegistryToolStripMenuItem.Name = \"moveToRegistryToolStripMenuItem\";\r\n            resources.ApplyResources(moveToRegistryToolStripMenuItem, \"moveToRegistryToolStripMenuItem\");\r\n            moveToRegistryToolStripMenuItem.Click += moveToRegistryToolStripMenuItem_Click;\r\n            // \r\n            // runForAllUsersToolStripMenuItem\r\n            // \r\n            runForAllUsersToolStripMenuItem.Checked = true;\r\n            runForAllUsersToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;\r\n            runForAllUsersToolStripMenuItem.Name = \"runForAllUsersToolStripMenuItem\";\r\n            resources.ApplyResources(runForAllUsersToolStripMenuItem, \"runForAllUsersToolStripMenuItem\");\r\n            runForAllUsersToolStripMenuItem.Click += runForAllUsersToolStripMenuItem_Click;\r\n            // \r\n            // toolStripSeparator3\r\n            // \r\n            toolStripSeparator3.Name = \"toolStripSeparator3\";\r\n            resources.ApplyResources(toolStripSeparator3, \"toolStripSeparator3\");\r\n            // \r\n            // enableToolStripMenuItem\r\n            // \r\n            enableToolStripMenuItem.Checked = true;\r\n            enableToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;\r\n            enableToolStripMenuItem.Name = \"enableToolStripMenuItem\";\r\n            resources.ApplyResources(enableToolStripMenuItem, \"enableToolStripMenuItem\");\r\n            enableToolStripMenuItem.Click += enableToolStripMenuItem_Click;\r\n            // \r\n            // deleteToolStripMenuItem\r\n            // \r\n            deleteToolStripMenuItem.Image = Properties.Resources.delete;\r\n            deleteToolStripMenuItem.Name = \"deleteToolStripMenuItem\";\r\n            resources.ApplyResources(deleteToolStripMenuItem, \"deleteToolStripMenuItem\");\r\n            deleteToolStripMenuItem.Click += deleteToolStripMenuItem_Click;\r\n            // \r\n            // exportDialog\r\n            // \r\n            exportDialog.DefaultExt = \"txt\";\r\n            resources.ApplyResources(exportDialog, \"exportDialog\");\r\n            exportDialog.FileOk += saveFileDialog1_FileOk;\r\n            // \r\n            // folderBrowserDialog\r\n            // \r\n            resources.ApplyResources(folderBrowserDialog, \"folderBrowserDialog\");\r\n            // \r\n            // StartupManagerWindow\r\n            // \r\n            AcceptButton = buttonCancel;\r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            CancelButton = buttonCancel;\r\n            Controls.Add(groupBox1);\r\n            Controls.Add(panel2);\r\n            Name = \"StartupManagerWindow\";\r\n            SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;\r\n            Shown += StartupManagerWindow_Shown;\r\n            panel2.ResumeLayout(false);\r\n            panel2.PerformLayout();\r\n            panel5.ResumeLayout(false);\r\n            groupBox1.ResumeLayout(false);\r\n            ((System.ComponentModel.ISupportInitialize)listView1).EndInit();\r\n            contextMenuStrip.ResumeLayout(false);\r\n            ResumeLayout(false);\r\n        }\r\n\r\n        #endregion\r\n        private System.Windows.Forms.Panel panel2;\r\n        private System.Windows.Forms.Button buttonExport;\r\n        private System.Windows.Forms.Button buttonCancel;\r\n        private System.Windows.Forms.GroupBox groupBox1;\r\n        private ObjectListView listView1;\r\n        private OLVColumn columnHeader1;\r\n        private OLVColumn columnHeader2;\r\n        private OLVColumn columnHeader3;\r\n        private OLVColumn columnHeader4;\r\n        private System.Windows.Forms.ContextMenuStrip contextMenuStrip;\r\n        private System.Windows.Forms.ToolStripMenuItem deleteToolStripMenuItem;\r\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;\r\n        private System.Windows.Forms.ToolStripMenuItem copyToClipboardToolStripMenuItem;\r\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;\r\n        private System.Windows.Forms.ToolStripMenuItem openLinkLocationToolStripMenuItem;\r\n        private System.Windows.Forms.ToolStripMenuItem openFileLocationToolStripMenuItem;\r\n        private System.Windows.Forms.ToolStripMenuItem runCommandToolStripMenuItem;\r\n        private System.Windows.Forms.Button buttonRefresh;\r\n        private System.Windows.Forms.SaveFileDialog exportDialog;\r\n        private OLVColumn columnHeader5;\r\n        private System.Windows.Forms.ToolStripMenuItem enableToolStripMenuItem;\r\n        private System.Windows.Forms.ToolStripMenuItem createBackupToolStripMenuItem;\r\n        private System.Windows.Forms.ToolStripMenuItem moveToRegistryToolStripMenuItem;\r\n        private System.Windows.Forms.ToolStripMenuItem runForAllUsersToolStripMenuItem;\r\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;\r\n        private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog;\r\n        private System.Windows.Forms.ComboBox comboBoxFilter;\r\n        private System.Windows.Forms.Panel panel4;\r\n        private System.Windows.Forms.Panel panel3;\r\n        private System.Windows.Forms.Panel panel1;\r\n        private System.Windows.Forms.Panel panel5;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>اظهار كل شيء</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>اظهار ادخالات بدء التشغيل</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>اظهار المهام</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>اظهار ملحقات المستعرض</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>اظهار الخدمات</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>تحديث</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>اغلاق</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>تصدير...</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>اسم البرنامج</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>تمكين</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>ناشر</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>موقع</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>امر</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;فتح الموقع القابل للتنفيذ </value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>فتح موقع الارتباط</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;تشغيل الامر</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;نسخ الى الحافظة</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>انشاء &amp;نسخ احتياطي...</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>الانتقال الى التسجيل</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>تشغيل لكافة المستخدمين</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;ممكن</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;حذف</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>قائمه بالاوامر التي يمكن تنفيذها تلقائيا دون تدخل المستخدم</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Text files|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>تصدير ادخالات بدء التشغيل...</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>حدد دليل فارغ للنسخ الاحتياطي.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>مدير بدء التشغيل</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Diagnostics;\r\nusing System.Drawing;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Properties;\r\nusing UninstallTools.Startup;\r\nusing UninstallTools.Startup.Browser;\r\nusing UninstallTools.Startup.Normal;\r\nusing UninstallTools.Startup.Service;\r\nusing UninstallTools.Startup.Task;\r\n\r\nnamespace UninstallTools.Dialogs\r\n{\r\n    public partial class StartupManagerWindow : Form\r\n    {\r\n        private StartupManagerWindow()\r\n        {\r\n            InitializeComponent();\r\n\r\n            comboBoxFilter.SelectedIndex = 0;\r\n\r\n            columnHeader5.AspectToStringConverter = x => (!(bool)x).ToYesNo();\r\n            listView1.FormatRow += (sender, args) =>\r\n            {\r\n                if (args.Model is StartupEntryBase seb)\r\n                    args.Item.ForeColor = seb.Disabled ? SystemColors.GrayText : SystemColors.ControlText;\r\n            };\r\n        }\r\n\r\n        private List<StartupEntryBase> AllItems { get; set; }\r\n\r\n        private IEnumerable<StartupEntryBase> Selection => listView1.SelectedObjects.Cast<StartupEntryBase>();\r\n\r\n        /// <summary>\r\n        ///     Show startup manager dialog. Returns latest startup entry list.\r\n        /// </summary>\r\n        /// <param name=\"owner\">Parent form</param>\r\n        public static IEnumerable<StartupEntryBase> ShowManagerDialog(Form owner)\r\n        {\r\n            using (var window = new StartupManagerWindow())\r\n            {\r\n                if (owner != null)\r\n                {\r\n                    window.StartPosition = FormStartPosition.CenterParent;\r\n                    window.Icon = owner.Icon;\r\n                }\r\n                window.ShowDialog(owner);\r\n                return window.AllItems;\r\n            }\r\n        }\r\n\r\n        public static StartupManagerWindow ShowManagerWindow()\r\n        {\r\n            var window = new StartupManagerWindow();\r\n            try\r\n            {\r\n                window.Icon = ProcessTools.GetIconFromEntryExe();\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                Trace.WriteLine(e);\r\n            }\r\n            return window;\r\n        }\r\n\r\n        private void buttonExport_Click(object sender, EventArgs e)\r\n        {\r\n            exportDialog.ShowDialog();\r\n        }\r\n\r\n        private void buttonRefresh_Click(object sender, EventArgs e)\r\n        {\r\n            ReloadItems(sender, e);\r\n        }\r\n\r\n        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)\r\n        {\r\n            e.Cancel = true;\r\n            moveToRegistryToolStripMenuItem.Enabled = false;\r\n\r\n            CheckState? enableCheckState = null;\r\n            CheckState? allUserCheckState = null;\r\n            foreach (var item in Selection)\r\n            {\r\n                e.Cancel = false;\r\n\r\n                if (!enableCheckState.HasValue)\r\n                    enableCheckState = item.Disabled ? CheckState.Unchecked : CheckState.Checked;\r\n                else if (enableCheckState.Value != (item.Disabled ? CheckState.Unchecked : CheckState.Checked))\r\n                    enableCheckState = CheckState.Indeterminate;\r\n\r\n                if (item is StartupEntry normalStartupEntry)\r\n                {\r\n                    if (!allUserCheckState.HasValue)\r\n                        allUserCheckState = normalStartupEntry.AllUsers ? CheckState.Checked : CheckState.Unchecked;\r\n                    else if (allUserCheckState.Value !=\r\n                             (normalStartupEntry.AllUsers ? CheckState.Checked : CheckState.Unchecked))\r\n                        allUserCheckState = CheckState.Indeterminate;\r\n\r\n                    if (!normalStartupEntry.IsRegKey)\r\n                        moveToRegistryToolStripMenuItem.Enabled = true;\r\n                }\r\n            }\r\n\r\n            enableToolStripMenuItem.Enabled = enableCheckState.HasValue;\r\n            enableToolStripMenuItem.CheckState = enableCheckState ?? CheckState.Unchecked;\r\n\r\n            runForAllUsersToolStripMenuItem.Enabled = allUserCheckState.HasValue;\r\n            runForAllUsersToolStripMenuItem.CheckState = allUserCheckState ?? CheckState.Unchecked;\r\n        }\r\n\r\n        private void copyToClipboardToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            var parts = Selection.Select(x => x.ToLongString()).ToArray();\r\n            if (parts.Any())\r\n            {\r\n                try\r\n                {\r\n                    Clipboard.SetText(string.Join(Environment.NewLine, parts));\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    ShowSecurityOrGenericError(ex, \"copying to clipboard\");\r\n                }\r\n            }\r\n        }\r\n\r\n        private void ShowSecurityOrGenericError(Exception ex, string context, string extraInfo = null)\r\n        {\r\n            if (ex is System.Security.SecurityException || ex is UnauthorizedAccessException)\r\n            {\r\n                PremadeDialogs.GenericError(\r\n                    $\"Access denied while {context}.\" + (string.IsNullOrWhiteSpace(extraInfo) ? \"\" : $\" {extraInfo}\") +\r\n                    $\"\\nError: {ex.Message}\\n\\n\" +\r\n                    \"You may not have sufficient permissions to perform this operation. Here are some possible causes:\\n\" +\r\n                    \"1.\\tService/File Permissions: The user (even admin) may lack permissions on the specific item. Security descriptors can restrict who can modify or delete a service/file.\\n\" +\r\n                    \"2.\\tWMI Namespace Permissions: The user may lack permissions on the root\\\\CIMV2 namespace.\\n\" +\r\n                    \"3.\\tService/File in Use: Some system services cannot be deleted or modified, even by administrators.\\n\" +\r\n                    \"4.\\tAnti-malware/AV: Security software may block service modifications.\");\r\n            }\r\n            else\r\n            {\r\n                PremadeDialogs.GenericError(ex);\r\n            }\r\n        }\r\n\r\n        private void DeleteSelected()\r\n        {\r\n            if (CustomMessageBox.ShowDialog(this, new CmbBasicSettings(\r\n                Localisation.StartupManager_Message_Delete_Title, Localisation.StartupManager_Message_Delete_Header,\r\n                Localisation.StartupManager_Message_Delete_Details,\r\n                SystemIcons.Question, Buttons.ButtonRemove, Buttons.ButtonCancel)) ==\r\n                CustomMessageBox.PressedButton.Middle)\r\n            {\r\n                try\r\n                {\r\n                    foreach (var item in Selection)\r\n                    {\r\n                        try\r\n                        {\r\n                            item.Delete();\r\n                        }\r\n                        catch (Exception ex)\r\n                        {\r\n                            ShowSecurityOrGenericError(ex, \"deleting service\", $\"Service name: {item.ProgramName}\");\r\n                        }\r\n                    }\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    ShowSecurityOrGenericError(ex, \"deleting service\");\r\n                }\r\n            }\r\n        }\r\n\r\n        private void deleteToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            DeleteSelected();\r\n\r\n            ReloadItems(sender, e);\r\n        }\r\n\r\n        private void listView1_MouseClick(object sender, MouseEventArgs e)\r\n        {\r\n            if (e.Button == MouseButtons.Right)\r\n            {\r\n                if (listView1.SelectedItems.Count > 0 && listView1.FocusedItem.Bounds.Contains(e.Location))\r\n                {\r\n                    contextMenuStrip.Show(Cursor.Position);\r\n                }\r\n            }\r\n        }\r\n\r\n        private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)\r\n        {\r\n            if (listView1.SelectedItems.Count > 0 && listView1.FocusedItem.Bounds.Contains(e.Location))\r\n            {\r\n                openFileLocationToolStripMenuItem_Click(sender, e);\r\n            }\r\n        }\r\n\r\n        private void openFileLocationToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            foreach (var item in Selection)\r\n            {\r\n                try\r\n                {\r\n                    if (item.CommandFilePath == null)\r\n                        throw new IOException(Localisation.Error_InvalidPath + \"\\n\" + item.Command);\r\n                    WindowsTools.OpenExplorerFocusedOnObject(item.CommandFilePath);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    ShowSecurityOrGenericError(ex, \"opening file location\", $\"Path: {item.CommandFilePath}\");\r\n                }\r\n            }\r\n        }\r\n\r\n        private void openLinkLocationToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            try\r\n            {\r\n                StartupManager.OpenStartupEntryLocations(Selection);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                ShowSecurityOrGenericError(ex, \"opening link location\");\r\n            }\r\n        }\r\n\r\n        private void ReloadItems(object sender, EventArgs e)\r\n        {\r\n            Cursor = Cursors.WaitCursor;\r\n            if (listView1.Items.Count < 1)\r\n            {\r\n                listView1.EmptyListMsg = Localisation.StartupManager_Loading;\r\n                listView1.Update();\r\n            }\r\n\r\n            SelectionChanged(sender, e);\r\n\r\n            listView1.BeginUpdate();\r\n\r\n            AllItems = StartupManager.GetAllStartupItems().ToList();\r\n\r\n            // Get icons\r\n            if (listView1.SmallImageList == null)\r\n                listView1.SmallImageList = new ImageList();\r\n            listView1.SmallImageList.Images.Clear();\r\n            listView1.SmallImageList.Images.Add(SystemIcons.Warning);\r\n            foreach (var entry in AllItems)\r\n            {\r\n                if (entry.CommandFilePath != null && !listView1.SmallImageList.Images.ContainsKey(entry.ProgramName))\r\n                {\r\n                    var icon = UninstallToolsGlobalConfig.TryExtractAssociatedIcon(entry.CommandFilePath);\r\n                    if (icon != null)\r\n                        listView1.SmallImageList.Images.Add(entry.ProgramName, icon);\r\n                }\r\n            }\r\n\r\n            UpdateList(false);\r\n\r\n            listView1.EndUpdate();\r\n            Cursor = Cursors.Default;\r\n            listView1.EmptyListMsg = null;\r\n        }\r\n\r\n        private void UpdateList(bool pauseLvUpdates = true)\r\n        {\r\n            if (pauseLvUpdates)\r\n            {\r\n                Cursor = Cursors.WaitCursor;\r\n                listView1.BeginUpdate();\r\n            }\r\n\r\n            listView1.ClearObjects();\r\n\r\n            listView1.Sort(columnHeader1, SortOrder.Ascending);\r\n\r\n            var query = from item in AllItems\r\n                        where comboBoxFilter.SelectedIndex == 0 ||\r\n                              comboBoxFilter.SelectedIndex == 1 && item is StartupEntry ||\r\n                              comboBoxFilter.SelectedIndex == 2 && item is TaskEntry ||\r\n                              comboBoxFilter.SelectedIndex == 3 && item is BrowserHelperEntry ||\r\n                              comboBoxFilter.SelectedIndex == 4 && item is ServiceEntry\r\n                        orderby item.ProgramName ascending\r\n                        select item;\r\n\r\n            // Populate list items\r\n            listView1.SetObjects(query);\r\n\r\n            if (pauseLvUpdates)\r\n            {\r\n                listView1.EndUpdate();\r\n                Cursor = Cursors.Default;\r\n            }\r\n        }\r\n\r\n        private void runCommandToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            foreach (var command in Selection)\r\n            {\r\n                if (!PremadeDialogs.StartProcessSafely(command.Command))\r\n                    break;\r\n            }\r\n        }\r\n\r\n        private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)\r\n        {\r\n            var parts = Selection.Select(x => x.ToLongString()).ToArray();\r\n            if (parts.Any())\r\n            {\r\n                try\r\n                {\r\n                    File.WriteAllText(exportDialog.FileName, string.Join(Environment.NewLine, parts));\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    ShowSecurityOrGenericError(ex, \"saving file\", $\"File: {exportDialog.FileName}\");\r\n                    e.Cancel = true;\r\n                }\r\n            }\r\n        }\r\n\r\n        private void SelectionChanged(object sender, EventArgs e)\r\n        {\r\n            var sel = listView1.SelectedItems.Count > 0;\r\n            buttonExport.Enabled = sel;\r\n        }\r\n\r\n        private void StartupManagerWindow_Shown(object sender, EventArgs e)\r\n        {\r\n            Refresh();\r\n            ReloadItems(sender, e);\r\n        }\r\n\r\n        private void enableToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            enableToolStripMenuItem.CheckState = enableToolStripMenuItem.CheckState == CheckState.Unchecked\r\n                ? CheckState.Checked\r\n                : CheckState.Unchecked;\r\n\r\n            foreach (var item in Selection)\r\n            {\r\n                try\r\n                {\r\n                    item.Disabled = enableToolStripMenuItem.CheckState == CheckState.Unchecked;\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    ShowSecurityOrGenericError(ex, \"enabling/disabling entry\", $\"Entry: {item.ProgramName}\");\r\n                }\r\n            }\r\n\r\n            UpdateList();\r\n        }\r\n\r\n        private void runForAllUsersToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            runForAllUsersToolStripMenuItem.CheckState = runForAllUsersToolStripMenuItem.CheckState ==\r\n                                                         CheckState.Unchecked\r\n                ? CheckState.Checked\r\n                : CheckState.Unchecked;\r\n\r\n            foreach (var item in Selection.OfType<StartupEntry>())\r\n            {\r\n                try\r\n                {\r\n                    item.AllUsers = runForAllUsersToolStripMenuItem.CheckState == CheckState.Checked;\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    ShowSecurityOrGenericError(ex, \"setting run for all users\", $\"Entry: {item.ProgramName}\");\r\n                }\r\n            }\r\n\r\n            UpdateList();\r\n        }\r\n\r\n        private void moveToRegistryToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            foreach (var item in Selection.OfType<StartupEntry>())\r\n            {\r\n                try\r\n                {\r\n                    StartupEntryManager.MoveToRegistry(item);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    ShowSecurityOrGenericError(ex, \"moving to registry\", $\"Entry: {item.ProgramName}\");\r\n                }\r\n            }\r\n\r\n            UpdateList();\r\n        }\r\n\r\n        private void createBackupToolStripMenuItem_Click(object sender, EventArgs e)\r\n        {\r\n            folderBrowserDialog.ShowDialog(this);\r\n            if (!Directory.Exists(folderBrowserDialog.SelectedPath)) return;\r\n\r\n            foreach (var item in Selection)\r\n            {\r\n                try\r\n                {\r\n                    item.CreateBackup(folderBrowserDialog.SelectedPath);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    ShowSecurityOrGenericError(ex, \"creating backup\", $\"Entry: {item.ProgramName}\");\r\n                }\r\n            }\r\n\r\n            try\r\n            {\r\n                Process.Start(new ProcessStartInfo(folderBrowserDialog.SelectedPath) { UseShellExecute = true });\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                ShowSecurityOrGenericError(ex, \"opening backup folder\", $\"Path: {folderBrowserDialog.SelectedPath}\");\r\n            }\r\n\r\n            UpdateList();\r\n        }\r\n\r\n        private void comboBoxFilter_SelectedIndexChanged(object sender, EventArgs e)\r\n        {\r\n            if (AllItems != null)\r\n                UpdateList();\r\n        }\r\n\r\n        private void buttonCancel_Click(object sender, EventArgs e)\r\n        {\r\n            DialogResult = DialogResult.OK;\r\n            Close();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Zobrazit vše</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Zobrazit položky po spustění</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Zobrazit úlohy</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Zobrazit rozšíření prohlížeče</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Obnovit</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Zavřit</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Název programu</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Povolen</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Vydavatel</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Umístění</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Příkaz</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Otevřete umístění aplikace</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Otevřená umístění odkazu</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Spustit příkaz</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Zkopírovat do schránky</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Vytvořit &amp; zálohu ...</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Přesnuout do registrů</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Pro všechny uživatele</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Vybrán</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odstranit</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Příkazy spuštěné při startu systému nebo přihlášení</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Textové soubory|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Export položek po spuštění...</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Vyberte prázdný adresář pro zálohování.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Manager po spuštění</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Export...</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Zobrazit služby</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Alles anzeigen</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Autostart-Einträge anzeigen</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Aufgaben anzeigen</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Browser-Erweiterungen anzeigen</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Aktualisieren</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Schließen</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Programmname</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Aktiviert</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Herausgeber</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Speicherort</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Befehl</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>EXE-Speicherort ö&amp;ffnen</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Link-Speicherort öffnen</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Befehl ausführen</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>In Zwischenablage &amp;kopieren</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Backup erstellen...</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>In die Registry verschieben</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Für alle Benutzer ausführen</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Aktiviert</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Löschen</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Befehle, die während des Systemstarts oder der Anmeldung ausgeführt werden</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Textdateien|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Autostart-Einträge exportieren...</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Wählen Sie ein leeres Verzeichnis für die Sicherung.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Autostart Manager</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Export...</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Dienstleistungen anzeigen</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Mostrar todo</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Mostrar entradas de inicio</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Mostrar tareas</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Mostrar extensiones del navegador</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Refrescar</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Cerrar</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exportar...</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Nombre del programa</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Habilitado</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Editor</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Ubicación</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Comando</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Abrir ubicación del ejecutable</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir ubicación del enlace</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ejecutar comando</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copiar al portapapeles</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Crear &amp;copia de seguridad...</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mover al registro...</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ejecutar para todos los usuarios</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Habilitado</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Eliminar</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lista de comandos que se pueden ejecutar automáticamente sin intervención del usuario</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Archivos de texto|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exportar entradas de inicio...</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Seleccione un directorio vacío para la copia de seguridad.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Administrador de inicio</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Mostrar servicios</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Afficher tout</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Afficher les entrées de démarrage</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Afficher les tâches</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Afficher les extensions de navigateur</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Rafraîchir</value>\r\n    <comment>更新</comment>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Fermer</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exporter...</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Liste de commandes pouvant s'exécuter automatiquement sans intervention uyilisateur</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Nom du programme</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Activé</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Éditeur</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Emplacement</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Commande</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ouvrir l'emplacement de l'exécutable</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Ouvrir l'emplacement du lien</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Lance&amp;r la commande</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copier dans le presse-papiers</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Créer une &amp;sauvegarde...</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Déplacer vers le registre</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Lancer pour tous utilisateurs</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Activé</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Supprimer</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Fichiers texte|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exporter les entrées de démarrage...</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Sélectionner un dossier vide pour la sauvegarde.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Gestionnaire de Démarrage</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Afficher les services</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Minden tartalom mutatása</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Indítópult bejegyzések mutatása</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Feladatok mutatása</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Böngésző kiterjesztések mutatása</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Show szolgáltatások</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Frissítés</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Bezárás</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exportálás...</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Program neve</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Engedélyezve</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Kiadó</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Hely</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Parancs</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>F&amp;uttatható helyének megnyitása</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Hivatkozás helyének megnyitása</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Parancs futtatása</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Másolás a &amp;Vágólapra</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Me&amp;ntés létrehozása...</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Áthelyezés a registry-be</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Futtatás az összes felhasználó részére</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Engedélyezve</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Törlés</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Felhasználói beavatkozás nélkül automatikusan végrehajtható parancsok listája</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Szövegfájlok|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Indítópult bejegyzések exportálása...</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Válasszon ki egy üres könyvtárat a mentéshez.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Indítópult kezelő</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Mostra tutto</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Mostra le voci di avvio</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Mostra le attività</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Mostra le estensioni del browser</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Mostra i servizi</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Aggiorna</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Chiudi</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Esporta...</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Nome del programma</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Abilita</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Editore</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Posizione</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Comando</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Apri posizione dell'eseguibile</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Apri posizione del link</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Esegui comando</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copia nella clipboard</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Crea &amp;backup</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Sposta nel registro</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Esegui per tutti gli utenti</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Abilita</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Cancella</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lista di comandi che possono essere eseguiti automaticamente senza l'intervento dell'utente</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>File di testo|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Esporta voci dell'avvio</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Seleziona una cartella vuota per il backup.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Gestore dell'avvio</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\n    <value>すべてを表示</value>\n  </data>\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\n    <value>スタートアップエントリーを表示</value>\n  </data>\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\n    <value>タスクの表示</value>\n  </data>\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\n    <value>ブラウザ拡張機能を表示</value>\n  </data>\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\n    <value>サービスを表示</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>閉じる</value>\n  </data>\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\n    <value>エクスポート...</value>\n  </data>\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\n    <value>プログラム名</value>\n  </data>\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\n    <value>有効</value>\n  </data>\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\n    <value>発行者</value>\n  </data>\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\n    <value>位置</value>\n  </data>\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\n    <value>コマンド</value>\n  </data>\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;実行可能ファイルの場所を開く</value>\n  </data>\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>リンクの場所を開く</value>\n  </data>\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;コマンドを実行</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;クリップボードにコピー</value>\n  </data>\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;バックアップを作成...</value>\n  </data>\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>レジストリに移動</value>\n  </data>\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>すべてのユーザーのために実行</value>\n  </data>\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;有効</value>\n  </data>\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;削除</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>ユーザーの介入なしに自動的に実行できるコマンドのリスト</value>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>テキストファイル|*.txt</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>スタートアップエントリをエクスポート...</value>\n  </data>\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\n    <value>バックアップ用の空のディレクトリを選択してください。</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>スタートアップマネージャー</value>\n  </data>\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\n    <value>更新</value>\n    <comment>更新</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Alles weergeven</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Autostart registraties weergeven</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Taken weergeven</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Browser extensies wergeven</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Services weergeven</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Verversen</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Sluiten</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exporteren</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Programma naam</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Ingeschakeld</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Uitgever</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Opslag locatie</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Opdracht</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>EXE-opslag locatie openen</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Link opslag locatie openen</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Opdracht uitvoeren</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kopieer naar klembord</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Back-up van register maken...</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Verplaatsen naar het register</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Voor alle gebruikers uitvoeren</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ingeschakeld</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Verwijderen</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Opdrachten die automatisch kunnen worden uitgevoerd, zonder gebruikersinterventie</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Tekst bestanden|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Opstart registraties exporteren...</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Selecteer een lege map voor de back-up</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Opstartmanager starten</value>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Pokaż wszystko</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Pokaż wpisy startowe</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Pokaż zadania</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Pokaż rozszerzenia przeglądarek</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Odśwież</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Zamknij</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Eksportuj...</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Nazwa programu</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Włączony</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Wydawca</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Lokalizacja</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Komenda</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Otwórz lokalizację aplikacji</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Otwórz lokalizację łącza</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Uruchom komendę</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kopiuj do schowka</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Utwórz kopię zapasową...</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Przenieś do rejestru</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Wszyscy użytkownicy</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Włączony</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Usuń</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Aplikacje uruchamiane podczas startu systemu lub logowania</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Pliki tekstowe|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Eksportuj wpisy startowe...</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Wybierz pusty folder na pliki kopii zapasowej.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Menedżer Autostartu</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Pokaż usługi</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Mostrar tudo</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Mostrar entradas de inicialização</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Mostrar tarefas</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Mostrar extensões de navegador</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Mostrar serviços</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Atualizar</value>\r\n    <comment>更新</comment>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Fechar</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exportar...</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Nome do programa</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Ativado</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Editor</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Local</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Comando</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Abrir local do executável</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir a local do link</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Executar o comando</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copiar para a área de transferência</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Criar &amp;cópia de segurança...</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mover para o registro</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Executar para todos os usuários</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Ativado</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>E&amp;xcluir</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lista de comandos que podem ser executados automaticamente sem a intervenção do usuário</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Arquivos texto|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exportar as entradas de inicialização...</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Selecione um diretório vazio para o backup.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Gerenciador de Inicialização</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Mostrar tudo</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Mostrar as entradas de inicialização</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Mostrar as tarefas</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Mostrar as extensões do navegador</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Refrescar</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Fechar</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Exportar...</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Nome do programa</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Activado</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Editor</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Localização</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Comando</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Abrir a localização do executável</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Abrir a localização do link</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Executar o comando</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copiar para a área de transferência</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Criar &amp;cópia de segurança...</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Mover para o registo</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Executar para todos os utilizadores</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Activado</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Suprimido</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Lista de comandos que podem ser executados sem a intervgenção do utilizador</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Ficheiros texto|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Exportar as entradas de inicialização...</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Seleccionar uma pasta vazia para a cópia de segurança</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Gestor de inicialização</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Mostrar serviços</value>\r\n  </data>\r\n  <metadata name=\"contextMenuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>12, 17</value>\r\n  </metadata>\r\n  <metadata name=\"exportDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>157, 17</value>\r\n  </metadata>\r\n  <metadata name=\"folderBrowserDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>279, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"comboBoxFilter.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Show everything</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Show startup entries</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Show tasks</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Show browser extensions</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Show services</value>\r\n  </data>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"comboBoxFilter.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 1</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"comboBoxFilter.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>576, 23</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"comboBoxFilter.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxFilter.Name\" xml:space=\"preserve\">\r\n    <value>comboBoxFilter</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxFilter.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxFilter.Parent\" xml:space=\"preserve\">\r\n    <value>panel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;comboBoxFilter.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel5.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"panel5.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>178, 6</value>\r\n  </data>\r\n  <data name=\"panel5.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel5.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 1, 0, 0</value>\r\n  </data>\r\n  <data name=\"panel5.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>576, 27</value>\r\n  </data>\r\n  <data name=\"panel5.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>8</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.Name\" xml:space=\"preserve\">\r\n    <value>panel5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel5.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"panel4.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"panel4.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>754, 6</value>\r\n  </data>\r\n  <data name=\"panel4.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel4.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>7, 27</value>\r\n  </data>\r\n  <data name=\"panel4.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>7, 27</value>\r\n  </data>\r\n  <data name=\"panel4.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>7, 27</value>\r\n  </data>\r\n  <data name=\"panel4.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>7</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Name\" xml:space=\"preserve\">\r\n    <value>panel4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel4.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"panel3.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"panel3.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>171, 6</value>\r\n  </data>\r\n  <data name=\"panel3.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel3.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>7, 27</value>\r\n  </data>\r\n  <data name=\"panel3.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>7, 27</value>\r\n  </data>\r\n  <data name=\"panel3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>7, 27</value>\r\n  </data>\r\n  <data name=\"panel3.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Name\" xml:space=\"preserve\">\r\n    <value>panel3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel3.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>91, 6</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>2590, 27</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>0, 27</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>12, 0, 12, 0</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>80, 27</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Refresh</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonRefresh.Name\" xml:space=\"preserve\">\r\n    <value>buttonRefresh</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonRefresh.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonRefresh.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonRefresh.ZOrder\" xml:space=\"preserve\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>84, 6</value>\r\n  </data>\r\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel1.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>7, 27</value>\r\n  </data>\r\n  <data name=\"panel1.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>7, 27</value>\r\n  </data>\r\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>7, 27</value>\r\n  </data>\r\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\r\n    <value>panel1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\r\n    <value>4</value>\r\n  </data>\r\n  <data name=\"buttonCancel.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonCancel.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Right</value>\r\n  </data>\r\n  <data name=\"buttonCancel.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>761, 6</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonCancel.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>2590, 27</value>\r\n  </data>\r\n  <data name=\"buttonCancel.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>0, 27</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>12, 0, 12, 0</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>70, 27</value>\r\n  </data>\r\n  <data name=\"buttonCancel.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>3</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Close</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCancel.Name\" xml:space=\"preserve\">\r\n    <value>buttonCancel</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCancel.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCancel.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonCancel.ZOrder\" xml:space=\"preserve\">\r\n    <value>5</value>\r\n  </data>\r\n  <data name=\"buttonExport.AutoSize\" type=\"System.Boolean, mscorlib\">\r\n    <value>True</value>\r\n  </data>\r\n  <data name=\"buttonExport.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\r\n    <value>GrowAndShrink</value>\r\n  </data>\r\n  <data name=\"buttonExport.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Left</value>\r\n  </data>\r\n  <data name=\"buttonExport.ImeMode\" type=\"System.Windows.Forms.ImeMode, System.Windows.Forms\">\r\n    <value>NoControl</value>\r\n  </data>\r\n  <data name=\"buttonExport.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 6</value>\r\n  </data>\r\n  <data name=\"buttonExport.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"buttonExport.MaximumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>2590, 27</value>\r\n  </data>\r\n  <data name=\"buttonExport.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>0, 27</value>\r\n  </data>\r\n  <data name=\"buttonExport.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>12, 0, 12, 0</value>\r\n  </data>\r\n  <data name=\"buttonExport.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>84, 27</value>\r\n  </data>\r\n  <data name=\"buttonExport.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Export...</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExport.Name\" xml:space=\"preserve\">\r\n    <value>buttonExport</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExport.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExport.Parent\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;buttonExport.ZOrder\" xml:space=\"preserve\">\r\n    <value>6</value>\r\n  </data>\r\n  <data name=\"panel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Bottom</value>\r\n  </data>\r\n  <data name=\"panel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 539</value>\r\n  </data>\r\n  <data name=\"panel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"panel2.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>0, 6, 0, 0</value>\r\n  </data>\r\n  <data name=\"panel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>831, 33</value>\r\n  </data>\r\n  <data name=\"panel2.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Name\" xml:space=\"preserve\">\r\n    <value>panel2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;panel2.ZOrder\" xml:space=\"preserve\">\r\n    <value>2</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Program name</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>176</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Enabled</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>58</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Publisher</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>102</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Location</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>112</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Command</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>213</value>\r\n  </data>\r\n  <metadata name=\"contextMenuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>12, 17</value>\r\n  </metadata>\r\n  <data name=\"openFileLocationToolStripMenuItem.Font\" type=\"System.Drawing.Font, System.Drawing\">\r\n    <value>Tahoma, 8.25pt, style=Bold</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>217, 22</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Open executable location</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>217, 22</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Open link location</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>217, 22</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Run command</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator2.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>214, 6</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>217, 22</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Copy to clipboard</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>217, 22</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Create &amp;backup...</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>214, 6</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>217, 22</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Move to registry</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>217, 22</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Run for all users</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator3.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>214, 6</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>217, 22</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Enabled</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>217, 22</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Delete</value>\r\n  </data>\r\n  <data name=\"contextMenuStrip.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>218, 220</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;contextMenuStrip.Name\" xml:space=\"preserve\">\r\n    <value>contextMenuStrip</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;contextMenuStrip.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"listView1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"listView1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 23</value>\r\n  </data>\r\n  <data name=\"listView1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"listView1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>817, 502</value>\r\n  </data>\r\n  <data name=\"listView1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listView1.Name\" xml:space=\"preserve\">\r\n    <value>listView1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listView1.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.ObjectListView, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listView1.Parent\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;listView1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>7, 7</value>\r\n  </data>\r\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 7</value>\r\n  </data>\r\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>831, 532</value>\r\n  </data>\r\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>List of commands that can be executed automatically without user intervention</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\r\n    <value>groupBox1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <metadata name=\"exportDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>157, 17</value>\r\n  </metadata>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Text files|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Export startup entries...</value>\r\n  </data>\r\n  <metadata name=\"folderBrowserDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>279, 17</value>\r\n  </metadata>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Select an empty directory for the backup.</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>845, 579</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.MinimumSize\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>429, 190</value>\r\n  </data>\r\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>7, 7, 7, 7</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Startup Manager</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeader1.Name\" xml:space=\"preserve\">\r\n    <value>columnHeader1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeader1.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeader5.Name\" xml:space=\"preserve\">\r\n    <value>columnHeader5</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeader5.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeader2.Name\" xml:space=\"preserve\">\r\n    <value>columnHeader2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeader2.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeader3.Name\" xml:space=\"preserve\">\r\n    <value>columnHeader3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeader3.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeader4.Name\" xml:space=\"preserve\">\r\n    <value>columnHeader4</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;columnHeader4.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openFileLocationToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>openFileLocationToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openFileLocationToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openLinkLocationToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>openLinkLocationToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;openLinkLocationToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;runCommandToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>runCommandToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;runCommandToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator2.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator2</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator2.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;copyToClipboardToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>copyToClipboardToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;copyToClipboardToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;createBackupToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>createBackupToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;createBackupToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator1.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;moveToRegistryToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>moveToRegistryToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;moveToRegistryToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;runForAllUsersToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>runForAllUsersToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;runForAllUsersToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator3.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator3</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator3.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;enableToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>enableToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;enableToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;deleteToolStripMenuItem.Name\" xml:space=\"preserve\">\r\n    <value>deleteToolStripMenuItem</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;deleteToolStripMenuItem.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exportDialog.Name\" xml:space=\"preserve\">\r\n    <value>exportDialog</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;exportDialog.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;folderBrowserDialog.Name\" xml:space=\"preserve\">\r\n    <value>folderBrowserDialog</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;folderBrowserDialog.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.FolderBrowserDialog, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>StartupManagerWindow</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Показать все</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Показать записи автозагрузки</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Показать задачи</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Показать расширения браузера</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Обновить</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Закрыть</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Экспорт...</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Имя программы</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Включено</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Издатель</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Расположение</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Команда</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Открыть расположение</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Открыть папку ссылки</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Выполнить команду</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Копировать в буфер</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Создать &amp;бэкап...</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Перейти в реестр</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Запуск для всех пользователей</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Включено</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Удалить</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Список автозагружаемых программ при запуске ОС или входе в систему</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Текстровые файлы|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Экспорт записей автозагрузки...</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Выберите пустой каталог для резервного копирования.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Менеджер автозагрузки</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Показать службы</value>\r\n  </data>\r\n  <metadata name=\"contextMenuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>12, 17</value>\r\n  </metadata>\r\n  <metadata name=\"exportDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>157, 17</value>\r\n  </metadata>\r\n  <metadata name=\"folderBrowserDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>279, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\r\n    <value>Prikaži vse</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\r\n    <value>Prikaži zagonske vnose</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\r\n    <value>Prikaži opravila</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\r\n    <value>Prikaži razširitve brskalnika</value>\r\n  </data>\r\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\r\n    <value>Osveži</value>\r\n  </data>\r\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\r\n    <value>Zapri</value>\r\n  </data>\r\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\r\n    <value>Izvozi...</value>\r\n  </data>\r\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\r\n    <value>Ime programa</value>\r\n  </data>\r\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\r\n    <value>Omogočen</value>\r\n  </data>\r\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\r\n    <value>Založnik</value>\r\n  </data>\r\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\r\n    <value>Mesto</value>\r\n  </data>\r\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\r\n    <value>Ukaz</value>\r\n  </data>\r\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Odpri mesto izvršljive</value>\r\n  </data>\r\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Odpri mesto povezave</value>\r\n  </data>\r\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zaženi &amp;ukaz</value>\r\n  </data>\r\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Kopiraj v odložišče</value>\r\n  </data>\r\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Naredi &amp;varnostno kopijo...</value>\r\n  </data>\r\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Premakni v register</value>\r\n  </data>\r\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>Zaženi za vse uporabnike</value>\r\n  </data>\r\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Omogočen</value>\r\n  </data>\r\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\r\n    <value>&amp;Izbriši</value>\r\n  </data>\r\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\r\n    <value>Seznam ukazov, ki jih je mogoče samodejno izvesti brez uporabnikovega posega</value>\r\n  </data>\r\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\r\n    <value>Besedilne datoteke|*.txt</value>\r\n  </data>\r\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\r\n    <value>Izvozi zagonske vnose...</value>\r\n  </data>\r\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\r\n    <value>Izberite prazen imenik za varnostno kopijo.</value>\r\n  </data>\r\n  <data name=\"$this.Text\" xml:space=\"preserve\">\r\n    <value>Upravitelj zagona</value>\r\n  </data>\r\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\r\n    <value>Prikaži storitve</value>\r\n  </data>\r\n  <metadata name=\"contextMenuStrip.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>12, 17</value>\r\n  </metadata>\r\n  <metadata name=\"exportDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>157, 17</value>\r\n  </metadata>\r\n  <metadata name=\"folderBrowserDialog.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>279, 17</value>\r\n  </metadata>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\n    <value>Visa allt</value>\n  </data>\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\n    <value>Visa startposter</value>\n  </data>\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\n    <value>Visa uppgifter</value>\n  </data>\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\n    <value>Visa webbläsartillägg</value>\n  </data>\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\n    <value>Visa tjänster</value>\n  </data>\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\n    <value>Uppdatera</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Stäng</value>\n  </data>\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\n    <value>Exportera...</value>\n  </data>\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\n    <value>Programnamn</value>\n  </data>\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\n    <value>Aktiverad</value>\n  </data>\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\n    <value>Utgivare</value>\n  </data>\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\n    <value>Plats</value>\n  </data>\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\n    <value>Kommando</value>\n  </data>\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Öppna den körbara filens plats</value>\n  </data>\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Öppna länkplatsen</value>\n  </data>\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kör kommando</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kopiera till urklipp</value>\n  </data>\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Skapa &amp;säkerhetskopia...</value>\n  </data>\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Flytta till register</value>\n  </data>\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Kör för alla användare</value>\n  </data>\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Aktiverad</value>\n  </data>\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Radera</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Lista över kommandon som kan utföras automatiskt utan användarens inblandning</value>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>Text filer|*.txt</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>Exportera startposter…</value>\n  </data>\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\n    <value>Välj en tom mapp för säkerhetskopian.</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Uppstartshanterare</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\n    <value>Her şeyi göster</value>\n  </data>\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\n    <value>Başlangıç girişlerini göster</value>\n  </data>\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\n    <value>Görevleri göster</value>\n  </data>\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\n    <value>Tarayıcı eklentilerini göster</value>\n  </data>\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\n    <value>Servisleri göster</value>\n  </data>\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\n    <value>Yenile</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Kapat</value>\n  </data>\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\n    <value>Dışarıya aktar...</value>\n  </data>\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\n    <value>Program adı</value>\n  </data>\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\n    <value>Etkin</value>\n  </data>\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\n    <value>Yayıncı</value>\n  </data>\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\n    <value>Yer</value>\n  </data>\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\n    <value>Komut</value>\n  </data>\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Çalıştırılabilir konumu aç</value>\n  </data>\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Bağlantı konumunu aç</value>\n  </data>\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Çalıştır komutu</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Panoya kopyala</value>\n  </data>\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Oluştur ve &amp;yedekle ...</value>\n  </data>\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Kayıt defterine taşı</value>\n  </data>\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Tüm kullanıcılar için çalıştır</value>\n  </data>\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Etkin</value>\n  </data>\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Sil</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Kullanıcı müdahalesi olmadan otomatik olarak çalıştırılabilen komutların listesi</value>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>Metin dosyaları|* .txt</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>Başlangıç girişlerini dışa aktar ...</value>\n  </data>\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\n    <value>Yedekleme için boş bir dizin seçin.</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Başlangıç Yöneticisi</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\n    <value>Hiển thị tất cả</value>\n  </data>\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\n    <value>Hiển thị các mục khởi động cùng hệ thống</value>\n  </data>\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\n    <value>Hiển thị các tác vụ</value>\n  </data>\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\n    <value>Hiển thị các các tiện ích mở rộng của trình duyệt</value>\n  </data>\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\n    <value>Hiển thị các dịch vụ</value>\n  </data>\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\n    <value>Làm mới</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>Đóng</value>\n  </data>\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\n    <value>Xuất...</value>\n  </data>\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\n    <value>Tên chường trình</value>\n  </data>\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\n    <value>Đã kích hoạt</value>\n  </data>\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\n    <value>Nhà phát hành</value>\n  </data>\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\n    <value>Vị trí</value>\n  </data>\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\n    <value>Câu lệnh</value>\n  </data>\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Mở vị trí tệp thực thi</value>\n  </data>\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Mở liên kết</value>\n  </data>\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Thực thi câu lệnh</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Sao chép vào bảng nhớ tạm</value>\n  </data>\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Tạo &amp;bản sao lưu</value>\n  </data>\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Di chuyển đến registry</value>\n  </data>\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>Chạy cho tất cả người dùng</value>\n  </data>\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Kích hoạt</value>\n  </data>\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>&amp;Xoá</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Danh sách các câu lệnh có thể được thực thi tự động mà không cần sự can thiệp của người dùng</value>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>Tệp văn bản|*.txt</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>Xuất các mục khởi động cùng hệ thống...</value>\n  </data>\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\n    <value>Chọn một thư mục trống để sao lưu.</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Trình quản lý Khởi động cùng hệ thống</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\n    <value>显示所有</value>\n  </data>\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\n    <value>显示开机启动项</value>\n  </data>\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\n    <value>显示任务</value>\n  </data>\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\n    <value>显示浏览器扩展</value>\n  </data>\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\n    <value>显示服务</value>\n  </data>\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\n    <value>刷新</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\n    <value>导出...</value>\n  </data>\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\n    <value>程序名称</value>\n  </data>\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\n    <value>启用</value>\n  </data>\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\n    <value>发布者</value>\n  </data>\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\n    <value>未知</value>\n  </data>\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\n    <value>命令</value>\n  </data>\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>打开可执行程序位置</value>\n  </data>\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>打开链接位置</value>\n  </data>\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>运行命令</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>复制到剪贴板</value>\n  </data>\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>创建备份</value>\n  </data>\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>移动到注册表</value>\n  </data>\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>为所有用户运行</value>\n  </data>\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>启用</value>\n  </data>\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>无需用户干预即可自动执行的命令列表</value>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>文本文件|*.txt</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>导出开机启动项...</value>\n  </data>\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\n    <value>选择空文件夹用于备份。</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>开机启动项管理器</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Dialogs/StartupManagerWindow.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"comboBoxFilter.Items\" xml:space=\"preserve\">\n    <value>顯示所有</value>\n  </data>\n  <data name=\"comboBoxFilter.Items1\" xml:space=\"preserve\">\n    <value>顯示開機啟動項目</value>\n  </data>\n  <data name=\"comboBoxFilter.Items2\" xml:space=\"preserve\">\n    <value>顯示任務</value>\n  </data>\n  <data name=\"comboBoxFilter.Items3\" xml:space=\"preserve\">\n    <value>顯示瀏覽器元件</value>\n  </data>\n  <data name=\"comboBoxFilter.Items4\" xml:space=\"preserve\">\n    <value>顯示服務</value>\n  </data>\n  <data name=\"buttonRefresh.Text\" xml:space=\"preserve\">\n    <value>重整</value>\n  </data>\n  <data name=\"buttonCancel.Text\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"buttonExport.Text\" xml:space=\"preserve\">\n    <value>匯出...</value>\n  </data>\n  <data name=\"columnHeader1.Text\" xml:space=\"preserve\">\n    <value>程式名稱</value>\n  </data>\n  <data name=\"columnHeader5.Text\" xml:space=\"preserve\">\n    <value>啟用</value>\n  </data>\n  <data name=\"columnHeader2.Text\" xml:space=\"preserve\">\n    <value>發布人員</value>\n  </data>\n  <data name=\"columnHeader3.Text\" xml:space=\"preserve\">\n    <value>位置</value>\n  </data>\n  <data name=\"columnHeader4.Text\" xml:space=\"preserve\">\n    <value>指令</value>\n  </data>\n  <data name=\"openFileLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>開啟可執行程式位置</value>\n  </data>\n  <data name=\"openLinkLocationToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>開啟連結位置</value>\n  </data>\n  <data name=\"runCommandToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>執行指令</value>\n  </data>\n  <data name=\"copyToClipboardToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>複製到剪貼簿</value>\n  </data>\n  <data name=\"createBackupToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>建立備份</value>\n  </data>\n  <data name=\"moveToRegistryToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>移動到登錄項目</value>\n  </data>\n  <data name=\"runForAllUsersToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>為所有使用者執行</value>\n  </data>\n  <data name=\"enableToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>啟用</value>\n  </data>\n  <data name=\"deleteToolStripMenuItem.Text\" xml:space=\"preserve\">\n    <value>刪除</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>無需使用者干預即可自動執行的指令清單</value>\n  </data>\n  <data name=\"exportDialog.Filter\" xml:space=\"preserve\">\n    <value>文字文件|*.txt</value>\n  </data>\n  <data name=\"exportDialog.Title\" xml:space=\"preserve\">\n    <value>匯出開機啟動項目...</value>\n  </data>\n  <data name=\"folderBrowserDialog.Description\" xml:space=\"preserve\">\n    <value>選擇空目錄用於備份。</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>開機啟動項目管理員</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Factory/ApplicationEntryTools.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools.Factory\r\n{\r\n    public static class ApplicationEntryTools\r\n    {\r\n        /// <summary>\r\n        /// Try to figure out if base uninstaller entry and other entry are pointing to the same application.\r\n        /// Minimum score changes how similar the applications have to be (best use small values, higher is harder)\r\n        /// Suggested min score is 1\r\n        /// </summary>\r\n        public static bool AreEntriesRelated(ApplicationUninstallerEntry baseEntry,\r\n            ApplicationUninstallerEntry otherEntry, int minimumScore)\r\n        {\r\n            var score = AreEntriesRelated(baseEntry, otherEntry);\r\n            return score > minimumScore;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Check how related are the two entries.\r\n        /// Values above 0 mean there is good confidence\r\n        /// </summary>\r\n        public static int AreEntriesRelated(ApplicationUninstallerEntry baseEntry, ApplicationUninstallerEntry otherEntry)\r\n        {\r\n            if (PathTools.PathsEqual(baseEntry.InstallLocation, otherEntry.InstallLocation))\r\n                return 100;\r\n\r\n            if (!string.IsNullOrEmpty(baseEntry.UninstallString))\r\n            {\r\n                if (PathTools.PathsEqual(baseEntry.UninstallString, otherEntry.UninstallString))\r\n                    return 100;\r\n\r\n                if (otherEntry.IsOrphaned \r\n                    && !string.IsNullOrEmpty(otherEntry.InstallLocation) \r\n                    && baseEntry.UninstallString.Contains(otherEntry.InstallLocation, StringComparison.InvariantCultureIgnoreCase))\r\n                    return 100;\r\n            }\r\n\r\n            if (otherEntry.IsOrphaned \r\n                && !string.IsNullOrEmpty(baseEntry.UninstallerLocation) && !string.IsNullOrEmpty(otherEntry.InstallLocation)\r\n                && baseEntry.UninstallerLocation.StartsWith(otherEntry.InstallLocation, StringComparison.InvariantCultureIgnoreCase))\r\n                return 100;\r\n            \r\n            var score = 0;\r\n\r\n            if(!string.IsNullOrEmpty(baseEntry.RatingId) && !string.IsNullOrEmpty(otherEntry.RatingId))\r\n                AddScore(ref score, -5, 0, 10, baseEntry.RatingId == otherEntry.RatingId);\r\n\r\n            if (!string.IsNullOrEmpty(baseEntry.InstallLocation) && !string.IsNullOrEmpty(otherEntry.InstallLocation))\r\n                AddScore(ref score, -8, 0, -3, baseEntry.InstallLocation.Contains(otherEntry.InstallLocation,\r\n                    StringComparison.InvariantCultureIgnoreCase));\r\n\r\n            AddScore(ref score, -5, 0, 3, baseEntry.Is64Bit != MachineType.Unknown && otherEntry.Is64Bit != MachineType.Unknown ? baseEntry.Is64Bit == otherEntry.Is64Bit : null);\r\n            AddScore(ref score, -3, -1, 5, CompareDates(baseEntry.InstallDate, otherEntry.InstallDate));\r\n\r\n            AddScore(ref score, -2, 0, 5, CompareStrings(baseEntry.DisplayVersion, otherEntry.DisplayVersion, true));\r\n            AddScore(ref score, -5, 0, 5, CompareStrings(baseEntry.Publisher, otherEntry.Publisher));\r\n\r\n            // Check if base entry was installed from inside other entry's install directory\r\n            if (string.IsNullOrEmpty(baseEntry.InstallLocation) && !string.IsNullOrEmpty(baseEntry.InstallSource) &&\r\n                !string.IsNullOrEmpty(otherEntry.InstallLocation) && otherEntry.InstallLocation.Length >= 5)\r\n            {\r\n                AddScore(ref score, 0, 0, 5, baseEntry.InstallSource.Contains(\r\n                    otherEntry.InstallLocation, StringComparison.InvariantCultureIgnoreCase));\r\n            }\r\n\r\n            var nameSimilarity = CompareStrings(baseEntry.DisplayName, otherEntry.DisplayName);\r\n            AddScore(ref score, -5, -2, 8, nameSimilarity);\r\n            if (!nameSimilarity.HasValue || nameSimilarity == false)\r\n            {\r\n                var trimmedSimilarity = CompareStrings(baseEntry.DisplayNameTrimmed, otherEntry.DisplayNameTrimmed);\r\n                // Don't risk it if names can't be compared at all\r\n                //if (!trimmedSimilarity.HasValue && !nameSimilarity.HasValue) return false;\r\n                AddScore(ref score, -5, -2, 8, trimmedSimilarity);\r\n            }\r\n\r\n            try\r\n            {\r\n                AddScore(ref score, -2, -2, 5, CompareStrings(baseEntry.DisplayNameTrimmed.Length < 5 ? \r\n                    baseEntry.DisplayName : baseEntry.DisplayNameTrimmed, Path.GetFileName(otherEntry.InstallLocation)));\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Debug.Fail(ex.Message);\r\n            }\r\n            //Debug.Assert(score <= 0);\r\n            return score;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Check if dates are very close together, or if they differ by a few hours.\r\n        /// Result is null if the length of the difference can't be compared confidently.\r\n        /// </summary>\r\n        private static bool? CompareDates(DateTime a, DateTime b)\r\n        {\r\n            if (a.IsDefault() || b.IsDefault())\r\n                return null;\r\n\r\n            var totalHours = Math.Abs((a - b).TotalHours);\r\n\r\n            if (totalHours > 40) return null;\r\n\r\n            if (totalHours <= 1)\r\n                return true;\r\n\r\n            // One of the dates is lacking time part, so can't be compared\r\n            if (a.TimeOfDay.TotalSeconds < 1 || b.TimeOfDay.TotalSeconds < 1)\r\n                return null;\r\n\r\n            return totalHours <= 1;\r\n        }\r\n\r\n        private static bool? CompareStrings(string a, string b, bool relaxMatchRequirement = false)\r\n        {\r\n            var lengthRequirement = !relaxMatchRequirement ? 5 : 4;\r\n            if (a == null || (a.Length < lengthRequirement) || b == null || b.Length < lengthRequirement)\r\n                return null;\r\n\r\n            if (relaxMatchRequirement)\r\n            {\r\n                if (a.StartsWith(b, StringComparison.Ordinal) || b.StartsWith(a, StringComparison.Ordinal))\r\n                    return true;\r\n            }\r\n\r\n            var changesRequired = Sift4.SimplestDistance(a, b, 3);\r\n            return changesRequired == 0 || changesRequired < a.Length / 6;\r\n        }\r\n\r\n        private static void AddScore(ref int score, int failScore, int unsureScore, int successScore, bool? testResult)\r\n        {\r\n            if (!testResult.HasValue) score += unsureScore;\r\n            else score = testResult.Value ? score + successScore : score + failScore;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Check if path points to the windows installer program or to a .msi package\r\n        /// </summary>\r\n        /// <param name=\"path\"></param>\r\n        /// <returns></returns>\r\n        public static bool PathPointsToMsiExec(string path)\r\n        {\r\n            if (string.IsNullOrEmpty(path))\r\n                return false;\r\n\r\n            return path.ContainsAny(new[] { \"msiexec \", \"msiexec.exe\" }, StringComparison.OrdinalIgnoreCase)\r\n                   || path.EndsWith(\".msi\", StringComparison.OrdinalIgnoreCase);\r\n        }\r\n\r\n        public static string CleanupDisplayVersion(string version)\r\n        {\r\n            return version?.Replace(\", \", \".\").Replace(\". \", \".\").Replace(\",\", \".\").Replace(\". \", \".\").Trim();\r\n        }\r\n\r\n        public static string ExtractDirectoryName(string uninstallerLocation)\r\n        {\r\n            if (!string.IsNullOrEmpty(uninstallerLocation))\r\n            {\r\n                try\r\n                {\r\n                    return Path.GetDirectoryName(uninstallerLocation);\r\n                }\r\n                catch (ArgumentException) { }\r\n                catch (PathTooLongException) { }\r\n            }\r\n\r\n            return null;\r\n        }\r\n\r\n        public static string ExtractFullFilename(string uninstallString)\r\n        {\r\n            if (!string.IsNullOrEmpty(uninstallString))\r\n            {\r\n                try\r\n                {\r\n                    var fileName = ProcessTools.SeparateArgsFromCommand(uninstallString).FileName;\r\n\r\n                    Debug.Assert(!string.IsNullOrEmpty(fileName?.Trim()),\r\n                        $@\"SeparateArgsFromCommand failed for {fileName}\");\r\n\r\n                    return fileName;\r\n                }\r\n                catch (ArgumentException) { }\r\n                catch (FormatException) { }\r\n            }\r\n\r\n            return null;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/ApplicationUninstallerFactory.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Linq;\r\nusing System.Threading.Tasks;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.IO;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Factory.InfoAdders;\r\nusing UninstallTools.Properties;\r\nusing UninstallTools.Startup;\r\n\r\nnamespace UninstallTools.Factory\r\n{\r\n    public static class ApplicationUninstallerFactory\r\n    {\r\n        private static readonly InfoAdderManager InfoAdder = new();\r\n\r\n        public static IList<ApplicationUninstallerEntry> GetUninstallerEntries(ListGenerationProgress.ListGenerationCallback callback)\r\n        {\r\n            const int totalStepCount = 8;\r\n            var currentStep = 1;\r\n\r\n            var concurrentFactory = new ConcurrentApplicationFactory(GetMiscUninstallerEntries);\r\n\r\n            try\r\n            {\r\n                // Find msi products ---------------------------------------------------------------------------------------\r\n                var msiProgress = new ListGenerationProgress(currentStep++, totalStepCount, Localisation.Progress_MSI);\r\n                callback(msiProgress);\r\n                var msiGuidCount = 0;\r\n                var msiProducts = MsiTools.MsiEnumProducts().DoForEach(x =>\r\n                {\r\n                    msiProgress.Inner = new ListGenerationProgress(0, -1, string.Format(Localisation.Progress_MSI_sub, ++msiGuidCount));\r\n                    callback(msiProgress);\r\n                }).ToList();\r\n\r\n                // Run some factories in a separate thread -----------------------------------------------------------------\r\n                concurrentFactory.Start();\r\n                // Start populating lookups now before they are needed since they can take a few seconds\r\n                Task.Run(MsiTools.InitLookups);\r\n\r\n                // Find stuff mentioned in registry ------------------------------------------------------------------------\r\n                IList<ApplicationUninstallerEntry> registryResults;\r\n                if (UninstallToolsGlobalConfig.ScanRegistry)\r\n                {\r\n                    var regProgress = new ListGenerationProgress(currentStep++, totalStepCount,\r\n                        Localisation.Progress_Registry);\r\n                    callback(regProgress);\r\n\r\n                    var sw = Stopwatch.StartNew();\r\n                    var registryFactory = new RegistryFactory(msiProducts);\r\n                    registryResults = registryFactory.GetUninstallerEntries(report =>\r\n                    {\r\n                        regProgress.Inner = report;\r\n                        callback(regProgress);\r\n                    });\r\n                    Trace.WriteLine($\"[Performance] Factory {nameof(RegistryFactory)} took {sw.ElapsedMilliseconds}ms to finish\");\r\n\r\n                    // Fill in install llocations for DirectoryFactory to improve speed and quality of results\r\n                    if (UninstallToolsGlobalConfig.UninstallerFactoryCache != null)\r\n                        ApplyCache(registryResults, UninstallToolsGlobalConfig.UninstallerFactoryCache, InfoAdder);\r\n\r\n                    var installLocAddProgress = new ListGenerationProgress(currentStep++, totalStepCount, Localisation.Progress_GatherUninstallerInfo);\r\n                    callback(installLocAddProgress);\r\n\r\n                    FactoryThreadedHelpers.GenerateMissingInformation(registryResults, InfoAdder, null, true, report =>\r\n                    {\r\n                        installLocAddProgress.Inner = report;\r\n                        callback(installLocAddProgress);\r\n                    });\r\n                }\r\n                else\r\n                {\r\n                    registryResults = new List<ApplicationUninstallerEntry>();\r\n                }\r\n\r\n                // Look for entries on drives, based on info in registry. ----------------------------------------------------\r\n                // Will introduce duplicates to already detected stuff. Need to check for duplicates with other entries later.\r\n                IList<ApplicationUninstallerEntry> driveResults;\r\n                if (UninstallToolsGlobalConfig.ScanDrives)\r\n                {\r\n                    var driveProgress = new ListGenerationProgress(currentStep++, totalStepCount, Localisation.Progress_DriveScan);\r\n                    callback(driveProgress);\r\n\r\n                    var sw = Stopwatch.StartNew();\r\n                    var driveFactory = new DirectoryFactory(registryResults);\r\n                    driveResults = driveFactory.GetUninstallerEntries(report =>\r\n                    {\r\n                        driveProgress.Inner = report;\r\n                        callback(driveProgress);\r\n                    });\r\n                    Trace.WriteLine($\"[Performance] Factory {nameof(DirectoryFactory)} took {sw.ElapsedMilliseconds}ms to finish\");\r\n                }\r\n                else\r\n                {\r\n                    driveResults = new List<ApplicationUninstallerEntry>();\r\n                }\r\n\r\n                // Join up with the thread ----------------------------------------------------------------------------------\r\n                var miscProgress = new ListGenerationProgress(currentStep++, totalStepCount, Localisation.Progress_AppStores);\r\n                callback(miscProgress);\r\n                var otherResults = concurrentFactory.GetResults(callback, miscProgress);\r\n\r\n                // Handle duplicate entries ----------------------------------------------------------------------------------\r\n                var mergeProgress = new ListGenerationProgress(currentStep++, totalStepCount, Localisation.Progress_Merging);\r\n                callback(mergeProgress);\r\n                var mergedResults = registryResults.ToList();\r\n                MergeResults(mergedResults, otherResults, report =>\r\n                {\r\n                    mergeProgress.Inner = report;\r\n                    report.TotalCount *= 2;\r\n                    report.Message = Localisation.Progress_Merging_Stores;\r\n                    callback(mergeProgress);\r\n                });\r\n                // Make sure to merge driveResults last\r\n                MergeResults(mergedResults, driveResults, report =>\r\n                {\r\n                    mergeProgress.Inner = report;\r\n                    report.CurrentCount += report.TotalCount;\r\n                    report.TotalCount *= 2;\r\n                    report.Message = Localisation.Progress_Merging_Drives;\r\n                    callback(mergeProgress);\r\n                });\r\n\r\n                // Fill in any missing information -------------------------------------------------------------------------\r\n                if (UninstallToolsGlobalConfig.UninstallerFactoryCache != null)\r\n                    ApplyCache(mergedResults, UninstallToolsGlobalConfig.UninstallerFactoryCache, InfoAdder);\r\n\r\n                var infoAddProgress = new ListGenerationProgress(currentStep++, totalStepCount, Localisation.Progress_GeneratingInfo);\r\n                callback(infoAddProgress);\r\n                FactoryThreadedHelpers.GenerateMissingInformation(mergedResults, InfoAdder, msiProducts, false, report =>\r\n                {\r\n                    infoAddProgress.Inner = report;\r\n                    callback(infoAddProgress);\r\n                });\r\n\r\n                // Cache missing information to speed up future scans\r\n                if (UninstallToolsGlobalConfig.UninstallerFactoryCache != null)\r\n                {\r\n                    foreach (var entry in mergedResults)\r\n                        UninstallToolsGlobalConfig.UninstallerFactoryCache.TryCacheItem(entry);\r\n\r\n                    try\r\n                    {\r\n                        UninstallToolsGlobalConfig.UninstallerFactoryCache.Save();\r\n                    }\r\n                    catch (SystemException e)\r\n                    {\r\n                        Trace.WriteLine(@\"Failed to save cache: \" + e);\r\n                    }\r\n                }\r\n\r\n                // Detect startups and attach them to uninstaller entries ----------------------------------------------------\r\n                var startupsProgress = new ListGenerationProgress(currentStep, totalStepCount, Localisation.Progress_Startup);\r\n                callback(startupsProgress);\r\n                var i = 0;\r\n                var startupEntries = new List<StartupEntryBase>();\r\n                foreach (var factory in StartupManager.Factories)\r\n                {\r\n                    startupsProgress.Inner = new ListGenerationProgress(i++, StartupManager.Factories.Count, factory.Key);\r\n                    callback(startupsProgress);\r\n                    try\r\n                    {\r\n                        startupEntries.AddRange(factory.Value());\r\n                    }\r\n                    catch (Exception ex)\r\n                    {\r\n                        PremadeDialogs.GenericError(ex);\r\n                    }\r\n                }\r\n\r\n                startupsProgress.Inner = new ListGenerationProgress(1, 1, Localisation.Progress_Merging);\r\n                callback(startupsProgress);\r\n                try\r\n                {\r\n                    AttachStartupEntries(mergedResults, startupEntries);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    PremadeDialogs.GenericError(ex);\r\n                }\r\n\r\n                return mergedResults;\r\n            }\r\n            finally\r\n            {\r\n                concurrentFactory.Dispose();\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Merge new results into the base list\r\n        /// </summary>\r\n        internal static void MergeResults(ICollection<ApplicationUninstallerEntry> baseEntries,\r\n            ICollection<ApplicationUninstallerEntry> newResults, ListGenerationProgress.ListGenerationCallback progressCallback)\r\n        {\r\n            var newToAdd = new List<ApplicationUninstallerEntry>();\r\n            var progress = 0;\r\n            foreach (var entry in newResults)\r\n            {\r\n                progressCallback?.Invoke(new ListGenerationProgress(progress++, newResults.Count, null));\r\n\r\n                var matchedEntry = baseEntries.Select(x => new { x, score = ApplicationEntryTools.AreEntriesRelated(x, entry) })\r\n                    .Where(x => x.score >= 1)\r\n                    .OrderByDescending(x => x.score)\r\n                    .Select(x => x.x)\r\n                    .FirstOrDefault();\r\n\r\n                if (matchedEntry != null)\r\n                {\r\n                    // Prevent setting incorrect UninstallerType\r\n                    if (matchedEntry.UninstallPossible)\r\n                        entry.UninstallerKind = UninstallerType.Unknown;\r\n\r\n                    InfoAdder.CopyMissingInformation(matchedEntry, entry);\r\n                    continue;\r\n                }\r\n\r\n                // If the entry failed to match to anything, add it to the base results as new\r\n                newToAdd.Add(entry);\r\n            }\r\n\r\n            foreach (var newEntry in newToAdd)\r\n                baseEntries.Add(newEntry);\r\n        }\r\n\r\n        private static void ApplyCache(ICollection<ApplicationUninstallerEntry> baseEntries, ApplicationUninstallerFactoryCache cache, InfoAdderManager infoAdder)\r\n        {\r\n            var hits = 0;\r\n            foreach (var entry in baseEntries)\r\n            {\r\n                var matchedEntry = cache.TryGetCachedItem(entry);\r\n                if (matchedEntry != null)\r\n                {\r\n                    infoAdder.CopyMissingInformation(entry, matchedEntry);\r\n                    hits++;\r\n                }\r\n                else\r\n                {\r\n                    Debug.WriteLine(\"Cache miss: \" + entry.DisplayName);\r\n                }\r\n            }\r\n            Trace.WriteLine($@\"Cache hits: {hits}/{baseEntries.Count}\");\r\n        }\r\n\r\n        private static List<ApplicationUninstallerEntry> GetMiscUninstallerEntries(ListGenerationProgress.ListGenerationCallback progressCallback)\r\n        {\r\n            var otherResults = new List<ApplicationUninstallerEntry>();\r\n\r\n            var miscFactories = ReflectionTools.GetTypesImplementingBase<IIndependantUninstallerFactory>()\r\n                .Attempt(Activator.CreateInstance)\r\n                .Cast<IIndependantUninstallerFactory>()\r\n                .Where(x => x.IsEnabled())\r\n                .ToList();\r\n\r\n            var progress = 0;\r\n            foreach (var kvp in miscFactories)\r\n            {\r\n                progressCallback(new ListGenerationProgress(progress++, miscFactories.Count, kvp.DisplayName));\r\n                try\r\n                {\r\n                    var sw = Stopwatch.StartNew();\r\n                    MergeResults(otherResults, kvp.GetUninstallerEntries(null), null);\r\n                    Trace.WriteLine($\"[Performance] Factory {kvp.GetType().Name} took {sw.ElapsedMilliseconds}ms to finish\");\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    PremadeDialogs.GenericError(ex);\r\n                }\r\n            }\r\n\r\n            return otherResults;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Attach startup entries to uninstaller entries that are automatically detected as related.\r\n        /// </summary>\r\n        public static void AttachStartupEntries(IEnumerable<ApplicationUninstallerEntry> uninstallers, IEnumerable<StartupEntryBase> startupEntries)\r\n        {\r\n            // Using DoForEach to avoid multiple enumerations\r\n            StartupManager.AssignStartupEntries(uninstallers\r\n                .DoForEach(x => { if (x != null) x.StartupEntries = null; }), startupEntries);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/ApplicationUninstallerFactoryCache.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Drawing;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools.Factory\r\n{\r\n    public class ApplicationUninstallerFactoryCache\r\n    {\r\n        private ApplicationUninstallerFactoryCache(string filename, Dictionary<string, ApplicationUninstallerEntry> cacheData)\r\n        {\r\n            Filename = filename;\r\n            Cache = cacheData;\r\n        }\r\n\r\n        public ApplicationUninstallerFactoryCache(string filename) : this(filename, new Dictionary<string, ApplicationUninstallerEntry>())\r\n        {\r\n        }\r\n\r\n        public ApplicationUninstallerEntry TryGetCachedItem(ApplicationUninstallerEntry notCachedEntry)\r\n        {\r\n            var id = notCachedEntry?.GetCacheId();\r\n\r\n            if (!string.IsNullOrEmpty(id) && Cache.TryGetValue(id, out var matchedEntry))\r\n                return matchedEntry;\r\n\r\n            return null;\r\n        }\r\n\r\n        public void TryCacheItem(ApplicationUninstallerEntry item)\r\n        {\r\n            var id = item?.GetCacheId();\r\n            if (!string.IsNullOrEmpty(id))\r\n                Cache[id] = item;\r\n        }\r\n\r\n        private Dictionary<string, ApplicationUninstallerEntry> Cache { get; }\r\n\r\n        public string Filename { get; set; }\r\n        public bool SerializeIcons { get; set; }\r\n\r\n        private static byte[] SerializeIcon(Icon ic)\r\n        {\r\n            using (var stream = new MemoryStream())\r\n            {\r\n                ic.Save(stream);\r\n                return stream.ToArray();\r\n            }\r\n        }\r\n\r\n        private static Icon DeserializeIcon(byte[] bytes)\r\n        {\r\n            using (var stream = new MemoryStream(bytes, false))\r\n                return new Icon(stream);\r\n        }\r\n\r\n        public void Read()\r\n        {\r\n            try\r\n            {\r\n                var result = SerializationTools.DeserializeFromXml<List<CacheEntry>>(Filename);\r\n\r\n                Cache.Clear();\r\n\r\n                // Ignore entries if more than 1 have the same cache id\r\n                foreach (var group in result\r\n                                      .GroupBy(x => x.Entry.GetCacheId())\r\n                                      .Where(g => g.Key != null && g.CountEquals(1)))\r\n                {\r\n                    var cacheEntry = group.Single();\r\n\r\n                    if (SerializeIcons && cacheEntry.Icon != null)\r\n                        cacheEntry.Entry.IconBitmap = DeserializeIcon(cacheEntry.Icon);\r\n\r\n                    Cache.Add(group.Key, cacheEntry.Entry);\r\n                }\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                Console.WriteLine($@\"Failed to load cache from {Filename} - {e}\");\r\n                Cache.Clear();\r\n                File.Delete(Filename);\r\n            }\r\n        }\r\n\r\n        public void Save()\r\n        {\r\n            SerializationTools.SerializeToXml(Filename, Cache.Select(x => new CacheEntry(\r\n                x.Value,\r\n                SerializeIcons && x.Value.IconBitmap != null ? SerializeIcon(x.Value.IconBitmap) : null))\r\n                .ToList());\r\n        }\r\n\r\n        public class CacheEntry\r\n        {\r\n            public CacheEntry()\r\n            {\r\n            }\r\n\r\n            public CacheEntry(ApplicationUninstallerEntry entry, byte[] icon)\r\n            {\r\n                Entry = entry;\r\n                Icon = icon;\r\n            }\r\n\r\n            public ApplicationUninstallerEntry Entry { get; set; }\r\n            public byte[] Icon { get; set; }\r\n        }\r\n\r\n        public void Delete()\r\n        {\r\n            Cache.Clear();\r\n\r\n            try\r\n            {\r\n                File.Delete(Filename);\r\n            }\r\n            catch\r\n            {\r\n                System.Threading.Thread.Sleep(50);\r\n                File.Delete(Filename);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/ChocolateyFactory.cs",
    "content": "﻿using Klocman.Tools;\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing UninstallTools.Properties;\n\nnamespace UninstallTools.Factory\n{\n    public sealed class ChocolateyFactory : IIndependantUninstallerFactory\n    {\n        private static bool GetChocoInfo(out string chocoLocation)\n        {\n            chocoLocation = null;\n            try\n            {\n                var chocoPath = PathTools.GetFullPathOfExecutable(\"choco.exe\");\n                if (string.IsNullOrEmpty(chocoPath)) return false;\n\n                var result = StartProcessAndReadOutput(chocoPath, string.Empty);\n                if (result.StartsWith(\"Chocolatey\", StringComparison.Ordinal))\n                {\n                    chocoLocation = chocoPath;\n                    return true;\n                }\n            }\n            catch (SystemException ex)\n            {\n                Trace.WriteLine(\"Failed to get Choco info: \" + ex);\n            }\n            return false;\n        }\n\n        private static readonly string[] NewlineSeparators = StringTools.NewLineChars.ToArray();\n\n        public IList<ApplicationUninstallerEntry> GetUninstallerEntries(ListGenerationProgress.ListGenerationCallback progressCallback)\n        {\n            var results = new List<ApplicationUninstallerEntry>();\n\n            // Check on every reload in case Chocolatey was uninstalled since last reload\n            if (!GetChocoInfo(out var chocoFullFilename)) return results;\n            var versionResult = StartProcessAndReadOutput(chocoFullFilename, \"--version\");\n            if (string.IsNullOrEmpty(versionResult)) return results;\n\n            var versionString = versionResult.Trim();\n            string result;\n            if (Version.TryParse(versionString, out var version))\n            {\n                if (version >= new Version(2, 0, 0))\n                {\n                    result = StartProcessAndReadOutput(chocoFullFilename, @\"list -nocolor --detail\");\n                }\n                else\n                {\n                    result = StartProcessAndReadOutput(chocoFullFilename, @\"list -lo -nocolor --detail\");\n                }\n            }\n            else\n            {\n                Trace.WriteLine(\"Failed to parse Chocolatey version: \" + versionString);\n                return results;\n            }\n            \n            if (string.IsNullOrEmpty(result)) return results;\n\n            var re = new System.Text.RegularExpressions.Regex(@\"\\n\\w.+\\r\\n Title:\");\n            var match = re.Match(result);\n            if (!match.Success) return results;\n            var begin = match.Index + 1;\n\n            while (true)\n            {\n                match = match.NextMatch();\n                if (!match.Success) break;\n                var end = match.Index + 1;\n                var info = result.Substring(begin, end - begin);\n                int i = info.IndexOf(' '), j = info.IndexOf(\"\\r\\n\", StringComparison.Ordinal);\n                var appName = new { name = info.Substring(0, i), version = info.Substring(i + 1, j - i - 1) };\n\n                var kvps = ExtractPackageInformation(info);\n                if (kvps.Count == 0) continue;\n\n                var entry = new ApplicationUninstallerEntry();\n\n                AddInfo(entry, kvps, \"Title\", (e, s) => e.RawDisplayName = s);\n\n                entry.DisplayVersion = ApplicationEntryTools.CleanupDisplayVersion(appName.version);\n                entry.RatingId = \"Choco \" + appName.name;\n                entry.UninstallerKind = UninstallerType.Chocolatey;\n\n                AddInfo(entry, kvps, \"Summary\", (e, s) => e.Comment = s);\n                if (string.IsNullOrEmpty(entry.Comment))\n                {\n                    AddInfo(entry, kvps, \"Description\", (e, s) => e.Comment = s);\n                    if (string.IsNullOrEmpty(entry.Comment))\n                        AddInfo(entry, kvps, \"Tags\", (e, s) => e.Comment = s);\n                }\n\n                AddInfo(entry, kvps, \"Documentation\", (e, s) => e.AboutUrl = s);\n                if (string.IsNullOrEmpty(entry.AboutUrl))\n                {\n                    AddInfo(entry, kvps, \"Software Site\", (e, s) => e.AboutUrl = s);\n                    if (string.IsNullOrEmpty(entry.AboutUrl))\n                        AddInfo(entry, kvps, \"Chocolatey Package Source\", (e, s) => e.AboutUrl = s);\n                }\n\n                var psc = new ProcessStartCommand(chocoFullFilename, $\"uninstall {appName.name} -y -r\");\n\n                entry.UninstallString = psc.ToString();\n\n                if (entry.RawDisplayName == \"Chocolatey\")\n                    entry.InstallLocation = GetChocoInstallLocation(chocoFullFilename);\n\n                // Prevent chocolatey from trying to run the original uninstaller (it's deleted by now), only remove the package\n                psc.Arguments += \" -n --skipautouninstaller\";\n                var junk = new Junk.Containers.RunProcessJunk(entry, null, psc, Localisation.ChocolateyFactory_UninstallInChocolateyJunkName);\n                junk.Confidence.Add(Junk.Confidence.ConfidenceRecords.ExplicitConnection);\n                junk.Confidence.Add(4);\n                entry.AdditionalJunk.Add(junk);\n\n                results.Add(entry);\n                begin = end;\n            }\n\n            return results;\n        }\n\n        private static string GetChocoInstallLocation(string chocoFullFilename)\n        {\n            // The path is C:\\ProgramData\\chocolatey\\bin\\choco.exe OR C:\\ProgramData\\chocolatey\\choco.exe\n            var chocoLocation = Path.GetDirectoryName(chocoFullFilename);\n            if (chocoLocation != null && chocoLocation.EndsWith(@\"\\bin\", StringComparison.OrdinalIgnoreCase))\n                return chocoLocation.Substring(0, chocoLocation.Length - 4);\n            return chocoLocation;\n        }\n\n        private static void AddInfo(ApplicationUninstallerEntry target, Dictionary<string, string> source,\n            string key, Action<ApplicationUninstallerEntry, string> setter)\n        {\n            if (source.TryGetValue(key, out var val))\n            {\n                try\n                {\n                    setter(target, val);\n                }\n                catch (SystemException ex)\n                {\n                    Trace.WriteLine(@\"Exception while extracting info from choco: \" + ex.Message);\n                }\n            }\n        }\n\n        private static Dictionary<string, string> ExtractPackageInformation(string result)\n        {\n            // Parse the console output into lines, then into key-value pairs\n            var lines = result.Split(NewlineSeparators, StringSplitOptions.RemoveEmptyEntries)\n                .Where(x => x.Length > 2 && x[0] == ' ' && x[1] != ' ' && x.Contains(\": \"))\n                .Select(x => x.TrimStart())\n                .SelectMany(x => x.Split(new[] { \" | \" }, StringSplitOptions.None));\n\n            var kvps = new Dictionary<string, string>();\n            foreach (var line in lines)\n            {\n                var i = line.IndexOf(\": \", StringComparison.Ordinal);\n                if (i <= 0) continue;\n\n                var key = line.Substring(0, i);\n                var val = line.Substring(i + 2);\n                if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(val)) continue;\n\n                kvps.Add(key, val);\n            }\n\n            return kvps;\n        }\n\n        public bool IsEnabled() => UninstallToolsGlobalConfig.ScanChocolatey;\n        public string DisplayName => Localisation.Progress_AppStores_Chocolatey;\n\n        private static string StartProcessAndReadOutput(string filename, string args)\n        {\n            using (var process = Process.Start(new ProcessStartInfo(filename, args)\n            {\n                UseShellExecute = false,\n                RedirectStandardOutput = true,\n                RedirectStandardError = false,\n                CreateNoWindow = true,\n                StandardOutputEncoding = Encoding.Default\n            }))\n            {\n                var sw = Stopwatch.StartNew();\n                var output = process?.StandardOutput.ReadToEnd();\n                Trace.WriteLine($\"[Performance] Running command {filename} {args} took {sw.ElapsedMilliseconds}ms\");\n                return output;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/UninstallTools/Factory/ConcurrentApplicationFactory.cs",
    "content": "﻿/*\n    Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Threading;\n\nnamespace UninstallTools.Factory\n{\n    internal sealed class ConcurrentApplicationFactory : IDisposable\n    {\n        private ListGenerationProgress.ListGenerationCallback _callback;\n\n        private bool _cancelled;\n        private ListGenerationProgress _parentProgress;\n\n        private readonly Thread _thread;\n        private ListGenerationProgress _threadLastReport;\n\n        private List<ApplicationUninstallerEntry> _threadResults;\n\n        public ConcurrentApplicationFactory(\n            Func<ListGenerationProgress.ListGenerationCallback, List<ApplicationUninstallerEntry>> factoryMethod)\n        {\n            _thread = new Thread(() =>\n            {\n                try\n                {\n                    _threadResults = factoryMethod(ProgressCallback);\n                }\n                catch (OperationCanceledException)\n                {\n                    _cancelled = true;\n                }\n            });\n            _thread.IsBackground = false;\n            _thread.Name = \"ConcurrentGetUninstallerEntries\";\n            _thread.Priority = ThreadPriority.Normal;\n        }\n\n        public void Dispose()\n        {\n            _cancelled = true;\n        }\n\n        private void ProgressCallback(ListGenerationProgress report)\n        {\n            if (_cancelled) throw new OperationCanceledException();\n\n            lock (_thread)\n            {\n                if (_parentProgress == null)\n                {\n                    _threadLastReport = report;\n                }\n                else\n                {\n                    _parentProgress.Inner = report;\n                    _callback.Invoke(_parentProgress);\n                }\n            }\n        }\n\n        public void Start()\n        {\n            _thread.Start();\n        }\n\n        public List<ApplicationUninstallerEntry> GetResults(ListGenerationProgress.ListGenerationCallback callback,\n            ListGenerationProgress parentProgress)\n        {\n            if (parentProgress == null) throw new ArgumentNullException(nameof(parentProgress));\n            if (callback == null) throw new ArgumentNullException(nameof(callback));\n            Debug.Assert(_thread != null);\n\n            if (_thread.IsAlive)\n            {\n                lock (_thread)\n                {\n                    _parentProgress = parentProgress;\n\n                    if (_threadLastReport != null)\n                    {\n                        _parentProgress.Inner = _threadLastReport;\n                        callback.Invoke(_parentProgress);\n                    }\n\n                    _callback = callback;\n                }\n\n                _thread.Join();\n            }\n\n            if (_cancelled)\n                throw new OperationCanceledException();\n\n            return _threadResults ?? new List<ApplicationUninstallerEntry>();\n        }\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Factory/DirectoryFactory.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Factory.InfoAdders;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Factory\r\n{\r\n    public class DirectoryFactory : IUninstallerFactory\r\n    {\r\n        private readonly IEnumerable<ApplicationUninstallerEntry> _existingUninstallerEntries;\r\n\r\n        public DirectoryFactory(IEnumerable<ApplicationUninstallerEntry> existing)\r\n        {\r\n            _existingUninstallerEntries = existing;\r\n        }\r\n\r\n        public IList<ApplicationUninstallerEntry> GetUninstallerEntries(ListGenerationProgress.ListGenerationCallback progressCallback)\r\n        {\r\n            progressCallback(new ListGenerationProgress(0, -1, Localisation.Progress_DriveScan_Gathering));\r\n\r\n            var existingUninstallers = _existingUninstallerEntries.ToList();\r\n\r\n            var pfDirs = UninstallToolsGlobalConfig.GetProgramFilesDirectories(true);\r\n            var dirsToSkip = GetDirectoriesToSkip(existingUninstallers, pfDirs).ToList();\r\n\r\n            var itemsToScan = GetDirectoriesToScan(existingUninstallers, pfDirs, dirsToSkip).ToList();\r\n            return FactoryThreadedHelpers.DriveApplicationScan(progressCallback, dirsToSkip, itemsToScan);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get directories to scan for applications\r\n        /// </summary>\r\n        private static IEnumerable<DirectoryInfo> GetDirectoriesToScan(IEnumerable<ApplicationUninstallerEntry> existingUninstallers,\r\n            IEnumerable<DirectoryInfo> pfDirs, IEnumerable<string> dirsToSkip)\r\n        {\r\n            var pfDirectories = pfDirs.ToList();\r\n\r\n            if (UninstallToolsGlobalConfig.AutoDetectCustomProgramFiles)\r\n            {\r\n                var extraPfDirectories = FindExtraPfDirectories(existingUninstallers)\r\n                  .Where(extraDir => !extraDir.FullName.Contains(@\"\\Common Files\", StringComparison.InvariantCultureIgnoreCase))\r\n                  .Where(extraDir => pfDirectories.All(pfDir => !PathTools.PathsEqual(pfDir.FullName, extraDir.FullName)));\r\n\r\n                pfDirectories.AddRange(extraPfDirectories);\r\n\r\n                string[] goodNames =\r\n                {\r\n                    \"Apps\", \"App\", \"Applications\", \"Programs\", \"Games\", \"Game\",\r\n                    \"Portable\", \"PortableApplications\", \"PortablePrograms\", \"PortableGames\",\r\n                    \"PortableApps\", \"LiberKey\"\r\n                };\r\n\r\n                IEnumerable<DirectoryInfo> FindDirsOnDrive(DriveInfo d)\r\n                {\r\n                    return d.RootDirectory.GetDirectories().Where(x => goodNames.Contains(x.Name, StringComparison.InvariantCultureIgnoreCase));\r\n                }\r\n\r\n                var drives = DriveInfo.GetDrives();\r\n                foreach (var driveInfo in drives)\r\n                {\r\n                    if (!driveInfo.IsReady) continue;\r\n                    switch (driveInfo.DriveType)\r\n                    {\r\n                        case DriveType.Fixed:\r\n                            try\r\n                            {\r\n                                pfDirectories.AddRange(FindDirsOnDrive(driveInfo));\r\n                            }\r\n                            catch (SystemException ex)\r\n                            {\r\n                                Trace.WriteLine(ex);\r\n                            }\r\n                            break;\r\n\r\n                        case DriveType.Removable:\r\n                            if (UninstallToolsGlobalConfig.AutoDetectScanRemovable)\r\n                                goto case DriveType.Fixed;\r\n                            break;\r\n\r\n                        case DriveType.Network:\r\n                            // Slow and unreliable, might also be buggy\r\n                            break;\r\n\r\n                        case DriveType.Unknown:\r\n                        case DriveType.NoRootDirectory:\r\n                        case DriveType.CDRom:\r\n                        case DriveType.Ram:\r\n                            // No point in scanning\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            var directoriesToSkip = dirsToSkip.ToList();\r\n\r\n            // Get sub directories which could contain user programs\r\n            var directoriesToCheck = pfDirectories.SelectMany(x =>\r\n            {\r\n                try\r\n                {\r\n                    return x.GetDirectories();\r\n                }\r\n                catch (SystemException ex)\r\n                {\r\n                    Trace.WriteLine($\"Could not access a program files directory: {x?.Name} | Reason:{ex.Message}\");\r\n                }\r\n                return Enumerable.Empty<DirectoryInfo>();\r\n            });\r\n\r\n            // Get directories that can be relatively safely checked\r\n            return directoriesToCheck.Where(check => !directoriesToSkip.Any(skip =>\r\n                check.FullName.StartsWith(skip, StringComparison.InvariantCultureIgnoreCase)))\r\n                .Distinct((pair, otherPair) => PathTools.PathsEqual(pair.FullName, otherPair.FullName));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Get directories which are already used and should be skipped\r\n        /// </summary>\r\n        private static IEnumerable<string> GetDirectoriesToSkip(IEnumerable<ApplicationUninstallerEntry> existingUninstallers,\r\n            IEnumerable<DirectoryInfo> pfDirectories)\r\n        {\r\n            var dirs = new List<string>();\r\n            foreach (var x in existingUninstallers)\r\n            {\r\n                dirs.Add(x.InstallLocation);\r\n                dirs.Add(x.UninstallerLocation);\r\n\r\n                if (string.IsNullOrEmpty(x.DisplayIcon)) continue;\r\n                try\r\n                {\r\n                    var iconFilename = x.DisplayIcon.Contains('.')\r\n                        ? ProcessTools.SeparateArgsFromCommand(x.DisplayIcon).FileName\r\n                        : x.DisplayIcon;\r\n\r\n                    dirs.Add(PathTools.GetDirectory(iconFilename));\r\n                }\r\n                catch\r\n                {\r\n                    // Ignore invalid DisplayIcon paths\r\n                }\r\n            }\r\n\r\n            return dirs.Where(x => !string.IsNullOrEmpty(x)).Distinct()\r\n                .Where(x => !pfDirectories.Any(pfd => pfd.FullName.Contains(x, StringComparison.InvariantCultureIgnoreCase)));\r\n        }\r\n\r\n        private static IEnumerable<DirectoryInfo> FindExtraPfDirectories(IEnumerable<ApplicationUninstallerEntry> existingUninstallers)\r\n        {\r\n            var extraSearchLocations = existingUninstallers\r\n                .Select(x => x.InstallLocation)\r\n                .Where(x => !string.IsNullOrEmpty(x))\r\n                .Select(s =>\r\n                {\r\n                    try\r\n                    {\r\n                        return Path.GetDirectoryName(s);\r\n                    }\r\n                    catch (ArgumentException)\r\n                    {\r\n                        return null;\r\n                    }\r\n                }).Where(x => x != null)\r\n                .GroupBy(x => x.ToLowerInvariant())\r\n                // Select only groups with 2 or more hits\r\n                .Where(g => g.Take(2).Count() == 2)\r\n                .Select(g => g.Key);\r\n\r\n            return extraSearchLocations.Select(x =>\r\n            {\r\n                try\r\n                {\r\n                    var directoryInfo = new DirectoryInfo(PathTools.PathToNormalCase(x).TrimEnd('\\\\'));\r\n                    return directoryInfo.Exists ? directoryInfo : null;\r\n                }\r\n                catch\r\n                {\r\n                    return null;\r\n                }\r\n            }).Where(x => x != null);\r\n        }\r\n\r\n\r\n        private static void CreateFromDirectoryHelper(ICollection<ApplicationUninstallerEntry> results,\r\n            DirectoryInfo directory, int level, ICollection<string> dirsToSkip)\r\n        {\r\n            // Level 0 is for the pf folder itself. First subfolder is level 1.\r\n            if (level > 2 || dirsToSkip.Any(x => directory.FullName.Contains(x, StringComparison.InvariantCultureIgnoreCase)))\r\n                return;\r\n\r\n            // Get contents of this installDir\r\n            AppExecutablesSearcher.ScanDirectoryResult result;\r\n\r\n            try\r\n            {\r\n                result = AppExecutablesSearcher.ScanDirectory(directory);\r\n            }\r\n            catch (IOException)\r\n            {\r\n                return;\r\n            }\r\n            catch (UnauthorizedAccessException)\r\n            {\r\n                return;\r\n            }\r\n\r\n            // Check if it is potentially dangerous to process this installDir.\r\n            if (result.ExecutableFiles.Count > 40)\r\n                return;\r\n\r\n            var anyFiles = result.ExecutableFiles.Any();\r\n            if (UninstallToolsGlobalConfig.IsKnownFolder(directory) || !anyFiles && !result.BinSubdirs.Any())\r\n            {\r\n                foreach (var dir in result.OtherSubdirs)\r\n                    CreateFromDirectoryHelper(results, dir, level + 1, dirsToSkip);\r\n            }\r\n            else if (anyFiles)\r\n            {\r\n                var entry = new ApplicationUninstallerEntry();\r\n\r\n                // Parse directories into useful information\r\n                if (level > 0 && directory.Name.StartsWithAny(AppExecutablesSearcher.BinaryDirectoryNames, StringComparison.OrdinalIgnoreCase))\r\n                {\r\n                    entry.InstallLocation = directory.Parent?.FullName;\r\n                    entry.RawDisplayName = directory.Parent?.Name;\r\n                }\r\n                else\r\n                {\r\n                    entry.InstallLocation = directory.FullName;\r\n                    entry.RawDisplayName = directory.Name;\r\n\r\n                    if (level > 0)\r\n                        entry.Publisher = directory.Parent?.Name;\r\n                }\r\n\r\n                var sorted = AppExecutablesSearcher.SortListExecutables(result.ExecutableFiles, entry.DisplayNameTrimmed).ToArray();\r\n                entry.SortedExecutables = sorted.Select(x => x.FullName).ToArray();\r\n\r\n                entry.InstallDate = directory.CreationTime;\r\n                //entry.IconBitmap = TryExtractAssociatedIcon(compareBestMatchFile.FullName);\r\n\r\n                // Extract info from file metadata and overwrite old values\r\n                var compareBestMatchFile = sorted.First();\r\n                ExecutableAttributeExtractor.FillInformationFromFileAttribs(entry, compareBestMatchFile.FullName, false);\r\n\r\n                results.Add(entry);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Try to get the main executable from the filtered folders. If no executables are present check subfolders.\r\n        /// </summary>\r\n        public static IEnumerable<ApplicationUninstallerEntry> TryCreateFromDirectory(\r\n            DirectoryInfo directory, ICollection<string> dirsToSkip)\r\n        {\r\n            if (directory == null)\r\n                throw new ArgumentNullException(nameof(directory));\r\n\r\n            var results = new List<ApplicationUninstallerEntry>();\r\n\r\n            CreateFromDirectoryHelper(results, directory, 0, dirsToSkip);\r\n\r\n            foreach (var tempEntry in results)\r\n            {\r\n                if (tempEntry.Is64Bit == MachineType.Unknown)\r\n                    tempEntry.Is64Bit = UninstallToolsGlobalConfig.IsPathInsideProgramFiles(directory.FullName);\r\n\r\n                tempEntry.IsRegistered = false;\r\n                tempEntry.IsOrphaned = true;\r\n            }\r\n\r\n            return results;\r\n        }\r\n\r\n        public static IEnumerable<ApplicationUninstallerEntry> TryCreateFromDirectory(\r\n            DirectoryInfo directoryToScan, IEnumerable<ApplicationUninstallerEntry> existingUninstallers)\r\n        {\r\n            var pfDirs = UninstallToolsGlobalConfig.GetProgramFilesDirectories(true);\r\n            var dirsToSkip = GetDirectoriesToSkip(existingUninstallers, pfDirs).ToList();\r\n\r\n            if (UninstallToolsGlobalConfig.IsSystemDirectory(directoryToScan) ||\r\n                directoryToScan.Name.StartsWith(\"Windows\", StringComparison.InvariantCultureIgnoreCase))\r\n                return Enumerable.Empty<ApplicationUninstallerEntry>();\r\n\r\n            return TryCreateFromDirectory(directoryToScan, dirsToSkip);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UninstallTools/Factory/FactoryThreadedHelpers.cs",
    "content": "/*\n    Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Management;\nusing Klocman.Extensions;\nusing UninstallTools.Factory.InfoAdders;\n\nnamespace UninstallTools.Factory\n{\n    internal static class FactoryThreadedHelpers\n    {\n        public static int MaxThreadsPerDrive = 2;\n\n        public static IList<ApplicationUninstallerEntry> DriveApplicationScan(\n            ListGenerationProgress.ListGenerationCallback progressCallback,\n            List<string> dirsToSkip,\n            List<DirectoryInfo> itemsToScan)\n        {\n            var dividedItems = SplitByPhysicalDrives(itemsToScan, d => d);\n\n            void GetUninstallerEntriesThread(DirectoryInfo data, List<ApplicationUninstallerEntry> state)\n            {\n                if (UninstallToolsGlobalConfig.IsSystemDirectory(data) ||\n                    data.Name.StartsWith(\"Windows\", StringComparison.InvariantCultureIgnoreCase))\n                    return;\n\n                var detectedEntries = DirectoryFactory.TryCreateFromDirectory(data, dirsToSkip).ToList();\n\n                ApplicationUninstallerFactory.MergeResults(state, detectedEntries, null);\n            }\n\n            var workSpreader = new ThreadedWorkSpreader<DirectoryInfo, List<ApplicationUninstallerEntry>>\n                (MaxThreadsPerDrive, GetUninstallerEntriesThread, list => new List<ApplicationUninstallerEntry>(list.Count), data => data.FullName);\n\n            workSpreader.Start(dividedItems, progressCallback);\n\n            var results = new List<ApplicationUninstallerEntry>();\n\n            foreach (var workerResults in workSpreader.Join())\n                ApplicationUninstallerFactory.MergeResults(results, workerResults, null);\n\n            return results;\n        }\n\n        public static void GenerateMissingInformation(IList<ApplicationUninstallerEntry> entries, \n            InfoAdderManager infoAdder, IList<Guid> msiProducts, bool skipRunLast, \n            ListGenerationProgress.ListGenerationCallback progressCallback)\n        {\n            void WorkLogic(ApplicationUninstallerEntry entry, object state)\n            {\n                infoAdder.AddMissingInformation(entry, skipRunLast);\n                if (msiProducts != null)\n                    entry.IsValid = FactoryTools.CheckIsValid(entry, msiProducts);\n            }\n\n            var workSpreader = new ThreadedWorkSpreader<ApplicationUninstallerEntry, object>(MaxThreadsPerDrive,\n                WorkLogic, list => null, entry => entry.DisplayName ?? entry.RatingId ?? string.Empty);\n\n            var cDrive = new DirectoryInfo(Environment.SystemDirectory).Root;\n            var dividedItems = SplitByPhysicalDrives(entries, entry =>\n            {\n                var loc = entry.InstallLocation ?? entry.UninstallerLocation;\n                if (!string.IsNullOrEmpty(loc))\n                {\n                    try\n                    {\n                        return new DirectoryInfo(loc);\n                    }\n                    catch (SystemException ex)\n                    {\n                        Trace.WriteLine(ex);\n                    }\n                }\n                return cDrive;\n            });\n\n            workSpreader.Start(dividedItems, progressCallback);\n            workSpreader.Join();\n        }\n\n        private static IList<IList<TData>> SplitByPhysicalDrives<TData>(IList<TData> itemsToScan, Func<TData, DirectoryInfo> locationGetter)\n        {\n            var output = new List<IList<TData>>();\n            try\n            {\n                using (var searcherDtp = new ManagementObjectSearcher(\"root\\\\CIMV2\", \"SELECT * FROM Win32_DiskDriveToDiskPartition\"))\n                using (var searcherLtp = new ManagementObjectSearcher(\"root\\\\CIMV2\", \"SELECT * FROM Win32_LogicalDiskToPartition\"))\n                {\n                    var dtp = searcherDtp.Get().Cast<ManagementObject>().Select(queryObj => new\n                    {\n                        Drive = queryObj[\"Antecedent\"] as string,\n                        Partition = queryObj[\"Dependent\"] as string\n                    });\n\n                    var ltp = searcherLtp.Get().Cast<ManagementObject>().Select(queryObj => new\n                    {\n                        Partition = queryObj[\"Antecedent\"] as string,\n                        LogicalDrive = queryObj[\"Dependent\"] as string\n                    });\n\n                    var correlatedDriveList = ltp.Join(dtp, arg => arg.Partition, arg => arg.Partition, (x, y) => new\n                    {\n                        LogicalName = x.LogicalDrive.Split(new[] { '\"' }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault()?.Append(@\"\\\"),\n                        y.Drive\n                    }).Where(x => !string.IsNullOrEmpty(x.LogicalName)).GroupBy(x => x.Drive);\n\n                    var inputList = itemsToScan.Select(x => new { locationGetter(x).Root.Name, x }).ToList();\n                    foreach (var logicalDriveGroup in correlatedDriveList)\n                    {\n                        var filteredByPhysicalDrive = inputList.Where(x =>\n                            logicalDriveGroup.Any(y =>\n                                y.LogicalName.Equals(x.Name, StringComparison.OrdinalIgnoreCase))).ToList();\n\n                        inputList.RemoveAll(filteredByPhysicalDrive);\n                        output.Add(filteredByPhysicalDrive.Select(x => x.x).ToList());\n                    }\n                    // Bundle leftovers as a single drive\n                    output.Add(inputList.Select(x => x.x).ToList());\n                }\n            }\n            catch (SystemException ex)\n            {\n                Trace.WriteLine(@\"Failed to get logical disk to physical drive relationships - \" + ex);\n                output.Clear();\n                output.Add(itemsToScan);\n            }\n            return output;\n        }\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Factory/FactoryTools.cs",
    "content": "/*\n    Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing Klocman.Extensions;\nusing Klocman.Forms.Tools;\n\nnamespace UninstallTools.Factory\n{\n    internal static class FactoryTools\n    {\n        /// <summary>\n        /// Warning: only use with helpers that output unicode and use 0 as success return code.\n        /// </summary>\n        internal static string StartHelperAndReadOutput(string filename, string args)\n        {\n            if (!File.Exists(filename)) return null;\n\n            using (var process = Process.Start(new ProcessStartInfo(filename, args)\n            {\n                UseShellExecute = false,\n                RedirectStandardOutput = true,\n                RedirectStandardError = false,\n                CreateNoWindow = true,\n                StandardOutputEncoding = Encoding.Unicode\n            }))\n            {\n                try\n                {\n                    var sw = Stopwatch.StartNew();\n                    var output = process?.StandardOutput.ReadToEnd();\n                    Trace.WriteLine($\"[Performance] Running command {filename} {args} took {sw.ElapsedMilliseconds}ms\");\n                    return process?.ExitCode == 0 ? output : null;\n                }\n                catch (Win32Exception ex)\n                {\n                    PremadeDialogs.GenericError(ex);\n                    return null;\n                }\n            }\n        }\n\n        internal static IEnumerable<Dictionary<string, string>> ExtractAppDataSetsFromHelperOutput(string helperOutput)\n        {\n            ICollection<string> allParts = helperOutput.SplitNewlines(StringSplitOptions.None);\n            while (allParts.Count > 0)\n            {\n                var singleAppParts = allParts.TakeWhile(x => !String.IsNullOrEmpty(x)).ToList();\n                allParts = allParts.Skip(singleAppParts.Count + 1).ToList();\n\n                if (!singleAppParts.Any())\n                    continue;\n\n                yield return singleAppParts.Where(x => x.Contains(':')).ToDictionary(\n                    x => x.Substring(0, x.IndexOf(\":\", StringComparison.Ordinal)).Trim(),\n                    x => x.Substring(x.IndexOf(\":\", StringComparison.Ordinal) + 1).Trim());\n            }\n        }\n\n        internal static bool CheckIsValid(ApplicationUninstallerEntry target, IEnumerable<Guid> msiProducts)\n        {\n            if (string.IsNullOrEmpty(target.UninstallerFullFilename))\n                return false;\n\n            bool isPathRooted;\n            try\n            {\n                isPathRooted = Path.IsPathRooted(target.UninstallerFullFilename);\n            }\n            catch (ArgumentException)\n            {\n                isPathRooted = false;\n            }\n\n            if (isPathRooted && File.Exists(target.UninstallerFullFilename))\n                return true;\n\n            if (target.UninstallerKind == UninstallerType.Msiexec)\n                return msiProducts.Contains(target.BundleProviderKey);\n\n            return !isPathRooted;\n        }\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Factory/IUninstallerFactory.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\n\r\nnamespace UninstallTools.Factory\r\n{\r\n    public interface IIndependantUninstallerFactory : IUninstallerFactory\r\n    {\r\n        bool IsEnabled();\r\n        string DisplayName { get; }\r\n    }\r\n\r\n    public interface IUninstallerFactory\r\n    {\r\n        IList<ApplicationUninstallerEntry> GetUninstallerEntries(ListGenerationProgress.ListGenerationCallback progressCallback);\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/AppExecutablesSearcher.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class AppExecutablesSearcher : IMissingInfoAdder\r\n    {\r\n        internal static readonly string[] BinaryDirectoryNames;\r\n\r\n        static AppExecutablesSearcher()\r\n        {\r\n            var postfixes = new List<string> {\"arm64\", \"aarch64\", \"32\", \"64\", \"x32\", \"x64\", \"x86\", \"x86-64\", \"ia32\", \"ia64\", \"ia-32\", \"ia-64\" };\r\n            var connectors = new[] { \"-\", \"_\", \" \", \".\" };\r\n            postfixes.AddRange(connectors.SelectMany(c => postfixes.Select(p => c + p)).ToList());\r\n            var prefixes = new[] { \"bin\", \"binaries\", \"program\", \"client\", \"app\", \"application\", \"win\", \"win7\", \"win8\", \"win81\", \"win10\" };\r\n\r\n            var names = new List<string>();\r\n            names.AddRange(prefixes);\r\n            names.AddRange(postfixes);\r\n            names.AddRange(prefixes.SelectMany(pr => postfixes.Select(po => pr + po)));\r\n\r\n            BinaryDirectoryNames = names.ToArray();\r\n        }\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.SortedExecutables)\r\n        };\r\n\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunFirst;\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.InstallLocation)\r\n        };\r\n\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            /*var trimmedDispName = target.DisplayNameTrimmed;\r\n            if (string.IsNullOrEmpty(trimmedDispName) || trimmedDispName.Length < 5)\r\n            {\r\n                trimmedDispName = target.DisplayName;\r\n                if (string.IsNullOrEmpty(trimmedDispName))\r\n                    // Impossible to search for the executable without knowing the app name\r\n                    return;\r\n            }*/\r\n\r\n            if (!Directory.Exists(target.InstallLocation))\r\n                return;\r\n\r\n            var trimmedDispName = target.DisplayNameTrimmed;\r\n\r\n            try\r\n            {\r\n                var results = ScanDirectory(new DirectoryInfo(target.InstallLocation));\r\n\r\n                target.SortedExecutables = SortListExecutables(results.ExecutableFiles, trimmedDispName)\r\n                    .Select(x => x.FullName).ToArray();\r\n            }\r\n            catch (IOException)\r\n            {\r\n            }\r\n            catch (UnauthorizedAccessException)\r\n            {\r\n            }\r\n        }\r\n\r\n        internal static ScanDirectoryResult ScanDirectory(DirectoryInfo directory)\r\n        {\r\n            var results = new List<FileInfo>(directory.GetFiles(\"*.exe\", SearchOption.TopDirectoryOnly));\r\n            var binSubdirs = new List<DirectoryInfo>();\r\n            var otherSubdirs = new List<DirectoryInfo>();\r\n            var maybeSubdirs = new List<DirectoryInfo>();\r\n            foreach (var subdir in directory.GetDirectories())\r\n            {\r\n                try\r\n                {\r\n                    var subName = subdir.Name;\r\n                    if (subName.StartsWithAny(BinaryDirectoryNames, StringComparison.OrdinalIgnoreCase))\r\n                    {\r\n                        binSubdirs.Add(subdir);\r\n                        results.AddRange(subdir.GetFiles(\"*.exe\", SearchOption.TopDirectoryOnly));\r\n                    }\r\n                    else\r\n                    {\r\n                        // This skips ISO language codes, much faster than a more specific compare\r\n                        if (subName.Length == 5 && subName[2].Equals('-')) continue;\r\n\r\n                        // Directories with very short names likely contain program files\r\n                        if (subName.Length > 3)\r\n                            otherSubdirs.Add(subdir);\r\n                        else \r\n                            maybeSubdirs.Add(subdir);\r\n                    }\r\n                }\r\n                catch (IOException)\r\n                {\r\n                }\r\n                catch (UnauthorizedAccessException)\r\n                {\r\n                }\r\n            }\r\n\r\n            if (results.Count == 0 && binSubdirs.Count == 0)\r\n                otherSubdirs.AddRange(maybeSubdirs);\r\n\r\n            // 7-Zip console application. Sometimes causes bad display data if it's picked as the most likely executable. No effect on real 7-Zip entries.\r\n            results.RemoveAll(x => string.Equals(x.Name, \"7z.exe\", StringComparison.OrdinalIgnoreCase));\r\n\r\n            return new ScanDirectoryResult(results, binSubdirs, otherSubdirs);\r\n        }\r\n\r\n        internal static IEnumerable<FileInfo> SortListExecutables(IEnumerable<FileInfo> targets, string targetString)\r\n        {\r\n            var reportInName = targetString.Contains(\"report\", StringComparison.OrdinalIgnoreCase);\r\n            var crashInName = targetString.Contains(\"crash\", StringComparison.OrdinalIgnoreCase);\r\n            int GetPenaltyPoints(FileInfo fileInfo)\r\n            {\r\n                var fileName = fileInfo.Name;\r\n                if (fileName.Equals(\"uninstaller.exe\", StringComparison.OrdinalIgnoreCase)\r\n                    || fileName.Equals(\"uninstall.exe\", StringComparison.OrdinalIgnoreCase)\r\n                    || fileName.Contains(\"unins00\", StringComparison.OrdinalIgnoreCase))\r\n                    return 20;\r\n                if(!reportInName && fileName.Contains(\"report\", StringComparison.OrdinalIgnoreCase))\r\n                    return 10;\r\n                if(!crashInName && fileName.Contains(\"crash\", StringComparison.OrdinalIgnoreCase))\r\n                    return 10;\r\n                if (fileName.Contains(\"uninsta\", StringComparison.OrdinalIgnoreCase))\r\n                    return 4;\r\n                if (fileName.Contains(\"unins\", StringComparison.OrdinalIgnoreCase))\r\n                    return 2;\r\n                return 0;\r\n            }\r\n\r\n            return targets.Select(x => new { x, p = GetPenaltyPoints(x) })\r\n                .OrderBy(x => Sift4.SimplestDistance(x.x.Name, targetString, 3) + x.p)\r\n                .Select(x => x.x);\r\n        }\r\n\r\n        internal sealed class ScanDirectoryResult\r\n        {\r\n            public ScanDirectoryResult(ICollection<FileInfo> executableFiles,\r\n                ICollection<DirectoryInfo> binSubdirs, ICollection<DirectoryInfo> otherSubdirs)\r\n            {\r\n                OtherSubdirs = otherSubdirs;\r\n                ExecutableFiles = executableFiles;\r\n                BinSubdirs = binSubdirs;\r\n            }\r\n\r\n            public ICollection<DirectoryInfo> BinSubdirs { get; }\r\n            public ICollection<FileInfo> ExecutableFiles { get; }\r\n            public ICollection<DirectoryInfo> OtherSubdirs { get; }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/BasicIconGetter.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.IO;\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class BasicIconGetter :IMissingInfoAdder\r\n    {\r\n        public void AddMissingInformation(ApplicationUninstallerEntry entry)\r\n        {\r\n            if (entry.IconBitmap != null)\r\n                return;\r\n\r\n            // Check for any specified icons\r\n            if (!string.IsNullOrEmpty(entry.DisplayIcon) &&\r\n                !ApplicationEntryTools.PathPointsToMsiExec(entry.DisplayIcon))\r\n            {\r\n                string resultFilename = null;\r\n\r\n                if (File.Exists(entry.DisplayIcon))\r\n                    resultFilename = entry.DisplayIcon;\r\n\r\n                if (resultFilename == null)\r\n                {\r\n                    try\r\n                    {\r\n                        var fName = ProcessTools.SeparateArgsFromCommand(entry.DisplayIcon).FileName;\r\n                        if (fName != null && File.Exists(fName))\r\n                        {\r\n                            resultFilename = fName;\r\n                        }\r\n                    }\r\n                    catch\r\n                    {\r\n                        // Ignore error and try another method\r\n                    }\r\n                }\r\n\r\n                var icon = UninstallToolsGlobalConfig.TryExtractAssociatedIcon(resultFilename);\r\n                if (icon != null)\r\n                {\r\n                    entry.DisplayIcon = resultFilename;\r\n                    entry.IconBitmap = icon;\r\n                }\r\n            }\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.DisplayIcon)\r\n        };\r\n\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.DisplayIcon),\r\n            nameof(ApplicationUninstallerEntry.IconBitmap)\r\n        };\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunFirst;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/CertificateGetter.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Linq;\r\nusing System.Security.Cryptography.X509Certificates;\r\nusing Klocman.IO;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public static class CertificateGetter\r\n    {\r\n        internal static X509Certificate2 TryGetCertificate(ApplicationUninstallerEntry entry)\r\n        {\r\n            // Don't even try if the entry is invalid, it will be marked as bad anyways\r\n            if (!entry.IsValid)\r\n                return null;\r\n\r\n            try\r\n            {\r\n                X509Certificate2 result = null;\r\n                if (entry.SortedExecutables != null)\r\n                    result = TryExtractCertificateHelper(entry.SortedExecutables);\r\n\r\n                // Check executables before this because signatures in MSI store are modified and won't verify\r\n                if (result == null && entry.UninstallerKind == UninstallerType.Msiexec)\r\n                    result = MsiTools.GetCertificate(entry.BundleProviderKey);\r\n\r\n                // If no certs were found finally check the uninstaller\r\n                if (result == null && !string.IsNullOrEmpty(entry.UninstallerFullFilename))\r\n                    result = TryExtractCertificateHelper(entry.UninstallerFullFilename);\r\n                return result;\r\n            }\r\n            catch\r\n            {\r\n                // Default to no certificate\r\n                return null;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Check first few files from the install directory for certificates\r\n        /// </summary>\r\n        private static X509Certificate2 TryExtractCertificateHelper(params string[] fileNames)\r\n        {\r\n            foreach (var candidate in fileNames.Take(2))\r\n            {\r\n                try\r\n                {\r\n                    return new X509Certificate2(candidate);\r\n                }\r\n                catch\r\n                {\r\n                    // No cert was found, try next\r\n                }\r\n            }\r\n\r\n            return null;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/ExecutableAttributeExtractor.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Diagnostics;\r\nusing System.Linq;\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class ExecutableAttributeExtractor : IMissingInfoAdder\r\n    {\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.SortedExecutables == null || !target.SortedExecutables.Any())\r\n                return;\r\n\r\n            FillInformationFromFileAttribs(target, target.SortedExecutables[0], true);\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.SortedExecutables)\r\n        };\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.RawDisplayName),\r\n            nameof(ApplicationUninstallerEntry.DisplayVersion),\r\n            nameof(ApplicationUninstallerEntry.Publisher)\r\n            //nameof(ApplicationUninstallerEntry.Comment)\r\n        };\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunLast;\r\n\r\n\r\n        /// <summary>\r\n        /// Add information from FileVersionInfo of specified file to the targetEntry\r\n        /// </summary>\r\n        /// <param name=\"targetEntry\">Entry to update</param>\r\n        /// <param name=\"infoSourceFilename\">Binary file to get the information from</param>\r\n        /// <param name=\"onlyUnpopulated\">Only update unpopulated fields of the targetEntry</param>\r\n        internal static void FillInformationFromFileAttribs(ApplicationUninstallerEntry targetEntry, string infoSourceFilename, bool onlyUnpopulated)\r\n        {\r\n            FileVersionInfo verInfo;\r\n            try\r\n            {\r\n                verInfo = FileVersionInfo.GetVersionInfo(infoSourceFilename);\r\n            }\r\n            catch\r\n            {\r\n                return;\r\n            }\r\n\r\n            Func<string, bool> unpopulatedCheck;\r\n            if (onlyUnpopulated)\r\n                unpopulatedCheck = target => string.IsNullOrEmpty(target?.Trim());\r\n            else\r\n                unpopulatedCheck = target => true;\r\n\r\n            var companyName = verInfo.CompanyName?.Trim();\r\n            if (unpopulatedCheck(targetEntry.Publisher) && !string.IsNullOrEmpty(companyName))\r\n                targetEntry.Publisher = companyName;\r\n\r\n            if (unpopulatedCheck(targetEntry.RawDisplayName))\r\n            {\r\n                var fileDescription = StringTools.StripStringFromVersionNumber(verInfo.FileDescription?.Trim());\r\n                var productName = verInfo.ProductName?.Trim();\r\n                if (!string.IsNullOrEmpty(fileDescription))\r\n                {\r\n                    if (!string.IsNullOrEmpty(productName) && productName.Length > fileDescription.Length)\r\n                        targetEntry.RawDisplayName = productName;\r\n                    else\r\n                        targetEntry.RawDisplayName = fileDescription;\r\n                }\r\n                else if (!string.IsNullOrEmpty(productName))\r\n                    targetEntry.RawDisplayName = productName;\r\n            }\r\n\r\n            var comment = verInfo.Comments?.Trim();\r\n            if (unpopulatedCheck(targetEntry.Comment) && !string.IsNullOrEmpty(comment))\r\n                targetEntry.Comment = comment;\r\n\r\n            if (unpopulatedCheck(targetEntry.DisplayVersion))\r\n            {\r\n                var productVersion = verInfo.ProductVersion?.Trim();\r\n                if (string.IsNullOrEmpty(productVersion))\r\n                    productVersion = verInfo.FileVersion?.Trim();\r\n\r\n                if (!string.IsNullOrEmpty(productVersion))\r\n                    targetEntry.DisplayVersion = ApplicationEntryTools.CleanupDisplayVersion(productVersion);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/FastSizeGenerator.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\nusing Klocman.Extensions;\r\nusing Klocman.IO;\r\nusing Scripting;\r\nusing File = System.IO.File;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class FastSizeGenerator : IMissingInfoAdder\r\n    {\r\n        private static readonly FileSystemObjectClass _fileSystemObject;\r\n        private static bool _everythingAvailable;\r\n\r\n        static FastSizeGenerator()\r\n        {\r\n            try\r\n            {\r\n                _fileSystemObject = new FileSystemObjectClass();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Trace.WriteLine(@\"FastSizeGenerator: Scripting.FileSystemObjectClass is not available - \" + ex.Message);\r\n            }\r\n\r\n            try\r\n            {\r\n                if (EvGetSize(UninstallToolsGlobalConfig.AssemblyLocation).GetKbSize() == 0)\r\n                    throw new SystemException(\"Test failed to get valid BCU directory size\");\r\n\r\n                _everythingAvailable = true;\r\n            }\r\n            catch (SystemException ex)\r\n            {\r\n                _everythingAvailable = false;\r\n                Trace.WriteLine(@\"FastSizeGenerator: Everything search engine is not available - \" + ex.Message);\r\n            }\r\n        }\r\n\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            if (!Directory.Exists(target.InstallLocation) || UninstallToolsGlobalConfig.IsSystemDirectory(target.InstallLocation))\r\n                return;\r\n\r\n            if (_everythingAvailable)\r\n            {\r\n                try\r\n                {\r\n                    target.EstimatedSize = EvGetSize(target.InstallLocation);\r\n                    return;\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    Trace.WriteLine(ex);\r\n                    _everythingAvailable = false;\r\n                }\r\n            }\r\n\r\n            if (_fileSystemObject != null)\r\n            {\r\n                try\r\n                {\r\n                    var folder = _fileSystemObject.GetFolder(target.InstallLocation);\r\n                    var size = new FileSize(Convert.ToInt64(folder.Size) / 1024);\r\n                    target.EstimatedSize = size;\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    Trace.WriteLine(ex);\r\n                }\r\n            }\r\n        }\r\n\r\n        private static FileSize EvGetSize(string path)\r\n        {\r\n            path = Path.GetFullPath(path);\r\n            var output = StartHelperAndReadOutput($\"-size -a-d -size-leading-zero -no-digit-grouping -size-format 1 path:\\\"{path}\\\"\").Result;\r\n            var allResults = output.SplitNewlines(StringSplitOptions.RemoveEmptyEntries);\r\n\r\n            long sum = 0;\r\n            foreach (var result in allResults)\r\n            {\r\n                var split = result.Split(new[] { ' ' }, 2, StringSplitOptions.None);\r\n                sum += long.Parse(split[0]);\r\n            }\r\n            return FileSize.FromBytes(sum);\r\n        }\r\n\r\n        private static async Task<string> StartHelperAndReadOutput(string args)\r\n        {\r\n            var esPath = Path.Combine(UninstallToolsGlobalConfig.AssemblyLocation, \"es.exe\");\r\n            if (!File.Exists(esPath)) throw new FileNotFoundException();\r\n\r\n            using (var process = Process.Start(new ProcessStartInfo(esPath, args)\r\n            {\r\n                UseShellExecute = false,\r\n                RedirectStandardOutput = true,\r\n                RedirectStandardError = false,\r\n                CreateNoWindow = true,\r\n                StandardOutputEncoding = Encoding.UTF8\r\n            }))\r\n            {\r\n                if (process == null) throw new InvalidOperationException(\"Could not start a new process\");\r\n\r\n                var timeoutTask = Task.Delay(TimeSpan.FromSeconds(40));\r\n                var readOutputTask = process.StandardOutput.ReadToEndAsync();\r\n\r\n                await Task.WhenAny(readOutputTask, timeoutTask);\r\n\r\n                if (!readOutputTask.IsCompleted)\r\n                {\r\n                    try\r\n                    {\r\n                        process.Kill();\r\n                    }\r\n                    catch\r\n                    {\r\n                        // Ignore exceptions from killing the process\r\n                    }\r\n                    throw new TimeoutException(\"es.exe appears to have hung\");\r\n                }\r\n\r\n                if (process.ExitCode == 0) return await readOutputTask;\r\n                throw new IOException(\"es.exe failed to connect to Everything\", process.ExitCode);\r\n            }\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = { nameof(ApplicationUninstallerEntry.InstallLocation) };\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = false;\r\n        public string[] CanProduceValueNames { get; } = { nameof(ApplicationUninstallerEntry.EstimatedSize) };\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunLast;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/FileIconGetter.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Linq;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class FileIconGetter : IMissingInfoAdder\r\n    {\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallerFullFilename),\r\n            nameof(ApplicationUninstallerEntry.SortedExecutables)\r\n        };\r\n\r\n        public bool RequiresAllValues { get; } = false;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.DisplayIcon),\r\n            nameof(ApplicationUninstallerEntry.IconBitmap)\r\n        };\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunLast;\r\n\r\n        /// <summary>\r\n        ///     Run after DisplayIcon, DisplayName, UninstallerKind, InstallLocation, UninstallString have been initialized.\r\n        /// </summary>\r\n        public void AddMissingInformation(ApplicationUninstallerEntry entry)\r\n        {\r\n            if (entry.IconBitmap != null)\r\n                return;\r\n\r\n            // SdbInst uninstallers do not have any executables to check\r\n            if (entry.UninstallerKind == UninstallerType.SdbInst)\r\n                return;\r\n\r\n            // Try getting an icon from the app's executables\r\n            if (entry.SortedExecutables != null)\r\n            {\r\n                foreach (var executablePath in entry.SortedExecutables.Take(2))\r\n                {\r\n                    var exeIcon = UninstallToolsGlobalConfig.TryExtractAssociatedIcon(executablePath);\r\n                    if (exeIcon != null)\r\n                    {\r\n                        entry.DisplayIcon = executablePath;\r\n                        entry.IconBitmap = exeIcon;\r\n                        return;\r\n                    }\r\n                }\r\n            }\r\n\r\n            var uninsIcon = UninstallToolsGlobalConfig.TryExtractAssociatedIcon(entry.UninstallerFullFilename);\r\n            if (uninsIcon != null)\r\n            {\r\n                entry.DisplayIcon = entry.UninstallerFullFilename;\r\n                entry.IconBitmap = uninsIcon;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/GenerateSteamHelperStrings.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Linq;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class GenerateSteamHelperStrings : IMissingInfoAdder\r\n    {\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.UninstallerKind != UninstallerType.Steam) return;\r\n            \r\n            var appId = target.RatingId.Split(new[] { \" \" }, StringSplitOptions.RemoveEmptyEntries).Last();\r\n            if (!int.TryParse(appId, out _)) return;\r\n\r\n            if(!target.UninstallPossible || UninstallToolsGlobalConfig.QuietAutomatization)\r\n                target.UninstallString = $\"\\\"{SteamFactory.SteamHelperPath}\\\" uninstall {appId}\";\r\n\r\n            if (UninstallToolsGlobalConfig.QuietAutomatization)\r\n                target.QuietUninstallString = $\"\\\"{SteamFactory.SteamHelperPath}\\\" uninstall /silent {appId}\";\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallerKind),\r\n            nameof(ApplicationUninstallerEntry.RatingId)\r\n        };\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = true;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallString),\r\n            nameof(ApplicationUninstallerEntry.QuietUninstallString)\r\n        };\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunLast;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/IMissingInfoAdder.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public interface IMissingInfoAdder\r\n    {\r\n        /// <summary>\r\n        /// Try to add missing information to the target entry.\r\n        /// </summary>\r\n        void AddMissingInformation(ApplicationUninstallerEntry target);\r\n\r\n        /// <summary>\r\n        /// Names of values this InfoAdder requires to work.\r\n        /// </summary>\r\n        string[] RequiredValueNames { get; }\r\n\r\n        /// <summary>\r\n        /// True if all Required Values need to be defined.\r\n        /// False if only one needs to be defined.\r\n        /// </summary>\r\n        bool RequiresAllValues { get; }\r\n\r\n        /// <summary>\r\n        /// Always run this adder if the requirements are met. \r\n        /// If false, only run this adder if it can produce any missing values.\r\n        /// </summary>\r\n        bool AlwaysRun { get; }\r\n\r\n        /// <summary>\r\n        /// Names of values this InfoAdder can fill in.\r\n        /// </summary>\r\n        string[] CanProduceValueNames { get; }\r\n\r\n        /// <summary>\r\n        /// Higher priority InfoAdders are executed first.\r\n        /// </summary>\r\n        InfoAdderPriority Priority { get; }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/InfoAdderManager.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class InfoAdderManager\r\n    {\r\n        private static readonly IMissingInfoAdder[] InfoAdders;\r\n\r\n        private static readonly Dictionary<string, CompiledPropertyInfo<ApplicationUninstallerEntry>> TargetProperties;\r\n        private static readonly ICollection<CompiledPropertyInfo<ApplicationUninstallerEntry>> UninstallerProperties;\r\n        private static readonly ICollection<CompiledPropertyInfo<ApplicationUninstallerEntry>> NonUninstallerProperties;\r\n\r\n        static InfoAdderManager()\r\n        {\r\n            InfoAdders = GetInfoAdders().ToArray();\r\n\r\n            var defaultValues = new ApplicationUninstallerEntry();\r\n            TargetProperties = typeof(ApplicationUninstallerEntry)\r\n                .GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)\r\n                .Where(x => x.CanRead && x.CanWrite)\r\n                .Where(x => IsTypeValid(x.PropertyType))\r\n                 .ToDictionary(x => x.Name, x =>\r\n                 {\r\n                     var compiled = x.CompileAccessors<ApplicationUninstallerEntry>();\r\n                     compiled.Tag = compiled.CompiledGet(defaultValues);\r\n                     return compiled;\r\n                 });\r\n\r\n            // Split properties related to uninstaller and its type so they can be moved all at same time\r\n            // TODO Better sorting logic? If names change or props are added without uninstall in name they'll slip through\r\n            foreach (var group in TargetProperties.Where(x => x.Key != nameof(ApplicationUninstallerEntry.UninstallerKind))\r\n                .GroupBy(x => x.Key.Contains(\"uninstall\", StringComparison.OrdinalIgnoreCase)))\r\n            {\r\n                if (group.Key)\r\n                    UninstallerProperties = group.Select(x => x.Value).ToList();\r\n                else\r\n                    NonUninstallerProperties = group.Select(x => x.Value).ToList();\r\n            }\r\n        }\r\n\r\n        private static readonly Type BoolType = typeof(bool);\r\n\r\n        /// <summary>\r\n        /// Check if we can correctly detect if the type has no value.\r\n        /// </summary>\r\n        private static bool IsTypeValid(Type type)\r\n        {\r\n            // TODO is this filtering neccessary?\r\n            return type != BoolType || Nullable.GetUnderlyingType(type) != null;\r\n        }\r\n\r\n        private static IEnumerable<IMissingInfoAdder> GetInfoAdders()\r\n        {\r\n            var type = typeof(IMissingInfoAdder);\r\n            var types = Assembly.GetExecutingAssembly().GetTypes() //AppDomain.CurrentDomain.GetAssemblies().SelectMany(s => s.GetTypes())\r\n                .Where(p => type.IsAssignableFrom(p) && p.IsClass && !p.IsAbstract);\r\n\r\n            var instances = types.Attempt(Activator.CreateInstance);\r\n\r\n            return instances.Cast<IMissingInfoAdder>().OrderByDescending(x => x.Priority);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Fill in information using all detected IMissingInfoAdder classes\r\n        /// </summary>\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target, bool skipRunLast = false)\r\n        {\r\n            var adders = InfoAdders.Where(x => !skipRunLast || x.Priority > InfoAdderPriority.RunLast).ToList();\r\n            var valueIsDefaultCache = new Dictionary<string, bool>();\r\n\r\n            // Checks if the value is default, buffering the result\r\n            bool IsValueDefault(string key)\r\n            {\r\n                if (valueIsDefaultCache.TryGetValue(key, out var valIsDefault))\r\n                    return valIsDefault;\r\n\r\n                if (TargetProperties.TryGetValue(key, out var property))\r\n                {\r\n                    valIsDefault = Equals(property.CompiledGet(target), property.Tag);\r\n                    valueIsDefaultCache.Add(key, valIsDefault);\r\n\r\n                    return valIsDefault;\r\n                }\r\n\r\n                // If we can't check if the value is default, assume that it is to be safe\r\n                return true;\r\n            }\r\n\r\n            for (var index = 0; index < adders.Count; index++)\r\n            {\r\n                var infoAdder = adders[index];\r\n                var requirements = infoAdder.RequiredValueNames;\r\n\r\n                //TODO prioritize ones with all values existing from same priority tier?\r\n                if (requirements.Any())\r\n                {\r\n                    if (infoAdder.RequiresAllValues)\r\n                    {\r\n                        if (infoAdder.RequiredValueNames.Any(IsValueDefault))\r\n                            continue;\r\n                    }\r\n                    else\r\n                    {\r\n                        if (infoAdder.RequiredValueNames.All(IsValueDefault))\r\n                            continue;\r\n                    }\r\n                }\r\n\r\n                // Only run the adder if it can actually fill in any missing values\r\n                if (!infoAdder.AlwaysRun && !infoAdder.CanProduceValueNames.Any(IsValueDefault))\r\n                    continue;\r\n\r\n                infoAdder.AddMissingInformation(target);\r\n\r\n                adders.Remove(infoAdder);\r\n\r\n                // Remove items that might have changed from cache so they get recalculated\r\n                foreach (var valueName in infoAdder.CanProduceValueNames)\r\n                {\r\n                    valueIsDefaultCache.Remove(valueName);\r\n\r\n                    foreach (var relatedValueName in ApplicationUninstallerEntry.PropertyRelationships[valueName])\r\n                        valueIsDefaultCache.Remove(relatedValueName);\r\n                }\r\n\r\n                // Retry all adders from the start if any of them succeeded\r\n                index = -1;\r\n            }\r\n        }\r\n\r\n        public void TryAddFieldInformation(ApplicationUninstallerEntry target, string targetValueName)\r\n        {\r\n            // TODO\r\n            /*\r\n             create copy list of adders\r\n             similar logic to above\r\n             try running whatever can add targetValueName\r\n                if can't run any, check if any other adders can fill in the required values and try again\r\n             */\r\n\r\n            throw new NotImplementedException();\r\n        }\r\n\r\n        /// <summary>\r\n        /// Copy missing property values\r\n        /// </summary>\r\n        /// <param name=\"baseEntry\">Copy values to this object</param>\r\n        /// <param name=\"entryToMerge\">Copy from this object</param>\r\n        public void CopyMissingInformation(ApplicationUninstallerEntry baseEntry, ApplicationUninstallerEntry entryToMerge)\r\n        {\r\n            // If one of these is not null it will be merged by loop below. If both are not null they need special logic.\r\n            if (baseEntry.StartupEntries != null && entryToMerge.StartupEntries != null)\r\n            {\r\n                baseEntry.StartupEntries = baseEntry.StartupEntries.Concat(entryToMerge.StartupEntries);\r\n            }\r\n\r\n            void CopyPropertyIfBetter(CompiledPropertyInfo<ApplicationUninstallerEntry> property, bool alwaysCopy)\r\n            {\r\n                // If entryToMerge has a default (not set) value for this property, skip it so we don't lose data\r\n                var newValue = property.CompiledGet(entryToMerge);\r\n                if (Equals(newValue, property.Tag)) return;\r\n\r\n                if (alwaysCopy)\r\n                {\r\n                    property.CompiledSet(baseEntry, newValue);\r\n                }\r\n                else\r\n                {\r\n                    // Copy new value to base entry if base doesn't have the value set, \r\n                    // or if the values are strings and merged value is longer\r\n                    var oldValue = property.CompiledGet(baseEntry);\r\n                    if (Equals(oldValue, property.Tag) || \r\n                        newValue is string sNew && oldValue is string sOld && sNew.Length > sOld.Length)\r\n                    {\r\n                        property.CompiledSet(baseEntry, newValue);\r\n                    }\r\n                }\r\n            }\r\n\r\n            foreach (var property in NonUninstallerProperties)\r\n                CopyPropertyIfBetter(property, false);\r\n\r\n            // Make sure that all uninstaller-related properties are only copied when necessary, and that UninstallerKind \r\n            // always changes together with the uninstall strings or we will get bugs elsewhere if there is a mismatch\r\n            if (baseEntry.UninstallerKind == UninstallerType.Unknown && entryToMerge.UninstallerKind != UninstallerType.Unknown || \r\n                baseEntry.UninstallerKind == UninstallerType.SimpleDelete && entryToMerge.UninstallPossible || \r\n                !baseEntry.UninstallPossible || \r\n                entryToMerge.UninstallerKind == UninstallerType.PowerShell)\r\n            {\r\n                baseEntry.UninstallerKind = entryToMerge.UninstallerKind;\r\n                foreach (var property in UninstallerProperties)\r\n                    CopyPropertyIfBetter(property, true);\r\n            }\r\n\r\n            baseEntry.AdditionalJunk.AddRange(entryToMerge.AdditionalJunk);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/InfoAdderPriority.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public enum InfoAdderPriority\r\n    {\r\n        RunDeadLast = -2,\r\n        RunLast = -1,\r\n        Normal = 0,\r\n        RunFirst = 1\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/InnoSetupQuietUninstallStringGenerator.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class InnoSetupQuietUninstallStringGenerator : IMissingInfoAdder\r\n    {\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.UninstallerKind != UninstallerType.InnoSetup || string.IsNullOrEmpty(target.UninstallerFullFilename))\r\n                return;\r\n\r\n            if (!UninstallToolsGlobalConfig.QuietAutomatization)\r\n                return;\r\n\r\n            /* Use UninstallerFullFilename to get rid of quotes and arguments (InnoSetup doesn't need any arguments)\r\n             * \r\n             * Unlike '/SILENT', when '/VERYSILENT' is specified, the uninstallation progress window is not displayed.\r\n             * -> But if a restart is necessary and the '/NORESTART' command isn't used, the uninstaller will reboot without asking.\r\n             * \r\n             * /SUPPRESSMSGBOXES Instructs the uninstaller to suppress message boxes. Doesn't affect boxes from spawned processes.\r\n             */\r\n            target.QuietUninstallString = $\"\\\"{target.UninstallerFullFilename}\\\" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART\";\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallerFullFilename),\r\n            nameof(ApplicationUninstallerEntry.UninstallerKind)\r\n        };\r\n\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = true;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.QuietUninstallString)\r\n        };\r\n\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.Normal;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/InstallDateAdder.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class InstallDateAdder : IMissingInfoAdder\r\n    {\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            try\r\n            {\r\n                if (File.Exists(target.UninstallerFullFilename))\r\n                    target.InstallDate = File.GetCreationTime(target.UninstallerFullFilename);\r\n                else if (Directory.Exists(target.InstallLocation))\r\n                    target.InstallDate = Directory.GetCreationTime(target.InstallLocation);\r\n            }\r\n            catch\r\n            {\r\n                target.InstallDate = DateTime.MinValue;\r\n            }\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.InstallLocation),\r\n            nameof(ApplicationUninstallerEntry.UninstallerFullFilename)\r\n        };\r\n        public bool RequiresAllValues { get; } = false;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.InstallDate)\r\n        };\r\n\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunLast;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/InstallLocationGenerator.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class InstallLocationGenerator : IMissingInfoAdder\r\n    {\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.UninstallerKind == UninstallerType.Nsis || target.UninstallerKind == UninstallerType.InnoSetup)\r\n            {\r\n                if(!string.IsNullOrEmpty(target.UninstallerLocation))\r\n                    target.InstallLocation = target.UninstallerLocation;\r\n            }\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallerKind),\r\n            nameof(ApplicationUninstallerEntry.UninstallerLocation)\r\n        };\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.InstallLocation)\r\n        };\r\n\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunFirst;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/Is64BitGetter.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class Is64BitGetter : IMissingInfoAdder\r\n    {\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.SortedExecutables == null || target.SortedExecutables.Length == 0 ||\r\n                target.Is64Bit != MachineType.Unknown)\r\n                return;\r\n\r\n            try\r\n            {\r\n                target.Is64Bit = FilesystemTools.CheckExecutableMachineType(target.SortedExecutables[0]);\r\n            }\r\n            catch\r\n            {\r\n                target.Is64Bit = MachineType.Unknown;\r\n            }\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.SortedExecutables)\r\n        };\r\n\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.Is64Bit)\r\n        };\r\n\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.Normal;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/KnownNameIconGetter.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Security;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class KnownNameIconGetter : IMissingInfoAdder\r\n    {\r\n        private static readonly string[] IconNames =\r\n        {\r\n            \"DisplayIcon.ico\", \"Icon.ico\", \"app.ico\", \"appicon.ico\",\r\n            \"application.ico\", \"logo.ico\"\r\n        };\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallerLocation),\r\n            nameof(ApplicationUninstallerEntry.InstallLocation)\r\n        };\r\n\r\n        public bool RequiresAllValues { get; } = false;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.DisplayIcon),\r\n            nameof(ApplicationUninstallerEntry.IconBitmap)\r\n        };\r\n\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.Normal;\r\n\r\n        public void AddMissingInformation(ApplicationUninstallerEntry entry)\r\n        {\r\n            if (entry.IconBitmap != null)\r\n                return;\r\n\r\n            // SdbInst uninstallers do not have any executables to check\r\n            if (entry.UninstallerKind == UninstallerType.SdbInst)\r\n                return;\r\n\r\n            try\r\n            {\r\n                // Look for icons with known names in InstallLocation and UninstallerLocation\r\n                var query = from targetDir in new[] {entry.InstallLocation, entry.UninstallerLocation}\r\n                    where !string.IsNullOrEmpty(targetDir) && Directory.Exists(targetDir)\r\n                    from iconName in IconNames\r\n                    let combinedIconPath = Path.Combine(targetDir, iconName)\r\n                    where File.Exists(combinedIconPath)\r\n                    select combinedIconPath;\r\n\r\n                foreach (var iconPath in query)\r\n                {\r\n                    var icon = UninstallToolsGlobalConfig.TryExtractAssociatedIcon(iconPath);\r\n                    if (icon != null)\r\n                    {\r\n                        entry.IconBitmap = icon;\r\n                        entry.DisplayIcon = iconPath;\r\n                        return;\r\n                    }\r\n                }\r\n            }\r\n            catch (SecurityException)\r\n            {\r\n            }\r\n            catch (UnauthorizedAccessException)\r\n            {\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/MsiInfoAdder.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.IO;\r\nusing Klocman.Native;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class MsiInfoAdder : IMissingInfoAdder\r\n    {\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            //Debug.Assert(target.UninstallerKind != UninstallerType.Msiexec);\r\n            if (target.UninstallerKind != UninstallerType.Msiexec)\r\n                return;\r\n\r\n            ApplyMsiInfo(target, target.BundleProviderKey);\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallerKind),\r\n            nameof(ApplicationUninstallerEntry.BundleProviderKey)\r\n        };\r\n\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = false;\r\n        public string[] CanProduceValueNames { get; } =  {\r\n            nameof(ApplicationUninstallerEntry.RawDisplayName),\r\n            nameof(ApplicationUninstallerEntry.DisplayVersion),\r\n            nameof(ApplicationUninstallerEntry.Publisher),\r\n            nameof(ApplicationUninstallerEntry.InstallLocation),\r\n            nameof(ApplicationUninstallerEntry.InstallSource),\r\n            nameof(ApplicationUninstallerEntry.UninstallerFullFilename),\r\n            nameof(ApplicationUninstallerEntry.DisplayIcon),\r\n            nameof(ApplicationUninstallerEntry.AboutUrl),\r\n            nameof(ApplicationUninstallerEntry.InstallDate),\r\n            //nameof(ApplicationUninstallerEntry.SortedExecutables) // TODO: This works but is much too slow to run for every entry\r\n        };\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunFirst;\r\n\r\n        /// <summary>\r\n        ///     A valid guid is REQUIRED. It doesn't have to be set on the entry, but should be.\r\n        /// </summary>\r\n        private static void ApplyMsiInfo(ApplicationUninstallerEntry entry, Guid guid)\r\n        {\r\n            // Make sure this is a real msiexec product ID\r\n            if (!MsiTools.IsInstalled(guid))\r\n                return;\r\n\r\n            FillInMissingInfoMsiHelper(() => entry.RawDisplayName, x => entry.RawDisplayName = x, guid,\r\n                MsiWrapper.INSTALLPROPERTY.INSTALLEDPRODUCTNAME, MsiWrapper.INSTALLPROPERTY.PRODUCTNAME);\r\n\r\n            FillInMissingInfoMsiHelper(() => entry.DisplayVersion, x => entry.DisplayVersion = ApplicationEntryTools.CleanupDisplayVersion(x), guid,\r\n                MsiWrapper.INSTALLPROPERTY.VERSIONSTRING, MsiWrapper.INSTALLPROPERTY.VERSION);\r\n\r\n            FillInMissingInfoMsiHelper(() => entry.Publisher, x => entry.Publisher = x, guid,\r\n                MsiWrapper.INSTALLPROPERTY.PUBLISHER);\r\n\r\n            FillInMissingInfoMsiHelper(() => entry.InstallLocation, x => entry.InstallLocation = x, guid,\r\n                MsiWrapper.INSTALLPROPERTY.INSTALLLOCATION);\r\n\r\n            FillInMissingInfoMsiHelper(() => entry.InstallSource, x => entry.InstallSource = x, guid,\r\n                MsiWrapper.INSTALLPROPERTY.INSTALLSOURCE);\r\n\r\n            FillInMissingInfoMsiHelper(() => entry.UninstallerFullFilename, x => entry.UninstallerFullFilename = x, guid,\r\n                MsiWrapper.INSTALLPROPERTY.LOCALPACKAGE);\r\n\r\n            FillInMissingInfoMsiHelper(() => entry.DisplayIcon, x => entry.DisplayIcon = x, guid,\r\n                MsiWrapper.INSTALLPROPERTY.PRODUCTICON);\r\n\r\n            FillInMissingInfoMsiHelper(() => entry.AboutUrl, x => entry.AboutUrl = x, guid,\r\n                MsiWrapper.INSTALLPROPERTY.HELPLINK, MsiWrapper.INSTALLPROPERTY.URLUPDATEINFO,\r\n                MsiWrapper.INSTALLPROPERTY.URLINFOABOUT);\r\n\r\n            if (entry.InstallDate.IsDefault())\r\n            {\r\n                var temp = MsiTools.MsiGetProductInfo(guid, MsiWrapper.INSTALLPROPERTY.INSTALLDATE);\r\n                if (temp.IsNotEmpty())\r\n                {\r\n                    try\r\n                    {\r\n                        entry.InstallDate = new DateTime(int.Parse(temp.Substring(0, 4)),\r\n                                                         int.Parse(temp.Substring(4, 2)),\r\n                                                         int.Parse(temp.Substring(6, 2)));\r\n                    }\r\n                    catch\r\n                    {\r\n                        // Date had invalid format, default to nothing\r\n                    }\r\n                }\r\n            }\r\n\r\n\r\n            if (string.IsNullOrWhiteSpace(entry.InstallLocation) || entry.SortedExecutables == null)\r\n            {\r\n                var paths = MsiTools.GetInstalledComponentPaths(guid);\r\n                if (paths == null) return;\r\n\r\n                // Checking .exe paths seems to be pretty reliable\r\n                var executables = paths.Filenames.Where(x => x.EndsWith(\".exe\", StringComparison.OrdinalIgnoreCase)).ToArray();\r\n                if (executables.Length > 0)\r\n                {\r\n                    var addedInstallLocation = false;\r\n                    if (string.IsNullOrWhiteSpace(entry.InstallLocation))\r\n                    {\r\n                        var bestGuess = executables.GroupBy(Path.GetDirectoryName, StringComparer.OrdinalIgnoreCase)\r\n                                                   .Where(x => !UninstallToolsGlobalConfig.IsSystemDirectory(x.Key)) // Deal with apps installing executables to the Windows directory\r\n                                                   .OrderByDescending(x => UninstallToolsGlobalConfig.IsPathInsideProgramFiles(x.Key)) // Always prefer PF\r\n                                                   .ThenBy(x => x.Key.Length) // Shortest path is most likely to be the application root\r\n                                                   .FirstOrDefault();\r\n\r\n                        if (!string.IsNullOrEmpty(bestGuess?.Key))\r\n                        {\r\n                            entry.InstallLocation = bestGuess.Key;\r\n                            addedInstallLocation = true;\r\n                        }\r\n                    }\r\n\r\n                    // Update executable list based on new information. Keep existing executables if they exist, as they may be more accurate than the MSI component paths\r\n                    var executablesToSort = executables.Select(x => new FileInfo(x));\r\n\r\n                    if (entry.SortedExecutables != null) executablesToSort = executablesToSort.Concat(entry.SortedExecutables.Select(x => new FileInfo(x)));\r\n\r\n                    if (addedInstallLocation) executablesToSort = executablesToSort.Concat(AppExecutablesSearcher.ScanDirectory(new DirectoryInfo(entry.InstallLocation)).ExecutableFiles);\r\n                    \r\n                    entry.SortedExecutables = AppExecutablesSearcher.SortListExecutables(executablesToSort.DistinctBy(x => x.FullName, StringComparer.OrdinalIgnoreCase), entry.DisplayName)\r\n                                                                    .Select(x => x.FullName).ToArray();\r\n                }\r\n\r\n                // If the exe search failed, pick the folder with the most files in it instead (needed with e.g. Net Framework reference assemblies)\r\n                if (string.IsNullOrWhiteSpace(entry.InstallLocation))\r\n                {\r\n                    var bestGuess = paths.Filenames\r\n                                         .Where(Path.HasExtension)\r\n                                         .GroupBy(Path.GetDirectoryName, StringComparer.OrdinalIgnoreCase)\r\n                                         .Where(x => !UninstallToolsGlobalConfig.IsSystemDirectory(x.Key)) // Deal with apps installing executables to the Windows directory\r\n                                         .OrderByDescending(x => UninstallToolsGlobalConfig.IsPathInsideProgramFiles(x.Key)) // Always prefer PF\r\n                                         .ThenByDescending(x => x.Count()) // Directory with the highest amount of files is the safest bet\r\n                                         .ThenBy(x => x.Key.Length)\r\n                                         .FirstOrDefault();\r\n\r\n                    if (!string.IsNullOrEmpty(bestGuess?.Key))\r\n                        entry.InstallLocation = bestGuess.Key;\r\n                }\r\n            }\r\n        }\r\n\r\n        private static void FillInMissingInfoMsiHelper(Func<string> get, Action<string> set, Guid guid,\r\n            params MsiWrapper.INSTALLPROPERTY[] properties)\r\n        {\r\n            if (string.IsNullOrEmpty(get()))\r\n            {\r\n                foreach (var item in properties)\r\n                {\r\n                    var temp = MsiTools.MsiGetProductInfo(guid, item);\r\n\r\n                    //IMPORTANT: Do not assign empty strings, they will mess up automatic property creation later on.\r\n                    if (temp.IsNotEmpty())\r\n                        set(temp);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/MsiUninstallStringGenerator.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing UninstallTools.Uninstaller;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class MsiUninstallStringGenerator : IMissingInfoAdder\r\n    {\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.UninstallerKind != UninstallerType.Msiexec)\r\n                return;\r\n\r\n            if (string.IsNullOrEmpty(target.UninstallString))\r\n                target.UninstallString = UninstallManager.GetMsiString(target.BundleProviderKey,\r\n                    MsiUninstallModes.Uninstall);\r\n\r\n            if (string.IsNullOrEmpty(target.QuietUninstallString))\r\n                target.QuietUninstallString = UninstallManager.GetMsiString(target.BundleProviderKey,\r\n                    MsiUninstallModes.QuietUninstall);\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallerKind),\r\n            nameof(ApplicationUninstallerEntry.BundleProviderKey)\r\n        };\r\n\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = false;\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.QuietUninstallString),\r\n            nameof(ApplicationUninstallerEntry.UninstallString)\r\n        };\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.Normal;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/NsisQuietUninstallStringGenerator.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing Klocman.Extensions;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class NsisQuietUninstallStringGenerator : IMissingInfoAdder\r\n    {\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.QuietUninstallPossible || target.UninstallerKind != UninstallerType.Nsis ||\r\n                string.IsNullOrEmpty(target.UninstallString))\r\n                return;\r\n\r\n            if (!UninstallToolsGlobalConfig.QuietAutomatization || !UninstallToolsGlobalConfig.UninstallerAutomatizerExists)\r\n                return;\r\n\r\n            var nsisCommandStart = $\"\\\"{UninstallToolsGlobalConfig.UninstallerAutomatizerPath}\\\" {nameof(UninstallerType.Nsis)} \";\r\n\r\n            nsisCommandStart = nsisCommandStart.AppendIf(UninstallToolsGlobalConfig.QuietAutomatizationKillStuck, \"/K \");\r\n\r\n            target.QuietUninstallString = nsisCommandStart.Append(target.UninstallString);\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallString),\r\n            nameof(ApplicationUninstallerEntry.UninstallerKind)\r\n        };\r\n\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.QuietUninstallString)\r\n        };\r\n\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.Normal;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/PredefinedAppQuietUninstallStringGenerator.cs",
    "content": "/*\n    Copyright (c) 2019 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\n\nnamespace UninstallTools.Factory.InfoAdders\n{\n    /// <summary>\n    /// Hardcoded quiet string generators for specific applications\n    /// </summary>\n    public class PredefinedAppQuietUninstallStringGenerator : IMissingInfoAdder\n    {\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\n        {\n            if (target.QuietUninstallPossible || !target.UninstallPossible)\n                return;\n\n            var uninstallString = target.UninstallString;\n\n            // MS Edge developer builds\n            if (uninstallString.Contains(\"--msedge-beta\", StringComparison.Ordinal) && uninstallString.Contains(\"--uninstall\", StringComparison.Ordinal))\n                target.QuietUninstallString = uninstallString.Replace(\"--uninstall\", \"--force-uninstall\");\n        }\n\n        public string[] RequiredValueNames { get; } = {\n            nameof(ApplicationUninstallerEntry.UninstallString)\n        };\n\n        public bool RequiresAllValues { get; } = true;\n        public bool AlwaysRun { get; } = false;\n\n        public string[] CanProduceValueNames { get; } = {\n            nameof(ApplicationUninstallerEntry.QuietUninstallString)\n        };\n\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.Normal;\n    }\n}\n"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/QuietUninstallStringCopier.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class QuietUninstallStringCopier : IMissingInfoAdder\r\n    {\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            target.UninstallString = target.QuietUninstallString;\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.QuietUninstallString)\r\n        };\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallString)\r\n        };\r\n\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunFirst;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/SimpleDeleteUninstallStringGenerator.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class SimpleDeleteUninstallStringGenerator : IMissingInfoAdder\r\n    {\r\n        static SimpleDeleteUninstallStringGenerator()\r\n        {\r\n            try\r\n            {\r\n                UniversalUninstallerFilename = new FileInfo(\r\n                    Path.Combine(UninstallToolsGlobalConfig.AssemblyLocation, \"UniversalUninstaller.exe\"));\r\n\r\n                UniversalUninstallerIsAvailable = UniversalUninstallerFilename.Exists;\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                Trace.WriteLine(e);\r\n\r\n                UniversalUninstallerFilename = null;\r\n                UniversalUninstallerIsAvailable = false;\r\n            }\r\n        }\r\n\r\n        public static FileInfo UniversalUninstallerFilename { get; }\r\n        public static bool UniversalUninstallerIsAvailable { get; }\r\n\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.UninstallerKind != UninstallerType.SimpleDelete)\r\n                return;\r\n\r\n            if (target.UninstallString == null)\r\n            {\r\n                target.UninstallString = UniversalUninstallerIsAvailable\r\n                    ? GetNewUninstallString(target.InstallLocation, false)\r\n                    : GetOldSimpleDeleteString(target.InstallLocation, false);\r\n            }\r\n\r\n            if (target.QuietUninstallString == null)\r\n            {\r\n                target.QuietUninstallString = UniversalUninstallerIsAvailable\r\n                    ? GetNewUninstallString(target.InstallLocation, true)\r\n                    : GetOldSimpleDeleteString(target.InstallLocation, true);\r\n            }\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallerKind),\r\n            nameof(ApplicationUninstallerEntry.InstallLocation)\r\n        };\r\n\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallString),\r\n            nameof(ApplicationUninstallerEntry.QuietUninstallString)\r\n        };\r\n\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunDeadLast;\r\n\r\n        private static string GetNewUninstallString(string installLocation, bool quiet)\r\n        {\r\n            return quiet\r\n                ? $\"\\\"{UniversalUninstallerFilename.FullName}\\\" /Q \\\"{installLocation}\\\\\\\"\"\r\n                : $\"\\\"{UniversalUninstallerFilename.FullName}\\\" \\\"{installLocation}\\\\\\\"\";\r\n        }\r\n\r\n        private static string GetOldSimpleDeleteString(string installLocation, bool quiet)\r\n        {\r\n            return quiet\r\n                ? $\"cmd.exe /C del /F /S /Q \\\"{installLocation}\\\\\\\"\"\r\n                : $\"cmd.exe /C del /S \\\"{installLocation}\\\\\\\" && pause\";\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/UninstallerSearcher.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class UninstallerSearcher : IMissingInfoAdder\r\n    {\r\n        private static readonly string[] UninstallerFilters = { \"unins0\", \"uninstall\", \"uninst\", \"uninstaller\" };\r\n\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            if (!string.IsNullOrEmpty(target.UninstallString) || target.SortedExecutables == null)\r\n                return;\r\n\r\n            // Attempt to find an uninstaller application\r\n            foreach (var file in target.SortedExecutables.Concat(FindExtraExecutables(target.InstallLocation)))\r\n            {\r\n                string name;\r\n                try\r\n                {\r\n                    name = Path.GetFileNameWithoutExtension(file);\r\n                    if (string.IsNullOrEmpty(name)) continue;\r\n                }\r\n                catch (ArgumentException)\r\n                {\r\n                    continue;\r\n                }\r\n\r\n                if (UninstallerFilters.Any(filter =>\r\n                    name.StartsWith(filter, StringComparison.InvariantCultureIgnoreCase) ||\r\n                    name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase)))\r\n                {\r\n                    target.UninstallString = file;\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n\r\n        private static IEnumerable<string> FindExtraExecutables(string directoryPath)\r\n        {\r\n            if (Directory.Exists(directoryPath))\r\n            {\r\n                try\r\n                {\r\n                    return Directory.GetFiles(directoryPath, \"*.bat\", SearchOption.TopDirectoryOnly);\r\n                }\r\n                catch (IOException)\r\n                {\r\n                }\r\n                catch (UnauthorizedAccessException)\r\n                {\r\n                }\r\n            }\r\n            return Enumerable.Empty<string>();\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.SortedExecutables)\r\n        };\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallString)\r\n        };\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunLast;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/UninstallerTypeAdder.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\nusing System.Security;\r\nusing System.Text;\r\nusing System.Text.RegularExpressions;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class UninstallerTypeAdder : IMissingInfoAdder\r\n    {\r\n        private static readonly Regex InnoSetupFilenameRegex = new(@\"unins\\d\\d\\d\", RegexOptions.Compiled | RegexOptions.IgnoreCase);\r\n\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.UninstallerKind != UninstallerType.Unknown)\r\n                return;\r\n\r\n            var uninstallString = !string.IsNullOrEmpty(target.UninstallString) \r\n                ? target.UninstallString \r\n                : target.QuietUninstallString;\r\n\r\n            if (!string.IsNullOrEmpty(uninstallString))\r\n            {\r\n                target.UninstallerKind = GetUninstallerType(uninstallString);\r\n            }\r\n            else if (!string.IsNullOrEmpty(target.InstallLocation))\r\n            {\r\n                // We don't have a valid uninstaller, so tell simple delete adder to do its job and make our own\r\n                target.UninstallerKind = UninstallerType.SimpleDelete;\r\n            }\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallString),\r\n            nameof(ApplicationUninstallerEntry.QuietUninstallString),\r\n            nameof(ApplicationUninstallerEntry.InstallLocation)\r\n        };\r\n        public bool RequiresAllValues { get; } = false;\r\n        public bool AlwaysRun { get; } = false;\r\n\r\n        public string[] CanProduceValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.UninstallerKind)\r\n        };\r\n\r\n        // Let other adders run first in case they add uninstall strings\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunLast;\r\n\r\n        public static UninstallerType GetUninstallerType(string uninstallString)\r\n        {\r\n            // Detect MSI / Windows installer based on the uninstall string\r\n            // e.g. \"C:\\ProgramData\\Package Cache\\{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}\\vcredist_x86.exe\"  /uninstall\r\n            if (ApplicationEntryTools.PathPointsToMsiExec(uninstallString) || uninstallString.ContainsAll(\r\n                new[] { @\"\\Package Cache\\{\", @\"}\\\", \".exe\" }, StringComparison.OrdinalIgnoreCase))\r\n                return UninstallerType.Msiexec;\r\n\r\n            // Detect Sdbinst\r\n            if (uninstallString.Contains(\"sdbinst\", StringComparison.OrdinalIgnoreCase)\r\n                && uninstallString.Contains(\".sdb\", StringComparison.OrdinalIgnoreCase))\r\n                return UninstallerType.SdbInst;\r\n\r\n            if (uninstallString.Contains(@\"InstallShield Installation Information\\{\", StringComparison.OrdinalIgnoreCase))\r\n                return UninstallerType.InstallShield;\r\n\r\n            if (uninstallString.Contains(\"powershell.exe\", StringComparison.OrdinalIgnoreCase) ||\r\n                uninstallString.Contains(\".ps1\", StringComparison.OrdinalIgnoreCase))\r\n                return UninstallerType.PowerShell;\r\n\r\n            if (ProcessStartCommand.TryParse(uninstallString, out var ps) \r\n                && Path.IsPathRooted(ps.FileName) \r\n                && File.Exists(ps.FileName))\r\n            {\r\n                try\r\n                {\r\n                    var fileName = Path.GetFileNameWithoutExtension(ps.FileName);\r\n                    // Detect Inno Setup\r\n                    if (fileName != null && InnoSetupFilenameRegex.IsMatch(fileName))\r\n                    {\r\n                        // Check if Inno Setup Uninstall Log exists\r\n                        if (File.Exists(ps.FileName.Substring(0, ps.FileName.Length - 3) + \"dat\"))\r\n                            return UninstallerType.InnoSetup;\r\n                    }\r\n\r\n                    // Detect NSIS Nullsoft.NSIS. Slow, but there's no other way than to scan the file\r\n                    using (var reader = new StreamReader(ps.FileName!, Encoding.ASCII))\r\n                    {\r\n                        string line;\r\n                        while ((line = reader.ReadLine()) != null)\r\n                        {\r\n                            if (line.Contains(\"Nullsoft\", StringComparison.Ordinal))\r\n                                return UninstallerType.Nsis;\r\n                        }\r\n                    }\r\n\r\n                    /* Unused/unnecessary\r\n                    if (result.Contains(\"InstallShield\"))\r\n                        return UninstallerType.InstallShield;\r\n                    if (result.Contains(\"Inno.Setup\") || result.Contains(\"Inno Setup\"))\r\n                        return UninstallerType.InnoSetup;\r\n                    if(result.Contains(@\"<description>Adobe Systems Incorporated Setup</description>\"))\r\n                        return UninstallerType.AdobeSetup;\r\n                    */\r\n                }\r\n                catch (IOException) { }\r\n                catch (UnauthorizedAccessException) { }\r\n                catch (SecurityException) { }\r\n            }\r\n            return UninstallerType.Unknown;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/VersionCleaner.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nnamespace UninstallTools.Factory.InfoAdders\r\n{\r\n    public class VersionCleaner : IMissingInfoAdder\r\n    {\r\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\r\n        {\r\n            if (string.IsNullOrEmpty(target.DisplayVersion)) return;\r\n\r\n            target.DisplayVersion = ApplicationEntryTools.CleanupDisplayVersion(target.DisplayVersion);\r\n        }\r\n\r\n        public string[] RequiredValueNames { get; } = {\r\n            nameof(ApplicationUninstallerEntry.DisplayVersion)\r\n        };\r\n\r\n        public bool RequiresAllValues { get; } = true;\r\n        public bool AlwaysRun { get; } = true;\r\n        public string[] CanProduceValueNames { get; } = {};\r\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunDeadLast;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/InfoAdders/WebBrowserMarker.cs",
    "content": "/*\n    Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Linq;\nusing Klocman.Tools;\n\nnamespace UninstallTools.Factory.InfoAdders\n{\n    public class WebBrowserMarker : IMissingInfoAdder\n    {\n        private static readonly string[] BrowserExecutables = WindowsTools.GetInstalledWebBrowsers();\n\n        public void AddMissingInformation(ApplicationUninstallerEntry target)\n        {\n            if (target == null || target.SortedExecutables.Length == 0) return;\n\n            target.IsWebBrowser = target.SortedExecutables.Any(\n                x => BrowserExecutables.Any(\n                    y => PathTools.PathsEqual(x, y)));\n        }\n\n        public string[] RequiredValueNames { get; } = {\n            nameof(ApplicationUninstallerEntry.SortedExecutables)\n        };\n        public string[] CanProduceValueNames { get; } = {\n            nameof(ApplicationUninstallerEntry.IsWebBrowser)\n        };\n\n        public bool RequiresAllValues { get; } = true;\n        public bool AlwaysRun { get; } = false;\n        public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunLast;\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Factory/Json/DynamicStringArrayConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing System.Text.Json.Serialization;\n\nnamespace UninstallTools.Factory.Json\n{\n    /// <summary>\n    /// Handle JSON string array entry that has one dimension less or more.\n    /// </summary>\n    internal class DynamicStringArrayConverter : JsonConverter<string[]>\n    {\n        public override string[] Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)\n        {\n            // 0-dimension\n            if (reader.TokenType == JsonTokenType.String)\n                return new[] { reader.GetString() };\n\n            if (reader.TokenType == JsonTokenType.StartArray)\n            {\n                var results = new List<string>();\n                ReadStrings(ref reader, results);\n                return results.ToArray();\n            }\n\n            throw new JsonException($\"Expected string or array token but got {reader.TokenType}\");\n        }\n\n        private static void ReadStrings(ref Utf8JsonReader reader, List<string> results)\n        {\n            while (reader.Read() && reader.TokenType != JsonTokenType.EndArray)\n            {\n                switch (reader.TokenType)\n                {\n                    // normal\n                    case JsonTokenType.String:\n                        results.Add(reader.GetString());\n                        break;\n\n                    // nested\n                    case JsonTokenType.StartArray:\n                        var first = ReadFirstString(ref reader);\n                        if (first != null)\n                            results.Add(first);\n                        break;\n\n                    case JsonTokenType.StartObject:\n                        reader.Skip();\n                        break;\n                }\n            }\n        }\n\n        private static string ReadFirstString(ref Utf8JsonReader reader)\n        {\n            string result = null;\n            while (reader.Read() && reader.TokenType != JsonTokenType.EndArray)\n            {\n                if (result != null)\n                {\n                    if (reader.TokenType == JsonTokenType.StartArray || reader.TokenType == JsonTokenType.StartObject)\n                        reader.Skip();\n                    continue;\n                }\n\n                switch (reader.TokenType)\n                {\n                    case JsonTokenType.String:\n                        result = reader.GetString();\n                        break;\n\n                    case JsonTokenType.StartArray:\n                        result = ReadFirstString(ref reader);\n                        break;\n\n                    case JsonTokenType.StartObject:\n                        reader.Skip();\n                        break;\n                }\n            }\n            return result;\n        }\n\n        public override void Write(Utf8JsonWriter writer, string[] value, JsonSerializerOptions options)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "source/UninstallTools/Factory/Json/PowerShellDateTimeOffsetConverter.cs",
    "content": "﻿using System;\nusing System.Text.Json;\nusing System.Text.Json.Serialization;\n\nnamespace UninstallTools.Factory.Json\n{\n    internal class PowerShellDateTimeOffsetConverter : JsonConverter<DateTimeOffset>\n    {\n        public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)\n        {\n            if (reader.TokenType == JsonTokenType.String)\n            {\n                var value = reader.GetString();\n                // Windows PowerShell: /Date(1640995200000)/\n                if (value.StartsWith(\"/\", StringComparison.Ordinal))\n                {\n                    var timestamp = long.Parse(value.Substring(6, value.Length - 8));\n                    return DateTimeOffset.FromUnixTimeMilliseconds(timestamp);\n                }\n                // PowerShell Core: 2022-01-01T00:00:00.0000000+00:00\n                else\n                {\n                    return DateTimeOffset.Parse(value);\n                }\n            }\n            // Windows PowerShell: nested { value: /Date(1640995200000)/ }\n            else if (reader.TokenType == JsonTokenType.StartObject)\n            {\n                var clone = reader;\n                reader.Skip();\n                while (clone.Read() && clone.TokenType != JsonTokenType.EndObject)\n                {\n                    if (clone.TokenType == JsonTokenType.PropertyName && clone.GetString() == \"value\")\n                    {\n                        _ = clone.Read();\n                        var value = clone.GetString();\n                        var timestamp = long.Parse(value.Substring(6, value.Length - 8));\n                        return DateTimeOffset.FromUnixTimeMilliseconds(timestamp);\n                    }\n                }\n            }\n\n            throw new JsonException();\n        }\n\n        public override void Write(Utf8JsonWriter writer, DateTimeOffset value, JsonSerializerOptions options)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "source/UninstallTools/Factory/OculusFactory.cs",
    "content": "/*\n    Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing Klocman.Extensions;\nusing Klocman.Tools;\nusing UninstallTools.Factory.InfoAdders;\nusing UninstallTools.Properties;\n\nnamespace UninstallTools.Factory\n{\n    public class OculusFactory : IIndependantUninstallerFactory\n    {\n        private static string HelperPath { get; } = Path.Combine(UninstallToolsGlobalConfig.AssemblyLocation, @\"OculusHelper.exe\");\n        private static bool IsHelperAvailable() => File.Exists(HelperPath);\n\n        public IList<ApplicationUninstallerEntry> GetUninstallerEntries(ListGenerationProgress.ListGenerationCallback progressCallback)\n        {\n            var results = new List<ApplicationUninstallerEntry>();\n            if (!IsHelperAvailable()) return results;\n\n            var output = FactoryTools.StartHelperAndReadOutput(HelperPath, \"/query\");\n            if (string.IsNullOrEmpty(output)) return results;\n\n            foreach (var data in FactoryTools.ExtractAppDataSetsFromHelperOutput(output))\n            {\n                if (!data.ContainsKey(\"CanonicalName\")) continue;\n                var name = data[\"CanonicalName\"];\n                if (string.IsNullOrEmpty(name)) continue;\n\n                var uninstallStr = $\"\\\"{HelperPath}\\\" /uninstall {name}\";\n\n                var entry = new ApplicationUninstallerEntry\n                {\n                    RatingId = name,\n                    //RegistryKeyName = name,\n                    UninstallString = uninstallStr,\n                    QuietUninstallString = uninstallStr,\n                    IsValid = true,\n                    UninstallerKind = UninstallerType.Oculus,\n                    InstallLocation = data[\"InstallLocation\"],\n                    DisplayVersion = ApplicationEntryTools.CleanupDisplayVersion(data[\"Version\"]),\n                    IsProtected = \"true\".Equals(data[\"IsCore\"], StringComparison.OrdinalIgnoreCase),\n                };\n\n                var executable = data[\"LaunchFile\"];\n                if (File.Exists(executable))\n                {\n                    ExecutableAttributeExtractor.FillInformationFromFileAttribs(entry, executable, true);\n                    entry.DisplayIcon = executable;\n                }\n\n                if (Directory.Exists(entry.InstallLocation))\n                    entry.InstallDate = Directory.GetCreationTime(entry.InstallLocation);\n\n                if (string.IsNullOrEmpty(entry.RawDisplayName))\n                    entry.RawDisplayName = name.Replace('-', ' ').ToTitleCase();\n\n                results.Add(entry);\n            }\n            return results;\n        }\n\n        public bool IsEnabled() => UninstallToolsGlobalConfig.ScanOculus;\n        public string DisplayName => Localisation.Progress_AppStores_Oculus;\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Factory/PredefinedFactory.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing Klocman.IO;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Factory\r\n{\r\n    /// <summary>\r\n    /// Get uninstallers that were manually pre-defined.\r\n    /// </summary>\r\n    public class PredefinedFactory : IIndependantUninstallerFactory\r\n    {\r\n        public IList<ApplicationUninstallerEntry> GetUninstallerEntries(\r\n            ListGenerationProgress.ListGenerationCallback progressCallback)\r\n        {\r\n            var items = new List<ApplicationUninstallerEntry>();\r\n            return items;\r\n        }\r\n\r\n        public bool IsEnabled() => UninstallToolsGlobalConfig.ScanPreDefined;\r\n        public string DisplayName => Localisation.Progress_AppStores_Templates;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/RegistryFactory.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Security;\r\nusing Klocman.Extensions;\r\nusing Klocman.IO;\r\nusing Klocman.Tools;\r\nusing Microsoft.Win32;\r\nusing UninstallTools.Factory.InfoAdders;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Factory\r\n{\r\n    public class RegistryFactory : IUninstallerFactory\r\n    {\r\n        public static readonly string RegistryNameBundleProviderKey = \"BundleProviderKey\";\r\n        public static readonly string RegistryNameComment = \"Comment\";\r\n        public static readonly string RegistryNameDisplayIcon = \"DisplayIcon\";\r\n        public static readonly string RegistryNameDisplayName = \"DisplayName\";\r\n        public static readonly string RegistryNameDisplayVersion = \"DisplayVersion\";\r\n        public static readonly string RegistryNameEstimatedSize = \"EstimatedSize\";\r\n        public static readonly string RegistryNameInstallDate = \"InstallDate\";\r\n        public static readonly string RegistryNameInstallLocation = \"InstallLocation\";\r\n        public static readonly string RegistryNameInstallSource = \"InstallSource\";\r\n        public static readonly string RegistryNameModifyPath = \"ModifyPath\";\r\n        public static readonly string RegistryNameParentKeyName = \"ParentKeyName\";\r\n        public static readonly string RegistryNamePublisher = \"Publisher\";\r\n        public static readonly string RegistryNameQuietUninstallString = \"QuietUninstallString\";\r\n        public static readonly IEnumerable<string> RegistryNamesOfUrlSources = new[]\r\n            {\"URLInfoAbout\", \"URLUpdateInfo\", \"HelpLink\"};\r\n        public static readonly string RegistryNameSystemComponent = \"SystemComponent\";\r\n        public static readonly string RegistryNameUninstallString = \"UninstallString\";\r\n        public static readonly string RegistryNameWindowsInstaller = \"WindowsInstaller\";\r\n\r\n        private static readonly string RegUninstallersKeyDirect =\r\n            @\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\";\r\n        private static readonly string RegUninstallersKeyWow =\r\n            @\"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\";\r\n\r\n        private readonly IEnumerable<Guid> _windowsInstallerValidGuids;\r\n\r\n        public RegistryFactory(IEnumerable<Guid> windowsInstallerValidGuids)\r\n        {\r\n            _windowsInstallerValidGuids = windowsInstallerValidGuids;\r\n        }\r\n\r\n        public IList<ApplicationUninstallerEntry> GetUninstallerEntries(ListGenerationProgress.ListGenerationCallback progressCallback)\r\n        {\r\n            var uninstallerRegistryKeys = new List<KeyValuePair<RegistryKey, bool>>();\r\n\r\n            progressCallback(new ListGenerationProgress(0, -1, Localisation.Progress_Registry_Gathering));\r\n\r\n            foreach (var kvp in GetParentRegistryKeys())\r\n            {\r\n                uninstallerRegistryKeys.AddRange(\r\n                    kvp.Key.GetSubKeyNames()\r\n                        .Select(subkeyName => OpenSubKeySafe(kvp.Key, subkeyName))\r\n                        .Where(subkey => subkey != null)\r\n                        .Select(subkey => new KeyValuePair<RegistryKey, bool>(subkey, kvp.Value)));\r\n\r\n                kvp.Key.Close();\r\n            }\r\n\r\n            void WorkLogic(KeyValuePair<RegistryKey, bool> data, List<ApplicationUninstallerEntry> state)\r\n            {\r\n                try\r\n                {\r\n                    var entry = TryCreateFromRegistry(data.Key, data.Value);\r\n                    if (entry != null)\r\n                        state.Add(entry);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    //Uninstaller is invalid or there is no uninstaller in the first place. Skip it to avoid problems.\r\n                    Trace.WriteLine($@\"Failed to extract reg entry {data.Key.Name} - {ex}\");\r\n                }\r\n                finally\r\n                {\r\n                    data.Key.Close();\r\n                }\r\n            }\r\n\r\n            var workSpreader = new ThreadedWorkSpreader<KeyValuePair<RegistryKey, bool>, List<ApplicationUninstallerEntry>>(\r\n                FactoryThreadedHelpers.MaxThreadsPerDrive, WorkLogic,\r\n                list => new List<ApplicationUninstallerEntry>(list.Count),\r\n                pair =>\r\n                {\r\n                    try\r\n                    {\r\n                        return string.Format(Localisation.Progress_Registry_Processing, Path.GetFileName(pair.Key.Name));\r\n                    }\r\n                    catch\r\n                    {\r\n                        return string.Empty;\r\n                    }\r\n                });\r\n\r\n            // We are mostly reading from registry, so treat everything as on a single drive\r\n            var dataBuckets = new List<IList<KeyValuePair<RegistryKey, bool>>> { uninstallerRegistryKeys };\r\n\r\n            workSpreader.Start(dataBuckets, progressCallback);\r\n\r\n            return workSpreader.Join().SelectMany(x => x).ToList();\r\n        }\r\n\r\n        private static string GetAboutUrl(RegistryKey uninstallerKey)\r\n        {\r\n            return RegistryNamesOfUrlSources.Select(uninstallerKey.GetStringSafe)\r\n                .FirstOrDefault(tempSource => !string.IsNullOrEmpty(tempSource) && tempSource.Contains('.'));\r\n        }\r\n\r\n        private static ApplicationUninstallerEntry GetBasicInformation(RegistryKey uninstallerKey)\r\n        {\r\n            return new ApplicationUninstallerEntry\r\n            {\r\n                RegistryPath = uninstallerKey.Name,\r\n                RegistryKeyName = uninstallerKey.GetKeyName(),\r\n                Comment = uninstallerKey.GetStringSafe(RegistryNameComment),\r\n                RawDisplayName = uninstallerKey.GetStringSafe(RegistryNameDisplayName),\r\n                DisplayVersion = ApplicationEntryTools.CleanupDisplayVersion(uninstallerKey.GetStringSafe(RegistryNameDisplayVersion)),\r\n                ParentKeyName = uninstallerKey.GetStringSafe(RegistryNameParentKeyName),\r\n                Publisher = uninstallerKey.GetStringSafe(RegistryNamePublisher),\r\n                UninstallString = GetUninstallString(uninstallerKey),\r\n                QuietUninstallString = GetQuietUninstallString(uninstallerKey),\r\n                ModifyPath = uninstallerKey.GetStringSafe(RegistryNameModifyPath),\r\n                InstallLocation = uninstallerKey.GetStringSafe(RegistryNameInstallLocation),\r\n                InstallSource = uninstallerKey.GetStringSafe(RegistryNameInstallSource),\r\n                SystemComponent = Convert.ToInt32(uninstallerKey.GetValue(RegistryNameSystemComponent, 0)) != 0,\r\n                DisplayIcon = uninstallerKey.GetStringSafe(RegistryNameDisplayIcon)\r\n            };\r\n        }\r\n\r\n        private static FileSize GetEstimatedSize(RegistryKey uninstallerKey)\r\n        {\r\n            try\r\n            {\r\n                // Use Convert.ToInt64 because some applications put a string in here instead of a number\r\n                var tempSize = Convert.ToInt64(uninstallerKey.GetValue(RegistryNameEstimatedSize, 0));\r\n                return FileSize.FromKilobytes(tempSize);\r\n            }\r\n            catch (SystemException e) when (e is FormatException or InvalidCastException)\r\n            {\r\n                return FileSize.Empty;\r\n            }\r\n        }\r\n\r\n        private static Guid GetGuid(RegistryKey uninstallerKey)\r\n        {\r\n            // Look for a GUID registry entry\r\n            var tempGuidString = uninstallerKey.GetStringSafe(RegistryNameBundleProviderKey);\r\n\r\n            if (GuidTools.GuidTryParse(tempGuidString, out var resultGuid))\r\n                return resultGuid;\r\n\r\n            if (GuidTools.TryExtractGuid(uninstallerKey.GetKeyName(), out resultGuid))\r\n                return resultGuid;\r\n            string uninstallString = GetUninstallString(uninstallerKey);\r\n            // Look for a valid GUID in the path\r\n            return GuidTools.TryExtractGuid(uninstallString, out resultGuid) ? resultGuid : Guid.Empty;\r\n        }\r\n\r\n        private static string GetUninstallString(RegistryKey uninstallerKey)\r\n        {\r\n            return GetKeyFuzzy(uninstallerKey, RegistryNameUninstallString) ?? GetQuietUninstallString(uninstallerKey);\r\n        }\r\n\r\n        private static string GetQuietUninstallString(RegistryKey uninstallerKey)\r\n        {\r\n            return GetKeyFuzzy(uninstallerKey, RegistryNameQuietUninstallString);\r\n        }\r\n\r\n        private static string GetKeyFuzzy(RegistryKey uninstallerKey, string keyName)\r\n        {\r\n            var uninstallString = uninstallerKey.GetStringSafe(keyName);\r\n            if (uninstallString == null)\r\n            {\r\n                // Handle hidden uninstall strings like UninstallString_hidden\r\n                uninstallString = uninstallerKey.GetValueNames()\r\n                    .Where(x => x.StartsWith(keyName, StringComparison.OrdinalIgnoreCase))\r\n                    .Select(uninstallerKey.GetStringSafe)\r\n                    .FirstOrDefault(x => !string.IsNullOrEmpty(x));\r\n            }\r\n\r\n            return uninstallString;\r\n        }\r\n\r\n        private static DateTime GetInstallDate(RegistryKey uninstallerKey)\r\n        {\r\n            var dateString = uninstallerKey.GetStringSafe(RegistryNameInstallDate);\r\n            if (dateString != null && dateString.Length == 8)\r\n            {\r\n                try\r\n                {\r\n                    // Likely to be in YYYYMMDD format\r\n                    return new DateTime(int.Parse(dateString.Substring(0, 4)),\r\n                                    int.Parse(dateString.Substring(4, 2)),\r\n                                    int.Parse(dateString.Substring(6, 2)));\r\n                }\r\n                catch (ArgumentOutOfRangeException)\r\n                {\r\n                    try\r\n                    {\r\n                        // YYYYDDMM format instead of standard YYYYMMDD?\r\n                        return new DateTime(int.Parse(dateString.Substring(0, 4)),\r\n                                            int.Parse(dateString.Substring(6, 2)),\r\n                                            int.Parse(dateString.Substring(4, 2)));\r\n                    }\r\n                    catch (SystemException)\r\n                    {\r\n                    }\r\n                }\r\n                catch (FormatException)\r\n                {\r\n                }\r\n                catch (ArgumentException)\r\n                {\r\n                }\r\n            }\r\n\r\n            return DateTime.MinValue;\r\n        }\r\n\r\n        private static bool GetIsUpdate(RegistryKey uninstallerKey)\r\n        {\r\n            var parentKeyName = uninstallerKey.GetStringSafe(\"ParentKeyName\");\r\n            if (!string.IsNullOrEmpty(parentKeyName))\r\n                return true;\r\n\r\n            var releaseType = uninstallerKey.GetStringSafe(\"ReleaseType\");\r\n            if (!string.IsNullOrEmpty(releaseType) &&\r\n                releaseType.ContainsAny(new[] { \"Update\", \"Hotfix\" }, StringComparison.OrdinalIgnoreCase))\r\n                return true;\r\n\r\n            var defaultValue = uninstallerKey.GetStringSafe(null);\r\n            if (string.IsNullOrEmpty(defaultValue))\r\n                return false;\r\n\r\n            //Regex WindowsUpdateRegEx = new Regex(@\"KB[0-9]{6}$\"); //Doesnt work for all cases\r\n            return defaultValue.Length > 6 && defaultValue.StartsWith(\"KB\", StringComparison.Ordinal)\r\n                   && char.IsNumber(defaultValue[2]) && char.IsNumber(defaultValue.Last());\r\n        }\r\n\r\n        private static bool GetProtectedFlag(RegistryKey uninstallerKey)\r\n        {\r\n            return Convert.ToInt32(uninstallerKey.GetValue(\"NoRemove\", 0)) != 0;\r\n        }\r\n\r\n        private static RegistryKey OpenSubKeySafe(RegistryKey baseKey, string name, bool writable = false)\r\n        {\r\n            try\r\n            {\r\n                return baseKey.OpenSubKey(name, writable);\r\n            }\r\n            catch (SecurityException)\r\n            {\r\n                return null;\r\n            }\r\n        }\r\n\r\n        private static IEnumerable<KeyValuePair<RegistryKey, bool>> GetParentRegistryKeys()\r\n        {\r\n            var keysToCheck = new List<KeyValuePair<RegistryKey, bool>>();\r\n\r\n            var hklm = Registry.LocalMachine;\r\n            var hkcu = Registry.CurrentUser;\r\n\r\n            if (ProcessTools.Is64BitProcess)\r\n            {\r\n                keysToCheck.Add(new KeyValuePair<RegistryKey, bool>(OpenSubKeySafe(hklm, RegUninstallersKeyDirect), true));\r\n                keysToCheck.Add(new KeyValuePair<RegistryKey, bool>(OpenSubKeySafe(hkcu, RegUninstallersKeyDirect), true));\r\n\r\n                keysToCheck.Add(new KeyValuePair<RegistryKey, bool>(OpenSubKeySafe(hklm, RegUninstallersKeyWow), false));\r\n                keysToCheck.Add(new KeyValuePair<RegistryKey, bool>(OpenSubKeySafe(hkcu, RegUninstallersKeyWow), false));\r\n            }\r\n            else\r\n            {\r\n                keysToCheck.Add(new KeyValuePair<RegistryKey, bool>(OpenSubKeySafe(hklm, RegUninstallersKeyDirect), false));\r\n                keysToCheck.Add(new KeyValuePair<RegistryKey, bool>(OpenSubKeySafe(hkcu, RegUninstallersKeyDirect), false));\r\n            }\r\n            return keysToCheck.Where(x => x.Key != null);\r\n        }\r\n\r\n        private static UninstallerType GetUninstallerType(RegistryKey uninstallerKey)\r\n        {\r\n            // Detect MSI installer based on registry entry (the proper way)\r\n            if (Convert.ToInt32(uninstallerKey.GetValue(RegistryNameWindowsInstaller, 0)) != 0)\r\n            {\r\n                return UninstallerType.Msiexec;\r\n            }\r\n\r\n            // Detect InnoSetup\r\n            if (uninstallerKey.GetValueNames().Any(x => x.Contains(\"Inno Setup:\")))\r\n            {\r\n                return UninstallerType.InnoSetup;\r\n            }\r\n\r\n            // Detect Steam\r\n            if (uninstallerKey.GetKeyName().StartsWith(\"Steam App \", StringComparison.Ordinal))\r\n            {\r\n                return UninstallerType.Steam;\r\n            }\r\n\r\n            var uninstallString = GetUninstallString(uninstallerKey);\r\n\r\n            return string.IsNullOrEmpty(uninstallString)\r\n                ? UninstallerType.Unknown\r\n                : UninstallerTypeAdder.GetUninstallerType(uninstallString);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Tries to create a new uninstaller entry. If the registry key doesn't contain valid uninstaller\r\n        ///     information, null is returned. It will throw ArgumentNullException if passed uninstallerKey is null.\r\n        ///     If there are any problems while reading the registry an exception will be thrown as well.\r\n        /// </summary>\r\n        /// <param name=\"uninstallerKey\">Registry key which contains the uninstaller information.</param>\r\n        /// <param name=\"is64Bit\">Is the registry key pointing to a 64 bit subkey?</param>\r\n        private ApplicationUninstallerEntry TryCreateFromRegistry(RegistryKey uninstallerKey, bool is64Bit)\r\n        {\r\n            if (uninstallerKey == null)\r\n                throw new ArgumentNullException(nameof(uninstallerKey));\r\n\r\n            var tempEntry = GetBasicInformation(uninstallerKey);\r\n            tempEntry.IsRegistered = true;\r\n\r\n            // Check for invalid registry key\r\n            if (tempEntry.RawDisplayName == null)\r\n            {\r\n                if (tempEntry.Publisher == null && !tempEntry.UninstallPossible && !tempEntry.QuietUninstallPossible)\r\n                {\r\n                    //throw new ArgumentException(\"Supplied key doesn't contain any useful information\");\r\n                    return null;\r\n                }\r\n                tempEntry.RawDisplayName = string.Empty;\r\n            }\r\n\r\n            // Get rest of the information from registry\r\n            tempEntry.IsProtected = GetProtectedFlag(uninstallerKey);\r\n            tempEntry.InstallDate = GetInstallDate(uninstallerKey);\r\n            tempEntry.EstimatedSize = GetEstimatedSize(uninstallerKey);\r\n            tempEntry.AboutUrl = GetAboutUrl(uninstallerKey);\r\n\r\n            tempEntry.Is64Bit = is64Bit ? MachineType.X64 : MachineType.X86;\r\n            tempEntry.IsUpdate = GetIsUpdate(uninstallerKey);\r\n\r\n            tempEntry.BundleProviderKey = GetGuid(uninstallerKey);\r\n\r\n            // Figure out what we are dealing with\r\n            tempEntry.UninstallerKind = GetUninstallerType(uninstallerKey);\r\n\r\n            // Corner case with some microsoft application installations.\r\n            // They will sometimes create a naked registry key (product code as reg name) with only the display name value.\r\n            if (tempEntry.UninstallerKind != UninstallerType.Msiexec && tempEntry.BundleProviderKey != Guid.Empty\r\n                && !tempEntry.UninstallPossible && !tempEntry.QuietUninstallPossible)\r\n            {\r\n                if (_windowsInstallerValidGuids.Contains(tempEntry.BundleProviderKey))\r\n                    tempEntry.UninstallerKind = UninstallerType.Msiexec;\r\n            }\r\n\r\n            return tempEntry;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/ScoopFactory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Drawing;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Text.Json;\nusing System.Text.Json.Serialization;\nusing Klocman.Native;\nusing Klocman.Tools;\nusing UninstallTools.Factory.InfoAdders;\nusing UninstallTools.Factory.Json;\nusing UninstallTools.Junk.Confidence;\nusing UninstallTools.Junk.Containers;\nusing UninstallTools.Properties;\n\nnamespace UninstallTools.Factory\n{\n    public sealed partial class ScoopFactory : IIndependantUninstallerFactory\n    {\n        private static string _scoopUserPath;\n        private static string _scoopGlobalPath;\n        private static string _scriptPath;\n        private static string _powershellPath;\n        private static readonly JsonContext _jsonContext;\n\n        static ScoopFactory()\n        {\n            JsonSerializerOptions jsonOptions = new(JsonSerializerDefaults.Web); // ignore property name case\n            jsonOptions.Converters.Add(new PowerShellDateTimeOffsetConverter());\n            _jsonContext = new JsonContext(jsonOptions);\n        }\n\n        private static bool GetScoopInfo()\n        {\n            try\n            {\n                _scoopUserPath = Environment.GetEnvironmentVariable(\"SCOOP\");\n                if (string.IsNullOrEmpty(_scoopUserPath))\n                    _scoopUserPath = Path.Combine(WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_PROFILE), \"scoop\");\n\n                _scoopGlobalPath = Environment.GetEnvironmentVariable(\"SCOOP_GLOBAL\");\n                if (string.IsNullOrEmpty(_scoopGlobalPath))\n                    _scoopGlobalPath = Path.Combine(WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_COMMON_APPDATA), \"scoop\");\n\n                _scriptPath = Path.Combine(_scoopUserPath, \"shims\\\\scoop.ps1\");\n\n                if (File.Exists(_scriptPath))\n                {\n                    _powershellPath = PathTools.GetFullPathOfExecutable(\"powershell.exe\");\n                    if (!File.Exists(_powershellPath))\n                        throw new InvalidOperationException(@\"Detected Scoop program installer, but failed to detect PowerShell\");\n\n                    return true;\n                }\n            }\n            catch (SystemException ex)\n            {\n                Trace.WriteLine(\"Failed to get Scoop info: \" + ex);\n            }\n\n            return false;\n        }\n\n        private sealed class ExportInfo\n        {\n            //public ExportBucketEntry[] Buckets { get; set; }\n            public ExportAppEntry[] Apps { get; set; }\n        }\n        //private sealed class ExportBucketEntry\n        //{\n        //    public string Name { get; set; }\n        //    public string Source { get; set; }\n        //    public DateTimeOffset Updated { get; set; }\n        //    public ulong Manifests { get; set; }\n        //}\n        private sealed class ExportAppEntry\n        {\n            public string Name { get; set; }\n            public string Version { get; set; }\n            public string Source { get; set; }\n            public DateTimeOffset Updated { get; set; }\n            public string Info { get; set; }\n\n            [JsonIgnore] public bool IsPublic => Info?.Contains(\"Global install\", StringComparison.InvariantCultureIgnoreCase) == true;\n        }\n\n        public IList<ApplicationUninstallerEntry> GetUninstallerEntries(ListGenerationProgress.ListGenerationCallback progressCallback)\n        {\n            var results = new List<ApplicationUninstallerEntry>();\n            if (!GetScoopInfo()) return results;\n\n            // Make uninstaller for scoop itself\n            var scoopEntry = new ApplicationUninstallerEntry\n            {\n                RawDisplayName = \"Scoop\",\n                Comment = \"Automated program installer\",\n                AboutUrl = \"https://github.com/ScoopInstaller/Scoop\",\n                InstallLocation = _scoopUserPath,\n                IsOrphaned = false,\n                RatingId = \"Scoop\"\n            };\n\n            // Make sure the global directory gets removed as well\n            var junk = new FileSystemJunk(new DirectoryInfo(_scoopGlobalPath), scoopEntry, null);\n            junk.Confidence.Add(ConfidenceRecords.ExplicitConnection);\n            junk.Confidence.Add(4);\n            scoopEntry.AdditionalJunk.Add(junk);\n\n            scoopEntry.UninstallString = MakeScoopCommand(\"uninstall scoop\").ToString();\n            scoopEntry.UninstallerKind = UninstallerType.PowerShell;\n            results.Add(scoopEntry);\n\n            // Make uninstallers for apps installed by scoop\n            var result = RunScoopCommand(\"export\");\n            if (string.IsNullOrEmpty(result)) return results;\n\n            var exeSearcher = new AppExecutablesSearcher();\n\n            // JSON export format since July 2022\n            try\n            {\n                var export = JsonSerializer.Deserialize(result, _jsonContext.ExportInfo);\n                foreach (var app in export.Apps)\n                {\n                    var entry = CreateUninstallerEntry(\n                        app.Name, app.Version, app.IsPublic, exeSearcher);\n\n                    entry.InstallDate = app.Updated.LocalDateTime;\n\n                    results.Add(entry);\n                }\n            }\n            // Fallback to plain text export format\n            catch (JsonException e)\n            {\n                var appEntries = result.Split(StringTools.NewLineChars.ToArray(), StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim());\n                foreach (var str in appEntries)\n                {\n                    // Format should be \"$app (v:$ver) $global_display $bucket $arch\"\n                    // app has no spaces, $global_display is *global*, bucket is inside [] brackets like [main]\n                    // version should always be there but the check errored out for some users, everything after version is optional\n                    string name;\n                    string version = null;\n                    bool isGlobal = false;\n                    var spaceIndex = str.IndexOf(\" \", StringComparison.Ordinal);\n                    if (spaceIndex > 0)\n                    {\n                        name = str.Substring(0, spaceIndex);\n\n                        var startIndex = str.IndexOf(\"(v:\", StringComparison.Ordinal);\n                        if (startIndex > 0)\n                        {\n                            var verEndIndex = str.IndexOf(')', startIndex);\n                            version = str.Substring(Math.Min(startIndex + 3, str.Length - 1), Math.Max(verEndIndex - startIndex - 3, 0));\n                            if (version.Length == 0) version = null;\n                        }\n                        isGlobal = str.Substring(spaceIndex).Contains(\"*global*\");\n                    }\n                    else\n                    {\n                        name = str;\n                    }\n\n                    // Make sure that this isn't just a corrupted json export\n                    if (string.Equals(name, \"\\\"apps\\\":\", StringComparison.Ordinal) ||\n                        string.Equals(name, \"\\\"buckets\\\":\", StringComparison.Ordinal))\n                        throw new InvalidDataException(\"Scoop export is in unkown or invalid format! Try updating Scoop and try again.\\n\\nContents:\\n\" + result, e);\n\n                    var entry = CreateUninstallerEntry(name, version, isGlobal, exeSearcher);\n\n                    results.Add(entry);\n                }\n            }\n\n            return results;\n        }\n\n        private sealed class AppInstall\n        {\n            public string Bucket { get; set; }\n            public string Architecture { get; set; }\n        }\n        private sealed class AppManifest\n        {\n            public string Homepage { get; set; }\n            [JsonPropertyName(\"env_add_path\"), JsonConverter(typeof(DynamicStringArrayConverter))]\n            public string[] EnvAddPath { get; set; }\n            [JsonConverter(typeof(DynamicStringArrayConverter))]\n            public string[] Bin { get; set; }\n            public string[][] Shortcuts { get; set; }\n            public IDictionary<string, AppManifestArchitecture> Architecture { get; set; }\n        }\n        private sealed class AppManifestArchitecture\n        {\n            public string[] EnvAddPath { get; set; }\n            [JsonConverter(typeof(DynamicStringArrayConverter))]\n            public string[] Bin { get; set; }\n            public string[][] Shortcuts { get; set; }\n        }\n\n        public static ApplicationUninstallerEntry CreateUninstallerEntry(\n            string name,\n            string version,\n            bool isGlobal,\n            AppExecutablesSearcher searcher)\n        {\n            var entry = new ApplicationUninstallerEntry\n            {\n                RawDisplayName = name,\n                DisplayVersion = ApplicationEntryTools.CleanupDisplayVersion(version),\n                RatingId = \"Scoop \" + name\n            };\n\n            var installDir = Path.Combine(isGlobal ? _scoopGlobalPath : _scoopUserPath, \"apps\\\\\" + name);\n            if (Directory.Exists(installDir))\n            {\n                List<string> executables = new();\n                var currentDir = Path.Combine(installDir, \"current\");\n\n                try\n                {\n                    var install = JsonSerializer.Deserialize(\n                        File.ReadAllText(Path.Combine(currentDir, \"install.json\")),\n                        _jsonContext.AppInstall);\n\n                    var manifest = JsonSerializer.Deserialize(\n                        File.ReadAllText(Path.Combine(currentDir, \"manifest.json\")),\n                        _jsonContext.AppManifest);\n\n                    entry.AboutUrl = manifest.Homepage;\n\n                    var shortcuts = manifest.Architecture?[install.Architecture]?.Shortcuts ?? manifest.Shortcuts;\n                    if (shortcuts != null)\n                    {\n                        var files = shortcuts.Select(x => Path.Combine(currentDir, x[0]))\n                                             .Where(File.Exists)\n                                             .Select(Path.GetFullPath)\n                                             .Distinct(StringComparer.OrdinalIgnoreCase)\n                                             .ToList();\n\n                        executables.AddRange(files.Where(x => x.EndsWith(\".exe\", StringComparison.OrdinalIgnoreCase)).Concat(files.Where(x => x.EndsWith(\".cmd\", StringComparison.OrdinalIgnoreCase))));\n\n                        var potentialIcons = files.Where(x => x.EndsWith(\".ico\", StringComparison.OrdinalIgnoreCase)).Concat(files.Where(x => x.EndsWith(\".exe\", StringComparison.OrdinalIgnoreCase))).ToList();\n                        foreach (var potentialIcon in potentialIcons)\n                        {\n                            try\n                            {\n                                var icon = potentialIcon.EndsWith(\".ico\", StringComparison.OrdinalIgnoreCase) ? new Icon(potentialIcon) : Icon.ExtractAssociatedIcon(potentialIcon);\n                                if (icon == null || icon.Size == Size.Empty) continue;\n                                entry.IconBitmap = icon;\n                                break;\n                            }\n                            catch (Exception ex)\n                            {\n                                Console.WriteLine($@\"Failed to get icon for [{name}] from [{potentialIcon}] - {ex}\");\n                            }\n                        }\n                    }\n\n                    var bin = manifest.Architecture?[install.Architecture]?.Bin ?? manifest.Bin;\n                    if (bin != null)\n                    {\n                        var filteredBins = bin.Select(x => Path.Combine(installDir, \"current\", x))\n                                              .Where(File.Exists)\n                                              .Select(Path.GetFullPath)\n                                              .Except(executables, StringComparer.OrdinalIgnoreCase)\n                                              .Where(x => x.EndsWith(\".exe\", StringComparison.OrdinalIgnoreCase) || x.EndsWith(\".cmd\", StringComparison.OrdinalIgnoreCase))\n                                              .ToList();\n                        executables.AddRange(filteredBins);\n                    }\n\n                    var env = manifest.Architecture?[install.Architecture]?.EnvAddPath ?? manifest.EnvAddPath;\n                    if (env is { Length: > 0 })\n                    {\n                        currentDir = Path.Combine(currentDir, env[0]);\n                    }\n                }\n                catch (IOException)\n                { }\n                catch (UnauthorizedAccessException)\n                { }\n                catch (JsonException)\n                { }\n\n                if (executables.Any())\n                {\n                    // No need to sort, safe to assume the manifest has the most important executables in first positions\n                    entry.SortedExecutables = executables.ToArray();\n                }\n                else\n                {\n                    // Avoid looking for executables in old versions\n                    entry.InstallLocation = currentDir;\n                    searcher.AddMissingInformation(entry);\n                }\n\n                entry.InstallLocation = installDir;\n            }\n\n            entry.UninstallerKind = UninstallerType.PowerShell;\n            entry.UninstallString = MakeScoopCommand(\"uninstall \" + name + (isGlobal ? \" --global\" : \"\")).ToString();\n\n            return entry;\n        }\n\n        public bool IsEnabled() => UninstallToolsGlobalConfig.ScanScoop;\n        public string DisplayName => Localisation.Progress_AppStores_Scoop;\n\n        private static string RunScoopCommand(string scoopArgs)\n        {\n            var startInfo = MakeScoopCommand(scoopArgs).ToProcessStartInfo();\n            startInfo.UseShellExecute = false;\n            startInfo.RedirectStandardOutput = true;\n            startInfo.RedirectStandardError = false;\n            startInfo.CreateNoWindow = true;\n            startInfo.StandardOutputEncoding = Encoding.Default;\n\n            using (var process = Process.Start(startInfo))\n            {\n                var sw = Stopwatch.StartNew();\n                var output = process?.StandardOutput.ReadToEnd();\n                Trace.WriteLine($\"[Performance] Running command {startInfo.FileName} {startInfo.Arguments} took {sw.ElapsedMilliseconds}ms\");\n                return output;\n            }\n        }\n\n        private static ProcessStartCommand MakeScoopCommand(string scoopArgs)\n        {\n            return new ProcessStartCommand(_powershellPath, $\"-NoProfile -ex unrestricted \\\"{_scriptPath}\\\" {scoopArgs}\");\n        }\n\n\n        [JsonSerializable(typeof(ExportInfo))]\n        [JsonSerializable(typeof(AppInstall))]\n        [JsonSerializable(typeof(AppManifest))]\n        private sealed partial class JsonContext : JsonSerializerContext\n        { }\n    }\n}\n"
  },
  {
    "path": "source/UninstallTools/Factory/ScriptFactory.cs",
    "content": "/*\n    Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Drawing;\nusing System.IO;\nusing System.Linq;\nusing System.Reflection;\nusing Klocman.Tools;\nusing UninstallTools.Properties;\n\nnamespace UninstallTools.Factory\n{\n    public class ScriptFactory : IIndependantUninstallerFactory\n    {\n        private static readonly PropertyInfo[] EntryProps;\n        //private static readonly PropertyInfo[] SystemIconProps;\n        \n        private static string HelperPath { get; } = Path.Combine(UninstallToolsGlobalConfig.AssemblyLocation, @\"ScriptHelper.exe\");\n        private static bool IsHelperAvailable() => File.Exists(HelperPath);\n\n        static ScriptFactory()\n        {\n            EntryProps = typeof(ApplicationUninstallerEntry)\n                .GetProperties(BindingFlags.Instance | BindingFlags.Public)\n                .Where(p => p.CanWrite && p.PropertyType == typeof(string))\n                .ToArray();\n\n            // SystemIconProps = typeof(SystemIcons)\n            //     .GetProperties(BindingFlags.Static | BindingFlags.Public)\n            //     .Where(p => p.CanRead)\n            //     .ToArray();\n        }\n\n        public IList<ApplicationUninstallerEntry> GetUninstallerEntries(\n            ListGenerationProgress.ListGenerationCallback progressCallback)\n        {\n            var results = new List<ApplicationUninstallerEntry>();\n            if (!IsHelperAvailable()) return results;\n\n            var result = FactoryTools.StartHelperAndReadOutput(HelperPath, \"list\");\n\n            if (string.IsNullOrEmpty(result)) return results;\n\n            var dataSets = FactoryTools.ExtractAppDataSetsFromHelperOutput(result);\n\n            foreach (var dataSet in dataSets)\n            {\n                var entry = new ApplicationUninstallerEntry();\n\n                // Automatically fill in any supplied static properties\n                foreach (var entryProp in EntryProps)\n                {\n                    if (!dataSet.TryGetValue(entryProp.Name, out var item) || string.IsNullOrEmpty(item))\n                        continue;\n\n                    try\n                    {\n                        entryProp.SetValue(entry, item, null);\n                    }\n                    catch (SystemException ex)\n                    {\n                        Trace.WriteLine(ex);\n                    }\n                }\n\n                if (!entry.UninstallPossible && !entry.QuietUninstallPossible) continue;\n\n                if (string.IsNullOrEmpty(entry.Publisher))\n                    entry.Publisher = \"Script\";\n\n                //if (dataSet.TryGetValue(\"SystemIcon\", out var icon) && !string.IsNullOrEmpty(icon))\n                //{\n                //    var iconObj = SystemIconProps\n                //        .FirstOrDefault(p => p.Name.Equals(icon, StringComparison.OrdinalIgnoreCase))\n                //        ?.GetValue(null, null) as Icon;\n                //    entry.IconBitmap = iconObj;\n                //}\n                entry.IconBitmap = SystemIcons.Shield;\n\n                results.Add(entry);\n            }\n\n            return results;\n        }\n\n        public bool IsEnabled() => UninstallToolsGlobalConfig.ScanPreDefined;\n        public string DisplayName => Localisation.Progress_AppStores_Templates;\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Factory/SteamFactory.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Security;\r\nusing Klocman.IO;\r\nusing UninstallTools.Junk;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Factory\r\n{\r\n    public class SteamFactory : IIndependantUninstallerFactory, IJunkCreator\r\n    {\r\n        private static bool GetSteamInfo(out string steamLocation)\r\n        {\r\n            steamLocation = null;\r\n\r\n            if (File.Exists(SteamHelperPath))\r\n            {\r\n                var output = FactoryTools.StartHelperAndReadOutput(SteamHelperPath, \"steam\");\r\n                if (!string.IsNullOrEmpty(output)\r\n                    && !output.Contains(\"error\", StringComparison.InvariantCultureIgnoreCase)\r\n                    && Directory.Exists(output = output.Trim().TrimEnd('\\\\', '/')))\r\n                {\r\n                    steamLocation = output;\r\n                    return true;\r\n                }\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        internal static string SteamHelperPath { get; } = Path.Combine(UninstallToolsGlobalConfig.AssemblyLocation, @\"SteamHelper.exe\");\r\n\r\n        #region IIndependantUninstallerFactory\r\n\r\n        public IList<ApplicationUninstallerEntry> GetUninstallerEntries(\r\n            ListGenerationProgress.ListGenerationCallback progressCallback)\r\n        {\r\n            var results = new List<ApplicationUninstallerEntry>();\r\n            if (!GetSteamInfo(out var steamLocation)) return results;\r\n\r\n            var output = FactoryTools.StartHelperAndReadOutput(SteamHelperPath, \"l /i\");\r\n            if (string.IsNullOrEmpty(output)) return results;\r\n\r\n            foreach (var data in FactoryTools.ExtractAppDataSetsFromHelperOutput(output))\r\n            {\r\n                if (!int.TryParse(data[\"AppId\"], out var appId)) continue;\r\n\r\n                var entry = new ApplicationUninstallerEntry\r\n                {\r\n                    DisplayName = data[\"Name\"],\r\n                    UninstallString = data[\"UninstallString\"],\r\n                    InstallLocation = data[\"InstallDirectory\"],\r\n                    UninstallerKind = UninstallerType.Steam,\r\n                    IsValid = true,\r\n                    IsOrphaned = true,\r\n                    RatingId = \"Steam App \" + appId.ToString(\"G\")\r\n                };\r\n\r\n                if (long.TryParse(data[\"SizeOnDisk\"], out var bytes))\r\n                    entry.EstimatedSize = FileSize.FromBytes(bytes);\r\n\r\n                results.Add(entry);\r\n            }\r\n\r\n            results.Add(new ApplicationUninstallerEntry\r\n            {\r\n                AboutUrl = @\"http://steampowered.com/\",\r\n                InstallLocation = steamLocation,\r\n                DisplayIcon = Path.Combine(steamLocation, \"Steam.exe\"),\r\n                DisplayName = \"Steam\",\r\n                UninstallerKind = UninstallerType.Nsis,\r\n                UninstallString = Path.Combine(steamLocation, \"uninstall.exe\"),\r\n                IsOrphaned = false,\r\n                RatingId = \"Steam\",\r\n                IsValid = File.Exists(Path.Combine(steamLocation, \"uninstall.exe\")),\r\n                InstallDate = Directory.GetCreationTime(steamLocation),\r\n                Publisher = \"Valve Corporation\",\r\n                // Prevent very long size scan in case of many games, the install itself is about 600-800MB\r\n                EstimatedSize = FileSize.FromKilobytes(1024 * 700)\r\n            });\r\n\r\n            return results;\r\n        }\r\n\r\n        public bool IsEnabled() => UninstallToolsGlobalConfig.ScanSteam;\r\n        public string DisplayName => Localisation.Progress_AppStores_Steam;\r\n\r\n        #endregion\r\n\r\n        #region IJunkCreator\r\n\r\n        private static readonly string[] TempFolderNames = { \"downloading\", \"shadercache\", \"temp\" };\r\n        public void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers) { }\r\n        public IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.UninstallerKind != UninstallerType.Steam || string.IsNullOrEmpty(target.InstallLocation))\r\n                return Enumerable.Empty<IJunkResult>();\r\n\r\n            var results = new List<IJunkResult>();\r\n            try\r\n            {\r\n                // Look for this appID in steam library's temporary folders (game is inside \"common\" folder, temp folders are next to that)\r\n                var d = new DirectoryInfo(target.InstallLocation);\r\n                if (d.Exists && d.Parent?.Name == \"common\" && d.Parent.Parent != null)\r\n                {\r\n                    var libraryDir = d.Parent.Parent.FullName;\r\n                    Debug.Assert(target.RatingId.StartsWith(\"Steam App \"));\r\n                    var appIdStr = target.RatingId.Substring(\"Steam App \".Length);\r\n                    foreach (var cacheFolderName in TempFolderNames)\r\n                    {\r\n                        var subpath = Path.Combine(libraryDir, cacheFolderName, appIdStr);\r\n                        if (Directory.Exists(subpath))\r\n                        {\r\n                            var junk = new FileSystemJunk(new DirectoryInfo(subpath), target, this);\r\n                            junk.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n                            junk.Confidence.Add(4);\r\n                            results.Add(junk);\r\n                        }\r\n                    }\r\n                }\r\n                else\r\n                {\r\n                    Debug.Fail(target.InstallLocation + \" does not point inside of a steam library's common folder\");\r\n                }\r\n\r\n            }\r\n            catch (SystemException e)\r\n            {\r\n                Console.WriteLine(e);\r\n            }\r\n            return results;\r\n        }\r\n\r\n        public string CategoryName { get; } = Localisation.UninstallerType_Steam;\r\n\r\n        #endregion\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/StoreAppFactory.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Drawing;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Native;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Factory\r\n{\r\n    public class StoreAppFactory : IIndependantUninstallerFactory\r\n    {\r\n        private static string HelperPath { get; } = Path.Combine(UninstallToolsGlobalConfig.AssemblyLocation, @\"StoreAppHelper.exe\");\r\n        private static bool IsHelperAvailable() => File.Exists(HelperPath);\r\n\r\n        public static string GetPowerShellRemoveCommand(string fullName)\r\n        {\r\n            return $\"Remove-AppxPackage -package {fullName} -confirm:$false\";\r\n        }\r\n\r\n        /// <summary>\r\n        /// Convert supplied store app entries to power shell uninstall commands. Non-store app entries are ignored.\r\n        /// </summary>\r\n        public static string[] ToPowerShellRemoveCommands(IEnumerable<ApplicationUninstallerEntry> appEntries)\r\n        {\r\n            return appEntries.Where(x => x.UninstallerKind == UninstallerType.StoreApp)\r\n                .Select(x => GetPowerShellRemoveCommand(x.Comment))\r\n                .ToArray();\r\n        }\r\n\r\n        public IList<ApplicationUninstallerEntry> GetUninstallerEntries(\r\n            ListGenerationProgress.ListGenerationCallback progressCallback)\r\n        {\r\n            var results = new List<ApplicationUninstallerEntry>();\r\n            if (!IsHelperAvailable()) return results;\r\n\r\n            var output = FactoryTools.StartHelperAndReadOutput(HelperPath, \"/query\");\r\n            if (string.IsNullOrEmpty(output)) return results;\r\n\r\n            var windowsPath = WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_WINDOWS);\r\n\r\n            foreach (var data in FactoryTools.ExtractAppDataSetsFromHelperOutput(output))\r\n            {\r\n                if (!data.ContainsKey(\"InstalledLocation\") || !Directory.Exists(data[\"InstalledLocation\"])) continue;\r\n\r\n                var fullName = data[\"FullName\"];\r\n                var separatorIndex = fullName.IndexOf(\"_\", StringComparison.Ordinal);\r\n                var uninstallStr = $\"\\\"{HelperPath}\\\" /uninstall \\\"{fullName}\\\"\";\r\n                var isProtected = data.ContainsKey(\"IsProtected\") && Convert.ToBoolean(data[\"IsProtected\"], CultureInfo.InvariantCulture);\r\n                var result = new ApplicationUninstallerEntry\r\n                {\r\n                    Comment = fullName,\r\n                    CacheIdOverride = fullName,\r\n                    RatingId = separatorIndex >= 0 ? fullName.Substring(0, separatorIndex) : fullName,\r\n                    UninstallString = uninstallStr,\r\n                    QuietUninstallString = uninstallStr,\r\n                    RawDisplayName = string.IsNullOrEmpty(data[\"DisplayName\"]) ? fullName : data[\"DisplayName\"],\r\n                    Publisher = data[\"PublisherDisplayName\"],\r\n                    IsValid = true,\r\n                    UninstallerKind = UninstallerType.StoreApp,\r\n                    InstallLocation = data[\"InstalledLocation\"],\r\n                    InstallDate = Directory.GetCreationTime(data[\"InstalledLocation\"]),\r\n                    IsProtected = isProtected,\r\n                    SystemComponent = isProtected\r\n                };\r\n\r\n                if (File.Exists(data[\"Logo\"]))\r\n                {\r\n                    try\r\n                    {\r\n                        result.DisplayIcon = data[\"Logo\"];\r\n                        result.IconBitmap = DrawingTools.IconFromImage(new Bitmap(data[\"Logo\"]));\r\n                    }\r\n                    catch\r\n                    {\r\n                        result.DisplayIcon = null;\r\n                        result.IconBitmap = null;\r\n                    }\r\n                }\r\n\r\n                if (result.InstallLocation.StartsWith(windowsPath, StringComparison.InvariantCultureIgnoreCase))\r\n                {\r\n                    result.SystemComponent = true;\r\n                    //result.IsProtected = true;\r\n                }\r\n\r\n                results.Add(result);\r\n            }\r\n\r\n            return results;\r\n        }\r\n\r\n        public bool IsEnabled() => UninstallToolsGlobalConfig.ScanStoreApps;\r\n        public string DisplayName => Localisation.Progress_AppStores_WinStore;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/WindowsFeatureFactory.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Threading;\r\nusing Klocman.IO;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Factory\r\n{\r\n    public class WindowsFeatureFactory : IIndependantUninstallerFactory\r\n    {\r\n        public IList<ApplicationUninstallerEntry> GetUninstallerEntries(\r\n            ListGenerationProgress.ListGenerationCallback progressCallback)\r\n        {\r\n            var results = new List<ApplicationUninstallerEntry>();\r\n            if (Environment.OSVersion.Version < WindowsTools.Windows7) return results;\r\n\r\n            Exception error = null;\r\n            var t = new Thread(() =>\r\n            {\r\n                try\r\n                {\r\n                    results.AddRange(WmiQueries.GetWindowsFeatures()\r\n                        .Where(x => x.Enabled)\r\n                        .Select(WindowsFeatureToUninstallerEntry));\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    error = ex;\r\n                }\r\n            });\r\n            t.Start();\r\n\r\n            t.Join(TimeSpan.FromSeconds(40));\r\n\r\n            if (error != null)\r\n                throw new IOException(\"Error while collecting Windows Features. If Windows Update is running wait until it finishes and try again. If the error persists try restarting your computer. In case nothing helps, read the KB957310 article.\", error);\r\n            if (t.IsAlive)\r\n            {\r\n                //t.Abort();\r\n                throw new TimeoutException(\"WMI query has hung while collecting Windows Features, try restarting your computer. If the error persists read the KB957310 article.\");\r\n            }\r\n\r\n            return results;\r\n        }\r\n\r\n        private static ApplicationUninstallerEntry WindowsFeatureToUninstallerEntry(WindowsFeatureInfo info)\r\n        {\r\n            var displayName = !string.IsNullOrEmpty(info.DisplayName) ? info.DisplayName : info.FeatureName;\r\n\r\n            return new ApplicationUninstallerEntry\r\n            {\r\n                RawDisplayName = displayName,\r\n                Comment = info.Description,\r\n                UninstallString = DismTools.GetDismUninstallString(info.FeatureName, false),\r\n                QuietUninstallString = DismTools.GetDismUninstallString(info.FeatureName, true),\r\n                UninstallerKind = UninstallerType.WindowsFeature,\r\n                Publisher = \"Microsoft Corporation\",\r\n                IsValid = true,\r\n                Is64Bit = ProcessTools.Is64BitProcess ? MachineType.X64 : MachineType.X86,\r\n                RatingId = \"WindowsFeature_\" + info.FeatureName\r\n            };\r\n        }\r\n\r\n        public bool IsEnabled() => UninstallToolsGlobalConfig.ScanWinFeatures;\r\n        public string DisplayName => Localisation.Progress_AppStores_WinFeatures;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Factory/WindowsUpdateFactory.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing Klocman.IO;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Factory\r\n{\r\n    public class WindowsUpdateFactory : IIndependantUninstallerFactory\r\n    {\r\n        private static string HelperPath { get; } = Path.Combine(UninstallToolsGlobalConfig.AssemblyLocation, @\"WinUpdateHelper.exe\");\r\n        private static bool IsHelperAvailable() => File.Exists(HelperPath);\r\n\r\n        public IList<ApplicationUninstallerEntry> GetUninstallerEntries(ListGenerationProgress.ListGenerationCallback progressCallback)\r\n        {\r\n            var results = new List<ApplicationUninstallerEntry>();\r\n            if (!IsHelperAvailable()) return results;\r\n\r\n            var output = FactoryTools.StartHelperAndReadOutput(HelperPath, \"list\");\r\n            if (string.IsNullOrEmpty(output) || output.Trim().StartsWith(\"Error\", StringComparison.OrdinalIgnoreCase)) return results;\r\n\r\n            foreach (var group in FactoryTools.ExtractAppDataSetsFromHelperOutput(output))\r\n            {\r\n                var entry = new ApplicationUninstallerEntry\r\n                {\r\n                    UninstallerKind = UninstallerType.WindowsUpdate,\r\n                    IsUpdate = true,\r\n                    Publisher = \"Microsoft Corporation\"\r\n                };\r\n                foreach (var valuePair in group)\r\n                {\r\n                    switch (valuePair.Key)\r\n                    {\r\n                        case \"UpdateID\":\r\n                            entry.RatingId = valuePair.Value;\r\n                            if (GuidTools.TryExtractGuid(valuePair.Value, out var result))\r\n                                entry.BundleProviderKey = result;\r\n                            break;\r\n                        case \"RevisionNumber\":\r\n                            entry.DisplayVersion = ApplicationEntryTools.CleanupDisplayVersion(valuePair.Value);\r\n                            break;\r\n                        case \"Title\":\r\n                            entry.RawDisplayName = valuePair.Value;\r\n                            break;\r\n                        case \"IsUninstallable\":\r\n                            if (bool.TryParse(valuePair.Value, out var isUnins))\r\n                                entry.IsProtected = !isUnins;\r\n                            break;\r\n                        case \"SupportUrl\":\r\n                            entry.AboutUrl = valuePair.Value;\r\n                            break;\r\n                        case \"MinDownloadSize\":\r\n                            if (long.TryParse(valuePair.Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var size))\r\n                                entry.EstimatedSize = FileSize.FromBytes(size);\r\n                            break;\r\n                        case \"MaxDownloadSize\":\r\n                            break;\r\n                        case \"LastDeploymentChangeTime\":\r\n                            if (DateTime.TryParse(valuePair.Value, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date) &&\r\n                                !DateTime.MinValue.Equals(date))\r\n                                entry.InstallDate = date;\r\n                            break;\r\n                        default:\r\n                            Debug.Fail(\"Unknown label\");\r\n                            break;\r\n                    }\r\n                }\r\n\r\n                entry.UninstallString = $\"\\\"{HelperPath}\\\" uninstall {entry.RatingId}\";\r\n                entry.QuietUninstallString = entry.UninstallString;\r\n\r\n                results.Add(entry);\r\n            }\r\n\r\n            return results;\r\n        }\r\n\r\n        public bool IsEnabled() => UninstallToolsGlobalConfig.ScanWinUpdates;\r\n        public string DisplayName => Localisation.Progress_AppStores_WinUpdates;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UninstallTools/Junk/Confidence/ConfidenceCollection.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\n\r\nnamespace UninstallTools.Junk.Confidence\r\n{\r\n    public sealed class ConfidenceCollection : IEnumerable<ConfidenceRecord>\r\n    {\r\n        private readonly List<ConfidenceRecord> _items = new();\r\n\r\n        internal ConfidenceCollection()\r\n        {\r\n        }\r\n\r\n        public bool IsEmpty => _items.Count == 0;\r\n\r\n        public IEnumerable<ConfidenceRecord> ConfidenceParts => _items;\r\n\r\n        public ConfidenceLevel GetConfidence()\r\n        {\r\n            if (_items.Count < 1)\r\n                return ConfidenceLevel.Unknown;\r\n\r\n            var result = GetRawConfidence();\r\n\r\n            if (result < 0)\r\n                return ConfidenceLevel.Bad;\r\n            if (result < 2)\r\n                return ConfidenceLevel.Questionable;\r\n            if (result < 5)\r\n                return ConfidenceLevel.Good;\r\n            return ConfidenceLevel.VeryGood;\r\n        }\r\n\r\n        // Returns a number representing the confidence. 0 is a mid-point.\r\n        public int GetRawConfidence()\r\n        {\r\n            var result = 0;\r\n            _items.ForEach(x => result += x.Change);\r\n            return result;\r\n        }\r\n\r\n        public string GetWorstOffender()\r\n        {\r\n            var lowest = _items.Min(x => x.Change);\r\n            var item = _items.FirstOrDefault(x => x.Change.Equals(lowest));\r\n\r\n            if (item != null) return item.Reason ?? string.Empty;\r\n            return string.Empty;\r\n        }\r\n\r\n        internal void Add(int value)\r\n        {\r\n            _items.Add(new ConfidenceRecord(value));\r\n        }\r\n\r\n        internal void Add(ConfidenceRecord value)\r\n        {\r\n            _items.Add(value);\r\n        }\r\n\r\n        internal void AddRange(IEnumerable<ConfidenceRecord> values)\r\n        {\r\n            _items.AddRange(values.Where(x => !_items.Contains(x)));\r\n        }\r\n\r\n        public IEnumerator<ConfidenceRecord> GetEnumerator()\r\n        {\r\n            return _items.GetEnumerator();\r\n        }\r\n\r\n        IEnumerator IEnumerable.GetEnumerator()\r\n        {\r\n            return ((IEnumerable) _items).GetEnumerator();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Confidence/ConfidenceGenerators.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Containers;\r\n\r\nnamespace UninstallTools.Junk.Confidence\r\n{\r\n    public static class ConfidenceGenerators\r\n    {\r\n        public static IEnumerable<ConfidenceRecord> GenerateConfidence(string itemName, ApplicationUninstallerEntry applicationUninstallerEntry)\r\n        {\r\n            return GenerateConfidence(itemName, null, 0, applicationUninstallerEntry);\r\n        }\r\n\r\n        internal static IEnumerable<ConfidenceRecord> GenerateConfidence(string itemName, string itemParentPath, int level, ApplicationUninstallerEntry applicationUninstallerEntry)\r\n        {\r\n            var matchResult = MatchStringToProductName(applicationUninstallerEntry, itemName);\r\n\r\n            return GenerateConfidence(itemName, matchResult, itemParentPath, level, applicationUninstallerEntry);\r\n        }\r\n\r\n        internal static IEnumerable<ConfidenceRecord> GenerateConfidence(string itemName, int similarityToEntry, string itemParentPath, int level,\r\n            ApplicationUninstallerEntry applicationUninstallerEntry)\r\n        {\r\n            if (similarityToEntry < 0)\r\n                yield break;\r\n\r\n            yield return similarityToEntry < 2\r\n                ? ConfidenceRecords.ProductNamePerfectMatch\r\n                : ConfidenceRecords.ProductNameDodgyMatch;\r\n\r\n            // Base rating according to path depth. 0 is best\r\n            yield return new ConfidenceRecord(2 - Math.Abs(level) * 2);\r\n\r\n            if (ItemNameEqualsCompanyName(applicationUninstallerEntry, itemName))\r\n                yield return ConfidenceRecords.ItemNameEqualsCompanyName;\r\n\r\n            if (level > 0)\r\n            {\r\n                if (applicationUninstallerEntry.PublisherTrimmed.ToLowerInvariant()\r\n                    .Contains(PathTools.GetName(itemParentPath).Replace('_', ' ').ToLowerInvariant()))\r\n                    yield return ConfidenceRecords.CompanyNameMatch;\r\n            }\r\n\r\n            if (UninstallToolsGlobalConfig.IsKnownFolder(itemParentPath))\r\n                yield return ConfidenceRecords.DirectlyInsideKnownFolder;\r\n        }\r\n\r\n        /// <summary>\r\n        /// -1 if match failed, 0 if string matched perfectly, higher if match was worse\r\n        /// </summary>\r\n        internal static int MatchStringToProductName(ApplicationUninstallerEntry applicationUninstallerEntry, string str)\r\n        {\r\n            var productName = applicationUninstallerEntry.DisplayNameTrimmed.ToLowerInvariant();\r\n            str = str.Replace('_', ' ').ToLowerInvariant().Trim();\r\n            var lowestLength = Math.Min(productName.Length, str.Length);\r\n\r\n            // Don't match short strings\r\n            if (lowestLength <= 4)\r\n                return -1;\r\n\r\n            var result = Sift4.SimplestDistance(productName, str, 1);\r\n\r\n            // Strings match perfectly\r\n            if (result <= 1)\r\n                return result;\r\n\r\n            // If the product name contains company name, try trimming it and testing again\r\n            var publisher = applicationUninstallerEntry.PublisherTrimmed.ToLower();\r\n            if (publisher.Length > 4 && productName.Contains(publisher))\r\n            {\r\n                var trimmedProductName = productName.Replace(publisher, \"\").Trim();\r\n                if (trimmedProductName.Length <= 4)\r\n                    return -1;\r\n\r\n                var trimmedResult = Sift4.SimplestDistance(trimmedProductName, str, 1);\r\n\r\n                if (trimmedResult <= 1)\r\n                    return trimmedResult;\r\n            }\r\n\r\n            var dirToName = str.Contains(productName);\r\n            var nameToDir = productName.Contains(str);\r\n\r\n            if (dirToName || nameToDir)\r\n                return 2;\r\n\r\n            // Hard cut-off if the difference is more than a third of the checked name\r\n            if (result < lowestLength / 3)\r\n                return result;\r\n\r\n            return -1;\r\n        }\r\n\r\n        // Check if name is the same as publisher, could be \"Adobe AIR\" getting matched to a folder \"Adobe\"\r\n        internal static bool ItemNameEqualsCompanyName(ApplicationUninstallerEntry applicationUninstallerEntry, string itemName)\r\n        {\r\n            var publisher = applicationUninstallerEntry.PublisherTrimmed.ToLowerInvariant();\r\n            itemName = itemName.ToLowerInvariant();\r\n            return !publisher.Equals(applicationUninstallerEntry.DisplayNameTrimmed.ToLowerInvariant()) && publisher.Contains(itemName);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Check if there are any similar names that match DisplayNameTrimmed, and if there are then add negative confidence to names other than the best match.\r\n        /// This is to avoid e.g. `AppX Extended` matching junk entries from `AppX`\r\n        /// </summary>\r\n        internal static void TestForSimilarNames(ApplicationUninstallerEntry thisUninstaller, IEnumerable<ApplicationUninstallerEntry> otherUninstallers,\r\n            ICollection<KeyValuePair<JunkResultBase, string>> createdJunk)\r\n        {\r\n            if (createdJunk.Count == 0) return;\r\n\r\n            var thisDisplayName = thisUninstaller.DisplayNameTrimmed;\r\n\r\n            // Check if any of the other apps match any of the entries, as long as the app names don't contain this app's name\r\n            var otherFiltered = otherUninstallers.Where(x => x != thisUninstaller && !x.DisplayNameTrimmed.Contains(thisDisplayName)).ToList();\r\n            var matchingWithOther = createdJunk.Where(x => otherFiltered.Any(y => y.DisplayNameTrimmed.Contains(x.Value)));\r\n\r\n            if (createdJunk.Count >= 2)\r\n            {\r\n                // Check for folders with similar names like `AppX Extended` and `AppX` and give confidence penalty to every one other than the best match\r\n                matchingWithOther = matchingWithOther\r\n                    .Concat(createdJunk\r\n                        .Where(x => x.Value.Contains(thisDisplayName) || thisDisplayName.Contains(x.Value))\r\n                        .OrderBy(x => Sift4.SimplestDistance(x.Value, thisDisplayName, 100))\r\n                        .Skip(1))\r\n                    .Distinct();\r\n            }\r\n\r\n            foreach (var sketchyJunk in matchingWithOther)\r\n                sketchyJunk.Key.Confidence.Add(ConfidenceRecords.UsedBySimilarNamedApp);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Confidence/ConfidenceLevel.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing Klocman.Localising;\nusing UninstallTools.Properties;\n\nnamespace UninstallTools.Junk.Confidence\n{\n    public enum ConfidenceLevel\n    {\n        [LocalisedName(typeof (Localisation), \"Confidence_Unknown\")] Unknown = 0,\n        [LocalisedName(typeof (Localisation), \"Confidence_Bad\")] Bad = 5,\n        [LocalisedName(typeof (Localisation), \"Confidence_Questionable\")] Questionable = 7,\n        [LocalisedName(typeof (Localisation), \"Confidence_Good\")] Good = 9,\n        [LocalisedName(typeof (Localisation), \"Confidence_VeryGood\")] VeryGood = 12\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Confidence/ConfidenceRecord.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nnamespace UninstallTools.Junk.Confidence\r\n{\r\n    public sealed class ConfidenceRecord\r\n    {\r\n        public ConfidenceRecord(int change, string reason)\r\n        {\r\n            Change = change;\r\n            Reason = reason;\r\n        }\r\n\r\n        public ConfidenceRecord(int change)\r\n        {\r\n            Change = change;\r\n        }\r\n\r\n        public int Change { get; }\r\n        public string Reason { get; }\r\n\r\n        public override bool Equals(object obj)\r\n        {\r\n            if (obj is not ConfidenceRecord casted)\r\n                return false;\r\n\r\n            if (ReferenceEquals(this, obj))\r\n                return true;\r\n\r\n            return (casted.Change == Change) && (casted.Reason == Reason);\r\n        }\r\n\r\n        public override int GetHashCode()\r\n        {\r\n            return Change.GetHashCode() ^ Reason.GetHashCode();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Confidence/ConfidenceRecords.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Confidence\r\n{\r\n    /// <summary>\r\n    /// Universal confidence pieces\r\n    /// </summary>\r\n    public static class ConfidenceRecords\r\n    {\r\n        public static readonly ConfidenceRecord CompanyNameDidNotMatch = new(-2, Localisation.ConfidencePart_CompanyNameDidNotMatch);\r\n\r\n        public static readonly ConfidenceRecord CompanyNameMatch = new(4, Localisation.ConfidencePart_CompanyNameMatch);\r\n\r\n        public static readonly ConfidenceRecord AllSubdirsMatched = new(4, Localisation.ConfidencePart_AllSubdirsMatched);\r\n\r\n        public static readonly ConfidenceRecord DirectoryStillUsed = new(-7, Localisation.ConfidencePart_DirectoryStillUsed);\r\n\r\n        public static readonly ConfidenceRecord ExplicitConnection = new(4, Localisation.ConfidencePart_ExplicitConnection);\r\n\r\n        public static readonly ConfidenceRecord ItemNameEqualsCompanyName = new(-2, Localisation.ConfidencePart_ItemNameEqualsCompanyName);\r\n\r\n        public static readonly ConfidenceRecord ProductNameDodgyMatch = new(-2, Localisation.ConfidencePart_ProductNameDodgyMatch);\r\n\r\n        public static readonly ConfidenceRecord ProductNamePerfectMatch = new(2, Localisation.ConfidencePart_ProductNamePerfectMatch);\r\n\r\n        public static readonly ConfidenceRecord QuestionableDirectoryName = new(-3, Localisation.ConfidencePart_QuestionableDirectoryName);\r\n\r\n        public static readonly ConfidenceRecord IsUninstallerRegistryKey = new(20, Localisation.ConfidencePart_IsUninstallerRegistryKey);\r\n\r\n        public static readonly ConfidenceRecord IsStoreApp = new(-10, Localisation.ConfidencePart_IsStoreApp);\r\n\r\n        public static readonly ConfidenceRecord IsEmptyFolder = new(4, Localisation.Confidence_PF_EmptyFolder);\r\n\r\n        public static readonly ConfidenceRecord ExecutablesArePresent = new(-4, Localisation.Confidence_PF_ExecsPresent);\r\n\r\n        public static readonly ConfidenceRecord FilesArePresent = new(0, Localisation.Confidence_PF_FilesPresent);\r\n\r\n        public static readonly ConfidenceRecord ManyFilesArePresent = new(-2, Localisation.Confidence_PF_ManyFilesPresent);\r\n\r\n        public static readonly ConfidenceRecord ProgramNameIsStillUsed = new(-4, Localisation.Confidence_PF_NameIsUsed);\r\n\r\n        public static readonly ConfidenceRecord FolderHasNoSubdirectories = new(2, Localisation.Confidence_PF_NoSubdirs);\r\n\r\n        public static readonly ConfidenceRecord PublisherIsStillUsed = new(-4, Localisation.Confidence_PF_PublisherIsUsed);\r\n\r\n        public static readonly ConfidenceRecord UsedBySimilarNamedApp = new(-2, Localisation.Confidence_UsedBySimilarNamedApp);\r\n\r\n        public static readonly ConfidenceRecord DirectlyInsideKnownFolder = new(-1, Localisation.Confidence_DirectlyInsideKnownFolder);\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Containers/FileSystemJunk.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\nusing Klocman.Tools;\r\nusing Microsoft.VisualBasic.FileIO;\r\n\r\nnamespace UninstallTools.Junk.Containers\r\n{\r\n    public class FileSystemJunk : JunkResultBase\r\n    {\r\n        public FileSystemJunk(FileSystemInfo path, ApplicationUninstallerEntry application, IJunkCreator source) : base(application, source)\r\n        {\r\n            Path = path;\r\n        }\r\n\r\n        public FileSystemInfo Path { get; }\r\n\r\n        public override void Backup(string backupDirectory)\r\n        {\r\n            // Items are deleted to the recycle bin\r\n        }\r\n\r\n        public override void Delete()\r\n        {\r\n            if (Path is DirectoryInfo)\r\n                FileSystem.DeleteDirectory(Path.FullName, UIOption.OnlyErrorDialogs,\r\n                    RecycleOption.SendToRecycleBin, UICancelOption.DoNothing);\r\n            else if (Path is FileInfo)\r\n                FileSystem.DeleteFile(Path.FullName, UIOption.OnlyErrorDialogs,\r\n                    RecycleOption.SendToRecycleBin, UICancelOption.DoNothing);\r\n            else\r\n                throw new NotImplementedException(\"Unknown FileSystemInfo implementation\");\r\n        }\r\n\r\n        public override string GetDisplayName()\r\n        {\r\n            return Path.FullName;\r\n        }\r\n\r\n        public override void Open()\r\n        {\r\n            if (Path.Exists)\r\n                WindowsTools.OpenExplorerFocusedOnObject(Path.FullName);\r\n            else\r\n                throw new FileNotFoundException(null, Path.FullName);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Containers/IJunkResult.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing UninstallTools.Junk.Confidence;\r\n\r\nnamespace UninstallTools.Junk.Containers\r\n{\r\n    public interface IJunkResult\r\n    {\r\n        /// <summary>\r\n        ///     Confidence that this entry is safe to remove\r\n        /// </summary>\r\n        ConfidenceCollection Confidence { get; }\r\n\r\n        /// <summary>\r\n        /// Create this item's backup inside of the supplied directory\r\n        /// </summary>\r\n        void Backup(string backupDirectory);\r\n\r\n        /// <summary>\r\n        ///     Delete this entry permanently\r\n        /// </summary>\r\n        void Delete();\r\n\r\n        /// <summary>\r\n        ///     Origin of this junk\r\n        /// </summary>\r\n        IJunkCreator Source { get; }\r\n\r\n        /// <summary>\r\n        ///     Uninstaller this entry belongs to\r\n        /// </summary>\r\n        ApplicationUninstallerEntry Application { get; }\r\n\r\n        string GetDisplayName();\r\n\r\n        /// <summary>\r\n        ///     Preview item in an external application\r\n        /// </summary>\r\n        void Open();\r\n\r\n        /// <summary>\r\n        ///     Get extended information with overall confidence information.\r\n        /// </summary>\r\n        string ToLongString();\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Containers/JunkResultBase.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.IO;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Containers\r\n{\r\n    public abstract class JunkResultBase : IJunkResult\r\n    {\r\n        protected JunkResultBase(ApplicationUninstallerEntry application, IJunkCreator source) : this(application, source, new ConfidenceCollection())\r\n        {\r\n        }\r\n\r\n        protected JunkResultBase(ApplicationUninstallerEntry application, IJunkCreator source, ConfidenceCollection confidence)\r\n        {\r\n            Application = application;\r\n            Source = source;\r\n            Confidence = confidence;\r\n        }\r\n\r\n        public ConfidenceCollection Confidence { get; }\r\n        public IJunkCreator Source { get; }\r\n        public ApplicationUninstallerEntry Application { get; }\r\n\r\n        public abstract void Backup(string backupDirectory);\r\n        public abstract void Delete();\r\n        public abstract void Open();\r\n\r\n        public abstract string GetDisplayName();\r\n        public virtual string ToLongString()\r\n        {\r\n            return\r\n                $@\"{Application} - {Localisation.JunkRemover_Confidence}: {Confidence.GetConfidence()} - {\r\n                    GetDisplayName()}\";\r\n        }\r\n\r\n        /// <summary>\r\n        /// Prepare a backup directory in the specified parent folder, and return it.\r\n        /// </summary>\r\n        protected string CreateBackupDirectory(string parent)\r\n        {\r\n            var p = Path.Combine(parent, PathTools.SanitizeFileName(Application.DisplayName));\r\n            Directory.CreateDirectory(p);\r\n            return p;\r\n        }\r\n\r\n        public override string ToString()\r\n        {\r\n            return GetType().Name + \" - \" + GetDisplayName();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Containers/RegistryKeyJunk.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\nusing Klocman.Tools;\r\nusing Microsoft.Win32;\r\n\r\nnamespace UninstallTools.Junk.Containers\r\n{\r\n    public class RegistryKeyJunk : JunkResultBase\r\n    {\r\n        public string FullRegKeyPath { get; }\r\n\r\n        public RegistryKey OpenRegKey(bool writable = false)\r\n        {\r\n            return RegistryTools.OpenRegistryKey(FullRegKeyPath, writable);\r\n        }\r\n\r\n        public string RegKeyParentPath => Path.GetDirectoryName(FullRegKeyPath);\r\n        public string RegKeyName => Path.GetFileName(FullRegKeyPath);\r\n\r\n        public bool RegKeyExists()\r\n        {\r\n            using (var key = OpenRegKey())\r\n                return key != null;\r\n        }\r\n\r\n        public RegistryKeyJunk(string fullRegKeyPath, ApplicationUninstallerEntry application, IJunkCreator source) : base(application, source)\r\n        {\r\n            if (string.IsNullOrEmpty(fullRegKeyPath))\r\n                throw new ArgumentException(@\"Argument is null or empty\", nameof(fullRegKeyPath));\r\n\r\n            FullRegKeyPath = fullRegKeyPath.TrimEnd('\\\\', '/', ' ');\r\n        }\r\n\r\n        public override void Backup(string backupDirectory)\r\n        {\r\n            var fileName = PathTools.SanitizeFileName(FullRegKeyPath.TrimStart('\\\\')) + \".reg\";\r\n            var path = Path.Combine(CreateBackupDirectory(backupDirectory), fileName);\r\n            RegistryTools.ExportRegistry(path, new[] { FullRegKeyPath });\r\n        }\r\n\r\n        public override void Delete()\r\n        {\r\n            using (var key = RegistryTools.OpenRegistryKey(RegKeyParentPath, true))\r\n            {\r\n                key?.DeleteSubKeyTree(RegKeyName);\r\n            }\r\n        }\r\n\r\n        public override void Open()\r\n        {\r\n            if (!RegKeyExists())\r\n                throw new IOException($\"Key \\\"{FullRegKeyPath}\\\" doesn't exist or can't be accessed\");\r\n\r\n            RegistryTools.OpenRegKeyInRegedit(FullRegKeyPath);\r\n        }\r\n\r\n        public override string GetDisplayName()\r\n        {\r\n            return FullRegKeyPath;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Containers/RegistryValueJunk.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing Microsoft.Win32;\r\n\r\nnamespace UninstallTools.Junk.Containers\r\n{\r\n    public class RegistryValueJunk : RegistryKeyJunk\r\n    {\r\n        public RegistryValueJunk(string containingKeyPath, string valueName, ApplicationUninstallerEntry application,\r\n            IJunkCreator source) : base(containingKeyPath, application, source)\r\n        {\r\n            ValueName = valueName;\r\n        }\r\n\r\n        public string ValueName { get; }\r\n\r\n        /// <summary>\r\n        /// If not null, overrides ValueName in GetDisplayName\r\n        /// </summary>\r\n        public string DisplayValueName { get; set; }\r\n\r\n        public override void Backup(string backupDirectory)\r\n        {\r\n            using var key = OpenRegKey();\r\n\r\n            var valueKind = key.GetValueKind(ValueName);\r\n            switch (valueKind)\r\n            {\r\n                case RegistryValueKind.ExpandString:\r\n                case RegistryValueKind.String:\r\n                    var targetValue = key.GetStringSafe(ValueName);\r\n                    var dir = CreateBackupDirectory(backupDirectory);\r\n                    var fileName = PathTools.SanitizeFileName(string.Concat(FullRegKeyPath, \" - \", ValueName)\r\n                                                                    .TrimStart('\\\\').Replace('.', '_')) + \".reg\";\r\n                    RegistryTools.ExportRegistryStringValues(Path.Combine(dir, fileName), FullRegKeyPath,\r\n                                                             new KeyValuePair<string, string>(ValueName, targetValue));\r\n                    break;\r\n                case RegistryValueKind.MultiString:\r\n                case RegistryValueKind.Binary:\r\n                case RegistryValueKind.DWord:\r\n                case RegistryValueKind.QWord:\r\n                case RegistryValueKind.Unknown:\r\n                default:\r\n                    Debug.Fail($\"Unsupported type {valueKind} of value {ValueName}\");\r\n                    break;\r\n                case RegistryValueKind.None:\r\n                    break;\r\n            }\r\n        }\r\n\r\n        public override string GetDisplayName()\r\n        {\r\n            return base.GetDisplayName() + \" => \" + (DisplayValueName ?? ValueName);\r\n        }\r\n\r\n        public override void Delete()\r\n        {\r\n            using (var key = RegistryTools.OpenRegistryKey(FullRegKeyPath, true))\r\n            {\r\n                key?.DeleteValue(ValueName);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Containers/RunProcessJunk.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Diagnostics;\nusing Klocman.Forms.Tools;\nusing Klocman.Tools;\n\nnamespace UninstallTools.Junk.Containers\n{\n    public class RunProcessJunk : JunkResultBase\n    {\n        public ProcessStartCommand ProcessToStart { get; }\n\n        private readonly string _junkName;\n\n        public RunProcessJunk(ApplicationUninstallerEntry application, IJunkCreator source, ProcessStartCommand processToStart, string junkName) : base(application, source)\n        {\n            _junkName = junkName;\n            ProcessToStart = processToStart;\n        }\n\n        public override void Backup(string backupDirectory)\n        {\n\n        }\n\n        public override void Delete()\n        {\n            try\n            {\n                var info = ProcessToStart.ToProcessStartInfo();\n                info.WindowStyle = ProcessWindowStyle.Minimized;\n                info.UseShellExecute = true;\n                Process.Start(info)?.WaitForExit();\n            }\n            catch (SystemException ex)\n            {\n                Trace.WriteLine($\"Failed to delete junk {GetDisplayName()} - {ex}\");\n            }\n        }\n\n        public override string GetDisplayName()\n        {\n            return $\"{_junkName} ({ProcessToStart})\";\n        }\n\n        public override void Open()\n        {\n            try\n            {\n                WindowsTools.OpenExplorerFocusedOnObject(ProcessToStart.FileName);\n            }\n            catch (SystemException ex)\n            {\n                PremadeDialogs.GenericError(ex);\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Containers/StartupJunkNode.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Properties;\r\nusing UninstallTools.Startup;\r\nusing UninstallTools.Startup.Normal;\r\n\r\nnamespace UninstallTools.Junk.Containers\r\n{\r\n    public class StartupJunkNode : JunkResultBase\r\n    {\r\n        public static readonly ConfidenceRecord ConfidenceStartupIsRunOnce = new(-5, Localisation.Confidence_Startup_IsRunOnce);\r\n\r\n        public static readonly ConfidenceRecord ConfidenceStartupMatched = new(6, Localisation.Confidence_Startup_StartupMatched);\r\n\r\n        internal StartupEntryBase Entry { get; }\r\n\r\n        public override void Backup(string backupDirectory)\r\n        {\r\n            var p = Path.Combine(CreateBackupDirectory(backupDirectory), \"Startup\");\r\n            Directory.CreateDirectory(p);\r\n            Entry.CreateBackup(p);\r\n        }\r\n\r\n        public override void Delete()\r\n        {\r\n            Entry.Delete();\r\n        }\r\n\r\n        public override void Open()\r\n        {\r\n            StartupManager.OpenStartupEntryLocations(new[] { Entry });\r\n        }\r\n\r\n        public override string GetDisplayName()\r\n        {\r\n            return Entry.ToString();\r\n        }\r\n\r\n        public StartupJunkNode(StartupEntryBase entry, ApplicationUninstallerEntry application, IJunkCreator source) \r\n            : base(application, source)\r\n        {\r\n            Entry = entry ?? throw new ArgumentNullException(nameof(entry));\r\n\r\n            Confidence.Add(ConfidenceStartupMatched);\r\n\r\n            if (entry is StartupEntry normalStartupEntry && normalStartupEntry.IsRunOnce)\r\n            {\r\n                // If the entry is RunOnce, give it some negative points to keep it out of automatic removal.\r\n                // It might be used to clean up after uninstall on next boot.\r\n                Confidence.Add(ConfidenceStartupIsRunOnce);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Drive/CommonDriveJunkScanner.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Drive\r\n{\r\n    public class CommonDriveJunkScanner : JunkCreatorBase\r\n    {\r\n        private static IEnumerable<DirectoryInfo> _foldersToCheck;\r\n\r\n        public override void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            base.Setup(allUninstallers);\r\n\r\n            var allDirs = UninstallToolsGlobalConfig.JunkSearchDirs.Concat(UninstallToolsGlobalConfig.GetAllProgramFiles());\r\n            var validDirs = allDirs.Attempt(dir =>\r\n                            {\r\n                                var dirinfo = new DirectoryInfo(dir);\r\n                                return dirinfo.Exists ? dirinfo : null;\r\n                            }).Where(x => x != null);\r\n            _foldersToCheck = validDirs.DistinctBy(x => x.FullName.ToLowerInvariant()).ToList();\r\n        }\r\n\r\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            return _foldersToCheck.SelectMany(x => FindJunkRecursively(x, target));\r\n        }\r\n\r\n        public override string CategoryName => Localisation.Junk_Drive_GroupName;\r\n\r\n        private IEnumerable<FileSystemJunk> FindJunkRecursively(DirectoryInfo directory, ApplicationUninstallerEntry uninstaller, int level = 0)\r\n        {\r\n            var added = new List<FileSystemJunk>();\r\n            IEnumerable<FileSystemJunk> results = added;\r\n\r\n            try\r\n            {\r\n                var dirs = directory.GetDirectories();\r\n\r\n                foreach (var dir in dirs)\r\n                {\r\n                    if (UninstallToolsGlobalConfig.IsSystemDirectory(dir))\r\n                        continue;\r\n\r\n                    FileSystemJunk newNode = null;\r\n                    if (!UninstallToolsGlobalConfig.IsKnownFolder(dir))\r\n                    {\r\n                        var generatedConfidence = GenerateConfidence(dir.GetNameWithoutExtension(), directory.FullName, uninstaller, level).ToList();\r\n\r\n                        if (generatedConfidence.Any())\r\n                        {\r\n                            newNode = new FileSystemJunk(dir, uninstaller, this);\r\n                            newNode.Confidence.AddRange(generatedConfidence);\r\n\r\n                            if (CheckIfDirIsStillUsed(dir.FullName, GetOtherInstallLocations(uninstaller)))\r\n                                newNode.Confidence.Add(ConfidenceRecords.DirectoryStillUsed);\r\n\r\n                            added.Add(newNode);\r\n                        }\r\n                    }\r\n\r\n                    if (level > 1) continue;\r\n\r\n                    var junkNodes = FindJunkRecursively(dir, uninstaller, level + 1).ToList();\r\n                    // ReSharper disable once PossibleMultipleEnumeration\r\n                    results = results.Concat(junkNodes);\r\n\r\n                    if (newNode != null)\r\n                    {\r\n                        // Check if the directory will have nothing left after junk removal.\r\n                        if (!dir.GetFiles().Any())\r\n                        {\r\n                            var subDirs = dir.GetDirectories();\r\n                            if (!subDirs.Any() || subDirs.All(d => junkNodes.Any(y => PathTools.PathsEqual(d.FullName, y.Path.FullName))))\r\n                                newNode.Confidence.Add(ConfidenceRecords.AllSubdirsMatched);\r\n                        }\r\n                    }\r\n                }\r\n\r\n                ConfidenceGenerators.TestForSimilarNames(uninstaller, AllUninstallers, added.Select(x => new KeyValuePair<JunkResultBase, string>(x, x.Path.GetNameWithoutExtension())).ToList());\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                if (Debugger.IsAttached) throw;\r\n                Trace.WriteLine(ex);\r\n            }\r\n\r\n            // ReSharper disable once PossibleMultipleEnumeration\r\n            return results;\r\n        }\r\n\r\n        private static IEnumerable<ConfidenceRecord> GenerateConfidence(string itemName, string itemParentPath,\r\n            ApplicationUninstallerEntry uninstaller, int level)\r\n        {\r\n            var baseOutput = ConfidenceGenerators.GenerateConfidence(itemName, itemParentPath, level, uninstaller).ToList();\r\n\r\n            if (!baseOutput.Any(x => x.Change > 0))\r\n                return Enumerable.Empty<ConfidenceRecord>();\r\n\r\n            if (UninstallToolsGlobalConfig.QuestionableDirectoryNames.Contains(itemName, StringComparison.OrdinalIgnoreCase))\r\n                baseOutput.Add(ConfidenceRecords.QuestionableDirectoryName);\r\n\r\n            return baseOutput;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Drive/InstallLocationScanner.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Drive\r\n{\r\n    public class InstallLocationScanner : JunkCreatorBase\r\n    {\r\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            if (!target.IsInstallLocationValid()) yield break;\r\n\r\n            var resultNode = GetJunkNodeFromLocation(GetOtherInstallLocations(target), target.InstallLocation, target);\r\n            if (resultNode != null)\r\n            {\r\n                if (target.UninstallerKind == UninstallerType.StoreApp)\r\n                    resultNode.Confidence.Add(ConfidenceRecords.IsStoreApp);\r\n                yield return resultNode;\r\n            }\r\n        }\r\n\r\n        public override string CategoryName => Localisation.Junk_Drive_GroupName;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Drive/PrefetchScanner.cs",
    "content": "/*\n    Copyright (c) 2020 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing Klocman.Extensions;\nusing Klocman.Tools;\nusing UninstallTools.Junk.Confidence;\nusing UninstallTools.Junk.Containers;\n\nnamespace UninstallTools.Junk.Finders.Drive\n{\n    public class PrefetchScanner : JunkCreatorBase\n    {\n        private ILookup<string, string> _pfFiles;\n\n        public override void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\n        {\n            base.Setup(allUninstallers);\n\n            try\n            {\n                var prefetchDir = Path.Combine(WindowsTools.GetEnvironmentPath(Klocman.Native.CSIDL.CSIDL_WINDOWS), \"Prefetch\");\n                if (!Directory.Exists(prefetchDir)) return;\n\n                _pfFiles = Directory.GetFiles(prefetchDir)\n                    .Where(x => x.EndsWith(\".pf\", StringComparison.OrdinalIgnoreCase))\n                    .Select(\n                        fullPath =>\n                        {\n                            var fileName = Path.GetFileName(fullPath);\n                            var i = fileName.LastIndexOf('-');\n                            if (i < 0) return null;\n                            var appFilename = fileName.Substring(0, i);\n                            if (!appFilename.EndsWith(\".exe\", StringComparison.OrdinalIgnoreCase)) return null;\n                            return new { fullPath, appFilename };\n                        })\n                    .Where(x => x != null)\n                    .ToLookup(arg => arg.appFilename.ToLowerInvariant(), arg => arg.fullPath);\n            }\n            catch (SystemException ex)\n            {\n                Trace.WriteLine(\"Failed to gather prefetch files - \" + ex);\n            }\n        }\n\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\n        {\n            var results = new List<IJunkResult>();\n            if (_pfFiles == null || target.SortedExecutables == null || target.SortedExecutables.Length == 0) return results;\n\n            var targetExeNames = target.SortedExecutables\n                .Attempt(Path.GetFileName)\n                .Where(x => !string.IsNullOrEmpty(x))\n                .Select(x => x.ToLowerInvariant())\n                .ToList();\n\n            var pfFileHits = targetExeNames\n                .SelectMany(fileName => _pfFiles[fileName]\n                .Select(fullPath => new { fileName, fullPath }))\n                .ToList();\n\n            var usedByOthers = AllUninstallers\n                .Where(x => x != target)\n                .SelectMany(x => x.SortedExecutables ?? Enumerable.Empty<string>())\n                .Attempt(Path.GetFileName)\n                .Where(x => !string.IsNullOrEmpty(x))\n                .Select(x => x.ToLowerInvariant());\n            var usedByOthersLookup = new HashSet<string>(usedByOthers);\n\n            foreach (var pfHit in pfFileHits)\n            {\n                var node = new FileSystemJunk(new FileInfo(pfHit.fullPath), target, this);\n                node.Confidence.Add(ConfidenceRecords.ExplicitConnection);\n                if (usedByOthersLookup.Contains(pfHit.fileName))\n                    node.Confidence.Add(ConfidenceRecords.UsedBySimilarNamedApp);\n                results.Add(node);\n            }\n\n            return results;\n        }\n\n        public override string CategoryName => \"Prefetch\";\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Drive/SpecificUninstallerKindScanner.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Drive\r\n{\r\n    public class SpecificUninstallerKindScanner : JunkCreatorBase\r\n    {\r\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            if (!File.Exists(target.UninstallerFullFilename))\r\n                yield break;\r\n\r\n            FileSystemJunk result;\r\n\r\n            switch (target.UninstallerKind)\r\n            {\r\n                case UninstallerType.InstallShield:\r\n                    var dirPath = Path.GetDirectoryName(target.UninstallerFullFilename);\r\n\r\n                    if (dirPath == null) yield break;\r\n\r\n                    var targetDir = new DirectoryInfo(dirPath);\r\n                    result = new FileSystemJunk(targetDir, target, this);\r\n                    break;\r\n                    \r\n                case UninstallerType.InnoSetup:\r\n                case UninstallerType.Nsis:\r\n                    result = new FileSystemJunk(new FileInfo(target.UninstallerFullFilename), target, this);\r\n                    break;\r\n\r\n                case UninstallerType.Msiexec:\r\n                    if(target.UninstallerFullFilename.EndsWith(\"msiexec.exe\", StringComparison.OrdinalIgnoreCase))\r\n                        yield break;\r\n\r\n                    var path = new FileInfo(target.UninstallerFullFilename);\r\n                    if ((path.Attributes & FileAttributes.System) == FileAttributes.System)\r\n                        yield break;\r\n\r\n                    result = new FileSystemJunk(path, target, this);\r\n                    break;\r\n\r\n                default:\r\n                    yield break;\r\n            }\r\n\r\n            result.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n\r\n            yield return result;\r\n        }\r\n\r\n        public override string CategoryName => Localisation.Junk_Drive_GroupName;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Drive/UninstallerLocationScanner.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Drive\r\n{\r\n    public class UninstallerLocationScanner : JunkCreatorBase\r\n    {\r\n        private IEnumerable<string> _allProgramFiles;\r\n\r\n        public override void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            _allProgramFiles = UninstallToolsGlobalConfig.GetAllProgramFiles().ToList();\r\n            base.Setup(allUninstallers);\r\n        }\r\n\r\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            var uninLoc = target.UninstallerLocation;\r\n            if (string.IsNullOrEmpty(uninLoc)) yield break;\r\n            \r\n            if (_allProgramFiles.Any(x => uninLoc.StartsWith(x, StringComparison.InvariantCultureIgnoreCase))\r\n                && !CheckIfDirIsStillUsed(uninLoc, GetOtherInstallLocations(target)))\r\n            {\r\n                var resultNode = GetJunkNodeFromLocation(Enumerable.Empty<string>(), uninLoc, target);\r\n                if (resultNode != null)\r\n                    yield return resultNode;\r\n            }\r\n            else if (target.UninstallerKind == UninstallerType.Msiexec && !target.BundleProviderKey.IsEmpty())\r\n            {\r\n                FileSystemInfo[] matchedItems;\r\n                try\r\n                {\r\n                    var winInstallerDir = new DirectoryInfo(uninLoc);\r\n\r\n                    matchedItems = winInstallerDir.GetFileSystemInfos($\"*{target.BundleProviderKey}*\");\r\n                }\r\n                catch (SystemException e)\r\n                {\r\n                    Trace.WriteLine(e);\r\n                    yield break;\r\n                }\r\n\r\n                foreach (var fileSystemInfo in matchedItems)\r\n                {\r\n                    var junk = new FileSystemJunk(fileSystemInfo, target, this);\r\n                    junk.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n                    yield return junk;\r\n                }\r\n            }\r\n        }\r\n\r\n        public override string CategoryName => Localisation.Junk_UninstallerLocation_GroupName;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Drive/WerScanner.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Drive\r\n{\r\n    public class WerScanner : JunkCreatorBase\r\n    {\r\n        private const string CrashLabel = \"AppCrash_\";\r\n        private static readonly ICollection<string> Archives;\r\n        private ICollection<string> _werReportPaths;\r\n\r\n        static WerScanner()\r\n        {\r\n            Archives = new[]\r\n            {\r\n                WindowsTools.GetEnvironmentPath(Klocman.Native.CSIDL.CSIDL_COMMON_APPDATA),\r\n                WindowsTools.GetEnvironmentPath(Klocman.Native.CSIDL.CSIDL_LOCAL_APPDATA)\r\n            }.SelectMany(x =>new[]\r\n            {\r\n                Path.Combine(x, @\"Microsoft\\Windows\\WER\\ReportArchive\"),\r\n                Path.Combine(x, @\"Microsoft\\Windows\\WER\\ReportQueue\")\r\n            }).Where(Directory.Exists)\r\n            .ToArray();\r\n        }\r\n\r\n        public override void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            base.Setup(allUninstallers);\r\n\r\n            _werReportPaths = Archives.Attempt(Directory.GetDirectories).SelectMany(x => x).ToArray();\r\n        }\r\n\r\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.SortedExecutables == null || target.SortedExecutables.Length == 0)\r\n                yield break;\r\n\r\n            var appExecutables = target.SortedExecutables.Attempt(Path.GetFileName).ToList();\r\n\r\n            foreach (var reportPath in _werReportPaths)\r\n            {\r\n                var startIndex = reportPath.LastIndexOf(CrashLabel, StringComparison.InvariantCultureIgnoreCase);\r\n                if (startIndex <= 0) continue;\r\n                startIndex += CrashLabel.Length;\r\n\r\n                var count = reportPath.IndexOf('_', startIndex) - startIndex;\r\n                if (count <= 1) continue;\r\n\r\n                var filename = reportPath.Substring(startIndex, count);\r\n\r\n                if (appExecutables.Any(x => x.StartsWith(filename, StringComparison.InvariantCultureIgnoreCase)))\r\n                {\r\n                    var node = new FileSystemJunk(new DirectoryInfo(reportPath),target, this);\r\n                    node.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n                    yield return node;\r\n                }\r\n            }\r\n        }\r\n\r\n        public override string CategoryName => Localisation.Junk_WerReports_GroupName;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/JunkCreatorBase.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\n\r\nnamespace UninstallTools.Junk.Finders\r\n{\r\n    public abstract class JunkCreatorBase : IJunkCreator\r\n    {\r\n        public virtual void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            AllUninstallers = allUninstallers;\r\n        }\r\n\r\n        protected ICollection<ApplicationUninstallerEntry> AllUninstallers { get; private set; }\r\n\r\n        protected IEnumerable<ApplicationUninstallerEntry> GetOtherUninstallers(ApplicationUninstallerEntry exceptThis)\r\n        {\r\n            return AllUninstallers.Where(x => x != exceptThis);\r\n        }\r\n\r\n        protected IEnumerable<string> GetOtherInstallLocations(ApplicationUninstallerEntry target)\r\n        {\r\n            return GetOtherUninstallers(target).Select(x => x.InstallLocation).Where(x => !string.IsNullOrEmpty(x));\r\n        }\r\n\r\n        public abstract IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target);\r\n\r\n        public abstract string CategoryName { get; }\r\n\r\n        /// <summary>\r\n        /// Returns true if the dir is still used by other apps and can't be safely deleted.\r\n        /// </summary>\r\n        public static bool CheckIfDirIsStillUsed(string location, IEnumerable<string> otherInstallLocations)\r\n        {\r\n            return !string.IsNullOrEmpty(location) && otherInstallLocations.Any(x => x.TrimEnd('\\\\').StartsWith(location, StringComparison.InvariantCultureIgnoreCase));\r\n        }\r\n\r\n        private static readonly string FullWindowsDirectoryName = PathTools.GetWindowsDirectory().FullName;\r\n\r\n        // TODO overhaul\r\n        protected FileSystemJunk GetJunkNodeFromLocation(IEnumerable<string> otherInstallLocations, string directory, ApplicationUninstallerEntry app)\r\n        {\r\n            try\r\n            {\r\n                var dirInfo = new DirectoryInfo(directory);\r\n\r\n                if (dirInfo.FullName.Contains(FullWindowsDirectoryName) || !dirInfo.Exists || dirInfo.Parent == null)\r\n                    return null;\r\n\r\n                var newNode = new FileSystemJunk(dirInfo, app, this);\r\n                newNode.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n\r\n                if (CheckIfDirIsStillUsed(dirInfo.FullName, otherInstallLocations))\r\n                    newNode.Confidence.Add(ConfidenceRecords.DirectoryStillUsed);\r\n\r\n                return newNode;\r\n            }\r\n            catch\r\n            {\r\n                return null;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Misc/ShortcutJunk.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.Native;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Misc\r\n{\r\n    public class ShortcutJunk : JunkCreatorBase\r\n    {\r\n        private ICollection<Shortcut> _links;\r\n\r\n        public override void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            base.Setup(allUninstallers);\r\n\r\n            _links = GetShortcuts();\r\n        }\r\n\r\n        private static IEnumerable<string> GetLnkFilesSafe(CSIDL directory, SearchOption option)\r\n        {\r\n            try\r\n            {\r\n                return Directory.GetFiles(WindowsTools.GetEnvironmentPath(directory), \"*.lnk\", option);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Trace.WriteLine(ex);\r\n                Debug.Fail(ex.ToString());\r\n            }\r\n            return Enumerable.Empty<string>();\r\n        }\r\n\r\n        private static List<Shortcut> GetShortcuts()\r\n        {\r\n            var syspath = WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_WINDOWS);\r\n\r\n            var results = new List<Shortcut>();\r\n            foreach (var linkFilename in\r\n                GetLnkFilesSafe(CSIDL.CSIDL_PROGRAMS, SearchOption.AllDirectories)\r\n                .Concat(GetLnkFilesSafe(CSIDL.CSIDL_COMMON_PROGRAMS, SearchOption.AllDirectories))\r\n                .Concat(GetLnkFilesSafe(CSIDL.CSIDL_DESKTOPDIRECTORY, SearchOption.TopDirectoryOnly))\r\n                .Concat(GetLnkFilesSafe(CSIDL.CSIDL_COMMON_DESKTOPDIRECTORY, SearchOption.TopDirectoryOnly))\r\n                .Distinct())\r\n            {\r\n                try\r\n                {\r\n                    var target = WindowsTools.ResolveShortcut(linkFilename);\r\n\r\n                    if (string.IsNullOrEmpty(target) ||\r\n                        PathTools.SubPathIsInsideBasePath(syspath, target, true, true) ||\r\n                        PathTools.SubPathIsInsideBasePath(UninstallToolsGlobalConfig.AppLocation, target, true, true))\r\n                        continue;\r\n\r\n                    results.Add(new Shortcut(linkFilename, target));\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    var failMessage = \"Failed to resolve shortcut: \" + linkFilename;\r\n                    Trace.WriteLine(failMessage);\r\n                    Trace.WriteLine(ex);\r\n                    Debug.Fail(failMessage);\r\n                }\r\n            }\r\n\r\n            return results;\r\n        }\r\n\r\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            var results = new List<FileSystemJunk>();\r\n\r\n            if (!string.IsNullOrEmpty(target.InstallLocation))\r\n            {\r\n                results.AddRange(GetLinksPointingToLocation(entry => entry.InstallLocation, target)\r\n                    .DoForEach(x => x.Confidence.Add(ConfidenceRecords.ExplicitConnection)));\r\n            }\r\n\r\n            if (target.UninstallerKind == UninstallerType.Steam)\r\n            {\r\n                results.AddRange(GetLinksPointingToSteamApp(target));\r\n            }\r\n            else\r\n            {\r\n                if (!string.IsNullOrEmpty(target.UninstallerFullFilename))\r\n                {\r\n                    results.AddRange(GetLinksPointingToLocation(entry => entry.UninstallerFullFilename, target)\r\n                        .DoForEach(x => x.Confidence.Add(ConfidenceRecords.ExplicitConnection)));\r\n                }\r\n\r\n                if (!string.IsNullOrEmpty(target.UninstallerLocation))\r\n                {\r\n                    var exceptUninstallerShortcut = GetLinksPointingToLocation(entry => entry.UninstallerLocation, target)\r\n                        .Where(possibleResult => results.All(result => !PathTools.PathsEqual(result.Path, possibleResult.Path)))\r\n                        .ToList();\r\n\r\n                    results.AddRange(exceptUninstallerShortcut);\r\n                }\r\n            }\r\n\r\n            // Remove shortcuts that we aren't sure about\r\n            foreach (var junkNode in results.ToList())\r\n            {\r\n                var name = Path.GetFileNameWithoutExtension(junkNode.Path.Name);\r\n                junkNode.Confidence.AddRange(ConfidenceGenerators.GenerateConfidence(name, target));\r\n\r\n                if (junkNode.Confidence.IsEmpty)\r\n                    results.Remove(junkNode);\r\n            }\r\n\r\n            return results;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Avoids marking all steam application shortcuts as junk (they use same exe path as uninstall commands)\r\n        /// </summary>\r\n        private IEnumerable<FileSystemJunk> GetLinksPointingToSteamApp(ApplicationUninstallerEntry target)\r\n        {\r\n            Debug.Assert(target.UninstallerKind == UninstallerType.Steam);\r\n\r\n            var appId = System.Text.RegularExpressions.Regex.Replace(target.RatingId ?? target.RegistryKeyName ?? string.Empty, @\"[^0-9]\", \"\");\r\n\r\n            if (!string.IsNullOrEmpty(appId))\r\n            {\r\n                foreach (var source in _links)\r\n                {\r\n                    if (source.LinkTarget.Contains(appId, StringComparison.Ordinal)\r\n                        && source.LinkTarget.Contains(\"steam\", StringComparison.OrdinalIgnoreCase))\r\n                    {\r\n                        var result = CreateJunkNode(source, target);\r\n                        yield return result;\r\n                    }\r\n                }\r\n            }\r\n            else\r\n            {\r\n                Debug.Fail(\"Steam app has an invalid RegistryKeyName, it should contain its ID. Actual value: \" + target.RegistryKeyName);\r\n            }\r\n        }\r\n\r\n        public override string CategoryName => Localisation.Junk_Shortcut_GroupName;\r\n\r\n        private FileSystemJunk CreateJunkNode(Shortcut source, ApplicationUninstallerEntry entry)\r\n        {\r\n            return new FileSystemJunk(new FileInfo(source.LinkFilename), entry, this);\r\n        }\r\n\r\n        private IEnumerable<FileSystemJunk> GetLinksPointingToLocation(\r\n            Func<ApplicationUninstallerEntry, string> targetSelector, ApplicationUninstallerEntry entry)\r\n        {\r\n            var target = targetSelector(entry);\r\n            var targetIsSafe = !GetOtherUninstallers(entry).Any(x => PathTools.PathsEqual(targetSelector(x), target));\r\n\r\n            foreach (var source in _links)\r\n            {\r\n                if (source.LinkTarget.Contains(target, StringComparison.InvariantCultureIgnoreCase))\r\n                {\r\n                    var result = CreateJunkNode(source, entry);\r\n                    if (!targetIsSafe)\r\n                        result.Confidence.Add(ConfidenceRecords.DirectoryStillUsed);\r\n                    yield return result;\r\n                }\r\n            }\r\n        }\r\n\r\n        private sealed class Shortcut\r\n        {\r\n            public Shortcut(string linkFilename, string linkTarget)\r\n            {\r\n                LinkFilename = linkFilename;\r\n                LinkTarget = linkTarget;\r\n            }\r\n\r\n            public string LinkFilename { get; }\r\n            public string LinkTarget { get; }\r\n\r\n            public override string ToString()\r\n            {\r\n                return LinkTarget;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Misc/StartupJunk.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Misc\r\n{\r\n    public sealed class StartupJunk : IJunkCreator\r\n    {\r\n        public void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n        }\r\n\r\n        public string CategoryName => Localisation.Junk_Startup_GroupName;\r\n\r\n        public IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.StartupEntries == null)\r\n                return Enumerable.Empty<IJunkResult>();\r\n\r\n            return target.StartupEntries.Where(x => x.StillExists())\r\n                .Select(x => (IJunkResult)new StartupJunkNode(x, target, this));\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/AppCompatFlagScanner.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Registry\r\n{\r\n    public class AppCompatFlagScanner : IJunkCreator\r\n    {\r\n        private static readonly IEnumerable<string> AppCompatFlags = new[]\r\n        {\r\n            @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\",\r\n            @\"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\"\r\n        };\r\n\r\n        public void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n        }\r\n\r\n        public IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            if (string.IsNullOrEmpty(target.InstallLocation))\r\n                yield break;\r\n\r\n            foreach (var fullCompatKey in AppCompatFlags.SelectMany(compatKey => new[]\r\n            {\r\n                compatKey + @\"\\Layers\",\r\n                compatKey + @\"\\Compatibility Assistant\\Store\"\r\n            }))\r\n            {\r\n                using (var key = RegistryTools.OpenRegistryKey(fullCompatKey))\r\n                {\r\n                    if (key == null)\r\n                        continue;\r\n\r\n                    foreach (var valueName in key.GetValueNames())\r\n                    {\r\n                        // Check for matches\r\n                        if (valueName.StartsWith(target.InstallLocation,\r\n                            StringComparison.InvariantCultureIgnoreCase))\r\n                        {\r\n                            var junk = new RegistryValueJunk(key.Name, valueName, target, this);\r\n                            junk.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n                            yield return junk;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        public string CategoryName => Localisation.Junk_AppCompat_GroupName;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/AudioPolicyConfigScanner.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Registry\r\n{\r\n    public class AudioPolicyConfigScanner : IJunkCreator\r\n    {\r\n        private static readonly string AudioPolicyConfigSubkey = @\"Microsoft\\Internet Explorer\\LowRegistry\\Audio\\PolicyConfig\\PropertyStore\";\r\n\r\n        public void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n        }\r\n\r\n        public IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            var returnList = new List<IJunkResult>();\r\n\r\n            if (string.IsNullOrEmpty(target.InstallLocation))\r\n                return returnList;\r\n            \r\n            string pathRoot;\r\n\r\n            try\r\n            {\r\n                pathRoot = Path.GetPathRoot(target.InstallLocation) ?? throw new ArgumentException(\"No path root for \" + target.InstallLocation);\r\n            }\r\n            catch (SystemException ex)\r\n            {\r\n                Trace.WriteLine(ex);\r\n                return returnList;\r\n            }\r\n\r\n            var unrootedLocation = pathRoot.Length >= 1\r\n                ? target.InstallLocation.Replace(pathRoot, string.Empty)\r\n                : target.InstallLocation;\r\n\r\n            if (string.IsNullOrEmpty(unrootedLocation.Trim()))\r\n                return returnList;\r\n\r\n            using (var key = RegistryTools.OpenRegistryKey(Path.Combine(SoftwareRegKeyScanner.KeyCu, AudioPolicyConfigSubkey)))\r\n            {\r\n                if (key == null)\r\n                    return returnList;\r\n\r\n                foreach (var subKeyName in key.GetSubKeyNames())\r\n                {\r\n                    using (var subKey = key.OpenSubKey(subKeyName))\r\n                    {\r\n                        if (subKey == null) continue;\r\n\r\n                        var defVal = subKey.GetStringSafe(null);\r\n                        if (defVal != null &&\r\n                            defVal.Contains(unrootedLocation, StringComparison.InvariantCultureIgnoreCase))\r\n                        {\r\n                            var junk = new RegistryKeyJunk(subKey.Name, target, this);\r\n                            junk.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n                            returnList.Add(junk);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            return returnList;\r\n        }\r\n\r\n        public string CategoryName => Localisation.Junk_AudioPolicy_GroupName;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/ComScanner.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing Klocman.Tools;\nusing Microsoft.Win32;\nusing UninstallTools.Junk.Confidence;\nusing UninstallTools.Junk.Containers;\nusing UninstallTools.Properties;\n\nnamespace UninstallTools.Junk.Finders.Registry\n{\n    public class ComScanner : JunkCreatorBase\n    {\n        private static readonly string[] _classesKeys =\n        {\n            @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\",\n            @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\WOW6432Node\",\n            @\"HKEY_CURRENT_USER\\SOFTWARE\\Classes\",\n            @\"HKEY_CURRENT_USER\\SOFTWARE\\Classes\\WOW6432Node\"\n        };\n\n        private List<ComEntry> _comEntries;\n        private Dictionary<string, string[]> _extensionKeyNames;\n\n        public override string CategoryName => Localisation.Junk_Clsid_GroupName; // \"COM Objects\";\n\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\n        {\n            if (string.IsNullOrEmpty(target.InstallLocation))\n                yield break;\n\n            if (UninstallToolsGlobalConfig.IsSystemDirectory(target.InstallLocation))\n                yield break;\n\n            foreach (var comEntry in _comEntries.Where(x => PathTools.SubPathIsInsideBasePath(target.InstallLocation, x.FullFilename, true, true)))\n            {\n                foreach (var interfacePath in comEntry.InterfaceNames)\n                {\n                    using (var interfaceKey = RegistryTools.OpenRegistryKey(interfacePath, false, true))\n                    {\n                        if (interfaceKey != null)\n                            yield return JunkFromKey(target, interfaceKey);\n                    }\n                }\n\n                foreach (var classesKeyPath in _classesKeys)\n                {\n                    using (var classesKey = RegistryTools.OpenRegistryKey(classesKeyPath, false, true))\n                    {\n                        if (classesKey == null) continue;\n\n                        foreach (var targetSubKeyPath in new[]\n                        {\n                            Path.Combine(\"CLSID\", comEntry.Guid),\n                            Path.Combine(\"TypeLib\", comEntry.Guid),\n                            comEntry.ProgId,\n                            comEntry.VersionIndependentProgId\n                        })\n                        {\n                            if (targetSubKeyPath != null)\n                            {\n                                var result = TryGetFromPath(target, classesKey, targetSubKeyPath);\n                                if (result != null) yield return result;\n                            }\n                        }\n\n                        foreach (var extensionKeyName in GetExtensionNames(classesKeyPath))\n                        {\n                            using (var extensionKey = classesKey.OpenSubKey(extensionKeyName))\n                            {\n                                if (extensionKey == null) continue;\n\n                                // Contains subkeys with default values containing class guids of the extensions\n                                using (var shellExKey = extensionKey.OpenSubKey(\"ShellEx\"))\n                                {\n                                    if (shellExKey != null)\n                                    {\n                                        foreach (var shellSubKeyName in shellExKey.GetSubKeyNames())\n                                        {\n                                            using (var shellSubKey = shellExKey.OpenSubKey(shellSubKeyName))\n                                            {\n                                                if (string.Equals(shellSubKey?.GetValue(null, null) as string, comEntry.Guid, StringComparison.OrdinalIgnoreCase))\n                                                    yield return JunkFromKey(target, shellSubKey);\n                                            }\n                                        }\n                                    }\n                                }\n\n                                // Contains default value pointing to a class guid\n                                using (var persistentHandlerKey = extensionKey.OpenSubKey(\"PersistentHandler\"))\n                                {\n                                    if (string.Equals(persistentHandlerKey?.GetValue(null, null) as string, comEntry.Guid, StringComparison.OrdinalIgnoreCase))\n                                        yield return JunkFromKey(target, persistentHandlerKey);\n                                }\n\n                                if (comEntry.ProgId != null || comEntry.VersionIndependentProgId != null)\n                                {\n                                    // Contains values with names corresponding to ProgIDs\n                                    using (var openWithProgidsKey = extensionKey.OpenSubKey(\"OpenWithProgIDs\"))\n                                    {\n                                        if (openWithProgidsKey != null)\n                                        {\n                                            foreach (var progIdName in openWithProgidsKey.GetValueNames())\n                                            {\n                                                if (string.Equals(progIdName, comEntry.ProgId, StringComparison.OrdinalIgnoreCase) ||\n                                                    string.Equals(progIdName, comEntry.VersionIndependentProgId, StringComparison.OrdinalIgnoreCase))\n                                                    yield return JunkFromValue(target, openWithProgidsKey.Name, progIdName);\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        public override void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\n        {\n            base.Setup(allUninstallers);\n\n            _comEntries = new List<ComEntry>();\n\n            _extensionKeyNames = new Dictionary<string, string[]>();\n\n            foreach (var classesKeyPath in _classesKeys)\n            {\n                using (var classesKey = RegistryTools.OpenRegistryKey(classesKeyPath, false, true))\n                {\n                    if (classesKey == null) continue;\n\n                    _extensionKeyNames.Add(classesKeyPath, classesKey.GetSubKeyNames().Where(x => x.Length > 0 && x[0] == '.').ToArray());\n\n                    try\n                    {\n                        GetClsidEntries(_comEntries, classesKey);\n                        GetTypeLibEntries(_comEntries, classesKey);\n                    }\n                    catch (SystemException ex)\n                    {\n                        Trace.WriteLine(@\"Unexpected error while scanning COM entries, the registry might be corrupted. COM junk detection will not work. Error: \" + ex);\n                    }\n                }\n            }\n\n            // Gather com interface info\n            // https://docs.microsoft.com/en-us/windows/desktop/com/interface-key\n            foreach (var classesKeyPath in _classesKeys)\n            {\n                using (var interfacesKey = RegistryTools.OpenRegistryKey(Path.Combine(classesKeyPath, \"Interface\"), false, true))\n                {\n                    if (interfacesKey == null) continue;\n\n                    foreach (var singleInterfaceKey in interfacesKey.GetSubKeyNames())\n                    {\n                        using (var proxyKey = interfacesKey.OpenSubKey(Path.Combine(singleInterfaceKey, \"ProxyStubClsid32\")))\n                        {\n                            var proxyGuid = proxyKey?.GetValue(null, null) as string;\n                            if (proxyGuid == null) continue;\n\n                            var matchClass = _comEntries.FirstOrDefault(x => string.Equals(x.Guid, proxyGuid, StringComparison.OrdinalIgnoreCase));\n                            matchClass?.InterfaceNames.Add(Path.Combine(interfacesKey.Name, singleInterfaceKey));\n                        }\n                    }\n                }\n            }\n        }\n\n        private static void GetClsidEntries(ICollection<ComEntry> results, RegistryKey classes)\n        {\n            // https://docs.microsoft.com/en-us/windows/desktop/com/clsid-key-hklm\n            using (var clsid = RegistryTools.OpenRegistryKey(Path.Combine(classes.Name, \"CLSID\"), false, true))\n            {\n                if (clsid == null) return;\n\n                foreach (var clsidGuid in clsid.GetSubKeyNames())\n                {\n                    // This catches most system classes, rest is caught by IsSystemDirectory check later\n                    if (IsSystemGuid(clsidGuid)) continue;\n\n                    RegistryKey guidKey = null;\n                    try\n                    {\n                        guidKey = clsid.OpenSubKey(clsidGuid);\n                        if (guidKey == null) continue;\n\n                        var result = results.FirstOrDefault(x => string.Equals(x.Guid, clsidGuid, StringComparison.OrdinalIgnoreCase)) ?? new ComEntry(clsidGuid);\n\n                        using (var inprocKey = guidKey.OpenSubKey(\"InprocServer32\"))\n                        {\n                            var path = inprocKey?.GetValue(null, null) as string;\n                            if (string.IsNullOrEmpty(path)) continue;\n\n                            path = PathTools.NormalizePath(path);\n                            if (UninstallToolsGlobalConfig.IsSystemDirectory(path)) continue;\n\n                            result.FullFilename = PathTools.NormalizePath(Environment.ExpandEnvironmentVariables(path));\n                        }\n\n                        using (var progIdKey = guidKey.OpenSubKey(\"ProgID\"))\n                        {\n                            if (progIdKey != null)\n                                result.ProgId = progIdKey.GetValue(null, null) as string;\n                        }\n\n                        using (var indepProgIdKey = guidKey.OpenSubKey(\"VersionIndependentProgID\"))\n                        {\n                            if (indepProgIdKey != null)\n                                result.VersionIndependentProgId = indepProgIdKey.GetValue(null, null) as string;\n                        }\n\n                        results.Add(result);\n                    }\n                    catch (SystemException ex)\n                    {\n                        Trace.WriteLine($@\"Crash while processing COM GUID: {clsidGuid} - {ex}\");\n                    }\n                    finally\n                    {\n                        guidKey?.Close();\n                    }\n                }\n            }\n        }\n\n        private static void GetTypeLibEntries(ICollection<ComEntry> results, RegistryKey classes)\n        {\n            using (var typeLibKey = RegistryTools.OpenRegistryKey(Path.Combine(classes.Name, \"TypeLib\"), false, true))\n            {\n                if (typeLibKey == null) return;\n\n                foreach (var typeLibKeyGuid in typeLibKey.GetSubKeyNames())\n                {\n                    if (IsSystemGuid(typeLibKeyGuid)) continue;\n\n                    using (var guidKey = typeLibKey.OpenSubKey(typeLibKeyGuid))\n                    {\n                        var versionKeyName = guidKey?.GetSubKeyNames().FirstOrDefault();\n                        if (versionKeyName == null) continue;\n\n                        var result = results.FirstOrDefault(x => string.Equals(x.Guid, typeLibKeyGuid, StringComparison.OrdinalIgnoreCase)) ?? new ComEntry(typeLibKeyGuid);\n\n                        foreach (var fileKeyPath in new[] { Path.Combine(versionKeyName, \"0\\\\win32\"), Path.Combine(versionKeyName, \"0\\\\win64\") })\n                        {\n                            using (var fileKey = guidKey.OpenSubKey(fileKeyPath))\n                            {\n                                var path = fileKey?.GetValue(null, null) as string;\n                                if (string.IsNullOrEmpty(path)) continue;\n\n                                path = PathTools.NormalizePath(path);\n                                if (UninstallToolsGlobalConfig.IsSystemDirectory(path)) continue;\n\n                                result.FullFilename = PathTools.NormalizePath(Environment.ExpandEnvironmentVariables(path));\n                                results.Add(result);\n                                break;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        private static bool IsSystemGuid(string guid)\n        {\n            // Treat missing/invalid GUID text as non-target so callers can safely skip it.\n            if (string.IsNullOrEmpty(guid)) return true;\n            return guid.Contains(\"-0000-\") || guid[0] != '{';\n        }\n\n        private RegistryKeyJunk JunkFromKey(ApplicationUninstallerEntry target, RegistryKey targetKey)\n        {\n            var junk = new RegistryKeyJunk(targetKey.Name, target, this);\n            junk.Confidence.Add(ConfidenceRecords.ExplicitConnection);\n            return junk;\n        }\n\n        private IJunkResult JunkFromValue(ApplicationUninstallerEntry target, string key, string valueName)\n        {\n            var junk = new RegistryValueJunk(key, valueName, target, this);\n            junk.Confidence.Add(ConfidenceRecords.ExplicitConnection);\n            return junk;\n        }\n\n        private RegistryKeyJunk TryGetFromPath(ApplicationUninstallerEntry target, RegistryKey classesKey, string targetSubKeyPath)\n        {\n            using (var targetKey = classesKey.OpenSubKey(targetSubKeyPath))\n            {\n                if (targetKey == null) return null;\n                return JunkFromKey(target, targetKey);\n            }\n        }\n\n        private IEnumerable<string> GetExtensionNames(string classesKey)\n        {\n            _extensionKeyNames.TryGetValue(classesKey, out var result);\n            return result ?? Enumerable.Empty<string>();\n        }\n\n        private sealed class ComEntry\n        {\n            public readonly string Guid;\n            public readonly List<string> InterfaceNames = new();\n\n            public string FullFilename;\n            //https://docs.microsoft.com/en-us/windows/desktop/com/-progid--key\n            public string ProgId;\n            public string VersionIndependentProgId;\n\n            public ComEntry(string guid)\n            {\n                Guid = guid;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/DebugTracingScanner.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Security;\nusing Klocman.Extensions;\nusing UninstallTools.Junk.Confidence;\nusing UninstallTools.Junk.Containers;\nusing UninstallTools.Properties;\n\nnamespace UninstallTools.Junk.Finders.Registry\n{\n    public class DebugTracingScanner : IJunkCreator\n    {\n        public void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\n        {\n        }\n\n        public IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\n        {\n            var returnList = new List<IJunkResult>();\n\n            if (string.IsNullOrEmpty(target.InstallLocation))\n                return returnList;\n\n            string pathRoot;\n\n            try\n            {\n                pathRoot = Path.GetPathRoot(target.InstallLocation) ?? throw new ArgumentException(\"No path root for \" + target.InstallLocation);\n            }\n            catch (SystemException ex)\n            {\n                Trace.WriteLine(ex);\n                return returnList;\n            }\n\n            var unrootedLocation = pathRoot.Length >= 1\n                ? target.InstallLocation.Replace(pathRoot, string.Empty)\n                : target.InstallLocation;\n\n            if (string.IsNullOrEmpty(unrootedLocation.Trim()))\n                return returnList;\n\n            try\n            {\n                using (var key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\Tracing\", true))\n                {\n                    if (key != null && target.SortedExecutables != null)\n                    {\n                        var exeNames = target.SortedExecutables.Select(Path.GetFileNameWithoutExtension).ToList();\n\n                        foreach (var keyGroup in key.GetSubKeyNames()\n                            .Where(x => x.EndsWith(\"_RASAPI32\") || x.EndsWith(\"_RASMANCS\"))\n                            .Select(name => new {name, trimmed = name.Substring(0, name.LastIndexOf('_'))})\n                            .GroupBy(x => x.trimmed))\n                        {\n                            if (exeNames.Contains(keyGroup.Key, StringComparison.InvariantCultureIgnoreCase))\n                            {\n                                foreach (var keyName in keyGroup)\n                                {\n                                    var junk = new RegistryKeyJunk(Path.Combine(key.Name, keyName.name), target, this);\n                                    junk.Confidence.Add(ConfidenceRecords.ExplicitConnection);\n                                    returnList.Add(junk);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n            catch (Exception ex)\n            {\n                if (ex is UnauthorizedAccessException || ex is SecurityException || ex is IOException)\n                    Trace.WriteLine(ex);\n                else\n                    throw;\n            }\n\n            return returnList;\n        }\n\n        public string CategoryName => Localisation.Junk_DebugTracing_GroupName;\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/EventLogScanner.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Registry\r\n{\r\n    public class EventLogScanner : JunkCreatorBase\r\n    {\r\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            if (string.IsNullOrEmpty(target.InstallLocation)) yield break;\r\n\r\n            var otherUninstallers = GetOtherUninstallers(target).ToList();\r\n\r\n            using (var key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(\r\n                @\"SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\"))\r\n            {\r\n                if (key == null) yield break;\r\n\r\n                var query = from name in key.GetSubKeyNames()\r\n                    let m = ConfidenceGenerators.MatchStringToProductName(target, name)\r\n                    where m >= 0 && m < 3\r\n                    //orderby m ascending\r\n                    select name;\r\n\r\n                foreach (var result in query)\r\n                {\r\n                    using (var subkey = key.OpenSubKey(result))\r\n                    {\r\n                        var exePath = subkey?.GetStringSafe(\"EventMessageFile\");\r\n                        if (string.IsNullOrEmpty(exePath) || !PathTools.SubPathIsInsideBasePath(target.InstallLocation, Path.GetDirectoryName(exePath), true, false)) continue;\r\n\r\n                        var node = new RegistryKeyJunk(subkey.Name, target, this);\r\n                        // Already matched names above\r\n                        node.Confidence.Add(ConfidenceRecords.ProductNamePerfectMatch);\r\n\r\n                        if (otherUninstallers.Any(x => PathTools.SubPathIsInsideBasePath(x.InstallLocation, Path.GetDirectoryName(exePath), true, false)))\r\n                            node.Confidence.Add(ConfidenceRecords.DirectoryStillUsed);\r\n\r\n                        yield return node;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        public override string CategoryName => Localisation.Junk_EventLog_GroupName;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/FirewallRuleScanner.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Registry\r\n{\r\n    public class FirewallRuleScanner : JunkCreatorBase\r\n    {\r\n        private const string FirewallRulesKey = @\"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\FirewallRules\";\r\n\r\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            var results = new List<IJunkResult>();\r\n            if (string.IsNullOrEmpty(target.InstallLocation))\r\n                return results;\r\n\r\n            using var key = GetFirewallRulesKey();\r\n            \r\n            if (key != null)\r\n            {\r\n                foreach (var valueName in key.TryGetValueNames())\r\n                {\r\n                    var value = key.GetStringSafe(valueName);\r\n                    if (string.IsNullOrEmpty(value)) continue;\r\n\r\n                    var appIndex = value.IndexOf(\"|App=\", StringComparison.InvariantCultureIgnoreCase);\r\n                    var start = appIndex + 5;\r\n                    if(appIndex == -1 || start >= value.Length) continue;\r\n\r\n                    var charCount = value.IndexOf('|', start) - start;\r\n                    if (charCount <= 0) continue;\r\n\r\n                    var fullPath = Environment.ExpandEnvironmentVariables(value.Substring(start, charCount));\r\n                    if (fullPath.StartsWith(target.InstallLocation, StringComparison.InvariantCultureIgnoreCase))\r\n                    {\r\n                        var node = new RegistryValueJunk(FirewallRulesKey, valueName, target, this);\r\n                        node.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n                        results.Add(node);\r\n                    }\r\n                }\r\n            }\r\n\r\n            return results;\r\n        }\r\n\r\n        private static Microsoft.Win32.RegistryKey GetFirewallRulesKey()\r\n        {\r\n            try\r\n            {\r\n                return RegistryTools.OpenRegistryKey(FirewallRulesKey);\r\n            }\r\n            catch (SystemException ex)\r\n            {\r\n                Trace.WriteLine(\"Failed to get firewall rule registry key: \" + ex);\r\n                return null;\r\n            }\r\n        }\r\n\r\n        public override string CategoryName => Localisation.Junk_FirewallRule_GroupName;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/HeapLeakDetectionScanner.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing Klocman.Extensions;\nusing Klocman.Tools;\nusing UninstallTools.Junk.Confidence;\nusing UninstallTools.Junk.Containers;\n\nnamespace UninstallTools.Junk.Finders.Registry\n{\n    public class HeapLeakDetectionScanner : IJunkCreator\n    {\n        private const string RegKey = @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\RADAR\\HeapLeakDetection\\DiagnosedApplications\";\n\n        private Dictionary<string, string> _lookup;\n\n        public void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\n        {\n            try\n            {\n                using (var key = RegistryTools.OpenRegistryKey(RegKey))\n                {\n                    if (key != null)\n                    {\n                        // Reg key names are case insensitive so using tolower key is fine\n                        _lookup = key.GetSubKeyNames().ToDictionary(x => x.ToLower(), x => x);\n                    }\n                }\n            }\n            catch (SystemException ex)\n            {\n                Trace.WriteLine($\"Failed to setup {CategoryName} junk scanner: {ex}\");\n            }\n        }\n\n        public IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\n        {\n            if (_lookup == null || target.SortedExecutables == null || target.SortedExecutables.Length == 0)\n                return Enumerable.Empty<IJunkResult>();\n\n            return target.SortedExecutables.Attempt(x =>\n                {\n                    _lookup.TryGetValue(Path.GetFileName(x).ToLower(), out var hit);\n                    return hit;\n                })\n                .Where(x => x != null)\n                .Select(x =>\n                {\n                    var junk = new RegistryKeyJunk(Path.Combine(RegKey, x), target, this);\n                    junk.Confidence.Add(ConfidenceRecords.ExplicitConnection);\n                    return junk;\n                });\n        }\n\n        public string CategoryName => \"HeapLeakDetection\";\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/InstallerFoldersScanner.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Registry\r\n{\r\n    public class InstallerFoldersScanner : JunkCreatorBase\r\n    {\r\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            var installLocation = target.InstallLocation;\r\n            if (string.IsNullOrEmpty(installLocation)) yield break;\r\n\r\n            using (var key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(\r\n                @\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\Folders\"))\r\n            {\r\n                if (key == null) yield break;\r\n\r\n                foreach (var valueName in key.GetValueNames())\r\n                {\r\n                    if (!PathTools.SubPathIsInsideBasePath(installLocation, valueName, true, true)) continue;\r\n\r\n                    var node = new RegistryValueJunk(key.Name, valueName, target, this);\r\n                    node.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n\r\n                    if (GetOtherInstallLocations(target).Any(x => PathTools.SubPathIsInsideBasePath(x, valueName, true, true)))\r\n                        node.Confidence.Add(ConfidenceRecords.DirectoryStillUsed);\r\n\r\n                    yield return node;\r\n                }\r\n            }\r\n        }\r\n\r\n        public override string CategoryName => Localisation.Junk_InstalledFolders_GroupName;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/RegisteredApplicationsFinder.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\n\r\nnamespace UninstallTools.Junk.Finders.Registry\r\n{\r\n    public class RegisteredApplicationsFinder : JunkCreatorBase\r\n    {\r\n        private struct RegAppEntry\r\n        {\r\n            public RegAppEntry(string valueName, string rootKeyName, string targetSubKeyPath)\r\n            {\r\n                ValueName = valueName;\r\n                RootKeyName = rootKeyName;\r\n                TargetSubKeyPath = targetSubKeyPath;\r\n\r\n                AppName = AppKey = null;\r\n\r\n                if (valueName.Length == 36 && valueName.StartsWith(\"App\", StringComparison.Ordinal))\r\n                {\r\n                    var pathParts = targetSubKeyPath.Split(new[] { '\\\\' }, StringSplitOptions.RemoveEmptyEntries);\r\n                    for (int i = pathParts.Length - 2; i >= 8; i--)\r\n                    {\r\n                        if (pathParts[i] == \"Packages\")\r\n                        {\r\n                            AppName = pathParts[i + 1];\r\n                            AppKey = string.Join(\"\\\\\", pathParts, 0, i + 2);\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            public string ValueName { get; }\r\n            public string TargetSubKeyPath { get; }\r\n            public string RootKeyName { get; }\r\n            public string TargetFullPath => Path.Combine(RootKeyName, TargetSubKeyPath);\r\n            public string RegAppFullPath => Path.Combine(RootKeyName, RegAppsSubKeyPath);\r\n            public string AppName { get; }\r\n            public string AppKey { get; }\r\n        }\r\n\r\n        private const string RegAppsSubKeyPath = @\"Software\\RegisteredApplications\";\r\n        List<RegAppEntry> _regAppsValueCache;\r\n\r\n        public override void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            base.Setup(allUninstallers);\r\n\r\n            // Preload all values into a new cache\r\n            _regAppsValueCache = new List<RegAppEntry>();\r\n\r\n            foreach (var targetRootName in TargetRoots)\r\n            {\r\n                using (var rootKey = RegistryTools.OpenRegistryKey(targetRootName))\r\n                {\r\n                    using (var regAppsKey = rootKey.OpenSubKey(RegAppsSubKeyPath))\r\n                    {\r\n                        if (regAppsKey == null) continue;\r\n\r\n                        var names = regAppsKey.GetValueNames();\r\n\r\n                        var results = names.Attempt(n => new { name = n, value = regAppsKey.GetStringSafe(n) })\r\n                                .Where(x => !string.IsNullOrEmpty(x.value))\r\n                                .ToList();\r\n\r\n                        _regAppsValueCache.AddRange(results.Select(x => new RegAppEntry(x.name, targetRootName, x.value.Trim('\\\\', ' ', '\"', '\\''))));\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        private static readonly string[] TargetRoots = { @\"HKEY_CURRENT_USER\\\", @\"HKEY_LOCAL_MACHINE\\\" };\r\n\r\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            var isStoreApp = target.UninstallerKind == UninstallerType.StoreApp;\r\n            if (isStoreApp && string.IsNullOrEmpty(target.RatingId))\r\n                throw new ArgumentException(\"StoreApp entry has no ID\");\r\n\r\n            if (isStoreApp)\r\n            {\r\n                foreach (var regAppEntry in _regAppsValueCache)\r\n                {\r\n                    if (regAppEntry.AppName == null)\r\n                        continue;\r\n\r\n                    if (string.Equals(regAppEntry.AppName, target.RatingId, StringComparison.OrdinalIgnoreCase))\r\n                    {\r\n                        // Handle the value under RegisteredApps itself\r\n                        var regAppResult = new RegistryValueJunk(regAppEntry.RegAppFullPath, regAppEntry.ValueName, target, this);\r\n                        regAppResult.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n                        yield return regAppResult;\r\n\r\n                        // Handle the key pointed at by the value\r\n                        var appEntryKey = new RegistryKeyJunk(regAppEntry.AppKey, target, this);\r\n                        appEntryKey.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n                        appEntryKey.Confidence.Add(ConfidenceRecords.IsStoreApp);\r\n                        yield return appEntryKey;\r\n                    }\r\n                }\r\n            }\r\n            else\r\n            {\r\n                foreach (var regAppEntry in _regAppsValueCache)\r\n                {\r\n                    if (regAppEntry.AppName != null)\r\n                        continue;\r\n\r\n                    var generatedConfidence = ConfidenceGenerators.GenerateConfidence(regAppEntry.ValueName, target).ToList();\r\n\r\n                    if (generatedConfidence.Count > 0)\r\n                    {\r\n                        // Handle the value under RegisteredApps itself\r\n                        var regAppResult = new RegistryValueJunk(regAppEntry.RegAppFullPath, regAppEntry.ValueName, target, this);\r\n                        regAppResult.Confidence.AddRange(generatedConfidence);\r\n                        yield return regAppResult;\r\n\r\n                        // Handle the key pointed at by the value\r\n                        const string capabilitiesSubkeyName = \"\\\\Capabilities\";\r\n                        if (regAppEntry.TargetSubKeyPath.EndsWith(capabilitiesSubkeyName, StringComparison.Ordinal))\r\n                        {\r\n                            var capabilitiesKeyResult = new RegistryKeyJunk(regAppEntry.TargetFullPath, target, this);\r\n                            capabilitiesKeyResult.Confidence.AddRange(generatedConfidence);\r\n                            yield return capabilitiesKeyResult;\r\n\r\n                            var ownerKey = regAppEntry.TargetFullPath.Substring(0,\r\n                                regAppEntry.TargetFullPath.Length - capabilitiesSubkeyName.Length);\r\n\r\n                            var subConfidence = ConfidenceGenerators.GenerateConfidence(Path.GetFileName(ownerKey),\r\n                                target).ToList();\r\n                            if (subConfidence.Count > 0)\r\n                            {\r\n                                var subResult = new RegistryKeyJunk(ownerKey, target, this);\r\n                                subResult.Confidence.AddRange(subConfidence);\r\n                                yield return subResult;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        public override string CategoryName => \"Registered app capabilities\";\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/SoftwareRegKeyScanner.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Security;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing Microsoft.Win32;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Registry\r\n{\r\n    public class SoftwareRegKeyScanner : JunkCreatorBase\r\n    {\r\n        public override string CategoryName => Localisation.Junk_Registry_GroupName;\r\n\r\n        private const string KeynameRegisteredApps = \"RegisteredApplications\";\r\n\r\n        private const string KeyVirtualStoreCu = @\"HKEY_CURRENT_USER\\SOFTWARE\\Classes\\VirtualStore\\MACHINE\\SOFTWARE\";\r\n\r\n        private const string KeyVirtualStoreCuWow =\r\n            @\"HKEY_CURRENT_USER\\SOFTWARE\\Classes\\VirtualStore\\MACHINE\\SOFTWARE\\Wow6432Node\";\r\n\r\n        private const string KeyVirtualStoreLm = @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\VirtualStore\\MACHINE\\SOFTWARE\";\r\n\r\n        private const string KeyVirtualStoreLmWow =\r\n            @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\VirtualStore\\MACHINE\\SOFTWARE\\Wow6432Node\";\r\n\r\n        /// <summary>\r\n        /// Keys to step over when scanning\r\n        /// </summary>\r\n        private static readonly IEnumerable<string> KeyBlacklist = new[]\r\n        {\r\n            \"Microsoft\", \"Wow6432Node\", \"Windows\", \"Classes\", \"Clients\", KeynameRegisteredApps\r\n        };\r\n\r\n        /// <summary>\r\n        /// Always points to program's directory\r\n        /// </summary>\r\n        private static readonly IEnumerable<string> InstallDirKeyNames = new[]\r\n        {\r\n            \"InstallDir\",\r\n            \"Install_Dir\",\r\n            \"Install Directory\",\r\n            \"InstDir\",\r\n            \"ApplicationPath\",\r\n            \"Install folder\",\r\n            \"Last Stable Install Path\",\r\n            \"TARGETDIR\",\r\n            \"JavaHome\"\r\n        };\r\n\r\n        /// <summary>\r\n        /// Always points to program's main executable\r\n        /// </summary>\r\n        private static readonly IEnumerable<string> ExePathKeyNames = new[]\r\n        {\r\n            \"exe64\",\r\n            \"exe32\",\r\n            \"Executable\",\r\n            \"PathToExe\",\r\n            \"ExePath\"\r\n        };\r\n\r\n        /// <summary>\r\n        /// Can point to programs executable or directory\r\n        /// </summary>\r\n        private static readonly IEnumerable<string> ExeOrDirPathKeyNames = new[]\r\n        {\r\n            \"Path\",\r\n            \"Path64\",\r\n            \"pth\",\r\n            \"PlayerPath\",\r\n            \"AppPath\"\r\n        };\r\n\r\n        internal static readonly string KeyCu = @\"HKEY_CURRENT_USER\\SOFTWARE\";\r\n        internal static readonly string KeyCuWow = @\"HKEY_CURRENT_USER\\SOFTWARE\\Wow6432Node\";\r\n        internal static readonly string KeyLm = @\"HKEY_LOCAL_MACHINE\\SOFTWARE\";\r\n        internal static readonly string KeyLmWow = @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\";\r\n\r\n        private static readonly ICollection<string> SoftwareRegKeys;\r\n\r\n        private ApplicationUninstallerEntry _uninstaller;\r\n\r\n        static SoftwareRegKeyScanner()\r\n        {\r\n            if (ProcessTools.Is64BitProcess)\r\n            {\r\n                SoftwareRegKeys = new[]\r\n                {\r\n                    KeyLm, KeyCu, KeyVirtualStoreCu, KeyVirtualStoreLm,\r\n                    KeyLmWow, KeyCuWow, KeyVirtualStoreCuWow, KeyVirtualStoreLmWow\r\n                };\r\n            }\r\n            else\r\n            {\r\n                SoftwareRegKeys = new[] { KeyLm, KeyCu, KeyVirtualStoreCu, KeyVirtualStoreLm };\r\n            }\r\n        }\r\n\r\n        public override IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            _uninstaller = target;\r\n            var output = new List<RegistryKeyJunk>();\r\n\r\n            foreach (var softwareKeyName in SoftwareRegKeys)\r\n            {\r\n                using (var softwareKey = RegistryTools.OpenRegistryKey(softwareKeyName))\r\n                {\r\n                    if (softwareKey != null)\r\n                        output.AddRange(FindJunkRecursively(softwareKey));\r\n                }\r\n            }\r\n\r\n            return output.Concat(ScanRelatedKeys(output));\r\n        }\r\n\r\n        private IEnumerable<RegistryKeyJunk> FindJunkRecursively(RegistryKey softwareKey, int level = -1)\r\n        {\r\n            var added = new List<RegistryKeyJunk>();\r\n            IEnumerable<RegistryKeyJunk> returnList = added;\r\n\r\n            try\r\n            {\r\n                // Don't try to scan root keys\r\n                if (level > -1)\r\n                {\r\n                    var keyName = Path.GetFileName(softwareKey.Name);\r\n                    var keyDir = Path.GetDirectoryName(softwareKey.Name);\r\n                    var confidence = ConfidenceGenerators.GenerateConfidence(keyName, keyDir, level, _uninstaller).ToList();\r\n\r\n                    // Check if application's location is explicitly mentioned in any of the values\r\n                    if (softwareKey.TryGetValueNames().Any(valueName => TestValueForMatches(softwareKey, valueName)))\r\n                        confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n\r\n                    if (confidence.Any())\r\n                    {\r\n                        // TODO Add extra confidence if the key is, or will be empty after junk removal\r\n                        var newNode = new RegistryKeyJunk(softwareKey.Name, _uninstaller, this);\r\n                        newNode.Confidence.AddRange(confidence);\r\n                        added.Add(newNode);\r\n                    }\r\n                }\r\n\r\n                // Limit recursion depth\r\n                if (level <= 1)\r\n                {\r\n                    foreach (var subKeyName in softwareKey.GetSubKeyNames())\r\n                    {\r\n                        if (KeyBlacklist.Contains(subKeyName, StringComparison.InvariantCultureIgnoreCase))\r\n                            continue;\r\n\r\n                        using (var subKey = softwareKey.OpenSubKey(subKeyName, false))\r\n                        {\r\n                            if (subKey != null)\r\n                                // ReSharper disable once PossibleMultipleEnumeration\r\n                                returnList = returnList.Concat(FindJunkRecursively(subKey, level + 1));\r\n                        }\r\n                    }\r\n                }\r\n\r\n                ConfidenceGenerators.TestForSimilarNames(_uninstaller, AllUninstallers, added.Select(x => new KeyValuePair<JunkResultBase, string>(x, x.RegKeyName)).ToList());\r\n            }\r\n            // Reg key invalid\r\n            catch (ArgumentException)\r\n            {\r\n            }\r\n            catch (SecurityException)\r\n            {\r\n            }\r\n            catch (ObjectDisposedException)\r\n            {\r\n            }\r\n\r\n            // ReSharper disable once PossibleMultipleEnumeration\r\n            return returnList;\r\n        }\r\n\r\n        private bool TestValueForMatches(RegistryKey softwareKey, string valueName)\r\n        {\r\n            bool hit;\r\n            if (InstallDirKeyNames.Contains(valueName, StringComparison.InvariantCultureIgnoreCase))\r\n            {\r\n                hit = PathTools.SubPathIsInsideBasePath(_uninstaller.InstallLocation, softwareKey.GetStringSafe(valueName), true, true);\r\n            }\r\n            else if (ExePathKeyNames.Contains(valueName, StringComparison.InvariantCultureIgnoreCase))\r\n            {\r\n                hit = TestPathsMatchExe(softwareKey.GetStringSafe(valueName));\r\n            }\r\n            else if (ExeOrDirPathKeyNames.Contains(valueName, StringComparison.InvariantCultureIgnoreCase))\r\n            {\r\n                var path = softwareKey.GetStringSafe(valueName);\r\n                hit = File.Exists(path)\r\n                    ? TestPathsMatchExe(softwareKey.GetStringSafe(valueName))\r\n                    : PathTools.SubPathIsInsideBasePath(_uninstaller.InstallLocation, softwareKey.GetStringSafe(valueName), true, true);\r\n            }\r\n            else\r\n            {\r\n                hit = PathTools.SubPathIsInsideBasePath(_uninstaller.InstallLocation, softwareKey.GetStringSafe(null), true, true);\r\n            }\r\n\r\n            return hit;\r\n        }\r\n\r\n        private IEnumerable<RegistryKeyJunk> ScanRelatedKeys(IEnumerable<RegistryKeyJunk> itemsToCompare)\r\n        {\r\n            var input = itemsToCompare.ToList();\r\n            var output = new List<RegistryKeyJunk>();\r\n\r\n            foreach (var registryJunkNode in input)\r\n            {\r\n                var nodeName = registryJunkNode.FullRegKeyPath;\r\n\r\n                // Check Wow first because non-wow path will match wow path\r\n                var softwareKey = new[] { KeyLmWow, KeyCuWow, KeyLm, KeyCu }.First(\r\n                    key => nodeName.StartsWith(key, StringComparison.InvariantCultureIgnoreCase));\r\n\r\n                nodeName = nodeName.Substring(softwareKey.Length + 1);\r\n\r\n                foreach (var keyToTest in SoftwareRegKeys.Except(new[] { softwareKey }))\r\n                {\r\n                    var nodePath = Path.Combine(keyToTest, nodeName);\r\n                    // Check if the same node exists in other root keys\r\n                    var node = input.FirstOrDefault(x => PathTools.PathsEqual(x.FullRegKeyPath, nodePath));\r\n\r\n                    if (node != null)\r\n                    {\r\n                        // Add any non-duplicate confidence to the existing node\r\n                        node.Confidence.AddRange(registryJunkNode.Confidence.ConfidenceParts\r\n                            .Where(x => !node.Confidence.ConfidenceParts.Any(x.Equals)));\r\n                    }\r\n                    else\r\n                    {\r\n                        try\r\n                        {\r\n                            // Check if the key acually exists\r\n                            using (var nodeKey = RegistryTools.OpenRegistryKey(nodePath, false))\r\n                            {\r\n                                if (nodeKey != null)\r\n                                {\r\n                                    var newNode = new RegistryKeyJunk(nodePath, _uninstaller, this);\r\n                                    newNode.Confidence.AddRange(registryJunkNode.Confidence.ConfidenceParts);\r\n                                    output.Add(newNode);\r\n                                }\r\n                            }\r\n                        }\r\n                        catch\r\n                        {\r\n                            // Ignore keys that don't exist\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            return output;\r\n        }\r\n\r\n        private bool TestPathsMatchExe(string keyValue)\r\n        {\r\n            return PathTools.SubPathIsInsideBasePath(_uninstaller.InstallLocation, Path.GetDirectoryName(keyValue), true, true);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/TracingScanner.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Registry\r\n{\r\n    public class TracingScanner : IJunkCreator\r\n    {\r\n        private const string TracingKey = @\"SOFTWARE\\Microsoft\\Tracing\";\r\n        private const string FullTracingKey = @\"HKEY_LOCAL_MACHINE\\\" + TracingKey;\r\n\r\n        private ICollection<ApplicationUninstallerEntry> _allEntries;\r\n\r\n        public void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            _allEntries = allUninstallers;\r\n        }\r\n\r\n        public IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            var results = new List<RegistryKeyJunk>();\r\n            using (var key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(TracingKey))\r\n            {\r\n                if (key != null)\r\n                {\r\n                    foreach (var subKeyName in key.GetSubKeyNames())\r\n                    {\r\n                        var i = subKeyName.LastIndexOf('_');\r\n                        if (i <= 0)\r\n                            continue;\r\n\r\n                        var str = subKeyName.Substring(0, i);\r\n\r\n                        var conf = ConfidenceGenerators.GenerateConfidence(str, Path.Combine(FullTracingKey, subKeyName), 0, target).ToList();\r\n                        if (conf.Any())\r\n                        {\r\n                            var node = new RegistryKeyJunk(Path.Combine(FullTracingKey, subKeyName), target, this);\r\n                            node.Confidence.AddRange(conf);\r\n                            results.Add(node);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            ConfidenceGenerators.TestForSimilarNames(target, _allEntries, results.Select(x => new KeyValuePair<JunkResultBase, string>(x, x.RegKeyName)).ToList());\r\n\r\n            return results;\r\n        }\r\n\r\n        public string CategoryName => Localisation.Junk_Tracing_GroupName;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/UninstallerKeySearcher.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.IO;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Registry\r\n{\r\n    public class UninstallerKeySearcher : IJunkCreator\r\n    {\r\n        private static readonly IEnumerable<string> InstallerSubkeyPaths;\r\n\r\n        /// <summary>\r\n        /// parent key path, upgrade code(key name)\r\n        /// </summary>\r\n        private IEnumerable<KeyValuePair<string, string>> _targetKeys;\r\n\r\n        static UninstallerKeySearcher()\r\n        {\r\n            InstallerSubkeyPaths = new[]\r\n            {\r\n                @\"SOFTWARE\\Classes\\Installer\\Products\",\r\n                @\"SOFTWARE\\Classes\\Installer\\Features\",\r\n                @\"SOFTWARE\\Classes\\Installer\\Patches\"\r\n            };\r\n\r\n            try\r\n            {\r\n                var currentUserId = WindowsTools.GetUserSid().Value;\r\n                if (string.IsNullOrEmpty(currentUserId) || currentUserId.Length <= 9)\r\n                    return;\r\n\r\n                var currentUserInstallerDataPath = Path.Combine(@\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\",\r\n                    currentUserId);\r\n\r\n                InstallerSubkeyPaths = InstallerSubkeyPaths.Concat(new []\r\n                {\r\n                    Path.Combine(currentUserInstallerDataPath, \"Products\"),\r\n                    Path.Combine(currentUserInstallerDataPath, \"Patches\"),\r\n                    Path.Combine(currentUserInstallerDataPath, \"Components\")\r\n                });\r\n            }\r\n            catch (SystemException ex)\r\n            {\r\n                Trace.WriteLine(ex);\r\n            }\r\n        }\r\n\r\n        public void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            _targetKeys = InstallerSubkeyPaths\r\n                .Using(x => Microsoft.Win32.Registry.LocalMachine.OpenSubKey(x))\r\n                .Where(k => k != null)\r\n                .SelectMany(k =>\r\n                {\r\n                    var parentPath = k.Name;\r\n                    return k.GetSubKeyNames().Select(n => new KeyValuePair<string, string>(parentPath, n));\r\n                }).ToList();\r\n        }\r\n\r\n        public IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            if (target.RegKeyStillExists())\r\n            {\r\n                var regKeyNode = new RegistryKeyJunk(target.RegistryPath, target, this);\r\n                regKeyNode.Confidence.Add(ConfidenceRecords.IsUninstallerRegistryKey);\r\n                yield return regKeyNode;\r\n            }\r\n\r\n            if (target.UninstallerKind == UninstallerType.Msiexec && !target.BundleProviderKey.IsEmpty())\r\n            {\r\n                var upgradeKey = MsiTools.ConvertBetweenUpgradeAndProductCode(target.BundleProviderKey).ToString(\"N\");\r\n\r\n                var matchedKeyPaths = _targetKeys\r\n                    .Where(x => x.Value.Equals(upgradeKey, StringComparison.OrdinalIgnoreCase));\r\n\r\n                foreach (var keyPath in matchedKeyPaths)\r\n                {\r\n                    var fullKeyPath = Path.Combine(keyPath.Key, keyPath.Value);\r\n                    var result = new RegistryKeyJunk(fullKeyPath, target, this);\r\n                    result.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n                    yield return result;\r\n                }\r\n            }\r\n        }\r\n\r\n        public string CategoryName => Localisation.Junk_UninstallerKey_GroupName;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/Finders/Registry/UserAssistScanner.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk.Finders.Registry\r\n{\r\n    public class UserAssistScanner : IJunkCreator\r\n    {\r\n        public string CategoryName => Localisation.Junk_UserAssist_GroupName;\r\n\r\n        private static readonly IEnumerable<string> UserAssistGuids = new[]\r\n        {\r\n            //GUIDs for Windows XP\r\n            \"{75048700-EF1F-11D0-9888-006097DEACF9}\",\r\n            \"{5E6AB780-7743-11CF-A12B-00AA004AE837\",\r\n            //GUIDs for Windows 7\r\n            \"{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\",\r\n            \"{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}}\"\r\n        };\r\n\r\n        public void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n        }\r\n\r\n        public IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            if (string.IsNullOrEmpty(target.InstallLocation))\r\n                yield break;\r\n\r\n            foreach (var userAssistGuid in UserAssistGuids)\r\n            {\r\n                using (var key = RegistryTools.OpenRegistryKey(\r\n                    $@\"{SoftwareRegKeyScanner.KeyCu}\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist\\{userAssistGuid}\\Count\"))\r\n                {\r\n                    if (key == null)\r\n                        continue;\r\n\r\n                    foreach (var valueName in key.GetValueNames())\r\n                    {\r\n                        // Convert the value name to a usable form\r\n                        var convertedName = Rot13(valueName);\r\n                        var guidEnd = convertedName.IndexOf('}') + 1;\r\n                        Guid g;\r\n                        if (guidEnd > 0 && GuidTools.GuidTryParse(convertedName.Substring(0, guidEnd), out g))\r\n                            convertedName = KnownFolders.GetKnownFolderPath(g) + convertedName.Substring(guidEnd);\r\n\r\n                        // Check for matches\r\n                        if (convertedName.StartsWith(target.InstallLocation,\r\n                            StringComparison.InvariantCultureIgnoreCase))\r\n                        {\r\n                            var junk = new RegistryValueJunk(key.Name, valueName, target, this);\r\n                            junk.DisplayValueName = convertedName;\r\n                            junk.Confidence.Add(ConfidenceRecords.ExplicitConnection);\r\n                            yield return junk;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        private static string Rot13(string input)\r\n        {\r\n            if (string.IsNullOrEmpty(input))\r\n                return input;\r\n\r\n            return new string(input.Select(x => x >= 'a' && x <= 'z'\r\n                ? (char)((x - 'a' + 13) % 26 + 'a')\r\n                : (x >= 'A' && x <= 'Z'\r\n                    ? (char)((x - 'A' + 13) % 26 + 'A')\r\n                    : x)).ToArray());\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/IJunkCreator.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\nusing UninstallTools.Junk.Containers;\r\n\r\nnamespace UninstallTools.Junk\r\n{\r\n    public interface IJunkCreator\r\n    {\r\n        void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers);\r\n        IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target);\r\n        string CategoryName { get; }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/JunkManager.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk\r\n{\r\n    public static class JunkManager\r\n    {\r\n        private static IEnumerable<IJunkResult> CleanUpResults(IEnumerable<IJunkResult> input)\r\n        {\r\n            var prohibitedLocations = GetProhibitedLocations();\r\n\r\n            return RemoveDuplicates(input)\r\n                .Where(x => JunkDoesNotPointToDirectories(x, prohibitedLocations))\r\n                .Where(JunkDoesNotPointToSelf);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Make sure that the junk result doesn't point to this application.\r\n        /// </summary>\r\n        private static bool JunkDoesNotPointToSelf(IJunkResult x)\r\n        {\r\n            if (x is FileSystemJunk fileSystemJunk)\r\n            {\r\n                return fileSystemJunk.Path == null || \r\n                       !fileSystemJunk.Path.FullName.StartsWith(UninstallToolsGlobalConfig.AppLocation, StringComparison.OrdinalIgnoreCase);\r\n            }\r\n\r\n            if (x is StartupJunkNode startupJunk)\r\n            {\r\n                return startupJunk.Entry?.CommandFilePath == null || \r\n                       !startupJunk.Entry.CommandFilePath.StartsWith(UninstallToolsGlobalConfig.AppLocation, StringComparison.OrdinalIgnoreCase);\r\n            }\r\n\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Merge duplicate junk entries and their confidence parts\r\n        /// </summary>\r\n        private static IEnumerable<IJunkResult> RemoveDuplicates(IEnumerable<IJunkResult> input)\r\n        {\r\n            foreach (var appGroup in input.GroupBy(x => x.Application))\r\n            {\r\n                foreach (var group in appGroup.GroupBy(x => PathTools.NormalizePath(x.GetDisplayName()).ToLowerInvariant()))\r\n                {\r\n                    IJunkResult firstJunkResult = null;\r\n                    foreach (var junkResult in group)\r\n                    {\r\n                        if (firstJunkResult == null)\r\n                            firstJunkResult = junkResult;\r\n                        else\r\n                            firstJunkResult.Confidence.AddRange(junkResult.Confidence.ConfidenceParts);\r\n                    }\r\n\r\n                    if (firstJunkResult != null)\r\n                        yield return firstJunkResult;\r\n                }\r\n            }\r\n        }\r\n\r\n        private static bool JunkDoesNotPointToDirectories(IJunkResult arg, HashSet<string> prohibitedDirs)\r\n        {\r\n            if (arg is not FileSystemJunk fileSystemJunk)\r\n                return true;\r\n\r\n            return !prohibitedDirs.Contains(fileSystemJunk.Path.FullName.ToLowerInvariant());\r\n        }\r\n\r\n        /// <summary>\r\n        /// Prevent suggesting removing special directories if the app for some reason was installed into them or otherwise used them\r\n        /// </summary>\r\n        private static HashSet<string> GetProhibitedLocations()\r\n        {\r\n            var results = new HashSet<string>();\r\n\r\n            void AddRange(IEnumerable<string> paths)\r\n            {\r\n                foreach (var path in paths\r\n                    .Where(x => !string.IsNullOrWhiteSpace(x))\r\n                    .Attempt(System.IO.Path.GetFullPath)\r\n                    .Select(x => x.ToLowerInvariant()))\r\n                {\r\n                    results.Add(path);\r\n                }\r\n            }\r\n\r\n            AddRange(Enum.GetValues<Klocman.Native.CSIDL>().Attempt(WindowsTools.GetEnvironmentPath));\r\n\r\n            var knownFolderstype = Type.GetType(\"Windows.Storage.KnownFolders, Microsoft.Windows.SDK.NET\", false);\r\n            // Might not be available on some systems\r\n            if (knownFolderstype != null)\r\n            {\r\n                try\r\n                {\r\n                    AddRange(knownFolderstype.GetProperties().Attempt(p => ((Windows.Storage.StorageFolder)p.GetValue(null))!.Path));\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    Trace.WriteLine(\"Failed to collect KnownFolders: \" + ex);\r\n                }\r\n            }\r\n\r\n            return results;\r\n        }\r\n\r\n        public static IEnumerable<IJunkResult> FindJunk(IEnumerable<ApplicationUninstallerEntry> targets,\r\n            ICollection<ApplicationUninstallerEntry> allUninstallers, ListGenerationProgress.ListGenerationCallback progressCallback)\r\n        {\r\n            progressCallback(new ListGenerationProgress(-1, 0, Localisation.Junk_Progress_Startup));\r\n\r\n            var scanners = ReflectionTools.GetTypesImplementingBase<IJunkCreator>()\r\n                .Attempt(Activator.CreateInstance)\r\n                .Cast<IJunkCreator>()\r\n                .ToList();\r\n\r\n            foreach (var junkCreator in scanners)\r\n            {\r\n                junkCreator.Setup(allUninstallers);\r\n            }\r\n\r\n            var results = new List<IJunkResult>();\r\n            var targetEntries = targets as IList<ApplicationUninstallerEntry> ?? targets.ToList();\r\n            var progress = 0;\r\n            foreach (var junkCreator in scanners)\r\n            {\r\n                var scannerProgress = new ListGenerationProgress(progress++, scanners.Count, junkCreator.CategoryName);\r\n\r\n                var entryProgress = 0;\r\n                foreach (var target in targetEntries)\r\n                {\r\n                    scannerProgress.Inner = new ListGenerationProgress(entryProgress++, targetEntries.Count, target.DisplayName);\r\n                    progressCallback(scannerProgress);\r\n\r\n                    try { results.AddRange(junkCreator.FindJunk(target)); }\r\n                    catch (SystemException ex) { PremadeDialogs.GenericError(ex); }\r\n                }\r\n            }\r\n\r\n            progressCallback(new ListGenerationProgress(-1, 0, Localisation.Junk_Progress_Finishing));\r\n\r\n            foreach (var target in targetEntries)\r\n                results.AddRange(target.AdditionalJunk);\r\n\r\n            return CleanUpResults(results);\r\n        }\r\n\r\n        public static IEnumerable<IJunkResult> FindProgramFilesJunk(\r\n            ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            var pfScanner = new ProgramFilesOrphans();\r\n            pfScanner.Setup(allUninstallers);\r\n            return CleanUpResults(pfScanner.FindAllJunk().ToList());\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Junk/ProgramFilesOrphans.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Junk.Confidence;\r\nusing UninstallTools.Junk.Containers;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Junk\r\n{\r\n    public class ProgramFilesOrphans : IJunkCreator\r\n    {\r\n        private string[] _otherInstallLocations;\r\n        private string[] _otherNames;\r\n        private string[] _otherPublishers;\r\n        private List<DirectoryInfo> _programFilesDirectories;\r\n\r\n        public IEnumerable<IJunkResult> FindJunk(ApplicationUninstallerEntry target)\r\n        {\r\n            // Do nothing when called by the manager\r\n            yield break;\r\n        }\r\n\r\n        public IEnumerable<IJunkResult> FindAllJunk()\r\n        {\r\n            var output = new List<FileSystemJunk>();\r\n\r\n            foreach (var kvp in _programFilesDirectories)\r\n                FindJunkRecursively(output, kvp, 0);\r\n\r\n            return output;\r\n        }\r\n\r\n        private void FindJunkRecursively(ICollection<FileSystemJunk> returnList, DirectoryInfo parentDirectory, int level)\r\n        {\r\n            try\r\n            {\r\n                if ((parentDirectory.Attributes & FileAttributes.System) == FileAttributes.System)\r\n                    return;\r\n\r\n                var subDirectories = parentDirectory.GetDirectories();\r\n\r\n                foreach (var subDirectory in subDirectories)\r\n                {\r\n                    if (UninstallToolsGlobalConfig.IsSystemDirectory(subDirectory) || UninstallToolsGlobalConfig.IsKnownFolder(subDirectory))\r\n                        continue;\r\n\r\n                    if (subDirectory.FullName.ContainsAny(_otherInstallLocations, StringComparison.CurrentCultureIgnoreCase))\r\n                        continue;\r\n\r\n                    var questionableDirName = subDirectory.Name.ContainsAny(UninstallToolsGlobalConfig.QuestionableDirectoryNames, StringComparison.CurrentCultureIgnoreCase);\r\n\r\n                    var nameIsUsed = subDirectory.Name.ContainsAny(_otherNames, StringComparison.CurrentCultureIgnoreCase);\r\n\r\n                    var allFiles = subDirectory.GetFiles(\"*\", SearchOption.AllDirectories);\r\n                    var allFilesContainExe = allFiles.Any(x => WindowsTools.IsExectuable(x.Extension, false, true));\r\n                    var immediateFiles = subDirectory.GetFiles(\"*\", SearchOption.TopDirectoryOnly);\r\n\r\n                    ConfidenceRecord resultRecord;\r\n\r\n                    if (immediateFiles.Any())\r\n                    {\r\n                        // No executables, MAYBE safe to remove\r\n                        // Executables present, bad idea to remove\r\n                        resultRecord = allFilesContainExe ? ConfidenceRecords.ExecutablesArePresent : ConfidenceRecords.FilesArePresent;\r\n                    }\r\n                    else if (!allFiles.Any())\r\n                    {\r\n                        // Empty folder, safe to remove\r\n                        resultRecord = ConfidenceRecords.IsEmptyFolder;\r\n                    }\r\n                    else\r\n                    {\r\n                        // This folder is empty, but insides contain stuff\r\n                        resultRecord = allFilesContainExe ? ConfidenceRecords.ExecutablesArePresent : ConfidenceRecords.FilesArePresent;\r\n\r\n                        if (level < 1 && !questionableDirName && !nameIsUsed)\r\n                        {\r\n                            FindJunkRecursively(returnList, subDirectory, level + 1);\r\n                        }\r\n                    }\r\n\r\n                    if (resultRecord == null) continue;\r\n\r\n                    var newNode = new FileSystemJunk(subDirectory, null, this);\r\n                    newNode.Confidence.Add(resultRecord);\r\n\r\n                    if (subDirectory.Name.ContainsAny(_otherPublishers, StringComparison.CurrentCultureIgnoreCase))\r\n                        newNode.Confidence.Add(ConfidenceRecords.PublisherIsStillUsed);\r\n\r\n                    if (nameIsUsed)\r\n                        newNode.Confidence.Add(ConfidenceRecords.ProgramNameIsStillUsed);\r\n\r\n                    if (questionableDirName)\r\n                        newNode.Confidence.Add(ConfidenceRecords.QuestionableDirectoryName);\r\n\r\n                    if (allFiles.Length > 100)\r\n                        newNode.Confidence.Add(ConfidenceRecords.ManyFilesArePresent);\r\n\r\n                    // Remove 2 points for every sublevel\r\n                    newNode.Confidence.Add(level * -2);\r\n\r\n                    if (!subDirectory.GetDirectories().Any())\r\n                        newNode.Confidence.Add(ConfidenceRecords.FolderHasNoSubdirectories);\r\n\r\n                    returnList.Add(newNode);\r\n                }\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                if (Debugger.IsAttached) throw;\r\n                Trace.WriteLine($\"Crash while scanning for {CategoryName} junk: {ex}\");\r\n            }\r\n        }\r\n\r\n        public void Setup(ICollection<ApplicationUninstallerEntry> allUninstallers)\r\n        {\r\n            _programFilesDirectories = UninstallToolsGlobalConfig.GetProgramFilesDirectories(true);\r\n\r\n            var applicationUninstallerEntries = allUninstallers as IList<ApplicationUninstallerEntry> ?? allUninstallers.ToList();\r\n\r\n            _otherInstallLocations =\r\n                applicationUninstallerEntries.SelectMany(x => new[] { x.InstallLocation, x.UninstallerLocation })\r\n                    .Where(x => x.IsNotEmpty()).Distinct().ToArray();\r\n\r\n            _otherPublishers =\r\n                applicationUninstallerEntries.Select(x => x.PublisherTrimmed).Where(x => x != null && x.Length > 3)\r\n                    .Distinct().ToArray();\r\n            _otherNames =\r\n                applicationUninstallerEntries.Select(x => x.DisplayNameTrimmed).Where(x => x != null && x.Length > 3)\r\n                    .Distinct().ToArray();\r\n        }\r\n\r\n        public string CategoryName => Localisation.Junk_ProgramFilesOrphans_GroupName;\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/KnownFolders.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\n\nnamespace UninstallTools;\n\ninternal static class KnownFolders\n{\n    /// <summary>\n    /// GUIDs can be found here: https://learn.microsoft.com/en-us/windows/win32/shell/knownfolderid\n    /// </summary>\n    public static string GetKnownFolderPath(Guid rfid)\n    {\n        IntPtr pPath;\n        SHGetKnownFolderPath(rfid, 0, IntPtr.Zero, out pPath);\n\n        var path = Marshal.PtrToStringUni(pPath);\n        Marshal.FreeCoTaskMem(pPath);\n        return path;\n    }\n\n    [DllImport(\"shell32.dll\")]\n    private static extern int SHGetKnownFolderPath([MarshalAs(UnmanagedType.LPStruct)] Guid rfid,\n                                                   uint dwFlags, IntPtr hToken, out IntPtr pszPath);\n}\n"
  },
  {
    "path": "source/UninstallTools/ListGenerationProgress.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nnamespace UninstallTools\r\n{\r\n    public class ListGenerationProgress\r\n    {\r\n        internal ListGenerationProgress(int currentCount, int totalCount, string message)\r\n        {\r\n            TotalCount = totalCount;\r\n            Message = message;\r\n            CurrentCount = currentCount;\r\n        }\r\n\r\n        public int CurrentCount { get; internal set; }\r\n\r\n        /// <summary>\r\n        /// -1 if unknown\r\n        /// </summary>\r\n        public int TotalCount { get; internal set; }\r\n\r\n        public string Message { get; internal set; }\r\n\r\n        //public GetUninstallerListProgress Clone() => (GetUninstallerListProgress)MemberwiseClone();\r\n\r\n        public ListGenerationProgress Inner { get; internal set; }\r\n\r\n        public delegate void ListGenerationCallback(ListGenerationProgress progressReport);\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Lists/ComparisonMethod.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing Klocman.Localising;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Lists\r\n{\r\n    public enum ComparisonMethod\r\n    {\r\n        [LocalisedName(typeof (Localisation), \"FilterComparisonMethod_Equals\")] Equals,\r\n        [LocalisedName(typeof (Localisation), \"FilterComparisonMethod_Any\")] Any,\r\n        [LocalisedName(typeof (Localisation), \"FilterComparisonMethod_Contains\")] Contains,\r\n        [LocalisedName(typeof (Localisation), \"FilterComparisonMethod_StartsWith\")] StartsWith,\r\n        [LocalisedName(typeof (Localisation), \"FilterComparisonMethod_EndsWith\")] EndsWith,\r\n        [LocalisedName(typeof (Localisation), \"FilterComparisonMethod_Regex\")] Regex\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Lists/ComparisonTargetAttribute.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\n\r\nnamespace UninstallTools.Lists\r\n{\r\n    internal class ComparisonTargetAttribute : Attribute\r\n    {\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Lists/ComparisonTargetInfo.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing Klocman.Localising;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Lists\r\n{\r\n    public sealed class ComparisonTargetInfo\r\n    {\r\n        static ComparisonTargetInfo()\r\n        {\r\n            var targets = typeof(ApplicationUninstallerEntry)\r\n                .GetProperties(BindingFlags.Instance | BindingFlags.Public)\r\n                .Where(p => p.GetCustomAttributes(typeof(ComparisonTargetAttribute), false).Any());\r\n\r\n            var boolType = typeof(bool);\r\n            var boolStrings = new[] { true.ToString(), false.ToString() };\r\n\r\n            var results = new List<ComparisonTargetInfo>();\r\n\r\n            foreach (var propertyInfo in targets)\r\n            {\r\n                string[] possibleStrings = null;\r\n                var targetType = propertyInfo.PropertyType;\r\n                if (targetType == boolType)\r\n                    possibleStrings = boolStrings;\r\n                else if (targetType.IsEnum)\r\n                    possibleStrings = Enum.GetNames(targetType).OrderBy(x => x).ToArray();\r\n\r\n                results.Add(new ComparisonTargetInfo(propertyInfo.Name, propertyInfo.GetLocalisedName(),\r\n                    entry => propertyInfo.GetValue(entry, null)?.ToString(), possibleStrings));\r\n            }\r\n\r\n            ComparisonTargets = results;\r\n\r\n            AllTargetComparison = new ComparisonTargetInfo(null, Localisation.ComparisonTargetInfo_AllProperties, null);\r\n        }\r\n\r\n        private ComparisonTargetInfo(string id, string displayName, Func<ApplicationUninstallerEntry, string> getter,\r\n            string[] possibleStrings = null)\r\n        {\r\n            Getter = getter;\r\n            PossibleStrings = possibleStrings;\r\n            Id = id;\r\n            DisplayName = displayName;\r\n        }\r\n\r\n        internal static ComparisonTargetInfo AllTargetComparison { get; }\r\n        internal static IEnumerable<ComparisonTargetInfo> ComparisonTargets { get; }\r\n\r\n        public string Id { get; }\r\n        public string DisplayName { get; }\r\n        public Func<ApplicationUninstallerEntry, string> Getter { get; }\r\n\r\n        /// <summary>\r\n        ///     If not null this target has a very limited amount of valid matches.\r\n        ///     It will not be included in an overall search in that case.\r\n        /// </summary>\r\n        public string[] PossibleStrings { get; }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Lists/Filter.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Lists\r\n{\r\n    public class Filter : ITestEntry\r\n    {\r\n        public Filter()\r\n        {\r\n        }\r\n\r\n        public Filter(string name, string filterText)\r\n        {\r\n            if (!string.IsNullOrEmpty(name))\r\n                Name = name;\r\n\r\n            if (string.IsNullOrEmpty(filterText))\r\n                throw new ArgumentException(Localisation.UninstallListItem_ValueEmpty, nameof(filterText));\r\n\r\n            if (filterText.ContainsAny(StringTools.NewLineChars, StringComparison.Ordinal))\r\n                throw new ArgumentException(Localisation.UninstallListItem_NewLineInValue, nameof(filterText));\r\n\r\n            ComparisonEntries.Add(new FilterCondition { FilterText = filterText });\r\n        }\r\n\r\n        public Filter(string name, bool exclude, params FilterCondition[] conditions)\r\n        {\r\n            if (!string.IsNullOrEmpty(name))\r\n                Name = name;\r\n            Exclude = exclude;\r\n            ComparisonEntries.AddRange(conditions);\r\n        }\r\n\r\n        public string Name { get; set; } = Localisation.UninstallListEditor_NewFilter;\r\n\r\n        /// <summary>\r\n        /// Exclude items matched by this entry from results of the parent uninstall list\r\n        /// </summary>\r\n        public bool Exclude { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Comparison rules of this filter\r\n        /// </summary>\r\n        public List<FilterCondition> ComparisonEntries { get; set; } = new();\r\n\r\n\r\n        /// <summary>\r\n        ///     Test if the input matches this filter. Returns null if it is impossible to determine.\r\n        /// </summary>\r\n        public bool? TestEntry(ApplicationUninstallerEntry input)\r\n        {\r\n            if (!Enabled || input == null) return null;\r\n\r\n            var filteredCompEntries = ComparisonEntries.Where(x => !string.IsNullOrEmpty(x.FilterText)).ToList();\r\n            if (filteredCompEntries.Count < 1) return null;\r\n\r\n            var tests = filteredCompEntries.Select(x => x.TestEntry(input)).Where(x => x.HasValue).Select(x => x.Value).ToList();\r\n            if (tests.Count < 1) return null;\r\n\r\n            return tests.All(x => x);\r\n        }\r\n\r\n        public bool Enabled { get; set; } = true;\r\n\r\n        public override string ToString()\r\n        {\r\n            return $\"{Name} | {ExcludeToString(Exclude)}\";\r\n        }\r\n\r\n        public static string ExcludeToString(bool exclude)\r\n        {\r\n            return exclude ? \"Exclude\" : \"Include\";\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Lists/FilterCondition.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Linq;\r\nusing System.Text.RegularExpressions;\r\nusing Klocman.Extensions;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Lists\r\n{\r\n    public sealed class FilterCondition : ITestEntry, ICloneable\r\n    {\r\n        public FilterCondition() : this(null)\r\n        {\r\n        }\r\n\r\n        public FilterCondition(string filterText) : this (filterText, ComparisonMethod.Any, null)\r\n        {\r\n        }\r\n\r\n        public FilterCondition(string filterText, ComparisonMethod comparisonMethod, string targetPropertyName)\r\n        {\r\n            if (string.IsNullOrEmpty(targetPropertyName))\r\n                TargetProperty = ComparisonTargetInfo.AllTargetComparison;\r\n            else\r\n                TargetPropertyId = targetPropertyName;\r\n\r\n            FilterText = filterText ?? Localisation.UninstallListEditor_NewCondition;\r\n            ComparisonMethod = comparisonMethod;\r\n        }\r\n        \r\n        public object Clone()\r\n        {\r\n            return new FilterCondition (FilterText, ComparisonMethod, null)\r\n            {\r\n                TargetProperty = TargetProperty\r\n            };\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Negate results of TestString, null is not affected.\r\n        /// </summary>\r\n        public bool InvertResults { get; set; }\r\n\r\n        public ComparisonMethod ComparisonMethod { get; set; }\r\n        public string FilterText { get; set; }\r\n\r\n        public string TargetPropertyId\r\n        {\r\n            get { return TargetProperty?.Id ?? string.Empty; }\r\n            set\r\n            {\r\n                if (string.IsNullOrEmpty(value))\r\n                {\r\n                    TargetProperty = ComparisonTargetInfo.AllTargetComparison;\r\n                }\r\n                else\r\n                {\r\n                    TargetProperty = ComparisonTargetInfo.ComparisonTargets\r\n                        .FirstOrDefault(x => x.Id.Equals(value, StringComparison.InvariantCultureIgnoreCase))\r\n                                     ?? ComparisonTargetInfo.AllTargetComparison;\r\n                }\r\n            }\r\n        }\r\n\r\n        private ComparisonTargetInfo TargetProperty { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Test if the input matches this condition. Returns null if it is impossible to determine.\r\n        /// </summary>\r\n        public bool? TestEntry(ApplicationUninstallerEntry input)\r\n        {\r\n            if (!Enabled) return null;\r\n\r\n            var targets = ReferenceEquals(TargetProperty, ComparisonTargetInfo.AllTargetComparison)\r\n                ? ComparisonTargetInfo.ComparisonTargets.Where(x => x.PossibleStrings == null)\r\n                    .Select(x => x.Getter(input))\r\n                : new[] {TargetProperty.Getter(input)};\r\n\r\n            bool? result = null;\r\n\r\n            foreach (var target in targets.Where(target => !string.IsNullOrEmpty(target)))\r\n            {\r\n                try\r\n                {\r\n                    switch (ComparisonMethod)\r\n                    {\r\n                        case ComparisonMethod.Equals:\r\n                            result = target.Equals(FilterText, StringComparison.InvariantCultureIgnoreCase);\r\n                            break;\r\n\r\n                        case ComparisonMethod.Any:\r\n                            result = target.ContainsAny(\r\n                                FilterText.Split((char[]) null, StringSplitOptions.RemoveEmptyEntries),\r\n                                StringComparison.InvariantCultureIgnoreCase);\r\n                            break;\r\n\r\n                        case ComparisonMethod.StartsWith:\r\n                            result = target.StartsWith(FilterText, StringComparison.InvariantCultureIgnoreCase);\r\n                            break;\r\n\r\n                        case ComparisonMethod.EndsWith:\r\n                            result = target.EndsWith(FilterText, StringComparison.InvariantCultureIgnoreCase);\r\n                            break;\r\n\r\n                        case ComparisonMethod.Contains:\r\n                            result = target.Contains(FilterText, StringComparison.InvariantCultureIgnoreCase);\r\n                            break;\r\n\r\n                        case ComparisonMethod.Regex:\r\n                            result = Regex.IsMatch(target, FilterText, RegexOptions.CultureInvariant);\r\n                            break;\r\n\r\n                        default:\r\n                            throw new InvalidOperationException(\"Unknown FilterComparisonMethod\");\r\n                    }\r\n                }\r\n                catch (InvalidOperationException)\r\n                {\r\n                    throw;\r\n                }\r\n                catch\r\n                {\r\n                    //result = null;\r\n                }\r\n\r\n                if (result == true)\r\n                    return !InvertResults;\r\n            }\r\n\r\n            if (!result.HasValue) return null;\r\n            return InvertResults ? !result.Value : result.Value;\r\n        }\r\n\r\n        public bool Enabled { get; set; } = true;\r\n\r\n        public override string ToString()\r\n        {\r\n            return $\"{FilterText}\"; // | {ComparisonMethod.GetLocalisedName()} {TargetProperty.DisplayName}\";\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Lists/ITestEntry.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nnamespace UninstallTools.Lists\r\n{\r\n    public interface ITestEntry\r\n    {\r\n        /// <summary>\r\n        ///     Test if the input matches this filter. Returns null if result is impossible to determine or if filter is disabled.\r\n        ///     If there are only exclude filters assumes that everything is included.\r\n        /// </summary>\r\n        bool? TestEntry(ApplicationUninstallerEntry input);\r\n\r\n        bool Enabled { get; set; }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Lists/UninstallList.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Xml;\r\nusing System.Xml.Serialization;\r\n\r\nnamespace UninstallTools.Lists\r\n{\r\n    public class UninstallList : ITestEntry\r\n    {\r\n        public UninstallList()\r\n        {\r\n        }\r\n\r\n        public UninstallList(IEnumerable<Filter> items)\r\n        {\r\n            AddItems(items);\r\n        }\r\n\r\n        public List<Filter> Filters { get; set; } = new();\r\n\r\n        /// <summary>\r\n        ///     Test if the input matches this filter. Returns null if it did not hit any filter.\r\n        ///     If there are only exclude filters this assumes that everything is included.\r\n        /// </summary>\r\n        public bool? TestEntry(ApplicationUninstallerEntry input)\r\n        {\r\n            if (!Enabled || input == null || Filters.Count < 1) return null;\r\n\r\n            var excludes = new List<Filter>();\r\n            var includes = new List<Filter>();\r\n\r\n            foreach (var uninstallListItem in Filters)\r\n            {\r\n                if (uninstallListItem.Exclude)\r\n                    excludes.Add(uninstallListItem);\r\n                else\r\n                    includes.Add(uninstallListItem);\r\n            }\r\n\r\n            bool? excluded = null;\r\n\r\n            foreach (var uninstallListItem in excludes)\r\n            {\r\n                if (uninstallListItem.TestEntry(input) == true)\r\n                    return false;\r\n                excluded = false;\r\n            }\r\n\r\n            bool? included = null;\r\n\r\n            foreach (var uninstallListItem in includes)\r\n            {\r\n                if (uninstallListItem.TestEntry(input) == true)\r\n                {\r\n                    included = true;\r\n                    break;\r\n                }\r\n                included = false;\r\n            }\r\n\r\n            if (!included.HasValue)\r\n                return excluded.HasValue ? true : null;\r\n            return included.Value;\r\n        }\r\n\r\n        public bool Enabled { get; set; } = true;\r\n\r\n        public static UninstallList ReadFromFile(string fileName)\r\n        {\r\n            var serializer = new XmlSerializer(typeof (UninstallList));\r\n            using (var reader = new XmlTextReader(fileName))\r\n            {\r\n                return serializer.Deserialize(reader) as UninstallList;\r\n            }\r\n        }\r\n\r\n        public void AddItems(IEnumerable<string> items)\r\n        {\r\n            Filters.AddRange(items.Select(x => new Filter(null, x)));\r\n        }\r\n\r\n        public void Add(Filter item)\r\n        {\r\n            Filters.Add(item);\r\n        }\r\n\r\n        public void AddItems(IEnumerable<Filter> items)\r\n        {\r\n            Filters.AddRange(items);\r\n        }\r\n\r\n        public void SaveToFile(string fileName)\r\n        {\r\n            var serializer = new XmlSerializer(typeof (UninstallList));\r\n            using (var writer = new XmlTextWriter(fileName, Encoding.Unicode))\r\n            {\r\n                writer.Formatting = Formatting.Indented;\r\n                serializer.Serialize(writer, this);\r\n            }\r\n        }\r\n\r\n        internal void Remove(Filter item)\r\n        {\r\n            if (Filters.Contains(item))\r\n                Filters.Remove(item);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace UninstallTools.Properties {\r\n    using System;\r\n    \r\n    \r\n    /// <summary>\r\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\r\n    /// </summary>\r\n    // This class was auto-generated by the StronglyTypedResourceBuilder\r\n    // class via a tool like ResGen or Visual Studio.\r\n    // To add or remove a member, edit your .ResX file then rerun ResGen\r\n    // with the /str option, or rebuild your VS project.\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\r\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    internal class Localisation {\r\n        \r\n        private static global::System.Resources.ResourceManager resourceMan;\r\n        \r\n        private static global::System.Globalization.CultureInfo resourceCulture;\r\n        \r\n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\r\n        internal Localisation() {\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Returns the cached ResourceManager instance used by this class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Resources.ResourceManager ResourceManager {\r\n            get {\r\n                if (object.ReferenceEquals(resourceMan, null)) {\r\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"UninstallTools.Properties.Localisation\", typeof(Localisation).Assembly);\r\n                    resourceMan = temp;\r\n                }\r\n                return resourceMan;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Overrides the current thread's CurrentUICulture property for all\r\n        ///   resource lookups using this strongly typed resource class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Globalization.CultureInfo Culture {\r\n            get {\r\n                return resourceCulture;\r\n            }\r\n            set {\r\n                resourceCulture = value;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Webpage.\r\n        /// </summary>\r\n        internal static string AboutUrl {\r\n            get {\r\n                return ResourceManager.GetString(\"AboutUrl\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Product code.\r\n        /// </summary>\r\n        internal static string BundleProviderKey {\r\n            get {\r\n                return ResourceManager.GetString(\"BundleProviderKey\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstall in Chocolatey.\r\n        /// </summary>\r\n        internal static string ChocolateyFactory_UninstallInChocolateyJunkName {\r\n            get {\r\n                return ResourceManager.GetString(\"ChocolateyFactory_UninstallInChocolateyJunkName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Comment.\r\n        /// </summary>\r\n        internal static string Comment {\r\n            get {\r\n                return ResourceManager.GetString(\"Comment\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to All properties.\r\n        /// </summary>\r\n        internal static string ComparisonTargetInfo_AllProperties {\r\n            get {\r\n                return ResourceManager.GetString(\"ComparisonTargetInfo_AllProperties\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Bad.\r\n        /// </summary>\r\n        internal static string Confidence_Bad {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_Bad\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Located directly inside a Known Folder.\r\n        /// </summary>\r\n        internal static string Confidence_DirectlyInsideKnownFolder {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_DirectlyInsideKnownFolder\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Good.\r\n        /// </summary>\r\n        internal static string Confidence_Good {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_Good\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Empty folder.\r\n        /// </summary>\r\n        internal static string Confidence_PF_EmptyFolder {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_PF_EmptyFolder\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Executables are present.\r\n        /// </summary>\r\n        internal static string Confidence_PF_ExecsPresent {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_PF_ExecsPresent\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Files are present.\r\n        /// </summary>\r\n        internal static string Confidence_PF_FilesPresent {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_PF_FilesPresent\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Many files are present.\r\n        /// </summary>\r\n        internal static string Confidence_PF_ManyFilesPresent {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_PF_ManyFilesPresent\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Program name is recognized.\r\n        /// </summary>\r\n        internal static string Confidence_PF_NameIsUsed {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_PF_NameIsUsed\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to No sub directories.\r\n        /// </summary>\r\n        internal static string Confidence_PF_NoSubdirs {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_PF_NoSubdirs\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Publisher is recognized.\r\n        /// </summary>\r\n        internal static string Confidence_PF_PublisherIsUsed {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_PF_PublisherIsUsed\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Questionable.\r\n        /// </summary>\r\n        internal static string Confidence_Questionable {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_Questionable\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Entry will be ran only once.\r\n        /// </summary>\r\n        internal static string Confidence_Startup_IsRunOnce {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_Startup_IsRunOnce\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Entry is matched to the application.\r\n        /// </summary>\r\n        internal static string Confidence_Startup_StartupMatched {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_Startup_StartupMatched\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Unknown.\r\n        /// </summary>\r\n        internal static string Confidence_Unknown {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_Unknown\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Might belong to a different app with a similar name.\r\n        /// </summary>\r\n        internal static string Confidence_UsedBySimilarNamedApp {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_UsedBySimilarNamedApp\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Very good.\r\n        /// </summary>\r\n        internal static string Confidence_VeryGood {\r\n            get {\r\n                return ResourceManager.GetString(\"Confidence_VeryGood\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Directory is, or will be empty after removing junk..\r\n        /// </summary>\r\n        internal static string ConfidencePart_AllSubdirsMatched {\r\n            get {\r\n                return ResourceManager.GetString(\"ConfidencePart_AllSubdirsMatched\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Company name did not match.\r\n        /// </summary>\r\n        internal static string ConfidencePart_CompanyNameDidNotMatch {\r\n            get {\r\n                return ResourceManager.GetString(\"ConfidencePart_CompanyNameDidNotMatch\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Company name matched.\r\n        /// </summary>\r\n        internal static string ConfidencePart_CompanyNameMatch {\r\n            get {\r\n                return ResourceManager.GetString(\"ConfidencePart_CompanyNameMatch\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Directory is used by other installed applications.\r\n        /// </summary>\r\n        internal static string ConfidencePart_DirectoryStillUsed {\r\n            get {\r\n                return ResourceManager.GetString(\"ConfidencePart_DirectoryStillUsed\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Item is explicitly mentioned in the uninstaller.\r\n        /// </summary>\r\n        internal static string ConfidencePart_ExplicitConnection {\r\n            get {\r\n                return ResourceManager.GetString(\"ConfidencePart_ExplicitConnection\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Removal of Store App data is problematic.\r\n        /// </summary>\r\n        internal static string ConfidencePart_IsStoreApp {\r\n            get {\r\n                return ResourceManager.GetString(\"ConfidencePart_IsStoreApp\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Registry entry of the uninstaller.\r\n        /// </summary>\r\n        internal static string ConfidencePart_IsUninstallerRegistryKey {\r\n            get {\r\n                return ResourceManager.GetString(\"ConfidencePart_IsUninstallerRegistryKey\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Item seems to be a whole publisher category.\r\n        /// </summary>\r\n        internal static string ConfidencePart_ItemNameEqualsCompanyName {\r\n            get {\r\n                return ResourceManager.GetString(\"ConfidencePart_ItemNameEqualsCompanyName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Product name did not match very well.\r\n        /// </summary>\r\n        internal static string ConfidencePart_ProductNameDodgyMatch {\r\n            get {\r\n                return ResourceManager.GetString(\"ConfidencePart_ProductNameDodgyMatch\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Product name matched perfectly.\r\n        /// </summary>\r\n        internal static string ConfidencePart_ProductNamePerfectMatch {\r\n            get {\r\n                return ResourceManager.GetString(\"ConfidencePart_ProductNamePerfectMatch\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Directory name is questionable.\r\n        /// </summary>\r\n        internal static string ConfidencePart_QuestionableDirectoryName {\r\n            get {\r\n                return ResourceManager.GetString(\"ConfidencePart_QuestionableDirectoryName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Displayed icon.\r\n        /// </summary>\r\n        internal static string DisplayIcon {\r\n            get {\r\n                return ResourceManager.GetString(\"DisplayIcon\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Display name.\r\n        /// </summary>\r\n        internal static string DisplayName {\r\n            get {\r\n                return ResourceManager.GetString(\"DisplayName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Trimmed display name.\r\n        /// </summary>\r\n        internal static string DisplayNameTrimmed {\r\n            get {\r\n                return ResourceManager.GetString(\"DisplayNameTrimmed\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Version.\r\n        /// </summary>\r\n        internal static string DisplayVersion {\r\n            get {\r\n                return ResourceManager.GetString(\"DisplayVersion\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Invalid path.\r\n        /// </summary>\r\n        internal static string Error_InvalidPath {\r\n            get {\r\n                return ResourceManager.GetString(\"Error_InvalidPath\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Invalid or unknown startup registry key(s):.\r\n        /// </summary>\r\n        internal static string Error_InvalidRegKeys {\r\n            get {\r\n                return ResourceManager.GetString(\"Error_InvalidRegKeys\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Estimated size.\r\n        /// </summary>\r\n        internal static string EstimatedSize {\r\n            get {\r\n                return ResourceManager.GetString(\"EstimatedSize\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Contains any.\r\n        /// </summary>\r\n        internal static string FilterComparisonMethod_Any {\r\n            get {\r\n                return ResourceManager.GetString(\"FilterComparisonMethod_Any\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Contains.\r\n        /// </summary>\r\n        internal static string FilterComparisonMethod_Contains {\r\n            get {\r\n                return ResourceManager.GetString(\"FilterComparisonMethod_Contains\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Ends with.\r\n        /// </summary>\r\n        internal static string FilterComparisonMethod_EndsWith {\r\n            get {\r\n                return ResourceManager.GetString(\"FilterComparisonMethod_EndsWith\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Equals.\r\n        /// </summary>\r\n        internal static string FilterComparisonMethod_Equals {\r\n            get {\r\n                return ResourceManager.GetString(\"FilterComparisonMethod_Equals\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Regex.\r\n        /// </summary>\r\n        internal static string FilterComparisonMethod_Regex {\r\n            get {\r\n                return ResourceManager.GetString(\"FilterComparisonMethod_Regex\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Starts with.\r\n        /// </summary>\r\n        internal static string FilterComparisonMethod_StartsWith {\r\n            get {\r\n                return ResourceManager.GetString(\"FilterComparisonMethod_StartsWith\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Can start automatically.\r\n        /// </summary>\r\n        internal static string HasStartupEntries {\r\n            get {\r\n                return ResourceManager.GetString(\"HasStartupEntries\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Date of installation.\r\n        /// </summary>\r\n        internal static string InstallDate {\r\n            get {\r\n                return ResourceManager.GetString(\"InstallDate\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Installation location.\r\n        /// </summary>\r\n        internal static string InstallLocation {\r\n            get {\r\n                return ResourceManager.GetString(\"InstallLocation\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Installation source.\r\n        /// </summary>\r\n        internal static string InstallSource {\r\n            get {\r\n                return ResourceManager.GetString(\"InstallSource\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Is a 64bit application.\r\n        /// </summary>\r\n        internal static string Is64Bit {\r\n            get {\r\n                return ResourceManager.GetString(\"Is64Bit\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Is unregistered.\r\n        /// </summary>\r\n        internal static string IsOrphaned {\r\n            get {\r\n                return ResourceManager.GetString(\"IsOrphaned\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Is protected.\r\n        /// </summary>\r\n        internal static string IsProtected {\r\n            get {\r\n                return ResourceManager.GetString(\"IsProtected\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Application is registered.\r\n        /// </summary>\r\n        internal static string IsRegistered {\r\n            get {\r\n                return ResourceManager.GetString(\"IsRegistered\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Is an update.\r\n        /// </summary>\r\n        internal static string IsUpdate {\r\n            get {\r\n                return ResourceManager.GetString(\"IsUpdate\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Is valid.\r\n        /// </summary>\r\n        internal static string IsValid {\r\n            get {\r\n                return ResourceManager.GetString(\"IsValid\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Is a web browser.\r\n        /// </summary>\r\n        internal static string IsWebBrowser {\r\n            get {\r\n                return ResourceManager.GetString(\"IsWebBrowser\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Application compatibility.\r\n        /// </summary>\r\n        internal static string Junk_AppCompat_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_AppCompat_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Audio policy config.\r\n        /// </summary>\r\n        internal static string Junk_AudioPolicy_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_AudioPolicy_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to CLSID classes.\r\n        /// </summary>\r\n        internal static string Junk_Clsid_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_Clsid_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Debug Tracing/Logging Configuration.\r\n        /// </summary>\r\n        internal static string Junk_DebugTracing_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_DebugTracing_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Files and directories.\r\n        /// </summary>\r\n        internal static string Junk_Drive_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_Drive_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Event Log logs.\r\n        /// </summary>\r\n        internal static string Junk_EventLog_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_EventLog_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Firewall rule.\r\n        /// </summary>\r\n        internal static string Junk_FirewallRule_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_FirewallRule_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Installed folder list.\r\n        /// </summary>\r\n        internal static string Junk_InstalledFolders_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_InstalledFolders_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Program Files orphan.\r\n        /// </summary>\r\n        internal static string Junk_ProgramFilesOrphans_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_ProgramFilesOrphans_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Finishing up....\r\n        /// </summary>\r\n        internal static string Junk_Progress_Finishing {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_Progress_Finishing\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Setting up junk scanners....\r\n        /// </summary>\r\n        internal static string Junk_Progress_Startup {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_Progress_Startup\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Registry.\r\n        /// </summary>\r\n        internal static string Junk_Registry_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_Registry_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Shortcut.\r\n        /// </summary>\r\n        internal static string Junk_Shortcut_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_Shortcut_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Startup.\r\n        /// </summary>\r\n        internal static string Junk_Startup_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_Startup_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Tracing information.\r\n        /// </summary>\r\n        internal static string Junk_Tracing_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_Tracing_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstaller reference.\r\n        /// </summary>\r\n        internal static string Junk_UninstallerKey_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_UninstallerKey_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstaller location.\r\n        /// </summary>\r\n        internal static string Junk_UninstallerLocation_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_UninstallerLocation_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to User assist.\r\n        /// </summary>\r\n        internal static string Junk_UserAssist_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_UserAssist_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Windows Error Reporting reports.\r\n        /// </summary>\r\n        internal static string Junk_WerReports_GroupName {\r\n            get {\r\n                return ResourceManager.GetString(\"Junk_WerReports_GroupName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Confidence.\r\n        /// </summary>\r\n        internal static string JunkRemover_Confidence {\r\n            get {\r\n                return ResourceManager.GetString(\"JunkRemover_Confidence\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstall worker stopped prematurely.\r\n        /// </summary>\r\n        internal static string ManagerError_PrematureWorkerStop {\r\n            get {\r\n                return ResourceManager.GetString(\"ManagerError_PrematureWorkerStop\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Skipped by user.\r\n        /// </summary>\r\n        internal static string ManagerError_Skipped {\r\n            get {\r\n                return ResourceManager.GetString(\"ManagerError_Skipped\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Modify path.\r\n        /// </summary>\r\n        internal static string ModifyPath {\r\n            get {\r\n                return ResourceManager.GetString(\"ModifyPath\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Parent uninstaller.\r\n        /// </summary>\r\n        internal static string ParentKeyName {\r\n            get {\r\n                return ResourceManager.GetString(\"ParentKeyName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Scanning application stores....\r\n        /// </summary>\r\n        internal static string Progress_AppStores {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_AppStores\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Searching for Chocolatey packages.\r\n        /// </summary>\r\n        internal static string Progress_AppStores_Chocolatey {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_AppStores_Chocolatey\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Searching for Oculus Apps.\r\n        /// </summary>\r\n        internal static string Progress_AppStores_Oculus {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_AppStores_Oculus\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Searching for Scoop packages.\r\n        /// </summary>\r\n        internal static string Progress_AppStores_Scoop {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_AppStores_Scoop\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Searching for Steam Apps.\r\n        /// </summary>\r\n        internal static string Progress_AppStores_Steam {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_AppStores_Steam\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Searching for application templates.\r\n        /// </summary>\r\n        internal static string Progress_AppStores_Templates {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_AppStores_Templates\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Searching for Windows Features.\r\n        /// </summary>\r\n        internal static string Progress_AppStores_WinFeatures {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_AppStores_WinFeatures\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Searching for Windows Store Apps.\r\n        /// </summary>\r\n        internal static string Progress_AppStores_WinStore {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_AppStores_WinStore\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Searching for Windows Updates.\r\n        /// </summary>\r\n        internal static string Progress_AppStores_WinUpdates {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_AppStores_WinUpdates\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Scanning drives for applications....\r\n        /// </summary>\r\n        internal static string Progress_DriveScan {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_DriveScan\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Gathering directories.\r\n        /// </summary>\r\n        internal static string Progress_DriveScan_Gathering {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_DriveScan_Gathering\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Generating missing uninstaller information....\r\n        /// </summary>\r\n        internal static string Progress_GatherUninstallerInfo {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_GatherUninstallerInfo\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Generating missing information....\r\n        /// </summary>\r\n        internal static string Progress_GeneratingInfo {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_GeneratingInfo\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Merging discovered applications....\r\n        /// </summary>\r\n        internal static string Progress_Merging {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_Merging\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Merging applications from drives.\r\n        /// </summary>\r\n        internal static string Progress_Merging_Drives {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_Merging_Drives\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Merging applications from stores.\r\n        /// </summary>\r\n        internal static string Progress_Merging_Stores {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_Merging_Stores\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Scanning installed MSI products....\r\n        /// </summary>\r\n        internal static string Progress_MSI {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_MSI\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Found {0} application GUIDs.\r\n        /// </summary>\r\n        internal static string Progress_MSI_sub {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_MSI_sub\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Scanning registry for uninstallers....\r\n        /// </summary>\r\n        internal static string Progress_Registry {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_Registry\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Gathering registry keys.\r\n        /// </summary>\r\n        internal static string Progress_Registry_Gathering {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_Registry_Gathering\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Processing {0}.\r\n        /// </summary>\r\n        internal static string Progress_Registry_Processing {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_Registry_Processing\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Searching for start-up entries.\r\n        /// </summary>\r\n        internal static string Progress_Startup {\r\n            get {\r\n                return ResourceManager.GetString(\"Progress_Startup\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Publisher name.\r\n        /// </summary>\r\n        internal static string Publisher {\r\n            get {\r\n                return ResourceManager.GetString(\"Publisher\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Trimmed publisher name.\r\n        /// </summary>\r\n        internal static string PublisherTrimmed {\r\n            get {\r\n                return ResourceManager.GetString(\"PublisherTrimmed\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Quiet uninstall is possible.\r\n        /// </summary>\r\n        internal static string QuietUninstallPossible {\r\n            get {\r\n                return ResourceManager.GetString(\"QuietUninstallPossible\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Quiet uninstall string.\r\n        /// </summary>\r\n        internal static string QuietUninstallString {\r\n            get {\r\n                return ResourceManager.GetString(\"QuietUninstallString\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Registry key name.\r\n        /// </summary>\r\n        internal static string RegistryKeyName {\r\n            get {\r\n                return ResourceManager.GetString(\"RegistryKeyName\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Registry path.\r\n        /// </summary>\r\n        internal static string RegistryPath {\r\n            get {\r\n                return ResourceManager.GetString(\"RegistryPath\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Browser Helper Object.\r\n        /// </summary>\r\n        internal static string Startup_Shortname_BrowserHelper {\r\n            get {\r\n                return ResourceManager.GetString(\"Startup_Shortname_BrowserHelper\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Service.\r\n        /// </summary>\r\n        internal static string Startup_ShortName_Service {\r\n            get {\r\n                return ResourceManager.GetString(\"Startup_ShortName_Service\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Task.\r\n        /// </summary>\r\n        internal static string Startup_ShortName_Task {\r\n            get {\r\n                return ResourceManager.GetString(\"Startup_ShortName_Task\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Startup commands.\r\n        /// </summary>\r\n        internal static string StartupEntries {\r\n            get {\r\n                return ResourceManager.GetString(\"StartupEntries\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Failed to enable this entry, the following file was not found:.\r\n        /// </summary>\r\n        internal static string StartupManager_FailedEnable_FileNotFound {\r\n            get {\r\n                return ResourceManager.GetString(\"StartupManager_FailedEnable_FileNotFound\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Loading....\r\n        /// </summary>\r\n        internal static string StartupManager_Loading {\r\n            get {\r\n                return ResourceManager.GetString(\"StartupManager_Loading\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to They will no longer be opened during boot. Make sure the selected items are not required before removing them..\r\n        /// </summary>\r\n        internal static string StartupManager_Message_Delete_Details {\r\n            get {\r\n                return ResourceManager.GetString(\"StartupManager_Message_Delete_Details\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Remove selected programs from startup?.\r\n        /// </summary>\r\n        internal static string StartupManager_Message_Delete_Header {\r\n            get {\r\n                return ResourceManager.GetString(\"StartupManager_Message_Delete_Header\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Startup Manager.\r\n        /// </summary>\r\n        internal static string StartupManager_Message_Delete_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"StartupManager_Message_Delete_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Is a system component.\r\n        /// </summary>\r\n        internal static string SystemComponent {\r\n            get {\r\n                return ResourceManager.GetString(\"SystemComponent\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstaller file name.\r\n        /// </summary>\r\n        internal static string UninstallerFullFilename {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerFullFilename\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstaller type.\r\n        /// </summary>\r\n        internal static string UninstallerKind {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerKind\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstaller location.\r\n        /// </summary>\r\n        internal static string UninstallerLocation {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerLocation\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to There is no valid way of uninstalling this entry.\r\n        /// </summary>\r\n        internal static string UninstallError_Nowaytouninstall {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallError_Nowaytouninstall\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstaller returned error code: .\r\n        /// </summary>\r\n        internal static string UninstallError_UninstallerReturnedCode {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallError_UninstallerReturnedCode\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstaller timed out.\r\n        /// </summary>\r\n        internal static string UninstallError_UninstallerTimedOut {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallError_UninstallerTimedOut\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Chocolatey.\r\n        /// </summary>\r\n        internal static string UninstallerType_Chocolatey {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_Chocolatey\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Inno Setup.\r\n        /// </summary>\r\n        internal static string UninstallerType_InnoSetup {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_InnoSetup\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to InstallShield.\r\n        /// </summary>\r\n        internal static string UninstallerType_InstallShield {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_InstallShield\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Windows Installer.\r\n        /// </summary>\r\n        internal static string UninstallerType_Msiexec {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_Msiexec\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Nullsoft Scriptable Install System .\r\n        /// </summary>\r\n        internal static string UninstallerType_NSIS {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_NSIS\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Oculus.\r\n        /// </summary>\r\n        internal static string UninstallerType_Oculus {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_Oculus\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to PowerShell script.\r\n        /// </summary>\r\n        internal static string UninstallerType_PowerShell {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_PowerShell\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to SDBInst.\r\n        /// </summary>\r\n        internal static string UninstallerType_SdbInst {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_SdbInst\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Simple Delete.\r\n        /// </summary>\r\n        internal static string UninstallerType_SimpleDelete {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_SimpleDelete\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Steam.\r\n        /// </summary>\r\n        internal static string UninstallerType_Steam {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_Steam\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Windows Store App.\r\n        /// </summary>\r\n        internal static string UninstallerType_StoreApp {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_StoreApp\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Unknown.\r\n        /// </summary>\r\n        internal static string UninstallerType_Unknown {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_Unknown\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Windows Feature.\r\n        /// </summary>\r\n        internal static string UninstallerType_WindowsFeature {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_WindowsFeature\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Windows Update.\r\n        /// </summary>\r\n        internal static string UninstallerType_WindowsUpdate {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallerType_WindowsUpdate\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Invalid filter.\r\n        /// </summary>\r\n        internal static string UninstallListEditor_InvalidFilter {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallListEditor_InvalidFilter\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to New condition.\r\n        /// </summary>\r\n        internal static string UninstallListEditor_NewCondition {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallListEditor_NewCondition\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to New filter.\r\n        /// </summary>\r\n        internal static string UninstallListEditor_NewFilter {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallListEditor_NewFilter\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to No matches.\r\n        /// </summary>\r\n        internal static string UninstallListEditor_NothingMatched {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallListEditor_NothingMatched\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Value cannot contain newlines.\r\n        /// </summary>\r\n        internal static string UninstallListItem_NewLineInValue {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallListItem_NewLineInValue\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Value cannot be null or empty.\r\n        /// </summary>\r\n        internal static string UninstallListItem_ValueEmpty {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallListItem_ValueEmpty\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstall is possible.\r\n        /// </summary>\r\n        internal static string UninstallPossible {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallPossible\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Completed.\r\n        /// </summary>\r\n        internal static string UninstallStatus_Completed {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallStatus_Completed\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Failed.\r\n        /// </summary>\r\n        internal static string UninstallStatus_Failed {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallStatus_Failed\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Invalid.\r\n        /// </summary>\r\n        internal static string UninstallStatus_Invalid {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallStatus_Invalid\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Paused.\r\n        /// </summary>\r\n        internal static string UninstallStatus_Paused {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallStatus_Paused\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Protected.\r\n        /// </summary>\r\n        internal static string UninstallStatus_Protected {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallStatus_Protected\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Skipped.\r\n        /// </summary>\r\n        internal static string UninstallStatus_Skipped {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallStatus_Skipped\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstalling.\r\n        /// </summary>\r\n        internal static string UninstallStatus_Uninstalling {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallStatus_Uninstalling\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Waiting.\r\n        /// </summary>\r\n        internal static string UninstallStatus_Waiting {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallStatus_Waiting\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstall string.\r\n        /// </summary>\r\n        internal static string UninstallString {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallString\", resourceCulture);\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>صفحة الويب</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>رمز المنتج</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>اسم العرض</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>اسم العرض المشذب</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>الاصدار</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>الحجم المقدر</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>تاريخ التثبيت</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>موقع التثبيت</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>مصدر التثبيت</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>هو تطبيق 64بت</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>محمي</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>هو محدث</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>صالحه</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>تعديل المسار</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>اسم الناشر</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>اسم الناشر المشذب</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت بهدوء ممكن</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>سلسله الغاء التثبيت بهدوء</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>اسم مفتاح مكتب التسجيل</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>مسار مكتب التسجيل</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>هو مكون النظام</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>اسم ملف الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>نوع الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت ممكن</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>الغاء تثبيت السلسلة</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>تعليق</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>الايقونة المعروضة</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>مسار غير صالح</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>ثقة</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>ايقاف عامل الغاء التثبيت قبل الاوان</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>تخطي بواسطة المستخدم</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>موقع الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>لا توجد طريقه صالحه لالغاء تثبيت هذا الادخال</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>اعاده رمز الغاء التثبيت الخطا:</value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>سيئه</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>جيد</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>مشكوك</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>معروف</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>جيد جدا</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>لم يتطابق اسم الشركة</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>اسم الشركة مطابق</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>يتم استخدام الدليل من قبل التطبيقات الاخرى المثبتة</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>المادة المذكورة صراحة في الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>ادخال مكتب التسجيل من الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>يبدو ان المادة عبارة عن فئة ناشر كاملة</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>اسم المنتج لا تتطابق بشكل جيد للغاية</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>مطابقه اسم المنتج تماما</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>اسم الدليل مشكوك فيه</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>مجهول</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>مثبت الوندوز</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inno Setup</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>يتبخر</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>نظام التثبيت النصي القابل للقيم الخالية</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>مكتمل</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>فشل</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>باطل</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>محمي</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>متخطى</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>الانتظار</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>يتم تسجيل التطبيق</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>فلتر باطل</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>فلتر جديد</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>غير متطابقات</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>يحتوي</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>ينتهي مع</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>يساوي</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Regex</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>يبدا</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>ميزة ويندوز</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>يحتوي على اي</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>مسح المحركات للتطبيقات...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>تجميع الدلائل</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>يتم الان مسح مخازن التطبيقات...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>بحث عن قوالب التطبيقات</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>بحث عن تطبيقات البخار</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>بحث عن تطبيقات مخزن وندوز</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>بحث عن ميزات وندوز</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>دمج التطبيقات المكتشفة...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>دمج التطبيقات من المخازن</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>دمج التطبيقات من المحركات </value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>يتم الان انشاء معلومات مفقوده...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>تحديث ويندوز</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>البحث عن تحديثات وندوز</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>قاعده جدار الحماية</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>مساعده المستخدم</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>تقارير عن اخطاء الوندوز</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>يتم الان اعداد الماسحات الضوئية الغير هامه...</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>الانتهاء...</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>توافق التطبيق</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>CLSID  فئات  </value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>مرجع الغاء التثبيت </value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>موقع الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>اختصار</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>تكوين نهج الصوت</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>سجلات تسجيل الاحداث</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>معلومات التتبع</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>قائمه المجلدات المثبتة</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت الاصلي</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>اوامر بدء التشغيل</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>لن تكون مفتوحة بعد الان اثناء الاقلاع. تاكد من ان المواد المحددة غير مطلوبه قبل ازالتها.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>ازاله البرامج المحددة عند  بدء التشغيل ؟</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>مدير بدء التشغيل</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>يتم الان تحميل...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>مجلد فارغ</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>الملفات التنفيذية موجودة</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>الملفات موجودة</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>العديد من الملفات موجودة</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>يتم التعرف على اسم البرنامج</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>لا توجد دلائل فرعيه</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>يتم التعرف على الناشر</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>سيتم تشغيل الادخال مره واحده فقط</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>الادخال مطابق للتطبيق</value>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>الملفات والدلائل</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>ملفات البرنامج اليتيمة</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>مكتب التسجيل</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>بدء</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>فشل تمكين هذا الادخال ، لم يتم العثور على الملف التالي:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>انتهت مهله الغاء التثبيت</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>مهمة</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>كائن مساعد المستعرض</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>لا يمكن ان تكون القيمة خاليه او فارغه</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>لا يمكن ان تحتوي القيمة على سطور جديده</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>مفاتيح مكتب التسجيل بدء تشغيل باطل او مجهول:</value>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>نوافذ متجر التطبيق</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>حاله جديده</value>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>غير مسجل</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>ازاله بيانات تطبيق مخزن الاشكاليه</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>حذف بسيط</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>الدليل ، او سيكون فارغا بعد ازاله الخردة.</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>خدمه</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>كافة الخصائص</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>المثبتة MSI مسح منتجات...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>GUIDs تم العثور على {0} تطبيق  </value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>مسح مكتب التسجيل لالغاء التثبيت...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>جمع مفاتيح مكتب التسجيل</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>معالجه {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>يتم الان انشاء معلومات الغاء التثبيت مفقود...</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>متوقف</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>البحث عن ادخالات بدء التشغيل</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Webová stránka</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Kód produktu</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Nazev</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Zkrácení názvu</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Verze</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Odhadovaná velikost</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Datum instalace</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Místo instalace</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Zdroj instalace</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>Je to 64-bitová aplikace</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>Je chráněn</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>Je aktualizace</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>Je platný</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Upravit cestu</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Jméno vydavatele</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Zkrácené jméno vydavatele</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>Tiché odinstalování je možný</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Tiché odinstalování řetězce</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Název klíče registru </value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Cesta k registru</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>Je součástí systému</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Název souboru odinstalátoru</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>Typ odinstalátoru</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>Odinstalace je možná</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>Řetězec odinstalace</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Komentář</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Zobrazí se ikona</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Neplatná cesta</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Spolehlivost</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>Předčasně ukončena odinstalace</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Přeskočeno uživatelem</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>Umístění odinstalátoru</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>Neexistuje žádný platný způsob, jak odinstalovat tento záznam</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>Odinstalace vrátila kód chyby:</value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Špatná</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Dobrá</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Sporná</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Neznámá</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Velmi dobrá</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Nadřazený odinstalátoru</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>Název společnosti neodpovídá</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>Název společnosti souhlasí</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>Adresáře jsou využívány jinými nainstalovanými aplikacemi</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>Položka je výslovně uvedena v odinstalaci</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Položka registru na odinstalaci</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>Položka se zdá být celá vydavatele kategorie</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>Název produktu neodpovídá velmi dobře</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>Název produktu naprosto souhlasí</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>Název adresáře je sporný</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Neznámý</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Windows Installer</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inno Setup</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Nullsoft Scriptable Install System </value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Komplet</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Neúspěšné</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Neplatné</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Chráněné</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Vynecháno</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Odinstalace</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>Čeká</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>Aplikace je registrována</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Neplatný filtr</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>Nový filtr</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>Žádné zápasy</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Obsahuje</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Končí na</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>Rovná se</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Regex</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Spuštět s</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Vlastnosti Windows</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Obsahující jakýkoli</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Příkaz po spuštění</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>Tyto již nebudou otevřeny během startu. Ujistěte se, že vybrané položky nejsou vyžadovány před jejich odstraněním.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>Vyjmout vybrané programy z po spouštění?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Správce po spuštění</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>Načítání...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Prázdné složky</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Aktuální spustitelné soubory</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>Aktuální soubory</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Jsou přítomno mnoho souborů</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>Název programu je rozpoznán</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>Žádné podadresáře</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>Vydavatel je rozpoznán</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>Vstup proběhne jen jednou</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>Vstup je přiřazen k aplikaci</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>Pozůstatky v Program Files</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Registry</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Autostart</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Nepodařilo se povolit tuto položku, následující soubor nebyl nalezen:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>Vypršel časový limit odinstalátoru</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Úlohy</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Prohlížeče pomocníka objektu</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>Hodnota nemůže být null nebo prázdná</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>Hodnota nemůže obsahovat znaky nového řádku</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>Všechny vlastnosti</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Neregistrovaný</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>Soubory a adresáře</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Neplatný nebo neznámý spouštěcí klíč(e) registru:</value>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>Windows Store Aplikace</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>Nová podmínka</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>Odstranění aplikací Store je problematické</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Jednoduché Odstranení</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>Adresář bude po odstranění nepotřebných prázdný.</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Service</value>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>Skenování nainstalovaných produktů MSI...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Nalezeno {0} aplikací GUIDs</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>Prohledávání registru pro odinstalaci...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Sbírání klíčů registru</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>Zpracováno {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>Generování chybějící odinstalačních informace...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>Hledání aplikací na jednotce...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>Získávání adresáře</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>Uložení skenování aplikací ...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>Hledání šablon aplikací</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>Hledání aplikací Steam</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Vyhledávání aplikací Windows Store</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Hledání funkcí systému Windows</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Slučování nalezených aplikací...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Slučování aplikací z úložiště</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Slučování aplikací z jednotek</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>Generování chybějících informací...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Vyhledat aktualizace systému Windows</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>Pravidla brány firewall</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>Uživatelská pomoc</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>Hlášení o chybách systému Windows</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Nastavení nevyžádaných skenerů ...</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Dokončeno ...</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>Kompatibilita aplikací</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>CLSID třída</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>Odkaz na odinstalátor</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>Umístění odinstalátoru</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>Zkratka</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>Konfigurace politiky Audia</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>Záznamy protokolu událostí</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Sledování informací</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>Seznam složek instalací</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>Pauza</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Hledání položek po spouštění</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Webseite</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Produktcode</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Anzeigename</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Kurzname</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Version</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Geschätzte Größe</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Installationsdatum</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Installationspfad</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Installationsquelle</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>64bit Anwendung</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>Geschützt</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>Aktualisierung</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>Gültig</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Pfad ändern</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Herausgeber</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Kurzname Herausgeber</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>Stille Deinstallation möglich</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Anweisung zur stillen Deinstallation</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Registryschlüssel</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Registrypfad</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>Systemkomponente</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Dateiname des Uninstallers</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>Typ des Uninstallers</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>Deinstallation möglich</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>Anweisung zur Deinstallation</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Kommentar</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Angezeigtes Symbol</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Ungültiger Pfad</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Vertrauensgrad</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>Deinstallationsvorgang vorzeitig beendet</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Vom Benutzer übersprungen</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>Uninstaller-Pfad</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>Es gibt keine gültige Methode, diesen Eintrag zu deinstallieren</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>Uninstaller-Fehlercode:</value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Abzuraten</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Hoch</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Bedenklich</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Unbestimmt</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Sehr hoch</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Übergeordneter Uninstaller</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>Keine Übereinstimmung beim Firmennamen</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>Übereinstimmung beim Firmennamen</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>Verzeichnis wird von anderen installierten Anwendungen verwendet.</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>Element wird im Uninstaller explizit erwähnt.</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Registryeintrag des Uninstallers</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>Element scheint einer ganzen Programm-Kategorie anzugehören</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>Der Produktname stimmt nicht sehr gut überein.</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>Perfekte Übereinstimmung beim Produktnamen</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>Verzeichnisname ist fraglich</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Unbekannt</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Vollendet</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Gescheitert</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Ungültig</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Geschützt</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Übersprungen</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Deinstallieren</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>Warten</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Windows Installer</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inno setup</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Nullsoft Scriptable Install System </value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>Anwendung ist registriert</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Ungültiger Filter</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>Neuer Filter</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>Keine Übereinstimmung</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Enthält</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Endet mit</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>Ist gleich</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Regex</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Beginnt mit</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Windows Funktion</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Enthält irgendeines</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Autostart Befehle</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>Sie werden beim Booten nicht mehr geöffnet. Stellen Sie sicher, dass die ausgewählten Elemente nicht mehr erforderlich sind, bevor sie entfernt werden.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>Ausgewählte Programme aus dem Autostart entfernen?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Autostart Manager</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>Laden...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Leerer Ordner</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Ausführbare Dateien sind vorhanden</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>Dateien sind vorhanden</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Viele Dateien sind vorhanden</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>Programmname erkannt</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>Keine Unterverzeichnisse</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>Herausgeber erkannt</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>Eintrag wird nur einmal ausgeführt</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>Eintrag stimmt mit der Anwendung überein</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>Verwaiste Programmdateien</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Registry</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Autostart</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Eintrag konnte nicht aktiviert werden, weil die folgende Datei fehlt:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>Zeitüberschreitung beim Uninstaller</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Aufgabe</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Browser Helper Objekt</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>Wert darf nicht Null oder leer sein</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>Wert darf keine Zeilenumbrüche enthalten</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>Alle Eigenschaften</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Ist unregistriert</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>Dateien und Ordner</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Ungültiger oder unbekannter startup registrierungs schlüssel</value>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>Windows Store Programm</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>Neue Bedingung</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>Die Entfernung der Store App Data kann zu Problemen führen</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Einfaches Löschen</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>Das Verzeichnis ist oder wird nach dem Entfernen von Junk leer sein.</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Service</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Suche nach Windows Updates</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>Firewall Regel</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>Angehalten</value>\r\n  </data>\r\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\r\n    <value>Ist ein Web Browser</value>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>Durchsuche installierte MSI Produkte...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Anwendungens GUIDs {0} gefunden</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>Durchsuche Registry nach Uninstallern...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Registrierungsschlüssel sammeln</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>Ausführen {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>Fehlende Deinstallationsinformationen werden generiert ...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>Laufwerke nach Anwendungen scannen ...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>Nach Anwendungsvorlagen suchen</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>Suche nach Steam Anwendungen</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Suche nach Windows Store Anwendungen</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Suche nach Windows Eigenschaften</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Zusammenführen gefundener Anwendungen ...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Zusammenführen von Anwendungen aus Store</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Anwendungen von Laufwerken zusammenführen</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>Fehlende Informationen erzeugen ...</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>Benutzer Unterstützung</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>Windows Fehlerberichterstattung melden.</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Junk-Scanner einrichten ...</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Beenden</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>Anwendungs Kompatibilität</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>CLSID Klassen</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>Deinstallationsprogramm-Referenz</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>Standort des Deinstallationsprogramms</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>Kurzbefehl</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>Audio policy Einstellungen</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>Ereignisprotokoll erzeugen</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Spur Information</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>Liste der Installierten Ordner</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Suche nach Chocolatey Paketen</value>\r\n  </data>\r\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\r\n    <value>Deinstallation durch Chocolatey</value>\r\n    <comment>Shown in junk results window</comment>\r\n  </data>\r\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\r\n    <value>Besitzt Autostarteintrag</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Suche nach Starteinträgen</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus Anwendungen</value>\r\n  </data>\r\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\r\n    <value>PowerShell script</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>Gruppierung von Dateien</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>Überprüfe Anwendungs Store</value>\r\n  </data>\r\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Debug-Tracing/Protokollierung Konfiguration</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\r\n    <value>Auf der Suche nach Scoop-Paketen</value>\r\n  </data>\r\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\r\n    <value>Könnte zu einer anderen Anwendung mit einem ähnlichen Namen gehören</value>\r\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Página web</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Código del producto</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Nombre para mostrar</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Nombre corto para mostrar</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Versión</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Tamaño estimado</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Fecha de la instalación</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Ubicación de la instalación</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Origen de la instalación</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>Es una aplicación de 64 bits</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>Está protegida</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>Está actualizada</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>Es válida</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Ruta de modificación</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Nombre del editor</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Nombre corto del editor</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>Es posible la desinstalación silenciosa</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Cadena de desinstalación silenciosa</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Nombre de la clave de registro</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Ruta de registro</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>Es un componente del sistema</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Nombre del archivo desinstalador</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>Tipo de desinstalador</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>La desinstalación es posible</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>Cuerda de desinstalación</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Comentario</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Icono mostrado</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Ruta inválida</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Confianza</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>Ubicación del desinstalador</value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Mala</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Buena</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Cuestionable</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Desconocida</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Muy buena</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Desinstalador padre</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>El nombre de la empresa no coincide</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>El nombre de la empresa coincide</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>El directorio está siendo usado por otras aplicaciones instaladas</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>El elemento se menciona explícitamente en el desinstalador</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Entrada de registro del desinstalador</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Instalador de Windows</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Desconocido</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Configuración de Inno</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Sistema de instalación Nullsoft Scriptable</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Completado</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Fallido</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Inválido</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Protegido</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Omitido</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Desinstalando</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>Esperando</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>La aplicación está registrada</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Filtro inválido</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>Nuevo filtro</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>No hay coincidencias</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Termina con</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>Iguales</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Regex</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Comienza con</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Característica de Windows</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Contiene cualquier</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Comandos de inicio</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>¿Eliminar los programas seleccionados del inicio?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Administrador del Inicio</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>Cargando...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Carpeta vacía</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>No hay subdirectorios</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>El editor es reconocido</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Registro</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Inicio</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Tarea</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>App de Windows Store</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>Nueva condición</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Omitido por el usuario</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>No hay un modo válido de desinstalar esta entrada</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>Desinstalación detenida prematuramente</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>El desinstalador devolvió el código de error:</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>El elemento parece ser una categoría completa de editores</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>El nombre del producto no coincide muy bien</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>El nombre del producto coincide perfectamente</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>El nombre del directorio es cuestionable</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Contiene</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>Ya no se abrirán durante el arranque. Asegúrese de que los elementos seleccionados no sean necesarios antes de quitarlos.</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Los ejecutables están presentes</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>Los archivos están presentes</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Muchos archivos están presentes</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>El nombre del programa es reconocido</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>La entrada se ejecutará una sola vez</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>La entrada se corresponde con la solicitud</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>Archivos de programa huérfanos</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Error al habilitar esta entrada, no se encontró el siguiente archivo:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>El desinstalador no responde</value>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Objeto del Ayudante del Navegador</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>El valor no puede ser nulo o vacío</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>El valor no puede contener líneas nuevas</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Clave de registro de inicio no válida o desconocida(s):</value>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Is no registrado</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>La eliminación de los datos de la App Store es problemático</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Borrado simple</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>Todas las propiedades</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>Archivos y directorios</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>El directorio está, o estará, vacío después de eliminar la basura.</value>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>Analizando productos MSI instalados...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Halladas {0} aplicaciones GUID</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>Registro de escaneo para desinstaladores...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Recopilación de claves del registro</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>Procesando {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>Generación de información de desinstalación que falta...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>Analizando unidades por aplicaciones...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>Recopilando directorios</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>Analizando aplicaciones de tiendas...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>Buscando plantillas de aplicaciones</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>Buscando aplicaciones de Steam</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Buscando aplicaciones de Windows Store</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Buscando características de Windows</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Fusionando aplicaciones descubiertas...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Fusionando aplicaciones de tiendas</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Fusionando aplicaciones de unidades</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>Generando información que falta...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Servicio</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Buscando actualizaciones de Windows</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>Regla de Firewall</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>Asistente de usuario</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>Informes de errores de Windows</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Configurando escáneres basura...</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Finalizando...</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>Compatibilidad de aplicaciones</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>Clases de CLSID</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>Referencia del desinstalador</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>Ubicación del desinstalador</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>Acceso directo</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>Configuración de política de audio</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>Registros del registro de eventos</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Información de rastreo</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>Lista de carpetas instaladas</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>Pausado</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Buscando entradas de inicio</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Buscando paquetes de Chocolatey</value>\r\n  </data>\r\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\r\n    <value>Desinstalar en Chocolatey</value>\r\n    <comment>Shown in junk results window</comment>\r\n  </data>\r\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\r\n    <value>Puede iniciarse automáticamente</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\r\n    <value>Buscando Aplicaciones de Oculus</value>\r\n  </data>\r\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\r\n    <value>Es un navegador web</value>\r\n  </data>\r\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\r\n    <value>Script de PowerShell</value>\r\n  </data>\r\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Rastreo de Depuración/Configuración del Registro</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\r\n    <value>Buscando paquetes de Scoop</value>\r\n  </data>\r\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\r\n    <value>Podría pertenecer a una aplicación diferente con un nombre similar</value>\r\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Bon </value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>Chaîne de désinstallation</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Chaîne de désinstallation silencieuse</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Chemin du registre</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Chemin invalide</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Commentaire</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Confiance</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Date d'installation</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>Désinstallation possible</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>Désinstallation silencieuse possible</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Discutable</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Emplacement d'installation</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>Emplacement du désinstalleur</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Passé par l'utilisateur</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>Est protégé</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>Est un composant système</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>Est une application 64bits</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>Est une mise à jour</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>Est valide</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Icône affichée</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Inconnu</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>Le désinstalleur a retourné un code erreur : </value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Mauvais</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Modifer le chemin</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Nom d'affichage</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Nom d'affichage abrégé</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Nom de fichier du désinstalleur</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Nom de la clé du registre</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Nom de l'éditeur</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Nom de l'éditeur abrégé</value>\r\n  </data>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Page web</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>Pas de manière valide de désinstaller cette entrée</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Source d'installation</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Taille estimée</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>Travail de désinstallation arrêté prématurément</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Très bon</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>Type de désinstalleur</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Version</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Désinstalleur parent</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>Le nom de compagnie ne correspondait pas</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>Le nom de compagnie correspondait</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>Le dossier est utilisé par d'autres applications installées</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>L'élément est explicitement mentionné dans le désinstalleur</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Entrée de registre du désinstalleur</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>L'élément semble être une catégorie entière d'éditeur</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>Le nom de produit ne correspondait pas très bien</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>Le nom de produit correspondait parfaitement</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>Le nom du dossier est discutable</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Code produit</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Inconnu</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Terminé</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Échoué</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Invalide</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Protégé</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Passé</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Désinstallation</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>En attente</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Windows Installer</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inno Setup</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Nullsoft Scriptable Install System</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>L'application est enregistrée</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Filtre invalide</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>Nouveau filtre</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>Pas de correspondance</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Contient</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Finit par</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>Égal</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Regex</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Commence par</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Fonctionnalité Windows</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Contient tout</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Commandes de démarrage</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>Ils ne seront plus ouverts pendant le démarrage. Vérifiez que les éléments sélectionnés ne sont pas requis avant de les supprimer.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>Supprimer les programmes sélectionnés du démarrage ?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Gestionnaire de Démarrage</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>Chargement...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Dossier vide</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Des exécutables sont présents</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>Des fichiers sont présents</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Beaucoup de fichiers sont présents</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>Le nom du programme est reconnu</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>Pas de sous-dossier</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>L'éditeur est reconnu</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>L'entrée sera lancée une seule fois</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>L'entrée correspond à l'application</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>Orphelin de Program Files</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Registre</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Démarrage</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Échec en activation de cette entrée, le fichier suivant est introuvable :</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>Le désinstalleur a dépassé le temps</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Tâche</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Extension de navigateur</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>La valeur ne peut être nulle ou vide</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>La valeur ne peut contenir de nouvelles lignes</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Clé(s) de registre de démarrage invalide(s) ou inconnue(s)</value>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Est non enregistré</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>Appli Windows Store</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>Nouvelle condition</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>Suppression problématique des données du Store</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Effacer simplement </value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>Toutes propriétés</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>Fichiers et dossiers</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>Le dossier est ou sera vide après suppression des résidus.</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Service</value>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>Balayage des produits MSI installés...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Trouvé {0} GUIDs d'applications</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>Balayage du registre pour les désinstalleurs</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Regroupement des clés de registre</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>Traitement de {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>Génération de l'information de désinstalleur manquante</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>Balayage des lecteurs pour les applications...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>Regroupement des dossiers</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>Balayage des magasins d'applications...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>Recherche des modèles d'applications</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>Recherche des Applis Steam</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Recherche des Applis du Windows Store</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Recherche des Fonctionnalités Windows</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Fusion des applications découvertes...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Fusion des applications depuis les magasins</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Fusion des applications depuis les lecteurs</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>Génération de l'information manquante...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Recherche de Mises à jour Windows</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>Règle de pare-feu</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>Assistant utilisateur</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>Rapports de Windows Error Reporting</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Réglage des scanners de résidus... </value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>En train de finir...</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>Compatibilité d'application</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>Classes CLSID</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>Référence de désinstalleur</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>Emplacement de désinstalleur</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>Raccourci</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>Config de stratégie audio</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>Journaux d'Event Log</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Traçage d'information</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>Liste de dossiers d'installation</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>En pause</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Recherche des entrées de démarrage</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Recherche de paquets Chocolatey</value>\r\n  </data>\r\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\r\n    <value>Désinstaller dans Chocolatey</value>\r\n    <comment>Shown in junk results window</comment>\r\n  </data>\r\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\r\n    <value>Peut démarrer automatiquement</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\r\n    <value>Recherche des Applis Oculus</value>\r\n  </data>\r\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\r\n    <value>Est un navigateur web</value>\r\n  </data>\r\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\r\n    <value>Script PowerShell</value>\r\n  </data>\r\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Configuration du débogage de Traçage/Journalisation </value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\r\n    <value>Recherche de paquets Scoop</value>\r\n  </data>\r\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\r\n    <value>Peut appartenir à une autre appli avec un nom similaire</value>\r\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\r\n  </data>\r\n  <data name=\"Confidence_DirectlyInsideKnownFolder\" xml:space=\"preserve\">\r\n    <value>Situé directement à l'intérieur d'un Dossier Connu</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Weblap</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Termékkód</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Megjelenítendő név</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Rövidített megjelenítendő név</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Verzió</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Becsült méret</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Telepítés dátuma</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Telepítési hely</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Telepítőforrás</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>64-bites alkalmazás</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>Védett</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>Frissítés</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>Érvényes</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Útvonal módosítás</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Kiadó neve</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Rövidített kiadó-név</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>A csendes eltávolítás lehetséges</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Csendes eltávolító karakterlánc</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Beállításkulcs név</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Registry útvonal</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>Ez egy rendszerösszetevő</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Eltávolítófájl-név</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>Eltávolító típusa</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>Az eltávolítás lehetséges</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>Eltávolítási karakterlánc</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Megjegyzés</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Megjelenített ikon</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Érvénytelen útvonal</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Biztonságosság</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>Az eltávolító működése idő előtt leállításra került</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Kihagyta a felhasználó</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>Eltávolító helye</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>Nincs érvényes mód eltávolítani ezt a bejegyzést</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>Az eltávolító ezt a hibakódot adta vissza: </value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Rossz</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Jó</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Kétséges</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Ismeretlen</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Nagyon jó</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Szülő eltávolító</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>A cégnév nem egyezik</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>A cégnév egyezik</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>A könyvtárat egyéb telepített alkalmazások használják</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>Az elem nincs megemlítve az eltávolítóban</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Eltávolító bejegyzése a Beállításjegyzékben</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>Úgy tűnik, hogy az összes kiadó egy kategóriába tartozik</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>A terméknév nem egyezik meg teljesen</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>A terméknév tökéletesen megegyezik</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>A könyvtárnév kérdéses</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Ismeretlen</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Windows Installer</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inno Setup</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Nullsoft Scriptable Install System </value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Befejezve</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Sikertelen</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Érvénytelen</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Védett</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Kihagyva</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Eltávolítás</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>Várakozás</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>A program regisztrálva van</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Érvénytelen szűrő</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>Új szűrő</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>Nincs találat</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Tartalmazza</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Ezzel végződik</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>Egyenlő</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Regex</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Ezzel kezdődik</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Windows szolgáltatás</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Bármit tartalmazhat</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Indítópult parancsok</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>Ezek már nem lesznek megnyithatók a rendszerindítás közben. Ellenőrizze, hogy a kiválasztott elemek nem szükségesek-e, mielőtt törli azokat.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>Eltávolítja a kijelölt programokat az Indítópultból?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Indítópult kezelő</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>Betöltés...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Üres mappa</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Jelen levő futtathatók</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>Jelen levő fájlok</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Túl sok fájl van jelen</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>A program neve azonosítva</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>Nincsenek alkönyvtárak</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>A kiadó azonosítva</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>A bejegyzés csak egyszer fog végrehajtódni</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>A bejegyzés illeszkedik az alkalmazáshoz</value>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>Fájlok és könyvtárak</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>Elárvultak a Program Files mappában</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Beállításjegyzék</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Indítópult</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Nem sikerült engedélyezni ezt a bejegyzést, a következő fájl nem található:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>Eltávolító időtúllépés</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Feladat</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Böngésző segítő objektuma</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>Az érték nem lehet nulla, vagy üres</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>Az érték nem tartalmazhat új sorokat</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Érvénytelen, vagy ismeretlen Indítópult registry kulcs:</value>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>Windows Áruházbeli alkalmazás</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>Új feltétel</value>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Nem regisztrált</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>Az Áruházbeli alkalmazás adatainak eltávolítása problémás</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Egyszerű törlés</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>A könyvtár a felesleg eltávolítása után üres lesz.</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Szolgáltatás</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>Minden tulajdonság</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>Telepített MSI termékek ellenőrzése...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Beazonosítva{0} program GUID</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>Eltávolítók ellenőrzése a beállításjegyzékben...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Beállításkulcsok összegyűjtése</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>Feldolgozás {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>Hiányzó eltávolítási információk összeállítása...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>Meghajtókon levő programok ellenőrzése...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>Könyvtárak összegyűjtése</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>Programtárolók ellenőrzése...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>Alkalmazássablonok keresése</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>Steam alkalmazások keresése</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Windows áruházbeli alkalmazások keresése</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Windows szolgáltatások keresése</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Azonosított programok egyesítése...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Tárolókban levő programok egyesítése</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Meghajtókon levő programok egyesítése</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>Hiányzó információk létrehozása...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Windows frissítés</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Indítópult bejegyzések keresése</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Windows frissítések keresése</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>Tűzfal szabály</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>Felhasználósegéd</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>Windows hibajelentések</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Befejezés...</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>Alkalmazáskompatibilitás</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>CLSID osztályok</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>Parancsikon</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>Eltávolító helye</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>Eseménynaplók</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>Szüneteltetve</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey csomagok keresése</value>\r\n  </data>\r\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\r\n    <value>Eltávolítás a Chocolatey-vel</value>\r\n    <comment>Shown in junk results window</comment>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus alkalmazások keresése</value>\r\n  </data>\r\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\r\n    <value>Böngésző e</value>\r\n  </data>\r\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\r\n    <value>PowerShell szkript</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\r\n    <value>Scoop csomagok keresése</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Szemétkeresők beállítása...</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>Eltávolító hivatkozása</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>Hangházirend konfiguráció</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Nyomkövetési információ</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>Telepített mappa lista</value>\r\n  </data>\r\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\r\n    <value>Automatikusan indítható</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Pagina web</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Codice del prodotto</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Nome mostrato</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Abbreviazione da mostrare</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Versione</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Grandezza stimata</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Data di installazione</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Cartella di installazione</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Origine di installazione</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>E' una applicazione a 64bit</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>E' protetta</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>E' un aggiornamento</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>E' valido</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Modifica percorso</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Nome dell'editore</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Abbreviazione del nome dell'editore</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>L'installazione silenziosa è applicabile</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Stringa di disinstallazione silenziosa</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Nome della chiave di registro</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Percorso del registro</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>E' un componente di sistema</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Nome del file di disinstallazione</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>Tipo di disinstallatore</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>Disinstallazione possibile</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>Stringa di disinstallazione</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Commenti</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Icona mostrata</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Percorso invalido</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Affidabilità</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>La disinstallazione si è fermata prima del termine</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Saltato dall'utente</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>Posizione del disinstallatore</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>Non ci sono valide possibilità di disinstallare questa voce</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>Il disinstallatore ha restituito il codice di errore: </value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Cattivo</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Buono</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Discutibile</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Sconosciuto</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Molto buono</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Dipendenze del disinstallatore</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>Il nome dell'impresa non coincide</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>Il nome dell'impresa coincide</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>La cartella è usata da altre applicazioni installate</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>L'oggetto è esplicitamente menzionato nel disinstallatore</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Voce del registro del disinstallatore</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>L'elemento sembra essere una intera categoria dell'editore</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>Il nome del prodotto non coincide esattamente</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>Il nome del prodotto coincide perfettamente</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>Il nome della cartella è discutibile</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Sconosciuto</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Windows Installer</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inno setup</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Nullsoft Scriptable Install System </value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Completato</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Fallito</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Invalido</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Protetto</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Saltato</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Disinstallando</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>Attendi</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>L'applicazione è registrata</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Filtro invalido</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>Nuovo filtro</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>Non coincide</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Contiene</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Finisce con</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>Uguale</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Espressione regolare</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Inizia con</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Caratteristica di windows</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Contiene qualunque</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Comandi di avvio</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>Non saranno più aperti in fase di avvio. Assicurati che gli elementi selezionati non siano necessari prima di rimuoverli.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>Rimuovere i programmi selezionati dall'avvio?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Gestore dell'avvio</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>Caricando...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Cartella vuota</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Gli eseguibili sono presenti</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>I files sono presenti</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Sono presenti molti file</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>Il nome del programma è stato riconosciuto</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>Non ci sono sottocartelle</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>L'editore è stato riconosciuto</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>La voce sarà eseguita una sola volta</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>La voce corrisponde ad una applicazione</value>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>File e cartelle</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>File del programma orfani</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Registro</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Avvio</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Non è possibile abilitare questa voce, i seguenti file non sono sono stati trovati:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>Il disinstallatore non risponde</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Operazione</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Estensione del navigatore</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>Il valore non può essere nullo o vuoto</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>Il valore non può contenere nuove linee</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Chiave(i) di registro invalida(e) o sconosciuta(e):</value>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>App di Windows Store</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>Nuova condizione</value>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Non è registrato</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>La rimozione dei dati dell'App Store è difficoltosa</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Eliminazione semplice</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>La cartella è o resterà vuota dopo la rimozione degli scarti</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Servizio</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>Tutte le proprietà</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>Controllando i prodotti con installatore MSI...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Trovate {0} applicazioni GUIDs</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>Ricerca nel registro dei disinstallatori...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Selezione delle chiavi di registro</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>Processando {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>Creazione delle informazioni di disinstallazione mancanti...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>Ricerca delle applicazioni nel disco...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>Selezionando le cartelle</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>Ricerca nello store delle applicazioni...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>RIcerca di modelli per applicazioni</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>Ricerca per Steam Apps</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Ricerca per Windows Store Apps</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Ricerca per funzionalità di Windows</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Unione applicazioni trovate...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Unione applicazioni dagli store</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Unione applicazioni dai dischi</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>Generazione informazioni mancanti...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Ricerca di aggiornamenti di Windows</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>Regola del firewall</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>Aiuto utente</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>Resoconto di Windows Error Reporting</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Configurando la ricerca degli scarti...</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Completando...</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>Compatibilità dell'applicazione</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>Classe di CLSID</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>Riferimento del disinstallatore</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>Posizione del disinstallatore</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>Scorciatoria</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>Configurazione dei criteri (policy) dell'audio</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>Eventi del registro eventi</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Informazioni di tracciamento</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>Elenco delle cartelle installate</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>Pausa</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Ricerca delle voci all'avvio</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Ricerca dei pacchetti Chocolatey</value>\r\n  </data>\r\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\r\n    <value>Disinstalla con Chocolatey</value>\r\n    <comment>Shown in junk results window</comment>\r\n  </data>\r\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\r\n    <value>Può avviarsi automaticamente</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus App</value>\r\n  </data>\r\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\r\n    <value>E' un browser web</value>\r\n  </data>\r\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\r\n    <value>Script PowerShell</value>\r\n  </data>\r\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Debug Tracing/Registrazione Configurazione</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\r\n    <value>Ricerca di pacchetti Scoop</value>\r\n  </data>\r\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\r\n    <value>Potrebbe appartenere a un'altra applicazione con un nome simile.</value>\r\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\n    <value>ウェブページ</value>\n  </data>\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\n    <value>製品コード</value>\n  </data>\n  <data name=\"DisplayName\" xml:space=\"preserve\">\n    <value>表示名</value>\n  </data>\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\n    <value>トリムされた表示名</value>\n  </data>\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\n    <value>バージョン</value>\n  </data>\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\n    <value>推定サイズ</value>\n  </data>\n  <data name=\"InstallDate\" xml:space=\"preserve\">\n    <value>インストール日</value>\n  </data>\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\n    <value>インストール場所</value>\n  </data>\n  <data name=\"InstallSource\" xml:space=\"preserve\">\n    <value>インストールソース</value>\n  </data>\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\n    <value>64ビットアプリケーションかどうか</value>\n  </data>\n  <data name=\"IsProtected\" xml:space=\"preserve\">\n    <value>保護されているか</value>\n  </data>\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\n    <value>アップデートかどうか</value>\n  </data>\n  <data name=\"IsValid\" xml:space=\"preserve\">\n    <value>有効かどうか</value>\n  </data>\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\n    <value>パスを修正する</value>\n  </data>\n  <data name=\"Publisher\" xml:space=\"preserve\">\n    <value>発行者名</value>\n  </data>\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\n    <value>トリムされた発行者名</value>\n  </data>\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\n    <value>静かなアンインストールが可能です</value>\n  </data>\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\n    <value>静かなアンインストール文字列</value>\n  </data>\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\n    <value>レジストリキー名</value>\n  </data>\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\n    <value>レジストリパス</value>\n  </data>\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\n    <value>システムコンポーネントかどうか</value>\n  </data>\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\n    <value>アンインストーラーファイル名</value>\n  </data>\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\n    <value>アンインストーラータイプ</value>\n  </data>\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\n    <value>アンインストールが可能</value>\n  </data>\n  <data name=\"UninstallString\" xml:space=\"preserve\">\n    <value>アンインストール文字列</value>\n  </data>\n  <data name=\"Comment\" xml:space=\"preserve\">\n    <value>コメント</value>\n  </data>\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\n    <value>表示されたアイコン</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>無効なパス</value>\n  </data>\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\n    <value>確信度</value>\n  </data>\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\n    <value>アンインストールが手動で停止しました</value>\n  </data>\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\n    <value>ユーザーによってスキップされました</value>\n  </data>\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\n    <value>アンインストーラーの場所</value>\n  </data>\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\n    <value>このエントリをアンインストールする有効な方法はありません</value>\n  </data>\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\n    <value>アンインストーラーはエラーコードを返しました:</value>\n  </data>\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\n    <value>悪い</value>\n  </data>\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\n    <value>良好</value>\n  </data>\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\n    <value>疑わしい</value>\n  </data>\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\n    <value>不明</value>\n  </data>\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\n    <value>非常に良好</value>\n  </data>\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\n    <value>親アンインストーラー</value>\n    <comment>Most of the time used to show parent application of an update</comment>\n  </data>\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\n    <value>会社名が一致しませんでした</value>\n  </data>\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\n    <value>会社名が一致しました</value>\n  </data>\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\n    <value>ディレクトリは他のインストールされたアプリケーションによって使用されています</value>\n  </data>\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\n    <value>アイテムはアンインストーラーに明示的に記載されています</value>\n  </data>\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\n    <value>アンインストーラーのレジストリエントリ</value>\n  </data>\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\n    <value>アイテムは全体のパブリッシャーカテゴリに属しているようです</value>\n  </data>\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\n    <value>製品名があまり一致していません</value>\n  </data>\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\n    <value>製品名が完全に一致</value>\n  </data>\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\n    <value>ディレクトリ名は疑わしいです</value>\n  </data>\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\n    <value>不明</value>\n  </data>\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\n    <value>Windowsインストーラー</value>\n  </data>\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\n    <value>Inno Setup</value>\n  </data>\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\n    <value>Steam</value>\n  </data>\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\n    <value>Nullsoftスクリプタブルインストールシステム</value>\n  </data>\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\n    <value>InstallShield</value>\n  </data>\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\n    <value>SDBInst</value>\n  </data>\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\n    <value>完了</value>\n  </data>\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\n    <value>失敗</value>\n  </data>\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\n    <value>無効</value>\n  </data>\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\n    <value>保護されている</value>\n  </data>\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\n    <value>スキップされました</value>\n  </data>\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\n    <value>アンインストール中</value>\n  </data>\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\n    <value>待機中</value>\n  </data>\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\n    <value>アプリケーションが登録されています</value>\n  </data>\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\n    <value>無効なフィルター</value>\n  </data>\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\n    <value>新しいフィルター</value>\n  </data>\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\n    <value>一致するものはありません</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\n    <value>含む</value>\n  </data>\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\n    <value>で終わる</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\n    <value>等しい</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\n    <value>正規表現</value>\n  </data>\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\n    <value>で始まる</value>\n  </data>\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\n    <value>Windowsの機能</value>\n    <comment>Used to mark windows features on the uninstaller list</comment>\n  </data>\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\n    <value>いずれかを含む</value>\n    <comment>As in \"matches any word from this string\"</comment>\n  </data>\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\n    <value>スタートアップコマンド</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\n    <value>起動時にこれらは開かれなくなります。削除する前に、選択したアイテムが必要ないことを確認してください。</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\n    <value>選択したプログラムをスタートアップから削除しますか？</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\n    <value>スタートアップマネージャー</value>\n  </data>\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\n    <value>読み込み中...</value>\n  </data>\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\n    <value>空のフォルダー</value>\n  </data>\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\n    <value>実行可能ファイルが存在します</value>\n  </data>\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\n    <value>ファイルが存在します</value>\n  </data>\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\n    <value>多くのファイルが存在します</value>\n  </data>\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\n    <value>プログラム名が認識されています</value>\n  </data>\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\n    <value>サブディレクトリはありません</value>\n  </data>\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\n    <value>パブリッシャーが認識されています</value>\n  </data>\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\n    <value>エントリーは一度だけ実行されます</value>\n  </data>\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\n    <value>エントリーはアプリケーションに一致しています</value>\n  </data>\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\n    <value>ファイルとディレクトリ</value>\n  </data>\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\n    <value>プログラムファイルの孤立</value>\n  </data>\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\n    <value>レジストリ</value>\n  </data>\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\n    <value>スタートアップ</value>\n  </data>\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\n    <value>このエントリを有効にできませんでした。次のファイルが見つかりませんでした:</value>\n  </data>\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\n    <value>アンインストーラーのタイムアウト</value>\n  </data>\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\n    <value>タスク</value>\n    <comment>Fom Task Scheduler</comment>\n  </data>\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\n    <value>ブラウザヘルパーオブジェクト</value>\n  </data>\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\n    <value>値は null または空であってはなりません</value>\n  </data>\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\n    <value>値には改行を含めることはできません</value>\n  </data>\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\n    <value>無効または不明なスタートアップレジストリキー：</value>\n  </data>\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\n    <value>Windows ストアアプリ</value>\n  </data>\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\n    <value>新しい条件</value>\n  </data>\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\n    <value>未登録かどうか</value>\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\n  </data>\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\n    <value>ストアアプリのデータ削除に問題があります</value>\n  </data>\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\n    <value>シンプルな削除</value>\n  </data>\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\n    <value>ディレクトリは、またはジャンクを削除した後に空になります。</value>\n  </data>\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\n    <value>サービス</value>\n  </data>\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\n    <value>プロパティ</value>\n    <comment>Used in the search box to specify what's being compared</comment>\n  </data>\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\n    <value>インストールされたMSI製品をスキャン中...</value>\n  </data>\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\n    <value>{0} のアプリケーション GUID が見つかりました</value>\n  </data>\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\n    <value>アンインストーラーのためにレジストリをスキャン中...</value>\n  </data>\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\n    <value>レジストリキーを収集中</value>\n  </data>\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\n    <value>{0} を処理中</value>\n  </data>\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\n    <value>不足しているアンインストーラー情報を生成中...</value>\n  </data>\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\n    <value>アプリケーションのためにドライブをスキャン中...</value>\n  </data>\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\n    <value>ディレクトリを収集中</value>\n  </data>\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\n    <value>アプリケーションストアをスキャン中...</value>\n  </data>\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\n    <value>アプリケーションテンプレートを検索中</value>\n  </data>\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\n    <value>Steam アプリを検索中</value>\n  </data>\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\n    <value>Windows ストアアプリを検索中</value>\n  </data>\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\n    <value>Windows 機能を検索中</value>\n  </data>\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\n    <value>発見されたアプリケーションをマージ中...</value>\n  </data>\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\n    <value>ストアからアプリケーションをマージ中</value>\n  </data>\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\n    <value>ドライブからアプリケーションをマージ中</value>\n  </data>\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\n    <value>不足している情報を生成中...</value>\n  </data>\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\n    <value>Windows アップデート</value>\n  </data>\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\n    <value>Windows アップデートを検索中</value>\n  </data>\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\n    <value>ファイアウォールルール</value>\n  </data>\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\n    <value>ユーザー支援</value>\n  </data>\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\n    <value>Windows エラー報告レポート</value>\n  </data>\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\n    <value>ジャンクスキャナーを設定中...</value>\n  </data>\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\n    <value>終了中...</value>\n  </data>\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\n    <value>アプリケーションの互換性</value>\n  </data>\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\n    <value>CLSID クラス</value>\n  </data>\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\n    <value>アンインストーラーの参照</value>\n  </data>\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\n    <value>アンインストーラーの場所</value>\n  </data>\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\n    <value>ショートカット</value>\n  </data>\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\n    <value>オーディオポリシー設定</value>\n  </data>\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\n    <value>イベントログ</value>\n  </data>\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\n    <value>トレース情報</value>\n  </data>\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\n    <value>インストールされたフォルダーのリスト</value>\n  </data>\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\n    <value>一時停止</value>\n  </data>\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\n    <value>Chocolatey</value>\n  </data>\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\n    <value>Chocolatey パッケージを検索中</value>\n  </data>\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\n    <value>Chocolatey でアンインストール</value>\n    <comment>Shown in junk results window</comment>\n  </data>\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\n    <value>自動的に起動できる</value>\n  </data>\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\n    <value>スタートアップエントリを検索中</value>\n  </data>\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\n    <value>Oculus アプリを検索中</value>\n  </data>\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\n    <value>Oculus</value>\n  </data>\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\n    <value>ウェブブラウザかどうか</value>\n  </data>\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\n    <value>PowerShell スクリプト</value>\n  </data>\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\n    <value>デバッグトレース/ロギング設定</value>\n  </data>\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\n    <value>Scoop パッケージを検索中</value>\n  </data>\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\n    <value>類似の名前を持つ別のアプリに属している可能性があります。</value>\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Web pagina</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Productcode</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Toon naam</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Korte naam</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Versie</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Geschatte grootte</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Installatie datum</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Installatie pad</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Installatie bron</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>Is een 64bit programma</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>Is beveiligd</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>Is een update</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>Is geldig</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Pad wijzigen</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Uitgever</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Korte naam uitgever</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>Stille de-installatie is mogelijk</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Stille de-installatie string</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Registersleutel</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Register pad</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>Is een systeem component</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Bestandsnaam v/d uninstaller</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>De-installatie type</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>De-installatie is mogelijk</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>De-installatie string</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Commentaar</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Weergegeven symbool</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Ongeldig pad</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Vertrouwd</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>Het de-installatieproces werd voortijdig beëindigd</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Overgeslagen door gebruiker</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>De-installer pad</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>Er is geen geldige methode om deze registratie te de-installeren</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>De-installer retourneert een foutcode:</value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Slecht</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Goed</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Twijfelachtig</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Onbekend</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Zeer goed</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Bovenliggende de-installer</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>Bedrijfsnamen komen niet overeen</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>Bedrijfsnamen komen overeen</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>De map wordt door andere geïnstalleerde toepassingen gebruikt.</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>Het onderdeel wordt expliciet genoemd in de de-installer.</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Register registratie van de de-installer</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>Het onderdeel schijnt aan een totale uitgevers categorie toe te behoren</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>De productnaam komt niet volledig overeen.</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>Perfecte overeenstemming tussen de productnamen</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>De naam van de map is twijfelachtig</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Onbekend</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Windows Installer</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inno Setup</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Nullsoft Scriptable Install System </value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Voltooid</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Mislukt</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Ongeldig</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Beveiligd</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Overgeslagen</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>De-installeren</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>Wachten</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>Het programma is geregistreerd</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Ongeldig filter</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>Nieuw filter</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>Geen overeenkomst</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Bevat</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Eindigd met</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>Is gelijk aan</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Regex</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Begint met</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Windows functie</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Bevat wat ... dan ook</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Opstart opdrachten</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>Deze worden bij het 'opstarten' niet meer geopend. Overtuig u ervan, dat de gekozen onderdelen niet langer vereist zijn, voordat deze zijn verwijderd.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>Gekozen programma's verwijderen uit opstarten?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Opstartmanager</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>Laden...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Lege map</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Uitvoerbare bestanden zijn aanwezig</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>Bestanden zijn aanwezig</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Veel bestanden zijn aaanwezig</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>Programma naam werd herkend</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>Geen sub-mappen</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>Uitgever werd herkend</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>Registratie wordt slechts eenmaal uitgevoerd</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>Registratie komt overeen met de toepassing</value>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>Bestanden en mappen</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>Verweesde programma bestanden</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Register</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Autostart</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>De registratie kon niet worden geactiveerd, omdat het volgende bestand ontbreekt:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>Tijd overschrijding bij de uninstaller</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Taak</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Browser Helper Objekt</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>Waarde mag niet leeg of null zijn</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>Waarde mag geen nieuwe regels bevatten</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Ongeldige of onbekende opstart registersleutel(s):</value>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>Windows Store App</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>Nieuwe voorwaarde</value>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Is niet geregistreerd</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>Verwijderen van Store App gegevens is een probleem</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Eenvoudig verwijderen</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>De map is of zal leeg zijn na het verwijderen van rommel.</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Service</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>Alle eigenschappen</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>Scannen op geïnstalleerde MSI producten...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Gevonden {0} programma GUID's</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>Register scannen op de-installers...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Zoeken naar Windows updates</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>Ontbrekende informatie genereren...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Verzamelen registersleutels</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>Verwerking {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>Genereren ontbrekende de-installer informatie</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>Schijven scannen op programma's</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>Verzamelen mappen</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>Scannen programma opslag plaatsen...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>Zoeken naar programma templates</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>Zoeken naar Steam Apps</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Zoeken naar Windows Store Apps</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Zoeken naar Windows onderdelen</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Samenvoegen ontdekte programma's...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Programma's samenvoegen uit stores</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Programma's samenvoegen van schijven</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>Firewall regel</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>Gebruikers assistentie</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>Windows foutrapportage rapport</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Instellen rommel scanners...</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Afronden...</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>Programma compatibiliteit</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>CLSID klassen</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>De-installer verwijzing</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>De-installer lokatie</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>Snelkoppeling</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>Configuratie audiobeleid</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>Gebeurtenis logbestanden</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Traceer informatie</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>Geïnstalleerde maplijst</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>Gepauzeerd</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Zoeken naar opstart registraties</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Zoeken naar Chocolatey pakketten</value>\r\n  </data>\r\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\r\n    <value>De-installeren in Chocolatey</value>\r\n    <comment>Shown in junk results window</comment>\r\n  </data>\r\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\r\n    <value>Kan automatisch starten</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus Apps</value>\r\n  </data>\r\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\r\n    <value>Is een web browser</value>\r\n  </data>\r\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\r\n    <value>PowerShell script</value>\r\n  </data>\r\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Debug tracing/Loggging\r\nConfiguratie</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\r\n    <value>Zoeken naar Scoop pakketten</value>\r\n  </data>\r\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\r\n    <value>Kan bij een andere app horen met een vergelijkbare naam</value>\r\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Strona internetowa</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Kod produktu</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Nazwa</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Przycięta nazwa</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Wersja</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Przybliżony rozmiar</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Data instalacji</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Miejsce zainstalowania</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Źródło instalacji</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>Jest aplikacją 64-bitową</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>Jest chroniona</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>Jest aktualizacją</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>Jest prawidłowa</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Ścieżka modyfikacji</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Nazwa wydawcy</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Przycięta nazwa wydawcy</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>Cicha dezinstalacja jest możliwa</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Ścieżka cichej deisntalacji</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Nazwa klucza rejestru</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Ścieżka w rejestrze</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>Jest elementem systemowym</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Nazwa pliku dezinstalatora</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>Typ dezinstalatora</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>Dezinstalacja jest możliwa</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>Ścieżka dezinstalacji</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Komentarz</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Wyświetlana ikona</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Nieprawidłowa ścieżka</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Pewność</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>Deinstalator nieoczekiwanie przerwał pracę</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Pominięte przez urzytkownika</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>Ścieżka dezinstalatora</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>Żadna metoda dezinstalacji nie jest dostępna</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>Dezinstalator zwrócił kod: </value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Zła</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Dobra</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Wątpliwa</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Nieznana</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Bardzo dobra</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Deinstalator nadrzędny</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>Nazwa firmy nie pasuje</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>Nazwa firmy dopasowana</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>Katalog jest używany przez inne zainstalowane aplikacje</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>Pozycja jest wyraźnie wymieniona w dezinstalatorze</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Wpis rejestru z dezinstalatora</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>Pozycja wydaje się być cała w kategorii wydawcy</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>Nazwa produktu nie pasuje bardzo dobrze</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>Nazwa produktu idealnie dopasowana</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>Nazwa katalogu jest wątpliwa</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Nieznany</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Zakończono</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Niepowodzenie</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Nieprawidłowy</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Zabezpieczony</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Pominięty</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Dezinstalacja</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>Oczekiwanie</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Funkcja Windows</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Windows Installer</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inno setup</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Nullsoft Scriptable Install System </value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>Aplikacja jest zarejestrowana</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Nieprawidłowy filtr</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>Nowy filtr</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>Brak wyników</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Zawiera</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Kończy się na</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>Równa się</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Regex</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Zaczyna się na</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Zawiera dowolny</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Komendy autostartu</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>Nie będą one już otwierane podczas startu systemu. Upewnij się że wybrane elementy nie są wymagane przed ich usunięciem.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>Usunąć wybrane programy z autostartu?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Menedżer Autostartu</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>Ładowanie...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Pusty folder</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Obecne są pliki wykonywalne</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>Obecne są pliki</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Wiele plików jest obecnych</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>Nazwa programu jest rozpoznana</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>Brak podfolderów</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>Wydawca jest rozpoznany</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>Zostanie uruchomiony tylko raz</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>Wpis jest przypisany do aplikacji</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>Pozostałość w Program Files</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Rejestr</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Autostart</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Włączenie tej pozycji się nie powiodło, następujący plik nie został znaleziony:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>Upłynął limit czasu dezinstalatora</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Zadanie</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>Wartość nie może być zerowa lub pusta</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>Wartość nie może zawierać znaków nowej linii</value>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Browser Helper Object</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Nieprawidłowy lub nieznany klucz startowy:</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>Nowy warunek</value>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Jest niezarejestrowany</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>Usuwanie danych Store App jest problematyczne</value>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>Aplikacja Windows Store</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Proste usunięcie</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>Folder jest lub będzie pusty po usunięciu śmieci</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Usługa</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>Wszystkie właściwości</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>Pliki i katalogi</value>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>Skanowanie zainstalowanych produktów MSI ...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Znaleziono {0} GUIDów aplikacji</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>Skanowanie dezinstalatorów w rejestrze...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Gromadzenie kluczy rejestru</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>Przetwarzanie {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>Generowanie brakujacych informacji o deinstalatorach...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>Skanowanie aplikacji na dyskach...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>Zbieranie folderów</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>Skanowanie magazynów aplikacji...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>Wyszukiwanie szablonów aplikacji</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>Szukanie Steam Apps</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Szukanie programów Windows Store</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Szukanie funkcji systemu Windows</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Łączenie odkrytych aplikacji...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Łączenie aplikacji z magazynów</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Łączenie aplikacji z dysków</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>Generowanie brakujących informacji...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Aktualizacja systemu Windows</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Wyszukiwanie aktualizacji systemu Windows</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>Regula zapory</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>User assist</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>Raportowanie błędów systemu Windows</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Konfigurowanie skanerów śmieci ...</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Kończenie...</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>Zgodność aplikacji</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>Klasy CLSID</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>Klucz dezinstalatora</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>Lokalizacja dezinstalatora</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>Skrót</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>Konfiguracja zasad dźwięku</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>Dzienniki zdarzeń</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Informacje śledzenia</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>Lista folderów instalacyjnych</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>Wstrzymany</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Wyszukiwanie wpisów startowych</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Wyszukiwanie pakietów Chocolatey</value>\r\n  </data>\r\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\r\n    <value>Odinstaluj w Chocolatey</value>\r\n    <comment>Shown in junk results window</comment>\r\n  </data>\r\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\r\n    <value>Może uruchomić się automatycznie</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\r\n    <value>Aplikacje Oculus</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\r\n    <value>Przeglądarka internetowa</value>\r\n  </data>\r\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\r\n    <value>Skrypt PowerShell</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\r\n    <value>Szukanie paczek Scoop</value>\r\n  </data>\r\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\r\n    <value>Może należeć do innej aplikacji o podobnej nazwie</value>\r\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Página Web</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Código do produto</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Mostrar nome</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Mostrar nome abreviado</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Versão</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Tamanho estimado</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Data da instalação</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Local da instalação</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Origem da instalação</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>É uma aplicação de 64bit</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>Está protegido</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>Está atualizado</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>É válido</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Modificar caminho</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Nome do editor</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Nome abreviado do editor</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>Desinstalação silenciosa é possível</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Sequência de desinstalação silenciosa</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Nome da chave do registro</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Caminho do registro</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>É um componente do sistema</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Nome do arquivo do desinstalador</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>Tipo de desinstalador</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>A desinstalação é possível</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>Sequência de desinstalação</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Comentário</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Ícone exibido</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Caminho inválido</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Confiança</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>Tarefa da desinstalação interrompida prematuramente</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Ignorado pelo usuário</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>Local do desinstalador</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>Não existe uma maneira válida de desinstalar esta entrada</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>Desinstalador retornou o código de erro:</value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Mau</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Bom</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Duvidoso</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Desconhecido</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Muito bom</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Desinstalador de origem</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>O nome da empresa não coincidiu</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>O nome da empresa não correspondeu</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>O diretório é usado por outros aplicativos instalados</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>O item é explicitamente mencionado no desinstalador</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Entrada do registro do desinstalador</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>O item parece ser uma categoria de editor integral</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>O nome do produto não combinou muito bem</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>Nome do produto combinou perfeitamente</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>O nome do diretório é questionável</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Desconhecido</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Windows Installer</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inno Setup</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Nullsoft Scriptable Install System </value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Concluído</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Falhou</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Inválido</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Protegido</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Ignorado</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Desinstalando</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>Esperando</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>O aplicativo está registrado</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Filtro inválido</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>Novo filtro</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>Sem correspondência</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Contém</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Termina com</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>É igual a</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Regex</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Começa com</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Recurso do Windows</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Contém qualquer</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Comandos de inicialização</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>Eles não serão mais abertos durante a inicialização. Verifique se os itens selecionados não são necessários antes de removê-los.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>Remover programas selecionados da inicialização?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Gerenciador de Inicialização</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>Carregando...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Pasta vazia</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Executáveis estão presentes</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>Arquivos estão presentes</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Muitos arquivos estão presentes</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>O nome do programa é reconhecido</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>Não há subdiretórios</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>O editor é reconhecido</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>A entrada será executada apenas uma vez</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>A entrada é compatível com o aplicativo</value>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>Arquivos e diretórios</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>Arquivo de programas órfão</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Registro</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Inicialização</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Falha ao habilitar essa entrada, o seguinte arquivo não foi encontrado:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>Desinstalador expirou</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Tarefa</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Objeto Auxiliar do Navegador</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>O valor não pode ser nulo ou estar vazio</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>O valor não pode conter linhas novas</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Chave(s) de registro de inicialização inválida ou desconhecida:</value>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>Windows Store App</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>Nova condição</value>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Não está registrado</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>Remoção dos dados da App Store é problemática</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Eliminação Simples</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>O diretório é, ou estará vazio após a remoção de lixo.</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Serviço</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>Todas as propriedades</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>Analisando produtos MSI instalados...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Encontradas {0} aplicações GUID</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>Escaneando o registro para desinstaladores...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Reunindo as chaves do Registro</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>Processando {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>Gerando informações de desinstalador em falta...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>Escaneando drives em busca de aplicativos...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>Reunindo diretórios</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>Escaneando armazenagem de aplicativos...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>Procurando modelos de aplicativos</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>Procurando aplicativos do Steam</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Procurando aplicativos da Windows Store</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Procurando por Recurss do Windows</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Combinando aplicações descobertas...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Mesclando aplicações de lojas</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Mesclando aplicações das unidades</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>Gerando informações em falta...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Atualização do Windows</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Procurando atualizações do Windows</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>Regra do Firewall</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>Assistente do usuário</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>Relatórios de erro do Windows</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Configurando scanners de lixo ...</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Terminando...</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>Compatibilidade de aplicativos</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>Classes CLSID</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>Referência do desinstalador</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>Localização do Instalador</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>Atalho</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>Configuração de política de áudio</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>Registros de eventos</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Informação de rastreamento</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>Lista de pastas instaladas</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>Pausado</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Procurando por pacotes Chocolatey</value>\r\n  </data>\r\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\r\n    <value>Desinstalar pelo Chocolatey</value>\r\n    <comment>Shown in junk results window</comment>\r\n  </data>\r\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\r\n    <value>Pode iniciar automaticamente</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Procurando por entradas de inicialização</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\r\n    <value>Procurando por Apps Oculus</value>\r\n  </data>\r\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\r\n    <value>É um navegador</value>\r\n  </data>\r\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\r\n    <value>Powershell script</value>\r\n  </data>\r\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Configuração de Rastreio/Registro de Depuração</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\r\n    <value>Procurando por pacotes Scoop</value>\r\n  </data>\r\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\r\n    <value>Pode pertencer a um app diferente com nome parecido</value>\r\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Página Web</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Código do produto</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Mostrar nome</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Mostrar nome abreviado</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Versão</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Tamanho estimado</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Data da instalação</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Localização da instalação</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Origem da instalação</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>É uma aplicação de 64bit</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>Está protegido</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>Está actualizado</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>Está válido</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Modificar o percurso</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Nome do editor</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Trimmed publisher name</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>Desinstalação em segundo plano impossível</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Corrente da desinstalação em segundo plano</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Nome da chave do registo</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Percurso do registo</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>É um componente do sistema</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Nome do ficheiro do desinstalador</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>Tipo de desinstalador</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>A desinstalação é possível</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>Cadeia da desinstalação</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Comentário</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Ícone exibido</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Caminho inválido</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Confiança</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>Tarefa da desinstalação interrompida prematuramente</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Ignorado pelo utilizador</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>Localização do desinstalador</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>Não existe uma maneira válida para desinstalar esta entrada</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>Código de erro exibido pelo desinstalador:</value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Mau</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Bom</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Duvidoso</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Desconhecido</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Muito bom</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Desinstalador semelhante</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>O nome da empresa não coincide</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>O nome da empresa corresponde</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>O directório está a ser usado por outras aplicações instaladas</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>O item está mencionado explicitamente no desinstalador</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Entrada do registo do desinstalador</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>O elemento aparenta ser uma categoria completa de editor</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>O nome do produto não corresponde muito bem</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>O nome do produto coincide perfeitamente</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>O nome do directório é duvidoso</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Desconhecido</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Instalador Windows</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inicialização Inno</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Nullsoft Scriptable Install System </value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Completado</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Fracassou</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Inválido</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Protegido</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Ignorado</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Desinstalando</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>Em espera</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>A aplicação está registada</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Filtro inválido</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>Novo filtro</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>Sem correspondência</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Contém</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Termina com</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>Equivale</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Regex</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Começa por</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Funcionalidade Windows</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Contém tudo </value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Comandos de inicialização</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>Já não serão abertos durante o carregamento. Certifique-se de que os itens selecionados não serão necessários antes de os remover.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>Remover os programas seleccionados da inicialização?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Gestor da inicialização</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>A carregar...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Pasta vazia</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Executables are present</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>Estão presentes executáveis </value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Estão presentes muitos ficheiros</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>O nome do programa está reconhecido</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>Não existem subdirectórios</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>O editor está reconhecido</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>A entrada correrá apenas uma vez</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>A entrada corresponde à aplicação</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>Arquivos de Programas órfãos</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Registo</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Inicialização</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Falha ao activar esta entrada, o arquivo seguinte não foi encontrado:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>O desinstalador ultrapassou o tempo</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Tarefa</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Objectivo do Navegador Auxiliar</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>O valor não pode ser nulo ou estar vazio</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>O valor não admite novas linhas</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Chave(s) do registo de inicialização inválida(s) ou desconhecida(s)</value>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>Windows Store App</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>Nova condição</value>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Encontra-se não registada</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>Remoção dos dados App Store é problemática</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Excluir simplesmente</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>Todas as propriedades</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>Arquivos e Directórios</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>O Directório está, ou estará, vazio após a eliminação do lixo residual.</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Serviço</value>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>A analisar os produtos MSI instalados...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Encontradas {0} aplicações GUID</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>A analisar o registo de desinstalação ...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Reunindo as chaves do registo</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>A processar {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>A criar informações do desinstalador em falta...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>A analisar unidades para aplicações...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>A recolher Directórios</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>A procurar lojas de aplicativos...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>A procurar modelos de aplicativos</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>A procurar Aplicações de Steam</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Procurando por aplicações de Windows Store</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Procurando por funcionalidades do Windows</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Juntando aplicações encontradas</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Juntando aplicações das lojas</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Juntando aplicações das unidades</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>A gerar informação em falta...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Actualização do Windows</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Procurando por actualizações do Windows</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Pesquisa de itens de inicialização</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Webpage</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Product code</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Display name</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Trimmed display name</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Version</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Estimated size</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Date of installation</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Installation location</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Installation source</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>Is a 64bit application</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>Is protected</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>Is an update</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>Is valid</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Modify path</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Publisher name</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Trimmed publisher name</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>Quiet uninstall is possible</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Quiet uninstall string</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Registry key name</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Registry path</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>Is a system component</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Uninstaller file name</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>Uninstaller type</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>Uninstall is possible</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>Uninstall string</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Comment</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Displayed icon</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Invalid path</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Confidence</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>Uninstall worker stopped prematurely</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Skipped by user</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>Uninstaller location</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>There is no valid way of uninstalling this entry</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>Uninstaller returned error code: </value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Bad</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Good</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Questionable</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Unknown</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Very good</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Parent uninstaller</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>Company name did not match</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>Company name matched</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>Directory is used by other installed applications</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>Item is explicitly mentioned in the uninstaller</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Registry entry of the uninstaller</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>Item seems to be a whole publisher category</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>Product name did not match very well</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>Product name matched perfectly</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>Directory name is questionable</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Unknown</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Windows Installer</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inno Setup</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Nullsoft Scriptable Install System </value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Completed</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Failed</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Invalid</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Protected</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Skipped</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Uninstalling</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>Waiting</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>Application is registered</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Invalid filter</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>New filter</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>No matches</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Contains</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Ends with</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>Equals</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Regex</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Starts with</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Windows Feature</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Contains any</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Startup commands</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>They will no longer be opened during boot. Make sure the selected items are not required before removing them.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>Remove selected programs from startup?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Startup Manager</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>Loading...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Empty folder</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Executables are present</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>Files are present</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Many files are present</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>Program name is recognized</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>No sub directories</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>Publisher is recognized</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>Entry will be ran only once</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>Entry is matched to the application</value>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>Files and directories</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>Program Files orphan</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Registry</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Startup</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Failed to enable this entry, the following file was not found:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>Uninstaller timed out</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Task</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Browser Helper Object</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>Value cannot be null or empty</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>Value cannot contain newlines</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Invalid or unknown startup registry key(s):</value>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>Windows Store App</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>New condition</value>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Is unregistered</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>Removal of Store App data is problematic</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Simple Delete</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>Directory is, or will be empty after removing junk.</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Service</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>All properties</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>Scanning installed MSI products...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Found {0} application GUIDs</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>Scanning registry for uninstallers...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Gathering registry keys</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>Processing {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>Generating missing uninstaller information...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>Scanning drives for applications...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>Gathering directories</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>Scanning application stores...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>Searching for application templates</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>Searching for Steam Apps</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Searching for Windows Store Apps</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Searching for Windows Features</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Merging discovered applications...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Merging applications from stores</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Merging applications from drives</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>Generating missing information...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Windows Update</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Searching for Windows Updates</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>Firewall rule</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>User assist</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>Windows Error Reporting reports</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Setting up junk scanners...</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Finishing up...</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>Application compatibility</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>CLSID classes</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>Uninstaller reference</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>Uninstaller location</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>Shortcut</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>Audio policy config</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>Event Log logs</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Tracing information</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>Installed folder list</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>Paused</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Searching for Chocolatey packages</value>\r\n  </data>\r\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\r\n    <value>Uninstall in Chocolatey</value>\r\n    <comment>Shown in junk results window</comment>\r\n  </data>\r\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\r\n    <value>Can start automatically</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Searching for start-up entries</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\r\n    <value>Searching for Oculus Apps</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\r\n    <value>Is a web browser</value>\r\n  </data>\r\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\r\n    <value>PowerShell script</value>\r\n  </data>\r\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Debug Tracing/Logging Configuration</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\r\n    <value>Searching for Scoop packages</value>\r\n  </data>\r\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\r\n    <value>Might belong to a different app with a similar name</value>\r\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\r\n  </data>\r\n  <data name=\"Confidence_DirectlyInsideKnownFolder\" xml:space=\"preserve\">\r\n    <value>Located directly inside a Known Folder</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Официальный сайт</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Код продукта</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Название</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Короткое имя</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Версия</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Ожидаемый размер</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Дата установки</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Место установки</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Источник установки</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>64-бит</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>Защищен</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>Обновление</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>Действителен</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Изменить путь</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Имя издателя</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Короткое имя издателя</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>Тихое удаление</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Команда тихого удаления</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Имя ключа реестра</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Путь реестра</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>Системный компонент</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Имя деинсталлятора</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>Тип деинсталлятора</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>Удаление возможно</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>Команда удаления</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Комментарий</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Иконка</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Недопустимый путь</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Уверенность</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>Удаление прервано</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Пропущено пользователем</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>Путь деинсталлятора</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>Недействительный метод удаления</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>Деинсталлятор возвратил ошибку: </value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Плохо</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Хорошо</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Сомнительно</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Неизвестно</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Очень хорошо</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Родительское приложение</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>Имя компании не соответствует</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>Имя компании соответствует</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>Каталог установки используется другими приложениями</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>Элемент прямо упоминается в деинсталляторе</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Запись реестра деинсталлятора</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>Элемент кажется соответствующим издателю</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>Имя продукта не совсем соответствует</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>Имя продукта полностью соответствует</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>Имя каталога сомнительно</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Неизвестно</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Windows Installer</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inno Setup</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Nullsoft Scriptable Install System </value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Завершено</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Не удалось</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Недопустимый</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Защищённый</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Пропущен</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Деинсталляция</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>Ждите</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>Зарегистрировано</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Недопустимый фильтр</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>Новый фильтр</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>Нет совпадений</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Содержит</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Заканчивается</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>Равно</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Регулярное выражение</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Начинается с</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Компонент Windows</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Любое из</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Команда запуска</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>Они больше не будут стартовать при запуске системы. Убедитесь, что выбранные элементы не обязательные перед их удалением.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>Удалить выбранные программы из автозагрузки?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Менеджер автозагрузки</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>Загрузка...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Пустая папка</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Исполняемые файлы присутствуют</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>Файлы присутствуют</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Многие файлы присутствуют</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>Имя программы проверено</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>Нет вложенных папок</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>Издатель проверен</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>Будет запущено один раз</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>Запись соответствует приложению</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>Остатки в Program Files</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Реестр</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Автозагрузка</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Не удалось включить эту запись, следующий файл не был обнаружен:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>Истекло время удаления</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Задача планировщика</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Вспомогательный объект браузера</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>Значение не может быть нулевым или пустым</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>Значение не может содержать символ новой строки</value>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Неверный или неизвестный ключ реестра:</value>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>Приложение Windows</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>Новое состояние</value>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Незарегистрированный</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>Удаление приложений магазина является проблематичным</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Простое удаление</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>Все свойства</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>Файлы и папки</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>Папка уже или будет пуста после удаления мусора.</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Служба</value>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>Сканирование установленных MSI...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Найдено {0} GUID приложений</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>Сканирование реестра на деинсталляторы...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Сбор ключей реестра</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>Обработка {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>Создание инфо об отсутствующем деинсталляторе...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>Сканирование дисков на приложения...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>Сбор каталогов</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>Сканирование приложений...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>Поиск шаблонов приложений</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>Поиск Steam приложений</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Поиск приложений Windows Store</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Поиск компонентов Windows</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Слияние обнаруженных приложений...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Слияние приложений магазина</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Слияние приложений с дисков</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>Создание недостающей информации...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Обновления Windows</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Поиск обновлений Windows</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>Правило файрвола</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>Помощник пользователя</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>Отчёты об ошибках Windows</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Настройка сканеров мусора...</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Заканчиваю...</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>Совместимость приложений</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>Классы CLSID</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>Ссылка на удаление</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>Расположение деинсталлятора</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>Ярлык</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>Конфигурация звуковой политики</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>Журналы событий</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Информация о трассировке</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>Список папок установки</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>Пауза</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Поиск загрузочных записей</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Поиск пакетов Chocolatey</value>\r\n  </data>\r\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\r\n    <value>Удалить в Chocolatey</value>\r\n    <comment>Shown in junk results window</comment>\r\n  </data>\r\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\r\n    <value>Возможен автозапуск</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\r\n    <value>Поиск приложений Oculus</value>\r\n  </data>\r\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\r\n    <value>Является ли веб-браузером</value>\r\n  </data>\r\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\r\n    <value>Скрипт PowerShell</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\r\n    <value>Поиск пакетов Scoop</value>\r\n  </data>\r\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\r\n    <value>Может принадлежать другому приложению с похожим названием</value>\r\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\r\n    <value>Spletna stran</value>\r\n  </data>\r\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\r\n    <value>Koda izdelka</value>\r\n  </data>\r\n  <data name=\"DisplayName\" xml:space=\"preserve\">\r\n    <value>Prikazno ime</value>\r\n  </data>\r\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\r\n    <value>Skrajšano prikazno ime</value>\r\n  </data>\r\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\r\n    <value>Različica</value>\r\n  </data>\r\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\r\n    <value>Ocenjena velikost</value>\r\n  </data>\r\n  <data name=\"InstallDate\" xml:space=\"preserve\">\r\n    <value>Datum namestitve</value>\r\n  </data>\r\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\r\n    <value>Mesto namestitve</value>\r\n  </data>\r\n  <data name=\"InstallSource\" xml:space=\"preserve\">\r\n    <value>Vir namestitve</value>\r\n  </data>\r\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\r\n    <value>Je 64 bitna aplikacija</value>\r\n  </data>\r\n  <data name=\"IsProtected\" xml:space=\"preserve\">\r\n    <value>Je zaščitena</value>\r\n  </data>\r\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\r\n    <value>Je posodobljena</value>\r\n  </data>\r\n  <data name=\"IsValid\" xml:space=\"preserve\">\r\n    <value>Je veljavna</value>\r\n  </data>\r\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\r\n    <value>Spremeni pot</value>\r\n  </data>\r\n  <data name=\"Publisher\" xml:space=\"preserve\">\r\n    <value>Ime založnika</value>\r\n  </data>\r\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\r\n    <value>Obrezano ime založnika</value>\r\n  </data>\r\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\r\n    <value>Možna je tiha odstranitev</value>\r\n  </data>\r\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\r\n    <value>Niz tihe odstranitve</value>\r\n  </data>\r\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\r\n    <value>Ime registrskega ključa</value>\r\n  </data>\r\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\r\n    <value>Pot v registru</value>\r\n  </data>\r\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\r\n    <value>Je sistemska sestavina</value>\r\n  </data>\r\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\r\n    <value>Ime datoteke odstranjevalca</value>\r\n  </data>\r\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\r\n    <value>Vrsta odstranjevalca</value>\r\n  </data>\r\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\r\n    <value>Možno je odstranjevanje</value>\r\n  </data>\r\n  <data name=\"UninstallString\" xml:space=\"preserve\">\r\n    <value>Odstranjevalni niz</value>\r\n  </data>\r\n  <data name=\"Comment\" xml:space=\"preserve\">\r\n    <value>Komentar</value>\r\n  </data>\r\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\r\n    <value>Prikazana ikona</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Neveljavna pot</value>\r\n  </data>\r\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\r\n    <value>Zaupanje</value>\r\n  </data>\r\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\r\n    <value>Predčasno ustavljeno delo odstranjevalca</value>\r\n  </data>\r\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\r\n    <value>Preskočil je uporabnik</value>\r\n  </data>\r\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\r\n    <value>Mesto odstranjevalca</value>\r\n  </data>\r\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\r\n    <value>Za odstranjevanje tega vnosa, tukaj ni veljavnega načina </value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\r\n    <value>Odstranjevalec je vrnil kodo napake: </value>\r\n  </data>\r\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\r\n    <value>Slabo</value>\r\n  </data>\r\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\r\n    <value>Dobro</value>\r\n  </data>\r\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\r\n    <value>Vprašljivo</value>\r\n  </data>\r\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\r\n    <value>Neznano</value>\r\n  </data>\r\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\r\n    <value>Zelo dobro</value>\r\n  </data>\r\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\r\n    <value>Nadrejeni odstranjevalec</value>\r\n    <comment>Most of the time used to show parent application of an update</comment>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\r\n    <value>Ime podjetja se ni ujemalo</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\r\n    <value>Ime podjetja se je ujemalo</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\r\n    <value>Imenik je uporabljen z drugimi, nameščenimi aplikacijami</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\r\n    <value>Vnos je izrecno naveden v odstranjevalcu</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\r\n    <value>Registrski vnos odstranjevalca</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\r\n    <value>Videti je, da je niz celotna kategorija založnika</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\r\n    <value>Ime izdelka se zelo dobro ne ujema </value>\r\n  </data>\r\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\r\n    <value>Ime izdelka se popolnoma ujema</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\r\n    <value>Vprašljivo je ime imenika</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\r\n    <value>Neznano</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\r\n    <value>Windows namestitveni program</value>\r\n  </data>\r\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\r\n    <value>Inno Setup</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\r\n    <value>Steam</value>\r\n  </data>\r\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\r\n    <value>Nullsoft Scriptable Install System </value>\r\n  </data>\r\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\r\n    <value>InstallShield</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\r\n    <value>SDBInst</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\r\n    <value>Zaključeno</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\r\n    <value>Spodletelo</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\r\n    <value>Neveljavno</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\r\n    <value>Zaščiteno</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\r\n    <value>Preskočeno</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\r\n    <value>Odstranjevanje</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\r\n    <value>Čakanje</value>\r\n  </data>\r\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\r\n    <value>Aplikacija je registrirana</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\r\n    <value>Neveljaven filter</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\r\n    <value>Nov filter</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\r\n    <value>Ni ujemanja</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\r\n    <value>Vsebuje</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\r\n    <value>Konča z</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\r\n    <value>Enako</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\r\n    <value>Regex</value>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\r\n    <value>Začne z</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\r\n    <value>Windows funkcija</value>\r\n    <comment>Used to mark windows features on the uninstaller list</comment>\r\n  </data>\r\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\r\n    <value>Vsebuje karkoli</value>\r\n    <comment>As in \"matches any word from this string\"</comment>\r\n  </data>\r\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\r\n    <value>Zagonski ukazi</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\r\n    <value>Ne bodo več odprti med zagonom sistema. Preden jih odstranite se prepričajte, da izbrani vnosi niso potrebni.</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\r\n    <value>Ob zagonu, naj odstranim izbrane programe?</value>\r\n  </data>\r\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\r\n    <value>Upravitelj zagona</value>\r\n  </data>\r\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\r\n    <value>Nalaganje...</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\r\n    <value>Prazna mapa</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\r\n    <value>Prisotne so izvršljive datoteke</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\r\n    <value>Prisotne so datoteke</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\r\n    <value>Prisotnih je veliko datotek</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\r\n    <value>Ime programa je prepoznano</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\r\n    <value>Ni podimenikov</value>\r\n  </data>\r\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\r\n    <value>Založnik je prepoznan</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\r\n    <value>Vnos bo zagnan samo enkrat</value>\r\n  </data>\r\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\r\n    <value>Vnos se ujema z aplikacijo</value>\r\n  </data>\r\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\r\n    <value>Sirota programskih datotek</value>\r\n  </data>\r\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\r\n    <value>Register</value>\r\n  </data>\r\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\r\n    <value>Zagon</value>\r\n  </data>\r\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\r\n    <value>Spodletelo je omogočanje tega vnosa. Naslednja datoteka ni bila najdena:</value>\r\n  </data>\r\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\r\n    <value>Odstranjevalec je potekel</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\r\n    <value>Opravilo</value>\r\n    <comment>Fom Task Scheduler</comment>\r\n  </data>\r\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\r\n    <value>Pomožni predmet brskalnika (BHO)</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\r\n    <value>Vrednost ne sme niti null ali prazna</value>\r\n  </data>\r\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\r\n    <value>Vrednost ne sme vsebovati novih vrstic</value>\r\n  </data>\r\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\r\n    <value>Je neregistriran</value>\r\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\r\n  </data>\r\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\r\n    <value>Neveljavni ali neznani zagonski ključi v registru:</value>\r\n  </data>\r\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\r\n    <value>Windows Store Aplikacija</value>\r\n  </data>\r\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\r\n    <value>Nov pogoj</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\r\n    <value>Odstranitev Store Aplikacije je problematično</value>\r\n  </data>\r\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\r\n    <value>Preprosto izbriši</value>\r\n  </data>\r\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\r\n    <value>Datoteke in imeniki</value>\r\n  </data>\r\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\r\n    <value>Imenik je ali bo prazen po odstranjevanju odpadkov.</value>\r\n  </data>\r\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\r\n    <value>Storitev</value>\r\n  </data>\r\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\r\n    <value>Vse lastnosti</value>\r\n    <comment>Used in the search box to specify what's being compared</comment>\r\n  </data>\r\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\r\n    <value>Pregledovanje nameščenih izdelkov MSI ...</value>\r\n  </data>\r\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\r\n    <value>Najdeno {0} GUIDov aplikacije</value>\r\n  </data>\r\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\r\n    <value>Pregled registra za iskanje odstranjevalcev...</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\r\n    <value>Zbiranjev ključev registra</value>\r\n  </data>\r\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\r\n    <value>Obdelava {0}</value>\r\n  </data>\r\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\r\n    <value>Ustvarjanje manjkajočih informacij o odstranjevalcu...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\r\n    <value>Pregled pogonov za iskanje aplikacij...</value>\r\n  </data>\r\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\r\n    <value>Zbiranje imenikov</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\r\n    <value>Iskanje shranjenih aplikacij ...</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\r\n    <value>Iskanje predlog za aplikacijo</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\r\n    <value>Iskanje Steam Apps</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\r\n    <value>Iskanje Windows Store Apps</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\r\n    <value>Iskanje funkcij sistema Windows</value>\r\n  </data>\r\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\r\n    <value>Združevanje odkritih aplikacij ...</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\r\n    <value>Združevanje aplikacij iz trgovin</value>\r\n  </data>\r\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\r\n    <value>Združevanje aplikacij iz pogonov</value>\r\n  </data>\r\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\r\n    <value>Ustvarjanje manjkajočih podatkov...</value>\r\n  </data>\r\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\r\n    <value>Posodobitev Windows</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\r\n    <value>Iskanje posodobitev Windows</value>\r\n  </data>\r\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\r\n    <value>Pravilo požarnega zidu</value>\r\n  </data>\r\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\r\n    <value>Pomoč uporabnikom</value>\r\n  </data>\r\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\r\n    <value>Poročila o poročanju o napakah v sistemu Windows</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Nastavitev iskalnikov smetja...</value>\r\n  </data>\r\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\r\n    <value>Dokončanje...</value>\r\n  </data>\r\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\r\n    <value>Združljivost aplikacije</value>\r\n  </data>\r\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\r\n    <value>CLSID razredi</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\r\n    <value>Priporočilo odstranjevalca</value>\r\n  </data>\r\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\r\n    <value>Mesto odstranjevalca</value>\r\n  </data>\r\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\r\n    <value>Bližnjica</value>\r\n  </data>\r\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\r\n    <value>Konfiguracija zvočnih politik</value>\r\n  </data>\r\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\r\n    <value>Dnevniki dnevnika dogodkov</value>\r\n  </data>\r\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\r\n    <value>Podatki o sledenju</value>\r\n  </data>\r\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\r\n    <value>Pavzirano</value>\r\n  </data>\r\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\r\n    <value>Seznam nameščenih map</value>\r\n  </data>\r\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\r\n    <value>Iskanje zagonskih vnosov</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Chocolatey</value>\r\n  </data>\r\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\r\n    <value>Iskanje Chocolatey paketov</value>\r\n  </data>\r\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\r\n    <value>Odstrani v Chocolatey</value>\r\n    <comment>Shown in junk results window</comment>\r\n  </data>\r\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\r\n    <value>Lahko se zažene samodejno</value>\r\n  </data>\r\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\r\n    <value>Oculus aplikacije</value>\r\n  </data>\r\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\r\n    <value>Je spletni brskalnik</value>\r\n  </data>\r\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\r\n    <value>PowerShell skripta</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\n    <value>Webbsida</value>\n  </data>\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\n    <value>Produktkod</value>\n  </data>\n  <data name=\"DisplayName\" xml:space=\"preserve\">\n    <value>Visningsnamn</value>\n  </data>\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\n    <value>Kort visningsnamn</value>\n  </data>\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\n    <value>Uppskattad storlek</value>\n  </data>\n  <data name=\"InstallDate\" xml:space=\"preserve\">\n    <value>Installationsdatum</value>\n  </data>\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\n    <value>Installationsplats</value>\n  </data>\n  <data name=\"InstallSource\" xml:space=\"preserve\">\n    <value>Installationskälla</value>\n  </data>\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\n    <value>Är en 64-bitars app</value>\n  </data>\n  <data name=\"IsProtected\" xml:space=\"preserve\">\n    <value>Är skyddad</value>\n  </data>\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\n    <value>Är en uppdatering</value>\n  </data>\n  <data name=\"IsValid\" xml:space=\"preserve\">\n    <value>Är giltig</value>\n  </data>\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\n    <value>Ändra sökväg</value>\n  </data>\n  <data name=\"Publisher\" xml:space=\"preserve\">\n    <value>Utgivarens namn</value>\n  </data>\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\n    <value>Kort förlagsnamn</value>\n  </data>\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\n    <value>Tyst avinstallation möjlig</value>\n  </data>\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\n    <value>Tyst avinstallations-sträng</value>\n  </data>\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\n    <value>Registernyckel</value>\n  </data>\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\n    <value>Register sökväg</value>\n  </data>\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\n    <value>Är en systemkomponent</value>\n  </data>\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\n    <value>Avinstallation filnamn</value>\n  </data>\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\n    <value>Avinstallationstyp</value>\n  </data>\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\n    <value>Avinstallation möjlig</value>\n  </data>\n  <data name=\"UninstallString\" xml:space=\"preserve\">\n    <value>Avinstallations-sträng</value>\n  </data>\n  <data name=\"Comment\" xml:space=\"preserve\">\n    <value>Kommentar</value>\n  </data>\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\n    <value>Visad ikon</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>Ogiltig sökväg</value>\n  </data>\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\n    <value>Tillförlitlighet</value>\n  </data>\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\n    <value>Avinstallationsarbetaren stoppades i förtid</value>\n  </data>\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\n    <value>Överhoppad av användaren</value>\n  </data>\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\n    <value>Avinstallationsplats</value>\n  </data>\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\n    <value>Det finns inget giltigt sätt att avinstallera denna post</value>\n  </data>\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\n    <value>Avinstallationsprogrammet returnerade felkod:</value>\n  </data>\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\n    <value>Dålig</value>\n  </data>\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\n    <value>God</value>\n  </data>\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\n    <value>Tveksam</value>\n  </data>\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\n    <value>Okänd</value>\n  </data>\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\n    <value>Väldigt god</value>\n  </data>\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\n    <value>Förälder avinstallationsprogram</value>\n    <comment>Most of the time used to show parent application of an update</comment>\n  </data>\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\n    <value>Företagsnamn matchade inte</value>\n  </data>\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\n    <value>Företagsnamn matchade</value>\n  </data>\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\n    <value>Katalogen används av andra installerade appar</value>\n  </data>\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\n    <value>Objektet är uttryckligen nämnt i avinstallationsprogrammet</value>\n  </data>\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\n    <value>Registerpost för avinstallationsprogrammet</value>\n  </data>\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\n    <value>Objektet verkar vara en hel förlagskategori</value>\n  </data>\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\n    <value>Produktnamnet matchade inte så bra</value>\n  </data>\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\n    <value>Produktnamnet matchade perfekt</value>\n  </data>\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\n    <value>Katalognamnet är tveksamt</value>\n  </data>\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\n    <value>Okänd</value>\n  </data>\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\n    <value>Windows Installer</value>\n  </data>\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\n    <value>Inno Setup</value>\n  </data>\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\n    <value>Steam</value>\n  </data>\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\n    <value>Nullsoft Scriptable Install System </value>\n  </data>\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\n    <value>InstallShield</value>\n  </data>\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\n    <value>SDBInst</value>\n  </data>\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\n    <value>Slutförd</value>\n  </data>\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\n    <value>Misslyckad</value>\n  </data>\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\n    <value>Ogiltig</value>\n  </data>\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\n    <value>Skyddad</value>\n  </data>\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\n    <value>Överhoppad</value>\n  </data>\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\n    <value>Avinstallerar</value>\n  </data>\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\n    <value>Väntar</value>\n  </data>\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\n    <value>Appen är registrerad</value>\n  </data>\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\n    <value>Ogiltigt filter</value>\n  </data>\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\n    <value>Nytt filter</value>\n  </data>\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\n    <value>Inga matchningar</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\n    <value>Innehåller</value>\n  </data>\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\n    <value>Slutar med</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\n    <value>Är lika med</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\n    <value>Börjar med</value>\n  </data>\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\n    <value>Windowsfunktion</value>\n    <comment>Used to mark windows features on the uninstaller list</comment>\n  </data>\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\n    <value>Innehåller något av</value>\n    <comment>As in \"matches any word from this string\"</comment>\n  </data>\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\n    <value>Startkommandon</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\n    <value>De kommer inte längre att öppnas under uppstart. Se till att de valda objekten inte krävs innan du tar bort dem.</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\n    <value>Ta bort valda program från uppstarten?</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\n    <value>Uppstartshanterare</value>\n  </data>\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\n    <value>Laddar...</value>\n  </data>\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\n    <value>Tom mapp</value>\n  </data>\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\n    <value>Exekverbara filer finns tillgängliga.</value>\n  </data>\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\n    <value>Filer finns</value>\n  </data>\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\n    <value>Många filer finns</value>\n  </data>\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\n    <value>Programnamnet är känt.</value>\n  </data>\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\n    <value>Inga underkataloger.</value>\n  </data>\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\n    <value>Utgivaren är identifierad.</value>\n  </data>\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\n    <value>Posten kommer endast att köras en gång.</value>\n  </data>\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\n    <value>Posten är kopplad till applikationen.</value>\n  </data>\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\n    <value>Filer och mappar</value>\n  </data>\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\n    <value>Programfiler utan överordnad.</value>\n  </data>\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\n    <value>Register</value>\n  </data>\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\n    <value>Uppstart</value>\n  </data>\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\n    <value>Det gick inte att aktivera denna post, följande fil hittades inte:</value>\n  </data>\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\n    <value>Avinstallationsprogrammet svarade inte.</value>\n  </data>\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\n    <value>Uppgift</value>\n    <comment>Fom Task Scheduler</comment>\n  </data>\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\n    <value>Webbläsarhjälpobjekt</value>\n  </data>\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\n    <value>Värde kan inte vara null eller tomt</value>\n  </data>\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\n    <value>Värde kan inte innehålla radbrytningar</value>\n  </data>\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\n    <value>Ogiltig eller okänd uppstarts-registernyckel</value>\n  </data>\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\n    <value>Windows Store App</value>\n  </data>\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\n    <value>Ny villkor</value>\n  </data>\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\n    <value>Är oregistrerad</value>\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\n  </data>\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\n    <value>Borttagning av Store App data är problematiskt</value>\n  </data>\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\n    <value>Enkel Radering</value>\n  </data>\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\n    <value>Mappen är, eller blir tom efter borttagning av skräp.</value>\n  </data>\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\n    <value>Tjänst</value>\n  </data>\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\n    <value>Alla egenskaper</value>\n    <comment>Used in the search box to specify what's being compared</comment>\n  </data>\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\n    <value>Scannar installerade MSI produkter...</value>\n  </data>\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\n    <value>Hittade {0} app GUIDs</value>\n  </data>\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\n    <value>Scanna registret efter avinstallationsprogram...</value>\n  </data>\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\n    <value>Samlar registernycklar</value>\n  </data>\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\n    <value>Bearbetar {0}</value>\n  </data>\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\n    <value>Genererar saknad avinstallations-info</value>\n  </data>\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\n    <value>Scannar enheter efter appar...</value>\n  </data>\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\n    <value>Samlar kataloger</value>\n  </data>\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\n    <value>Scannar app-stores</value>\n  </data>\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\n    <value>Söker efter applikationsmallar.</value>\n  </data>\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\n    <value>Söker efter Steam Appar</value>\n  </data>\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\n    <value>Söker efter Windows Store Apps</value>\n  </data>\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\n    <value>Söker efter Windows-funktioner</value>\n  </data>\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\n    <value>Sammanfogar upptäckta appar…</value>\n  </data>\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\n    <value>Sammanfogar appar från Stores</value>\n  </data>\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\n    <value>Sammanfogar appar från enheter</value>\n  </data>\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\n    <value>Generar saknad information...</value>\n  </data>\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\n    <value>Windows Update</value>\n  </data>\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\n    <value>Söker efter Windows Updates</value>\n  </data>\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\n    <value>Brandväggsregel</value>\n  </data>\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\n    <value>Användar-assistans</value>\n  </data>\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\n    <value>Windows felrapporterings-rapporter</value>\n  </data>\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\n    <value>Konfigurerar skräp-skannrar…</value>\n  </data>\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\n    <value>Avslutar…</value>\n  </data>\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\n    <value>App kompatibilitet</value>\n  </data>\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\n    <value>CLSID klasser</value>\n  </data>\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\n    <value>Referens för avinstallationsprogrammet</value>\n  </data>\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\n    <value>Plats för avinstallationsprogrammet</value>\n  </data>\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\n    <value>Genväg</value>\n  </data>\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\n    <value>Ljudpolicy konfiguration</value>\n  </data>\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\n    <value>Händelseloggar</value>\n  </data>\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\n    <value>Spårnings-information</value>\n  </data>\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\n    <value>Installationsmapp-lista</value>\n  </data>\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\n    <value>Pausad</value>\n  </data>\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\n    <value>Chocolatey</value>\n  </data>\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\n    <value>Söker efter Chocolatey paket</value>\n  </data>\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\n    <value>Avinstallera i Chocolatey</value>\n    <comment>Shown in junk results window</comment>\n  </data>\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\n    <value>Kan starta automatiskt</value>\n  </data>\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\n    <value>Söker efter uppstarts-poster</value>\n  </data>\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\n    <value>Söker efter Oculus Apps</value>\n  </data>\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\n    <value>Oculus</value>\n  </data>\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\n    <value>Är en webbläsare</value>\n  </data>\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\n    <value>PowerShell script</value>\n  </data>\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\n    <value>Debug Spårning/Loggning Konfiguration</value>\n  </data>\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\n    <value>Söker efter Scoop paket</value>\n  </data>\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\n    <value>Kanske tillhör en annan app med liknande namn</value>\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\n    <value>İnternet sayfası</value>\n  </data>\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\n    <value>Ürün kodu</value>\n  </data>\n  <data name=\"DisplayName\" xml:space=\"preserve\">\n    <value>Görüntülenen ad</value>\n  </data>\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\n    <value>Kesilmiş görünen ad</value>\n  </data>\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\n    <value>Versiyon</value>\n  </data>\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\n    <value>Tahmini boyut</value>\n  </data>\n  <data name=\"InstallDate\" xml:space=\"preserve\">\n    <value>Kurulum tarihi</value>\n  </data>\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\n    <value>Kurulum yeri</value>\n  </data>\n  <data name=\"InstallSource\" xml:space=\"preserve\">\n    <value>Kurulum kaynağı</value>\n  </data>\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\n    <value>64 bit uygulama</value>\n  </data>\n  <data name=\"IsProtected\" xml:space=\"preserve\">\n    <value>Korunuyor</value>\n  </data>\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\n    <value>Bir güncelleme</value>\n  </data>\n  <data name=\"IsValid\" xml:space=\"preserve\">\n    <value>Geçerli</value>\n  </data>\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\n    <value>Düzenleme yolu</value>\n  </data>\n  <data name=\"Publisher\" xml:space=\"preserve\">\n    <value>Yayıncı adı</value>\n  </data>\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\n    <value>Kesilmiş yayıncı adı</value>\n  </data>\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\n    <value>Sessiz kaldırma mümkün</value>\n  </data>\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\n    <value>Sessiz kaldırma dizesi</value>\n  </data>\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\n    <value>Kayıt defteri anahtarı adı</value>\n  </data>\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\n    <value>Kayıt defteri yolu</value>\n  </data>\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\n    <value>Bir sistem bileşeni mi</value>\n  </data>\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\n    <value>Kaldırıcı dosya adı</value>\n  </data>\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\n    <value>Kaldırıcı türü</value>\n  </data>\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\n    <value>Kaldırma mümkündür</value>\n  </data>\n  <data name=\"UninstallString\" xml:space=\"preserve\">\n    <value>Uninstall string</value>\n  </data>\n  <data name=\"Comment\" xml:space=\"preserve\">\n    <value>Yorum Yap</value>\n  </data>\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\n    <value>Görüntülenen simge</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>Geçersiz yol</value>\n  </data>\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\n    <value>Güven</value>\n  </data>\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\n    <value>Kaldırma erken durduruldu</value>\n  </data>\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\n    <value>Kullanıcı tarafından atlandı</value>\n  </data>\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\n    <value>Kaldırıcı konumu</value>\n  </data>\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\n    <value>Bu girişi kaldırmanın geçerli bir yolu yok</value>\n  </data>\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\n    <value>Kaldırıcı hata kodu döndürdü:</value>\n  </data>\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\n    <value>Kötü</value>\n  </data>\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\n    <value>İyi</value>\n  </data>\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\n    <value>Kuşkulu</value>\n  </data>\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\n    <value>Bilinmeyen</value>\n  </data>\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\n    <value>Çok iyi</value>\n  </data>\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\n    <value>Ebeveyn kaldırıcı</value>\n    <comment>Most of the time used to show parent application of an update</comment>\n  </data>\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\n    <value>Şirket adı eşleşmedi</value>\n  </data>\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\n    <value>Şirket adı eşleşti</value>\n  </data>\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\n    <value>Dizin diğer yüklü uygulamalar tarafından kullanılır</value>\n  </data>\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\n    <value>Öğe, kaldırıcıda açıkça belirtilmiştir</value>\n  </data>\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\n    <value>Kaldırıcı kayıt defteri girişi</value>\n  </data>\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\n    <value>Öğe, bir yayıncı kategorisi gibi görünüyor</value>\n  </data>\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\n    <value>Ürün adı çok iyi uyuşmuyor</value>\n  </data>\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\n    <value>Ürün adı mükemmel bir şekilde eşleşti</value>\n  </data>\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\n    <value>Dizin adı sorgulanabilir</value>\n  </data>\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\n    <value>Bilinmeyen</value>\n  </data>\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\n    <value>Windows yükleyici</value>\n  </data>\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\n    <value>Inno Kurulumu</value>\n  </data>\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\n    <value>Steam</value>\n  </data>\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\n    <value>Nullsoft Scriptable Yükleme Sistemi</value>\n  </data>\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\n    <value>InstallShield</value>\n  </data>\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\n    <value>SDBInst</value>\n  </data>\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\n    <value>Tamamlandı</value>\n  </data>\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\n    <value>Başarısız oldu</value>\n  </data>\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\n    <value>Geçersiz</value>\n  </data>\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\n    <value>Korumalı</value>\n  </data>\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\n    <value>Atlandı</value>\n  </data>\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\n    <value>Kaldırılıyor</value>\n  </data>\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\n    <value>Bekleniyor</value>\n  </data>\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\n    <value>Uygulama kayıtlı</value>\n  </data>\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\n    <value>Geçersiz filtre</value>\n  </data>\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\n    <value>Yeni filtre</value>\n  </data>\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\n    <value>Eşleşme yok</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\n    <value>İçeren</value>\n  </data>\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\n    <value>İle biten</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\n    <value>Eşittir</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\n    <value>Düzenli ifade</value>\n  </data>\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\n    <value>İle başlar</value>\n  </data>\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\n    <value>Windows Özelliği</value>\n    <comment>Used to mark windows features on the uninstaller list</comment>\n  </data>\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\n    <value>Herhangi biri</value>\n    <comment>As in \"matches any word from this string\"</comment>\n  </data>\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\n    <value>Başlangıç komutları</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\n    <value>Artık önyükleme sırasında açılmayacaklar. Çıkarmadan önce seçilen öğelerin gerekli olmadığından emin olun.</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\n    <value>Seçilen programlar başlangıçtan kaldırılsın mı?</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\n    <value>Başlangıç Yöneticisi</value>\n  </data>\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\n    <value>Yükleniyor...</value>\n  </data>\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\n    <value>Boş klasör</value>\n  </data>\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\n    <value>Yürütülebilir dosyalar mevcut</value>\n  </data>\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\n    <value>Dosyalar mevcut</value>\n  </data>\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\n    <value>Birçok dosya mevcut</value>\n  </data>\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\n    <value>Program adı doğrulandı</value>\n  </data>\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\n    <value>Alt klasör yok</value>\n  </data>\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\n    <value>Yayıncı Doğrulandı</value>\n  </data>\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\n    <value>Bir kez başlatılacak</value>\n  </data>\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\n    <value>Giriş uygulama ile eşleşti</value>\n  </data>\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\n    <value>Dosyalar ve dizinler</value>\n  </data>\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\n    <value>Program dosyalarında kalır</value>\n  </data>\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\n    <value>Kayıt defteri</value>\n  </data>\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\n    <value>Başlangıç</value>\n  </data>\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\n    <value>Bu giriş etkinleştirilemedi, aşağıdaki dosya bulunamadı:</value>\n  </data>\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\n    <value>Kaldırıcı zaman aşımına uğradı</value>\n  </data>\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\n    <value>Görev</value>\n    <comment>Fom Task Scheduler</comment>\n  </data>\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\n    <value>Tarayıcı Yardımcı Nesnesi</value>\n  </data>\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\n    <value>Değer, içeriksiz veya boş olamaz</value>\n  </data>\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\n    <value>Değer yeni satırlar içeremez</value>\n  </data>\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\n    <value>Geçersiz veya bilinmeyen başlangıç kayıt defteri anahtar(ları)ı:</value>\n  </data>\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\n    <value>Windows Mağazası Uygulaması</value>\n  </data>\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\n    <value>Yeni durum</value>\n  </data>\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\n    <value>Kayıtsız</value>\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\n  </data>\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\n    <value>Mağaza Uygulama verilerinin kaldırılması sorunludur</value>\n  </data>\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\n    <value>Basit Sil</value>\n  </data>\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\n    <value>Dizin gereksiz veya kaldırıldıktan sonra boş olacaktır.</value>\n  </data>\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\n    <value>Servis</value>\n  </data>\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\n    <value>Tüm özellikler</value>\n    <comment>Used in the search box to specify what's being compared</comment>\n  </data>\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\n    <value>Yüklü MSI ürünleri taranıyor...</value>\n  </data>\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\n    <value>{0} uygulama GUID'si bulundu</value>\n  </data>\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\n    <value>Kaldırma amaçlı yüklemeler için kayıt tarama ...</value>\n  </data>\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\n    <value>Kayıt defteri anahtarlarını toplanıyor</value>\n  </data>\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\n    <value>{0} işleniyor</value>\n  </data>\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\n    <value>Eksik kaldırıcı bilgileri oluşturuluyor ...</value>\n  </data>\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\n    <value>Uygulamalar için sürücüler taranıyor ...</value>\n  </data>\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\n    <value>Dizinler toplanıyor</value>\n  </data>\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\n    <value>Tarama uygulamaları depolanıyor ...</value>\n  </data>\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\n    <value>Uygulama şablonları aranıyor</value>\n  </data>\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\n    <value>Steam Uygulamaları Aranıyor</value>\n  </data>\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\n    <value>Windows Mağazası Uygulamaları aranıyor</value>\n  </data>\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\n    <value>Windows Özellikleri aranıyor</value>\n  </data>\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\n    <value>Keşfedilen uygulamalar birleştiriliyor...</value>\n  </data>\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\n    <value>Uygulamaları mağazalardan birleştirme</value>\n  </data>\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\n    <value>Uygulamaları sürücülerden birleştirme</value>\n  </data>\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\n    <value>Kayıp bilgileri üretiliyor</value>\n  </data>\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\n    <value>Windows Güncelleme</value>\n  </data>\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\n    <value>Windows Güncellemeleri aranıyor</value>\n  </data>\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\n    <value>Güvenlik duvarı kuralı</value>\n  </data>\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\n    <value>Kullanıcı yardımı</value>\n  </data>\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\n    <value>Windows Hata Bildirimi raporları</value>\n  </data>\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\n    <value>Önemsiz tarayıcıların ayarlanması ...</value>\n  </data>\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\n    <value>Bitiriliyor...</value>\n  </data>\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\n    <value>Uygulama uyumluluğu</value>\n  </data>\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\n    <value>CLSID sınıfları</value>\n  </data>\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\n    <value>Kaldırıcı referansı</value>\n  </data>\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\n    <value>Kaldırıcı konumu</value>\n  </data>\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\n    <value>Kısayol</value>\n  </data>\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\n    <value>Ses politikası yapılandırması</value>\n  </data>\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\n    <value>Olay Günlüğü günlükleri</value>\n  </data>\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\n    <value>İzleme bilgileri</value>\n  </data>\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\n    <value>Yüklü klasör listesi</value>\n  </data>\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\n    <value>Durduruldu</value>\n  </data>\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\n    <value>Chocolatey</value>\n  </data>\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\n    <value>Chocolatey paketleri aranıyor</value>\n  </data>\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\n    <value>Chocolatey ile kaldır</value>\n    <comment>Shown in junk results window</comment>\n  </data>\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\n    <value>Otomatik olarak başlayabilir</value>\n  </data>\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\n    <value>Başlangıç girişleri aranıyor</value>\n  </data>\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\n    <value>Oculus Uygulamaları</value>\n  </data>\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\n    <value>Oculus</value>\n  </data>\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\n    <value>Bir web tarayıcısı mı</value>\n  </data>\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\n    <value>PowerShell betiği</value>\n  </data>\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\n    <value>Hata Ayıklama İzleme/Günlüğe Kaydetme Yapılandırması</value>\n  </data>\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\n    <value>Scoop paketleri aranıyor</value>\n  </data>\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\n    <value>Benzer isimli farklı bir uygulamaya ait olabilir</value>\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\n    <value>Trang web</value>\n  </data>\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\n    <value>Mã sản phẩm</value>\n  </data>\n  <data name=\"DisplayName\" xml:space=\"preserve\">\n    <value>Tên hiển thị</value>\n  </data>\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\n    <value>Tên hiển thị được rút gọn</value>\n  </data>\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\n    <value>Phiên bản</value>\n  </data>\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\n    <value>Kích thước ước tính</value>\n  </data>\n  <data name=\"InstallDate\" xml:space=\"preserve\">\n    <value>Ngày cài đặt</value>\n  </data>\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\n    <value>Vị trí cài đặt</value>\n  </data>\n  <data name=\"InstallSource\" xml:space=\"preserve\">\n    <value>Nguồn cài đặt</value>\n  </data>\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\n    <value>Ứng dụng 64bit</value>\n  </data>\n  <data name=\"IsProtected\" xml:space=\"preserve\">\n    <value>Được bảo vệ</value>\n  </data>\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\n    <value>Một ứng dụng cập nhật</value>\n  </data>\n  <data name=\"IsValid\" xml:space=\"preserve\">\n    <value>Hợp lệ</value>\n  </data>\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\n    <value>Sửa đổi đường dẫn</value>\n  </data>\n  <data name=\"Publisher\" xml:space=\"preserve\">\n    <value>Tên nhà phát hành</value>\n  </data>\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\n    <value>Tên rút gọn của nhà phát hành</value>\n  </data>\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\n    <value>Có thể gỡ cài đặt âm thầm</value>\n  </data>\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\n    <value>Câu lệnh gỡ cài đặt âm thầm</value>\n  </data>\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\n    <value>Tên khoá registry</value>\n  </data>\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\n    <value>Đường dẫn registry</value>\n  </data>\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\n    <value>Một thành phần hệ thống</value>\n  </data>\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\n    <value>Tên tệp trình gỡ cài đặt</value>\n  </data>\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\n    <value>Loại trình gỡ cài đặt</value>\n  </data>\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\n    <value>Có thể gỡ cài đặt</value>\n  </data>\n  <data name=\"UninstallString\" xml:space=\"preserve\">\n    <value>Câu lệnh gỡ cài đặt</value>\n  </data>\n  <data name=\"Comment\" xml:space=\"preserve\">\n    <value>Chú thích</value>\n  </data>\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\n    <value>Biểu tượng hiển thị</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>Đường dẫn không hợp lệ</value>\n  </data>\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\n    <value>Độ tin cậy</value>\n  </data>\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\n    <value>Tiến trình gỡ cài đặt đã dừng đột ngột</value>\n  </data>\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\n    <value>Bị người dùng bỏ qua</value>\n  </data>\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\n    <value>Vị trí trình cài đặt</value>\n  </data>\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\n    <value>Không có cách hợp lệ nào để gỡ cài đặt mục này.</value>\n  </data>\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt trả về mã lỗi: </value>\n  </data>\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\n    <value>Kém</value>\n  </data>\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\n    <value>Tốt</value>\n  </data>\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\n    <value>Rất đáng nghi</value>\n  </data>\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\n    <value>Không xác định</value>\n  </data>\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\n    <value>Rất tốt</value>\n  </data>\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt gốc</value>\n    <comment>Most of the time used to show parent application of an update</comment>\n  </data>\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\n    <value>Tên công ty không khớp</value>\n  </data>\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\n    <value>Tên công ty trùng khớp</value>\n  </data>\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\n    <value>Thư mục đang được sử dụng bởi một ứng dụng khác</value>\n  </data>\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\n    <value>Mục được đề cập rõ ràng trong trình gỡ cài đặt</value>\n  </data>\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\n    <value>Mục registry của trình gỡ cài đặt</value>\n  </data>\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\n    <value>Mục này dường như là toàn bộ danh mục của nhà xuất bản</value>\n  </data>\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\n    <value>Tên sản phẩm không khớp lắm</value>\n  </data>\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\n    <value>Tên sản phẩm trùng khớp hoàn toàn</value>\n  </data>\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\n    <value>Tên thư mục rất đáng ngờ</value>\n  </data>\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\n    <value>Không xác định</value>\n  </data>\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt Windows</value>\n  </data>\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\n    <value>Inno Setup</value>\n  </data>\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\n    <value>Steam</value>\n  </data>\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\n    <value>Nullsoft Scriptable Install System </value>\n  </data>\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\n    <value>InstallShield</value>\n  </data>\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\n    <value>SDBInst</value>\n  </data>\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\n    <value>Đã hoàn thành</value>\n  </data>\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\n    <value>Thất bại</value>\n  </data>\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\n    <value>Không hợp lệ</value>\n  </data>\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\n    <value>Được bảo vệ</value>\n  </data>\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\n    <value>Đã bỏ qua</value>\n  </data>\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\n    <value>Đang gỡ cài đặt</value>\n  </data>\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\n    <value>Đang chờ</value>\n  </data>\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\n    <value>Ứng dụng đã đăng ký</value>\n  </data>\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\n    <value>Bộ lọc không hợp lệ</value>\n  </data>\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\n    <value>Bộ lọc mới</value>\n  </data>\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\n    <value>Không trùng khớp</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\n    <value>Chứa tất cả ký tự</value>\n  </data>\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\n    <value>Kết thúc bằng</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\n    <value>Giống hệt</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\n    <value>Bắt đầu bằng</value>\n  </data>\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\n    <value>Windows Feature</value>\n    <comment>Used to mark windows features on the uninstaller list</comment>\n  </data>\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\n    <value>Chứa bất kỳ ký tự</value>\n    <comment>As in \"matches any word from this string\"</comment>\n  </data>\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\n    <value>Câu lệnh khởi động cùng hệ thống</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\n    <value>Các mục đã chọn sẽ không còn được mở tự động trong quá trình khởi động. Hãy đảm bảo các mục này không cần thiết trước khi xóa chúng.</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\n    <value>Loại bỏ các chương trình đã chọn khỏi quá trình khởi động cùng hệ thống?</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\n    <value>Trình quản lý Khởi động cùng hệ thống</value>\n  </data>\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\n    <value>Đang nạp...</value>\n  </data>\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\n    <value>Thư mục trống</value>\n  </data>\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\n    <value>Các tệp thực thi hiện có</value>\n  </data>\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\n    <value>Các tệp hiện có</value>\n  </data>\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\n    <value>Rất nhiều tệp tin hiện có</value>\n  </data>\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\n    <value>Tên chương trình được công nhận</value>\n  </data>\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\n    <value>Không có thư mục con</value>\n  </data>\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\n    <value>Nhà phát hành được công nhận</value>\n  </data>\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\n    <value>Mục nhập chỉ được thực thi một lần</value>\n  </data>\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\n    <value>Mục nhập trùng khớp với ứng dụng</value>\n  </data>\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\n    <value>Các tệp và thư mục</value>\n  </data>\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\n    <value>Các tệp chương trình mồ côi</value>\n  </data>\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\n    <value>Registry</value>\n  </data>\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\n    <value>Khởi động cùng hệ thống</value>\n  </data>\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\n    <value>Không thể kích hoạt mục này, các tệp sau không được tìm thấy:</value>\n  </data>\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt đã hết thời gian chờ</value>\n  </data>\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\n    <value>Tác vụ</value>\n    <comment>Fom Task Scheduler</comment>\n  </data>\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\n    <value>Đối tượng Trợ giúp Trình duyệt</value>\n  </data>\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\n    <value>Giá trị không thể là NULL hoặc bỏ trống.</value>\n  </data>\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\n    <value>Giá trị không thể chứa ký tự thoát dòng mới (\\n)</value>\n  </data>\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\n    <value>(Các) khóa registry khởi động cùng hệ thống không hợp lệ hoặc không xác định: </value>\n  </data>\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\n    <value>Windows Store App</value>\n  </data>\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\n    <value>Điều kiện mới</value>\n  </data>\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\n    <value>Chưa đăng ký</value>\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\n  </data>\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\n    <value>Việc xóa dữ liệu Store App có vấn đề</value>\n  </data>\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\n    <value>Xoá đơn giản</value>\n  </data>\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\n    <value>Thư mục trống hoặc vẫn trống ngay cả sau khi loại bỏ rác.</value>\n  </data>\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\n    <value>Dịch vụ</value>\n  </data>\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\n    <value>Tất cả thuộc tính</value>\n    <comment>Used in the search box to specify what's being compared</comment>\n  </data>\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\n    <value>Đang quét các sản phẩm MSI đã cài đặt...</value>\n  </data>\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\n    <value>Đã tìm thấy {0} GUID ứng dụng</value>\n  </data>\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\n    <value>Đang quét registry để tìm các trình gỡ cài đặt...</value>\n  </data>\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\n    <value>Đang thu thập các khoá registry...</value>\n  </data>\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\n    <value>Đang quét {0}</value>\n  </data>\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\n    <value>Đang tạo thông tin trình gỡ cài đặt bị thiếu...</value>\n  </data>\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\n    <value>Đang quét ổ đĩa để tìm các ứng dụng...</value>\n  </data>\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\n    <value>Đang thu thập thư mục...</value>\n  </data>\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\n    <value>Đang quét các kho ứng dụng...</value>\n  </data>\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\n    <value>Đang tìm kiếm các mẫu ứng dụng...</value>\n  </data>\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\n    <value>Đang kiểm tra Steam App...</value>\n  </data>\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\n    <value>Đang kiểm tra Windows Store App...</value>\n  </data>\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\n    <value>Đang kiểm tra Windows Features...</value>\n  </data>\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\n    <value>Đang hợp nhất các ứng dụng được phát hiện...</value>\n  </data>\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\n    <value>Đang hợp nhất các ứng dụng từ các kho ứng dụng...</value>\n  </data>\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\n    <value>Đang hợp nhất các ứng dụng từ các ổ đĩa...</value>\n  </data>\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\n    <value>Đang tạo thông tin còn thiếu...</value>\n  </data>\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\n    <value>Windows Update</value>\n  </data>\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\n    <value>Đang kiểm tra Windows Update...</value>\n  </data>\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\n    <value>Quy tắc tường lửa</value>\n  </data>\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\n    <value>Khả năng tiếp cận</value>\n  </data>\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\n    <value>Báo cáo lỗi Windows</value>\n  </data>\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\n    <value>Đang thiết lập máy quét rác...</value>\n  </data>\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\n    <value>Sắp hoàn thành...</value>\n  </data>\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\n    <value>Khả năng tương thích ứng dụng</value>\n  </data>\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\n    <value>Lớp CLSID</value>\n  </data>\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\n    <value>Tài liệu tham khảo về trình gỡ cài đặt</value>\n  </data>\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\n    <value>Vị trí trình gỡ cài đặt</value>\n  </data>\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\n    <value>Lối tắt</value>\n  </data>\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\n    <value>Cấu hình chính sách âm thanh</value>\n  </data>\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\n    <value>Nhật ký sự kiện</value>\n  </data>\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\n    <value>Thông tin truy vết</value>\n  </data>\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\n    <value>Danh sách thư mục cài đặt</value>\n  </data>\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\n    <value>Chocolatey</value>\n  </data>\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\n    <value>Tạm dừng</value>\n  </data>\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\n    <value>Tìm kiểm tra các gói Chocolatey...</value>\n  </data>\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt bằng Chocolatey</value>\n    <comment>Shown in junk results window</comment>\n  </data>\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\n    <value>Có thể tự động khởi động</value>\n  </data>\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\n    <value>Đang kiểm tra các mục khởi động cùng hệ thống...</value>\n  </data>\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\n    <value>Đang kiểm tra Oculus App...</value>\n  </data>\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\n    <value>Oculus</value>\n  </data>\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\n    <value>Một trình duyệt</value>\n  </data>\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\n    <value>Tập lệnh PowerShell</value>\n  </data>\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\n    <value>Đang kiểm tra các gói Scoop...</value>\n  </data>\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\n    <value>Cấu hình theo dõi/ghi nhật ký gỡ lỗi</value>\n  </data>\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\n    <value>Có thể thuộc về một ứng dụng khác có tên tương tự</value>\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\n    <value>网页</value>\n  </data>\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\n    <value>产品代码</value>\n  </data>\n  <data name=\"DisplayName\" xml:space=\"preserve\">\n    <value>显示名</value>\n  </data>\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\n    <value>修饰后的显示名</value>\n  </data>\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\n    <value>版本</value>\n  </data>\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\n    <value>估计大小</value>\n  </data>\n  <data name=\"InstallDate\" xml:space=\"preserve\">\n    <value>安装日期</value>\n  </data>\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\n    <value>安装位置</value>\n  </data>\n  <data name=\"InstallSource\" xml:space=\"preserve\">\n    <value>安装源</value>\n  </data>\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\n    <value>是否64位应用程序</value>\n  </data>\n  <data name=\"IsProtected\" xml:space=\"preserve\">\n    <value>是否受保护</value>\n  </data>\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\n    <value>是否更新</value>\n  </data>\n  <data name=\"IsValid\" xml:space=\"preserve\">\n    <value>是否有效</value>\n  </data>\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\n    <value>修改路径</value>\n  </data>\n  <data name=\"Publisher\" xml:space=\"preserve\">\n    <value>发布者名称</value>\n  </data>\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\n    <value>修饰后的发布者名称</value>\n  </data>\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\n    <value>能否静默卸载</value>\n  </data>\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\n    <value>静默卸载字母串</value>\n  </data>\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\n    <value>注册表键名称</value>\n  </data>\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\n    <value>注册表路径</value>\n  </data>\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\n    <value>是否系统组件</value>\n  </data>\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\n    <value>卸载程序文件名</value>\n  </data>\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\n    <value>卸载程序类型</value>\n  </data>\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\n    <value>能否卸载</value>\n  </data>\n  <data name=\"UninstallString\" xml:space=\"preserve\">\n    <value>卸载字符串</value>\n  </data>\n  <data name=\"Comment\" xml:space=\"preserve\">\n    <value>注释</value>\n  </data>\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\n    <value>显示图标</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>无效路径</value>\n  </data>\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\n    <value>置信度</value>\n  </data>\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\n    <value>卸载进程过早停止</value>\n  </data>\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\n    <value>被用户跳过</value>\n  </data>\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\n    <value>卸载程序位置</value>\n  </data>\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\n    <value>没有有效的方法卸载此条目</value>\n  </data>\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\n    <value>卸载应用程序返回错误代码:</value>\n  </data>\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\n    <value>坏</value>\n  </data>\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\n    <value>好</value>\n  </data>\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\n    <value>有问题</value>\n  </data>\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\n    <value>未知</value>\n  </data>\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\n    <value>非常好</value>\n  </data>\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\n    <value>母卸载程序</value>\n    <comment>Most of the time used to show parent application of an update</comment>\n  </data>\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\n    <value>公司名不匹配</value>\n  </data>\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\n    <value>公司名匹配</value>\n  </data>\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\n    <value>目录被其他已安装应用程序使用</value>\n  </data>\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\n    <value>项目在卸载程序中明确提到</value>\n  </data>\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\n    <value>卸载程序的注册表项</value>\n  </data>\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\n    <value>项目似乎是一个完整的发布者类别</value>\n  </data>\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\n    <value>产品名称不完全匹配</value>\n  </data>\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\n    <value>产品名称完全匹配</value>\n  </data>\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\n    <value>目录名称有问题</value>\n  </data>\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\n    <value>未知</value>\n  </data>\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\n    <value>Windows Installer</value>\n  </data>\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\n    <value>Inno Setup</value>\n  </data>\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\n    <value>Steam</value>\n  </data>\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\n    <value>Nullsoft Scriptable Install System </value>\n  </data>\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\n    <value>InstallShield</value>\n  </data>\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\n    <value>SDBInst</value>\n  </data>\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\n    <value>已完成</value>\n  </data>\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\n    <value>失败</value>\n  </data>\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\n    <value>无效</value>\n  </data>\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\n    <value>受保护</value>\n  </data>\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\n    <value>已跳过</value>\n  </data>\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\n    <value>卸载中</value>\n  </data>\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\n    <value>等待中</value>\n  </data>\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\n    <value>应用程序已注册</value>\n  </data>\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\n    <value>无效的筛选器</value>\n  </data>\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\n    <value>新筛选器</value>\n  </data>\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\n    <value>没有匹配</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\n    <value>包含</value>\n  </data>\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\n    <value>结尾是</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\n    <value>完全相同</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\n    <value>正则表达式</value>\n  </data>\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\n    <value>开头是</value>\n  </data>\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\n    <value>Windows特性</value>\n    <comment>Used to mark windows features on the uninstaller list</comment>\n  </data>\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\n    <value>包含任一个</value>\n    <comment>As in \"matches any word from this string\"</comment>\n  </data>\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\n    <value>启动命令</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\n    <value>它们开机时不再启动。在删除前请确保选中项不再需要。</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\n    <value>从开机启动项中删除选中程序?</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\n    <value>开机启动项管理器</value>\n  </data>\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\n    <value>加载中...</value>\n  </data>\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\n    <value>空文件夹</value>\n  </data>\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\n    <value>存在可执行文件</value>\n  </data>\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\n    <value>文件存在</value>\n  </data>\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\n    <value>许多文件存在</value>\n  </data>\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\n    <value>识别到程序名称</value>\n  </data>\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\n    <value>无子目录</value>\n  </data>\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\n    <value>识别到发布者</value>\n  </data>\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\n    <value>条目只会运行一次</value>\n  </data>\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\n    <value>条目与应用程序匹配</value>\n  </data>\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\n    <value>文件和目录</value>\n  </data>\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\n    <value>孤立程序文件</value>\n  </data>\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\n    <value>注册表</value>\n  </data>\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\n    <value>开机启动项</value>\n  </data>\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\n    <value>启用此条目失败，找不到以下文件:</value>\n  </data>\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\n    <value>卸载程序超时</value>\n  </data>\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\n    <value>任务</value>\n    <comment>Fom Task Scheduler</comment>\n  </data>\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\n    <value>浏览器辅助对象(BHO)</value>\n  </data>\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\n    <value>值不能为null或empty</value>\n  </data>\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\n    <value>值不能包含新行</value>\n  </data>\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\n    <value>无效或未知开机启动项注册表键:</value>\n  </data>\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\n    <value>Windows商店应用</value>\n  </data>\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\n    <value>New condition</value>\n  </data>\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\n    <value>未注册</value>\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\n  </data>\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\n    <value>删除应用商店数据时有问题</value>\n  </data>\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\n    <value>简单删除</value>\n  </data>\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\n    <value>目录为空，或在删除垃圾后将为空。</value>\n  </data>\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\n    <value>服务</value>\n  </data>\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\n    <value>所有属性</value>\n    <comment>Used in the search box to specify what's being compared</comment>\n  </data>\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\n    <value>扫描已安装MSI产品...</value>\n  </data>\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\n    <value>查找{0}应用程序全局唯一标识符(GUID)</value>\n  </data>\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\n    <value>扫描注册表以查找卸载程序...</value>\n  </data>\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\n    <value>正在收集注册表键</value>\n  </data>\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\n    <value>正在处理{0}</value>\n  </data>\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\n    <value>正在生成丢失的卸载程序信息...</value>\n  </data>\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\n    <value>正在扫描驱动器以查找应用程序...</value>\n  </data>\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\n    <value>正在收集目录</value>\n  </data>\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\n    <value>正在扫描应用程序商店...</value>\n  </data>\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\n    <value>正在搜索应用程序模板</value>\n  </data>\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\n    <value>正在搜索Steam应用程序</value>\n  </data>\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\n    <value>正在搜索Windows商店应用</value>\n  </data>\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\n    <value>正在搜索Windows功能</value>\n  </data>\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\n    <value>正在合并发现的应用程序...</value>\n  </data>\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\n    <value>正在合并商店应用程序</value>\n  </data>\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\n    <value>正在合并驱动器上的应用程序</value>\n  </data>\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\n    <value>正在生成丢失的信息...</value>\n  </data>\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\n    <value>Windows更新</value>\n  </data>\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\n    <value>正在搜索Windows更新</value>\n  </data>\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\n    <value>防火墙规则</value>\n  </data>\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\n    <value>用户助手</value>\n  </data>\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\n    <value>Windows错误报告</value>\n  </data>\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\n    <value>正在设置垃圾扫描器...</value>\n  </data>\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\n    <value>正在完成...</value>\n  </data>\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\n    <value>应用程序兼容性</value>\n  </data>\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\n    <value>CLSID类</value>\n  </data>\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\n    <value>卸载程序引用</value>\n  </data>\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\n    <value>卸载程序未知</value>\n  </data>\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\n    <value>快捷方式</value>\n  </data>\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\n    <value>音频策略配置</value>\n  </data>\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\n    <value>事件日志</value>\n  </data>\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\n    <value>跟踪信息</value>\n  </data>\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\n    <value>安装文件夹列表</value>\n  </data>\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\n    <value>暂停</value>\n  </data>\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\n    <value>Chocolatey</value>\n  </data>\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\n    <value>正在搜索Chocolatey包</value>\n  </data>\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\n    <value>在Chocolatey中卸载</value>\n    <comment>Shown in junk results window</comment>\n  </data>\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\n    <value>是否能自动启动</value>\n  </data>\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\n    <value>正在搜索开机启动项</value>\n  </data>\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\n    <value>正在搜索Oculus应用程序</value>\n  </data>\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\n    <value>Oculus</value>\n  </data>\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\n    <value>是否网页浏览器</value>\n  </data>\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\n    <value>PowerShell脚本</value>\n  </data>\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\n    <value>调试跟踪/日志配置</value>\n  </data>\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\n    <value>正在搜索Scoop包</value>\n  </data>\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\n    <value>可能属于名称相似的其他应用程序</value>\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\n  </data>\n</root>\n"
  },
  {
    "path": "source/UninstallTools/Properties/Localisation.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutUrl\" xml:space=\"preserve\">\n    <value>網頁</value>\n  </data>\n  <data name=\"BundleProviderKey\" xml:space=\"preserve\">\n    <value>產品代碼</value>\n  </data>\n  <data name=\"DisplayName\" xml:space=\"preserve\">\n    <value>顯示名稱</value>\n  </data>\n  <data name=\"DisplayNameTrimmed\" xml:space=\"preserve\">\n    <value>修飾後的顯示名稱</value>\n  </data>\n  <data name=\"DisplayVersion\" xml:space=\"preserve\">\n    <value>版本</value>\n  </data>\n  <data name=\"EstimatedSize\" xml:space=\"preserve\">\n    <value>預估大小</value>\n  </data>\n  <data name=\"InstallDate\" xml:space=\"preserve\">\n    <value>安裝日期</value>\n  </data>\n  <data name=\"InstallLocation\" xml:space=\"preserve\">\n    <value>安裝位置</value>\n  </data>\n  <data name=\"InstallSource\" xml:space=\"preserve\">\n    <value>安裝來源</value>\n  </data>\n  <data name=\"Is64Bit\" xml:space=\"preserve\">\n    <value>是否為64位元應用程式</value>\n  </data>\n  <data name=\"IsProtected\" xml:space=\"preserve\">\n    <value>是否受保護</value>\n  </data>\n  <data name=\"IsUpdate\" xml:space=\"preserve\">\n    <value>是否更新</value>\n  </data>\n  <data name=\"IsValid\" xml:space=\"preserve\">\n    <value>是否有效</value>\n  </data>\n  <data name=\"ModifyPath\" xml:space=\"preserve\">\n    <value>修改路徑</value>\n  </data>\n  <data name=\"Publisher\" xml:space=\"preserve\">\n    <value>發布人員名稱</value>\n  </data>\n  <data name=\"PublisherTrimmed\" xml:space=\"preserve\">\n    <value>修飾後的發布人員名稱</value>\n  </data>\n  <data name=\"QuietUninstallPossible\" xml:space=\"preserve\">\n    <value>能否最小化移除</value>\n  </data>\n  <data name=\"QuietUninstallString\" xml:space=\"preserve\">\n    <value>最小化移除字串</value>\n  </data>\n  <data name=\"RegistryKeyName\" xml:space=\"preserve\">\n    <value>註冊表鍵名稱</value>\n  </data>\n  <data name=\"RegistryPath\" xml:space=\"preserve\">\n    <value>註冊表路徑</value>\n  </data>\n  <data name=\"SystemComponent\" xml:space=\"preserve\">\n    <value>是否為系統元件</value>\n  </data>\n  <data name=\"UninstallerFullFilename\" xml:space=\"preserve\">\n    <value>移除程式檔案名稱</value>\n  </data>\n  <data name=\"UninstallerKind\" xml:space=\"preserve\">\n    <value>移除程式類型</value>\n  </data>\n  <data name=\"UninstallPossible\" xml:space=\"preserve\">\n    <value>能否移除</value>\n  </data>\n  <data name=\"UninstallString\" xml:space=\"preserve\">\n    <value>移除字串</value>\n  </data>\n  <data name=\"Comment\" xml:space=\"preserve\">\n    <value>註飾</value>\n  </data>\n  <data name=\"DisplayIcon\" xml:space=\"preserve\">\n    <value>顯示圖示</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>無效路徑</value>\n  </data>\n  <data name=\"JunkRemover_Confidence\" xml:space=\"preserve\">\n    <value>信任度</value>\n  </data>\n  <data name=\"ManagerError_PrematureWorkerStop\" xml:space=\"preserve\">\n    <value>移除程序提前停止</value>\n  </data>\n  <data name=\"ManagerError_Skipped\" xml:space=\"preserve\">\n    <value>被使用者跳過</value>\n  </data>\n  <data name=\"UninstallerLocation\" xml:space=\"preserve\">\n    <value>移除程式位置</value>\n  </data>\n  <data name=\"UninstallError_Nowaytouninstall\" xml:space=\"preserve\">\n    <value>沒有有效的方法移除此項目</value>\n  </data>\n  <data name=\"UninstallError_UninstallerReturnedCode\" xml:space=\"preserve\">\n    <value>移除程式返回錯誤代碼:\n</value>\n  </data>\n  <data name=\"Confidence_Bad\" xml:space=\"preserve\">\n    <value>壞</value>\n  </data>\n  <data name=\"Confidence_Good\" xml:space=\"preserve\">\n    <value>好</value>\n  </data>\n  <data name=\"Confidence_Questionable\" xml:space=\"preserve\">\n    <value>有問題</value>\n  </data>\n  <data name=\"Confidence_Unknown\" xml:space=\"preserve\">\n    <value>未知</value>\n  </data>\n  <data name=\"Confidence_VeryGood\" xml:space=\"preserve\">\n    <value>非常好</value>\n  </data>\n  <data name=\"ParentKeyName\" xml:space=\"preserve\">\n    <value>母移除程式</value>\n    <comment>Most of the time used to show parent application of an update</comment>\n  </data>\n  <data name=\"ConfidencePart_CompanyNameDidNotMatch\" xml:space=\"preserve\">\n    <value>公司不相同</value>\n  </data>\n  <data name=\"ConfidencePart_CompanyNameMatch\" xml:space=\"preserve\">\n    <value>公司相同</value>\n  </data>\n  <data name=\"ConfidencePart_DirectoryStillUsed\" xml:space=\"preserve\">\n    <value>目錄已被其他已安裝應用程式使用</value>\n  </data>\n  <data name=\"ConfidencePart_ExplicitConnection\" xml:space=\"preserve\">\n    <value>項目於移除程式中提醒</value>\n  </data>\n  <data name=\"ConfidencePart_IsUninstallerRegistryKey\" xml:space=\"preserve\">\n    <value>移除程式的註冊表項目</value>\n  </data>\n  <data name=\"ConfidencePart_ItemNameEqualsCompanyName\" xml:space=\"preserve\">\n    <value>項目似乎是一個完整的發布人員類別</value>\n  </data>\n  <data name=\"ConfidencePart_ProductNameDodgyMatch\" xml:space=\"preserve\">\n    <value>產品名稱完全不相同</value>\n  </data>\n  <data name=\"ConfidencePart_ProductNamePerfectMatch\" xml:space=\"preserve\">\n    <value>產品名稱相同</value>\n  </data>\n  <data name=\"ConfidencePart_QuestionableDirectoryName\" xml:space=\"preserve\">\n    <value>目錄名稱有問題</value>\n  </data>\n  <data name=\"UninstallerType_Unknown\" xml:space=\"preserve\">\n    <value>未知</value>\n  </data>\n  <data name=\"UninstallerType_Msiexec\" xml:space=\"preserve\">\n    <value>Windows Installer</value>\n  </data>\n  <data name=\"UninstallerType_InnoSetup\" xml:space=\"preserve\">\n    <value>Inno Setup</value>\n  </data>\n  <data name=\"UninstallerType_Steam\" xml:space=\"preserve\">\n    <value>Steam</value>\n  </data>\n  <data name=\"UninstallerType_NSIS\" xml:space=\"preserve\">\n    <value>Nullsoft Scriptable Install System </value>\n  </data>\n  <data name=\"UninstallerType_InstallShield\" xml:space=\"preserve\">\n    <value>InstallShield</value>\n  </data>\n  <data name=\"UninstallerType_SdbInst\" xml:space=\"preserve\">\n    <value>SDBInst</value>\n  </data>\n  <data name=\"UninstallStatus_Completed\" xml:space=\"preserve\">\n    <value>已完成</value>\n  </data>\n  <data name=\"UninstallStatus_Failed\" xml:space=\"preserve\">\n    <value>失敗</value>\n  </data>\n  <data name=\"UninstallStatus_Invalid\" xml:space=\"preserve\">\n    <value>無效</value>\n  </data>\n  <data name=\"UninstallStatus_Protected\" xml:space=\"preserve\">\n    <value>受保護</value>\n  </data>\n  <data name=\"UninstallStatus_Skipped\" xml:space=\"preserve\">\n    <value>已略過</value>\n  </data>\n  <data name=\"UninstallStatus_Uninstalling\" xml:space=\"preserve\">\n    <value>移除中</value>\n  </data>\n  <data name=\"UninstallStatus_Waiting\" xml:space=\"preserve\">\n    <value>等待中</value>\n  </data>\n  <data name=\"IsRegistered\" xml:space=\"preserve\">\n    <value>應用程式已註冊</value>\n  </data>\n  <data name=\"UninstallListEditor_InvalidFilter\" xml:space=\"preserve\">\n    <value>無效的選項</value>\n  </data>\n  <data name=\"UninstallListEditor_NewFilter\" xml:space=\"preserve\">\n    <value>新尋找</value>\n  </data>\n  <data name=\"UninstallListEditor_NothingMatched\" xml:space=\"preserve\">\n    <value>沒有找到</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Contains\" xml:space=\"preserve\">\n    <value>包含</value>\n  </data>\n  <data name=\"FilterComparisonMethod_EndsWith\" xml:space=\"preserve\">\n    <value>结尾是</value>\n  </data>\n  <data name=\"FilterComparisonMethod_Equals\" xml:space=\"preserve\">\n    <value>完全相同</value>\n  </data>\n  <data name=\"FilterComparisonMethod_StartsWith\" xml:space=\"preserve\">\n    <value>開始是</value>\n  </data>\n  <data name=\"UninstallerType_WindowsFeature\" xml:space=\"preserve\">\n    <value>Windows特性</value>\n    <comment>Used to mark windows features on the uninstaller list</comment>\n  </data>\n  <data name=\"FilterComparisonMethod_Any\" xml:space=\"preserve\">\n    <value>包含任一個</value>\n    <comment>As in \"matches any word from this string\"</comment>\n  </data>\n  <data name=\"StartupEntries\" xml:space=\"preserve\">\n    <value>啟動指令</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Details\" xml:space=\"preserve\">\n    <value>它們於開機時不再執行。在刪除前確認選中項目不再需要</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Header\" xml:space=\"preserve\">\n    <value>從開機啟動項目中刪除選中程序?</value>\n  </data>\n  <data name=\"StartupManager_Message_Delete_Title\" xml:space=\"preserve\">\n    <value>開機啟動項目管理員</value>\n  </data>\n  <data name=\"StartupManager_Loading\" xml:space=\"preserve\">\n    <value>載入中</value>\n  </data>\n  <data name=\"Confidence_PF_EmptyFolder\" xml:space=\"preserve\">\n    <value>空資料夾</value>\n  </data>\n  <data name=\"Confidence_PF_ExecsPresent\" xml:space=\"preserve\">\n    <value>存在可執行檔案</value>\n  </data>\n  <data name=\"Confidence_PF_FilesPresent\" xml:space=\"preserve\">\n    <value>檔案存在</value>\n  </data>\n  <data name=\"Confidence_PF_ManyFilesPresent\" xml:space=\"preserve\">\n    <value>許多檔案存在</value>\n  </data>\n  <data name=\"Confidence_PF_NameIsUsed\" xml:space=\"preserve\">\n    <value>識別到程式名稱</value>\n  </data>\n  <data name=\"Confidence_PF_NoSubdirs\" xml:space=\"preserve\">\n    <value>沒有子目錄</value>\n  </data>\n  <data name=\"Confidence_PF_PublisherIsUsed\" xml:space=\"preserve\">\n    <value>識別到發布人員</value>\n  </data>\n  <data name=\"Confidence_Startup_IsRunOnce\" xml:space=\"preserve\">\n    <value>項目只會執行一次</value>\n  </data>\n  <data name=\"Confidence_Startup_StartupMatched\" xml:space=\"preserve\">\n    <value>項目與應用程式相同</value>\n  </data>\n  <data name=\"Junk_Drive_GroupName\" xml:space=\"preserve\">\n    <value>資料和目錄</value>\n  </data>\n  <data name=\"Junk_ProgramFilesOrphans_GroupName\" xml:space=\"preserve\">\n    <value>獨立程式文件</value>\n  </data>\n  <data name=\"Junk_Registry_GroupName\" xml:space=\"preserve\">\n    <value>註冊表</value>\n  </data>\n  <data name=\"Junk_Startup_GroupName\" xml:space=\"preserve\">\n    <value>開機啟動項目</value>\n  </data>\n  <data name=\"StartupManager_FailedEnable_FileNotFound\" xml:space=\"preserve\">\n    <value>啟用此項目失敗，找不到以下檔案:</value>\n  </data>\n  <data name=\"UninstallError_UninstallerTimedOut\" xml:space=\"preserve\">\n    <value>移除程式逾時</value>\n  </data>\n  <data name=\"Startup_ShortName_Task\" xml:space=\"preserve\">\n    <value>任務</value>\n    <comment>Fom Task Scheduler</comment>\n  </data>\n  <data name=\"Startup_Shortname_BrowserHelper\" xml:space=\"preserve\">\n    <value>瀏覽器輔助對象(BHO)</value>\n  </data>\n  <data name=\"UninstallListItem_ValueEmpty\" xml:space=\"preserve\">\n    <value>不能為空值或Null</value>\n  </data>\n  <data name=\"UninstallListItem_NewLineInValue\" xml:space=\"preserve\">\n    <value>不能包含新行</value>\n  </data>\n  <data name=\"Error_InvalidRegKeys\" xml:space=\"preserve\">\n    <value>無效或未知的開機啟動項目註冊表鍵:</value>\n  </data>\n  <data name=\"UninstallerType_StoreApp\" xml:space=\"preserve\">\n    <value>Windows商店應用程式</value>\n  </data>\n  <data name=\"UninstallListEditor_NewCondition\" xml:space=\"preserve\">\n    <value>新條件</value>\n  </data>\n  <data name=\"IsOrphaned\" xml:space=\"preserve\">\n    <value>未註冊</value>\n    <comment>Present on the HDD but is not properly reported anywhere</comment>\n  </data>\n  <data name=\"ConfidencePart_IsStoreApp\" xml:space=\"preserve\">\n    <value>刪除商店應用程式資料時有問題</value>\n  </data>\n  <data name=\"UninstallerType_SimpleDelete\" xml:space=\"preserve\">\n    <value>簡單刪除</value>\n  </data>\n  <data name=\"ConfidencePart_AllSubdirsMatched\" xml:space=\"preserve\">\n    <value>為空目錄，或在刪除垃圾後是空目錄</value>\n  </data>\n  <data name=\"Startup_ShortName_Service\" xml:space=\"preserve\">\n    <value>服務</value>\n  </data>\n  <data name=\"ComparisonTargetInfo_AllProperties\" xml:space=\"preserve\">\n    <value>所有屬性</value>\n    <comment>Used in the search box to specify what's being compared</comment>\n  </data>\n  <data name=\"Progress_MSI\" xml:space=\"preserve\">\n    <value>掃瞄已安裝的MSI產品</value>\n  </data>\n  <data name=\"Progress_MSI_sub\" xml:space=\"preserve\">\n    <value>尋找應用程式GUID</value>\n  </data>\n  <data name=\"Progress_Registry\" xml:space=\"preserve\">\n    <value>掃描註冊表以尋找移除程式...</value>\n  </data>\n  <data name=\"Progress_Registry_Gathering\" xml:space=\"preserve\">\n    <value>正在收集註冊表鍵</value>\n  </data>\n  <data name=\"Progress_Registry_Processing\" xml:space=\"preserve\">\n    <value>正在處理{0}</value>\n  </data>\n  <data name=\"Progress_GatherUninstallerInfo\" xml:space=\"preserve\">\n    <value>正在產生遺失的移除程式資訊...</value>\n  </data>\n  <data name=\"Progress_DriveScan\" xml:space=\"preserve\">\n    <value>正在掃描硬碟以尋找應用程式...</value>\n  </data>\n  <data name=\"Progress_DriveScan_Gathering\" xml:space=\"preserve\">\n    <value>正在收集目錄</value>\n  </data>\n  <data name=\"Progress_AppStores\" xml:space=\"preserve\">\n    <value>正在掃描應用程式商店...</value>\n  </data>\n  <data name=\"Progress_AppStores_Templates\" xml:space=\"preserve\">\n    <value>正在尋找應用程式模板</value>\n  </data>\n  <data name=\"Progress_AppStores_Steam\" xml:space=\"preserve\">\n    <value>正在尋找Steam應用程式</value>\n  </data>\n  <data name=\"Progress_AppStores_WinStore\" xml:space=\"preserve\">\n    <value>正在尋找Windows商店應用程式</value>\n  </data>\n  <data name=\"Progress_AppStores_WinFeatures\" xml:space=\"preserve\">\n    <value>正在尋找Windows功能</value>\n  </data>\n  <data name=\"Progress_Merging\" xml:space=\"preserve\">\n    <value>正在合併發現的應用程式</value>\n  </data>\n  <data name=\"Progress_Merging_Stores\" xml:space=\"preserve\">\n    <value>正在合併商店應用程式</value>\n  </data>\n  <data name=\"Progress_Merging_Drives\" xml:space=\"preserve\">\n    <value>正在合併硬碟上的應用程式</value>\n  </data>\n  <data name=\"Progress_GeneratingInfo\" xml:space=\"preserve\">\n    <value>正在產生遺失的資訊</value>\n  </data>\n  <data name=\"UninstallerType_WindowsUpdate\" xml:space=\"preserve\">\n    <value>Windows更新</value>\n  </data>\n  <data name=\"Progress_AppStores_WinUpdates\" xml:space=\"preserve\">\n    <value>正在尋找Windows更新</value>\n  </data>\n  <data name=\"Junk_FirewallRule_GroupName\" xml:space=\"preserve\">\n    <value>防火牆規則</value>\n  </data>\n  <data name=\"Junk_UserAssist_GroupName\" xml:space=\"preserve\">\n    <value>使用者幫手</value>\n  </data>\n  <data name=\"Junk_WerReports_GroupName\" xml:space=\"preserve\">\n    <value>Windows錯誤報告</value>\n  </data>\n  <data name=\"Junk_Progress_Startup\" xml:space=\"preserve\">\n    <value>正在設定垃圾掃描...</value>\n  </data>\n  <data name=\"Junk_Progress_Finishing\" xml:space=\"preserve\">\n    <value>正在完成...</value>\n  </data>\n  <data name=\"Junk_AppCompat_GroupName\" xml:space=\"preserve\">\n    <value>應用程式相容性</value>\n  </data>\n  <data name=\"Junk_Clsid_GroupName\" xml:space=\"preserve\">\n    <value>CLSID類別</value>\n  </data>\n  <data name=\"Junk_UninstallerKey_GroupName\" xml:space=\"preserve\">\n    <value>應用程式參照</value>\n  </data>\n  <data name=\"Junk_UninstallerLocation_GroupName\" xml:space=\"preserve\">\n    <value>移除程式位置</value>\n  </data>\n  <data name=\"Junk_Shortcut_GroupName\" xml:space=\"preserve\">\n    <value>捷徑</value>\n  </data>\n  <data name=\"Junk_AudioPolicy_GroupName\" xml:space=\"preserve\">\n    <value>音頻政策配置</value>\n  </data>\n  <data name=\"Junk_EventLog_GroupName\" xml:space=\"preserve\">\n    <value>事件日誌</value>\n  </data>\n  <data name=\"Junk_Tracing_GroupName\" xml:space=\"preserve\">\n    <value>跟蹤資訊</value>\n  </data>\n  <data name=\"Junk_InstalledFolders_GroupName\" xml:space=\"preserve\">\n    <value>安裝資料夾清單</value>\n  </data>\n  <data name=\"UninstallStatus_Paused\" xml:space=\"preserve\">\n    <value>暫停</value>\n  </data>\n  <data name=\"UninstallerType_Chocolatey\" xml:space=\"preserve\">\n    <value>Chocolatey</value>\n  </data>\n  <data name=\"Progress_AppStores_Chocolatey\" xml:space=\"preserve\">\n    <value>正在尋找Chocolatey包</value>\n  </data>\n  <data name=\"ChocolateyFactory_UninstallInChocolateyJunkName\" xml:space=\"preserve\">\n    <value>在Chocolatey中移除</value>\n    <comment>Shown in junk results window</comment>\n  </data>\n  <data name=\"HasStartupEntries\" xml:space=\"preserve\">\n    <value>是否能自動啟動</value>\n  </data>\n  <data name=\"Progress_Startup\" xml:space=\"preserve\">\n    <value>正在尋找開機啟動項目</value>\n  </data>\n  <data name=\"Progress_AppStores_Oculus\" xml:space=\"preserve\">\n    <value>正在尋找Oculus應用程式</value>\n  </data>\n  <data name=\"UninstallerType_Oculus\" xml:space=\"preserve\">\n    <value>Oculus</value>\n  </data>\n  <data name=\"IsWebBrowser\" xml:space=\"preserve\">\n    <value>是否為網頁瀏覽器</value>\n  </data>\n  <data name=\"UninstallerType_PowerShell\" xml:space=\"preserve\">\n    <value>PowerShell腳本</value>\n  </data>\n  <data name=\"Junk_DebugTracing_GroupName\" xml:space=\"preserve\">\n    <value>測試跟蹤/日誌設置</value>\n  </data>\n  <data name=\"Progress_AppStores_Scoop\" xml:space=\"preserve\">\n    <value>正在尋找Scoop包</value>\n  </data>\n  <data name=\"Confidence_UsedBySimilarNamedApp\" xml:space=\"preserve\">\n    <value>可能屬於名稱相似的其他應用程式</value>\n    <comment>For example `AppX Extended` matching `AppX` when it belongs to the AppX application</comment>\n  </data>\n  <data name=\"FilterComparisonMethod_Regex\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"Confidence_DirectlyInsideKnownFolder\" xml:space=\"preserve\">\n    <value>直接從已知的資料夾裡面尋找</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallTools/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace UninstallTools.Properties {\r\n    using System;\r\n    \r\n    \r\n    /// <summary>\r\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\r\n    /// </summary>\r\n    // This class was auto-generated by the StronglyTypedResourceBuilder\r\n    // class via a tool like ResGen or Visual Studio.\r\n    // To add or remove a member, edit your .ResX file then rerun ResGen\r\n    // with the /str option, or rebuild your VS project.\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\r\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    internal class Resources {\r\n        \r\n        private static global::System.Resources.ResourceManager resourceMan;\r\n        \r\n        private static global::System.Globalization.CultureInfo resourceCulture;\r\n        \r\n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\r\n        internal Resources() {\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Returns the cached ResourceManager instance used by this class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Resources.ResourceManager ResourceManager {\r\n            get {\r\n                if (object.ReferenceEquals(resourceMan, null)) {\r\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"UninstallTools.Properties.Resources\", typeof(Resources).Assembly);\r\n                    resourceMan = temp;\r\n                }\r\n                return resourceMan;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Overrides the current thread's CurrentUICulture property for all\r\n        ///   resource lookups using this strongly typed resource class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Globalization.CultureInfo Culture {\r\n            get {\r\n                return resourceCulture;\r\n            }\r\n            set {\r\n                resourceCulture = value;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap add {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"add\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap app {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"app\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap arrow_right {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"arrow.right\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap delete {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"delete\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap folder_open {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"folder.open\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap link {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"link\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap minus {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"minus\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap page_copy {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"page.copy\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap page_duplicate {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"page.duplicate\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UninstallTools/Properties/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"folder.open\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\folder.open.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"link\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\link.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"page.copy\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\page.copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"arrow.right\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\arrow.right.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"delete\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"app\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\app.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"page.duplicate\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\page.duplicate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"add\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"minus\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\minus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallTools/SimplifiedClassDiagram.cd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ClassDiagram MajorVersion=\"1\" MinorVersion=\"1\">\n  <Comment CommentText=\"Searching for applications is done by ApplicationUninstallerFactory.GetUninstallerEntries. It runs all available IUninstallerFactory implementations and gives a list of results. This runs at program startup when the progress bar is shown.\">\n    <Position X=\"11.06\" Y=\"3.223\" Height=\"0.603\" Width=\"5.231\" />\n  </Comment>\n  <Comment CommentText=\"ApplicationUninstallerFactory.GetUninstallerEntries asks InfoAdderManager to use existing info adders to add iformation to the results\">\n    <Position X=\"11.036\" Y=\"12.764\" Height=\"0.75\" Width=\"4.137\" />\n  </Comment>\n  <Comment CommentText=\"ApplicationUninstallerFactory.GetUninstallerEntries asks StartupManager to gather startup entries for all found applications near the end.\">\n    <Position X=\"10.995\" Y=\"18.477\" Height=\"0.586\" Width=\"3.409\" />\n  </Comment>\n  <Comment CommentText=\"Junk is only detected right before the junk remove window is shown, not when collecting applications. This part is mostly separated from everything else.\">\n    <Position X=\"11\" Y=\"23.867\" Height=\"0.663\" Width=\"3.664\" />\n  </Comment>\n  <Comment CommentText=\"Uninstallation is controlled by the BulkUninstallTask generated by UninstallManager. The task is created as the uninstallation process is started.\">\n    <Position X=\"11.17\" Y=\"30.018\" Height=\"0.562\" Width=\"4.974\" />\n  </Comment>\n  <Comment CommentText=\"IIndependantUninstallerFactory is for factories that can find applications completely independantly of everything else (they can all be run at the same time or in random order and still produce the same results). This kind of factories should be used whenever possible since they can be ran concurrently.\">\n    <Position X=\"11.042\" Y=\"7.436\" Height=\"0.785\" Width=\"4.682\" />\n  </Comment>\n  <Comment CommentText=\"Priority is used to make it possible to have multiple sources for a single data point. More expensive sources would have a lower priority so they will only be tried if necessary.\">\n    <Position X=\"13.75\" Y=\"16.5\" Height=\"1.043\" Width=\"2.616\" />\n  </Comment>\n  <Comment CommentText=\"IJunkCreator implementations are found by JunkManager with reflection.\">\n    <Position X=\"11.168\" Y=\"26.722\" Height=\"0.75\" Width=\"1.958\" />\n  </Comment>\n  <Comment CommentText=\"IMissingInfoAdder implementations are found by InfoAdderManager with reflection.\">\n    <Position X=\"13.527\" Y=\"15.666\" Height=\"0.528\" Width=\"2.677\" />\n  </Comment>\n  <Comment CommentText=\"IIndependantUninstallerFactory implementations are found by ApplicationUninstallerFactory with reflection. Hovewer, IUninstallerFactory implementations are NOT - they have to be added manually to GetUninstallerEntries!\">\n    <Position X=\"13.753\" Y=\"5.796\" Height=\"1.232\" Width=\"2.677\" />\n  </Comment>\n  <Comment CommentText=\"This class contains everything that BCU knows about an application. It's used all over the place.\">\n    <Position X=\"16.807\" Y=\"3.222\" Height=\"0.644\" Width=\"2.839\" />\n  </Comment>\n  <Class Name=\"UninstallTools.Junk.JunkManager\">\n    <Position X=\"13.75\" Y=\"24.75\" Width=\"2.25\" />\n    <Members>\n      <Method Name=\"CleanUpResults\" Hidden=\"true\" />\n      <Method Name=\"GetProhibitedLocations\" Hidden=\"true\" />\n      <Method Name=\"JunkDoesNotPointToDirectories\" Hidden=\"true\" />\n      <Method Name=\"JunkDoesNotPointToSelf\" Hidden=\"true\" />\n      <Method Name=\"RemoveDuplicates\" Hidden=\"true\" />\n    </Members>\n    <TypeIdentifier>\n      <HashCode>EAAAAACAAAAAAAAAAICAAAAAAAAABQAAAAIAAAAAAAA=</HashCode>\n      <FileName>Junk\\JunkManager.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"UninstallTools.Factory.ApplicationUninstallerFactory\">\n    <Position X=\"14\" Y=\"4\" Width=\"2.25\" />\n    <Members>\n      <Method Name=\"ApplyCache\" Hidden=\"true\" />\n      <Method Name=\"GetMiscUninstallerEntries\" Hidden=\"true\" />\n      <Method Name=\"MergeResults\" Hidden=\"true\" />\n    </Members>\n    <Compartments>\n      <Compartment Name=\"Fields\" Collapsed=\"true\" />\n    </Compartments>\n    <TypeIdentifier>\n      <HashCode>AAAAAABAAAAAEAAAAAABAAAACAAAAAQAAAIAAAAAAAA=</HashCode>\n      <FileName>Factory\\ApplicationUninstallerFactory.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"UninstallTools.Factory.InfoAdders.InfoAdderManager\">\n    <Position X=\"13.75\" Y=\"13.75\" Width=\"2.25\" />\n    <Members>\n      <Method Name=\"GetInfoAdders\" Hidden=\"true\" />\n      <Method Name=\"InfoAdderManager\" Hidden=\"true\" />\n      <Method Name=\"IsTypeValid\" Hidden=\"true\" />\n    </Members>\n    <Compartments>\n      <Compartment Name=\"Fields\" Collapsed=\"true\" />\n    </Compartments>\n    <TypeIdentifier>\n      <HashCode>JgAAAgAAAAAAAAAAAAAAAAAAAAAAARAAAhAAAMAAAAA=</HashCode>\n      <FileName>Factory\\InfoAdders\\InfoAdderManager.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"UninstallTools.Startup.StartupEntryBase\">\n    <Position X=\"13.75\" Y=\"19.25\" Width=\"2.25\" />\n    <Members>\n      <Method Name=\"FillInformationFromFile\" Hidden=\"true\" />\n      <Method Name=\"ProcessCommandString\" Hidden=\"true\" />\n      <Method Name=\"ToLongString\" Hidden=\"true\" />\n      <Method Name=\"ToString\" Hidden=\"true\" />\n    </Members>\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAAACAAAAEAkCABgAgAAUAQAAACAEABAACABA=</HashCode>\n      <FileName>Startup\\StartupEntryBase.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"UninstallTools.Startup.StartupManager\">\n    <Position X=\"11\" Y=\"19.25\" Width=\"2.25\" />\n    <Members>\n      <Method Name=\"StartupManager\" Hidden=\"true\" />\n    </Members>\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAAAAAAAABEAAAAAIEAAAAAAAAAAAAAAAAAAA=</HashCode>\n      <FileName>Startup\\StartupManager.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"UninstallTools.Uninstaller.BulkUninstallConfiguration\">\n    <Position X=\"14\" Y=\"34.25\" Width=\"2.25\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAAABAAAAAAAADAAAAAIAAAAAAAAAAAAgAAAA=</HashCode>\n      <FileName>Uninstaller\\BulkUninstallConfiguration.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"UninstallTools.Uninstaller.BulkUninstallEntry\">\n    <Position X=\"18.25\" Y=\"31\" Width=\"2.25\" />\n    <Compartments>\n      <Compartment Name=\"Fields\" Collapsed=\"true\" />\n      <Compartment Name=\"Methods\" Collapsed=\"true\" />\n    </Compartments>\n    <NestedTypes>\n      <Class Name=\"UninstallTools.Uninstaller.BulkUninstallEntry.PerfCounterEntry\" Collapsed=\"true\">\n        <TypeIdentifier>\n          <NewMemberFileName>Uninstaller\\BulkUninstallEntry.cs</NewMemberFileName>\n        </TypeIdentifier>\n        <Lollipop Position=\"0.2\" />\n      </Class>\n      <Class Name=\"UninstallTools.Uninstaller.BulkUninstallEntry.RunUninstallerOptions\" Collapsed=\"true\">\n        <TypeIdentifier>\n          <NewMemberFileName>Uninstaller\\BulkUninstallEntry.cs</NewMemberFileName>\n        </TypeIdentifier>\n      </Class>\n      <Enum Name=\"UninstallTools.Uninstaller.BulkUninstallEntry.SkipCurrentLevel\" Collapsed=\"true\">\n        <TypeIdentifier>\n          <NewMemberFileName>Uninstaller\\BulkUninstallEntry.cs</NewMemberFileName>\n        </TypeIdentifier>\n      </Enum>\n    </NestedTypes>\n    <TypeIdentifier>\n      <HashCode>AIAiAAAgCAAAlAACBBQAQgAIaAAAEAAgAICAgAgAwAA=</HashCode>\n      <FileName>Uninstaller\\BulkUninstallEntry.cs</FileName>\n    </TypeIdentifier>\n    <ShowAsAssociation>\n      <Property Name=\"CurrentStatus\" />\n      <Property Name=\"UninstallerEntry\" />\n    </ShowAsAssociation>\n  </Class>\n  <Class Name=\"UninstallTools.Uninstaller.BulkUninstallTask\" BaseTypeListCollapsed=\"true\">\n    <Position X=\"14\" Y=\"31\" Width=\"2.25\" />\n    <Compartments>\n      <Compartment Name=\"Fields\" Collapsed=\"true\" />\n      <Compartment Name=\"Methods\" Collapsed=\"true\" />\n    </Compartments>\n    <TypeIdentifier>\n      <HashCode>gAAAAAAAACAAAMgChB0AAACAACAAABAAgAAgCAAABoI=</HashCode>\n      <FileName>Uninstaller\\BulkUninstallTask.cs</FileName>\n    </TypeIdentifier>\n    <ShowAsAssociation>\n      <Property Name=\"Configuration\" />\n    </ShowAsAssociation>\n    <ShowAsCollectionAssociation>\n      <Property Name=\"AllUninstallersList\" />\n    </ShowAsCollectionAssociation>\n    <Lollipop Position=\"0.2\" />\n  </Class>\n  <Class Name=\"UninstallTools.Uninstaller.UninstallManager\">\n    <Position X=\"11\" Y=\"31\" Width=\"2.25\" />\n    <Compartments>\n      <Compartment Name=\"Fields\" Collapsed=\"true\" />\n    </Compartments>\n    <TypeIdentifier>\n      <HashCode>AgAAIAAAABAAAAAAAAAAAgAAAAAAAAAAEAAAQAAIggA=</HashCode>\n      <FileName>Uninstaller\\UninstallManager.cs</FileName>\n    </TypeIdentifier>\n  </Class>\n  <Class Name=\"UninstallTools.ApplicationUninstallerEntry\">\n    <Position X=\"16.75\" Y=\"4\" Width=\"3\" />\n    <Compartments>\n      <Compartment Name=\"Fields\" Collapsed=\"true\" />\n      <Compartment Name=\"Methods\" Collapsed=\"true\" />\n    </Compartments>\n    <TypeIdentifier>\n      <HashCode>CBAwUYoEAQhOIMAMLAgwYHQEwAQAViaEUMNBwEgBAEA=</HashCode>\n      <FileName>ApplicationUninstallerEntry.cs</FileName>\n    </TypeIdentifier>\n    <ShowAsAssociation>\n      <Property Name=\"UninstallerKind\" />\n    </ShowAsAssociation>\n    <ShowAsCollectionAssociation>\n      <Property Name=\"StartupEntries\" />\n    </ShowAsCollectionAssociation>\n  </Class>\n  <Interface Name=\"UninstallTools.Junk.IJunkCreator\">\n    <Position X=\"11\" Y=\"24.75\" Width=\"2.25\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAAACAAAAAAAAAAAAAAAACAABAAAAAAAAAAAAAA=</HashCode>\n      <FileName>Junk\\IJunkCreator.cs</FileName>\n    </TypeIdentifier>\n  </Interface>\n  <Interface Name=\"UninstallTools.Junk.Containers.IJunkResult\">\n    <Position X=\"16.5\" Y=\"24.75\" Width=\"2.25\" />\n    <TypeIdentifier>\n      <HashCode>AgAAAAAAAhAAIAABAAAAAAAAAIUAAAAAAAAAAAAAAAA=</HashCode>\n      <FileName>Junk\\Containers\\IJunkResult.cs</FileName>\n    </TypeIdentifier>\n  </Interface>\n  <Interface Name=\"UninstallTools.Factory.IIndependantUninstallerFactory\">\n    <Position X=\"11\" Y=\"5.5\" Width=\"2.5\" />\n    <TypeIdentifier>\n      <HashCode>AAAAEAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\n      <FileName>Factory\\IUninstallerFactory.cs</FileName>\n    </TypeIdentifier>\n  </Interface>\n  <Interface Name=\"UninstallTools.Factory.IUninstallerFactory\">\n    <Position X=\"11\" Y=\"4\" Width=\"2.5\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>\n      <FileName>Factory\\IUninstallerFactory.cs</FileName>\n    </TypeIdentifier>\n  </Interface>\n  <Interface Name=\"UninstallTools.Factory.InfoAdders.IMissingInfoAdder\">\n    <Position X=\"11\" Y=\"13.75\" Width=\"2.25\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAAAAAAAAEAAAAAAAAAAAAABEQAABAAAEAAAA=</HashCode>\n      <FileName>Factory\\InfoAdders\\IMissingInfoAdder.cs</FileName>\n    </TypeIdentifier>\n    <ShowAsAssociation>\n      <Property Name=\"Priority\" />\n    </ShowAsAssociation>\n  </Interface>\n  <Enum Name=\"UninstallTools.Junk.Confidence.ConfidenceLevel\">\n    <Position X=\"16.5\" Y=\"27.75\" Width=\"2.25\" />\n    <TypeIdentifier>\n      <HashCode>AAAAAAAAEAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAABE=</HashCode>\n      <FileName>Junk\\Confidence\\ConfidenceLevel.cs</FileName>\n    </TypeIdentifier>\n  </Enum>\n  <Enum Name=\"UninstallTools.Factory.InfoAdders.InfoAdderPriority\">\n    <Position X=\"11.75\" Y=\"16.25\" Width=\"1.5\" />\n    <TypeIdentifier>\n      <HashCode>CAAAAAAAAAAAAAAAEAAAAAAAAAgIAAAAAAAAAAAAAAA=</HashCode>\n      <FileName>Factory\\InfoAdders\\InfoAdderPriority.cs</FileName>\n    </TypeIdentifier>\n  </Enum>\n  <Enum Name=\"UninstallTools.Uninstaller.UninstallStatus\">\n    <Position X=\"18.25\" Y=\"34.25\" Width=\"2.25\" />\n    <TypeIdentifier>\n      <HashCode>AAAgAAAAEAAAAAIAAAEAAQAAAAAAAAAAABAAQAABAAA=</HashCode>\n      <FileName>Uninstaller\\UninstallStatus.cs</FileName>\n    </TypeIdentifier>\n  </Enum>\n  <Enum Name=\"UninstallTools.UninstallerType\">\n    <Position X=\"21.25\" Y=\"8.25\" Width=\"1.5\" />\n    <TypeIdentifier>\n      <HashCode>AABACCAAEAFACAAEIAAAAAAAADAAAwAAAAAAAAAAABA=</HashCode>\n      <FileName>UninstallerType.cs</FileName>\n    </TypeIdentifier>\n  </Enum>\n  <Font Name=\"Segoe UI\" Size=\"9\" />\n</ClassDiagram>"
  },
  {
    "path": "source/UninstallTools/Startup/Browser/BrowserEntryFactory.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing Microsoft.Win32;\r\n\r\nnamespace UninstallTools.Startup.Browser\r\n{\r\n    public static class BrowserEntryFactory\r\n    {\r\n        internal const string AutorunsDisabledKeyName = \"AutorunsDisabled\";\r\n\r\n        private static readonly string[] RegistryStartupPoints =\r\n        {\r\n            @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects\",\r\n            @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\explorer\\Browser Helper Objects\"\r\n        };\r\n\r\n        private static readonly string ClsidPath = @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\CLSID\";\r\n\r\n        public static IEnumerable<BrowserHelperEntry> GetBrowserHelpers()\r\n        {\r\n            using (var clsidKey = RegistryTools.OpenRegistryKey(ClsidPath))\r\n            {\r\n                foreach (var registryStartupPoint in RegistryStartupPoints)\r\n                {\r\n                    RegistryKey mainKey;\r\n\r\n                    try\r\n                    {\r\n                        mainKey = RegistryTools.CreateSubKeyRecursively(registryStartupPoint);\r\n                    }\r\n                    catch (UnauthorizedAccessException e)\r\n                    {\r\n                        Trace.WriteLine($\"Failed to read reg key {registryStartupPoint}: \" + e);\r\n                        continue;\r\n                    }\r\n\r\n                    using (mainKey)\r\n                    {\r\n                        foreach (var browserHelperEntry in\r\n                            GatherBrowserHelpersFromKey(mainKey, clsidKey, registryStartupPoint, false))\r\n                            yield return browserHelperEntry;\r\n\r\n                        using (var disabledKey = mainKey.OpenSubKey(AutorunsDisabledKeyName))\r\n                        {\r\n                            if (disabledKey == null) continue;\r\n\r\n                            foreach (var browserHelperEntry in\r\n                                GatherBrowserHelpersFromKey(disabledKey, clsidKey, registryStartupPoint, true))\r\n                                yield return browserHelperEntry;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        private static IEnumerable<BrowserHelperEntry> GatherBrowserHelpersFromKey(RegistryKey workingKey,\r\n            RegistryKey clsidKey,\r\n            string registryStartupPoint, bool disabled)\r\n        {\r\n            foreach (var registryKey in workingKey.GetSubKeyNames())\r\n            {\r\n                using (var classKey = clsidKey.OpenSubKey(registryKey))\r\n                {\r\n                    var name = classKey?.GetStringSafe(null);\r\n                    if (string.IsNullOrEmpty(name))\r\n                        continue;\r\n\r\n                    string command;\r\n                    using (var runKey = classKey.OpenSubKey(\"InProcServer32\") ?? classKey.OpenSubKey(\"InProcServer\"))\r\n                    {\r\n                        command = runKey?.GetStringSafe(null);\r\n                    }\r\n\r\n                    yield return new BrowserHelperEntry(name, command,\r\n                        registryStartupPoint, registryKey, disabled, workingKey.Name.Contains(\"Wow6432Node\"));\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Startup/Browser/BrowserHelperEntry.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Startup.Browser\r\n{\r\n    public sealed class BrowserHelperEntry : StartupEntryBase\r\n    {\r\n        private bool _disabled;\r\n\r\n        public BrowserHelperEntry(string programName, string command, string parentKeyPath,\r\n            string className, bool disabled, bool isWow)\r\n        {\r\n            ProgramName = programName;\r\n            Command = command;\r\n\r\n            ParentLongName = parentKeyPath;\r\n            EntryLongName = className;\r\n            _disabled = disabled;\r\n            IsWow = isWow;\r\n            \r\n            CommandFilePath = ProcessCommandString(Command);\r\n\r\n            if(CommandFilePath != null)\r\n                FillInformationFromFile(CommandFilePath);\r\n        }\r\n\r\n        private bool IsWow { get; }\r\n\r\n        public override bool Disabled\r\n        {\r\n            get { return _disabled; }\r\n            set\r\n            {\r\n                if (_disabled == value) return;\r\n\r\n                using (var key = RegistryTools.OpenRegistryKey(GetRealParentPath(), true))\r\n                using (var newKey = RegistryTools.CreateSubKeyRecursively(GetRealParentPath(true)))\r\n                    key.MoveSubKey(EntryLongName, newKey, EntryLongName);\r\n\r\n                _disabled = value;\r\n            }\r\n        }\r\n\r\n        public override string ParentShortName\r\n        {\r\n            get { return Localisation.Startup_Shortname_BrowserHelper + (IsWow ? \" (Wow)\" : string.Empty); }\r\n            protected set { }\r\n        }\r\n\r\n        public string GetRealParentPath(bool opposite = false)\r\n        {\r\n            return (opposite ? !_disabled : _disabled)\r\n                ? Path.Combine(ParentLongName, BrowserEntryFactory.AutorunsDisabledKeyName)\r\n                : ParentLongName;\r\n        }\r\n\r\n        public override void Delete()\r\n        {\r\n            using (var key = RegistryTools.OpenRegistryKey(GetRealParentPath(), true))\r\n                key?.DeleteSubKey(EntryLongName);\r\n        }\r\n\r\n        public override bool StillExists()\r\n        {\r\n            using (var key = RegistryTools.OpenRegistryKey(GetRealParentPath()))\r\n                return key != null && key.GetSubKeyNames().Contains(EntryLongName);\r\n        }\r\n\r\n        public override void CreateBackup(string backupPath)\r\n        {\r\n            RegistryTools.ExportRegistry(Path.Combine(backupPath,\r\n                $@\"{Localisation.Startup_Shortname_BrowserHelper} - {ProgramName}.reg\"),\r\n                Path.Combine(GetRealParentPath(), EntryLongName));\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Startup/Normal/IStartupDisable.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System.Collections.Generic;\n\nnamespace UninstallTools.Startup.Normal\n{\n    internal interface IStartupDisable\n    {\n        void Disable(StartupEntry startupEntry);\n        void Enable(StartupEntry startupEntry);\n        bool StillExists(StartupEntry startupEntry);\n        IEnumerable<StartupEntry> AddDisableInfo(IList<StartupEntry> existingEntries);\n\n        /// <summary>\n        ///     Get backup store path for the link. The backup extension is appended as well.\n        ///     Works only for links, file doesn't have to exist.\n        /// </summary>\n        string GetDisabledEntryPath(StartupEntry startupEntry);\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Startup/Normal/NewStartupDisable.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing Microsoft.Win32;\r\n\r\nnamespace UninstallTools.Startup.Normal\r\n{\r\n    internal sealed class NewStartupDisable : IStartupDisable\r\n    {\r\n        /// <summary>\r\n        ///     Only the first byte matters, following bytes contain data that there is no documentation for (at least I didn't\r\n        ///     find any)\r\n        /// </summary>\r\n        private static readonly byte[] DisabledBytes =\r\n        {\r\n            0x03, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n            0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r\n        };\r\n\r\n        /// <summary>\r\n        ///     So far I've only seen enabled values filled with 0's except for the first byte\r\n        /// </summary>\r\n        private static readonly byte[] EnabledBytes =\r\n        {\r\n            0x02, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n            0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r\n        };\r\n\r\n        public IEnumerable<StartupEntry> AddDisableInfo(IList<StartupEntry> existingEntries)\r\n        {\r\n            return existingEntries.DoForEach(x =>\r\n            {\r\n                if (GetDisabled(x))\r\n                    x.DisabledStore = true;\r\n            });\r\n        }\r\n\r\n        public void Disable(StartupEntry startupEntry)\r\n        {\r\n            SetDisabled(startupEntry, true);\r\n        }\r\n\r\n        public void Enable(StartupEntry startupEntry)\r\n        {\r\n            SetDisabled(startupEntry, false);\r\n        }\r\n\r\n        public string GetDisabledEntryPath(StartupEntry startupEntry)\r\n        {\r\n            return startupEntry.FullLongName;\r\n        }\r\n\r\n        public bool StillExists(StartupEntry startupEntry)\r\n        {\r\n            if (startupEntry.IsRegKey)\r\n            {\r\n                using (var key = RegistryTools.OpenRegistryKey(startupEntry.ParentLongName))\r\n                    return key != null && !string.IsNullOrEmpty(key.GetStringSafe(startupEntry.EntryLongName));\r\n            }\r\n\r\n            return File.Exists(startupEntry.FullLongName);\r\n        }\r\n\r\n        private static bool GetDisabled(StartupEntry startupEntry)\r\n        {\r\n            try\r\n            {\r\n                using (var key = RegistryTools.CreateSubKeyRecursively(GetStartupApprovedKey(startupEntry)))\r\n                {\r\n                    return key.GetValue(startupEntry.EntryLongName) is byte[] bytes \r\n                        && bytes.Length > 0 \r\n                        && !bytes[0].Equals(0x02);\r\n                }\r\n            }\r\n            catch (SystemException ex)\r\n            {\r\n                Trace.WriteLine($\"Failed to get Disabled start-up state for {startupEntry.ProgramName}: {ex}\");\r\n                return false;\r\n            }\r\n        }\r\n        \r\n        private static string GetStartupApprovedKey(StartupEntry startupEntry)\r\n        {\r\n            if (!startupEntry.IsRegKey)\r\n                return startupEntry.AllUsers\r\n                    ? @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\StartupFolder\"\r\n                    : @\"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\StartupFolder\";\r\n\r\n            if (startupEntry.IsRunOnce)\r\n            {\r\n                if (startupEntry.AllUsers)\r\n                {\r\n                    return startupEntry.ParentLongName.Contains(\"Wow6432Node\")\r\n                        ? @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\RunOnce32\"\r\n                        : @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\RunOnce\";\r\n                }\r\n                return @\"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\RunOnce\";\r\n            }\r\n\r\n            if (startupEntry.AllUsers)\r\n            {\r\n                return startupEntry.ParentLongName.Contains(\"Wow6432Node\")\r\n                    ? @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\Run32\"\r\n                    : @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\Run\";\r\n            }\r\n            return @\"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\Run\";\r\n        }\r\n\r\n        private static void SetDisabled(StartupEntry startupEntry, bool disabled)\r\n        {\r\n            using (var key = RegistryTools.CreateSubKeyRecursively(GetStartupApprovedKey(startupEntry)))\r\n            {\r\n                key.SetValue(startupEntry.EntryLongName, disabled ? DisabledBytes : EnabledBytes,\r\n                    RegistryValueKind.Binary);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Startup/Normal/OldStartupDisable.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing Klocman.Extensions;\r\nusing Klocman.Native;\r\nusing Klocman.Tools;\r\nusing Microsoft.Win32;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Startup.Normal\r\n{\r\n    internal sealed class OldStartupDisable : IStartupDisable\r\n    {\r\n        /// <summary>\r\n        ///     Extension used for link backup of the disabled entry\r\n        ///     (it is appended to the end of the filename, after the original extension).\r\n        /// </summary>\r\n        private static readonly string BackupExtension = \".Startup\";\r\n\r\n        /// <summary>\r\n        ///     Path used to store link backups of disabled entries\r\n        /// </summary>\r\n        private static readonly string DriveDisableBackupPath =\r\n            Path.Combine(WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_WINDOWS), \"pss\");\r\n\r\n        /// <summary>\r\n        ///     Registry key used to store information about disabled links\r\n        /// </summary>\r\n        private static readonly StartupPointData DriveDisabledKey = new(\r\n            true, false, false, false, string.Empty,\r\n            @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Shared Tools\\MSConfig\\startupfolder\");\r\n\r\n        /// <summary>\r\n        ///     Registry key used to store information about disabled registry values\r\n        /// </summary>\r\n        private static readonly StartupPointData RegistryDisabledKey = new(\r\n            true, true, false, false, string.Empty,\r\n            @\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Shared Tools\\MSConfig\\startupreg\");\r\n\r\n        /// <summary>\r\n        ///     Look for entries in the disabled startup backup store.\r\n        /// </summary>\r\n        public IEnumerable<StartupEntry> AddDisableInfo(IList<StartupEntry> existingEntries)\r\n        {\r\n            foreach (var entry in existingEntries)\r\n                yield return entry;\r\n\r\n            using (var regDisKey = RegistryTools.CreateSubKeyRecursively(RegistryDisabledKey.Path))\r\n            {\r\n                var badLocations = new List<string>();\r\n                foreach (var subKeyName in regDisKey.GetSubKeyNames())\r\n                {\r\n                    using (var subKey = regDisKey.OpenSubKey(subKeyName))\r\n                    {\r\n                        if (subKey == null) continue;\r\n\r\n                        var key = subKey.GetStringSafe(\"key\");\r\n                        var hkey = subKey.GetStringSafe(\"hkey\");\r\n                        var item = subKey.GetStringSafe(\"item\");\r\n                        var command = subKey.GetStringSafe(\"command\");\r\n                        if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(hkey)\r\n                            || string.IsNullOrEmpty(item) || string.IsNullOrEmpty(command))\r\n                            continue;\r\n\r\n                        string location;\r\n                        try\r\n                        {\r\n                            location = Path.Combine(RegistryTools.GetKeyRoot(hkey, false), key);\r\n                        }\r\n                        catch (ArgumentException)\r\n                        {\r\n                            continue;\r\n                        }\r\n\r\n                        if (string.IsNullOrEmpty(location.Trim()))\r\n                            continue;\r\n\r\n                        var runLocation = StartupEntryFactory.RunLocations\r\n                            .FirstOrDefault(x => PathTools.PathsEqual(location, x.Path));\r\n\r\n                        if (runLocation != null)\r\n                        {\r\n                            StartupEntry startupEntry;\r\n                            try\r\n                            {\r\n                                startupEntry = new StartupEntry(runLocation, item, command) { DisabledStore = true };\r\n                            }\r\n                            catch\r\n                            {\r\n                                badLocations.Add(location);\r\n                                continue;\r\n                            }\r\n                            yield return startupEntry;\r\n                        }\r\n                        else\r\n                        {\r\n                            badLocations.Add(location);\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (badLocations.Any())\r\n                {\r\n                    var errorString = Localisation.Error_InvalidRegKeys + \"\\n\" +\r\n                        string.Join(\"\\n\", badLocations.Distinct().OrderBy(x => x).ToArray());\r\n#if DEBUG\r\n                    Debug.Fail(errorString);\r\n#else\r\n                    Trace.WriteLine(errorString);\r\n#endif\r\n                }\r\n            }\r\n\r\n            using (var hddDisKey = RegistryTools.CreateSubKeyRecursively(DriveDisabledKey.Path))\r\n            {\r\n                foreach (var subKeyName in hddDisKey.GetSubKeyNames())\r\n                {\r\n                    using (var subKey = hddDisKey.OpenSubKey(subKeyName))\r\n                    {\r\n                        if (subKey == null) continue;\r\n\r\n                        var path = subKey.GetStringSafe(\"path\");\r\n                        var location = subKey.GetStringSafe(\"location\");\r\n                        var backup = subKey.GetStringSafe(\"backup\");\r\n                        var command = subKey.GetStringSafe(\"command\");\r\n                        if (backup == null || location == null || path == null || command == null)\r\n                            continue;\r\n\r\n                        var runLocation = StartupEntryFactory.RunLocations\r\n                            .FirstOrDefault(x => PathTools.PathsEqual(x.Path, location));\r\n                        if (runLocation == null) continue;\r\n\r\n                        yield return new StartupEntry(runLocation, Path.GetFileName(path), command)\r\n                        {\r\n                            BackupPath = backup,\r\n                            DisabledStore = true\r\n                        };\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        public void Disable(StartupEntry startupEntry)\r\n        {\r\n            if (startupEntry.DisabledStore)\r\n                return;\r\n\r\n            var newPath = CreateDisabledEntryPath(startupEntry);\r\n\r\n            // Remove the startup entry / move the file to the backup folder\r\n            if (startupEntry.IsRegKey)\r\n            {\r\n                try\r\n                {\r\n                    startupEntry.Delete();\r\n                }\r\n                catch\r\n                {\r\n                    // Key doesn't exist\r\n                }\r\n            }\r\n            else\r\n            {\r\n                if (File.Exists(startupEntry.FullLongName))\r\n                {\r\n                    File.Delete(newPath);\r\n                    Directory.CreateDirectory(DriveDisableBackupPath);\r\n                    File.Move(startupEntry.FullLongName, newPath);\r\n                    startupEntry.BackupPath = newPath;\r\n                }\r\n                else\r\n                    throw new InvalidOperationException(Localisation.StartupManager_FailedEnable_FileNotFound\r\n                                                        + \"\\n\\n\" + startupEntry.FullLongName);\r\n            }\r\n\r\n            CreateDisabledEntry(startupEntry, newPath);\r\n\r\n            startupEntry.DisabledStore = true;\r\n        }\r\n\r\n        public void Enable(StartupEntry startupEntry)\r\n        {\r\n            if (!startupEntry.DisabledStore)\r\n                return;\r\n\r\n            // Reconstruct the startup entry\r\n            if (!startupEntry.IsRegKey)\r\n            {\r\n                // Move the backup file back to its original location\r\n                var oldPath = GetDisabledEntryPath(startupEntry);\r\n\r\n                if (File.Exists(oldPath))\r\n                {\r\n                    File.Delete(startupEntry.FullLongName);\r\n                    File.Move(oldPath, startupEntry.FullLongName);\r\n                }\r\n                else\r\n                    throw new InvalidOperationException(Localisation.StartupManager_FailedEnable_FileNotFound\r\n                                                        + \"\\n\\n\" + oldPath);\r\n            }\r\n            else\r\n            {\r\n                // Recreate the registry key\r\n                StartupEntryManager.CreateRegValue(startupEntry);\r\n            }\r\n\r\n            Delete(startupEntry);\r\n\r\n            startupEntry.BackupPath = string.Empty;\r\n            // Entry is no longer disabled\r\n            startupEntry.DisabledStore = false;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Create backup store path for the link. The backup extension is appended as well.\r\n        ///     Works only for links, returns garbage for registry values.\r\n        /// </summary>\r\n        public string GetDisabledEntryPath(StartupEntry startupEntry)\r\n        {\r\n            return string.IsNullOrEmpty(startupEntry.BackupPath)\r\n                ? CreateDisabledEntryPath(startupEntry)\r\n                : startupEntry.BackupPath;\r\n        }\r\n\r\n        public bool StillExists(StartupEntry startupEntry)\r\n        {\r\n            try\r\n            {\r\n                using (var key = RegistryTools.OpenRegistryKey(\r\n                    startupEntry.IsRegKey ? RegistryDisabledKey.Path : DriveDisabledKey.Path))\r\n                {\r\n                    var disabledSubKeyName = startupEntry.IsRegKey\r\n                        ? startupEntry.EntryLongName\r\n                        : startupEntry.FullLongName.Replace('\\\\', '^');\r\n                    return key.GetSubKeyNames()\r\n                        .Any(x => disabledSubKeyName.Equals(x, StringComparison.InvariantCultureIgnoreCase));\r\n                }\r\n            }\r\n            catch\r\n            {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        public void Delete(StartupEntry startupEntry)\r\n        {\r\n            RemoveDisabledRegEntry(startupEntry);\r\n\r\n            // Remove the backup file\r\n            if (!startupEntry.IsRegKey)\r\n                File.Delete(GetDisabledEntryPath(startupEntry));\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Create a new record in the appropriate disabled entry store. If the entry already exists it is overwritten.\r\n        /// </summary>\r\n        /// <param name=\"startupEntry\">Startup entry to create the record for</param>\r\n        /// <param name=\"newEntryPath\">Full path to the new backup file</param>\r\n        private static void CreateDisabledEntry(StartupEntry startupEntry, string newEntryPath)\r\n        {\r\n            using (var disabledStartupEntryStore = RegistryTools.CreateSubKeyRecursively(\r\n                startupEntry.IsRegKey ? RegistryDisabledKey.Path : DriveDisabledKey.Path))\r\n            {\r\n                var disabledSubKeyName = startupEntry.IsRegKey\r\n                    ? startupEntry.EntryLongName\r\n                    : startupEntry.FullLongName.Replace('\\\\', '^');\r\n                var disabledSubkeyKey =\r\n                    disabledStartupEntryStore.GetSubKeyNames()\r\n                        .FirstOrDefault(x => disabledSubKeyName.Equals(x, StringComparison.InvariantCultureIgnoreCase));\r\n\r\n                // Clean up old disabled entry if any\r\n                if (!string.IsNullOrEmpty(disabledSubkeyKey))\r\n                {\r\n                    disabledStartupEntryStore.DeleteSubKey(disabledSubkeyKey);\r\n                }\r\n\r\n                using (\r\n                    var storeSubkey = disabledStartupEntryStore.CreateSubKey(disabledSubKeyName,\r\n                        RegistryKeyPermissionCheck.ReadWriteSubTree))\r\n                {\r\n                    if (storeSubkey == null)\r\n                        return;\r\n\r\n                    if (startupEntry.IsRegKey)\r\n                    {\r\n                        storeSubkey.SetValue(\"key\", RegistryTools.StripKeyRoot(startupEntry.ParentLongName),\r\n                            RegistryValueKind.String);\r\n                        storeSubkey.SetValue(\"item\", startupEntry.EntryLongName, RegistryValueKind.String);\r\n                        storeSubkey.SetValue(\"hkey\", RegistryTools.GetKeyRoot(startupEntry.ParentLongName, true),\r\n                            RegistryValueKind.String);\r\n                        storeSubkey.SetValue(\"inimapping\", 0, RegistryValueKind.String);\r\n                    }\r\n                    else\r\n                    {\r\n                        storeSubkey.SetValue(\"item\",\r\n                            Path.GetFileNameWithoutExtension(startupEntry.EntryLongName) ?? string.Empty,\r\n                            RegistryValueKind.String);\r\n                        storeSubkey.SetValue(\"path\", startupEntry.FullLongName, RegistryValueKind.String);\r\n                        storeSubkey.SetValue(\"location\", startupEntry.ParentLongName, RegistryValueKind.String);\r\n                        storeSubkey.SetValue(\"backup\", newEntryPath, RegistryValueKind.String);\r\n                        storeSubkey.SetValue(\"backupExtension\", BackupExtension, RegistryValueKind.String);\r\n                    }\r\n\r\n                    // Command stays the same for both\r\n                    storeSubkey.SetValue(\"command\", startupEntry.Command, RegistryValueKind.String);\r\n\r\n                    // Set the disable date\r\n                    var now = DateTime.Now;\r\n                    storeSubkey.SetValue(\"YEAR\", now.Year, RegistryValueKind.DWord);\r\n                    storeSubkey.SetValue(\"MONTH\", now.Month, RegistryValueKind.DWord);\r\n                    storeSubkey.SetValue(\"DAY\", now.Day, RegistryValueKind.DWord);\r\n                    storeSubkey.SetValue(\"HOUR\", now.Hour, RegistryValueKind.DWord);\r\n                    storeSubkey.SetValue(\"MINUTE\", now.Minute, RegistryValueKind.DWord);\r\n                    storeSubkey.SetValue(\"SECOND\", now.Second, RegistryValueKind.DWord);\r\n                }\r\n            }\r\n        }\r\n\r\n        private static string CreateDisabledEntryPath(StartupEntryBase startupEntry)\r\n        {\r\n            return Path.Combine(DriveDisableBackupPath, startupEntry.EntryLongName + BackupExtension);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Remove registry key of a disabled startup entry. Link file is not touched if it exists.\r\n        /// </summary>\r\n        private static void RemoveDisabledRegEntry(StartupEntry startupEntry)\r\n        {\r\n            using (var disabledStartupEntryStore = RegistryTools.OpenRegistryKey(\r\n                startupEntry.IsRegKey ? RegistryDisabledKey.Path : DriveDisabledKey.Path, true))\r\n            {\r\n                var disabledSubKeyName = startupEntry.IsRegKey\r\n                    ? startupEntry.EntryLongName\r\n                    : startupEntry.FullLongName.Replace('\\\\', '^');\r\n                var disabledSubkeyKey =\r\n                    disabledStartupEntryStore.GetSubKeyNames()\r\n                        .FirstOrDefault(x => disabledSubKeyName.Equals(x, StringComparison.InvariantCultureIgnoreCase));\r\n\r\n                if (!string.IsNullOrEmpty(disabledSubkeyKey))\r\n                {\r\n                    disabledStartupEntryStore.DeleteSubKey(disabledSubkeyKey);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Startup/Normal/StartupEntry.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.IO;\r\nusing Klocman.Extensions;\r\nusing Klocman.Resources;\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools.Startup.Normal\r\n{\r\n    /// <summary>\r\n    ///     Starup entries stored in Startup folders and Run/RunOnce registry keys\r\n    /// </summary>\r\n    public sealed class StartupEntry : StartupEntryBase\r\n    {\r\n        internal bool AllUsersStore;\r\n        internal bool DisabledStore;\r\n\r\n        internal StartupEntry(StartupPointData dataPoint, string fileName, string targetString)\r\n        {\r\n            AllUsersStore = dataPoint.AllUsers;\r\n            IsRegKey = dataPoint.IsRegKey;\r\n            IsRunOnce = dataPoint.IsRunOnce;\r\n            EntryLongName = fileName;\r\n            ParentShortName = dataPoint.Name;\r\n            ParentLongName = dataPoint.Path?.TrimEnd('\\\\');\r\n\r\n            Command = targetString ?? string.Empty;\r\n\r\n            if (!string.IsNullOrEmpty(EntryLongName))\r\n                ProgramName = IsRegKey ? EntryLongName : Path.GetFileNameWithoutExtension(EntryLongName);\r\n\r\n            if (!string.IsNullOrEmpty(targetString))\r\n            {\r\n                CommandFilePath = ProcessCommandString(Command);\r\n\r\n                if (CommandFilePath != null)\r\n                    FillInformationFromFile(CommandFilePath);\r\n\r\n                if (string.IsNullOrEmpty(ProgramName))\r\n                    ProgramName = ProgramNameTrimmed;\r\n            }\r\n\r\n            if (string.IsNullOrEmpty(ProgramName))\r\n                ProgramName = targetString ?? dataPoint.Name ?? CommonStrings.Unknown;\r\n            if (string.IsNullOrEmpty(ProgramNameTrimmed))\r\n                ProgramNameTrimmed = StringTools.StripStringFromVersionNumber(ProgramName);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     True if the entry is not processed during startup.\r\n        ///     It is stored in the backup reg key and optionally backup directory if it's a link file.\r\n        /// </summary>\r\n        public override bool Disabled\r\n        {\r\n            get { return DisabledStore; }\r\n            set\r\n            {\r\n                if (value != DisabledStore)\r\n                {\r\n                    if (value)\r\n                    {\r\n                        StartupEntryManager.Disable(this);\r\n                    }\r\n                    else\r\n                    {\r\n                        StartupEntryManager.Enable(this);\r\n                    }\r\n\r\n                    DisabledStore = value;\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     True if this entry is executed during logon of all users, false if it is only for the current user.\r\n        /// </summary>\r\n        public bool AllUsers\r\n        {\r\n            get { return AllUsersStore; }\r\n            set\r\n            {\r\n                if (AllUsersStore != value)\r\n                {\r\n                    StartupEntryManager.SetAllUsers(this, value);\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     True if entry is a registry value, false if it's a link file\r\n        /// </summary>\r\n        public bool IsRegKey { get; internal set; }\r\n\r\n        /// <summary>\r\n        ///     True if the entry will be removed after running\r\n        /// </summary>\r\n        public bool IsRunOnce { get; internal set; }\r\n\r\n        /// <summary>\r\n        ///     Filename of the link (with extension), or name of the registry value.\r\n        /// </summary>\r\n        public override string EntryLongName { get; protected set; }\r\n\r\n        /// <summary>\r\n        ///     Full path to the link file backup\r\n        /// </summary>\r\n        internal string BackupPath { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Delete this startup entry from the system\r\n        /// </summary>\r\n        public override void Delete()\r\n        {\r\n            StartupEntryManager.Delete(this);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Check if the startup entry still exists in registry or on disk.\r\n        ///     If the entry is disabled, but it exists in the backup store, this method will return true.\r\n        /// </summary>\r\n        public override bool StillExists()\r\n        {\r\n            try\r\n            {\r\n                if (Disabled)\r\n                    return StartupEntryManager.DisableFunctions.StillExists(this);\r\n\r\n                if (!IsRegKey) return File.Exists(FullLongName);\r\n\r\n                using (var key = RegistryTools.OpenRegistryKey(ParentLongName))\r\n                    return key != null && !string.IsNullOrEmpty(key.GetStringSafe(EntryLongName));\r\n            }\r\n            catch\r\n            {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        //TODO temporary hack\r\n        internal void SetParentFancyName(string newValue)\r\n        {\r\n            ParentShortName = newValue;\r\n        }\r\n\r\n        //TODO temporary hack\r\n        internal void SetParentLongName(string newValue)\r\n        {\r\n            ParentLongName = newValue;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     $\"{ProgramName} | {Company} | {ParentLongName} | {Command}\"\r\n        /// </summary>\r\n        public override string ToLongString()\r\n        {\r\n            return $\"{ProgramName} | {Company} | {ParentLongName} | {Command}\";\r\n        }\r\n\r\n        public override void CreateBackup(string backupPath)\r\n        {\r\n            StartupEntryManager.CreateBackup(this, backupPath);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Startup/Normal/StartupEntryFactory.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Security;\r\nusing Klocman.Extensions;\r\nusing Klocman.Forms.Tools;\r\nusing Klocman.Native;\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools.Startup.Normal\r\n{\r\n    public static class StartupEntryFactory\r\n    {\r\n        /// <summary>\r\n        ///     Ordinal locations that contain startup entries\r\n        /// </summary>\r\n        internal static readonly IEnumerable<StartupPointData> RunLocations = new[]\r\n        {\r\n            // Normally those keys should not exist, they are not scanned by windows\r\n            /*new StartupPointData(false, true, false, true, @\"HKCU\\Wow\\Run\",\r\n                @\"HKEY_CURRENT_USER\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\\\"),\r\n            new StartupPointData(false, true, true, true, @\"HKCU\\Wow\\RunOnce\",\r\n                @\"HKEY_CURRENT_USER\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\RunOnce\\\"),*/\r\n\r\n            new StartupPointData(true, true, false, true, @\"HKLM\\Wow\\Run\",\r\n                @\"HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\"),\r\n            new StartupPointData(true, true, true, true, @\"HKLM\\Wow\\RunOnce\",\r\n                @\"HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\RunOnce\"),\r\n            new StartupPointData(true, true, false, false, @\"HKLM\\Run\",\r\n                @\"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\"),\r\n            new StartupPointData(false, true, false, false, @\"HKCU\\Run\",\r\n                @\"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\"),\r\n            new StartupPointData(true, true, true, false, @\"HKLM\\RunOnce)\",\r\n                @\"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\"),\r\n            new StartupPointData(false, true, true, false, @\"HKCU\\RunOnce)\",\r\n                @\"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\"),\r\n            new StartupPointData(false, false, false, false, @\"User\\Startup\",\r\n                WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_STARTUP)),\r\n            new StartupPointData(true, false, false, false, @\"Common\\Startup\",\r\n                WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_COMMON_STARTUP))\r\n        }.AsEnumerable();\r\n        \r\n        /// <summary>\r\n        ///     Look for and return all of the startup entries stored in Startup folders and Run/RunOnce registry keys.\r\n        /// </summary>\r\n        public static IEnumerable<StartupEntry> GetStartupItems()\r\n        {\r\n            var results = new List<StartupEntry>();\r\n            foreach (var point in RunLocations)\r\n            {\r\n                results.AddRange(point.IsRegKey ? GetRegStartupItems(point) : GetDriveStartupItems(point));\r\n            }\r\n            return StartupEntryManager.DisableFunctions.AddDisableInfo(results);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Look for links in startup folders\r\n        /// </summary>\r\n        private static IEnumerable<StartupEntry> GetDriveStartupItems(StartupPointData point)\r\n        {\r\n            if (!Directory.Exists(point.Path))\r\n                yield break;\r\n\r\n            foreach (var name in Directory.GetFiles(point.Path)\r\n                .Where(name => \".lnk\".Equals(Path.GetExtension(name), StringComparison.CurrentCultureIgnoreCase)))\r\n            {\r\n                StartupEntry result;\r\n                try\r\n                {\r\n                    result = new StartupEntry(point, Path.GetFileName(name), WindowsTools.ResolveShortcut(name));\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    PremadeDialogs.GenericError(ex);\r\n                    continue;\r\n                }\r\n                yield return result;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Look for registry values in the run keys\r\n        /// </summary>\r\n        private static IEnumerable<StartupEntry> GetRegStartupItems(StartupPointData point)\r\n        {\r\n            var results = new List<StartupEntry>();\r\n            try\r\n            {\r\n                using (var rKey = RegistryTools.OpenRegistryKey(point.Path))\r\n                {\r\n                    if (rKey != null)\r\n                    {\r\n                        foreach (var name in rKey.GetValueNames())\r\n                        {\r\n                            var result = rKey.GetStringSafe(name);\r\n                            if (string.IsNullOrEmpty(result))\r\n                                continue;\r\n\r\n                            try\r\n                            {\r\n                                results.Add(new StartupEntry(point, name, result));\r\n                            }\r\n                            catch (Exception ex)\r\n                            {\r\n                                PremadeDialogs.GenericError(ex);\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            catch (ArgumentException)\r\n            {\r\n                // Key doesn't exist, create it\r\n                RegistryTools.CreateSubKeyRecursively(point.Path)?.Close();\r\n            }\r\n            catch (SecurityException ex)\r\n            {\r\n                Trace.WriteLine(@\"Failed to process startup entries: \" + ex);\r\n            }\r\n\r\n            return results;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Startup/Normal/StartupEntryManager.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing Klocman.Tools;\r\nusing Microsoft.Win32;\r\n\r\nnamespace UninstallTools.Startup.Normal\r\n{\r\n    public static class StartupEntryManager\r\n    {\r\n        private static IStartupDisable _disableFunctions;\r\n\r\n        // 6.2 is windows 8 and 2012, they are using a new startup disable scheme\r\n        internal static IStartupDisable DisableFunctions => _disableFunctions ??= Environment.OSVersion.Version < WindowsTools.Windows8\r\n                                                                                  ? new OldStartupDisable()\r\n                                                                                  : new NewStartupDisable();\r\n\r\n        /// <summary>\r\n        ///     Delete startup entry data from registry and file system.\r\n        ///     Only needed items are removed, for example if entry is disabled the entry from \"Run\" key is\r\n        ///     not removed if it exists, same for the \"Startup\" folder. To remove them change the Disabled\r\n        ///     property and run this command again.\r\n        /// </summary>\r\n        /// <param name=\"startupEntry\">Entry to delete</param>\r\n        public static void Delete(StartupEntry startupEntry)\r\n        {\r\n            if (startupEntry.Disabled)\r\n                DisableFunctions.Enable(startupEntry);\r\n\r\n            if (startupEntry.IsRegKey)\r\n                RegistryTools.RemoveRegistryValue(startupEntry.ParentLongName, startupEntry.EntryLongName);\r\n            else\r\n                File.Delete(startupEntry.FullLongName);\r\n        }\r\n\r\n        public static void MoveToRegistry(StartupEntry startupEntry)\r\n        {\r\n            if (startupEntry.IsRegKey)\r\n                return;\r\n\r\n            // Don't want to deal with the disable wizardry\r\n            var wasDisabled = startupEntry.Disabled;\r\n            if (wasDisabled)\r\n                Enable(startupEntry);\r\n\r\n            // Delete old entry\r\n            startupEntry.Delete();\r\n\r\n            // Plug in new data\r\n            startupEntry.IsRegKey = true;\r\n\r\n            var newPoint =\r\n                StartupEntryFactory.RunLocations.First(x => x.IsRegKey && (x.AllUsers == startupEntry.AllUsers)\r\n                                                            && !x.IsRunOnce && !x.IsWow);\r\n\r\n            startupEntry.SetParentLongName(newPoint.Path);\r\n            startupEntry.SetParentFancyName(newPoint.Name);\r\n\r\n            // Recreate registry entry\r\n            CreateRegValue(startupEntry);\r\n\r\n            // Restore disable status\r\n            if (wasDisabled)\r\n                Disable(startupEntry);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Disable startup entry to stop it from being processed at startup. It is stored in the backup store.\r\n        /// </summary>\r\n        /// <param name=\"startupEntry\"></param>\r\n        public static void Disable(StartupEntry startupEntry)\r\n        {\r\n            if (startupEntry.DisabledStore)\r\n                return;\r\n\r\n            DisableFunctions.Disable(startupEntry);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Restore the entry from the backup store, so that it can be executed again.\r\n        /// </summary>\r\n        /// <param name=\"startupEntry\"></param>\r\n        public static void Enable(StartupEntry startupEntry)\r\n        {\r\n            if (!startupEntry.DisabledStore)\r\n                return;\r\n\r\n            DisableFunctions.Enable(startupEntry);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Set if this startup entry should run for all users or only for the current user.\r\n        /// </summary>\r\n        public static void SetAllUsers(StartupEntry startupEntry, bool allUsers)\r\n        {\r\n            // Find the suitable replacement\r\n            var target = StartupEntryFactory.RunLocations.First(x => (x.IsRegKey == startupEntry.IsRegKey)\r\n                                                                     && (x.IsRunOnce == startupEntry.IsRunOnce) &&\r\n                                                                     (x.AllUsers == allUsers) && !x.IsWow);\r\n\r\n            // Don't want to deal with the disable wizardry\r\n            var wasDisabled = startupEntry.Disabled;\r\n            if (wasDisabled)\r\n                Enable(startupEntry);\r\n\r\n            // Remove old entry or move the link to the new directory.\r\n            if (startupEntry.IsRegKey)\r\n            {\r\n                try\r\n                {\r\n                    // Can't do this with links as they would get deleted\r\n                    startupEntry.Delete();\r\n                }\r\n                catch\r\n                {\r\n                    // Key doesn't exist\r\n                }\r\n            }\r\n            else\r\n            {\r\n                if (File.Exists(startupEntry.FullLongName))\r\n                {\r\n                    var newPath = Path.Combine(target.Path, startupEntry.EntryLongName);\r\n                    File.Delete(newPath);\r\n                    File.Move(startupEntry.FullLongName, newPath);\r\n                }\r\n            }\r\n\r\n            // Plug in new data\r\n            startupEntry.SetParentLongName(target.Path);\r\n            startupEntry.AllUsersStore = allUsers;\r\n\r\n            // Update registry stuff\r\n            if (startupEntry.IsRegKey)\r\n                CreateRegValue(startupEntry);\r\n\r\n            // Restore disable status\r\n            if (wasDisabled)\r\n                Disable(startupEntry);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Create a registry value for the specified entry. Works for drive links as well.\r\n        /// </summary>\r\n        /// <param name=\"startupEntry\"></param>\r\n        internal static void CreateRegValue(StartupEntry startupEntry)\r\n        {\r\n            if (string.IsNullOrEmpty(startupEntry.Command))\r\n                return;\r\n\r\n            using (var runKey = RegistryTools.CreateSubKeyRecursively(startupEntry.ParentLongName))\r\n            {\r\n                runKey.SetValue(startupEntry.EntryLongName, startupEntry.Command, RegistryValueKind.String);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Crate backup of the entry in the specified directory. If backup file already exists, it is overwritten.\r\n        /// </summary>\r\n        public static void CreateBackup(StartupEntry startupEntry, string backupPath)\r\n        {\r\n            var newPath = Path.Combine(backupPath, \"Startup - \" + startupEntry.EntryLongName);\r\n            if (startupEntry.IsRegKey)\r\n            {\r\n                var sb = new StringBuilder();\r\n                sb.AppendLine(\"Windows Registry Editor Version 5.00\");\r\n                sb.AppendLine();\r\n                sb.AppendLine($@\"[{startupEntry.ParentLongName}]\");\r\n                sb.AppendLine(\r\n                    $\"\\\"{startupEntry.EntryLongName}\\\"=\\\"{startupEntry.Command.Replace(\"\\\\\", \"\\\\\\\\\").Replace(\"\\\"\", \"\\\\\\\"\")}\\\"\");\r\n                File.WriteAllText(newPath + \".reg\", sb.ToString());\r\n            }\r\n            else\r\n            {\r\n                if (!File.Exists(newPath))\r\n                    File.Delete(newPath);\r\n\r\n                if (startupEntry.Disabled)\r\n                {\r\n                    var disabledFile = DisableFunctions.GetDisabledEntryPath(startupEntry);\r\n                    if (File.Exists(disabledFile))\r\n                        File.Copy(disabledFile, newPath);\r\n                }\r\n                else\r\n                {\r\n                    if (File.Exists(startupEntry.FullLongName))\r\n                        File.Copy(startupEntry.FullLongName, newPath);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Startup/Normal/StartupPointData.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nnamespace UninstallTools.Startup.Normal\n{\n    internal sealed class StartupPointData\n    {\n        public readonly bool AllUsers;\n        public readonly bool IsRegKey;\n        public readonly bool IsRunOnce;\n        public readonly bool IsWow;\n        public readonly string Name;\n        public readonly string Path;\n\n        public StartupPointData(bool allUsers, bool isRegKey, bool isRunOnce, bool isWow, string name, string path)\n        {\n            AllUsers = allUsers;\n            IsRegKey = isRegKey;\n            IsRunOnce = isRunOnce;\n            IsWow = isWow;\n            Name = name;\n            Path = path;\n        }\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Startup/Service/ServiceEntry.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.IO;\r\nusing System.Management;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Startup.Service\r\n{\r\n    public sealed class ServiceEntry : StartupEntryBase\r\n    {\r\n        public ServiceEntry(string serviceName, string displayName, string command)\r\n        {\r\n            ProgramName = serviceName;\r\n            EntryLongName = displayName;\r\n\r\n            Command = command;\r\n\r\n            if (ProcessStartCommand.TryParse(command, out var pc))\r\n                CommandFilePath = pc.FileName;\r\n            else if (File.Exists(command))\r\n                CommandFilePath = command;\r\n\r\n            FillInformationFromFile(CommandFilePath);\r\n        }\r\n\r\n        public override string ParentShortName\r\n        {\r\n            get { return Localisation.Startup_ShortName_Service; }\r\n            protected set { }\r\n        }\r\n\r\n        public override string ParentLongName\r\n        {\r\n            get { return Localisation.Startup_ShortName_Service; }\r\n            protected set { }\r\n        }\r\n\r\n        public override bool Disabled\r\n        {\r\n            get\r\n            {\r\n                try\r\n                {\r\n                    return ServiceEntryFactory.CheckServiceEnabled(ProgramName);\r\n                }\r\n                catch (ManagementException)\r\n                {\r\n                    return false;\r\n                }\r\n            }\r\n            set { ServiceEntryFactory.EnableService(ProgramName, !value); }\r\n        }\r\n\r\n        public override void Delete()\r\n        {\r\n            ServiceEntryFactory.DeleteService(ProgramName);\r\n        }\r\n\r\n        public override bool StillExists()\r\n        {\r\n            try\r\n            {\r\n                ServiceEntryFactory.CheckServiceEnabled(ProgramName);\r\n                return true;\r\n            }\r\n            catch (ManagementException)\r\n            {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        public override void CreateBackup(string backupPath)\r\n        {\r\n            var path = @\"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\services\\\" + ProgramName;\r\n\r\n            using (var key = RegistryTools.OpenRegistryKey(path))\r\n            {\r\n                if (key == null)\r\n                    throw new IOException();\r\n            }\r\n\r\n            var filename = PathTools.SanitizeFileName(FullLongName) + \".reg\";\r\n            RegistryTools.ExportRegistry(Path.Combine(backupPath, filename), new[] { path });\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UninstallTools/Startup/Service/ServiceEntryFactory.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Linq;\r\nusing System.Management;\r\nusing System.Runtime.InteropServices;\r\nusing System.Security;\r\nusing Klocman.Native;\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools.Startup.Service\r\n{\r\n    internal static class ServiceEntryFactory\r\n    {\r\n        internal enum StartMode\r\n        {\r\n            Auto,\r\n            Manual,\r\n            Disabled\r\n        }\r\n\r\n        /* ServiceType\r\n        Kernel Driver \r\n        File System Driver \r\n        Adapter \r\n        Recognizer Driver \r\n        Own Process \r\n        Share Process \r\n        Interactive Process \r\n        */\r\n\r\n        public static IEnumerable<ServiceEntry> GetServiceEntries()\r\n        {\r\n            var results = new List<ServiceEntry>();\r\n            try\r\n            {\r\n                var searcher = new ManagementObjectSearcher(\"root\\\\CIMV2\",\r\n                    \"SELECT * FROM Win32_Service\");\r\n\r\n                foreach (var queryObj in searcher.Get())\r\n                {\r\n                    // Skip drivers and adapters\r\n                    if (queryObj[\"ServiceType\"] is not string serviceType || !serviceType.Contains(\"Process\"))\r\n                        continue;\r\n\r\n                    // Don't show system services\r\n                    if (queryObj[\"PathName\"] is not string filename || filename.Contains(\r\n                        WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_WINDOWS),\r\n                        StringComparison.InvariantCultureIgnoreCase))\r\n                        continue;\r\n\r\n                    var e = new ServiceEntry((string)queryObj[\"Name\"], queryObj[\"DisplayName\"] as string, filename);\r\n\r\n                    //queryObj[\"Caption\"]);\r\n                    //queryObj[\"Description\"]);\r\n                    //queryObj[\"ProcessId\"]\r\n\r\n                    results.Add(e);\r\n                }\r\n            }\r\n            catch (Exception ex) when (ex is TypeInitializationException || ex is ManagementException || ex is ExternalException || ex is PlatformNotSupportedException)\r\n            {\r\n                Trace.WriteLine(@\"Error while gathering services - \" + ex);\r\n            }\r\n\r\n            return results.ToArray();\r\n        }\r\n\r\n        private static bool GetEnabledState(ManagementBaseObject queryObj)\r\n        {\r\n            return queryObj[\"StartMode\"] as string != nameof(StartMode.Auto);\r\n        }\r\n\r\n        public static void EnableService(string serviceName, bool newState)\r\n        {\r\n            var classInstance = GetServiceObject(serviceName);\r\n\r\n            // Obtain in-parameters for the method\r\n            var inParams = classInstance.GetMethodParameters(\"ChangeStartMode\");\r\n\r\n            // Add the input parameters.\r\n            inParams[\"StartMode\"] = newState ? \"Automatic\" : \"Disabled\";\r\n\r\n            // Execute the method and obtain the return values.\r\n            var outParams = classInstance.InvokeMethod(\"ChangeStartMode\", inParams, new InvokeMethodOptions { Timeout = TimeSpan.FromMinutes(1) });\r\n            CheckReturnValue(outParams);\r\n        }\r\n\r\n        public static bool CheckServiceEnabled(string serviceName)\r\n        {\r\n            var classInstance = GetServiceObject(serviceName);\r\n\r\n            return GetEnabledState(classInstance);\r\n        }\r\n\r\n        public static void DeleteService(string serviceName)\r\n        {\r\n            try { EnableService(serviceName, false); }\r\n            catch (ManagementException) { }\r\n\r\n            var classInstance = GetServiceObject(serviceName);\r\n\r\n            // Execute the method and obtain the return values.\r\n            var outParams = classInstance.InvokeMethod(\"Delete\", null, new InvokeMethodOptions { Timeout = TimeSpan.FromMinutes(1) });\r\n            CheckReturnValue(outParams, 16); // 16 - Service Marked For Deletion\r\n        }\r\n\r\n        private static void CheckReturnValue(ManagementBaseObject outParams, params UInt32[] ignoredCodes)\r\n        {\r\n            if (outParams == null) return;\r\n\r\n            var exitCode = (UInt32)outParams[\"ReturnValue\"];\r\n            if (exitCode == 0 || ignoredCodes.Any(x => x == exitCode)) return;\r\n\r\n            if (exitCode == 2) // 2 - Access Denied\r\n                throw new SecurityException(\"The user does not have the necessary access.\");\r\n\r\n            throw new ManagementException(\"Action failed with return value \" + outParams[\"ReturnValue\"] +\r\n                \". Check return codes of Win32_Service class methods for more information.\");\r\n        }\r\n\r\n        private static ManagementObject GetServiceObject(string serviceName)\r\n        {\r\n            return new ManagementObject(\"root\\\\CIMV2\",\r\n                $\"Win32_Service.Name='{serviceName}'\", new ObjectGetOptions { Timeout = TimeSpan.FromMinutes(1) });\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Startup/StartupEntryBase.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing Klocman.Tools;\r\n\r\nnamespace UninstallTools.Startup\r\n{\r\n    public abstract class StartupEntryBase\r\n    {\r\n        /// <summary>\r\n        ///     Command executed by the startup entry\r\n        /// </summary>\r\n        public virtual string Command { get; protected set; }\r\n\r\n        /// <summary>\r\n        ///     Full path to the executable pointed by the startup entry\r\n        /// </summary>\r\n        public virtual string CommandFilePath { get; protected set; }\r\n\r\n        /// <summary>\r\n        ///     Company info extracted from the target executable (if possible)\r\n        /// </summary>\r\n        public virtual string Company { get; protected set; }\r\n\r\n        /// <summary>\r\n        ///     True if the entry is not processed during startup.\r\n        ///     It is stored in the backup reg key and optionally backup directory if it's a link file.\r\n        /// </summary>\r\n        public abstract bool Disabled { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Name of the called program extracted from the link or the target executable (if possible)\r\n        /// </summary>\r\n        public virtual string ProgramName { get; protected set; }\r\n\r\n        /// <summary>\r\n        ///     Program name without version info and such\r\n        /// </summary>\r\n        public virtual string ProgramNameTrimmed { get; protected set; }\r\n\r\n        /// <summary>\r\n        ///     Custom name of the parent location\r\n        /// </summary>\r\n        public virtual string ParentShortName { get; protected set; }\r\n\r\n        /// <summary>\r\n        ///     Full name of the parent location\r\n        /// </summary>\r\n        public virtual string ParentLongName { get; protected set; }\r\n\r\n        /// <summary>\r\n        ///     Full name of the entry\r\n        /// </summary>\r\n        public virtual string EntryLongName { get; protected set; }\r\n\r\n        /// <summary>\r\n        ///     Combined ParentLongName and EntryLongName\r\n        /// </summary>\r\n        public virtual string FullLongName => ParentLongName != null && EntryLongName != null\r\n            ? PathTools.GenerousCombine(ParentLongName, EntryLongName)\r\n            : null;\r\n\r\n        /// <summary>\r\n        ///     Delete this startup entry from the system\r\n        /// </summary>\r\n        public abstract void Delete();\r\n\r\n        /// <summary>\r\n        ///     Check if this entry still exists in the system\r\n        /// </summary>\r\n        public abstract bool StillExists();\r\n\r\n        /// <summary>\r\n        ///     $\"{ProgramName} | {Company} | {Command}\"\r\n        /// </summary>\r\n        public virtual string ToLongString()\r\n        {\r\n            return $\"{ProgramName} | {Company} | {Command}\";\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Create beckup of this entry in specified folder\r\n        /// </summary>\r\n        public abstract void CreateBackup(string backupPath);\r\n\r\n        /// <summary>\r\n        ///     Returns FullLongName, unless it's empty. In that case returns ProgramName, or Command if that is empty too.\r\n        /// </summary>\r\n        public override string ToString()\r\n        {\r\n            return FullLongName ?? ProgramName ?? Command;\r\n        }\r\n\r\n        protected static string ProcessCommandString(string command)\r\n        {\r\n            if (string.IsNullOrEmpty(command))\r\n                return null;\r\n\r\n            return ProcessStartCommand.TryParse(command, out var temp) ? temp.FileName : null;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Fill in fields with version information from specified file\r\n        /// </summary>\r\n        protected void FillInformationFromFile(string commandFilename)\r\n        {\r\n            if (!File.Exists(commandFilename))\r\n                return;\r\n\r\n            try\r\n            {\r\n                var info = FileVersionInfo.GetVersionInfo(commandFilename);\r\n                Company = info.CompanyName;\r\n\r\n                var fileDesc = StringTools.StripStringFromVersionNumber(info.FileDescription);\r\n                if (!string.IsNullOrEmpty(fileDesc))\r\n                    ProgramNameTrimmed = fileDesc;\r\n                else\r\n                    ProgramNameTrimmed = !string.IsNullOrEmpty(info.ProductName)\r\n                        ? info.ProductName\r\n                        : StringTools.StripStringFromVersionNumber(ProgramName);\r\n            }\r\n            catch\r\n            {\r\n                // Ignore file access errors errors\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Startup/StartupManager.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing Klocman.Tools;\r\nusing Microsoft.Win32.TaskScheduler;\r\nusing UninstallTools.Properties;\r\nusing UninstallTools.Startup.Browser;\r\nusing UninstallTools.Startup.Normal;\r\nusing UninstallTools.Startup.Service;\r\nusing UninstallTools.Startup.Task;\r\n\r\nnamespace UninstallTools.Startup\r\n{\r\n    public static class StartupManager\r\n    {\r\n        static StartupManager()\r\n        {\r\n            Factories = new Dictionary<string, Func<IEnumerable<StartupEntryBase>>>\r\n            {\r\n                { Localisation.StartupEntries, StartupEntryFactory.GetStartupItems },\r\n                { Localisation.Startup_ShortName_Task, TaskEntryFactory.GetTaskStartupEntries },\r\n                { Localisation.Startup_Shortname_BrowserHelper, BrowserEntryFactory.GetBrowserHelpers },\r\n                { Localisation.Startup_ShortName_Service, ServiceEntryFactory.GetServiceEntries }\r\n            };\r\n        }\r\n\r\n        public static Dictionary<string, Func<IEnumerable<StartupEntryBase>>> Factories { get; }\r\n\r\n        /// <summary>\r\n        /// Fill in the ApplicationUninstallerEntry.StartupEntries property with a list of related StartupEntry objects.\r\n        /// Old data is not cleared, only overwritten if necessary.\r\n        /// </summary>\r\n        /// <param name=\"allUninstallerEntries\">Uninstaller entries to assign to</param>\r\n        /// <param name=\"allStartupEntries\">Startup entries to assign</param>\r\n        public static void AssignStartupEntries(IEnumerable<ApplicationUninstallerEntry> allUninstallerEntries,\r\n            IEnumerable<StartupEntryBase> allStartupEntries)\r\n        {\r\n            //if (startupEntries == null || uninstallers == null)\r\n            //    return;\r\n\r\n            var startups = allStartupEntries.ToList();\r\n            var uninstallers = allUninstallerEntries.ToList();\r\n\r\n            if (startups.Count == 0)\r\n                return;\r\n\r\n            foreach (var uninstaller in uninstallers)\r\n            {\r\n                var positives = startups.Where(startup =>\r\n                {\r\n                    if (startup.ProgramNameTrimmed?.Equals(uninstaller.DisplayNameTrimmed, StringComparison.OrdinalIgnoreCase) == true)\r\n                        return true;\r\n\r\n                    if (startup.CommandFilePath == null)\r\n                        return false;\r\n                    \r\n                    var instLoc = uninstaller.InstallLocation;\r\n                    if (uninstaller.IsInstallLocationValid() && startup.CommandFilePath.StartsWith(instLoc, StringComparison.OrdinalIgnoreCase))\r\n                    {\r\n                        // Don't assign if there are any applications with more specific/deep install locations (same depth is fine)\r\n                        var instLocations = uninstallers\r\n                            .Where(e => e.IsInstallLocationValid())\r\n                            .Select(e => e.InstallLocation)\r\n                            .Where(i=>startup.CommandFilePath.StartsWith(i, StringComparison.OrdinalIgnoreCase));\r\n\r\n                        if (!instLocations.Any(i => i.Length > instLoc.Length))\r\n                            return true;\r\n                    }\r\n\r\n                    var uninLoc = uninstaller.UninstallerLocation;\r\n                    if (!string.IsNullOrEmpty(uninLoc) && startup.CommandFilePath.StartsWith(uninLoc, StringComparison.OrdinalIgnoreCase))\r\n                    {\r\n                        // Don't assign if there are any applications with more specific/deep install locations (same depth is fine)\r\n                        var uninLocations = uninstallers\r\n                            .Where(e => !string.IsNullOrEmpty(e.UninstallerLocation))\r\n                            .Select(e => e.UninstallerLocation)\r\n                            .Where(i => startup.CommandFilePath.StartsWith(i, StringComparison.OrdinalIgnoreCase)); \r\n\r\n                        if (!uninLocations.Any(i => i.Length > uninLoc.Length))\r\n                            return true;\r\n                    }\r\n\r\n                    return false;\r\n                }).ToList();\r\n\r\n                if (positives.Count > 0)\r\n                    uninstaller.StartupEntries = positives;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Look for and return all of the startup items present on this computer.\r\n        /// </summary>\r\n        public static IEnumerable<StartupEntryBase> GetAllStartupItems()\r\n        {\r\n            return Factories.Values.Aggregate(Enumerable.Empty<StartupEntryBase>(),\r\n                (result, factory) => result.Concat(factory()));\r\n        }\r\n\r\n        /// <summary>\r\n        /// Open locations of the startup entries in respective applications. (regedit, win explorer, task scheduler)\r\n        /// </summary>\r\n        public static void OpenStartupEntryLocations(IEnumerable<StartupEntryBase> selection)\r\n        {\r\n            var startupEntryBases = selection as IList<StartupEntryBase> ?? selection.ToList();\r\n            var regOpened = false;\r\n\r\n            if (startupEntryBases.Any(x => x is TaskEntry))\r\n                TaskService.Instance.StartSystemTaskSchedulerManager();\r\n\r\n            var browserAddon = startupEntryBases.OfType<BrowserHelperEntry>().FirstOrDefault();\r\n            if (browserAddon != null)\r\n            {\r\n                RegistryTools.OpenRegKeyInRegedit(browserAddon.FullLongName);\r\n                regOpened = true;\r\n            }\r\n\r\n            foreach (var item in startupEntryBases)\r\n            {\r\n                if (item is StartupEntry s && s.IsRegKey)\r\n                {\r\n                    if (!regOpened)\r\n                    {\r\n                        RegistryTools.OpenRegKeyInRegedit(item.ParentLongName);\r\n                        regOpened = true;\r\n                    }\r\n                }\r\n                else if (!string.IsNullOrEmpty(item.FullLongName))\r\n                    WindowsTools.OpenExplorerFocusedOnObject(item.FullLongName);\r\n                else if (!string.IsNullOrEmpty(item.CommandFilePath))\r\n                    WindowsTools.OpenExplorerFocusedOnObject(item.CommandFilePath);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Startup/Task/TaskEntry.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.IO;\r\nusing Klocman.Forms.Tools;\r\nusing Microsoft.Win32.TaskScheduler;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Startup.Task\r\n{\r\n    public sealed class TaskEntry : StartupEntryBase\r\n    {\r\n        internal TaskEntry(string name, string command, string commandFilename, Microsoft.Win32.TaskScheduler.Task task)\r\n        {\r\n            ProgramName = name;\r\n            Command = command;\r\n            CommandFilePath = Environment.ExpandEnvironmentVariables(commandFilename);\r\n            SourceTask = task;\r\n\r\n            ParentLongName = Localisation.Startup_ShortName_Task + task.Path;\r\n            EntryLongName = task.Name;\r\n\r\n            FillInformationFromFile(CommandFilePath);\r\n        }\r\n\r\n        private Microsoft.Win32.TaskScheduler.Task SourceTask { get; }\r\n\r\n        public override bool Disabled\r\n        {\r\n            get\r\n            {\r\n                try { return !SourceTask.Enabled; }\r\n                catch (FileNotFoundException) { }\r\n                catch (InvalidCastException) { }\r\n                catch (System.Runtime.InteropServices.COMException) { }\r\n                // If it's impossible to check disabled state, assume not disabled\r\n                return false;\r\n            }\r\n            set\r\n            {\r\n                try\r\n                {\r\n                    SourceTask.Enabled = !value;\r\n                }\r\n                catch (Exception e)\r\n                {\r\n                    PremadeDialogs.GenericError(e);\r\n                }\r\n            }\r\n        }\r\n\r\n        public override string ParentShortName\r\n        {\r\n            get { return Localisation.Startup_ShortName_Task; }\r\n            protected set { }\r\n        }\r\n\r\n        public override void Delete()\r\n        {\r\n            SourceTask.Folder.DeleteTask(SourceTask.Name, false);\r\n        }\r\n\r\n        public override bool StillExists()\r\n        {\r\n            return TaskService.Instance.FindTask(SourceTask.Name) != null;\r\n        }\r\n\r\n        public override void CreateBackup(string backupPath)\r\n        {\r\n            File.WriteAllText(\r\n                Path.Combine(backupPath, Localisation.Startup_ShortName_Task + \" - \" + EntryLongName + \".xml\"),\r\n                SourceTask.Xml);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Startup/Task/TaskEntryFactory.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System.Collections.Generic;\r\nusing System.Xml.Linq;\r\nusing Klocman.Tools;\r\nusing Microsoft.Win32.TaskScheduler;\r\n\r\nnamespace UninstallTools.Startup.Task\r\n{\r\n    public static class TaskEntryFactory\r\n    {\r\n        public static IEnumerable<TaskEntry> GetTaskStartupEntries()\r\n        {\r\n            TaskCollection tasks;\r\n            try { tasks = TaskService.Instance.RootFolder.Tasks; }\r\n            catch { yield break; }\r\n\r\n            foreach (var task in tasks)\r\n            {\r\n                XNamespace xmlNamespace;\r\n                XElement actionRoot;\r\n\r\n                try\r\n                {\r\n                    var rootElement = XDocument.Parse(task.Xml).Root;\r\n                    xmlNamespace = rootElement?.Name.Namespace ?? XNamespace.None;\r\n                    actionRoot = rootElement?.Element(xmlNamespace + \"Actions\");\r\n                }\r\n                catch\r\n                {\r\n                    continue;\r\n                }\r\n\r\n                if (actionRoot == null || actionRoot.IsEmpty || xmlNamespace == XNamespace.None) continue;\r\n\r\n                foreach (var actionElement in actionRoot.Elements())\r\n                {\r\n                    var command = actionElement.Element(xmlNamespace + \"Command\");\r\n\r\n                    if (string.IsNullOrEmpty(command?.Value)) continue;\r\n\r\n                    var arguments = actionElement.Element(xmlNamespace + \"Arguments\");\r\n                    var cmdCommand = new ProcessStartCommand(command.Value, arguments?.Value ?? string.Empty);\r\n\r\n                    yield return new TaskEntry(task.Name, cmdCommand.ToCommandLine(), cmdCommand.FileName, task);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/ThreadedWorkSpreader.cs",
    "content": "/*\n    Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading;\n\nnamespace UninstallTools\n{\n    internal class ThreadedWorkSpreader<TData, TState> where TState : class\n    {\n        private readonly List<WorkerData> _workers = new();\n\n        public ThreadedWorkSpreader(int maxThreadsPerBucket, Action<TData, TState> workLogic,\n            Func<IList<TData>, TState> stateGenerator, Func<TData, string> dataNameGetter)\n        {\n            if (maxThreadsPerBucket <= 0)\n                throw new ArgumentOutOfRangeException(nameof(maxThreadsPerBucket), maxThreadsPerBucket, @\"Minimum value is 1\");\n            MaxThreadsPerBucket = maxThreadsPerBucket;\n            StateGenerator = stateGenerator ?? throw new ArgumentNullException(nameof(stateGenerator));\n            WorkLogic = workLogic ?? throw new ArgumentNullException(nameof(workLogic));\n            DataNameGetter = dataNameGetter ?? throw new ArgumentNullException(nameof(dataNameGetter));\n        }\n\n        public Func<IList<TData>, TState> StateGenerator { get; }\n        public Func<TData, string> DataNameGetter { get; }\n        public Action<TData, TState> WorkLogic { get; }\n\n        public int MaxThreadsPerBucket { get; }\n\n        public void Start(IList<IList<TData>> dataBuckets, ListGenerationProgress.ListGenerationCallback progressCallback)\n        {\n            if (dataBuckets == null) throw new ArgumentNullException(nameof(dataBuckets));\n            if (progressCallback == null) throw new ArgumentNullException(nameof(progressCallback));\n\n            var totalCount = dataBuckets.Aggregate(0, (i, list) => i + list.Count);\n\n            var progress = 0;\n\n            void OnItemDone(string itemName)\n            {\n                progressCallback(new ListGenerationProgress(progress++, totalCount, itemName));\n            }\n\n            foreach (var itemBucket in dataBuckets)\n            {\n                if (itemBucket.Count == 0) continue;\n\n                var threadCount = Math.Min(MaxThreadsPerBucket, itemBucket.Count / 10 + 1);\n\n                var threadWorkItemCount = itemBucket.Count / threadCount + 1;\n\n                for (var i = 0; i < threadCount; i++)\n                {\n                    var firstUnique = i * threadWorkItemCount;\n                    var workerItems = itemBucket.Skip(firstUnique).Take(threadWorkItemCount).ToList();\n\n                    var worker = new Thread(WorkerThread)\n                    {\n                        Name = nameof(ThreadedWorkSpreader<TData, TState>) + \"_worker\",\n                        IsBackground = false\n                    };\n                    var workerData = new WorkerData(workerItems, worker, OnItemDone, StateGenerator(itemBucket));\n                    _workers.Add(workerData);\n                    worker.Start(workerData);\n                }\n            }\n        }\n\n        public IEnumerable<TState> Join()\n        {\n            foreach (var workerData in _workers)\n                try\n                {\n                    workerData.Worker.Join();\n                }\n                catch (Exception ex)\n                {\n                    Trace.WriteLine(\"Exception in worker thread: \" + ex);\n                }\n\n            return _workers.Select(x => x.State);\n        }\n\n        private void WorkerThread(object obj)\n        {\n            if (obj is not WorkerData workerInterface) throw new ArgumentException(@\"obj is not WorkerData\", nameof(obj));\n\n            foreach (var data in workerInterface.Input)\n            {\n                try\n                {\n                    workerInterface.OnInputItemDone(DataNameGetter?.Invoke(data) ?? data?.ToString());\n                }\n                catch (OperationCanceledException)\n                {\n                    return;\n                }\n\n                WorkLogic.Invoke(data, workerInterface.State);\n            }\n        }\n\n        private sealed class WorkerData\n        {\n            public WorkerData(List<TData> input, Thread worker, Action<string> onInputItemDone, TState state)\n            {\n                Input = input;\n                Worker = worker;\n                OnInputItemDone = onInputItemDone;\n                State = state;\n            }\n\n            public List<TData> Input { get; }\n            public Thread Worker { get; }\n            public Action<string> OnInputItemDone { get; }\n            public TState State { get; }\n        }\n    }\n}"
  },
  {
    "path": "source/UninstallTools/UninstallTools.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\t<PropertyGroup>\r\n\t\t<OutputType>Library</OutputType>\r\n\r\n\t\t<AssemblyTitle>Core application discovery and uninstallation code</AssemblyTitle>\r\n\t</PropertyGroup>\r\n\r\n\t<ItemGroup>\r\n\t\t<ProjectReference Include=\"..\\KlocTools\\KlocTools.csproj\" />\r\n\t\t<ProjectReference Include=\"..\\ObjectListView\\ObjectListView.csproj\" />\r\n\t</ItemGroup>\r\n\r\n\t<ItemGroup>\r\n\t\t<InternalsVisibleTo Include=\"BulkCrapUninstallerTests\" />\r\n\t</ItemGroup>\r\n\r\n\t<ItemGroup>\r\n\t\t<PackageReference Include=\"Microsoft.VisualBasic\" Version=\"10.3.0\" />\r\n\t\t<PackageReference Include=\"System.Management\" Version=\"[8.*,9)\" />\r\n\t\t<PackageReference Include=\"TaskScheduler\" Version=\"2.12.2\" />\r\n\t</ItemGroup>\r\n\t\r\n\t<ItemGroup>\r\n\t\t<COMReference Include=\"Scripting\">\r\n\t\t\t<Guid>{420B2830-E718-11CF-893D-00A0C9054228}</Guid>\r\n\t\t\t<VersionMajor>1</VersionMajor>\r\n\t\t\t<VersionMinor>0</VersionMinor>\r\n\t\t\t<Lcid>0</Lcid>\r\n\t\t\t<WrapperTool>tlbimp</WrapperTool>\r\n\t\t\t<Isolated>False</Isolated>\r\n\t\t\t<EmbedInteropTypes>false</EmbedInteropTypes>\r\n\t\t</COMReference>\r\n\t</ItemGroup>\r\n\t\r\n\t<ItemGroup>\r\n\t  <Compile Update=\"Properties\\Localisation.Designer.cs\">\r\n\t    <DesignTime>True</DesignTime>\r\n\t    <AutoGen>True</AutoGen>\r\n\t    <DependentUpon>Localisation.resx</DependentUpon>\r\n\t  </Compile>\r\n\t  <Compile Update=\"Properties\\Resources.Designer.cs\">\r\n\t    <DesignTime>True</DesignTime>\r\n\t    <AutoGen>True</AutoGen>\r\n\t    <DependentUpon>Resources.resx</DependentUpon>\r\n\t  </Compile>\r\n\t</ItemGroup>\r\n\t\r\n\t<ItemGroup>\r\n\t  <EmbeddedResource Update=\"Properties\\Localisation.resx\">\r\n\t    <Generator>ResXFileCodeGenerator</Generator>\r\n\t    <LastGenOutput>Localisation.Designer.cs</LastGenOutput>\r\n\t  </EmbeddedResource>\r\n\t  <EmbeddedResource Update=\"Properties\\Resources.resx\">\r\n\t    <Generator>ResXFileCodeGenerator</Generator>\r\n\t    <LastGenOutput>Resources.Designer.cs</LastGenOutput>\r\n\t  </EmbeddedResource>\r\n\t</ItemGroup>\r\n</Project>"
  },
  {
    "path": "source/UninstallTools/UninstallToolsGlobalConfig.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Drawing;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing Klocman.Extensions;\r\nusing Klocman.Native;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Factory;\r\n\r\nnamespace UninstallTools\r\n{\r\n    public static class UninstallToolsGlobalConfig\r\n    {\r\n        static UninstallToolsGlobalConfig()\r\n        {\r\n            AssemblyLocation = Assembly.GetExecutingAssembly().Location;\r\n            if (AssemblyLocation.ContainsAny(new[] { \".dll\", \".exe\" }, StringComparison.OrdinalIgnoreCase))\r\n                AssemblyLocation = PathTools.GetDirectory(AssemblyLocation);\r\n\r\n            var dir = new DirectoryInfo(AssemblyLocation);\r\n            if (dir.Name.StartsWith(\"win-x\") && dir.Parent != null)\r\n                dir = dir.Parent;\r\n            AppLocation = dir.FullName;\r\n\r\n            UninstallerAutomatizerPath = Path.Combine(AssemblyLocation, @\"UninstallerAutomatizer.exe\");\r\n            UninstallerAutomatizerExists = File.Exists(UninstallerAutomatizerPath);\r\n\r\n            QuestionableDirectoryNames = new[]\r\n            {\r\n                \"install\", \"settings\", \"config\", \"configuration\", \"users\", \"data\"\r\n            };\r\n\r\n            var allKnownFolders = Enum.GetValues<CSIDL>().Attempt(WindowsTools.GetEnvironmentPath)\r\n                                      .Where(x => !string.IsNullOrWhiteSpace(x)).Attempt(Path.GetFullPath)\r\n                                      .Distinct(StringComparer.OrdinalIgnoreCase).ToList();\r\n            _downloadsDir = KnownFolders.GetKnownFolderPath(new Guid(\"374DE290-123F-4565-9164-39C4925E467B\"));\r\n            if (!string.IsNullOrWhiteSpace(_downloadsDir))\r\n            {\r\n                _downloadsDir = Path.GetFullPath(_downloadsDir);\r\n                allKnownFolders.Add(_downloadsDir);\r\n            }\r\n            else _downloadsDir = null;\r\n            KnownFolderList = allKnownFolders;\r\n\r\n            DirectoryNameBlacklist = new[]\r\n            {\r\n                \"Microsoft\", \"Microsoft Games\", \"Temp\", \"Programs\", \"Common\", \"Common Files\", \"Clients\", \"Downloads\",\r\n                \"Desktop\", \"Internet Explorer\", \"Windows\", \"Windows NT\", \"Windows Photo Viewer\", \"Windows Mail\",\r\n                \"Windows Defender\", \"Windows Media Player\", \"Uninstall Information\", \"Reference Assemblies\",\r\n                \"InstallShield Installation Information\", \"Installer\", \"winsxs\", \"WindowsApps\", \"DirectX\", \"DirectXRedist\"\r\n            };\r\n\r\n            WindowsDirectory = WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_WINDOWS);\r\n\r\n            StockProgramFiles = new[]\r\n            {\r\n                WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_PROGRAM_FILES),\r\n                WindowsTools.GetProgramFilesX86Path()\r\n            }.Distinct().ToList();\r\n\r\n            // JunkSearchDirs --------------\r\n            var localData = WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_LOCAL_APPDATA);\r\n            var paths = new List<string>\r\n            {\r\n                WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_PROGRAMS),\r\n                WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_COMMON_PROGRAMS),\r\n                WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_APPDATA),\r\n                WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_COMMON_APPDATA),\r\n                localData\r\n                //Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) danger?\r\n            };\r\n\r\n            var appDataParentDir = Path.GetDirectoryName(localData.TrimEnd('\\\\', '/', ' '));\r\n            if (!string.IsNullOrEmpty(appDataParentDir))\r\n            {\r\n                var lowDir = Path.Combine(appDataParentDir, \"LocalLow\");\r\n                if (Directory.Exists(lowDir))\r\n                    paths.Add(lowDir);\r\n            }\r\n\r\n            var vsPath = Path.Combine(localData, \"VirtualStore\");\r\n            if (Directory.Exists(vsPath))\r\n                paths.AddRange(Directory.GetDirectories(vsPath));\r\n\r\n            JunkSearchDirs = paths.Distinct().ToList();\r\n\r\n            AppInfoCachePath = Path.Combine(AssemblyLocation, \"InfoCache.xml\");\r\n\r\n            _pf32 = WindowsTools.GetProgramFilesX86Path();\r\n            _pf64 = WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_PROGRAM_FILES);\r\n            if (string.IsNullOrWhiteSpace(_pf64) || PathTools.PathsEqual(_pf32, _pf64)) _pf64 = null;\r\n        }\r\n\r\n        public static bool EnableAppInfoCache\r\n        {\r\n            get => UninstallerFactoryCache != null;\r\n            set\r\n            {\r\n                if (value == EnableAppInfoCache) return;\r\n\r\n                if (value) ReloadCache();\r\n                else ClearChache();\r\n            }\r\n        }\r\n\r\n        private static void ReloadCache()\r\n        {\r\n            var cachePath = AppInfoCachePath;\r\n            try\r\n            {\r\n                UninstallerFactoryCache = new ApplicationUninstallerFactoryCache(cachePath);\r\n                if (File.Exists(cachePath)) UninstallerFactoryCache.Read();\r\n            }\r\n            catch (SystemException e)\r\n            {\r\n                UninstallerFactoryCache = new ApplicationUninstallerFactoryCache(cachePath);\r\n                Trace.WriteLine(\"Cache reload failed: \" + e);\r\n            }\r\n        }\r\n\r\n        public static void ClearChache()\r\n        {\r\n            UninstallerFactoryCache?.Delete();\r\n            UninstallerFactoryCache = null;\r\n        }\r\n\r\n        public static string AppInfoCachePath { get; }\r\n\r\n        internal static ApplicationUninstallerFactoryCache UninstallerFactoryCache { get; private set; }\r\n\r\n        /// <summary>\r\n        ///     Path to directory this assembly sits in.\r\n        /// </summary>\r\n        internal static string AssemblyLocation { get; }\r\n        internal static string AppLocation { get; }\r\n\r\n        public static bool AutoDetectCustomProgramFiles { get; set; }\r\n\r\n        public static bool AutoDetectScanRemovable { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Custom \"Program Files\" directories. Use with dirs that get used to install applications to.\r\n        /// </summary>\r\n        public static string[] CustomProgramFiles { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Directory names that should be ignored for safety.\r\n        /// </summary>\r\n        internal static IEnumerable<string> DirectoryNameBlacklist { get; }\r\n\r\n        internal static IEnumerable<string> KnownFolderList { get; }\r\n\r\n        internal static string WindowsDirectory { get; }\r\n\r\n        /// <summary>\r\n        ///     Directories that can contain program junk.\r\n        /// </summary>\r\n        internal static IEnumerable<string> JunkSearchDirs { get; }\r\n\r\n        /// <summary>\r\n        ///     Directory names that probably aren't top-level or contain applications.\r\n        /// </summary>\r\n        internal static IEnumerable<string> QuestionableDirectoryNames { get; }\r\n\r\n        /// <summary>\r\n        ///     Automatize non-quiet uninstallers.\r\n        /// </summary>\r\n        public static bool QuietAutomatization { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Kill stuck automatized uninstallers.\r\n        /// </summary>\r\n        public static bool QuietAutomatizationKillStuck { get; set; }\r\n\r\n        public static bool ScanRegistry { get; set; } = true;\r\n        public static bool ScanDrives { get; set; } = true;\r\n        public static bool ScanPreDefined { get; set; } = true;\r\n\r\n        public static bool ScanSteam { get; set; } = true;\r\n        public static bool ScanStoreApps { get; set; } = true;\r\n        public static bool ScanOculus { get; set; } = true;\r\n        public static bool ScanWinFeatures { get; set; } = true;\r\n        public static bool ScanWinUpdates { get; set; } = true;\r\n        public static bool ScanChocolatey { get; set; } = true;\r\n        public static bool ScanScoop { get; set; } = true;\r\n\r\n        /// <summary>\r\n        ///     Built-in program files paths.\r\n        /// </summary>\r\n        internal static IEnumerable<string> StockProgramFiles { get; }\r\n\r\n        public static bool UseQuietUninstallDaemon { get; set; }\r\n\r\n        /// <summary>\r\n        ///     Directiories containing programs, both built in \"Program Files\" and user-defined ones. Fast.\r\n        /// </summary>\r\n        internal static IEnumerable<string> GetAllProgramFiles()\r\n        {\r\n            if (CustomProgramFiles == null || CustomProgramFiles.Length == 0)\r\n                return StockProgramFiles;\r\n\r\n            // Create copy of custom dirs in case they change\r\n            return StockProgramFiles.Concat(CustomProgramFiles).ToList();\r\n        }\r\n\r\n        private static readonly string _pf64, _pf32;\r\n        private static readonly string _downloadsDir;\r\n\r\n        /// <summary>\r\n        ///     Get a list of directiories containing programs. Optionally user-defined directories are added.\r\n        ///     The boolean value is true if the directory is confirmed to contain 64bit applications, false if 32bit.\r\n        /// </summary>\r\n        /// <param name=\"includeUserDirectories\">Add user-defined directories.</param>\r\n        internal static List<DirectoryInfo> GetProgramFilesDirectories(bool includeUserDirectories)\r\n        {\r\n            var pfDirectories = new List<string>(2);\r\n\r\n            pfDirectories.Add(_pf32);\r\n            if (_pf64 != null) pfDirectories.Add(_pf64);\r\n\r\n            if (includeUserDirectories && CustomProgramFiles != null)\r\n                pfDirectories.AddRange(CustomProgramFiles.Where(x => !pfDirectories.Any(y => PathTools.PathsEqual(x, y))));\r\n\r\n            pfDirectories.Add(Path.Combine(WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_APPDATA), \"Programs\"));\r\n            pfDirectories.Add(Path.Combine(WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_LOCAL_APPDATA), \"Programs\"));\r\n            pfDirectories.Add(Path.Combine(WindowsTools.GetEnvironmentPath(CSIDL.CSIDL_COMMON_APPDATA), \"Programs\"));\r\n\r\n            var output = new List<DirectoryInfo>(pfDirectories.Count);\r\n            foreach (var directory in pfDirectories)\r\n            {\r\n                // Ignore missing or inaccessible directories\r\n                try\r\n                {\r\n                    var di = new DirectoryInfo(directory);\r\n                    if (di.Exists)\r\n                        output.Add(di);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    Debug.Fail(\"Failed to open dir\", ex.Message);\r\n                }\r\n            }\r\n\r\n            return output;\r\n        }\r\n\r\n        /// <summary>\r\n        /// Check if the path is inside of 64 or 32 bit program files\r\n        /// </summary>\r\n        public static MachineType IsPathInsideProgramFiles(string fullPath)\r\n        {\r\n            if (fullPath.StartsWith(_pf32, StringComparison.InvariantCultureIgnoreCase))\r\n                return MachineType.X86;\r\n            if (_pf64 != null && fullPath.StartsWith(_pf64, StringComparison.InvariantCultureIgnoreCase))\r\n                return MachineType.X64;\r\n            return MachineType.Unknown;\r\n        }\r\n\r\n        public static bool IsKnownFolder(string itemParentPath) => KnownFolderList.Any(y => PathTools.PathsEqual(y, itemParentPath));\r\n        public static bool IsKnownFolder(DirectoryInfo dir) => KnownFolderList.Any(y => PathTools.PathsEqual(y, dir.FullName));\r\n\r\n        /// <summary>\r\n        ///     Check if dir is a system directory and should be left alone.\r\n        /// </summary>\r\n        public static bool IsSystemDirectory(DirectoryInfo dir)\r\n        {\r\n            return (dir.Attributes & FileAttributes.System) == FileAttributes.System\r\n                   || dir.FullName.StartsWith(WindowsDirectory, StringComparison.OrdinalIgnoreCase)\r\n                   || _downloadsDir != null && dir.FullName.StartsWith(_downloadsDir, StringComparison.OrdinalIgnoreCase)\r\n                   || DirectoryNameBlacklist.Any(y => y.Equals(dir.Name, StringComparison.InvariantCultureIgnoreCase));\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Check if dir is a system directory and should be left alone.\r\n        /// </summary>\r\n        public static bool IsSystemDirectory(string installLocation)\r\n        {\r\n            if (string.IsNullOrEmpty(installLocation)) return false;\r\n\r\n            try\r\n            {\r\n                return IsSystemDirectory(new DirectoryInfo(installLocation));\r\n            }\r\n            catch (ArgumentException ex)\r\n            {\r\n                Trace.WriteLine(ex);\r\n                // Treat this as a no-touch directory just to be safe\r\n                return true;\r\n            }\r\n            catch (IOException ex)\r\n            {\r\n                Trace.WriteLine(ex);\r\n                // Treat this as a no-touch directory just to be safe\r\n                return true;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Safely try to extract icon from specified file. Return null if failed.\r\n        /// </summary>\r\n        internal static Icon TryExtractAssociatedIcon(string path)\r\n        {\r\n            if (path != null && File.Exists(path))\r\n            {\r\n                try\r\n                {\r\n                    return DrawingTools.ExtractAssociatedIcon(path);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    Debug.Fail(ex.Message);\r\n                }\r\n            }\r\n            return null;\r\n        }\r\n\r\n        public static string UninstallerAutomatizerPath { get; }\r\n        public static bool UninstallerAutomatizerExists { get; }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Uninstaller/BulkUninstallConfiguration.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nnamespace UninstallTools.Uninstaller\r\n{\r\n    public sealed class BulkUninstallConfiguration\r\n    {\r\n        /*public BulkUninstallConfiguration()\r\n        {\r\n            IgnoreProtection = false;\r\n            PreferQuiet = false;\r\n            QuietMsi = false;\r\n            IntelligentSort = false;\r\n            Simulate = false;\r\n        }*/\r\n\r\n        public BulkUninstallConfiguration(bool ignoreProtection, bool preferQuiet,\r\n            bool simulate, bool autoKillStuckQuiet, bool retryFailedQuiet)\r\n        {\r\n            IgnoreProtection = ignoreProtection;\r\n            PreferQuiet = preferQuiet;\r\n            Simulate = simulate;\r\n            AutoKillStuckQuiet = autoKillStuckQuiet;\r\n            RetryFailedQuiet = retryFailedQuiet;\r\n        }\r\n\r\n        public bool AutoKillStuckQuiet { get; set; }\r\n        public bool RetryFailedQuiet { get; set; }\r\n        public bool IgnoreProtection { get; set; }\r\n        public bool PreferQuiet { get; set; }\r\n        public bool Simulate { get; set; }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Uninstaller/BulkUninstallEntry.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Threading;\r\nusing Klocman.Extensions;\r\nusing Klocman.IO;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Factory;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Uninstaller\r\n{\r\n    public class BulkUninstallEntry\r\n    {\r\n        private static readonly string[] NamesOfIgnoredProcesses =\r\n            WindowsTools.GetInstalledWebBrowsers().Select(s =>\r\n            {\r\n                try\r\n                {\r\n                    return Path.GetFileNameWithoutExtension(s);\r\n                }\r\n                catch (ArgumentException)\r\n                {\r\n                    try\r\n                    {\r\n                        var dash = s.LastIndexOf('\\\\');\r\n                        return s.Substring(dash + 1, s.LastIndexOf('.') - dash - 1);\r\n                    }\r\n                    catch\r\n                    {\r\n                        return null;\r\n                    }\r\n                }\r\n            }).Where(x => !string.IsNullOrEmpty(x)).Concat(new[] { \"explorer\" }).Distinct().ToArray();\r\n\r\n        private readonly object _operationLock = new();\r\n\r\n        private readonly Dictionary<string, PerfCounterEntry> _perfCounterBuffer = new();\r\n\r\n        private bool _canRetry = true;\r\n        private SkipCurrentLevel _skipLevel = SkipCurrentLevel.None;\r\n        private Thread _worker;\r\n\r\n        public BulkUninstallEntry(ApplicationUninstallerEntry uninstallerEntry, bool isSilentPossible,\r\n            UninstallStatus startingStatus)\r\n        {\r\n            CurrentStatus = startingStatus;\r\n            IsSilentPossible = isSilentPossible;\r\n            UninstallerEntry = uninstallerEntry;\r\n        }\r\n\r\n        public Exception CurrentError { get; private set; }\r\n\r\n        public UninstallStatus CurrentStatus { get; private set; }\r\n\r\n        public bool Finished { get; private set; }\r\n\r\n        public int Id { get; internal set; }\r\n\r\n        public bool IsRunning\r\n        {\r\n            get\r\n            {\r\n                lock (_operationLock)\r\n                    return _worker != null && _worker.IsAlive;\r\n            }\r\n        }\r\n\r\n        public bool IsSilentPossible { get; set; }\r\n\r\n        public ApplicationUninstallerEntry UninstallerEntry { get; }\r\n\r\n        private static void KillProcesses(IEnumerable<Process> processes)\r\n        {\r\n            foreach (var process in processes)\r\n            {\r\n                try\r\n                {\r\n                    process.Kill();\r\n                }\r\n                catch (InvalidOperationException)\r\n                {\r\n                }\r\n                catch (Win32Exception)\r\n                {\r\n                }\r\n            }\r\n        }\r\n\r\n        public void Reset()\r\n        {\r\n            //bug handle already running\r\n            CurrentError = null;\r\n            CurrentStatus = UninstallStatus.Waiting;\r\n            Finished = false;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Run the uninstaller on a new thread.\r\n        /// </summary>\r\n        internal void RunUninstaller(RunUninstallerOptions options)\r\n        {\r\n            lock (_operationLock)\r\n            {\r\n                if (Finished || IsRunning || CurrentStatus != UninstallStatus.Waiting)\r\n                    return;\r\n\r\n                if (UninstallerEntry.IsRegistered && !UninstallerEntry.RegKeyStillExists())\r\n                {\r\n                    CurrentStatus = UninstallStatus.Completed;\r\n                    Finished = true;\r\n                    return;\r\n                }\r\n\r\n                if (UninstallerEntry.UninstallerKind == UninstallerType.Msiexec)\r\n                {\r\n                    var uninstallString = IsSilentPossible && UninstallerEntry.QuietUninstallPossible\r\n                        ? UninstallerEntry.QuietUninstallString\r\n                        : UninstallerEntry.UninstallString;\r\n\r\n                    // Always reenumerate products in case any were uninstalled\r\n                    if (ApplicationEntryTools.PathPointsToMsiExec(uninstallString) &&\r\n                        MsiTools.MsiEnumProducts().All(g => !g.Equals(UninstallerEntry.BundleProviderKey)))\r\n                    {\r\n                        CurrentStatus = UninstallStatus.Completed;\r\n                        Finished = true;\r\n                        return;\r\n                    }\r\n                }\r\n\r\n                CurrentStatus = UninstallStatus.Uninstalling;\r\n\r\n                try\r\n                {\r\n                    _worker = new Thread(UninstallThread) { Name = \"RunBulkUninstall_Worker\", IsBackground = false };\r\n                    _worker.Start(options);\r\n                }\r\n                catch\r\n                {\r\n                    CurrentStatus = UninstallStatus.Failed;\r\n                    Finished = true;\r\n                    throw;\r\n                }\r\n            }\r\n        }\r\n\r\n        public void SkipWaiting(bool terminate)\r\n        {\r\n            lock (_operationLock)\r\n            {\r\n                if (Finished)\r\n                    return;\r\n\r\n                if (!IsRunning && CurrentStatus == UninstallStatus.Waiting)\r\n                    CurrentStatus = UninstallStatus.Skipped;\r\n\r\n                // Do not allow skipping of Msiexec uninstallers because they will hold up the rest of Msiexec uninstallers in the task\r\n                if (CurrentStatus == UninstallStatus.Uninstalling &&\r\n                    UninstallerEntry.UninstallerKind == UninstallerType.Msiexec &&\r\n                    !terminate)\r\n                    return;\r\n\r\n                _skipLevel = terminate ? SkipCurrentLevel.Terminate : SkipCurrentLevel.Skip;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Try to mark this entry as finished. If it is running and can't be safely skipped, mark it for termination instead.\r\n        /// Do not use unless the entry was uninstalled externally.\r\n        /// </summary>\r\n        public void ForceFinished()\r\n        {\r\n            lock (_operationLock)\r\n            {\r\n                if (Finished)\r\n                    return;\r\n\r\n                if (IsRunning)\r\n                {\r\n                    // Do not allow skipping of Msiexec uninstallers because they will hold up the rest of Msiexec uninstallers in the task\r\n                    if (CurrentStatus == UninstallStatus.Uninstalling &&\r\n                        UninstallerEntry.UninstallerKind == UninstallerType.Msiexec)\r\n                    {\r\n                        SkipWaiting(true);\r\n                        return;\r\n                    }\r\n                }\r\n\r\n                CurrentStatus = UninstallStatus.Completed;\r\n                Finished = true;\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Returns true if uninstaller appears to be stalled. Blocks for 1000ms to gather data.\r\n        /// </summary>\r\n        private bool TestUninstallerForStalls(IEnumerable<string> childProcesses)\r\n        {\r\n            var childProcessNames = childProcesses as IList<string> ?? childProcesses.ToList();\r\n\r\n            foreach (var perfCounterEntry in _perfCounterBuffer.ToList())\r\n            {\r\n                if (!childProcessNames.Contains(perfCounterEntry.Key))\r\n                {\r\n                    _perfCounterBuffer.Remove(perfCounterEntry.Key);\r\n                    perfCounterEntry.Value.Dispose();\r\n                }\r\n            }\r\n\r\n            foreach (var childProcessName in childProcessNames)\r\n            {\r\n                PerformanceCounter[] perfCounters = null;\r\n                try\r\n                {\r\n                    perfCounters = new[]\r\n                    {\r\n                        new PerformanceCounter(\"Process\", \"% Processor Time\", childProcessName, true),\r\n                        new PerformanceCounter(\"Process\", \"IO Data Bytes/sec\", childProcessName, true)\r\n                    };\r\n                    // Important to NextSample now, they will collect data when we sleep\r\n                    _perfCounterBuffer.Add(childProcessName, new PerfCounterEntry(\r\n                        perfCounters, new[] { perfCounters[0].NextSample(), perfCounters[1].NextSample() }));\r\n                }\r\n                catch\r\n                {\r\n                    // Ignore errors caused by counters derping\r\n                    if (perfCounters != null && perfCounters.Length == 2)\r\n                    {\r\n                        perfCounters[0].Dispose();\r\n                        perfCounters[1].Dispose();\r\n                    }\r\n                }\r\n            }\r\n\r\n            // Let the counters gather some data\r\n            Thread.Sleep(1100);\r\n\r\n            bool? anyWorking = null;\r\n\r\n            foreach (var perfCounterEntry in _perfCounterBuffer.ToList())\r\n            {\r\n                try\r\n                {\r\n                    var new0 = perfCounterEntry.Value.Counter[0].NextSample();\r\n                    var new1 = perfCounterEntry.Value.Counter[1].NextSample();\r\n                    var c0 = CounterSample.Calculate(perfCounterEntry.Value.Sample[0], new0);\r\n                    var c1 = CounterSample.Calculate(perfCounterEntry.Value.Sample[1], new1);\r\n                    perfCounterEntry.Value.Sample[0] = new0;\r\n                    perfCounterEntry.Value.Sample[1] = new1;\r\n\r\n                    Debug.WriteLine(\"CPU \" + c0 + \"%, IO \" + c1 + \"B\");\r\n\r\n                    // Check if process seems to be doing anything. Use 1% for CPU and 10KB for I/O\r\n                    if (c0 <= 1 && c1 <= 10240)\r\n                    {\r\n                        anyWorking = false;\r\n                    }\r\n                    else\r\n                    {\r\n                        anyWorking = true;\r\n                        break;\r\n                    }\r\n                }\r\n                catch\r\n                {\r\n                    perfCounterEntry.Value.Dispose();\r\n                    _perfCounterBuffer.Remove(perfCounterEntry.Key);\r\n                }\r\n            }\r\n\r\n            // Only return true if we had at least one process to test and it tested negatively\r\n            return anyWorking.HasValue && !anyWorking.Value;\r\n        }\r\n\r\n        private void UninstallThread(object parameters)\r\n        {\r\n            var options = parameters as RunUninstallerOptions;\r\n            Debug.Assert(options != null, \"options != null\");\r\n\r\n            Exception error = null;\r\n            var retry = false;\r\n            try\r\n            {\r\n                var processSnapshot = Process.GetProcesses().Select(x => x.Id).ToArray();\r\n\r\n                using (var uninstaller = UninstallerEntry.RunUninstaller(options.PreferQuiet, options.Simulate, _canRetry))\r\n                {\r\n                    // Can be null during simulation\r\n                    if (uninstaller == null) return;\r\n\r\n                    if (options.PreferQuiet && UninstallerEntry.QuietUninstallPossible)\r\n                    {\r\n                        try\r\n                        {\r\n                            uninstaller.PriorityClass = ProcessPriorityClass.BelowNormal;\r\n                        }\r\n                        catch\r\n                        {\r\n                            // Don't care if setting this fails\r\n                        }\r\n                    }\r\n\r\n                    var checkCounters = options.PreferQuiet && options.AutoKillStuckQuiet &&\r\n                                        UninstallerEntry.QuietUninstallPossible;\r\n\r\n                    var watchedProcesses = new List<Process> { uninstaller };\r\n                    int[] previousWatchedProcessIds = { };\r\n\r\n                    var idleCounter = 0;\r\n\r\n                    while (true)\r\n                    {\r\n                        if (_skipLevel == SkipCurrentLevel.Skip)\r\n                            break;\r\n\r\n                        foreach (var watchedProcess in watchedProcesses.ToList())\r\n                            watchedProcesses.AddRange(watchedProcess.GetChildProcesses());\r\n\r\n                        if (UninstallerEntry.UninstallerKind == UninstallerType.Msiexec)\r\n                        {\r\n                            foreach (var watchedProcess in Process.GetProcessesByName(\"msiexec\"))\r\n                                watchedProcesses.AddRange(watchedProcess.GetChildProcesses());\r\n                        }\r\n\r\n                        watchedProcesses = CleanupDeadProcesses(watchedProcesses, processSnapshot).ToList();\r\n\r\n                        // Check if we are done, or if there are some proceses left that we missed.\r\n                        // We are done when the entry process and all of its spawns exit.\r\n                        if (watchedProcesses.Count == 0)\r\n                        {\r\n                            if (string.IsNullOrEmpty(UninstallerEntry.InstallLocation))\r\n                                break;\r\n\r\n                            FindAndAddProcessesToWatch(watchedProcesses, processSnapshot);\r\n\r\n                            if (watchedProcesses.Count == 0)\r\n                                break;\r\n                        }\r\n\r\n                        // Only try to automate first try. If it fails, don't try to automate \r\n                        // the rerun in case user or app itself can resolve the issue.\r\n                        if (IsSilentPossible && UninstallToolsGlobalConfig.UseQuietUninstallDaemon && _canRetry)\r\n                        {\r\n                            // There is no point in trying to automatize command line interface programs, or our own helpers\r\n                            if (!UninstallerEntry.QuietUninstallerIsCLI() && !UninstallerEntry.QuietUninstallString\r\n                                .Contains(UninstallToolsGlobalConfig.AppLocation, StringComparison.OrdinalIgnoreCase))\r\n                            {\r\n                                var processIds = SafeGetProcessIds(watchedProcesses).ToArray();\r\n\r\n                                options.Owner.SendProcessesToWatchToDeamon(processIds.Except(previousWatchedProcessIds));\r\n\r\n                                previousWatchedProcessIds = processIds;\r\n                            }\r\n                        }\r\n\r\n                        // Check for deadlocks during silent uninstall. Prevents the task from getting stuck \r\n                        // idefinitely on stuck uninstallers and unrelated processes spawned by uninstallers.\r\n                        if (checkCounters)\r\n                        {\r\n                            var processNames = SafeGetProcessNames(watchedProcesses);\r\n\r\n                            if (TestUninstallerForStalls(processNames))\r\n                                idleCounter++;\r\n                            else\r\n                                idleCounter = 0;\r\n\r\n                            // Kill the uninstaller (and children) if they were idle/stalled for too long\r\n                            if (idleCounter > 30)\r\n                            {\r\n                                KillProcesses(watchedProcesses);\r\n                                throw new IOException(Localisation.UninstallError_UninstallerTimedOut);\r\n                            }\r\n                        }\r\n                        else Thread.Sleep(1000);\r\n\r\n                        // Kill the uninstaller (and children) if user told us to or if it was idle for too long\r\n                        if (_skipLevel == SkipCurrentLevel.Terminate)\r\n                        {\r\n                            if (UninstallerEntry.UninstallerKind == UninstallerType.Msiexec)\r\n                                watchedProcesses.AddRange(Process.GetProcessesByName(\"Msiexec\"));\r\n\r\n                            KillProcesses(watchedProcesses);\r\n                            break;\r\n                        }\r\n                    }\r\n\r\n                    if (_skipLevel == SkipCurrentLevel.None)\r\n                    {\r\n                        var exitVar = uninstaller.ExitCode;\r\n                        if (exitVar != 0)\r\n                        {\r\n                            if (UninstallerEntry.UninstallerKind == UninstallerType.Msiexec &&\r\n                                exitVar == 1602)\r\n                            {\r\n                                // 1602 ERROR_INSTALL_USEREXIT - The user has cancelled the installation.\r\n                                _skipLevel = SkipCurrentLevel.Skip;\r\n                            }\r\n                            else if (UninstallerEntry.UninstallerKind == UninstallerType.Nsis &&\r\n                                     (exitVar == 1 || exitVar == 2))\r\n                            {\r\n                                // 1 - Installation aborted by user (cancel button)\r\n                                // 2 - Installation aborted by script (often after user clicks cancel)\r\n                                _skipLevel = SkipCurrentLevel.Skip;\r\n                            }\r\n                            else if (UninstallerEntry.UninstallerKind == UninstallerType.Nsis &&\r\n                                     exitVar == 1627)\r\n                            {\r\n                                // Nsis OK return code\r\n                            }\r\n                            else if (UninstallerEntry.UninstallerKind == UninstallerType.SimpleDelete &&\r\n                                     exitVar == 1)\r\n                            {\r\n                                // 1 - Installation aborted by user (cancel button)\r\n                                _skipLevel = SkipCurrentLevel.Skip;\r\n                            }\r\n                            else if (exitVar == -1073741510)\r\n                            {\r\n                                /* 3221225786 / 0xC000013A / -1073741510 \r\n                                    The application terminated as a result of a CTRL+C. \r\n                                    Indicates that the application has been terminated either by user's \r\n                                    keyboard input CTRL+C or CTRL+Break or closing command prompt window. */\r\n                                _skipLevel = SkipCurrentLevel.Terminate;\r\n                            }\r\n                            else\r\n                            {\r\n                                switch (exitVar)\r\n                                {\r\n                                    case 2:\r\n                                        throw new Exception(\"The system cannot find the file specified. Indicates that the file can not be found in specified location.\");\r\n                                    case 3:\r\n                                        throw new Exception(\"The system cannot find the path specified. Indicates that the specified path can not be found.\");\r\n                                    case 5:\r\n                                        throw new Exception(\"Access is denied. Indicates that user has no access right to specified resource.\");\r\n                                    case 9009:\r\n                                        throw new Exception(\"Program is not recognized as an internal or external command, operable program or batch file.\");\r\n                                    case -2147024846:\r\n                                        throw new Exception(\"0x80070032 - This app is part of Windows and cannot be uninstalled on a per-user basis.\");\r\n\r\n                                    default:\r\n                                        if (options.RetryFailedQuiet || (UninstallerEntry.UninstallerKind == UninstallerType.Nsis && !options.PreferQuiet))\r\n                                            retry = true;\r\n                                        throw new IOException(Localisation.UninstallError_UninstallerReturnedCode + exitVar);\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                error = ex;\r\n                Trace.WriteLine(@$\"Exception when uninstalling {UninstallerEntry.DisplayName}: {ex}\");\r\n            }\r\n            finally\r\n            {\r\n                try\r\n                {\r\n                    _perfCounterBuffer.ForEach(x => x.Value.Dispose());\r\n                }\r\n                catch\r\n                {\r\n                    // Ignore any errors to make sure rest of this code runs\r\n                }\r\n                _perfCounterBuffer.Clear();\r\n\r\n                // Take care of the aftermath\r\n                if (_skipLevel != SkipCurrentLevel.None)\r\n                {\r\n                    _skipLevel = SkipCurrentLevel.None;\r\n\r\n                    CurrentStatus = UninstallStatus.Skipped;\r\n                    CurrentError = new OperationCanceledException(Localisation.ManagerError_Skipped);\r\n                }\r\n                else if (error != null)\r\n                {\r\n                    //Localisation.ManagerError_PrematureWorkerStop is unused\r\n                    CurrentStatus = UninstallStatus.Failed;\r\n                    CurrentError = error;\r\n                }\r\n                else\r\n                {\r\n                    CurrentStatus = UninstallStatus.Completed;\r\n                }\r\n\r\n                if (retry && _canRetry)\r\n                {\r\n                    CurrentStatus = UninstallStatus.Waiting;\r\n                    _canRetry = false;\r\n                }\r\n                else\r\n                {\r\n                    Finished = true;\r\n                }\r\n            }\r\n        }\r\n\r\n        private static IEnumerable<string> SafeGetProcessNames(IEnumerable<Process> processes)\r\n        {\r\n            return processes.Select(x =>\r\n            {\r\n                try\r\n                {\r\n                    return x.ProcessName;\r\n                }\r\n                catch\r\n                {\r\n                    // Ignore errors caused by processes that exited\r\n                    return null;\r\n                }\r\n            }).Where(x => !string.IsNullOrEmpty(x));\r\n        }\r\n\r\n        private static IEnumerable<int> SafeGetProcessIds(IEnumerable<Process> processes)\r\n        {\r\n            return processes.Select(x =>\r\n            {\r\n                try\r\n                {\r\n                    x.Refresh();\r\n                    if (x.MainWindowHandle == IntPtr.Zero)\r\n                        return -1;\r\n\r\n                    Debug.WriteLine(\"Process ID \" + x.Id + \" is running: \" + !Process.GetProcessById(x.Id).HasExited);\r\n                    return x.Id;\r\n                }\r\n                catch\r\n                {\r\n                    // Ignore errors caused by processes that exited\r\n                    return -1;\r\n                }\r\n            }).Where(x => x >= 0);\r\n        }\r\n\r\n        private void FindAndAddProcessesToWatch(ICollection<Process> watchedProcesses, int[] runningProcessIds)\r\n        {\r\n            var candidates = Process.GetProcesses().Where(x => !runningProcessIds.Contains(x.Id));\r\n            foreach (var process in candidates)\r\n            {\r\n                try\r\n                {\r\n                    if (process.MainModule!.FileName!.Contains(\r\n                            UninstallerEntry.InstallLocation, StringComparison.InvariantCultureIgnoreCase) ||\r\n                        process.GetCommandLine().Contains(\r\n                            UninstallerEntry.InstallLocation, StringComparison.InvariantCultureIgnoreCase))\r\n                    {\r\n                        watchedProcesses.Add(process);\r\n                    }\r\n                }\r\n                catch\r\n                {\r\n                    // Ignore permission and access errors\r\n                }\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// Remove duplicate, dead, and blacklisted processes\r\n        /// </summary>\r\n        private static IEnumerable<Process> CleanupDeadProcesses(IEnumerable<Process> watchedProcesses, int[] runningProcessIds)\r\n        {\r\n            return watchedProcesses.DistinctBy(x => x.Id).Where(p =>\r\n            {\r\n                try\r\n                {\r\n                    if (p.HasExited)\r\n                        return false;\r\n\r\n                    var pName = p.ProcessName;\r\n                    if (NamesOfIgnoredProcesses.Any(n =>\r\n                        pName.Equals(n, StringComparison.InvariantCultureIgnoreCase)))\r\n                        return false;\r\n                }\r\n                catch (Win32Exception)\r\n                {\r\n                    return false;\r\n                }\r\n                catch (InvalidOperationException)\r\n                {\r\n                    return false;\r\n                }\r\n\r\n                return !runningProcessIds.Contains(p.Id);\r\n            });\r\n        }\r\n\r\n        private sealed class PerfCounterEntry : IDisposable\r\n        {\r\n            public PerfCounterEntry(PerformanceCounter[] counter, CounterSample[] sample)\r\n            {\r\n                Counter = counter;\r\n                Sample = sample;\r\n            }\r\n\r\n            public PerformanceCounter[] Counter { get; }\r\n\r\n            public CounterSample[] Sample { get; }\r\n\r\n            public void Dispose()\r\n            {\r\n                foreach (var performanceCounter in Counter)\r\n                {\r\n                    performanceCounter?.Dispose();\r\n                }\r\n            }\r\n        }\r\n\r\n        internal sealed class RunUninstallerOptions\r\n        {\r\n            public RunUninstallerOptions(bool autoKillStuckQuiet, bool retryFailedQuiet, bool preferQuiet, bool simulate, BulkUninstallTask owner)\r\n            {\r\n                AutoKillStuckQuiet = autoKillStuckQuiet;\r\n                RetryFailedQuiet = retryFailedQuiet;\r\n                PreferQuiet = preferQuiet;\r\n                Simulate = simulate;\r\n                Owner = owner;\r\n            }\r\n\r\n            public bool AutoKillStuckQuiet { get; }\r\n\r\n            public bool PreferQuiet { get; }\r\n\r\n            public bool RetryFailedQuiet { get; }\r\n\r\n            public bool Simulate { get; }\r\n\r\n            public BulkUninstallTask Owner { get; }\r\n        }\r\n\r\n        internal enum SkipCurrentLevel\r\n        {\r\n            None = 0,\r\n            Terminate,\r\n            Skip\r\n        }\r\n\r\n        public void Pause()\r\n        {\r\n            lock (_operationLock)\r\n            {\r\n                if (CurrentStatus == UninstallStatus.Waiting)\r\n                    CurrentStatus = UninstallStatus.Paused;\r\n            }\r\n        }\r\n\r\n        public void Resume()\r\n        {\r\n            lock (_operationLock)\r\n            {\r\n                if (CurrentStatus == UninstallStatus.Paused)\r\n                    CurrentStatus = UninstallStatus.Waiting;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Uninstaller/BulkUninstallTask.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Globalization;\r\nusing System.IO;\r\nusing System.IO.Pipes;\r\nusing System.Linq;\r\nusing System.Threading;\r\nusing Klocman.Extensions;\r\nusing Klocman.Localising;\r\n\r\nnamespace UninstallTools.Uninstaller\r\n{\r\n    public sealed class BulkUninstallTask : IDisposable\r\n    {\r\n        private readonly object _operationLock = new();\r\n        private int _concurrentUninstallerCount = 1;\r\n        private bool _finished;\r\n        private Thread _workerThread;\r\n\r\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"taskList\" /> is null.</exception>\r\n        /// <exception cref=\"OverflowException\">\r\n        ///     The number of elements in <paramref name=\"taskList\" /> is larger than\r\n        ///     <see cref=\"F:System.Int32.MaxValue\" />.\r\n        /// </exception>\r\n        internal BulkUninstallTask(IReadOnlyList<BulkUninstallEntry> taskList, BulkUninstallConfiguration configuration)\r\n        {\r\n            Configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));\r\n\r\n            if (taskList == null) throw new ArgumentNullException(nameof(taskList));\r\n            if (taskList.Count < 1) throw new ArgumentException(\"Task list can't be empty\");\r\n\r\n            AllUninstallersList = new List<BulkUninstallEntry>();\r\n            for (var index = 0; index < taskList.Count; index++)\r\n            {\r\n                var bulkUninstallEntry = taskList[index];\r\n                bulkUninstallEntry.Id = index + 1;\r\n                AllUninstallersList.Add(bulkUninstallEntry);\r\n            }\r\n\r\n            _finished = false;\r\n            Aborted = false;\r\n        }\r\n\r\n        public bool Aborted { get; set; }\r\n        public BulkUninstallConfiguration Configuration { get; }\r\n\r\n        public bool Finished\r\n        {\r\n            get { return _finished; }\r\n            private set\r\n            {\r\n                if (_finished == value) return;\r\n\r\n                _finished = value;\r\n                OnStatusChanged?.Invoke(this, EventArgs.Empty);\r\n            }\r\n        }\r\n\r\n        public IList<BulkUninstallEntry> AllUninstallersList { get; }\r\n\r\n        public int ConcurrentUninstallerCount\r\n        {\r\n            get { return _concurrentUninstallerCount; }\r\n            set { _concurrentUninstallerCount = Math.Min(1000, Math.Max(1, value)); }\r\n        }\r\n\r\n        public bool OneLoudLimit { get; set; } = true;\r\n\r\n        public void Dispose()\r\n        {\r\n            OnStatusChanged = null;\r\n            _finished = true;\r\n        }\r\n\r\n        public event EventHandler OnStatusChanged;\r\n\r\n        public static object DisplayNameAspectGetter(object rowObj)\r\n        {\r\n            var temp = rowObj as BulkUninstallEntry;\r\n            return temp?.UninstallerEntry.DisplayName;\r\n        }\r\n\r\n        public static object IsSilentAspectGetter(object rowObj)\r\n        {\r\n            var temp = rowObj as BulkUninstallEntry;\r\n            return temp?.IsSilentPossible.ToYesNo();\r\n        }\r\n\r\n        public static object StatusAspectGetter(object rowObj)\r\n        {\r\n            if (rowObj is not BulkUninstallEntry temp) return null;\r\n\r\n            var name = temp.CurrentStatus.GetLocalisedName();\r\n            if (temp.CurrentError != null)\r\n                name = string.Concat(name, \" - \", temp.CurrentError.Message);\r\n            return name;\r\n        }\r\n\r\n        public void Start()\r\n        {\r\n            lock (_operationLock)\r\n            {\r\n                if (_workerThread != null && _workerThread.IsAlive)\r\n                {\r\n                    if (!_workerThread.Join(TimeSpan.FromSeconds(10)) && !Finished)\r\n                        return;\r\n                    \r\n                    //if (Finished)\r\n                    //{\r\n                    //    if (!_workerThread.Join(TimeSpan.FromSeconds(10)))\r\n                    //        _workerThread.Abort();\r\n                    //    else\r\n                    //        return;\r\n                    //}\r\n                    //else\r\n                    //    return;\r\n                }\r\n\r\n                Aborted = false;\r\n                Finished = false;\r\n\r\n                _workerThread = new Thread(UninstallWorkerThread) { Name = \"RunBulkUninstall_Worker\" };\r\n                _workerThread.Start();\r\n            }\r\n        }\r\n\r\n        private void UninstallWorkerThread()\r\n        {\r\n            var targetList = AllUninstallersList;\r\n            var configuration = Configuration;\r\n            if (targetList == null || configuration == null)\r\n                throw new ArgumentException(\"BulkUninstallTask is incomplete, this should not have happened.\");\r\n\r\n            if (UninstallToolsGlobalConfig.UseQuietUninstallDaemon && configuration.PreferQuiet \r\n                && AllUninstallersList.Any(x => x.IsSilentPossible))\r\n                StartAutomationDaemon();\r\n\r\n            try\r\n            {\r\n            StartOfLoop:\r\n                while (AllUninstallersList.Any(x => x.CurrentStatus == UninstallStatus.Waiting || x.IsRunning))\r\n                {\r\n                    do\r\n                    {\r\n                        if (Aborted)\r\n                        {\r\n                            AllUninstallersList.ForEach(x => x.SkipWaiting(false));\r\n                            break;\r\n                        }\r\n                        Thread.Sleep(500);\r\n                    } while (AllUninstallersList.Count(x => x.IsRunning) >= ConcurrentUninstallerCount);\r\n\r\n                    var running =\r\n                        AllUninstallersList.Where(x => x.CurrentStatus == UninstallStatus.Uninstalling).ToList();\r\n                    var runningTypes = running.Select(y => y.UninstallerEntry.UninstallerKind).ToList();\r\n                    var loudBlocked = OneLoudLimit && running.Any(y => !y.IsSilentPossible);\r\n\r\n                    var result = AllUninstallersList.FirstOrDefault(x =>\r\n                    {\r\n                        if (x.CurrentStatus != UninstallStatus.Waiting || (loudBlocked && !x.IsSilentPossible))\r\n                            return false;\r\n\r\n                        if (CheckForTypeCollisions(x.UninstallerEntry.UninstallerKind, runningTypes))\r\n                            return false;\r\n\r\n                        if (CheckForAdvancedCollisions(x.UninstallerEntry, running.Select(y => y.UninstallerEntry)))\r\n                            return false;\r\n\r\n                        return true;\r\n                    });\r\n\r\n                    if (result != null)\r\n                    {\r\n                        result.RunUninstaller(\r\n                            new BulkUninstallEntry.RunUninstallerOptions(configuration.AutoKillStuckQuiet,\r\n                                configuration.RetryFailedQuiet, configuration.PreferQuiet, configuration.Simulate, this));\r\n                        // Fire the event now so the interface can be updated\r\n                        OnStatusChanged?.Invoke(this, EventArgs.Empty);\r\n                    }\r\n                }\r\n\r\n                if (AllUninstallersList.Any(x => x.CurrentStatus == UninstallStatus.Paused))\r\n                {\r\n                    Thread.Sleep(100);\r\n                    goto StartOfLoop;\r\n                }\r\n            }\r\n            finally\r\n            {\r\n                StopAutomationDaemon();\r\n                Finished = true;\r\n            }\r\n        }\r\n\r\n        private void StopAutomationDaemon()\r\n        {\r\n            try\r\n            {\r\n                using (_client)\r\n                using (_writer)\r\n                {\r\n                    _writer?.WriteLine(@\"stop\");\r\n                    _client = null;\r\n                    _writer = null;\r\n                }\r\n\r\n                if (_quietUninstallDaemonProcess != null && !_quietUninstallDaemonProcess.HasExited)\r\n                    _quietUninstallDaemonProcess.WaitForExit(7000);\r\n            }\r\n            catch (SystemException ex)\r\n            {\r\n                Trace.WriteLine(@\"Failed to peacefully close automatizer daemon: \" + ex);\r\n\r\n                try { _quietUninstallDaemonProcess?.Kill(); }\r\n                catch (SystemException) { }\r\n            }\r\n\r\n            _quietUninstallDaemonProcess = null;\r\n        }\r\n\r\n        Process _quietUninstallDaemonProcess;\r\n\r\n        private void StartAutomationDaemon()\r\n        {\r\n            if (!UninstallToolsGlobalConfig.UninstallerAutomatizerExists)\r\n                UninstallToolsGlobalConfig.UseQuietUninstallDaemon = false;\r\n            else\r\n            {\r\n                try\r\n                {\r\n                    _quietUninstallDaemonProcess = Process.Start(UninstallToolsGlobalConfig.UninstallerAutomatizerPath, \"/d\");\r\n\r\n                    try\r\n                    {\r\n                        _client = new NamedPipeClientStream(\".\", \"UninstallAutomatizerDaemon\", PipeDirection.Out);\r\n                        _writer = new StreamWriter(_client);\r\n\r\n                        _client.Connect(7000);\r\n                        _writer.AutoFlush = true;\r\n                    }\r\n                    catch (SystemException ex)\r\n                    {\r\n                        UninstallToolsGlobalConfig.UseQuietUninstallDaemon = false;\r\n\r\n                        Trace.WriteLine(@\"Failed to connect to automatization daemon: \" + ex);\r\n\r\n                        StopAutomationDaemon();\r\n                    }\r\n                }\r\n                catch (SystemException ex)\r\n                {\r\n                    UninstallToolsGlobalConfig.UseQuietUninstallDaemon = false;\r\n\r\n                    Trace.WriteLine(@\"Failed to start automatization daemon:\" + ex);\r\n                }\r\n            }\r\n        }\r\n\r\n        private NamedPipeClientStream _client;\r\n        private StreamWriter _writer;\r\n\r\n        internal void SendProcessesToWatchToDeamon(IEnumerable<int> processIdsToAutomate)\r\n        {\r\n            if (_writer == null || _client == null || !_client.IsConnected) return;\r\n\r\n            var pidList = processIdsToAutomate.ToList();\r\n\r\n            foreach (var pid in pidList)\r\n            {\r\n                Debug.WriteLine(\"Sending pid: \" + pid + \" to automatizer daemon\");\r\n                _writer.WriteLine(pid.ToString(CultureInfo.InvariantCulture));\r\n            }\r\n        }\r\n\r\n        private static bool CheckForAdvancedCollisions(ApplicationUninstallerEntry target,\r\n            IEnumerable<ApplicationUninstallerEntry> running)\r\n        {\r\n            var entries = running.ToList();\r\n\r\n            if (entries.Any(x => x.PublisherTrimmed.Equals(\r\n                target.PublisherTrimmed, StringComparison.InvariantCultureIgnoreCase)))\r\n                return true;\r\n\r\n            if (target.InstallLocation.IsNotEmpty() &&\r\n                entries.Any(x => x.InstallLocation.IsNotEmpty() &&\r\n                                 (x.InstallLocation.StartsWith(target.InstallLocation, StringComparison.InvariantCultureIgnoreCase) ||\r\n                                  target.InstallLocation.StartsWith(x.InstallLocation, StringComparison.InvariantCultureIgnoreCase))))\r\n                return true;\r\n\r\n            if (target.UninstallerKind == UninstallerType.Msiexec)\r\n            {\r\n                var processes = Process.GetProcessesByName(\"msiexec\");\r\n                if (processes.Length > 1)\r\n                    return true;\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        private static bool CheckForTypeCollisions(UninstallerType target, IEnumerable<UninstallerType> running)\r\n        {\r\n            switch (target)\r\n            {\r\n                // Might cause collisions with Msiexec, don't run concurrently\r\n                case UninstallerType.Msiexec:\r\n                case UninstallerType.InstallShield:\r\n                case UninstallerType.SdbInst:\r\n                case UninstallerType.WindowsFeature:\r\n                case UninstallerType.WindowsUpdate:\r\n                case UninstallerType.Unknown:\r\n                // Chocolatey can use app's original uninstaller, so it's essentially unknown\r\n                case UninstallerType.Chocolatey:\r\n                // Scripts can do many things that could interfere\r\n                case UninstallerType.PowerShell:\r\n                    target = UninstallerType.Msiexec;\r\n                    break;\r\n\r\n                // Can be ran concurrently\r\n                case UninstallerType.InnoSetup:\r\n                case UninstallerType.Steam:\r\n                case UninstallerType.Nsis:\r\n                case UninstallerType.StoreApp:\r\n                case UninstallerType.SimpleDelete:\r\n                    break;\r\n\r\n                default:\r\n                    Debug.Fail(\"Unhandled UninstallerType - \" + target);\r\n                    goto case UninstallerType.Unknown;\r\n            }\r\n\r\n            foreach (var item in running)\r\n            {\r\n                var x = item;\r\n                if (x == UninstallerType.InstallShield || x == UninstallerType.WindowsFeature || x == UninstallerType.SdbInst || x == UninstallerType.Unknown)\r\n                    x = UninstallerType.Msiexec;\r\n\r\n                if (x == target)\r\n                {\r\n                    return true;\r\n                }\r\n            }\r\n\r\n            return false;\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Uninstaller/MsiUninstallModes.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nnamespace UninstallTools.Uninstaller\n{\n    public enum MsiUninstallModes\n    {\n        InstallModify,\n        Uninstall,\n        QuietUninstall\n    }\n}"
  },
  {
    "path": "source/UninstallTools/Uninstaller/UninstallManager.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Threading;\r\nusing Klocman.Extensions;\r\nusing Klocman.Tools;\r\nusing UninstallTools.Factory;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Uninstaller\r\n{\r\n    public static class UninstallManager\r\n    {\r\n        private const int SimulationDelay = 2500;\r\n\r\n        /// <summary>\r\n        ///     Rename the uninstaller entry by changing registry data. The entry is not refreshed in the process.\r\n        /// </summary>\r\n        public static bool Rename(this ApplicationUninstallerEntry entry, string newName)\r\n        {\r\n            if (string.IsNullOrEmpty(newName) || newName.ContainsAny(StringTools.InvalidPathChars))\r\n                return false;\r\n\r\n            using (var key = entry.OpenRegKey(true))\r\n            {\r\n                key.SetValue(RegistryFactory.RegistryNameDisplayName, newName);\r\n            }\r\n            return true;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Uninstall multiple items in sequence. Items are uninstalled in order specified by the configuration.\r\n        ///     This is a non-blocking method, a controller object is returned for monitoring of the task.\r\n        ///     The task waits until an uninstaller fully exits before running the next one.\r\n        /// </summary>\r\n        /// <param name=\"targets\">Uninstallers to run.</param>\r\n        /// <param name=\"configuration\">How the uninstallers should be ran.</param>\r\n        public static BulkUninstallTask CreateBulkUninstallTask(IReadOnlyList<BulkUninstallEntry> targets,\r\n            BulkUninstallConfiguration configuration)\r\n        {\r\n            return new BulkUninstallTask(targets, configuration);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Start the default uninstaller with normal UI\r\n        /// </summary>\r\n        /// <exception cref=\"IOException\">Uninstaller returned error code.</exception>\r\n        /// <exception cref=\"InvalidOperationException\">There are no usable ways of uninstalling this entry </exception>\r\n        /// <exception cref=\"FormatException\">Exception while decoding or attempting to run the uninstaller command. </exception>\r\n        public static Process RunUninstaller(this ApplicationUninstallerEntry entry)\r\n        {\r\n            return RunUninstaller(entry, false, false);\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Start selected uninstaller type. If selected type is not available, fall back to the default.\r\n        /// </summary>\r\n        /// <param name=\"entry\">Application to uninstall</param>\r\n        /// <param name=\"silentIfAvailable\">Choose quiet uninstaller if it's available.</param>\r\n        /// <param name=\"simulate\">If true, nothing will actually be uninstalled</param>\r\n        /// <param name=\"safeMode\">Don't modify the uninstall command to try avoid problems. Use when normal run fails.</param>\r\n        /// <exception cref=\"IOException\">Uninstaller returned error code.</exception>\r\n        /// <exception cref=\"InvalidOperationException\">There are no usable ways of uninstalling this entry </exception>\r\n        /// <exception cref=\"FormatException\">Exception while decoding or attempting to run the uninstaller command. </exception>\r\n        public static Process RunUninstaller(this ApplicationUninstallerEntry entry, bool silentIfAvailable, bool simulate, bool safeMode = false)\r\n        {\r\n            if (entry == null) throw new ArgumentNullException(nameof(entry));\r\n            try\r\n            {\r\n                ProcessStartInfo startInfo = null;\r\n                string fallBack = null;\r\n\r\n                if (silentIfAvailable && entry.QuietUninstallPossible)\r\n                {\r\n                    // Use supplied quiet uninstaller if any\r\n                    try\r\n                    {\r\n                        startInfo = ProcessTools.SeparateArgsFromCommand(entry.QuietUninstallString).ToProcessStartInfo();\r\n                        Debug.Assert(!startInfo.FileName.Contains(' ') || File.Exists(startInfo.FileName));\r\n                        if (QuietUninstallerIsCLI(entry))\r\n                        {\r\n                            // Safe to minimize quiet command windows\r\n                            startInfo.WindowStyle = ProcessWindowStyle.Minimized;\r\n                        }\r\n                    }\r\n                    catch (FormatException)\r\n                    {\r\n                        fallBack = entry.QuietUninstallString;\r\n                    }\r\n                }\r\n                else if (entry.UninstallPossible)\r\n                {\r\n                    // Fall back to the non-quiet uninstaller\r\n                    try\r\n                    {\r\n                        startInfo = ProcessTools.SeparateArgsFromCommand(entry.UninstallString).ToProcessStartInfo();\r\n                        Debug.Assert(!startInfo.FileName.Contains(' ') || File.Exists(startInfo.FileName));\r\n\r\n                        if (entry.UninstallerKind == UninstallerType.Nsis && !safeMode)\r\n                            UpdateNsisStartInfo(startInfo, entry.DisplayName);\r\n                    }\r\n                    catch (FormatException)\r\n                    {\r\n                        fallBack = entry.UninstallString;\r\n                    }\r\n                }\r\n                else\r\n                {\r\n                    // Cant do shit, capt'n\r\n                    throw new InvalidOperationException(Localisation.UninstallError_Nowaytouninstall);\r\n                }\r\n\r\n                if (simulate)\r\n                {\r\n                    Thread.Sleep(SimulationDelay);\r\n                    if (Debugger.IsAttached && new Random().Next(0, 2) == 0)\r\n                        throw new IOException(\"Random failure for debugging\");\r\n                    return null;\r\n                }\r\n\r\n                if (fallBack != null)\r\n                    return Process.Start(new ProcessStartInfo(fallBack) { UseShellExecute = true });\r\n\r\n                if (startInfo != null)\r\n                {\r\n                    startInfo.UseShellExecute = true;\r\n                    return Process.Start(startInfo);\r\n                }\r\n\r\n                // Cant do shit, capt'n\r\n                throw new InvalidOperationException(Localisation.UninstallError_Nowaytouninstall);\r\n            }\r\n            catch (IOException)\r\n            {\r\n                throw;\r\n            }\r\n            catch (InvalidOperationException)\r\n            {\r\n                throw;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                throw new FormatException(ex.Message, ex);\r\n            }\r\n        }\r\n\r\n        public static bool QuietUninstallerIsCLI(this ApplicationUninstallerEntry entry)\r\n        {\r\n            if (!entry.QuietUninstallPossible) return false;\r\n            switch (entry.UninstallerKind)\r\n            {\r\n                case UninstallerType.PowerShell:\r\n                case UninstallerType.Steam:\r\n                case UninstallerType.WindowsFeature:\r\n                case UninstallerType.WindowsUpdate:\r\n                case UninstallerType.StoreApp:\r\n                case UninstallerType.Oculus:\r\n                    return true;\r\n\r\n                default:\r\n                    return entry.QuietUninstallString.StartsWith(\"cmd \", StringComparison.OrdinalIgnoreCase) ||\r\n                        entry.QuietUninstallString.Contains(\"cmd.exe\", StringComparison.OrdinalIgnoreCase);\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Check if NSIS needs to be executed directly to get the return code. If yes, update the ProcessStartInfo\r\n        ///     http://nsis.sourceforge.net/Docs/AppendixD.html#errorlevels\r\n        /// </summary>\r\n        private static void UpdateNsisStartInfo(ProcessStartInfo startInfo, string entryName)\r\n        {\r\n            var dirName = Path.GetFileName(Path.GetDirectoryName(startInfo.FileName));\r\n            if (!string.IsNullOrEmpty(startInfo.Arguments) // Only works reliably if uninstaller doesn't use any Arguments already.\r\n                                                           // Filter out non-standard uninstallers that might pose problems\r\n                || !Path.GetFileNameWithoutExtension(startInfo.FileName).Contains(\"uninst\", StringComparison.InvariantCultureIgnoreCase)\r\n                || (dirName != null && dirName.Equals(\"uninstall\", StringComparison.InvariantCultureIgnoreCase)))\r\n                return;\r\n\r\n            var newName = PathTools.SanitizeFileName(entryName);\r\n            if (newName.Length > 8) newName = newName.Substring(0, 8);\r\n            newName += \"_\" + Path.GetFileName(startInfo.FileName);\r\n\r\n            var originalDirectory = Path.GetDirectoryName(startInfo.FileName)?.TrimEnd('\\\\');\r\n            Debug.Assert(originalDirectory != null);\r\n            startInfo.Arguments = \"_?=\" + originalDirectory;\r\n\r\n            var tempPath = Path.Combine(Path.GetTempPath(), newName);\r\n            File.Copy(startInfo.FileName, tempPath, true);\r\n            startInfo.FileName = tempPath;\r\n        }\r\n\r\n        /// <summary>\r\n        ///     Uninstall using msiexec in selected mode. If no guid is present nothing is done and -1 is returned.\r\n        /// </summary>\r\n        /// <param name=\"entry\">Application to uninstall</param>\r\n        /// <param name=\"mode\">Mode of the MsiExec run.</param>\r\n        /// <param name=\"simulate\">If true, nothing will be actually uninstalled</param>\r\n        /// <exception cref=\"IOException\">Uninstaller returned error code.</exception>\r\n        /// <exception cref=\"InvalidOperationException\">There are no usable ways of uninstalling this entry </exception>\r\n        /// <exception cref=\"FormatException\">Exception while decoding or attempting to run the uninstaller command. </exception>\r\n        public static int UninstallUsingMsi(this ApplicationUninstallerEntry entry, MsiUninstallModes mode,\r\n            bool simulate)\r\n        {\r\n            try\r\n            {\r\n                var uninstallPath = GetMsiString(entry.BundleProviderKey, mode);\r\n                if (string.IsNullOrEmpty(uninstallPath))\r\n                    return -1;\r\n\r\n                var startInfo = ProcessTools.SeparateArgsFromCommand(uninstallPath).ToProcessStartInfo();\r\n                startInfo.UseShellExecute = false;\r\n                if (simulate)\r\n                {\r\n                    Thread.Sleep(SimulationDelay);\r\n                    return 0;\r\n                }\r\n                return startInfo.StartAndWait();\r\n            }\r\n            catch (IOException)\r\n            {\r\n                throw;\r\n            }\r\n            catch (InvalidOperationException)\r\n            {\r\n                throw;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                throw new FormatException(ex.Message, ex);\r\n            }\r\n        }\r\n\r\n        internal static string GetMsiString(Guid bundleProviderKey, MsiUninstallModes mode)\r\n        {\r\n            if (bundleProviderKey == Guid.Empty) return string.Empty;\r\n\r\n            switch (mode)\r\n            {\r\n                case MsiUninstallModes.InstallModify:\r\n                    return $@\"MsiExec.exe /I{bundleProviderKey:B}\";\r\n\r\n                case MsiUninstallModes.QuietUninstall:\r\n                    return $@\"MsiExec.exe /qb /X{bundleProviderKey:B} REBOOT=ReallySuppress /norestart\";\r\n\r\n                case MsiUninstallModes.Uninstall:\r\n                    return $@\"MsiExec.exe /X{bundleProviderKey:B}\";\r\n\r\n                default:\r\n                    throw new ArgumentOutOfRangeException(nameof(mode), mode, @\"Unknown mode\");\r\n            }\r\n        }\r\n\r\n        public static int Modify(this ApplicationUninstallerEntry entry, bool simulate)\r\n        {\r\n            try\r\n            {\r\n                if (string.IsNullOrEmpty(entry.ModifyPath)) return -1;\r\n\r\n                var startInfo = ProcessTools.SeparateArgsFromCommand(entry.ModifyPath).ToProcessStartInfo();\r\n                startInfo.UseShellExecute = false;\r\n                if (simulate)\r\n                {\r\n                    Thread.Sleep(SimulationDelay);\r\n                    return 0;\r\n                }\r\n                return startInfo.StartAndWait();\r\n            }\r\n            catch (IOException)\r\n            {\r\n                throw;\r\n            }\r\n            catch (InvalidOperationException)\r\n            {\r\n                throw;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                throw new FormatException(ex.Message, ex);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/Uninstaller/UninstallStatus.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing Klocman.Localising;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools.Uninstaller\r\n{\r\n    public enum UninstallStatus\r\n    {\r\n        [LocalisedName(typeof(Localisation), \"UninstallStatus_Uninstalling\")]\r\n        Uninstalling,\r\n        [LocalisedName(typeof(Localisation), \"UninstallStatus_Waiting\")]\r\n        Waiting,\r\n        [LocalisedName(typeof(Localisation), \"UninstallStatus_Completed\")]\r\n        Completed,\r\n        [LocalisedName(typeof(Localisation), \"UninstallStatus_Failed\")]\r\n        Failed,\r\n        [LocalisedName(typeof(Localisation), \"UninstallStatus_Skipped\")]\r\n        Skipped,\r\n        [LocalisedName(typeof(Localisation), \"UninstallStatus_Protected\")]\r\n        Protected,\r\n        [LocalisedName(typeof(Localisation), \"UninstallStatus_Invalid\")]\r\n        Invalid,\r\n        [LocalisedName(typeof(Localisation), \"UninstallStatus_Paused\")]\r\n        Paused\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallTools/UninstallerType.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing Klocman.Localising;\r\nusing UninstallTools.Properties;\r\n\r\nnamespace UninstallTools\r\n{\r\n    public enum UninstallerType\r\n    {\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_Unknown\")]\r\n        Unknown = 0,\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_Msiexec\")]\r\n        Msiexec,\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_InnoSetup\")]\r\n        InnoSetup,\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_Steam\")]\r\n        Steam,\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_NSIS\")]\r\n        Nsis,\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_InstallShield\")]\r\n        InstallShield,\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_SdbInst\")]\r\n        SdbInst,\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_WindowsFeature\")]\r\n        WindowsFeature,\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_WindowsUpdate\")]\r\n        WindowsUpdate,\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_StoreApp\")]\r\n        StoreApp,\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_SimpleDelete\")]\r\n        SimpleDelete,\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_Chocolatey\")]\r\n        Chocolatey,\r\n        [LocalisedName(typeof(Localisation), \"UninstallerType_Oculus\")]\r\n        Oculus,\r\n        [LocalisedName(typeof(Localisation), nameof(Localisation.UninstallerType_PowerShell))]\r\n        PowerShell\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallerAutomatizer/Automation/AutomatedUninstallManager.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Globalization;\nusing System.IO;\nusing System.Linq;\nusing System.Resources;\nusing System.Threading;\nusing System.Windows.Forms;\nusing FlaUI.Adapter.White;\nusing FlaUI.Core.AutomationElements;\nusing FlaUI.Core.Definitions;\nusing FlaUI.Core.WindowsAPI;\nusing FlaUI.UIA3;\nusing Klocman.Extensions;\nusing Klocman.Tools;\nusing TestStack.White.UIItems;\nusing TestStack.White.UIItems.Finders;\nusing TestStack.White.WindowsAPI;\nusing UninstallerAutomatizer.Properties;\nusing Application = FlaUI.Core.Application;\nusing Button = FlaUI.Core.AutomationElements.Button;\n\nnamespace UninstallerAutomatizer\n{\n    public static class AutomatedUninstallManager\n    {\n        private const string NsisRebootNowRadioAutomationId = \"1203\";\n        private const string NsisRebootLaterRadioAutomationId = \"1204\";\n        private const string NsisForwardAutomationId = \"1\";\n        private const string NsisCancelAutomationId = \"2\";\n        private const string NsisYesAutomationId = \"6\";\n        private const string NsisNoAutomationId = \"7\";\n\n        private static readonly string[] GoodRadioIds = { NsisRebootLaterRadioAutomationId };\n        private static readonly string[] BadRadioIds = { NsisRebootNowRadioAutomationId };\n        private static readonly string[] BadButtonIds = { NsisNoAutomationId };\n        private static readonly string[] CancelButtonIds = { NsisCancelAutomationId };\n        private static readonly string[] GoodButtonIds = { NsisForwardAutomationId, NsisYesAutomationId };\n        private static readonly string[] ControlBoxButtonIds = { \"Minimize\", \"Maximize\", \"Close\" };\n\n        private static readonly string[] GoodButtonNames;\n        private static readonly string[] CancelButtonNames;\n        private static readonly string[] BadButtonNames;\n\n        private static bool _hideAutomatizedWindows = true;\n\n        static AutomatedUninstallManager()\n        {\n            var loc = Localization.Culture;\n\n            var rm = new ResourceManager(typeof(Localization));\n            var validCultureInfos = CultureInfo.GetCultures(CultureTypes.AllCultures)\n                .Where(c => rm.GetResourceSet(c, true, false) != null)\n                .ToList();\n\n            string[] GetValuesFromAllLanguages(IEnumerable<CultureInfo> cultureInfos, Func<string> targetFieldSelector)\n            {\n                return cultureInfos\n                    .Do(c => Localization.Culture = c)\n                    .SelectMany(_ => targetFieldSelector().Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries))\n                    .Select(x => x.Trim().ToLowerInvariant())\n                    .Where(x => !string.IsNullOrWhiteSpace(x))\n                    .Distinct()\n                    .ToArray();\n            }\n\n            GoodButtonNames = GetValuesFromAllLanguages(validCultureInfos, () => Localization.Auto_GoodButtons);\n            CancelButtonNames = GetValuesFromAllLanguages(validCultureInfos, () => Localization.Auto_CancelButtons);\n            BadButtonNames = GetValuesFromAllLanguages(validCultureInfos, () => Localization.Auto_BadButtons);\n\n            Localization.Culture = loc;\n\n            WhiteAdapter.Initialize(new UIA3Automation());\n        }\n\n        public static event EventHandler HideAutomatizedWindowsChanged;\n        public static bool HideAutomatizedWindows\n        {\n            get => _hideAutomatizedWindows;\n            set\n            {\n                if (_hideAutomatizedWindows == value) return;\n                _hideAutomatizedWindows = value;\n                HideAutomatizedWindowsChanged?.Invoke(null, EventArgs.Empty);\n            }\n        }\n\n        /// <summary>\n        ///     Automate uninstallation of an NSIS uninstaller.\n        /// </summary>\n        /// <param name=\"uninstallerCommand\">Command line used to launch the NSIS uninstaller. (Usually path to uninstall.exe.)</param>\n        /// <param name=\"statusCallback\">Information about the process is relayed here</param>\n        public static void UninstallNsisQuietly(string uninstallerCommand, Action<string> statusCallback)\n        {\n            Process pr = null;\n            Application app = null;\n            try\n            {\n\n                pr = ProcessTools.SeparateArgsFromCommand(uninstallerCommand).ToProcessStartInfo().Start();\n                if (pr == null)\n                    throw new IOException(Localization.Message_Automation_ProcessFailedToStart);\n\n                // NSIS uninstallers are first extracted by the executable to a temporary directory, and then ran from there.\n                // Wait for the extracting exe to close and grab the child process that it started.\n                statusCallback(Localization.Message_Automation_WaitingForNsisExtraction);\n                pr.WaitForExit();\n\n                // Attempt to get the extracted exe by looking up child processes, might not work in some cases\n                var prs = ProcessTools.GetChildProcesses(pr.Id).FirstOrDefault();\n\n                if (prs != 0)\n                {\n                    app = Application.Attach(prs);\n                }\n                else\n                {\n                    // Get all processes with name in format [A-Z]u_ (standard NSIS naming scheme, e.g. \"Au_.exe\") \n                    // and select the last one to launch. (Most likely to be ours)\n                    var uninstallProcess = Process.GetProcesses()\n                        .Where(x => x.ProcessName.Length == 3 && x.ProcessName.EndsWith(\"u_\", StringComparison.Ordinal))\n                        .OrderByDescending(x => x.StartTime).First();\n                    app = Application.Attach(uninstallProcess);\n                }\n            }\n            catch (Exception e)\n            {\n                var process = app != null ? ProcessTools.GetProcessByIdSafe(app.ProcessId) : null;\n                throw new AutomatedUninstallException(Localization.Message_Automation_Failed, e, uninstallerCommand, process ?? pr);\n            }\n\n            if (app != null)\n                AutomatizeApplication(app, statusCallback);\n        }\n\n        public static void AutomatizeApplication(Application app, Action<string> statusCallback)\n        {\n            if (app == null) throw new ArgumentNullException(nameof(app));\n            if (statusCallback == null) throw new ArgumentNullException(nameof(statusCallback));\n\n            var windows = new List<Window>();\n\n            void VisibleChangedHandler(object sender, EventArgs args) => SetWindowVisibility(windows, HideAutomatizedWindows);\n            HideAutomatizedWindowsChanged += VisibleChangedHandler;\n\n            try\n            {\n                statusCallback(string.Format(Localization.Message_Automation_AppAttached, app.Name));\n\n                WaitForApplication(app);\n\n                var seenWindows = new List<string>();\n\n                while (!app.HasExited)\n                {\n                    statusCallback(Localization.Message_Automation_WindowSearching);\n                    // NSIS uninstallers always have only one window open (by default)\n                    windows.Clear();\n                    windows.AddRange(app.GetAllTopLevelWindows(WhiteAdapter.Automation));\n\n                    SetWindowVisibility(windows, HideAutomatizedWindows);\n\n                    var target = windows.FirstOrDefault();\n                    if (target == null)\n                    {\n                        Thread.Sleep(1000);\n                        continue;\n                    }\n\n                    statusCallback(string.Format(Localization.Message_Automation_WindowFound, target.Title));\n                    WaitForWindow(target);\n\n                    while (target.IsAvailable && target.IsEnabled)\n                    {\n                        TryClickNextNsisButton(target, statusCallback);\n                        WaitForWindow(target);\n\n                        ProcessNsisPopups(app, target, seenWindows, statusCallback);\n                    }\n                    statusCallback(Localization.Message_Automation_WindowClosed);\n\n                    WaitForApplication(app);\n                }\n            }\n            catch (Exception e)\n            {\n                var process = ProcessTools.GetProcessByIdSafe(app.ProcessId);\n                if (app.HasExited || process?.HasExited == true) return;\n\n                throw new AutomatedUninstallException(Localization.Message_Automation_Failed, e, string.Empty, process);\n            }\n            finally\n            {\n                HideAutomatizedWindowsChanged -= VisibleChangedHandler;\n            }\n        }\n\n        private static void SetWindowVisibility(IEnumerable<Window> windows, bool hide)\n        {\n            var primaryScreenBounds = Screen.PrimaryScreen.Bounds;\n            foreach (var window in windows)\n            {\n                try\n                {\n                    if (hide)\n                    {\n                        // Move window mostly off-screen. A part of it has to be on some screen for teststack to work properly.\n                        window.Move(primaryScreenBounds.Right - 1, primaryScreenBounds.Bottom - 1);\n                    }\n                    else\n                    {\n                        var b = window.BoundingRectangle;\n                        // Move window to main screen center\n                        window.Move(primaryScreenBounds.X + primaryScreenBounds.Width / 2 - b.Width / 2,\n                            primaryScreenBounds.Y + primaryScreenBounds.Height / 2 - b.Height / 2);\n                    }\n                }\n                catch (SystemException e)\n                {\n                    Console.WriteLine(e);\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Wait for the application to become ready for input.\n        /// </summary>\n        private static void WaitForApplication(Application app)\n        {\n            app.WaitWhileBusy();\n            Thread.Sleep(100);\n        }\n\n        /// <summary>\n        ///     Wait for the window to become ready for input.\n        /// </summary>\n        private static void WaitForWindow(Window target)\n        {\n            var totalTimeouts = 0;\n            while (target.IsAvailable && target.IsEnabled && totalTimeouts < 60) // wait for at most 1 minute\n            {\n                try\n                {\n                    target.WaitUntilClickable(TimeSpan.FromSeconds(1));\n                    break;\n                }\n                catch (TimeoutException)\n                {\n                    totalTimeouts++;\n                }\n            }\n\n            Thread.Sleep(100);\n        }\n\n        private static void ProcessNsisPopups(Application app, Window mainWindow, ICollection<string> seenWindows, Action<string> statusCallback)\n        {\n            // Check for popups, they are opened as an extra window.\n            var currentWindows = app.GetAllTopLevelWindows(WhiteAdapter.Automation);\n            var popupWindow = currentWindows.SingleOrDefault(x => !x.Equals(mainWindow));\n\n            if (popupWindow == null)\n            {\n                popupWindow = mainWindow.ModalWindows.FirstOrDefault();\n                if (popupWindow == null)\n                    return;\n            }\n\n            var footprint = string.Join(\";\", popupWindow.FindAllChildren().Select(x => x.Name)) + popupWindow.Title + popupWindow.ActualWidth + popupWindow.ActualHeight;\n            if (seenWindows.Contains(footprint))\n                throw new InvalidOperationException(Localization.Message_Automation_PopupRecurringFound);\n            seenWindows.Add(footprint);\n            statusCallback(string.Format(Localization.Message_Automation_PopupFound, popupWindow.Title));\n\n            while (!popupWindow.IsAvailable)\n            {\n                TryClickNextNsisButton(popupWindow, statusCallback);\n\n                app.WaitWhileBusy();\n                popupWindow.WaitUntilClickable();\n                Thread.Sleep(100);\n            }\n            statusCallback(Localization.Message_Automation_PopupClosed);\n        }\n\n        private static void TryClickNextNsisButton(Window target, Action<string> statusCallback)\n        {\n            statusCallback(\"Looking for buttons to press...\");\n\n            var allButtons = target.FindAllChildren(SearchCriteria.ConditionFactory.ByControlType(ControlType.Button))\n                .Select(x => x.AsButton())\n                .ToList();\n\n            var filteredButtons = allButtons\n                .Where(x => x.IsEnabled)\n                .Where(NotControlBoxButton)\n                .ToList();\n\n            var cancelButtons = FilterButtonsByName(filteredButtons, CancelButtonNames)\n                .Concat(FilterButtonsById(filteredButtons, CancelButtonIds)\n                    .Except(FilterButtonsByName(filteredButtons, GoodButtonNames))\n                    .Except(FilterButtonsByName(filteredButtons, BadButtonNames)))\n                .ToList();\n\n            filteredButtons.RemoveAll(cancelButtons);\n\n            var badButtons = FilterButtonsById(filteredButtons, BadButtonIds)\n                .Concat(FilterButtonsByName(filteredButtons, BadButtonNames)).ToList();\n\n            var applicableButtons = filteredButtons.Count == 1 ? filteredButtons : filteredButtons.Except(badButtons).ToList();\n\n            if (applicableButtons.Any())\n            {\n                var nextButton = FilterButtonsByName(applicableButtons, GoodButtonNames)\n                    .Concat(FilterButtonsById(applicableButtons, GoodButtonIds))\n                    .FirstOrDefault();\n\n                if (nextButton == null)\n                {\n                    if (applicableButtons.Count == 1 && cancelButtons.Any() && allButtons.All(x => x.IsEnabled))\n                    {\n                        // If there is only one valid button, and the rest are cancel buttons,\n                        // assume the valid button is the correct choice.\n                        nextButton = applicableButtons.Single();\n                    }\n                    else\n                    {\n                        //Debug.Fail(\"Nothing to press!\");\n                        return;\n                    }\n                }\n\n                ProcessRadioButtons(target, statusCallback);\n\n                statusCallback(string.Format(Localization.Message_Automation_ClickingButton, nextButton.AutomationId));\n                // Finally press the button, doesn't require messing with the mouse.\n                //nextButton.RaiseClickEvent();\n                target.Focus();\n                nextButton.Focus();\n                nextButton.KeyIn(KeyboardInput.SpecialKeys.RETURN);\n            }\n        }\n\n        private static void ProcessRadioButtons(Window target, Action<string> statusCallback)\n        {\n            var allRadios = target.FindAllChildren(SearchCriteria.ConditionFactory.ByControlType(ControlType.RadioButton))\n                                .Select(x => x.AsRadioButton()).ToList();\n            if (allRadios.Any())\n            {\n                statusCallback(string.Format(Localization.Message_Automation_FoundButtons, allRadios.Count));\n\n                // Select all known good radio buttons first\n                var goodRadios = allRadios.Where(x => GoodRadioIds.Any(\n                    y => y.Equals(x.AutomationId, StringComparison.OrdinalIgnoreCase)));\n\n                foreach (var radioButton in goodRadios)\n                {\n                    if (radioButton.IsEnabled)\n                    {\n                        statusCallback(string.Format(Localization.Message_Automation_SelectingGoodButton, radioButton.Name));\n                        radioButton.IsChecked = true;\n                    }\n                }\n\n                // Check if any known bad radio buttons are still enabled. If yes, select other, non-bad buttons.\n                var badRadios = allRadios.Where(x => BadRadioIds.Any(\n                    y => y.Equals(x.AutomationId, StringComparison.OrdinalIgnoreCase))).ToList();\n\n                if (badRadios.Any(x => x.IsEnabled && x.IsChecked))\n                {\n                    foreach (var notBadRadio in allRadios.Except(badRadios))\n                    {\n                        if (notBadRadio.IsEnabled)\n                        {\n                            statusCallback(string.Format(Localization.Message_Automation_SelectingNotBadButton, notBadRadio.Name));\n                            notBadRadio.IsChecked = true;\n                        }\n                    }\n                }\n            }\n        }\n\n        private static IEnumerable<Button> FilterButtonsByName(List<Button> buttons, IEnumerable<string> buttonNames)\n        {\n            return buttonNames\n                .Select(buttonName => buttons.FirstOrDefault(\n                    x => x.Name.Equals(buttonName, StringComparison.InvariantCultureIgnoreCase)))\n                .Where(button => button != null);\n        }\n\n        private static IEnumerable<Button> FilterButtonsById(List<Button> buttons, IEnumerable<string> buttonIds)\n        {\n            return buttonIds\n                .Select(buttonName => buttons.FirstOrDefault(\n                    x => x.AutomationId.Equals(buttonName, StringComparison.InvariantCultureIgnoreCase)))\n                .Where(button => button != null);\n        }\n\n        /// <summary>\n        ///     Tests if the button is not a part of the control box.\n        /// </summary>\n        /// <param name=\"x\">Button to test</param>\n        private static bool NotControlBoxButton(Button x)\n        {\n            var id = x.AutomationId;\n            return !ControlBoxButtonIds.Any(y => id.Equals(y)); //todo check if this works\n        }\n\n        public class AutomatedUninstallException : Exception\n        {\n            public AutomatedUninstallException(string message, Exception innerException, string uninstallerCommand,\n                Process uninstallerProcess)\n                : base(message, innerException)\n            {\n                UninstallerCommand = uninstallerCommand;\n                UninstallerProcess = uninstallerProcess;\n            }\n\n            public string UninstallerCommand { get; }\n            public Process UninstallerProcess { get; }\n        }\n    }\n}"
  },
  {
    "path": "source/UninstallerAutomatizer/Automation/UninstallHandler.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.Collections.Concurrent;\nusing System.Diagnostics;\nusing System.IO;\nusing System.IO.Pipes;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing FlaUI.Core;\nusing Klocman;\nusing Klocman.Tools;\nusing Microsoft.Win32.Interop;\nusing UninstallerAutomatizer.Properties;\nusing UninstallTools;\nusing Debug = System.Diagnostics.Debug;\n\nnamespace UninstallerAutomatizer\n{\n    public class UninstallHandler\n    {\n        public bool KillOnFail { get; private set; }\n\n        public string UninstallTarget { get; private set; }\n\n        public bool IsDaemon { get; private set; }\n\n        public event EventHandler<UninstallHandlerUpdateArgs> StatusUpdate;\n\n        public void Pause()\n        {\n            throw new NotImplementedException();\n        }\n\n        public void Resume()\n        {\n            throw new NotImplementedException();\n        }\n\n        public void Start()\n        {\n            var args = Environment.GetCommandLineArgs().Skip(1).ToArray();\n\n            if (args.Length == 1 && args[0].Equals(\"/d\", StringComparison.OrdinalIgnoreCase))\n            {\n                StartDaemon();\n                return;\n            }\n\n            IsDaemon = false;\n\n            if (args.Length < 2)\n            {\n                Program.ReturnValue = ResultWin32.ERROR_BAD_ARGUMENTS;\n                OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Failed, Localization.Error_Invalid_number_of_arguments));\n                return;\n            }\n\n            UninstallerType uType;\n            if (!Enum.TryParse(args[0], out uType))\n            {\n                Program.ReturnValue = ResultWin32.ERROR_BAD_ARGUMENTS;\n                OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Failed, string.Format(Localization.Error_UnknownUninstallerType, args[0])));\n                return;\n            }\n\n            args = args.Skip(1).ToArray();\n\n            if (args[0].Equals(\"/k\", StringComparison.InvariantCultureIgnoreCase))\n            {\n                args = args.Skip(1).ToArray();\n                KillOnFail = true;\n            }\n\n            UninstallTarget = string.Join(\" \", args);\n            \n\n            if (!File.Exists(ProcessTools.SeparateArgsFromCommand(UninstallTarget).FileName))\n            {\n                Program.ReturnValue = ResultWin32.ERROR_BAD_ARGUMENTS;\n                OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Failed, string.Format(Localization.Error_InvalidPath, UninstallTarget)));\n                return;\n            }\n\n            if (uType != UninstallerType.Nsis)\n            {\n                Program.ReturnValue = ResultWin32.ERROR_BAD_ARGUMENTS;\n                OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Failed, string.Format(Localization.Error_NotSupported, uType)));\n                return;\n            }\n\n            OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Normal, string.Format(Localization.Message_Starting, UninstallTarget)));\n\n            _automationThread = new Thread(AutomationThread) { Name = \"AutomationThread\", IsBackground = false, Priority = ThreadPriority.AboveNormal };\n            _automationThread.Start();\n        }\n\n        private void StartDaemon()\n        {\n            IsDaemon = true;\n            OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Normal, Localization.UninstallHandler_StartDaemon));\n\n            _automationThread = new Thread(DaemonThread) { Name = \"AutomationThread\", IsBackground = false, Priority = ThreadPriority.AboveNormal };\n            _automationThread.Start();\n        }\n\n        readonly ConcurrentDictionary<int, Task> _runningHooks = new();\n\n        /// <summary>\n        /// Run in background as a daemon. Receive application PIDs to monitor, \"stop\" to exit.\n        /// </summary>\n        private void DaemonThread()\n        {\n            try\n            {\n                using (var server = new NamedPipeServerStream(\"UninstallAutomatizerDaemon\", PipeDirection.In))\n                using (var reader = new StreamReader(server))\n                {\n                    while (true)\n                    {\n                        server.WaitForConnection();\n                        Debug.WriteLine(\"Client connected through pipe\");\n                        while (true)\n                        {\n                            var line = reader.ReadLine()?.ToLowerInvariant();\n\n                            Debug.WriteLine(\"Received through pipe: \" + (line ?? \"NULL\"));\n\n                            if (line == null)\n                            {\n                                Thread.Sleep(500);\n                                continue;\n                            }\n\n                            if (line == \"stop\")\n                                return;\n\n                            int pid;\n                            if (!int.TryParse(line, out pid))\n                            {\n                                OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Normal,\n                                    string.Format(Localization.UninstallHandler_InvalidProcessNumber, pid)));\n                                continue;\n                            }\n\n                            try\n                            {\n                                if (_runningHooks.TryGetValue(pid, out var ttt) && !ttt.IsCompleted)\n                                    continue;\n\n                                var target = Process.GetProcessById(pid);\n\n                                if (!ProcessCanBeAutomatized(target))\n                                {\n                                    Debug.WriteLine(\"Tried to automate not allowed process: \" + target.ProcessName);\n                                    continue;\n                                }\n\n                                var app = Application.Attach(target);\n\n                                var t = new Task(() =>\n                                {\n                                    try\n                                    {\n                                        Debug.WriteLine(\"Running automatizer on thread pool\");\n                                        AutomatedUninstallManager.AutomatizeApplication(app, AutomatizeStatusCallback);\n                                    }\n                                    catch (Exception ex)\n                                    {\n                                        OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Normal,\n                                            string.Format(Localization.Message_UninstallFailed,\n                                                ex.InnerException?.Message ?? ex.Message)));\n                                    }\n                                    finally\n                                    {\n                                        _runningHooks.TryRemove(pid, out _);\n                                    }\n                                });\n\n                                _runningHooks.AddOrUpdate(pid, t, (i, task) => t);\n\n                                Debug.WriteLine(\"Created automatizer thread\");\n                                t.Start();\n                            }\n                            catch (SystemException ex) { Console.WriteLine(ex); }\n                        }\n                    }\n                }\n            }\n            catch (Exception ex)\n            {\n                OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Normal,\n                    Localization.UninstallHandler_DaemonStoppedReason + (ex.InnerException?.Message ?? ex.Message)));\n            }\n            finally\n            {\n                OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Succeeded, Localization.Message_Success));\n            }\n        }\n\n        private static bool ProcessCanBeAutomatized(Process target)\n        {\n            return target.Id > 4 && !string.Equals(target.ProcessName, Program.AutomatizerProcessName, StringComparison.Ordinal);\n        }\n\n        Thread _automationThread;\n        private bool _abort;\n\n        private void AutomationThread()\n        {\n            try\n            {\n                AutomatedUninstallManager.UninstallNsisQuietly(UninstallTarget, AutomatizeStatusCallback);\n\n                OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Succeeded, Localization.Message_Success));\n            }\n            catch (AutomatedUninstallManager.AutomatedUninstallException ex)\n            {\n                Debug.Assert(ex.InnerException != null, \"ex.InnerException != null\");\n\n                OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Failed, string.Format(Localization.Message_UninstallFailed, ex.InnerException?.Message ?? ex.Message)));\n\n                // todo grace period / move to window?\n                if (ex.UninstallerProcess != null && KillOnFail)\n                {\n                    try\n                    {\n                        ex.UninstallerProcess.Kill(true);\n                    }\n                    catch\n                    {\n                        // Ignore process errors, can't do anything about it\n                    }\n                }\n\n                Program.ReturnValue = ResultWin32.ERROR_FUNCTION_FAILED;\n            }\n        }\n\n        private void AutomatizeStatusCallback(string s)\n        {\n            if (_abort) throw new OperationCanceledException(Localization.Message_UserCancelled);\n            OnStatusUpdate(new UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind.Normal, s));\n        }\n\n        private UninstallHandlerUpdateArgs _previousArgs;\n\n        protected virtual void OnStatusUpdate(UninstallHandlerUpdateArgs e)\n        {\n            // Filter out repeated updates\n            if (Equals(_previousArgs, e)) return;\n            _previousArgs = e;\n\n            StatusUpdate?.Invoke(this, e);\n            Console.WriteLine(e.Message);\n        }\n\n        public void Abort()\n        {\n            _abort = true;\n        }\n    }\n}"
  },
  {
    "path": "source/UninstallerAutomatizer/Automation/UninstallHandlerUpdateArgs.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\n\nnamespace UninstallerAutomatizer\n{\n    public class UninstallHandlerUpdateArgs : EventArgs, IEquatable<UninstallHandlerUpdateArgs>\n    {\n        public UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind updateKind, string message)\n        {\n            Message = message;\n            UpdateKind = updateKind;\n        }\n\n        public string Message { get; }\n        public UninstallHandlerUpdateKind UpdateKind { get; }\n\n        public override bool Equals(object obj)\n        {\n            if (ReferenceEquals(this, obj)) return true;\n            var other = obj as UninstallHandlerUpdateArgs;\n            return Equals(other);\n        }\n\n        public bool Equals(UninstallHandlerUpdateArgs other)\n        {\n            return other != null && (string.Equals(Message, other.Message) && UpdateKind == other.UpdateKind);\n        }\n\n        public override int GetHashCode()\n        {\n            unchecked\n            {\n                return ((Message?.GetHashCode() ?? 0)*397) ^ (int) UpdateKind;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/UninstallerAutomatizer/Automation/UninstallHandlerUpdateKind.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nnamespace UninstallerAutomatizer\n{\n    public enum UninstallHandlerUpdateKind\n    {\n        Normal = 0,\n        Failed,\n        Succeeded\n    }\n}"
  },
  {
    "path": "source/UninstallerAutomatizer/Extensions/TestStackWhiteExtensions.cs",
    "content": "/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing FlaUI.Core;\n\nnamespace UninstallerAutomatizer.Extensions\n{\n    public static class TestStackWhiteExtensions\n    {\n        /// <summary>\n        /// Same as WaitWhileBusy, but doesn't throw when the application exits; it returns instead.\n        /// </summary>\n        public static void WaitWhileBusyAndAlive(this Application app)\n        {\n            try\n            {\n                app.WaitWhileBusy();\n\n            }\n            catch (InvalidOperationException)\n            {\n                if (!app.HasExited)\n                    throw;\n            }\n        }\n    }\n}"
  },
  {
    "path": "source/UninstallerAutomatizer/Extensions/WindowExtensions.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\nusing FlaUI.Core.AutomationElements;\nusing FlaUI.UIA3.Converters;\n\nnamespace UninstallerAutomatizer.Extensions\n{\n    internal static class WindowExtensions\n    {\n        private const int SWP_NOSIZE = 0x0001;\n        private const int SWP_NOMOVE = 0x0002;\n        private const int SWP_NOZORDER = 0x0004;\n\n        // see https://msdn.microsoft.com/en-us/library/windows/desktop/ms633545(v=vs.85).aspx\n        [DllImport(\"user32.dll\", CharSet = CharSet.Auto, ExactSpelling = true)]\n        private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hwndAfter, int x, int y, int width, int height, int flags);\n\n        public static void Resize(this Window window, int width, int height)\n        {\n            SetWindowPos(window, 0, 0, width, height, SWP_NOMOVE | SWP_NOZORDER);\n        }\n\n        public static void Move(this Window window, int x, int y)\n        {\n            SetWindowPos(window, x, y, 0, 0, SWP_NOSIZE | SWP_NOZORDER);\n        }\n\n        public static void Move(this Window window, int x, int y, int width, int height)\n        {\n            SetWindowPos(window, x, y, width, height, SWP_NOZORDER);\n        }\n\n        private static void SetWindowPos(this Window window, int x, int y, int width, int height, int flags)\n        {\n            var handle = new IntPtr(window.GetHandle());\n            SetWindowPos(handle, IntPtr.Zero, x, y, width, height, flags);\n        }\n\n        public static int GetHandle(this Window window)\n        {\n            return (int) window.ToNative().CurrentNativeWindowHandle;\n        }\n    }\n}"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.Designer.cs",
    "content": "﻿namespace UninstallerAutomatizer\n{\n    partial class MainWindow\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            components = new System.ComponentModel.Container();\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainWindow));\n            textBoxStatus = new System.Windows.Forms.TextBox();\n            flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\n            label1 = new System.Windows.Forms.Label();\n            groupBox1 = new System.Windows.Forms.GroupBox();\n            panel1 = new System.Windows.Forms.Panel();\n            checkBoxUninstallerVisible = new System.Windows.Forms.CheckBox();\n            buttonResume = new System.Windows.Forms.Button();\n            buttonPause = new System.Windows.Forms.Button();\n            panel2 = new System.Windows.Forms.Panel();\n            buttonAbort = new System.Windows.Forms.Button();\n            timerClose = new System.Windows.Forms.Timer(components);\n            timerOpacity = new System.Windows.Forms.Timer(components);\n            flowLayoutPanel1.SuspendLayout();\n            groupBox1.SuspendLayout();\n            panel1.SuspendLayout();\n            SuspendLayout();\n            // \n            // textBoxStatus\n            // \n            textBoxStatus.BorderStyle = System.Windows.Forms.BorderStyle.None;\n            resources.ApplyResources(textBoxStatus, \"textBoxStatus\");\n            textBoxStatus.Name = \"textBoxStatus\";\n            textBoxStatus.ReadOnly = true;\n            // \n            // flowLayoutPanel1\n            // \n            resources.ApplyResources(flowLayoutPanel1, \"flowLayoutPanel1\");\n            flowLayoutPanel1.Controls.Add(label1);\n            flowLayoutPanel1.Name = \"flowLayoutPanel1\";\n            // \n            // label1\n            // \n            resources.ApplyResources(label1, \"label1\");\n            label1.Name = \"label1\";\n            // \n            // groupBox1\n            // \n            groupBox1.Controls.Add(textBoxStatus);\n            resources.ApplyResources(groupBox1, \"groupBox1\");\n            groupBox1.Name = \"groupBox1\";\n            groupBox1.TabStop = false;\n            // \n            // panel1\n            // \n            panel1.Controls.Add(checkBoxUninstallerVisible);\n            panel1.Controls.Add(buttonResume);\n            panel1.Controls.Add(buttonPause);\n            panel1.Controls.Add(panel2);\n            panel1.Controls.Add(buttonAbort);\n            resources.ApplyResources(panel1, \"panel1\");\n            panel1.Name = \"panel1\";\n            // \n            // checkBoxUninstallerVisible\n            // \n            resources.ApplyResources(checkBoxUninstallerVisible, \"checkBoxUninstallerVisible\");\n            checkBoxUninstallerVisible.Name = \"checkBoxUninstallerVisible\";\n            checkBoxUninstallerVisible.UseVisualStyleBackColor = true;\n            checkBoxUninstallerVisible.CheckedChanged += checkBoxUninstallerVisible_CheckedChanged;\n            // \n            // buttonResume\n            // \n            resources.ApplyResources(buttonResume, \"buttonResume\");\n            buttonResume.Name = \"buttonResume\";\n            buttonResume.UseVisualStyleBackColor = true;\n            buttonResume.Click += buttonResume_Click;\n            // \n            // buttonPause\n            // \n            resources.ApplyResources(buttonPause, \"buttonPause\");\n            buttonPause.Name = \"buttonPause\";\n            buttonPause.UseVisualStyleBackColor = true;\n            buttonPause.Click += buttonPause_Click;\n            // \n            // panel2\n            // \n            resources.ApplyResources(panel2, \"panel2\");\n            panel2.Name = \"panel2\";\n            // \n            // buttonAbort\n            // \n            resources.ApplyResources(buttonAbort, \"buttonAbort\");\n            buttonAbort.Name = \"buttonAbort\";\n            buttonAbort.UseVisualStyleBackColor = true;\n            buttonAbort.Click += buttonAbort_Click;\n            // \n            // timerClose\n            // \n            timerClose.Tick += timerClose_Tick;\n            // \n            // timerOpacity\n            // \n            timerOpacity.Interval = 30;\n            timerOpacity.Tick += timerOpacity_Tick;\n            // \n            // MainWindow\n            // \n            resources.ApplyResources(this, \"$this\");\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\n            Controls.Add(groupBox1);\n            Controls.Add(panel1);\n            Controls.Add(flowLayoutPanel1);\n            Name = \"MainWindow\";\n            flowLayoutPanel1.ResumeLayout(false);\n            flowLayoutPanel1.PerformLayout();\n            groupBox1.ResumeLayout(false);\n            groupBox1.PerformLayout();\n            panel1.ResumeLayout(false);\n            panel1.PerformLayout();\n            ResumeLayout(false);\n            PerformLayout();\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.TextBox textBoxStatus;\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;\n        private System.Windows.Forms.Label label1;\n        private System.Windows.Forms.GroupBox groupBox1;\n        private System.Windows.Forms.Panel panel1;\n        private System.Windows.Forms.Button buttonPause;\n        private System.Windows.Forms.Panel panel2;\n        private System.Windows.Forms.Button buttonAbort;\n        private System.Windows.Forms.Button buttonResume;\n        private System.Windows.Forms.Timer timerClose;\n        private System.Windows.Forms.CheckBox checkBoxUninstallerVisible;\n        private System.Windows.Forms.Timer timerOpacity;\n    }\n}"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>هذه اداه الغاء تثبيت التطبيقات تلقائيا التي ليس لديها الغاء تثبيت هادئه عن طريق النقر على زر الغاء التثبيت بدلا من المستخدم.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>الحالة</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>استئناف</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>مهلة</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>إحباط</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>ازالة التثبيت الالي</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.cs",
    "content": "﻿/*\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\n    Apache License Version 2.0\n*/\n\nusing System;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Windows.Forms;\nusing Klocman.Extensions;\nusing Klocman.Tools;\n\nnamespace UninstallerAutomatizer\n{\n    public partial class MainWindow : Form\n    {\n        public MainWindow()\n        {\n            _handler = new UninstallHandler();\n            InitializeComponent();\n\n            try\n            {\n                Icon = ProcessTools.GetIconFromEntryExe();\n            }\n            catch (Exception e)\n            {\n                Console.WriteLine(e);\n            }\n\n            _timeSinceStart = Process.GetCurrentProcess().StartTime.ToUniversalTime();\n        }\n\n        private readonly UninstallHandler _handler;\n        private readonly DateTime _timeSinceStart;\n\n        protected override void OnShown(EventArgs e)\n        {\n            base.OnShown(e);\n\n            _handler.StatusUpdate += HandlerOnStatusUpdate;\n            _handler.Start();\n\n            if (_handler.IsDaemon)\n                WindowState = FormWindowState.Minimized;\n\n            timerOpacity.Start();\n        }\n\n        private void HandlerOnStatusUpdate(object sender, UninstallHandlerUpdateArgs uninstallHandlerUpdateArgs)\n        {\n            this.SafeInvoke(() => AddLogEntry(uninstallHandlerUpdateArgs.Message, uninstallHandlerUpdateArgs.UpdateKind));\n        }\n\n        private void AddLogEntry(string message, UninstallHandlerUpdateKind updateKind)\n        {\n            if (!string.IsNullOrEmpty(message))\n            {\n                var timeSinceStart = DateTime.UtcNow - _timeSinceStart;\n                var timeStr = \"[\" + Math.Round(timeSinceStart.TotalSeconds) + \"s] \";\n                var fullMessage = timeStr + message;\n\n                if (textBoxStatus.TextLength > 0)\n                    textBoxStatus.AppendText(\"\\r\\n\");\n                textBoxStatus.AppendText(fullMessage);\n\n                Console.WriteLine(fullMessage);\n            }\n\n            switch (updateKind)\n            {\n                case UninstallHandlerUpdateKind.Normal:\n                    break;\n                case UninstallHandlerUpdateKind.Failed:\n                    CloseAfterDelay(3000);\n                    break;\n                case UninstallHandlerUpdateKind.Succeeded:\n                    CloseAfterDelay(1000);\n                    break;\n                default:\n                    throw new InvalidEnumArgumentException();\n            }\n        }\n\n        private void CloseAfterDelay(int interval)\n        {\n            buttonAbort.Enabled = false;\n            timerClose.Interval = interval;\n            timerClose.Start();\n        }\n        \n        [Browsable(false)]\n        [ReadOnly(true)]\n        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\n        public bool IsRunning\n        {\n            get { return buttonPause.Visible; }\n            set\n            {\n                if (value)\n                    _handler.Resume();\n                else\n                    _handler.Pause();\n\n                buttonPause.Visible = value;\n                buttonResume.Visible = !value;\n            }\n        }\n\n        private void buttonPause_Click(object sender, EventArgs e)\n        {\n            IsRunning = false;\n        }\n\n        private void buttonResume_Click(object sender, EventArgs e)\n        {\n            IsRunning = true;\n        }\n\n        private void buttonAbort_Click(object sender, EventArgs e)\n        {\n            _handler.Abort();\n            Enabled = false;\n        }\n\n        private void timerClose_Tick(object sender, EventArgs e)\n        {\n            Close();\n        }\n\n        private void checkBoxUninstallerVisible_CheckedChanged(object sender, EventArgs e)\n        {\n            AutomatedUninstallManager.HideAutomatizedWindows = !checkBoxUninstallerVisible.Checked;\n        }\n\n        private void timerOpacity_Tick(object sender, EventArgs e)\n        {\n            if (ContainsFocus || ClientRectangle.Contains(PointToClient(MousePosition)))\n                Opacity = Math.Min(1, Opacity + 0.1);\n            else\n                Opacity = Math.Max(0.4, Opacity - 0.1);\n        }\n    }\n}\n"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Tento nástroj automaticky odinstaluje aplikace, které nemají tichý odinstalátor, kliknutím na tlačítka odinstalátoru místo uživatele.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Stav</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Pokračovat</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Pauza</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Přerušit</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Automatický odinstalátor</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Dieses Tool deinstalliert automatisch Anwendungen, die nicht über ein stilles Deinstallationsprogramm verfügen, indem Sie auf die Schaltflächen des Deinstallationsprogramms klicken.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Fortsetzen</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Pause</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Abbruch</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>Sichtbares Deinstallieren</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Automatisches deinstallieren</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Esta herramienta desinstala automáticamente las aplicaciones que no tienen un desinstalador silencioso haciendo clic en los botones del desinstalador en lugar del usuario.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Estado</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Resumir</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Pausar</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Abortar</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>Desinstalador visible</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Automatización del desinstalador</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Cet outil désinstalle automatiquement les applications qui n'ont pas de désinstalleur silencieux en cliquant sur les boutons du désinstalleur à la place de l'utilisateur.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Statut</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Reprendre</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Mettre en pause</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Abandonner</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Automatisation du désinstalleur</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>Désinstalleur visible</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Állapot</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Folytatás</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Szüneteltetés</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Megszakítás</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Riprendere</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Pausa</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Interrompere</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Automazione disinstallatore</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Questo strumento disinstalla automaticamente le applicazioni che non hanno un disinstallatore silenzioso cliccando sui tasti del disinstallatore al posto dell'utente.</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>Disinstallatore visibile</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>このツールは、ユーザーの代わりにアンインストーラーのボタンをクリックして、サイレントアンインストーラーを持たないアプリケーションを自動的にアンインストールします。</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>ステータス</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>再開</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>一時停止</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>中止</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>アンインストーラの表示</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>アンインストーラの自動化</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Deze tool de-installeert automatisch programma's die geen 'stille' installer hebben, door te klikken op de knoppen van de de-installer in plaats van door de gebruiker.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Doorgaan</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Pauze</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Afbreken</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>De-installer automatisering</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>De-installer zichtbaar</value>\n  </data>\n</root>\n"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>To narzędzie automatycznie odinstalowuje aplikacje które nie mają cichego deinstalatora klikając na przyciski dezinstalatora zamiast użytkownika.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Kontynuuj</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Wstrzymaj</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Anuluj</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Automatyzacja dezinstalatora</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>Dezinstalator widoczny</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Esta ferramenta desinstala automaticamente aplicativos que não possuem um desinstalador silencioso, clicando nos botões do desinstalador em vez do usuário.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Retomar</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Pausar</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Abortar</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>Desinstalador invisível</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Automação do desinstalador</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Esta ferramenta desinstala automaticamente os aplicativos que não têm desinstaladores de segundo plano, substituindo o utilizador ao actuar os botões do desinstalador.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Condição</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Retomar</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Pausa</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Abortar</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Automação do desinstalador</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals of this format is to allow a simple XML format\n    that is mostly human readable. The generation and parsing of the\n    various data types are done through the TypeConverter classes\n    associated with the data types.\n\n    Example:\n\n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n\n    There are any number of \"resheader\" rows that contain simple\n    name/value pairs.\n\n    Each data row contains a name, and value. The row also contains a\n    type or mimetype. Type corresponds to a .NET class that support\n    text/value conversion through the TypeConverter architecture.\n    Classes that don't support this are serialized and stored with the\n    mimetype set.\n\n    The mimetype is used for serialized objects, and tells the\n    ResXResourceReader how to depersist the object. This is currently not\n    extensible. For a given mimetype the value must be set accordingly:\n\n    Note - application/x-microsoft.net.object.binary.base64 is the format\n    that the ResXResourceWriter will generate, however the reader can\n    read any of the formats listed below.\n\n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array\n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"textBoxStatus.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Fill</value>\n  </data>\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\n  <data name=\"textBoxStatus.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>4, 19</value>\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"textBoxStatus.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"textBoxStatus.Multiline\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"textBoxStatus.ScrollBars\" type=\"System.Windows.Forms.ScrollBars, System.Windows.Forms\">\n    <value>Vertical</value>\n  </data>\n  <data name=\"textBoxStatus.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>305, 169</value>\n  </data>\n  <data name=\"textBoxStatus.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"&gt;&gt;textBoxStatus.Name\" xml:space=\"preserve\">\n    <value>textBoxStatus</value>\n  </data>\n  <data name=\"&gt;&gt;textBoxStatus.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;textBoxStatus.Parent\" xml:space=\"preserve\">\n    <value>groupBox1</value>\n  </data>\n  <data name=\"&gt;&gt;textBoxStatus.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <data name=\"flowLayoutPanel1.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"flowLayoutPanel1.AutoSizeMode\" type=\"System.Windows.Forms.AutoSizeMode, System.Windows.Forms\">\n    <value>GrowAndShrink</value>\n  </data>\n  <data name=\"label1.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"label1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>4, 0</value>\n  </data>\n  <data name=\"label1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 0, 4, 0</value>\n  </data>\n  <data name=\"label1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>291, 45</value>\n  </data>\n  <data name=\"label1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>This tool automatically uninstalls applications that do not have a quiet uninstaller by clicking on the uninstaller's buttons instead of the user.</value>\n  </data>\n  <data name=\"&gt;&gt;label1.Name\" xml:space=\"preserve\">\n    <value>label1</value>\n  </data>\n  <data name=\"&gt;&gt;label1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;label1.Parent\" xml:space=\"preserve\">\n    <value>flowLayoutPanel1</value>\n  </data>\n  <data name=\"&gt;&gt;label1.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <data name=\"flowLayoutPanel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Top</value>\n  </data>\n  <data name=\"flowLayoutPanel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>9, 9</value>\n  </data>\n  <data name=\"flowLayoutPanel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"flowLayoutPanel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>0, 0, 0, 9</value>\n  </data>\n  <data name=\"flowLayoutPanel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>313, 54</value>\n  </data>\n  <data name=\"flowLayoutPanel1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>1</value>\n  </data>\n  <data name=\"&gt;&gt;flowLayoutPanel1.Name\" xml:space=\"preserve\">\n    <value>flowLayoutPanel1</value>\n  </data>\n  <data name=\"&gt;&gt;flowLayoutPanel1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;flowLayoutPanel1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;flowLayoutPanel1.ZOrder\" xml:space=\"preserve\">\n    <value>2</value>\n  </data>\n  <data name=\"groupBox1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Fill</value>\n  </data>\n  <data name=\"groupBox1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>9, 63</value>\n  </data>\n  <data name=\"groupBox1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"groupBox1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"groupBox1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>313, 191</value>\n  </data>\n  <data name=\"groupBox1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>2</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"&gt;&gt;groupBox1.Name\" xml:space=\"preserve\">\n    <value>groupBox1</value>\n  </data>\n  <data name=\"&gt;&gt;groupBox1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;groupBox1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;groupBox1.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>-78, 9</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>118, 29</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>3</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>Uninstaller visible</value>\n  </data>\n  <data name=\"&gt;&gt;checkBoxUninstallerVisible.Name\" xml:space=\"preserve\">\n    <value>checkBoxUninstallerVisible</value>\n  </data>\n  <data name=\"&gt;&gt;checkBoxUninstallerVisible.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;checkBoxUninstallerVisible.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;checkBoxUninstallerVisible.ZOrder\" xml:space=\"preserve\">\n    <value>0</value>\n  </data>\n  <data name=\"buttonResume.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"buttonResume.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"buttonResume.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>40, 9</value>\n  </data>\n  <data name=\"buttonResume.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"buttonResume.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>88, 29</value>\n  </data>\n  <data name=\"buttonResume.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>2</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Resume</value>\n  </data>\n  <data name=\"buttonResume.Visible\" type=\"System.Boolean, mscorlib\">\n    <value>False</value>\n  </data>\n  <data name=\"&gt;&gt;buttonResume.Name\" xml:space=\"preserve\">\n    <value>buttonResume</value>\n  </data>\n  <data name=\"&gt;&gt;buttonResume.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;buttonResume.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;buttonResume.ZOrder\" xml:space=\"preserve\">\n    <value>1</value>\n  </data>\n  <data name=\"buttonPause.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"buttonPause.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"buttonPause.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>128, 9</value>\n  </data>\n  <data name=\"buttonPause.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"buttonPause.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>88, 29</value>\n  </data>\n  <data name=\"buttonPause.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Pause</value>\n  </data>\n  <data name=\"buttonPause.Visible\" type=\"System.Boolean, mscorlib\">\n    <value>False</value>\n  </data>\n  <data name=\"&gt;&gt;buttonPause.Name\" xml:space=\"preserve\">\n    <value>buttonPause</value>\n  </data>\n  <data name=\"&gt;&gt;buttonPause.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;buttonPause.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;buttonPause.ZOrder\" xml:space=\"preserve\">\n    <value>2</value>\n  </data>\n  <data name=\"panel2.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"panel2.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>216, 9</value>\n  </data>\n  <data name=\"panel2.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"panel2.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>9, 29</value>\n  </data>\n  <data name=\"panel2.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>1</value>\n  </data>\n  <data name=\"&gt;&gt;panel2.Name\" xml:space=\"preserve\">\n    <value>panel2</value>\n  </data>\n  <data name=\"&gt;&gt;panel2.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;panel2.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;panel2.ZOrder\" xml:space=\"preserve\">\n    <value>3</value>\n  </data>\n  <data name=\"buttonAbort.AutoSize\" type=\"System.Boolean, mscorlib\">\n    <value>True</value>\n  </data>\n  <data name=\"buttonAbort.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Right</value>\n  </data>\n  <data name=\"buttonAbort.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>225, 9</value>\n  </data>\n  <data name=\"buttonAbort.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"buttonAbort.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>88, 29</value>\n  </data>\n  <data name=\"buttonAbort.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>0</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Abort</value>\n  </data>\n  <data name=\"&gt;&gt;buttonAbort.Name\" xml:space=\"preserve\">\n    <value>buttonAbort</value>\n  </data>\n  <data name=\"&gt;&gt;buttonAbort.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;buttonAbort.Parent\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;buttonAbort.ZOrder\" xml:space=\"preserve\">\n    <value>4</value>\n  </data>\n  <data name=\"panel1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\n    <value>Bottom</value>\n  </data>\n  <data name=\"panel1.Location\" type=\"System.Drawing.Point, System.Drawing\">\n    <value>9, 254</value>\n  </data>\n  <data name=\"panel1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"panel1.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>0, 9, 0, 0</value>\n  </data>\n  <data name=\"panel1.Size\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>313, 38</value>\n  </data>\n  <data name=\"panel1.TabIndex\" type=\"System.Int32, mscorlib\">\n    <value>3</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.Name\" xml:space=\"preserve\">\n    <value>panel1</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.Parent\" xml:space=\"preserve\">\n    <value>$this</value>\n  </data>\n  <data name=\"&gt;&gt;panel1.ZOrder\" xml:space=\"preserve\">\n    <value>1</value>\n  </data>\n  <metadata name=\"timerClose.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>17, 17</value>\n  </metadata>\n  <metadata name=\"timerOpacity.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\n    <value>127, 17</value>\n  </metadata>\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\n    <value>True</value>\n  </metadata>\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\n    <value>7, 15</value>\n  </data>\n  <data name=\"$this.ClientSize\" type=\"System.Drawing.Size, System.Drawing\">\n    <value>331, 301</value>\n  </data>\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>4, 3, 4, 3</value>\n  </data>\n  <data name=\"$this.Padding\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\n    <value>9, 9, 9, 9</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Uninstaller automation</value>\n  </data>\n  <data name=\"&gt;&gt;timerClose.Name\" xml:space=\"preserve\">\n    <value>timerClose</value>\n  </data>\n  <data name=\"&gt;&gt;timerClose.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Timer, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;timerOpacity.Name\" xml:space=\"preserve\">\n    <value>timerOpacity</value>\n  </data>\n  <data name=\"&gt;&gt;timerOpacity.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Timer, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\n    <value>MainWindow</value>\n  </data>\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\n    <value>System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Этот инструмент автоматически удаляет приложения, у которых нет тихого деинсталлятора, нажимая на кнопки деинсталлятора вместо пользователя.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Статус</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Продолжить</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Пауза</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Прервать</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Автоматизация деинсталляции</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>Видимый деинсталлятор</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>To orodje samodejno odstranjuje aplikacije, ki nimajo tihega odstranjevalca, s klikom na gumbe odstranjevalca namesto uporabnika.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Stanje</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Nadaljuj</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Pavza</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Prekini</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Avtomatizacija odstranjevalca</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>Odstranjevalec je viden</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Detta verktyg avinstallerar automatiskt program som inte har en tyst avinstallationsfunktion genom att klicka på avinstallationsknapparna istället för användaren.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Återuppta</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Paus</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Avbryt</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>Avinstallation synlig</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Avinstallation automation</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Bu araç, kullanıcı yerine kaldırma aracının düğmelerini tıklatarak sessiz bir kaldırıcıya sahip olmayan uygulamaları otomatik olarak kaldırır.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Durum</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Devam</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Durdur</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Vazgeç</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>Kaldırıcı görünür</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Kaldırıcı otomasyonu</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>Công cụ này tự động gỡ cài đặt các ứng dụng không có trình gỡ cài đặt âm thầm bằng cách nhấp chuột vào các nút của trình gỡ cài đặt thay cho người dùng.</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>Trạng thái</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>Tiếp tục</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>Tạm dừng</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>Huỷ bỏ</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>Hiển thị trình gỡ cài đặt</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>Tự động hoá việc gỡ cài đặt</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>此工具通过单击卸载程序的按钮（而不是用户）自动卸载没有静默卸载程序的应用程序。</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>状态</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>继续</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>暂停</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>中断</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>卸载程序可视化</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>卸载程序自动化</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Forms/MainWindow.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"label1.Text\" xml:space=\"preserve\">\n    <value>此工具通過點擊移除程式的按鈕(而不是使用者)自動移除沒有最小化移除程式的應用程式。</value>\n  </data>\n  <data name=\"groupBox1.Text\" xml:space=\"preserve\">\n    <value>狀態</value>\n  </data>\n  <data name=\"buttonResume.Text\" xml:space=\"preserve\">\n    <value>繼續</value>\n  </data>\n  <data name=\"buttonPause.Text\" xml:space=\"preserve\">\n    <value>暫停</value>\n  </data>\n  <data name=\"buttonAbort.Text\" xml:space=\"preserve\">\n    <value>中斷</value>\n  </data>\n  <data name=\"checkBoxUninstallerVisible.Text\" xml:space=\"preserve\">\n    <value>移除程式可用</value>\n  </data>\n  <data name=\"$this.Text\" xml:space=\"preserve\">\n    <value>移除程式自動化</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Program.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Diagnostics;\r\nusing System.Windows.Forms;\r\nusing Klocman;\r\nusing Microsoft.Win32.Interop;\r\n\r\nnamespace UninstallerAutomatizer\r\n{\r\n    /// <summary>\r\n    /// UninstallerAutomatizer.exe UninstallerType [/K] UninstallCommand\r\n    /// </summary>\r\n    internal static class Program\r\n    {\r\n        public static readonly string AutomatizerProcessName = Process.GetCurrentProcess().ProcessName;\r\n\r\n        public static ResultWin32 ReturnValue { get; set; } = ResultWin32.ERROR_SUCCESS;\r\n\r\n        [STAThread]\r\n        private static int Main()\r\n        {\r\n            using (LogWriter.StartLogging())\r\n            {\r\n                Application.EnableVisualStyles();\r\n                Application.SetCompatibleTextRenderingDefault(false);\r\n\r\n                Application.Run(new MainWindow());\r\n\r\n                return (int)ReturnValue;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace UninstallerAutomatizer.Properties {\r\n    using System;\r\n    \r\n    \r\n    /// <summary>\r\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\r\n    /// </summary>\r\n    // This class was auto-generated by the StronglyTypedResourceBuilder\r\n    // class via a tool like ResGen or Visual Studio.\r\n    // To add or remove a member, edit your .ResX file then rerun ResGen\r\n    // with the /str option, or rebuild your VS project.\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\r\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    internal class Localization {\r\n        \r\n        private static global::System.Resources.ResourceManager resourceMan;\r\n        \r\n        private static global::System.Globalization.CultureInfo resourceCulture;\r\n        \r\n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\r\n        internal Localization() {\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Returns the cached ResourceManager instance used by this class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Resources.ResourceManager ResourceManager {\r\n            get {\r\n                if (object.ReferenceEquals(resourceMan, null)) {\r\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"UninstallerAutomatizer.Properties.Localization\", typeof(Localization).Assembly);\r\n                    resourceMan = temp;\r\n                }\r\n                return resourceMan;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Overrides the current thread's CurrentUICulture property for all\r\n        ///   resource lookups using this strongly typed resource class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Globalization.CultureInfo Culture {\r\n            get {\r\n                return resourceCulture;\r\n            }\r\n            set {\r\n                resourceCulture = value;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to No | Decline.\r\n        /// </summary>\r\n        internal static string Auto_BadButtons {\r\n            get {\r\n                return ResourceManager.GetString(\"Auto_BadButtons\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Cancel | Abort | Back.\r\n        /// </summary>\r\n        internal static string Auto_CancelButtons {\r\n            get {\r\n                return ResourceManager.GetString(\"Auto_CancelButtons\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Uninstall | OK | Accept | Apply | Close | Yes | Delete | Remove | Clean.\r\n        /// </summary>\r\n        internal static string Auto_GoodButtons {\r\n            get {\r\n                return ResourceManager.GetString(\"Auto_GoodButtons\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Invalid number of arguments..\r\n        /// </summary>\r\n        internal static string Error_Invalid_number_of_arguments {\r\n            get {\r\n                return ResourceManager.GetString(\"Error_Invalid_number_of_arguments\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Invalid path, or file doesn&apos;t exist: {0}.\r\n        /// </summary>\r\n        internal static string Error_InvalidPath {\r\n            get {\r\n                return ResourceManager.GetString(\"Error_InvalidPath\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Automation of {0} uninstallers is not supported..\r\n        /// </summary>\r\n        internal static string Error_NotSupported {\r\n            get {\r\n                return ResourceManager.GetString(\"Error_NotSupported\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Unknown uninstaller type: {0}.\r\n        /// </summary>\r\n        internal static string Error_UnknownUninstallerType {\r\n            get {\r\n                return ResourceManager.GetString(\"Error_UnknownUninstallerType\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Attached to &quot;{0}&quot;.\r\n        /// </summary>\r\n        internal static string Message_Automation_AppAttached {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_AppAttached\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Clicking on the &quot;{0}&quot; button..\r\n        /// </summary>\r\n        internal static string Message_Automation_ClickingButton {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_ClickingButton\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Automatic uninstallation failed..\r\n        /// </summary>\r\n        internal static string Message_Automation_Failed {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_Failed\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Found {0} radio buttons..\r\n        /// </summary>\r\n        internal static string Message_Automation_FoundButtons {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_FoundButtons\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Pop-up window closed..\r\n        /// </summary>\r\n        internal static string Message_Automation_PopupClosed {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_PopupClosed\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Found a pop-up window - &quot;{0}&quot;..\r\n        /// </summary>\r\n        internal static string Message_Automation_PopupFound {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_PopupFound\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Reoccuring popup window detected!.\r\n        /// </summary>\r\n        internal static string Message_Automation_PopupRecurringFound {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_PopupRecurringFound\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Process failed to start..\r\n        /// </summary>\r\n        internal static string Message_Automation_ProcessFailedToStart {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_ProcessFailedToStart\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Selecting known-good radio button: {0}.\r\n        /// </summary>\r\n        internal static string Message_Automation_SelectingGoodButton {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_SelectingGoodButton\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Selecting not-blacklisted radio button: {0}.\r\n        /// </summary>\r\n        internal static string Message_Automation_SelectingNotBadButton {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_SelectingNotBadButton\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Waiting for NSIS uninstaller to extract....\r\n        /// </summary>\r\n        internal static string Message_Automation_WaitingForNsisExtraction {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_WaitingForNsisExtraction\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Window closed..\r\n        /// </summary>\r\n        internal static string Message_Automation_WindowClosed {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_WindowClosed\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Found window &quot;{0}&quot;..\r\n        /// </summary>\r\n        internal static string Message_Automation_WindowFound {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_WindowFound\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Looking for windows....\r\n        /// </summary>\r\n        internal static string Message_Automation_WindowSearching {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Automation_WindowSearching\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Automatically uninstalling &quot;{0}&quot;.\r\n        /// </summary>\r\n        internal static string Message_Starting {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Starting\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Automation was successful!.\r\n        /// </summary>\r\n        internal static string Message_Success {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_Success\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Automatic uninstallation failed. Reason: {0}.\r\n        /// </summary>\r\n        internal static string Message_UninstallFailed {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_UninstallFailed\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to User cancelled the operation.\r\n        /// </summary>\r\n        internal static string Message_UserCancelled {\r\n            get {\r\n                return ResourceManager.GetString(\"Message_UserCancelled\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Daemon stopped because of: .\r\n        /// </summary>\r\n        internal static string UninstallHandler_DaemonStoppedReason {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallHandler_DaemonStoppedReason\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to {0} is not a valid number.\r\n        /// </summary>\r\n        internal static string UninstallHandler_InvalidProcessNumber {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallHandler_InvalidProcessNumber\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Starting automatizer as a daemon/service..\r\n        /// </summary>\r\n        internal static string UninstallHandler_StartDaemon {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallHandler_StartDaemon\", resourceCulture);\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\r\n    <value>عدد غير صالح من الوسيطات.</value>\r\n  </data>\r\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\r\n    <value>{0} :نوع الغاء التثبيت مجهول</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>{0} :مسار غير صالح او ملف غير موجود</value>\r\n  </data>\r\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\r\n    <value>التنفيذ التلقائي ل {0} المثبت غير معتمد.</value>\r\n  </data>\r\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\r\n    <value>الغاء تثبيت \"{0}\" تلقائيا</value>\r\n  </data>\r\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\r\n    <value> المستخدم الغى العملية</value>\r\n  </data>\r\n  <data name=\"Message_Success\" xml:space=\"preserve\">\r\n    <value>التنفيذ التلقائي ناجح!</value>\r\n  </data>\r\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\r\n    <value>{0} :فشل الغاء التثبيت التلقائي. السبب</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\r\n    <value>{0} :تحديد زر الاختيار غير المدرج في القائمة السوداء</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\r\n    <value>{0} :اختيار زر الاختيار المعروف جيدا</value>\r\n  </data>\r\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\r\n    <value>{0} تم العثور على ازرار الاختيار</value>\r\n    <comment>{0} is number of buttons</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\r\n    <value>\"{0}\" النقر على الزر</value>\r\n    <comment>{0} is button name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\r\n    <value>تم إغلاق النافذة المنبثقة.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\r\n    <value>\"{0}\" - العثور على نافذة منبثقة</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\r\n    <value>تم الكشف عن نافذة منبثقة المتكررة!</value>\r\n  </data>\r\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\r\n    <value>اخفقت الازالة التلقائية.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\r\n    <value>نافذة مغلقة.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\r\n    <value>\"{0}\" تم العثور على النافذة</value>\r\n    <comment>\"{0}\" is window name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\r\n    <value>بحث عن النوافذ. . .</value>\r\n  </data>\r\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\r\n    <value>\"{0}\" مرفق ب</value>\r\n    <comment>0 is application name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\r\n    <value>لاستخراج NSIS في انتظار إلغاء التثبيت...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\r\n    <value>فشلت العملية في البدء.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\r\n    <value>بدء التشغيل التلقائي باعتباره الخفي/الخدمة.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\r\n    <value>توقف الخفي بسبب:</value>\r\n    <comment>This is followed by error/info message</comment>\r\n  </data>\r\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\r\n    <value>{0} ليس رقما صحيحا</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\r\n    <value>Neplatný počet argumentů.\r\n</value>\r\n  </data>\r\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\r\n    <value>Neznámý typ odinstalace: {0}</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Neplatná cesta nebo neexitující soubor: {0}</value>\r\n  </data>\r\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\r\n    <value>Automatická odinstalace jednotek {0} není podporována.</value>\r\n  </data>\r\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\r\n    <value>Automaticky odinstalovat \"{0}\"</value>\r\n  </data>\r\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\r\n    <value>Operace zrušena uživatelem</value>\r\n  </data>\r\n  <data name=\"Message_Success\" xml:space=\"preserve\">\r\n    <value>Automatizace byla úspěšná!</value>\r\n  </data>\r\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\r\n    <value>Automatické odinstalování se nezdařilo. Z důvodu: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\r\n    <value>Výběr přepínacího tlačítka na černé listině: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\r\n    <value>Výběr funkčního přepínače: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\r\n    <value>Byly nalezeny přepínací tlačítka {0}.</value>\r\n    <comment>{0} is number of buttons</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\r\n    <value>Klepnutím na tlačítko \"{0}\".</value>\r\n    <comment>{0} is button name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\r\n    <value>Vyskakovací okno zavřeno.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\r\n    <value>Nalezeno vyskakovací okno - \"{0}\".</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\r\n    <value>Zjištěno vyskakovací okno!</value>\r\n  </data>\r\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\r\n    <value>Automatická odinstalace se nezdařila.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\r\n    <value>Okno zavřeno.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\r\n    <value>Nalezeno v okně \"{0}\".</value>\r\n    <comment>\"{0}\" is window name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\r\n    <value>Vyhledávání v okně</value>\r\n  </data>\r\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\r\n    <value>Připojeno k \"{0}\"</value>\r\n    <comment>0 is application name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\r\n    <value>Čeká se na odinstalaci NSIS, pro extrahování ...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\r\n    <value>Nepodařilo se spustit proces.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\r\n    <value>Spuštění automatizeru jako démona/služba.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\r\n    <value>Daemon se zastavil kvůli:</value>\r\n    <comment>This is followed by error/info message</comment>\r\n  </data>\r\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\r\n    <value>{0} neplatné číslo</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\n    <value>Ungültige Anzahl von Argumenten</value>\n  </data>\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\n    <value>Unbekannter Deinstallationstyp: Unknown uninstaller type: {0}</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>Unbekannte Pfad oder Datei nicht vorhanden: {0}</value>\n  </data>\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\n    <value>Automatisierung des {0} Uninstallers wird nicht unterstützt.</value>\n  </data>\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\n    <value>Automatisch deinstallieren \"{0}\"</value>\n  </data>\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\n    <value>Benutzer hat den Vorgang abgebrochen</value>\n  </data>\n  <data name=\"Message_Success\" xml:space=\"preserve\">\n    <value>Automatisierung war erfolgreich!</value>\n  </data>\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\n    <value>Die automatische Deinstallation ist fehlgeschlagen. Grund: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\n    <value>Auswahl von nicht ausgeblendeten Schaltflächen: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\n    <value>Auswahl von gut bekannten Schaltflächen: {0}</value>\n  </data>\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\n    <value>Finde {0} Schaltknöpfe.</value>\n    <comment>{0} is number of buttons</comment>\n  </data>\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\n    <value>Klicken Sie auf die Schaltfläche \"{0}\".</value>\n    <comment>{0} is button name</comment>\n  </data>\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\n    <value>Popup-Fenster geschlossen.</value>\n  </data>\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\n    <value>Ein Popup-Fenster wurde gefunden - \"{0}\".</value>\n  </data>\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\n    <value>Wiederkehrendes Popup-Fenster erkannt!</value>\n  </data>\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\n    <value>Die automatische Deinstallation ist fehlgeschlagen.</value>\n  </data>\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\n    <value>Fenster geschlossen</value>\n  </data>\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\n    <value>Fenster gefunden \"{0}\".</value>\n    <comment>\"{0}\" is window name</comment>\n  </data>\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\n    <value>Nach Fenstern suchen ...</value>\n  </data>\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\n    <value>Angehängt an \"{0}\"</value>\n    <comment>0 is application name</comment>\n  </data>\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\n    <value>Warten auf das NSIS Deinstallationsprogramm zum Entpacken ...</value>\n  </data>\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\n    <value>Der Prozess konnte nicht gestartet werden.</value>\n  </data>\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\n    <value>Starte Automatizer als Daemon / Service.</value>\n  </data>\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\n    <value>Daemon gestoppt wegen:</value>\n    <comment>This is followed by error/info message</comment>\n  </data>\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\n    <value>{0} ist keine gültige Zahl</value>\n  </data>\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\n    <value>Nein | Ablehnen</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\n  </data>\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\n    <value>Wiederrufen | Abbruch | Zurück</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you never want to press.\nSeparated by |</comment>\n  </data>\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\n    <value>Uninstall | OK | Akzeptieren | Bestätigen | Schliessen | Ja | Löschen | Entfernen | Säubern</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\nSeparated by |</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\r\n    <value>Número de argumentos inválido.</value>\r\n  </data>\r\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\r\n    <value>Tipo de desinstalador desconocido: {0}</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Ruta inválida, o el archivo no existe: {0}</value>\r\n  </data>\r\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\r\n    <value>Automatización de {0} desinstaladores no es soportado.</value>\r\n  </data>\r\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\r\n    <value>Desinstalar automáticamente \"{0}\"</value>\r\n  </data>\r\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\r\n    <value>El usuario canceló la operación</value>\r\n  </data>\r\n  <data name=\"Message_Success\" xml:space=\"preserve\">\r\n    <value>¡La automatización fue exitosa!</value>\r\n  </data>\r\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\r\n    <value>La desinstalación automática falló. Razón: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\r\n    <value>Selección del botón de opción no incluido en la lista negra: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\r\n    <value>Selección del botón de opción conocido como bueno: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\r\n    <value>Botones de opción encontrados {0}.</value>\r\n    <comment>{0} is number of buttons</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\r\n    <value>Clic en el botón \"{0}\".</value>\r\n    <comment>{0} is button name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\r\n    <value>Ventana emergente cerrada.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\r\n    <value>Encontró una ventana emergente - \"{0}\".</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\r\n    <value>¡Ventana emergente recurrente detectada!</value>\r\n  </data>\r\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\r\n    <value>La desinstalación automática falló.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\r\n    <value>Ventana cerrada.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\r\n    <value>Ventana encontrada \"{0}\".</value>\r\n    <comment>\"{0}\" is window name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\r\n    <value>Buscando ventanas...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\r\n    <value>Adjuntado a \"{0}\"</value>\r\n    <comment>0 is application name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\r\n    <value>Esperando que el desinstalador de NSIS se extraiga...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\r\n    <value>El proceso no pudo iniciar.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\r\n    <value>Iniciando automatizador como daemon/servicio</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\r\n    <value>El daemon se detuvo debido a que:</value>\r\n    <comment>This is followed by error/info message</comment>\r\n  </data>\r\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\r\n    <value>{0} no es un número válido</value>\r\n  </data>\r\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\r\n    <value>No | Rechazar</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\r\n    <value>Cancelar | Abortar | Retroceder</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you never want to press.\r\nSeparated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\r\n    <value>Desinstalar | OK | Aceptar | Aplicar | Cerrar | Sí | Borrar | Eliminar | Limpiar</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\r\nSeparated by |</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\r\n    <value>Nombre d'arguments invalide.</value>\r\n  </data>\r\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\r\n    <value>Type de désinstalleur inconnu: {0}</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Chemin invalide, ou fichier inexistant: {0}</value>\r\n  </data>\r\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\r\n    <value>Automatisation de {0} désinstalleurs non supportée.</value>\r\n  </data>\r\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\r\n    <value>Désinstallation automatique de \"{0}\"</value>\r\n  </data>\r\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\r\n    <value>L'utilisateur a annulé l'opération</value>\r\n  </data>\r\n  <data name=\"Message_Success\" xml:space=\"preserve\">\r\n    <value>L'automatisation a réussi!</value>\r\n  </data>\r\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\r\n    <value>Désinstallation automatique échouée. Raison: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\r\n    <value>Sélection d'un bouton radio non sur liste noire: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\r\n    <value>Sélection d'un bouton radio bien connu: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\r\n    <value>Trouvé {0} boutons radio.</value>\r\n    <comment>{0} is number of buttons</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\r\n    <value>Cliquant sur le bouton {0}.</value>\r\n    <comment>{0} is button name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\r\n    <value>Fenêtre pop-up fermée.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\r\n    <value>Trouvé une fenêtre pop-up - \"{0}\".</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\r\n    <value>Fenêtre pop-up réapparue détectée!</value>\r\n  </data>\r\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\r\n    <value>Désinstallation automatique échouée.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\r\n    <value>Fenêtre fermée.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\r\n    <value>Fenêtre \"{0}\" trouvée.</value>\r\n    <comment>\"{0}\" is window name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\r\n    <value>Recherche de fenêtres...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\r\n    <value>Attaché à \"{0}\"</value>\r\n    <comment>0 is application name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\r\n    <value>Attente du désinstalleur NSIS pour extraire...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\r\n    <value>Processus échoué au démarrage.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\r\n    <value>Démarrage de l'automatiseur comme démon/service.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\r\n    <value>Démon stoppé à cause de:</value>\r\n    <comment>This is followed by error/info message</comment>\r\n  </data>\r\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\r\n    <value>{0} n'est pas un nombre valide</value>\r\n  </data>\r\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\r\n    <value>Non | Décliner</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\r\n    <value>Annuler | Abandonner | Arrière</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you never want to press.\r\nSeparated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\r\n    <value>Désinstaller | OK | Accepter | Appliquer | Fermer | Oui | Supprimer | Enlever | Nettoyer</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\r\nSeparated by |</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\r\n    <value>Numero di argomento non valido.</value>\r\n  </data>\r\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\r\n    <value>Tipo di disinstallatore sconosciuto: {0}</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Percorso invalido o file inesistente: {0}</value>\r\n  </data>\r\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\r\n    <value>L'automazione di {0} disinstallatori non è supportata.</value>\r\n  </data>\r\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\r\n    <value>Disinstallando automaticamente \"{0}\"</value>\r\n  </data>\r\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\r\n    <value>L'utente ha cancellato l'operazione</value>\r\n  </data>\r\n  <data name=\"Message_Success\" xml:space=\"preserve\">\r\n    <value>L'automazione si è conclusa correttamente!</value>\r\n  </data>\r\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\r\n    <value>La disinstallazione automatica non è riuscita. Motivo: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\r\n    <value>Selezione del pulsante a scelta singola (radio button) non oscurata: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\r\n    <value>Selezione del pulsante a scelta singola (radio button) sicuramente valida: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\r\n    <value>Trovati {0} pulsanti a scelta singola (radio button)</value>\r\n    <comment>{0} is number of buttons</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\r\n    <value>Click sul bottone \"{0}\". </value>\r\n    <comment>{0} is button name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\r\n    <value>Finestra pop-up chiusa.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\r\n    <value>Trovata una finestra pop-up - \"{0}\".</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\r\n    <value>Rilevata una finestra pop-up ricorrente!</value>\r\n  </data>\r\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\r\n    <value>Disinstallazione automatica fallita.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\r\n    <value>Finestra chiusa.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\r\n    <value>Trovata finestra \"{0}\".</value>\r\n    <comment>\"{0}\" is window name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\r\n    <value>Ricerca delle finestre...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\r\n    <value>Collegato a \"{0}\"</value>\r\n    <comment>0 is application name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\r\n    <value>In attesa dell'estrazione del disinstallatore NSIS...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\r\n    <value>Avvio del processo fallito.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\r\n    <value>Avvio dell'automatizzatore come demone/servizio.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\r\n    <value>Demone fermato per: </value>\r\n    <comment>This is followed by error/info message</comment>\r\n  </data>\r\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\r\n    <value>{0} non è un numero valido</value>\r\n  </data>\r\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\r\n    <value>No | Rifiuta</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\r\n    <value>Annulla | Abbandona | Indietro</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you never want to press.\r\nSeparated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\r\n    <value>Disinstalla | OK | Accetta | Applica | Chiudi | Sì | Cancella | Rimuovi | Pulisci</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\r\nSeparated by |</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\n    <value>無効な引数の数です。</value>\n  </data>\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\n    <value>不明なアンインストーラーの種類: {0}</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>無効なパス、またはファイルが存在しません: {0}</value>\n  </data>\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\n    <value>{0} のアンインストーラーの自動化はサポートされていません。</value>\n  </data>\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\n    <value>\"{0}\" を自動的にアンインストールしています。</value>\n  </data>\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\n    <value>ユーザーが操作をキャンセルしました。</value>\n  </data>\n  <data name=\"Message_Success\" xml:space=\"preserve\">\n    <value>自動化が成功しました！</value>\n  </data>\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\n    <value>自動アンインストールに失敗しました。理由: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\n    <value>ブラックリストに登録されていないラジオボタンを選択しています: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\n    <value>確認済みの良好なラジオボタンを選択しています: {0}</value>\n  </data>\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\n    <value>{0} のラジオボタンが見つかりました。</value>\n    <comment>{0} is number of buttons</comment>\n  </data>\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\n    <value>\"{0}\" ボタンをクリックしています。</value>\n    <comment>{0} is button name</comment>\n  </data>\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\n    <value>ポップアップウィンドウが閉じました。</value>\n  </data>\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\n    <value>ポップアップウィンドウが見つかりました - \"{0}\"。</value>\n  </data>\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\n    <value>再発するポップアップウィンドウが検出されました！</value>\n  </data>\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\n    <value>自動アンインストールに失敗しました。</value>\n  </data>\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\n    <value>ウィンドウが閉じました。</value>\n  </data>\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\n    <value>ウィンドウ \"{0}\" が見つかりました。</value>\n    <comment>\"{0}\" is window name</comment>\n  </data>\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\n    <value>ウィンドウを探しています...</value>\n  </data>\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\n    <value>\"{0}\" に接続されました。</value>\n    <comment>0 is application name</comment>\n  </data>\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\n    <value>NSIS アンインストーラーの展開を待っています...</value>\n  </data>\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\n    <value>プロセスの開始に失敗しました。</value>\n  </data>\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\n    <value>自動化ツールをデーモン/サービスとして起動しています。</value>\n  </data>\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\n    <value>デーモンが停止しました:</value>\n    <comment>This is followed by error/info message</comment>\n  </data>\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\n    <value>{0} は無効な数値です。</value>\n  </data>\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\n    <value>拒否</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\n  </data>\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you never want to press.\nSeparated by |</comment>\n  </data>\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\n    <value>アンインストール</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\nSeparated by |</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\r\n    <value>Ongeldig aantal argumenten.</value>\r\n  </data>\r\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\r\n    <value>Onbekend de-installer type: {0}</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Ongeldig pad of bestand bestaat niet: {0} </value>\r\n  </data>\r\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\r\n    <value>Automatisering van {0} de-installers wordt niet ondersteund.</value>\r\n  </data>\r\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\r\n    <value>Automatisch de-installeren \"{0}\"</value>\r\n  </data>\r\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\r\n    <value>Gebruiker annuleerde de activiteiten</value>\r\n  </data>\r\n  <data name=\"Message_Success\" xml:space=\"preserve\">\r\n    <value>Automatisering was succesvol!</value>\r\n  </data>\r\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\r\n    <value>Automatische de-installatie mislukte. Reden: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\r\n    <value>Selecteren niet op de zwartelijst staand keuzerondje: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\r\n    <value>Selecteren bekend-goed keuzerondje: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\r\n    <value>Gevonden {0} keuzerondjes</value>\r\n    <comment>{0} is number of buttons</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\r\n    <value>Klikken op de \"{0}\" knop.</value>\r\n    <comment>{0} is button name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\r\n    <value>Pop-up venster gesloten.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\r\n    <value>Pop-up venster gevonden - \"{0}\".</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\r\n    <value>Geruststellend pop-up venster gedetecteerd!</value>\r\n  </data>\r\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\r\n    <value>Automatische de-installatie mislukte.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\r\n    <value>Venster gesloten.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\r\n    <value>Gevonden venster(s) \"{0}\".</value>\r\n    <comment>\"{0}\" is window name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\r\n    <value>Zoeken naar vensters...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\r\n    <value>Verbonden met \"{0}\"</value>\r\n    <comment>0 is application name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\r\n    <value>Wachten op NSIS de-installer om uit te pakken...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\r\n    <value>Start van process mislukte.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\r\n    <value>Starten automatiseerder als een daemon/service.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\r\n    <value>Daemon gestopt als gevolg van:</value>\r\n    <comment>This is followed by error/info message</comment>\r\n  </data>\r\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\r\n    <value>{0} is geen geldig aantal</value>\r\n  </data>\r\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\r\n    <value>Nee | Afwijzen</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\r\n    <value>Annuleren | Afbreken | Terug</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you never want to press.\r\nSeparated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\r\n    <value>De-installeer | OK | Accepteer | Toepassen | Sluiten | Verwijderen  | Opschonen</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\r\nSeparated by |</comment>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\r\n    <value>Nieprawidłowa liczba argumentów.</value>\r\n  </data>\r\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\r\n    <value>Nieznany typ deinstalatora: {0}</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Nieprawidłowa ścieżka lub plik nie istnieje: {0}</value>\r\n  </data>\r\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\r\n    <value>Automatyzacja deinstalatorów {0} nie jest obsługiwana.</value>\r\n  </data>\r\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\r\n    <value>Automatyczne odinstalowanie \"{0}\"</value>\r\n  </data>\r\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\r\n    <value>Użytkownik anulował operację</value>\r\n  </data>\r\n  <data name=\"Message_Success\" xml:space=\"preserve\">\r\n    <value>Automatyzacja zakończyła się sukcesem!</value>\r\n  </data>\r\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\r\n    <value>Automatyczne odinstalowanie nie powiodło się. Powód: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\r\n    <value>Wybieranie nie-zabronionej opcji: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\r\n    <value>Wybieranie znanej dobrej opcji {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\r\n    <value>Znaleziono {0} przyciski radiowe.</value>\r\n    <comment>{0} is number of buttons</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\r\n    <value>Kliknięcie przycisku \"{0}\".</value>\r\n    <comment>{0} is button name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\r\n    <value>Wyskakujące okno zostało zamknięte.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\r\n    <value>Znaleziono okienko wyskakujące - \"{0}\".</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\r\n    <value>Wykryto powtarzające się okno wyskakujące!</value>\r\n  </data>\r\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\r\n    <value>Automatyczne odinstalowanie nie powiodło się.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\r\n    <value>Okno zamknięte.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\r\n    <value>Znaleziono okno \"{0}\".</value>\r\n    <comment>\"{0}\" is window name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\r\n    <value>Szukanie okien...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\r\n    <value>Podłączono do \"{0}\"</value>\r\n    <comment>0 is application name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\r\n    <value>Oczekiwanie na rozpakowanie dezinstalatora NSIS...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\r\n    <value>Uruchomienie procesu się nie powiodło.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\r\n    <value>Uruchamianie automatyzatora jako demona / usługi.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\r\n    <value>Daemon zatrzymał się z powodu:</value>\r\n    <comment>This is followed by error/info message</comment>\r\n  </data>\r\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\r\n    <value>{0} nie jest prawidłową liczbą</value>\r\n  </data>\r\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\r\n    <value>Nie | Odmawiam | Odmów</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\r\n    <value>Anuluj | Wróć | Wstecz</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you never want to press.\r\nSeparated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\r\n    <value>Odinstaluj | Akceptuj | Zaakceptuj | Dezinstaluj | Zamknij | Tak | Zatwierdź | Potwierdź | Usuń | Wyczyść</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\r\nSeparated by |</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\n    <value>Número inválido de argumentos.</value>\n  </data>\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\n    <value>Tipo de desinstalador desconhecido: {0}</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>Local incorreto ou arquivo inexistente: {0}</value>\n  </data>\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\n    <value>A automatização de {0} desinstaladores não é suportada.</value>\n  </data>\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\n    <value>Desinstalando automaticamente ''{0}''</value>\n  </data>\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\n    <value>O usuário cancelou a operação</value>\n  </data>\n  <data name=\"Message_Success\" xml:space=\"preserve\">\n    <value>A automação foi concluída com sucesso!</value>\n  </data>\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\n    <value>A desinstalação automática falhou. Motivo: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\n    <value>Selecionando o botão de opção não bloqueado: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\n    <value>Selecionando o botão de opção conhecido como funcional: {0}</value>\n  </data>\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\n    <value>Encontrados {0} botões de opção.</value>\n    <comment>{0} is number of buttons</comment>\n  </data>\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\n    <value>Clicando no botão \"{0}\".</value>\n    <comment>{0} is button name</comment>\n  </data>\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\n    <value>Pop-up fechado.</value>\n  </data>\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\n    <value>Encontrado uma janela pop-up: {0}</value>\n  </data>\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\n    <value>Janela pop-up recorrente encontrada!</value>\n  </data>\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\n    <value>A desinstalação automática falhou.</value>\n  </data>\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\n    <value>Janela fechada.</value>\n  </data>\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\n    <value>Encontrado janela: \"{0}\".</value>\n    <comment>\"{0}\" is window name</comment>\n  </data>\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\n    <value>Procurando janelas...</value>\n  </data>\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\n    <value>Anexado a \"{0}\"</value>\n    <comment>0 is application name</comment>\n  </data>\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\n    <value>Aguardando o desinstalador NSIS extrair...</value>\n  </data>\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\n    <value>O processo falou para iniciar.</value>\n  </data>\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\n    <value>Iniciando o automatizador como um daemon/serviço.</value>\n  </data>\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\n    <value>Daemon parado devido a:</value>\n    <comment>This is followed by error/info message</comment>\n  </data>\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\n    <value>{0} não é um número válido</value>\n  </data>\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\n    <value>Não | Recusar</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\n  </data>\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\n    <value>Cancelar | Abortar | Voltar</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you never want to press.\nSeparated by |</comment>\n  </data>\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\n    <value>Desinstalar | OK | Aceitar | Aplicar | Fechar | Sim | Excluir | Remover | Limpar</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\nSeparated by |</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\n    <value>Número inválido de argumentos</value>\n  </data>\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\n    <value>Tipo de desinstalador desconhecido: {0}</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>Percurso inválido ou arquivo inexistente: {0}</value>\n  </data>\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\n    <value>A automatização de {0} desinstaladores não é suportada.</value>\n  </data>\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\n    <value>A desinstalar automáticamente \"{0}\"</value>\n  </data>\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\n    <value>O utilizador cancelou a operação</value>\n  </data>\n  <data name=\"Message_Success\" xml:space=\"preserve\">\n    <value>A automação foi concluída com sucesso!</value>\n  </data>\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\n    <value>A desinstalação auto mática faljou. Razão: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\n    <value>Selecção de um botão de opção que não existente na lista negra: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\n    <value>Selecção de botão de rádio considerado bom: {0}</value>\n  </data>\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\n    <value>Eencontrados {0} botões de rádio.</value>\n    <comment>{0} is number of buttons</comment>\n  </data>\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\n    <value>Clicar no botão \"{0}\".</value>\n    <comment>{0} is button name</comment>\n  </data>\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\n    <value>Janela emergente fechada.</value>\n  </data>\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\n    <value>Encontrada uma janela emergente - \"{0}\".</value>\n  </data>\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\n    <value>Foi detectada uma janela emergente recorrente!</value>\n  </data>\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\n    <value>A desinstalação automática falhou.</value>\n  </data>\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\n    <value>Janela fechada.</value>\n  </data>\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\n    <value>Localizada a janela: \"{0}\".</value>\n    <comment>\"{0}\" is window name</comment>\n  </data>\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\n    <value>À procura de janelas...</value>\n  </data>\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\n    <value>Anexado a \"{0}\"</value>\n    <comment>0 is application name</comment>\n  </data>\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\n    <value>À espera que o desinstalador do NSIS faça a exxtracção ...</value>\n  </data>\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\n    <value>O processo falhou no arranque.</value>\n  </data>\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\n    <value>A iniciar o automatismo como um serviço de computação Daemon</value>\n  </data>\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\n    <value>O serviço de computação Daemon parou por causa de:</value>\n    <comment>This is followed by error/info message</comment>\n  </data>\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\n    <value>{0} não é um número válido.r</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\r\n    <value>Invalid number of arguments.</value>\r\n  </data>\r\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\r\n    <value>Unknown uninstaller type: {0}</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Invalid path, or file doesn't exist: {0}</value>\r\n  </data>\r\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\r\n    <value>Automation of {0} uninstallers is not supported.</value>\r\n  </data>\r\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\r\n    <value>Automatically uninstalling \"{0}\"</value>\r\n  </data>\r\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\r\n    <value>User cancelled the operation</value>\r\n  </data>\r\n  <data name=\"Message_Success\" xml:space=\"preserve\">\r\n    <value>Automation was successful!</value>\r\n  </data>\r\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\r\n    <value>Automatic uninstallation failed. Reason: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\r\n    <value>Selecting not-blacklisted radio button: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\r\n    <value>Selecting known-good radio button: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\r\n    <value>Found {0} radio buttons.</value>\r\n    <comment>{0} is number of buttons</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\r\n    <value>Clicking on the \"{0}\" button.</value>\r\n    <comment>{0} is button name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\r\n    <value>Pop-up window closed.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\r\n    <value>Found a pop-up window - \"{0}\".</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\r\n    <value>Reoccuring popup window detected!</value>\r\n  </data>\r\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\r\n    <value>Automatic uninstallation failed.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\r\n    <value>Window closed.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\r\n    <value>Found window \"{0}\".</value>\r\n    <comment>\"{0}\" is window name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\r\n    <value>Looking for windows...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\r\n    <value>Attached to \"{0}\"</value>\r\n    <comment>0 is application name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\r\n    <value>Waiting for NSIS uninstaller to extract...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\r\n    <value>Process failed to start.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\r\n    <value>Starting automatizer as a daemon/service.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\r\n    <value>Daemon stopped because of: </value>\r\n    <comment>This is followed by error/info message</comment>\r\n  </data>\r\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\r\n    <value>{0} is not a valid number</value>\r\n  </data>\r\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\r\n    <value>No | Decline</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\r\n    <value>Cancel | Abort | Back</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you never want to press.\r\nSeparated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\r\n    <value>Uninstall | OK | Accept | Apply | Close | Yes | Delete | Remove | Clean</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\r\nSeparated by |</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\r\n    <value>Недопустимое количество аргументов.</value>\r\n  </data>\r\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\r\n    <value>Неизвестный тип деинсталлятора: {0}</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Недопустимый путь или файл не существует: {0}</value>\r\n  </data>\r\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\r\n    <value>Автоматизация удаления {0} не поддерживается.</value>\r\n  </data>\r\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\r\n    <value>Автоматическая деинсталляция \"{0}\"</value>\r\n  </data>\r\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\r\n    <value>Пользователь отменил операцию</value>\r\n  </data>\r\n  <data name=\"Message_Success\" xml:space=\"preserve\">\r\n    <value>Автоматизация прошла успешно!</value>\r\n  </data>\r\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\r\n    <value>Ошибка автоматической деинсталляции. Причина: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\r\n    <value>Выбор переключателя не из черного списка: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\r\n    <value>Выбор известной кнопки: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\r\n    <value>Найдено кнопок {0}.</value>\r\n    <comment>{0} is number of buttons</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\r\n    <value>Нажатие на кнопку \"{0}\".</value>\r\n    <comment>{0} is button name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\r\n    <value>Всплывающее окно закрыто.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\r\n    <value>Найдено всплывающее окно - \"{0}\".</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\r\n    <value>Повторное всплывающее окно обнаружено!</value>\r\n  </data>\r\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\r\n    <value>Автоматическое удаление не удалось.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\r\n    <value>Окно закрыто.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\r\n    <value>Найденное окно \"{0}\".</value>\r\n    <comment>\"{0}\" is window name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\r\n    <value>Поиск окон...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\r\n    <value>Прикреплено к \"{0}\"</value>\r\n    <comment>0 is application name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\r\n    <value>Ожидание удаления NSIS для извлечения...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\r\n    <value>Не удалось запустить процесс.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\r\n    <value>Запуск автоматизации в качестве демона/службы.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\r\n    <value>Демон остановлен из-за:</value>\r\n    <comment>This is followed by error/info message</comment>\r\n  </data>\r\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\r\n    <value>{0} не является допустимым числом</value>\r\n  </data>\r\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\r\n    <value>Нет | Отклонить</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\r\n    <value>Выход | Отмена | Назад</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you never want to press.\r\nSeparated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\r\n    <value>Деинсталлировать | OK | Принять | Применить | Закрыть | Да | Удалить | Удалить | Очистить </value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\r\nSeparated by |</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\r\n    <value>Neveljavno število argumentov.</value>\r\n  </data>\r\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\r\n    <value>Neznana vrsta odstranjevalca: {0}</value>\r\n  </data>\r\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\r\n    <value>Ne obstaja neveljavna pot ali aplikacija: {0}</value>\r\n  </data>\r\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\r\n    <value>Avtomatizacija {0} odstranjevalcev ni podprta.</value>\r\n  </data>\r\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\r\n    <value>Samodejno odstranjevanje \"{0}\"</value>\r\n  </data>\r\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\r\n    <value>Uporabnik je preklical to operacijo.</value>\r\n  </data>\r\n  <data name=\"Message_Success\" xml:space=\"preserve\">\r\n    <value>Avtomatizacija je bila uspešna.</value>\r\n  </data>\r\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\r\n    <value>Avtomatizacija odstranjevanja ni bila uspešna. Razlog: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\r\n    <value>Izbira radijskega gumba, ki ni na črnem seznamu: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\r\n    <value>Izbira znanega dobrega radijskega gumba: {0}</value>\r\n  </data>\r\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\r\n    <value>Najdeno je {0} radijskih gumbov.</value>\r\n    <comment>{0} is number of buttons</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\r\n    <value>S klikom na gumb \"{0}\".</value>\r\n    <comment>{0} is button name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\r\n    <value>Pojavno okno je zaprto.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\r\n    <value>Najdeno je pojavno okno - \"{0}\".</value>\r\n  </data>\r\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\r\n    <value>Zaznano je bilo ponavljajoče se pojavno okno!</value>\r\n  </data>\r\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\r\n    <value>Samodejna odstranitev ni uspela.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\r\n    <value>Okno je zaprto.</value>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\r\n    <value>Najdeno je okno \"{0}\".</value>\r\n    <comment>\"{0}\" is window name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\r\n    <value>Iskanje oken...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\r\n    <value>Priloženo v \"{0}\"</value>\r\n    <comment>0 is application name</comment>\r\n  </data>\r\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\r\n    <value>Čakanje, da NSIS odstranjevalec razširi...</value>\r\n  </data>\r\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\r\n    <value>Postopek ni uspešno začet.</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\r\n    <value>Začetek avtomatizerja kot demona/storitev</value>\r\n  </data>\r\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\r\n    <value>Demon je ustavljen, ker :</value>\r\n    <comment>This is followed by error/info message</comment>\r\n  </data>\r\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\r\n    <value>{0} ni veljavno število</value>\r\n  </data>\r\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\r\n    <value>Ne | Zavrni</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\r\n    <value>Prekliči | Prekini | Nazaj</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you never want to press.\r\nSeparated by |</comment>\r\n  </data>\r\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\r\n    <value>Odstrani | Vredu | Sprejmi | Uporabi | Zapri | Da | Izbriši | Odstrani | Počisti</value>\r\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\r\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\r\nSeparated by |</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\n    <value>Ogiltigt antal argument.</value>\n  </data>\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\n    <value>Okänd avinstallationstyp: {0}</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>Ogiltig sökväg, eller filen finns inte: {0}</value>\n  </data>\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\n    <value>Automatisering av {0} avinstallationsprogram stöds inte.</value>\n  </data>\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\n    <value>Automatisk avinstallation av \"{0}\"</value>\n  </data>\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\n    <value>Användaren avbröt operationen</value>\n  </data>\n  <data name=\"Message_Success\" xml:space=\"preserve\">\n    <value>Automatiseringen var framgångsrik!</value>\n  </data>\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\n    <value>Automatisk avinstallation misslyckades. Anledning: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\n    <value>Väljer icke-svartlistad alternativknapp: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\n    <value>Väljer känd-bra alternativknapp: {0}</value>\n  </data>\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\n    <value>Hittade {0} alternativknappar.</value>\n    <comment>{0} is number of buttons</comment>\n  </data>\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\n    <value>Klikcar på \"{0}\" knappen.</value>\n    <comment>{0} is button name</comment>\n  </data>\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\n    <value>Pop-up fönster stängt.</value>\n  </data>\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\n    <value>Hittade ett pop-up fönster - \"{0}\".</value>\n  </data>\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\n    <value>Återkommande popup-fönster upptäckt!</value>\n  </data>\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\n    <value>Automatisk avinstallation misslyckad.</value>\n  </data>\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\n    <value>Fönster stängt.</value>\n  </data>\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\n    <value>Hittade fönster \"{0}\".</value>\n    <comment>\"{0}\" is window name</comment>\n  </data>\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\n    <value>Letar efter fönster...</value>\n  </data>\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\n    <value>Bifogad till \"{0}\"</value>\n    <comment>0 is application name</comment>\n  </data>\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\n    <value>Väntar på att NSIS avinstallationsprogram ska packa upp…</value>\n  </data>\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\n    <value>Processen misslyckades att starta.</value>\n  </data>\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\n    <value>Startar automatiseraren som en bakgrundstjänst/daemon.</value>\n  </data>\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\n    <value>Daemon stoppades på grund av:</value>\n    <comment>This is followed by error/info message</comment>\n  </data>\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\n    <value>{0} är inte ett giltigt nummer</value>\n  </data>\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\n    <value>Nej | Avböj</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\n  </data>\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\n    <value>Avbryt | Ångra | Tillbaka</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you never want to press.\nSeparated by |</comment>\n  </data>\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\n    <value>Avinstallera | OK | Acceptera | Tillämpa | Stäng | Ja | Radera | Ta bort | Rensa</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\nSeparated by |</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\n    <value>Geçersiz argüman sayısı.</value>\n  </data>\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\n    <value>Bilinmeyen kaldırıcı türü: {0}</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>Geçersiz yol veya dosya mevcut değil: {0}</value>\n  </data>\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\n    <value>{0} kaldırıcıların otomasyonu desteklenmiyor.</value>\n  </data>\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\n    <value>\"{0}\" otomatik olarak kaldırılıyor</value>\n  </data>\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\n    <value>Kullanıcı işlemi iptal etti</value>\n  </data>\n  <data name=\"Message_Success\" xml:space=\"preserve\">\n    <value>Otomasyon başarılı oldu!</value>\n  </data>\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\n    <value>Otomatik kaldırma başarısız oldu. Sebep: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\n    <value>Kara listeye alınmayan radyo düğmesini seçmek: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\n    <value>Bilinen iyi radyo düğmesini seçmek: {0}</value>\n  </data>\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\n    <value>{0} radyo düğmesi bulundu.</value>\n    <comment>{0} is number of buttons</comment>\n  </data>\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\n    <value>\"{0}\" düğmesine tıklayarak.</value>\n    <comment>{0} is button name</comment>\n  </data>\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\n    <value>Pop-up penceresi kapalı.</value>\n  </data>\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\n    <value>Bir pop-up pencere bulundu - \"{0}\".</value>\n  </data>\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\n    <value>Yinelenen popup penceresi tespit edildi!</value>\n  </data>\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\n    <value>Otomatik kaldırma başarısız oldu.</value>\n  </data>\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\n    <value>Pencere kapalı.</value>\n  </data>\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\n    <value>\"{0}\" penceresi bulundu.</value>\n    <comment>\"{0}\" is window name</comment>\n  </data>\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\n    <value>Pencereler aranıyor ...</value>\n  </data>\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\n    <value>\"{0}\" öğesine eklendi</value>\n    <comment>0 is application name</comment>\n  </data>\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\n    <value>NSIS kaldırıcıyı ayıklamak için bekleniyor ...</value>\n  </data>\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\n    <value>İşlem başlatılamadı.</value>\n  </data>\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\n    <value>Starting automatizer as a daemon/service.</value>\n  </data>\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\n    <value>Daemon şu sebeple durduruldu:</value>\n    <comment>This is followed by error/info message</comment>\n  </data>\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\n    <value>{0} geçerli bir sayı değil</value>\n  </data>\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\n    <value>Hayır | Reddet</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\n  </data>\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\n    <value>İptal | Vazgeç | Geri</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you never want to press.\nSeparated by |</comment>\n  </data>\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\n    <value>Kaldırma | Tamam | Onayla | Uygula | Evet | Sil | Kaldır | Temizle</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\nSeparated by |</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\n    <value>Số lượng đối số không hợp lệ.</value>\n  </data>\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\n    <value>Loại trình gỡ cài đặt không xác định: {0}</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>Đường dẫn không hợp lệ hoặc tệp không tồn tại: {0}</value>\n  </data>\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\n    <value>Tự động hoá trình gỡ cài đặt cho {0} không được hỗ trợ.</value>\n  </data>\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\n    <value>Tự động gỡ cài đặt \"{0}\"</value>\n  </data>\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\n    <value>Người dùng đã hủy thao tác</value>\n  </data>\n  <data name=\"Message_Success\" xml:space=\"preserve\">\n    <value>Tự động hóa thành công!</value>\n  </data>\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\n    <value>Tự động gỡ cài đặt không thành công. Lý do: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\n    <value>Tích nút radio không nằm trong danh sách đen: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\n    <value>Tích nút radio được biết là tốt: {0}</value>\n  </data>\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\n    <value>Đã tìm thấy {0} nút radio.</value>\n    <comment>{0} is number of buttons</comment>\n  </data>\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\n    <value>Nhấp chuột vào nút \"{0}\".</value>\n    <comment>{0} is button name</comment>\n  </data>\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\n    <value>Đã đóng cửa sổ bật lên.</value>\n  </data>\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\n    <value>Đã tìm thấy một cửa sổ bật lên - \"{0}\".</value>\n  </data>\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\n    <value>Đã phát hiện thấy một cửa sổ bật lên liên tục!</value>\n  </data>\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\n    <value>Tự động gỡ cài đặt không thành công.</value>\n  </data>\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\n    <value>Đã đóng cửa sổ.</value>\n  </data>\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\n    <value>Đã tìm thấy cửa sổ \"{0}\".</value>\n    <comment>\"{0}\" is window name</comment>\n  </data>\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\n    <value>Đang kiểm tra cửa sổ...</value>\n  </data>\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\n    <value>Đã đính kèm với \"{0}\".</value>\n    <comment>0 is application name</comment>\n  </data>\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\n    <value>Đang chờ trình gỡ cài đặt NSIS...</value>\n  </data>\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\n    <value>Khởi động quá trình không thành công.</value>\n  </data>\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\n    <value>Khởi động trình tự động hóa dưới dạng tiến trình nền/dịch vụ.</value>\n  </data>\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\n    <value>Tiến trình nền đã dừng vì những lý do sau: </value>\n    <comment>This is followed by error/info message</comment>\n  </data>\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\n    <value>{0} không phải là số hợp lệ</value>\n  </data>\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\n    <value>Không | Từ chối</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\n  </data>\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\n    <value>Huỷ | Trở về</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you never want to press.\nSeparated by |</comment>\n  </data>\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\n    <value>Gỡ cài đặt | OK | Chấp nhận | Áp dụng | Đóng | Đúng | Xoá | Loại bỏ | Dọn dẹp</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\nSeparated by |</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\n    <value>无效的参数数量</value>\n  </data>\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\n    <value>未知的卸载程序类型: {0}</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>无效路径，或文件不存在: {0}</value>\n  </data>\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\n    <value>不支持{0}卸载程序的自动化</value>\n  </data>\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\n    <value>正在自动卸载\"{0}\"</value>\n  </data>\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\n    <value>用户取消了操作</value>\n  </data>\n  <data name=\"Message_Success\" xml:space=\"preserve\">\n    <value>自动化成功!</value>\n  </data>\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\n    <value>自动卸载失败。原因: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\n    <value>正在选择未列入黑名单的单选按钮: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\n    <value>正在选择已知好的单选按钮: {0}</value>\n  </data>\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\n    <value>Found {0} 单选按钮。</value>\n    <comment>{0} is number of buttons</comment>\n  </data>\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\n    <value>点击\"{0}\"按钮。</value>\n    <comment>{0} is button name</comment>\n  </data>\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\n    <value>弹出窗口已关闭。</value>\n  </data>\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\n    <value>发现弹出窗口 - \"{0}\"。</value>\n  </data>\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\n    <value>检测到重复出现的弹出窗口!</value>\n  </data>\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\n    <value>自动卸载失败。</value>\n  </data>\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\n    <value>窗口已关闭。</value>\n  </data>\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\n    <value>找到了窗口\"{0}\"。</value>\n    <comment>\"{0}\" is window name</comment>\n  </data>\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\n    <value>正在查看窗口...</value>\n  </data>\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\n    <value>附加到\"{0}\"</value>\n    <comment>0 is application name</comment>\n  </data>\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\n    <value>正在等待NSIS卸载程序提取...</value>\n  </data>\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\n    <value>进程启动失败。</value>\n  </data>\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\n    <value>作为守护程序/服务启动自动化程序</value>\n  </data>\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\n    <value>守护程序已停止，因为:</value>\n    <comment>This is followed by error/info message</comment>\n  </data>\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\n    <value>{0}不是有效值</value>\n  </data>\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\n    <value>否|拒绝</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\n  </data>\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\n    <value>取消|中断|返回</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you never want to press.\nSeparated by |</comment>\n  </data>\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\n    <value>卸载 | 确定 | 接受 | 应用 | 关闭 | 是 | 删除 | 移除 | 清理</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\nSeparated by |</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/Properties/Localization.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Error_Invalid_number_of_arguments\" xml:space=\"preserve\">\n    <value>無效的參數</value>\n  </data>\n  <data name=\"Error_UnknownUninstallerType\" xml:space=\"preserve\">\n    <value>未知的移除程式類型: {0}</value>\n  </data>\n  <data name=\"Error_InvalidPath\" xml:space=\"preserve\">\n    <value>無效路徑，或檔案不存在:{0}</value>\n  </data>\n  <data name=\"Error_NotSupported\" xml:space=\"preserve\">\n    <value>不支援{0}移除程式的自動化</value>\n  </data>\n  <data name=\"Message_Starting\" xml:space=\"preserve\">\n    <value>正在自動移除\"{0}\"</value>\n  </data>\n  <data name=\"Message_UserCancelled\" xml:space=\"preserve\">\n    <value>使用者取消了操作</value>\n  </data>\n  <data name=\"Message_Success\" xml:space=\"preserve\">\n    <value>自動化成功!</value>\n  </data>\n  <data name=\"Message_UninstallFailed\" xml:space=\"preserve\">\n    <value>自動移除失敗。原因: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingNotBadButton\" xml:space=\"preserve\">\n    <value>正在選擇未加入黑名單的單選按鈕: {0}</value>\n  </data>\n  <data name=\"Message_Automation_SelectingGoodButton\" xml:space=\"preserve\">\n    <value>正在選擇已知的單選按鈕:\n{0}</value>\n  </data>\n  <data name=\"Message_Automation_FoundButtons\" xml:space=\"preserve\">\n    <value>找到 {0} 個單選按鈕</value>\n    <comment>{0} is number of buttons</comment>\n  </data>\n  <data name=\"Message_Automation_ClickingButton\" xml:space=\"preserve\">\n    <value>點擊\"{0}按鈕</value>\n    <comment>{0} is button name</comment>\n  </data>\n  <data name=\"Message_Automation_PopupClosed\" xml:space=\"preserve\">\n    <value>彈出視窗已關閉。</value>\n  </data>\n  <data name=\"Message_Automation_PopupFound\" xml:space=\"preserve\">\n    <value>發現彈出視窗 - \"{0}\"。</value>\n  </data>\n  <data name=\"Message_Automation_PopupRecurringFound\" xml:space=\"preserve\">\n    <value>檢測到重覆出現的視窗!</value>\n  </data>\n  <data name=\"Message_Automation_Failed\" xml:space=\"preserve\">\n    <value>自動移除失敗。</value>\n  </data>\n  <data name=\"Message_Automation_WindowClosed\" xml:space=\"preserve\">\n    <value>視窗已關閉。</value>\n  </data>\n  <data name=\"Message_Automation_WindowFound\" xml:space=\"preserve\">\n    <value>找到了視窗\"{0}\"。</value>\n    <comment>\"{0}\" is window name</comment>\n  </data>\n  <data name=\"Message_Automation_WindowSearching\" xml:space=\"preserve\">\n    <value>正在尋找視窗...</value>\n  </data>\n  <data name=\"Message_Automation_AppAttached\" xml:space=\"preserve\">\n    <value>附加到\"{0}\"</value>\n    <comment>0 is application name</comment>\n  </data>\n  <data name=\"Message_Automation_WaitingForNsisExtraction\" xml:space=\"preserve\">\n    <value>正在等待NSIS移除程式解壓縮...</value>\n  </data>\n  <data name=\"Message_Automation_ProcessFailedToStart\" xml:space=\"preserve\">\n    <value>程序啟動失敗。</value>\n  </data>\n  <data name=\"UninstallHandler_StartDaemon\" xml:space=\"preserve\">\n    <value>啟動自動化程式作為守護程式/服務</value>\n  </data>\n  <data name=\"UninstallHandler_DaemonStoppedReason\" xml:space=\"preserve\">\n    <value>守護程式已停止，因為:</value>\n    <comment>This is followed by error/info message</comment>\n  </data>\n  <data name=\"UninstallHandler_InvalidProcessNumber\" xml:space=\"preserve\">\n    <value>{0}不是有效值</value>\n  </data>\n  <data name=\"Auto_BadButtons\" xml:space=\"preserve\">\n    <value>否|拒絕</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely do not you want to press. Separated by |</comment>\n  </data>\n  <data name=\"Auto_CancelButtons\" xml:space=\"preserve\">\n    <value>取消|中斷|返回</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you never want to press.\nSeparated by |</comment>\n  </data>\n  <data name=\"Auto_GoodButtons\" xml:space=\"preserve\">\n    <value>移除 | 確定 | 接受 | 套用 | 關閉 | 是 | 刪除 | 移除 | 清理</value>\n    <comment>Used to select buttons to automatically press when silently uninstallng some programs.\nThese are texts displayed on buttons that you most likely  want to press to progress the uninstallation.\nSeparated by |</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UninstallerAutomatizer/UninstallerAutomatizer.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\t<PropertyGroup>\r\n\t\t<OutputType>WinExe</OutputType>\r\n\r\n\t\t<AssemblyTitle>Utility for automating uninstallers by simulating button presses</AssemblyTitle>\r\n\r\n\t\t<ApplicationIcon>icon.ico</ApplicationIcon>\r\n\t\t<StartupObject>UninstallerAutomatizer.Program</StartupObject>\r\n\t</PropertyGroup>\r\n\r\n\t<ItemGroup>\r\n\t\t<ProjectReference Include=\"..\\KlocTools\\KlocTools.csproj\" />\r\n\t\t<ProjectReference Include=\"..\\UninstallTools\\UninstallTools.csproj\" />\r\n\t</ItemGroup>\r\n\r\n\r\n\t<ItemGroup>\r\n\t\t<PackageReference Include=\"FlaUI.Adapter.White\" Version=\"0.2.1\" />\r\n\t\t<PackageReference Include=\"FlaUI.UIA3\" Version=\"5.0.0\" />\r\n\t\t<PackageReference Include=\"System.Drawing.Common\" Version=\"[8.*,9)\" />\r\n\t</ItemGroup>\r\n\r\n\r\n\t<ItemGroup>\r\n\t  <Compile Update=\"Properties\\Localization.Designer.cs\">\r\n\t    <DesignTime>True</DesignTime>\r\n\t    <AutoGen>True</AutoGen>\r\n\t    <DependentUpon>Localization.resx</DependentUpon>\r\n\t  </Compile>\r\n\t</ItemGroup>\r\n\r\n\r\n\t<ItemGroup>\r\n\t  <EmbeddedResource Update=\"Properties\\Localization.resx\">\r\n\t    <Generator>ResXFileCodeGenerator</Generator>\r\n\t    <LastGenOutput>Localization.Designer.cs</LastGenOutput>\r\n\t  </EmbeddedResource>\r\n\t</ItemGroup>\r\n</Project>"
  },
  {
    "path": "source/UniversalUninstaller/Program.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Threading;\r\nusing System.Windows.Forms;\r\nusing UniversalUninstaller.Properties;\r\n\r\nnamespace UniversalUninstaller\r\n{\r\n    internal static class Program\r\n    {\r\n        private static bool _quietMode;\r\n\r\n        /// <summary>\r\n        /// The main entry point for the application.\r\n        /// args:\r\n        /// Exe.exe [/q] DirPath\r\n        /// /q - quiet\r\n        /// return codes:\r\n        /// 0 - ok\r\n        /// 1 - Installation aborted by user (cancel button)\r\n        /// 11 - invalid arguments\r\n        /// 161 - failed to delete\r\n        /// </summary>\r\n        [STAThread]\r\n        private static int Main()\r\n        {\r\n            Application.EnableVisualStyles();\r\n            Application.SetCompatibleTextRenderingDefault(false);\r\n\r\n            var args = Environment.GetCommandLineArgs().Skip(1).ToList();\r\n\r\n            if (args.Any(x => x.Equals(\"/q\", StringComparison.OrdinalIgnoreCase)))\r\n                _quietMode = true;\r\n\r\n            if (args.Count > 2 || args.Count < 1)\r\n            {\r\n                ShowInvalidArgsBox();\r\n                return 11;\r\n            }\r\n\r\n            var strings = args.Where(x => !x.StartsWith(\"/\", StringComparison.Ordinal)).ToList();\r\n            if (strings.Count != 1)\r\n            {\r\n                ShowInvalidArgsBox();\r\n                return 11;\r\n            }\r\n\r\n            DirectoryInfo dir;\r\n            try\r\n            {\r\n                dir = new DirectoryInfo(strings.Single().Trim(' ', '\"'));\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Console.WriteLine(ex);\r\n                ShowInvalidArgsBox();\r\n                return 11;\r\n            }\r\n\r\n            if (!_quietMode)\r\n            {\r\n                var uninstallWindow = new UninstallSelection(dir);\r\n                Application.Run(uninstallWindow);\r\n                if (uninstallWindow.WasCancelled)\r\n                    return 1;\r\n                if (uninstallWindow.DeleteFailed)\r\n                    return 161;\r\n            }\r\n            else\r\n            {\r\n                try\r\n                {\r\n                    DeleteItems(new[] {dir});\r\n                }\r\n                catch (Exception exception)\r\n                {\r\n                    Console.WriteLine(exception);\r\n                    Klocman.LogWriter.WriteMessageToLog(exception.ToString());\r\n                    return 161;\r\n                }\r\n            }\r\n\r\n            return 0;\r\n        }\r\n\r\n        public static void DeleteItems(IEnumerable<FileSystemInfo> it)\r\n        {\r\n            foreach (var fileSystemInfo in it)\r\n            {\r\n                if (fileSystemInfo is DirectoryInfo di)\r\n                {\r\n                    RecursiveDelete(di);\r\n                }\r\n                else\r\n                {\r\n                    ClearReadOnlyFlag(fileSystemInfo);\r\n                    fileSystemInfo.Delete();\r\n                }\r\n            }\r\n        }\r\n\r\n        public static void RecursiveDelete(DirectoryInfo baseDir)\r\n        {\r\n            if (!baseDir.Exists)\r\n                return;\r\n\r\n            foreach (var info in baseDir.GetFileSystemInfos())\r\n            {\r\n                ClearReadOnlyFlag(info);\r\n\r\n                if (info is DirectoryInfo dir)\r\n                    RecursiveDelete(dir);\r\n                else\r\n                    info.Delete();\r\n            }\r\n\r\n            ClearReadOnlyFlag(baseDir);\r\n            WaitForDirEmpty(baseDir);\r\n            baseDir.Delete();\r\n        }\r\n\r\n        /// <summary>\r\n        /// FileSystemInfo.Delete is non-blocking, so we have to wait until it finished \r\n        /// before deleting the owning directory to prevent dir not empty exceptions.\r\n        /// </summary>\r\n        private static void WaitForDirEmpty(DirectoryInfo baseDir)\r\n        {\r\n            do Thread.Sleep(100); while (baseDir.GetFileSystemInfos().Any());\r\n        }\r\n\r\n        /// <summary>\r\n        /// FileSystemInfo.Delete throws access denied if file or dir is read only.\r\n        /// </summary>\r\n        private static void ClearReadOnlyFlag(FileSystemInfo info)\r\n        {\r\n            info.Attributes &= ~FileAttributes.ReadOnly;\r\n        }\r\n\r\n        private static void ShowInvalidArgsBox()\r\n        {\r\n            if (_quietMode) return;\r\n\r\n            MessageBox.Show(Localisation.Program_ShowInvalidArgsBox_Message,\r\n                Localisation.Program_ShowInvalidArgsBox_Title, MessageBoxButtons.OK, MessageBoxIcon.Information);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace UniversalUninstaller.Properties {\r\n    using System;\r\n    \r\n    \r\n    /// <summary>\r\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\r\n    /// </summary>\r\n    // This class was auto-generated by the StronglyTypedResourceBuilder\r\n    // class via a tool like ResGen or Visual Studio.\r\n    // To add or remove a member, edit your .ResX file then rerun ResGen\r\n    // with the /str option, or rebuild your VS project.\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\r\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    internal class Localisation {\r\n        \r\n        private static global::System.Resources.ResourceManager resourceMan;\r\n        \r\n        private static global::System.Globalization.CultureInfo resourceCulture;\r\n        \r\n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\r\n        internal Localisation() {\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Returns the cached ResourceManager instance used by this class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Resources.ResourceManager ResourceManager {\r\n            get {\r\n                if (object.ReferenceEquals(resourceMan, null)) {\r\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"UniversalUninstaller.Properties.Localisation\", typeof(Localisation).Assembly);\r\n                    resourceMan = temp;\r\n                }\r\n                return resourceMan;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Overrides the current thread's CurrentUICulture property for all\r\n        ///   resource lookups using this strongly typed resource class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Globalization.CultureInfo Culture {\r\n            get {\r\n                return resourceCulture;\r\n            }\r\n            set {\r\n                resourceCulture = value;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Invalid number of arguments. Pass full path of the directory to remove as an argument, and optionally /q for quiet mode..\r\n        /// </summary>\r\n        internal static string Program_ShowInvalidArgsBox_Message {\r\n            get {\r\n                return ResourceManager.GetString(\"Program_ShowInvalidArgsBox_Message\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Universal Uninstaller.\r\n        /// </summary>\r\n        internal static string Program_ShowInvalidArgsBox_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"Program_ShowInvalidArgsBox_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Failed to delete some items.\r\n        /// </summary>\r\n        internal static string UninstallSelection_DeleteProgress_FailedTitle {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallSelection_DeleteProgress_FailedTitle\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Deleting items.\r\n        /// </summary>\r\n        internal static string UninstallSelection_DeleteProgress_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallSelection_DeleteProgress_Title\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to Delete &quot;{0}&quot;.\r\n        /// </summary>\r\n        internal static string UninstallSelection_Title {\r\n            get {\r\n                return ResourceManager.GetString(\"UninstallSelection_Title\", resourceCulture);\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\r\n    <value>للوضع بهدوء /q عدد غير صالح من الوسائط. تمرير المسار الكامل للدليل لازاله كوسيطه ، واختياريا</value>\r\n  </data>\r\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\r\n    <value>الغاء التثبيت العالمي</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\r\n    <value>حذف المواد</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\r\n    <value>فشل حذف بعض المواد</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\r\n    <value>\"{0}\" حذف</value>\r\n    <comment>{0} is the name of application/folder to delete</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\r\n    <value>Neplatný počet argumentů. Projděte úplnou cestu adresáře, který chcete odstranit jako argument, a zvolte /q pro tichý režim.</value>\r\n  </data>\r\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\r\n    <value>Univerzální odinstalace</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\r\n    <value>Smazat položky</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\r\n    <value>Některé položky se nepodařilo smazat</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\r\n    <value>Smazat \"{0}\"</value>\r\n    <comment>{0} is the name of application/folder to delete</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\n    <value>Allgemeiner Uninstaller</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\n    <value>Elemente löschen</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\n    <value>Fehler beim Löschen einiger Elemente</value>\n  </data>\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\n    <value>Lösche \"{0}\"</value>\n    <comment>{0} is the name of application/folder to delete</comment>\n  </data>\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\n    <value>Ungültige Anzahl von Werten. Geben sie den gesammten Verzeichnis Pfad ein oder geben sie optional /q für eine stille Deinstallation ein. </value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\r\n    <value>Número de argumentos inválidos. Coloque la ruta completa del directorio para eliminar como un argumento y opcionalmente /q para el modo silencioso.</value>\r\n  </data>\r\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\r\n    <value>Desinstalador universal</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\r\n    <value>Eliminando elementos</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\r\n    <value>Error al eliminar algunos elementos</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\r\n    <value>Eliminar \"{0}\"</value>\r\n    <comment>{0} is the name of application/folder to delete</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\r\n    <value>Nombre d'arguments invalide. Passer le chemin complet du dossier à supprimer comme un argument, et en option /q pour le mode silencieux.</value>\r\n  </data>\r\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\r\n    <value>Désinstalleur Universel</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\r\n    <value>Suppression d'éléments</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\r\n    <value>Échec à la suppression de quelques éléments</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\r\n    <value>Supprimer \"{0}\"</value>\r\n    <comment>{0} is the name of application/folder to delete</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\n    <value>Univerzális eltávolító</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\n    <value>Elemek törlése</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\n    <value>Nem sikerült néhány elemet törölni</value>\n  </data>\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\n    <value>\"{0}\" törlése</value>\n    <comment>{0} is the name of application/folder to delete</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\r\n    <value>Numero di argomenti non valido. Inserisci il percorso completo della cartella da rimuovere come argomento e opzionalmente /q per la modalità silenziosa.</value>\r\n  </data>\r\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\r\n    <value>Disinstallatore Universale</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\r\n    <value>Eliminazione degli elementi</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\r\n    <value>Errore nella cancellazione di alcuni elementi</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\r\n    <value>Cancellazione \"{0}\"</value>\r\n    <comment>{0} is the name of application/folder to delete</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\n    <value>引数の数が無効です。\n削除するディレクトリのフルパスを引数として渡してください。また、オプションで/qを指定して静かアンインストールモードにできます。</value>\n  </data>\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\n    <value>ユニバーサルアンインストーラー</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\n    <value>アイテムを削除中</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\n    <value>一部のアイテムの削除に失敗しました</value>\n  </data>\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\n    <value>\"{0}\"を削除</value>\n    <comment>{0} is the name of application/folder to delete</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\r\n    <value>Ongeldig aantal argumenten. Geef het volledige pad op van de te verwijderen map als een argument en optioneel /q voor 'stille' modus.</value>\r\n  </data>\r\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\r\n    <value>Universele de-installer</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\r\n    <value>Verwijderen items</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\r\n    <value>Verwijderen van enkele items is mislukt</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\r\n    <value>Verwijder \"{0}\"</value>\r\n    <comment>{0} is the name of application/folder to delete</comment>\r\n  </data>\r\n</root>\r\n"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\r\n    <value>Nieprawidłowa liczba argumentów. Przekaż pełną ścieżkę katalogu do usunięcia jako argument, i opcjonalnie /q dla trybu cichego.</value>\r\n  </data>\r\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\r\n    <value>Uniwersalny dezinstalator</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\r\n    <value>Usuwanie plików i folderów</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\r\n    <value>Nie udało się usunąć niektórych elementów</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\r\n    <value>Usuń \"{0}\"</value>\r\n    <comment>{0} is the name of application/folder to delete</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\r\n    <value>Número inválido de argumentos. Passe o caminho completo do diretório que quer remover como argumento e, opcionalmente, /q para o modo silencioso.</value>\r\n  </data>\r\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\r\n    <value>Desinstalador universal</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\r\n    <value>Excluindo itens</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\r\n    <value>Falha ao excluir alguns itens</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\r\n    <value>Excluir \"{0}\"</value>\r\n    <comment>{0} is the name of application/folder to delete</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\r\n    <value>Número inválido de raciocínios. Faça o caminho completo do directório para remover como raciocínio e, opcionalmente, / q para o modo de execução em segundo plano.</value>\r\n  </data>\r\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\r\n    <value>Desinstalador universal</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\r\n    <value>A apagar items</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\r\n    <value>Falha a apagar alguns items</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\r\n    <value>Apagar \"{0}\"</value>\r\n    <comment>{0} is the name of application/folder to delete</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\r\n    <value>Invalid number of arguments. Pass full path of the directory to remove as an argument, and optionally /q for quiet mode.</value>\r\n  </data>\r\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\r\n    <value>Universal Uninstaller</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\r\n    <value>Deleting items</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\r\n    <value>Failed to delete some items</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\r\n    <value>Delete \"{0}\"</value>\r\n    <comment>{0} is the name of application/folder to delete</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\r\n    <value>Недопустимое количество аргументов. Передайте полный путь к каталогу, который нужно удалить в качестве аргумента, и (необязательно) /q для тихого режима.</value>\r\n  </data>\r\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\r\n    <value>Универсальный деинсталлятор</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\r\n    <value>Удаление элементов</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\r\n    <value>Не удалось удалить некоторые элементы.</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\r\n    <value>Удалить \"{0}\"</value>\r\n    <comment>{0} is the name of application/folder to delete</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\r\n    <value>Neveljavno število argumentov. Prenesite celotno pot imenika, ki ga želite odstraniti kot argument, in neobvezno /q, za tih način.</value>\r\n  </data>\r\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\r\n    <value>Univerzalni odstranjevalec</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\r\n    <value>Brisanje vnosov</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\r\n    <value>Nekaj vnosov ni bilo mogoče izbrisati</value>\r\n  </data>\r\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\r\n    <value>Izbriši \"{0}\"</value>\r\n    <comment>{0} is the name of application/folder to delete</comment>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\n    <value>Ogiltigt antal argument. Ange hela sökvägen till katalogen som ska tas bort som ett argument, och eventuellt /q för tyst läge.</value>\n  </data>\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\n    <value>Universal avinstallerare</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\n    <value>Raderar objekt</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\n    <value>Misslyckade att radera vissa objekt</value>\n  </data>\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\n    <value>Radera \"{0}\"</value>\n    <comment>{0} is the name of application/folder to delete</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\n    <value>Geçersiz argüman sayısı. Bağımsız değişken olarak kaldırmak için dizinin tam yolunu ve isteğe bağlı olarak / sessiz mod için / q kullanın</value>\n  </data>\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\n    <value>Evrensel Kaldırıcı</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\n    <value>Nesneler siliniyor</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\n    <value>Bazı öğeler silinemedi</value>\n  </data>\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\n    <value>\"{0}\" uygulamasını veya dosyasını sil</value>\n    <comment>{0} is the name of application/folder to delete</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\n    <value>Số lượng đối số không hợp lệ. Chuyển đường dẫn đầy đủ của thư mục cần xóa làm đối số và tùy chọn /q cho chế độ âm thầm.</value>\n  </data>\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\n    <value>Trình gỡ cài đặt đa năng</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\n    <value>Đang xoá các mục</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\n    <value>Xoá một số mục không thành công</value>\n  </data>\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\n    <value>Xoá \"{0}\"</value>\n    <comment>{0} is the name of application/folder to delete</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\n    <value>无效的参数数量。将要删除目录的完整路径作为参数传递，并且可用/q启用静默模式。</value>\n  </data>\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\n    <value>通用卸载程序</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\n    <value>删除项目</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\n    <value>未能删除部分项目</value>\n  </data>\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\n    <value>删除 \"{0}\"</value>\n    <comment>{0} is the name of application/folder to delete</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Localisation.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Program_ShowInvalidArgsBox_Message\" xml:space=\"preserve\">\n    <value>無效的參數。將要刪除的木完整目錄路徑作為參數傳遞，並且可以/q啟用最小化模式。</value>\n  </data>\n  <data name=\"Program_ShowInvalidArgsBox_Title\" xml:space=\"preserve\">\n    <value>通用移除程式</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_Title\" xml:space=\"preserve\">\n    <value>刪除項目</value>\n  </data>\n  <data name=\"UninstallSelection_DeleteProgress_FailedTitle\" xml:space=\"preserve\">\n    <value>無法刪除部分項目</value>\n  </data>\n  <data name=\"UninstallSelection_Title\" xml:space=\"preserve\">\n    <value>删除 \"{0}\"</value>\n    <comment>{0} is the name of application/folder to delete</comment>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace UniversalUninstaller.Properties {\r\n    using System;\r\n    \r\n    \r\n    /// <summary>\r\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\r\n    /// </summary>\r\n    // This class was auto-generated by the StronglyTypedResourceBuilder\r\n    // class via a tool like ResGen or Visual Studio.\r\n    // To add or remove a member, edit your .ResX file then rerun ResGen\r\n    // with the /str option, or rebuild your VS project.\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\r\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    internal class Resources {\r\n        \r\n        private static global::System.Resources.ResourceManager resourceMan;\r\n        \r\n        private static global::System.Globalization.CultureInfo resourceCulture;\r\n        \r\n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\r\n        internal Resources() {\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Returns the cached ResourceManager instance used by this class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Resources.ResourceManager ResourceManager {\r\n            get {\r\n                if (object.ReferenceEquals(resourceMan, null)) {\r\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"UniversalUninstaller.Properties.Resources\", typeof(Resources).Assembly);\r\n                    resourceMan = temp;\r\n                }\r\n                return resourceMan;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Overrides the current thread's CurrentUICulture property for all\r\n        ///   resource lookups using this strongly typed resource class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Globalization.CultureInfo Culture {\r\n            get {\r\n                return resourceCulture;\r\n            }\r\n            set {\r\n                resourceCulture = value;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap Folder_48x48 {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"Folder_48x48\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap Generic_Application {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"Generic_Application\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap Generic_Document {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"Generic_Document\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap icon {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"icon\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap section_collapse_all {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"section.collapse.all\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\r\n        /// </summary>\r\n        internal static System.Drawing.Bitmap section_expand_all {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"section.expand.all\", resourceCulture);\r\n                return ((System.Drawing.Bitmap)(obj));\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"section.expand.all\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\section.expand.all.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"section.collapse.all\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\section.collapse.all.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"Folder_48x48\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\Folder_48x48.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"Generic_Application\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\Generic_Application.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"Generic_Document\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\Generic_Document.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n  <data name=\"icon\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\icon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Settings.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace UniversalUninstaller.Properties\r\n{\r\n\r\n\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator\", \"11.0.0.0\")]\r\n    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase\r\n    {\r\n\r\n        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));\r\n\r\n        public static Settings Default\r\n        {\r\n            get\r\n            {\r\n                return defaultInstance;\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UniversalUninstaller/Properties/Settings.settings",
    "content": "﻿<?xml version='1.0' encoding='utf-8'?>\r\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\" CurrentProfile=\"(Default)\">\r\n  <Profiles>\r\n    <Profile Name=\"(Default)\" />\r\n  </Profiles>\r\n  <Settings />\r\n</SettingsFile>\r\n"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.Designer.cs",
    "content": "﻿namespace UniversalUninstaller\r\n{\r\n    partial class TargetList\r\n    {\r\n        /// <summary> \r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary> \r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Component Designer generated code\r\n\r\n        /// <summary> \r\n        /// Required method for Designer support - do not modify \r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            components = new System.ComponentModel.Container();\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TargetList));\r\n            toolStrip1 = new System.Windows.Forms.ToolStrip();\r\n            toolStripButtonSelAll = new System.Windows.Forms.ToolStripButton();\r\n            toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();\r\n            toolStripButtonExpand = new System.Windows.Forms.ToolStripButton();\r\n            toolStripButtonCollapse = new System.Windows.Forms.ToolStripButton();\r\n            treeListView1 = new BrightIdeasSoftware.TreeListView();\r\n            olvColumnName = new BrightIdeasSoftware.OLVColumn();\r\n            olvColumnSize = new BrightIdeasSoftware.OLVColumn();\r\n            toolStrip1.SuspendLayout();\r\n            ((System.ComponentModel.ISupportInitialize)treeListView1).BeginInit();\r\n            SuspendLayout();\r\n            // \r\n            // toolStrip1\r\n            // \r\n            toolStrip1.ImageScalingSize = new System.Drawing.Size(22, 22);\r\n            toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { toolStripButtonSelAll, toolStripSeparator1, toolStripButtonExpand, toolStripButtonCollapse });\r\n            resources.ApplyResources(toolStrip1, \"toolStrip1\");\r\n            toolStrip1.Name = \"toolStrip1\";\r\n            // \r\n            // toolStripButtonSelAll\r\n            // \r\n            resources.ApplyResources(toolStripButtonSelAll, \"toolStripButtonSelAll\");\r\n            toolStripButtonSelAll.Name = \"toolStripButtonSelAll\";\r\n            toolStripButtonSelAll.Click += toolStripButtonSelAll_Click;\r\n            // \r\n            // toolStripSeparator1\r\n            // \r\n            toolStripSeparator1.Name = \"toolStripSeparator1\";\r\n            resources.ApplyResources(toolStripSeparator1, \"toolStripSeparator1\");\r\n            // \r\n            // toolStripButtonExpand\r\n            // \r\n            toolStripButtonExpand.Image = Properties.Resources.section_expand_all;\r\n            resources.ApplyResources(toolStripButtonExpand, \"toolStripButtonExpand\");\r\n            toolStripButtonExpand.Name = \"toolStripButtonExpand\";\r\n            toolStripButtonExpand.Click += expand_Click;\r\n            // \r\n            // toolStripButtonCollapse\r\n            // \r\n            toolStripButtonCollapse.Image = Properties.Resources.section_collapse_all;\r\n            resources.ApplyResources(toolStripButtonCollapse, \"toolStripButtonCollapse\");\r\n            toolStripButtonCollapse.Name = \"toolStripButtonCollapse\";\r\n            toolStripButtonCollapse.Click += collapse_Click;\r\n            // \r\n            // treeListView1\r\n            // \r\n            treeListView1.AllColumns.Add(olvColumnName);\r\n            treeListView1.AllColumns.Add(olvColumnSize);\r\n            treeListView1.CellEditUseWholeCell = false;\r\n            treeListView1.CheckBoxes = true;\r\n            treeListView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { olvColumnName, olvColumnSize });\r\n            resources.ApplyResources(treeListView1, \"treeListView1\");\r\n            treeListView1.FullRowSelect = true;\r\n            treeListView1.GridLines = true;\r\n            treeListView1.Name = \"treeListView1\";\r\n            treeListView1.ShowGroups = false;\r\n            treeListView1.ShowImagesOnSubItems = true;\r\n            treeListView1.Sorting = System.Windows.Forms.SortOrder.Ascending;\r\n            treeListView1.UseCompatibleStateImageBehavior = false;\r\n            treeListView1.View = System.Windows.Forms.View.Details;\r\n            treeListView1.VirtualMode = true;\r\n            treeListView1.ItemChecked += treeListView1_ItemChecked;\r\n            treeListView1.MouseDoubleClick += treeListView1_MouseDoubleClick;\r\n            // \r\n            // olvColumnName\r\n            // \r\n            olvColumnName.AspectName = \"\";\r\n            olvColumnName.FillsFreeSpace = true;\r\n            resources.ApplyResources(olvColumnName, \"olvColumnName\");\r\n            // \r\n            // olvColumnSize\r\n            // \r\n            resources.ApplyResources(olvColumnSize, \"olvColumnSize\");\r\n            // \r\n            // TargetList\r\n            // \r\n            resources.ApplyResources(this, \"$this\");\r\n            AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            Controls.Add(treeListView1);\r\n            Controls.Add(toolStrip1);\r\n            Name = \"TargetList\";\r\n            toolStrip1.ResumeLayout(false);\r\n            toolStrip1.PerformLayout();\r\n            ((System.ComponentModel.ISupportInitialize)treeListView1).EndInit();\r\n            ResumeLayout(false);\r\n            PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private System.Windows.Forms.ToolStrip toolStrip1;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonSelAll;\r\n        private BrightIdeasSoftware.TreeListView treeListView1;\r\n        private BrightIdeasSoftware.OLVColumn olvColumnName;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonExpand;\r\n        private System.Windows.Forms.ToolStripButton toolStripButtonCollapse;\r\n        private BrightIdeasSoftware.OLVColumn olvColumnSize;\r\n        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>تحديد الكل</value>\r\n  </data>\r\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\r\n    <value>توسيع الكل</value>\r\n  </data>\r\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\r\n    <value>طي كل</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>اسم</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>حجم</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.cs",
    "content": "﻿using System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Drawing;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing BrightIdeasSoftware;\r\nusing Klocman.IO;\r\nusing Klocman.Tools;\r\nusing Scripting;\r\nusing UniversalUninstaller.Properties;\r\n\r\nnamespace UniversalUninstaller\r\n{\r\n    public partial class TargetList : UserControl\r\n    {\r\n        static readonly FileSystemObjectClass FileSystemObject;\r\n\r\n        static TargetList()\r\n        {\r\n            try\r\n            {\r\n                FileSystemObject = new FileSystemObjectClass();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Console.WriteLine(@\"WARNING: Scripting.FileSystemObjectClass is not available - \" + ex.Message);\r\n            }\r\n        }\r\n\r\n        public TargetList()\r\n        {\r\n            InitializeComponent();\r\n\r\n            treeListView1.CanExpandGetter = model => ((TreeEntry)model).IsDirectory;\r\n            treeListView1.ChildrenGetter = ChildrenGetter;\r\n\r\n            treeListView1.HierarchicalCheckboxes = false;\r\n            treeListView1.UseWaitCursorWhenExpanding = true;\r\n            treeListView1.PersistentCheckBoxes = false;\r\n\r\n            treeListView1.CellToolTipGetter =\r\n                (column, modelObject) => (modelObject as TreeEntry)?.FileSystemInfo.FullName;\r\n\r\n            treeListView1.BooleanCheckStateGetter = BooleanCheckStateGetter;\r\n            treeListView1.BooleanCheckStatePutter = BooleanCheckStatePutter;\r\n\r\n            olvColumnName.AspectGetter = rowObject => (rowObject as TreeEntry)?.FileSystemInfo.Name;\r\n            olvColumnName.ImageGetter = ImageGetter;\r\n\r\n            olvColumnSize.AspectGetter = SizeGetter;\r\n\r\n            var il = new ImageList { ColorDepth = ColorDepth.Depth24Bit, ImageSize = new Size(16, 16) };\r\n            il.Images.Add(Resources.Folder_48x48);\r\n            il.Images.Add(Resources.Generic_Document);\r\n            il.Images.Add(Resources.Generic_Application);\r\n            treeListView1.SmallImageList = il;\r\n        }\r\n\r\n        private object SizeGetter(object rowObject)\r\n        {\r\n            if (rowObject is not TreeEntry treeEntry)\r\n                return FileSize.Empty;\r\n\r\n            if (treeEntry.IsDirectory == false)\r\n                return FileSize.FromBytes(((FileInfo)treeEntry.FileSystemInfo).Length);\r\n\r\n            if (FileSystemObject == null || treeEntry.FileSystemInfo is not DirectoryInfo dirInfo || !dirInfo.Exists)\r\n                return FileSize.Empty;\r\n\r\n            try\r\n            {\r\n                var folder = FileSystemObject.GetFolder(dirInfo.FullName);\r\n                var size = new FileSize(Convert.ToInt64(folder.Size) / 1024);\r\n                return size;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Console.WriteLine(ex);\r\n                return FileSize.Empty;\r\n            }\r\n        }\r\n\r\n        private object ImageGetter(object rowObject)\r\n        {\r\n            if (rowObject is TreeEntry treeEntry)\r\n            {\r\n                if (treeEntry.IsDirectory)\r\n                    return 0;\r\n\r\n                if (WindowsTools.IsExectuable(treeEntry.FileSystemInfo.FullName, false))\r\n                    return 2;\r\n            }\r\n\r\n            return 1;\r\n        }\r\n\r\n        private IEnumerable ChildrenGetter(object model)\r\n        {\r\n            return (((TreeEntry)model).FileSystemInfo as DirectoryInfo)?.GetFileSystemInfos()\r\n                .Select(x => new TreeEntry(x));\r\n        }\r\n\r\n        private bool BooleanCheckStatePutter(object rowObject, bool value)\r\n        {\r\n            if (value)\r\n            {\r\n                treeListView1.CheckObjects(treeListView1.GetChildren(rowObject));\r\n            }\r\n            else\r\n            {\r\n                if (treeListView1.GetParent(rowObject) is TreeEntry parent && parent.Checked)\r\n                {\r\n                    treeListView1.UncheckObject(parent);\r\n                }\r\n            }\r\n\r\n            return ((TreeEntry)rowObject).Checked = value;\r\n        }\r\n\r\n        private bool BooleanCheckStateGetter(object rowObject)\r\n        {\r\n            return ((TreeEntry)rowObject).Checked;\r\n        }\r\n\r\n        public void Populate(DirectoryInfo rootDirectory)\r\n        {\r\n            treeListView1.ClearObjects();\r\n            var root = new TreeEntry(rootDirectory);\r\n            treeListView1.AddObject(root);\r\n            treeListView1.Expand(root);\r\n\r\n            // If there is no executable in the root, expand the subdirectories to show more info\r\n            var subs = treeListView1.GetChildren(rootDirectory).Cast<TreeEntry>().ToList();\r\n            if (subs.All(x => x.IsDirectory))\r\n            {\r\n                foreach (var dir in subs)\r\n                    treeListView1.Expand(dir);\r\n            }\r\n\r\n            treeListView1.CheckAll();\r\n        }\r\n\r\n        public IEnumerable<FileSystemInfo> GetItemsToDelete()\r\n        {\r\n            return treeListView1.Roots.Cast<TreeEntry>().SelectMany(GetSelectedItems);\r\n        }\r\n\r\n\r\n        public IEnumerable<FileSystemInfo> GetSelectedItems(object modelItem)\r\n        {\r\n            if (modelItem is not TreeEntry treeEntry)\r\n                return Enumerable.Empty<FileSystemInfo>();\r\n\r\n            if (treeEntry.Checked)\r\n                return Enumerable.Repeat(treeEntry.FileSystemInfo, 1);\r\n\r\n            return treeListView1.GetChildren(modelItem).Cast<object>().SelectMany(GetSelectedItems);\r\n        }\r\n\r\n        private void toolStripButtonSelAll_Click(object sender, EventArgs e)\r\n        {\r\n            treeListView1.CheckAll();\r\n        }\r\n\r\n        private void expand_Click(object sender, EventArgs e)\r\n        {\r\n            treeListView1.ExpandAll();\r\n        }\r\n\r\n        private void collapse_Click(object sender, EventArgs e)\r\n        {\r\n            treeListView1.CollapseAll();\r\n        }\r\n\r\n        private void treeListView1_ItemChecked(object sender, ItemCheckedEventArgs e)\r\n        {\r\n            treeListView1.Refresh();\r\n        }\r\n\r\n        private void treeListView1_MouseDoubleClick(object sender, MouseEventArgs e)\r\n        {\r\n            var x = treeListView1.GetItemAt(e.X, e.Y) as OLVListItem;\r\n            if (x?.RowObject is not TreeEntry en) return;\r\n            try\r\n            {\r\n                if (en.IsDirectory)\r\n                {\r\n                    Process.Start(new ProcessStartInfo('\"' + en.FileSystemInfo.FullName + '\"') { UseShellExecute = true });\r\n                }\r\n                else\r\n                {\r\n                    WindowsTools.OpenExplorerFocusedOnObject(en.FileSystemInfo.FullName);\r\n                }\r\n            }\r\n            catch (Exception exception)\r\n            {\r\n                Console.WriteLine(exception);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Vyberte vše</value>\r\n  </data>\r\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\r\n    <value>Rozbalit vše</value>\r\n  </data>\r\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\r\n    <value>Sbalit vše</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Jmeno</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Velikost</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>Alle Auswählen</value>\n  </data>\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\n    <value>Alle Auseinanderklappen</value>\n  </data>\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\n    <value>Alle Zusammenklappen</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>Größe</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Seleccionar todo</value>\r\n  </data>\r\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\r\n    <value>Expandir todo</value>\r\n  </data>\r\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\r\n    <value>Desplegar todo</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nombre</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Tamaño</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Sélectionner tout</value>\r\n  </data>\r\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\r\n    <value>Développer tout</value>\r\n  </data>\r\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\r\n    <value>Réduire tout</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nom</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Taille</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>Összes kijelölése</value>\n  </data>\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\n    <value>Összes kibontása</value>\n  </data>\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\n    <value>Összes bezárása</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Név</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>Méret</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Selezionare tutto</value>\r\n  </data>\r\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\r\n    <value>Espandere tutto</value>\r\n  </data>\r\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\r\n    <value>Comprimere tutto</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nome</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Dimensione</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>すべて選択</value>\n  </data>\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\n    <value>すべてを拡大する</value>\n  </data>\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\n    <value>すべてを折りたたむ</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>名前</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>サイズ</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Alles selecteren</value>\r\n  </data>\r\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\r\n    <value>Alles uitklappen</value>\r\n  </data>\r\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\r\n    <value>Alles inklappen</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Naam</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Grootte</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Zaznacz wszystkie</value>\r\n  </data>\r\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\r\n    <value>Rozwiń wszystkie</value>\r\n  </data>\r\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\r\n    <value>Zwiń wszystkie</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Nazwa</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Rozmiar</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>Selecionar tudo</value>\n  </data>\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\n    <value>Expandir tudo</value>\n  </data>\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\n    <value>Colapsar tudo</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>Tamanho</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>Seleccionar tudo</value>\n  </data>\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\n    <value>Expandir tudo</value>\n  </data>\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\n    <value>Colapsar tudo</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>Tamanho</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!--\r\n    Microsoft ResX Schema\r\n\r\n    Version 2.0\r\n\r\n    The primary goals of this format is to allow a simple XML format\r\n    that is mostly human readable. The generation and parsing of the\r\n    various data types are done through the TypeConverter classes\r\n    associated with the data types.\r\n\r\n    Example:\r\n\r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n\r\n    There are any number of \"resheader\" rows that contain simple\r\n    name/value pairs.\r\n\r\n    Each data row contains a name, and value. The row also contains a\r\n    type or mimetype. Type corresponds to a .NET class that support\r\n    text/value conversion through the TypeConverter architecture.\r\n    Classes that don't support this are serialized and stored with the\r\n    mimetype set.\r\n\r\n    The mimetype is used for serialized objects, and tells the\r\n    ResXResourceReader how to depersist the object. This is currently not\r\n    extensible. For a given mimetype the value must be set accordingly:\r\n\r\n    Note - application/x-microsoft.net.object.binary.base64 is the format\r\n    that the ResXResourceWriter will generate, however the reader can\r\n    read any of the formats listed below.\r\n\r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with\r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array\r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <metadata name=\"toolStrip1.TrayLocation\" type=\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\">\r\n    <value>17, 17</value>\r\n  </metadata>\r\n  <assembly alias=\"System.Drawing\" name=\"System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />\r\n  <data name=\"toolStripButtonSelAll.Image\" type=\"System.Drawing.Bitmap, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n    <value>\r\n        iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r\n        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHrSURBVGhD7ZahSgVREIYXDCZBEBHxAcRiMBiMNpvFF7DZ\r\n        RDD4ACJYfACjQTAIRoNBm0Uf4QaDzaIYDKv/r3vkMMzu3fXMmOaDj13O3Ts/s3vvnK2CIAiCIAiCoSzA\r\n        xZ9TGz7/0RNY1XU9hcMjfMb5Ctcs0AI9vIATcBLeNmv0Ba7DYvIwL28gG2Aj581a7iucg0XIotY+wGlI\r\n        jqB2zR4sRits5Qj/gXkcyS7UrjmFJmjFrdmCNZQ5d5A/ORNkcWrJGnyHMmMEZ6AZMoBawX2CU0nW5597\r\n        CZoiQ6iEj593dgjc8J6grM2f2AY0RwbRHDZxBT/gJhfGkW14Wm2TCaWhhSVSE2mdd3MbdsHvXMO8XtJs\r\n        QmlogYlLKD9jMztQo23Do98TCk9rFkcXtNAE7742Nuk+lLRteGlC8WndQxe04JyuZg5hgk9JuyafUGeQ\r\n        ay7IYC2oq5lj2LbhcS1NqAOY1l3Ig7uCupppM00oTrv8uy7kweOChjTzPaHw517G4a1ZS7qQB/QJ6tNM\r\n        /g6lbYouyJA+QV3NyHco7RoX/hqkNaO9Q+WfJ10oCcqb4VF7h5K1qQulQamZtneo0vq9KQ7CZFptTjWK\r\n        6/fFO8i7/i9akLcuaEHeuqAFeeuCFuStC1qQt0EQBEEQDKOqvgAXhV7oKQ97YAAAAABJRU5ErkJggg==\r\n</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>79, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Select all</value>\r\n  </data>\r\n  <data name=\"toolStripSeparator1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>6, 29</value>\r\n  </data>\r\n  <data name=\"toolStripButtonExpand.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonExpand.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>87, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\r\n    <value>Expand all</value>\r\n  </data>\r\n  <data name=\"toolStripButtonCollapse.ImageTransparentColor\" type=\"System.Drawing.Color, System.Drawing\">\r\n    <value>Magenta</value>\r\n  </data>\r\n  <data name=\"toolStripButtonCollapse.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>93, 26</value>\r\n  </data>\r\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\r\n    <value>Collapse all</value>\r\n  </data>\r\n  <data name=\"toolStrip1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 0</value>\r\n  </data>\r\n  <data name=\"toolStrip1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>503, 29</value>\r\n  </data>\r\n  <assembly alias=\"mscorlib\" name=\"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"toolStrip1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>0</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip1.Name\" xml:space=\"preserve\">\r\n    <value>toolStrip1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStrip1.ZOrder\" xml:space=\"preserve\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Name</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Size</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Width\" type=\"System.Int32, mscorlib\">\r\n    <value>72</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"treeListView1.Dock\" type=\"System.Windows.Forms.DockStyle, System.Windows.Forms\">\r\n    <value>Fill</value>\r\n  </data>\r\n  <data name=\"treeListView1.Location\" type=\"System.Drawing.Point, System.Drawing\">\r\n    <value>0, 29</value>\r\n  </data>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"treeListView1.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"treeListView1.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>503, 336</value>\r\n  </data>\r\n  <data name=\"treeListView1.TabIndex\" type=\"System.Int32, mscorlib\">\r\n    <value>1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;treeListView1.Name\" xml:space=\"preserve\">\r\n    <value>treeListView1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;treeListView1.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.TreeListView, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;treeListView1.Parent\" xml:space=\"preserve\">\r\n    <value>$this</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;treeListView1.ZOrder\" xml:space=\"preserve\">\r\n    <value>0</value>\r\n  </data>\r\n  <metadata name=\"$this.Localizable\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n  <data name=\"$this.AutoScaleDimensions\" type=\"System.Drawing.SizeF, System.Drawing\">\r\n    <value>7, 15</value>\r\n  </data>\r\n  <data name=\"$this.Margin\" type=\"System.Windows.Forms.Padding, System.Windows.Forms\">\r\n    <value>4, 3, 4, 3</value>\r\n  </data>\r\n  <data name=\"$this.Size\" type=\"System.Drawing.Size, System.Drawing\">\r\n    <value>503, 365</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSelAll.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonSelAll</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonSelAll.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator1.Name\" xml:space=\"preserve\">\r\n    <value>toolStripSeparator1</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripSeparator1.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonExpand.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonExpand</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonExpand.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonCollapse.Name\" xml:space=\"preserve\">\r\n    <value>toolStripButtonCollapse</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;toolStripButtonCollapse.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnName.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnName</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnName.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnSize.Name\" xml:space=\"preserve\">\r\n    <value>olvColumnSize</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;olvColumnSize.Type\" xml:space=\"preserve\">\r\n    <value>BrightIdeasSoftware.OLVColumn, ObjectListView, Culture=neutral, PublicKeyToken=null</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Name\" xml:space=\"preserve\">\r\n    <value>TargetList</value>\r\n  </data>\r\n  <data name=\"&gt;&gt;$this.Type\" xml:space=\"preserve\">\r\n    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Выбрать всё</value>\r\n  </data>\r\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\r\n    <value>Развернуть всё</value>\r\n  </data>\r\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\r\n    <value>Свернуть всё</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Имя</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Размер</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\r\n    <value>Izberi vse</value>\r\n  </data>\r\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\r\n    <value>Razširi vse</value>\r\n  </data>\r\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\r\n    <value>Strni vse</value>\r\n  </data>\r\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\r\n    <value>Ime</value>\r\n  </data>\r\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\r\n    <value>Velikost</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>Välj alla</value>\n  </data>\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\n    <value>Expandera alla</value>\n  </data>\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\n    <value>Kollapsa alla</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Namn</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>Storlek</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>Tümünü seç</value>\n  </data>\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\n    <value>Tümünü genişlet</value>\n  </data>\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\n    <value>Tümünü daralt</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Ad</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>Boyut</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>Chọn tất cả</value>\n  </data>\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\n    <value>Mở rộng tất cả</value>\n  </data>\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\n    <value>Thu gọn tất cả</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>Tên</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>Kich thước</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>全选</value>\n  </data>\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\n    <value>全部展开</value>\n  </data>\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\n    <value>全部折叠</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>名称</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>大小</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TargetList.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"toolStripButtonSelAll.Text\" xml:space=\"preserve\">\n    <value>全選</value>\n  </data>\n  <data name=\"toolStripButtonExpand.Text\" xml:space=\"preserve\">\n    <value>全部展開</value>\n  </data>\n  <data name=\"toolStripButtonCollapse.Text\" xml:space=\"preserve\">\n    <value>全部摺疊</value>\n  </data>\n  <data name=\"olvColumnName.Text\" xml:space=\"preserve\">\n    <value>名稱</value>\n  </data>\n  <data name=\"olvColumnSize.Text\" xml:space=\"preserve\">\n    <value>大小</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/TreeEntry.cs",
    "content": "using System;\r\nusing System.IO;\r\n\r\nnamespace UniversalUninstaller\r\n{\r\n    public class TreeEntry\r\n    {\r\n        public TreeEntry(FileSystemInfo fileSystemInfo)\r\n        {\r\n            FileSystemInfo = fileSystemInfo ?? throw new ArgumentNullException(nameof(fileSystemInfo));\r\n            IsDirectory = fileSystemInfo is DirectoryInfo;\r\n            Checked = true;\r\n        }\r\n\r\n        public bool IsDirectory { get; }\r\n        public FileSystemInfo FileSystemInfo { get; }\r\n        public bool Checked { get; set; }\r\n    }\r\n}"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.Designer.cs",
    "content": "﻿namespace UniversalUninstaller\r\n{\r\n    sealed partial class UninstallSelection\r\n    {\r\n        /// <summary>\r\n        /// Required designer variable.\r\n        /// </summary>\r\n        private System.ComponentModel.IContainer components = null;\r\n\r\n        /// <summary>\r\n        /// Clean up any resources being used.\r\n        /// </summary>\r\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\r\n        protected override void Dispose(bool disposing)\r\n        {\r\n            if (disposing && (components != null))\r\n            {\r\n                components.Dispose();\r\n            }\r\n            base.Dispose(disposing);\r\n        }\r\n\r\n        #region Windows Form Designer generated code\r\n\r\n        /// <summary>\r\n        /// Required method for Designer support - do not modify\r\n        /// the contents of this method with the code editor.\r\n        /// </summary>\r\n        private void InitializeComponent()\r\n        {\r\n            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UninstallSelection));\r\n            this.panel1 = new System.Windows.Forms.Panel();\r\n            this.buttonDelete = new System.Windows.Forms.Button();\r\n            this.panel2 = new System.Windows.Forms.Panel();\r\n            this.buttonCancel = new System.Windows.Forms.Button();\r\n            this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();\r\n            this.labelMessage = new System.Windows.Forms.Label();\r\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\r\n            this.targetList1 = new UniversalUninstaller.TargetList();\r\n            this.panel1.SuspendLayout();\r\n            this.flowLayoutPanel1.SuspendLayout();\r\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\r\n            this.SuspendLayout();\r\n            // \r\n            // panel1\r\n            // \r\n            this.panel1.Controls.Add(this.buttonDelete);\r\n            this.panel1.Controls.Add(this.panel2);\r\n            this.panel1.Controls.Add(this.buttonCancel);\r\n            this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;\r\n            this.panel1.Location = new System.Drawing.Point(8, 371);\r\n            this.panel1.Name = \"panel1\";\r\n            this.panel1.Padding = new System.Windows.Forms.Padding(0, 8, 0, 0);\r\n            this.panel1.Size = new System.Drawing.Size(442, 36);\r\n            this.panel1.TabIndex = 1;\r\n            // \r\n            // buttonDelete\r\n            // \r\n            this.buttonDelete.AutoSize = true;\r\n            this.buttonDelete.Dock = System.Windows.Forms.DockStyle.Right;\r\n            this.buttonDelete.Location = new System.Drawing.Point(284, 8);\r\n            this.buttonDelete.Name = \"buttonDelete\";\r\n            this.buttonDelete.Size = new System.Drawing.Size(75, 28);\r\n            this.buttonDelete.TabIndex = 1;\r\n            this.buttonDelete.Text = \"Delete\";\r\n            this.buttonDelete.UseVisualStyleBackColor = true;\r\n            this.buttonDelete.Click += new System.EventHandler(this.buttonDelete_Click);\r\n            // \r\n            // panel2\r\n            // \r\n            this.panel2.Dock = System.Windows.Forms.DockStyle.Right;\r\n            this.panel2.Location = new System.Drawing.Point(359, 8);\r\n            this.panel2.Name = \"panel2\";\r\n            this.panel2.Size = new System.Drawing.Size(8, 28);\r\n            this.panel2.TabIndex = 2;\r\n            // \r\n            // buttonCancel\r\n            // \r\n            this.buttonCancel.AutoSize = true;\r\n            this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;\r\n            this.buttonCancel.Dock = System.Windows.Forms.DockStyle.Right;\r\n            this.buttonCancel.Location = new System.Drawing.Point(367, 8);\r\n            this.buttonCancel.Name = \"buttonCancel\";\r\n            this.buttonCancel.Size = new System.Drawing.Size(75, 28);\r\n            this.buttonCancel.TabIndex = 0;\r\n            this.buttonCancel.Text = \"Cancel\";\r\n            this.buttonCancel.UseVisualStyleBackColor = true;\r\n            this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);\r\n            // \r\n            // flowLayoutPanel1\r\n            // \r\n            this.flowLayoutPanel1.AutoSize = true;\r\n            this.flowLayoutPanel1.Controls.Add(this.labelMessage);\r\n            this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;\r\n            this.flowLayoutPanel1.Location = new System.Drawing.Point(8, 8);\r\n            this.flowLayoutPanel1.MinimumSize = new System.Drawing.Size(0, 37);\r\n            this.flowLayoutPanel1.Name = \"flowLayoutPanel1\";\r\n            this.flowLayoutPanel1.Padding = new System.Windows.Forms.Padding(40, 0, 0, 8);\r\n            this.flowLayoutPanel1.Size = new System.Drawing.Size(442, 47);\r\n            this.flowLayoutPanel1.TabIndex = 2;\r\n            // \r\n            // labelMessage\r\n            // \r\n            this.labelMessage.AutoSize = true;\r\n            this.labelMessage.Location = new System.Drawing.Point(43, 0);\r\n            this.labelMessage.Name = \"labelMessage\";\r\n            this.labelMessage.Size = new System.Drawing.Size(393, 39);\r\n            this.labelMessage.TabIndex = 0;\r\n            this.labelMessage.Text = resources.GetString(\"labelMessage.Text\");\r\n            // \r\n            // pictureBox1\r\n            // \r\n            this.pictureBox1.Image = global::UniversalUninstaller.Properties.Resources.icon;\r\n            this.pictureBox1.Location = new System.Drawing.Point(8, 8);\r\n            this.pictureBox1.Name = \"pictureBox1\";\r\n            this.pictureBox1.Size = new System.Drawing.Size(40, 40);\r\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;\r\n            this.pictureBox1.TabIndex = 1;\r\n            this.pictureBox1.TabStop = false;\r\n            // \r\n            // targetList1\r\n            // \r\n            this.targetList1.Dock = System.Windows.Forms.DockStyle.Fill;\r\n            this.targetList1.Location = new System.Drawing.Point(8, 55);\r\n            this.targetList1.Name = \"targetList1\";\r\n            this.targetList1.Size = new System.Drawing.Size(442, 316);\r\n            this.targetList1.TabIndex = 0;\r\n            // \r\n            // UninstallSelection\r\n            // \r\n            this.AcceptButton = this.buttonDelete;\r\n            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r\n            this.CancelButton = this.buttonCancel;\r\n            this.ClientSize = new System.Drawing.Size(458, 415);\r\n            this.Controls.Add(this.pictureBox1);\r\n            this.Controls.Add(this.targetList1);\r\n            this.Controls.Add(this.flowLayoutPanel1);\r\n            this.Controls.Add(this.panel1);\r\n            this.Name = \"UninstallSelection\";\r\n            this.Padding = new System.Windows.Forms.Padding(8);\r\n            this.panel1.ResumeLayout(false);\r\n            this.panel1.PerformLayout();\r\n            this.flowLayoutPanel1.ResumeLayout(false);\r\n            this.flowLayoutPanel1.PerformLayout();\r\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\r\n            this.ResumeLayout(false);\r\n            this.PerformLayout();\r\n\r\n        }\r\n\r\n        #endregion\r\n\r\n        private TargetList targetList1;\r\n        private System.Windows.Forms.Panel panel1;\r\n        private System.Windows.Forms.Button buttonDelete;\r\n        private System.Windows.Forms.Panel panel2;\r\n        private System.Windows.Forms.Button buttonCancel;\r\n        private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;\r\n        private System.Windows.Forms.Label labelMessage;\r\n        private System.Windows.Forms.PictureBox pictureBox1;\r\n    }\r\n}\r\n\r\n"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\r\n    <value>الرجاء تحديد الملفات التي يجب ازالتها. يمكنك النقر نقرا مزدوجا فوق اي مادة لمشاهدتها في المستكشف. لمشاهده المسار الكامل ، قم بالمرور فوق اي من المواد. تحذير: حذف الملفات التي تعرفها غير مطلوبه فقط.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.cs",
    "content": "﻿using System;\r\nusing System.Drawing;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Windows.Forms;\r\nusing Klocman.Forms;\r\nusing Klocman.Tools;\r\nusing UniversalUninstaller.Properties;\r\n\r\nnamespace UniversalUninstaller\r\n{\r\n    public sealed partial class UninstallSelection : Form\r\n    {\r\n        public UninstallSelection(DirectoryInfo target)\r\n        {\r\n            InitializeComponent();\r\n            targetList1.Populate(target);\r\n\r\n            try\r\n            {\r\n                Icon = ProcessTools.GetIconFromEntryExe();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                /* Fall back to a low quality icon */\r\n                var handle = Resources.icon.GetHicon();\r\n                Icon = Icon.FromHandle(handle);\r\n\r\n                Console.WriteLine(ex);\r\n                Klocman.LogWriter.WriteMessageToLog(ex.ToString());\r\n            }\r\n\r\n            Text = string.Format(Localisation.UninstallSelection_Title, target.Name);\r\n        }\r\n\r\n        private void buttonDelete_Click(object sender, EventArgs e)\r\n        {\r\n            var ex = LoadingDialog.ShowDialog(this, Localisation.UninstallSelection_DeleteProgress_Title,\r\n                _ => Program.DeleteItems(targetList1.GetItemsToDelete().ToList()));\r\n\r\n            if (ex != null)\r\n            {\r\n                Console.WriteLine(ex);\r\n                MessageBox.Show(ex.ToString(), Localisation.UninstallSelection_DeleteProgress_FailedTitle,\r\n                    MessageBoxButtons.OK, MessageBoxIcon.Error);\r\n\r\n                DeleteFailed = true;\r\n            }\r\n\r\n            Close();\r\n        }\r\n\r\n        public bool WasCancelled { get; private set; }\r\n        public bool DeleteFailed { get; private set; }\r\n\r\n        private void buttonCancel_Click(object sender, EventArgs e)\r\n        {\r\n            WasCancelled = true;\r\n            Close();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\r\n    <value>Vyberte, které soubory mají být odebrány. Můžete poklepat na libovolnou položku pro zobrazení v Průzkumníku. Chcete-li zobrazit úplnou cestu, umístěte ukazatel myši na některou z položek. Upozornění: odstraňte pouze soubory, které znáte, a nejsou potřeba.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\n    <value>Bitte wählen Sie, welche Dateien entfernt werden sollen. Sie können auf ein beliebiges Objekt doppelklicken, um es im Explorer anzuzeigen. Um den vollständigen Pfad anzuzeigen, bewegen Sie den Mauszeiger über eines der Elemente. Warnung: Löschen Sie nur Dateien, von denen Sie wissen, dass sie nicht benötigt werden.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\r\n    <value>Seleccione los archivos que desea eliminar. Puede hacer doble clic en cualquier elemento para verlo en el explorador. Para ver la ruta completa, coloque el cursor sobre cualquiera de los elementos. Advertencia: elimine sólo los archivos que sabe que no son necesarios.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\r\n    <value>Veuillez sélectionner quels fichiers devraient être supprimés. Vous pouvez double-cliquer sur tout élément pour le voir dans l'explorateur. Pour voir le chemin complet, survolez un des éléments. Attention: supprimez seulement les fichiers que vous savez inutiles.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\n    <value>Kérjük, válassza ki, hogy melyik fájlokat kívánja eltávolítani. Bármely elemre duplán kattintva megtekintheti azokat az intézőben. A teljes elérési útvonal megtekintéséhez mozgassa az egérmutatót bármelyik elem fölé. Figyelmeztetés: Csak olyan fájlokat töröljön, amelyekről tudja, hogy nincs rájuk szükség.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\r\n    <value>Seleziona gli archivi che possono essere rimossi. Puoi fare un doppio click su qualunque oggetto per visualizzarlo in explorer. Per vedere il percorso completo  ferma il mouse su un elemento. Attenzione: cancella solo i files che sicuramente non servono.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\n    <value>削除するファイルを選択してください。\n\nアイテムをダブルクリックすると、エクスプローラーで表示できます。\n\nフルパスを確認するには、アイテムにカーソルを合わせてください。\n\n警告: 必要ないことがわかっているファイルのみを削除してください。\n</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\r\n    <value>Selecteer welke bestanden moeten worden verwijderd. U kunt dubbelklikken op elk item om deze te zien in de verkenner. Om het volledige pad te zien, zweeft u boven ieder van de items.\r\nWaarschuwing: Verwijder alleen bestanden waarvan u weet dat deze niet nodig zijn.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\r\n    <value>Wybierz pliki, które powinny zostać usunięte. Możesz kliknąć dwukrotnie dowolny element aby zobaczyć go w eksploratorze. Aby wyświetlić pełną ścieżkę umieść wskaźnik myszy nad elementem. Uwaga: usuń tylko te pliki, które wiesz że nie są potrzebne.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.pt-BR.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\r\n    <value>Selecione quais arquivos devem ser removidos. Você pode clicar duas vezes em qualquer item para vê-lo no explorador. Para ver o caminho completo, passe o mouse sobre qualquer um dos itens. Aviso: exclua apenas os arquivos que você sabe que não são necessários.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\r\n    <value>Seleccione os arquivos que quer remover. Faça duplo clique em qualquer item para o ver no explorador. Para ver o caminho completo, passe o rato sobre qualquer um dos itens. Aviso: exclua apenas os arquivos que tem a certeza de que não são necessários.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\r\n    <value>Please select which files should be removed. You can double-click on any item to see it in explorer. To see the full path, hover over any of the items. Warning: Delete only files that you know are not needed.</value>\r\n  </data>\r\n  <metadata name=\"$this.Locked\" type=\"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">\r\n    <value>True</value>\r\n  </metadata>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\r\n    <value>Выберите, какие файлы следует удалить. Вы можете дважды щёлкнуть по любому элементу, чтобы увидеть его в проводнике. Чтобы увидеть полный путь, наведите указатель мыши на любой из элементов. Предупреждение: Удаляйте только те файлы, про которые Вам точно известно, что они не требуются.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.sl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\r\n    <value>Izberite datoteke, ki jih je treba odstraniti. Dvokliknete lahko katerikoli vnos, da ga lahko vidite v Raziskovalcu. Če si želite ogledati celotno pot, pomaknite se nad katero koli vnos. Opozorilo: Izbrišite samo datoteke za katere veste, da niso potrebne.</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.sv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\n    <value>Vänligen välj vilka filer som ska tas bort. Du kan dubbelklicka på ett objekt för att se det i Utforskaren. För att se hela sökvägen, håll muspekaren över något av objekten. Varning: Radera endast filer som du vet inte behövs.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\n    <value>Lütfen hangi dosyaların kaldırılacağını seçin. Kaşifte görmek için herhangi bir öğeye çift tıklayabilirsiniz. Tam yolu görmek için, öğelerin herhangi birinin üzerine gelin. Uyarı: Yalnızca gerekli olmadığını bildiğiniz dosyaları silin.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\n    <value>Vui lòng chọn các tệp tin bạn muốn xóa. Bạn có thể nhấp đúp vào bất kỳ mục nào để xem chúng trong File Explorer. Để xem đường dẫn đầy đủ, hãy di chuột qua bất kỳ mục nào.\nCảnh báo: Chỉ xóa những tệp mà bạn cho là không cần thiết.</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.zh-Hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\n    <value>请选择要删除的文件。你可以双击项目以在资源管理器中查看它。要查看完整路径，请将鼠标悬停在项目上。警告：只删除你知道不需要的文件。</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UninstallSelection.zh-Hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"labelMessage.Text\" xml:space=\"preserve\">\n    <value>請選擇要刪除的文件。你可以雙擊項目以從檔案總管中查看它。要查看完整路徑，請將滑鼠停在項目上。警告：只刪除你知道且不需要的檔案。</value>\n  </data>\n</root>"
  },
  {
    "path": "source/UniversalUninstaller/UniversalUninstaller.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\t<PropertyGroup>\r\n\t\t<OutputType>WinExe</OutputType>\r\n\r\n\t\t<AssemblyTitle>Utility used by BCU in place of missing/broken uninstallers to remove applications</AssemblyTitle>\r\n\r\n\t\t<ApplicationIcon>UniversalUninstaller.ico</ApplicationIcon>\r\n\t\t<StartupObject>UniversalUninstaller.Program</StartupObject>\r\n\t</PropertyGroup>\r\n\t\r\n\t<ItemGroup>\r\n\t\t<ProjectReference Include=\"..\\KlocTools\\KlocTools.csproj\" />\r\n\t\t<ProjectReference Include=\"..\\ObjectListView\\ObjectListView.csproj\" />\r\n\t</ItemGroup>\r\n\r\n\t<ItemGroup>\r\n\t\t<COMReference Include=\"Scripting\">\r\n\t\t\t<Guid>{420B2830-E718-11CF-893D-00A0C9054228}</Guid>\r\n\t\t\t<VersionMajor>1</VersionMajor>\r\n\t\t\t<VersionMinor>0</VersionMinor>\r\n\t\t\t<Lcid>0</Lcid>\r\n\t\t\t<WrapperTool>tlbimp</WrapperTool>\r\n\t\t\t<Isolated>False</Isolated>\r\n\t\t\t<EmbedInteropTypes>false</EmbedInteropTypes>\r\n\t\t</COMReference>\r\n\t</ItemGroup>\r\n\r\n\t<ItemGroup>\r\n\t  <Compile Update=\"Properties\\Localisation.Designer.cs\">\r\n\t    <DesignTime>True</DesignTime>\r\n\t    <AutoGen>True</AutoGen>\r\n\t    <DependentUpon>Localisation.resx</DependentUpon>\r\n\t  </Compile>\r\n\t  <Compile Update=\"Properties\\Resources.Designer.cs\">\r\n\t    <DesignTime>True</DesignTime>\r\n\t    <AutoGen>True</AutoGen>\r\n\t    <DependentUpon>Resources.resx</DependentUpon>\r\n\t  </Compile>\r\n\t</ItemGroup>\r\n\r\n\t<ItemGroup>\r\n\t  <EmbeddedResource Update=\"Properties\\Localisation.resx\">\r\n\t    <Generator>ResXFileCodeGenerator</Generator>\r\n\t    <LastGenOutput>Localisation.Designer.cs</LastGenOutput>\r\n\t  </EmbeddedResource>\r\n\t  <EmbeddedResource Update=\"Properties\\Resources.resx\">\r\n\t    <Generator>ResXFileCodeGenerator</Generator>\r\n\t    <LastGenOutput>Resources.Designer.cs</LastGenOutput>\r\n\t  </EmbeddedResource>\r\n\t</ItemGroup>\r\n</Project>"
  },
  {
    "path": "source/WinUpdateHelper/Hresult.cs",
    "content": "/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\n\r\nnamespace WinUpdateHelper\r\n{\r\n    /* Parse ms help pages:\r\n     * const string path = @\"d:\\hres\";\r\n     * var f = File.ReadAllLines(path);\r\n     * var i = 0;\r\n     * var result = new List<string>();\r\n     * while (i < f.Length)\r\n     *     result.Add(\"case \" + f[i++] + \": return \\\"\" + f[i++] + \" - \" + f[i++] + \"\\\";\");\r\n     * File.WriteAllLines(path + \"_out\", result);\r\n     */\r\n    internal static class Hresult\r\n    {\r\n        public static string ConvertHresultToDetails(int errorCode)\r\n        {\r\n            switch ((uint)errorCode)\r\n            {\r\n                case 0x240001: return \"WU_S_SERVICE_STOP - Windows Update Agent was stopped successfully.\";\r\n                case 0x240002: return \"WU_S_SELFUPDATE - Windows Update Agent updated itself.\";\r\n                case 0x240003: return \"WU_S_UPDATE_ERROR - Operation completed successfully but there were errors applying the updates..\";\r\n                case 0x240004: return \"WU_S_MARKED_FOR_DISCONNECT - A callback was marked to be disconnected later because the request to disconnect the operation came while a callback was executing.\";\r\n                case 0x240005: return \"WU_S_REBOOT_REQUIRED - The system must be restarted to complete installation of the update.\";\r\n                case 0x240006: return \"WU_S_ALREADY_INSTALLED - The update to be installed is already installed on the system.\";\r\n                case 0x240007: return \"WU_S_ALREADY_UNINSTALLED - The update to be removed is not installed on the system.\";\r\n                case 0x240008: return \"WU_S_ALREADY_DOWNLOADED - The update to be downloaded has already been downloaded.\";\r\n                case 0x80240001: return \"WU_E_NO_SERVICE - Windows Update Agent was unable to provide the service.\";\r\n                case 0x80240002: return \"WU_E_MAX_CAPACITY_REACHED - The maximum capacity of the service was exceeded.\";\r\n                case 0x80240003: return \"WU_E_UNKNOWN_ID - An ID cannot be found.\";\r\n                case 0x80240004: return \"WU_E_NOT_INITIALIZED - The object could not be initialized.\";\r\n                case 0x80240005: return \"WU_E_RANGEOVERLAP - The update handler requested a byte range overlapping a previously requested range.\";\r\n                case 0x80240006: return \"WU_E_TOOMANYRANGES - The requested number of byte ranges exceeds the maximum number (2^31 - 1).\";\r\n                case 0x80240007: return \"WU_E_INVALIDINDEX - The index to a collection was invalid.\";\r\n                case 0x80240008: return \"WU_E_ITEMNOTFOUND - The key for the item queried could not be found.\";\r\n                case 0x80240009: return \"WU_E_OPERATIONINPROGRESS - Another conflicting operation was in progress. Some operations such as installation cannot be performed twice simultaneously.\";\r\n                case 0x8024000A: return \"WU_E_COULDNOTCANCEL - Cancellation of the operation was not allowed.\";\r\n                case 0x8024000B: return \"WU_E_CALL_CANCELLED - Operation was cancelled.\";\r\n                case 0x8024000C: return \"WU_E_NOOP - No operation was required.\";\r\n                case 0x8024000D: return \"WU_E_XML_MISSINGDATA - Windows Update Agent could not find required information in the update's XML data.\";\r\n                case 0x8024000E: return \"WU_E_XML_INVALID - Windows Update Agent found invalid information in the update's XML data.\";\r\n                case 0x8024000F: return \"WU_E_CYCLE_DETECTED - Circular update relationships were detected in the metadata.\";\r\n                case 0x80240010: return \"WU_E_TOO_DEEP_RELATION - Update relationships too deep to evaluate were evaluated.\";\r\n                case 0x80240011: return \"WU_E_INVALID_RELATIONSHIP - An invalid update relationship was detected.\";\r\n                case 0x80240012: return \"WU_E_REG_VALUE_INVALID - An invalid registry value was read.\";\r\n                case 0x80240013: return \"WU_E_DUPLICATE_ITEM - Operation tried to add a duplicate item to a list.\";\r\n                case 0x80240016: return \"WU_E_INSTALL_NOT_ALLOWED - Operation tried to install while another installation was in progress or the system was pending a mandatory restart.\";\r\n                case 0x80240017: return \"WU_E_NOT_APPLICABLE - Operation was not performed because there are no applicable updates.\";\r\n                case 0x80240018: return \"WU_E_NO_USERTOKEN - Operation failed because a required user token is missing.\";\r\n                case 0x80240019: return \"WU_E_EXCLUSIVE_INSTALL_CONFLICT - An exclusive update cannot be installed with other updates at the same time.\";\r\n                case 0x8024001A: return \"WU_E_POLICY_NOT_SET - A policy value was not set.\";\r\n                case 0x8024001B: return \"WU_E_SELFUPDATE_IN_PROGRESS - The operation could not be performed because the Windows Update Agent is self-updating.\";\r\n                case 0x8024001D: return \"WU_E_INVALID_UPDATE - An update contains invalid metadata.\";\r\n                case 0x8024001E: return \"WU_E_SERVICE_STOP - Operation did not complete because the service or system was being shut down.\";\r\n                case 0x8024001F: return \"WU_E_NO_CONNECTION - Operation did not complete because the network connection was unavailable.\";\r\n                case 0x80240020: return \"WU_E_NO_INTERACTIVE_USER - Operation did not complete because there is no logged-on interactive user.\";\r\n                case 0x80240021: return \"WU_E_TIME_OUT - Operation did not complete because it timed out.\";\r\n                case 0x80240022: return \"WU_E_ALL_UPDATES_FAILED - Operation failed for all the updates.\";\r\n                case 0x80240023: return \"WU_E_EULAS_DECLINED - The license terms for all updates were declined.\";\r\n                case 0x80240024: return \"WU_E_NO_UPDATE - There are no updates.\";\r\n                case 0x80240025: return \"WU_E_USER_ACCESS_DISABLED - Group Policy settings prevented access to Windows Update.\";\r\n                case 0x80240026: return \"WU_E_INVALID_UPDATE_TYPE - The type of update is invalid.\";\r\n                case 0x80240027: return \"WU_E_URL_TOO_LONG - The URL exceeded the maximum length.\";\r\n                case 0x80240028: return \"WU_E_UNINSTALL_NOT_ALLOWED - The update could not be uninstalled because the request did not originate from a WSUS server.\";\r\n                case 0x80240029: return \"WU_E_INVALID_PRODUCT_LICENSE - Search may have missed some updates before there is an unlicensed application on the system.\";\r\n                case 0x8024002A: return \"WU_E_MISSING_HANDLER - A component required to detect applicable updates was missing.\";\r\n                case 0x8024002B: return \"WU_E_LEGACYSERVER - An operation did not complete because it requires a newer version of server.\";\r\n                case 0x8024002C: return \"WU_E_BIN_SOURCE_ABSENT - A delta-compressed update could not be installed because it required the source.\";\r\n                case 0x8024002D: return \"WU_E_SOURCE_ABSENT - A full-file update could not be installed because it required the source.\";\r\n                case 0x8024002E: return \"WU_E_WU_DISABLED - Access to an unmanaged server is not allowed.\";\r\n                case 0x8024002F: return \"WU_E_CALL_CANCELLED_BY_POLICY - Operation did not complete because the DisableWindowsUpdateAccess policy was set.\";\r\n                case 0x80240030: return \"WU_E_INVALID_PROXY_SERVER - The format of the proxy list was invalid.\";\r\n                case 0x80240031: return \"WU_E_INVALID_FILE - The file is in the wrong format.\";\r\n                case 0x80240032: return \"WU_E_INVALID_CRITERIA - The search criteria string was invalid.\";\r\n                case 0x80240033: return \"WU_E_EULA_UNAVAILABLE - License terms could not be downloaded.\";\r\n                case 0x80240034: return \"WU_E_DOWNLOAD_FAILED - Update failed to download.\";\r\n                case 0x80240035: return \"WU_E_UPDATE_NOT_PROCESSED - The update was not processed.\";\r\n                case 0x80240036: return \"WU_E_INVALID_OPERATION - The object's current state did not allow the operation.\";\r\n                case 0x80240037: return \"WU_E_NOT_SUPPORTED - The functionality for the operation is not supported.\";\r\n                case 0x80240038: return \"WU_E_WINHTTP_INVALID_FILE - The downloaded file has an unexpected content type.\";\r\n                case 0x80240039: return \"WU_E_TOO_MANY_RESYNC - Agent is asked by server to resync too many times.\";\r\n                case 0x80240040: return \"WU_E_NO_SERVER_CORE_SUPPORT - WUA API method does not run on Server Core installation.\";\r\n                case 0x80240041: return \"WU_E_SYSPREP_IN_PROGRESS - Service is not available while sysprep is running.\";\r\n                case 0x80240042: return \"WU_E_UNKNOWN_SERVICE - The update service is no longer registered with AU.\";\r\n                case 0x80240FFF: return \"WU_E_UNEXPECTED - An operation failed due to reasons not covered by another error code.\";\r\n                case 0x80241001: return \"WU_E_MSI_WRONG_VERSION - Search may have missed some updates because the Windows Installer is less than version 3.1.\";\r\n                case 0x80241002: return \"WU_E_MSI_NOT_CONFIGURED - Search may have missed some updates because the Windows Installer is not configured.\";\r\n                case 0x80241003: return \"WU_E_MSP_DISABLED - Search may have missed some updates because policy has disabled Windows Installer patching.\";\r\n                case 0x80241004: return \"WU_E_MSI_WRONG_APP_CONTEXT - An update could not be applied because the application is installed per-user.\";\r\n                case 0x80241FFF: return \"WU_E_MSP_UNEXPECTED - Search may have missed some updates because there was a failure of the Windows Installer.\";\r\n                case 0x80242000: return \"WU_E_UH_REMOTEUNAVAILABLE - A request for a remote update handler could not be completed because no remote process is available.\";\r\n                case 0x80242001: return \"WU_E_UH_LOCALONLY - A request for a remote update handler could not be completed because the handler is local only.\";\r\n                case 0x80242002: return \"WU_E_UH_UNKNOWNHANDLER - A request for an update handler could not be completed because the handler could not be recognized.\";\r\n                case 0x80242003: return \"WU_E_UH_REMOTEALREADYACTIVE - A remote update handler could not be created because one already exists.\";\r\n                case 0x80242004: return \"WU_E_UH_DOESNOTSUPPORTACTION - A request for the handler to install (uninstall) an update could not be completed because the update does not support install (uninstall).\";\r\n                case 0x80242005: return \"WU_E_UH_WRONGHANDLER - An operation did not complete because the wrong handler was specified.\";\r\n                case 0x80242006: return \"WU_E_UH_INVALIDMETADATA - A handler operation could not be completed because the update contains invalid metadata.\";\r\n                case 0x80242007: return \"WU_E_UH_INSTALLERHUNG - An operation could not be completed because the installer exceeded the time limit.\";\r\n                case 0x80242008: return \"WU_E_UH_OPERATIONCANCELLED - An operation being done by the update handler was cancelled.\";\r\n                case 0x80242009: return \"WU_E_UH_BADHANDLERXML - An operation could not be completed because the handler-specific metadata is invalid.\";\r\n                case 0x8024200A: return \"WU_E_UH_CANREQUIREINPUT - A request to the handler to install an update could not be completed because the update requires user input.\";\r\n                case 0x8024200B: return \"WU_E_UH_INSTALLERFAILURE - The installer failed to install (uninstall) one or more updates.\";\r\n                case 0x8024200C: return \"WU_E_UH_FALLBACKTOSELFCONTAINED - The update handler should download self-contained content rather than delta-compressed content for the update.\";\r\n                case 0x8024200D: return \"WU_E_UH_NEEDANOTHERDOWNLOAD - The update handler did not install the update because it needs to be downloaded again.\";\r\n                case 0x8024200E: return \"WU_E_UH_NOTIFYFAILURE - The update handler failed to send notification of the status of the install (uninstall) operation.\";\r\n                case 0x8024200F: return \"WU_E_UH_INCONSISTENT_FILE_NAMES - The file names contained in the update metadata and in the update package are inconsistent.\";\r\n                case 0x80242010: return \"WU_E_UH_FALLBACKERROR - The update handler failed to fall back to the self-contained content.\";\r\n                case 0x80242011: return \"WU_E_UH_TOOMANYDOWNLOADREQUESTS - The update handler has exceeded the maximum number of download requests.\";\r\n                case 0x80242012: return \"WU_E_UH_UNEXPECTEDCBSRESPONSE - The update handler has received an unexpected response from CBS.\";\r\n                case 0x80242013: return \"WU_E_UH_BADCBSPACKAGEID - The update metadata contains an invalid CBS package identifier.\";\r\n                case 0x80242014: return \"WU_E_UH_POSTREBOOTSTILLPENDING - he post-reboot operation for the update is still in progress.\";\r\n                case 0x80242015: return \"WU_E_UH_POSTREBOOTRESULTUNKNOWN - The result of the post-reboot operation for the update could not be determined.\";\r\n                case 0x80242016: return \"WU_E_UH_POSTREBOOTUNEXPECTEDSTATE - The state of the update after its post-reboot operation has completed is unexpected.\";\r\n                case 0x80242017: return \"WU_E_UH_NEW_SERVICING_STACK_REQUIRED - The operating system servicing stack must be updated before this update is downloaded or installed.\";\r\n                case 0x80242FFF: return \"WU_E_UH_UNEXPECTED - An update handler error not covered by another WU_E_UH_* code.\";\r\n                case 0x80243001: return \"WU_E_INSTALLATION_RESULTS_UNKNOWN_VERSION - The results of download and installation could not be read from the registry due to an unrecognized data format version.\";\r\n                case 0x80243002: return \"WU_E_INSTALLATION_RESULTS_INVALID_DATA - The results of download and installation could not be read from the registry due to an invalid data format.\";\r\n                case 0x80243003: return \"WU_E_INSTALLATION_RESULTS_NOT_FOUND - The results of download and installation are not available; the operation may have failed to start.\";\r\n                case 0x80243004: return \"WU_E_TRAYICON_FAILURE - A failure occurred when trying to create an icon in the taskbar notification area.\";\r\n                case 0x80243FFD: return \"WU_E_NON_UI_MODE - Unable to show UI when in non-UI mode; WU client UI modules may not be installed.\";\r\n                case 0x80243FFE: return \"WU_E_WUCLTUI_UNSUPPORTED_VERSION - Unsupported version of WU client UI exported functions.\";\r\n                case 0x80243FFF: return \"WU_E_AUCLIENT_UNEXPECTED - There was a user interface error not covered by another WU_E_AUCLIENT_* error code.\";\r\n                case 0x80244000: return \"WU_E_PT_SOAPCLIENT_BASE - WU_E_PT_SOAPCLIENT_* error codes map to the SOAPCLIENT_ERROR enum of the ATL Server Library.\";\r\n                case 0x80244001: return \"WU_E_PT_SOAPCLIENT_INITIALIZE - SOAPCLIENT_INITIALIZE_ERROR - initialization of the SOAP client failed, possibly because of an MSXML installation failure.\";\r\n                case 0x80244002: return \"WU_E_PT_SOAPCLIENT_OUTOFMEMORY - SOAPCLIENT_OUTOFMEMORY - SOAP client failed because it ran out of memory.\";\r\n                case 0x80244003: return \"WU_E_PT_SOAPCLIENT_GENERATE - SOAPCLIENT_GENERATE_ERROR - SOAP client failed to generate the request.\";\r\n                case 0x80244004: return \"WU_E_PT_SOAPCLIENT_CONNECT - SOAPCLIENT_CONNECT_ERROR - SOAP client failed to connect to the server.\";\r\n                case 0x80244005: return \"WU_E_PT_SOAPCLIENT_SEND - SOAPCLIENT_SEND_ERROR - SOAP client failed to send a message for reasons of WU_E_WINHTTP_* error codes.\";\r\n                case 0x80244006: return \"WU_E_PT_SOAPCLIENT_SERVER - SOAPCLIENT_SERVER_ERROR - SOAP client failed because there was a server error.\";\r\n                case 0x80244007: return \"WU_E_PT_SOAPCLIENT_SOAPFAULT - SOAPCLIENT_SOAPFAULT - SOAP client failed because there was a SOAP fault for reasons of WU_E_PT_SOAP_* error codes.\";\r\n                case 0x80244008: return \"WU_E_PT_SOAPCLIENT_PARSEFAULT - SOAPCLIENT_PARSEFAULT_ERROR - SOAP client failed to parse a SOAP fault.\";\r\n                case 0x80244009: return \"WU_E_PT_SOAPCLIENT_READ - SOAPCLIENT_READ_ERROR - SOAP client failed while reading the response from the server.\";\r\n                case 0x8024400A: return \"WU_E_PT_SOAPCLIENT_PARSE - SOAPCLIENT_PARSE_ERROR - SOAP client failed to parse the response from the server.\";\r\n                case 0x8024400B: return \"WU_E_PT_SOAP_VERSION - SOAP_E_VERSION_MISMATCH - SOAP client found an unrecognizable namespace for the SOAP envelope.\";\r\n                case 0x8024400C: return \"WU_E_PT_SOAP_MUST_UNDERSTAND - SOAP_E_MUST_UNDERSTAND - SOAP client was unable to understand a header.\";\r\n                case 0x8024400D: return \"WU_E_PT_SOAP_CLIENT - SOAP_E_CLIENT - SOAP client found the message was malformed; fix before resending.\";\r\n                case 0x8024400E: return \"WU_E_PT_SOAP_SERVER - SOAP_E_SERVER - The SOAP message could not be processed due to a server error; resend later.\";\r\n                case 0x8024400F: return \"WU_E_PT_WMI_ERROR - There was an unspecified Windows Management Instrumentation (WMI) error.\";\r\n                case 0x80244010: return \"WU_E_PT_EXCEEDED_MAX_SERVER_TRIPS - The number of round trips to the server exceeded the maximum limit.\";\r\n                case 0x80244011: return \"WU_E_PT_SUS_SERVER_NOT_SET - WUServer policy value is missing in the registry.\";\r\n                case 0x80244012: return \"WU_E_PT_DOUBLE_INITIALIZATION - Initialization failed because the object was already initialized.\";\r\n                case 0x80244013: return \"WU_E_PT_INVALID_COMPUTER_NAME - The computer name could not be determined.\";\r\n                case 0x80244015: return \"WU_E_PT_REFRESH_CACHE_REQUIRED - The reply from the server indicates that the server was changed or the cookie was invalid; refresh the state of the internal cache and retry.\";\r\n                case 0x80244016: return \"WU_E_PT_HTTP_STATUS_BAD_REQUEST - HTTP 400 - the server could not process the request due to invalid syntax.\";\r\n                case 0x80244017: return \"WU_E_PT_HTTP_STATUS_DENIED - HTTP 401 - the requested resource requires user authentication.\";\r\n                case 0x80244018: return \"WU_E_PT_HTTP_STATUS_FORBIDDEN - HTTP 403 - server understood the request, but declined to fulfill it.\";\r\n                case 0x80244019: return \"WU_E_PT_HTTP_STATUS_NOT_FOUND - HTTP 404 - the server cannot find the requested URI (Uniform Resource Identifier).\";\r\n                case 0x8024401A: return \"WU_E_PT_HTTP_STATUS_BAD_METHOD - HTTP 405 - the HTTP method is not allowed.\";\r\n                case 0x8024401B: return \"WU_E_PT_HTTP_STATUS_PROXY_AUTH_REQ - HTTP 407 - proxy authentication is required.\";\r\n                case 0x8024401C: return \"WU_E_PT_HTTP_STATUS_REQUEST_TIMEOUT - HTTP 408 - the server timed out waiting for the request.\";\r\n                case 0x8024401D: return \"WU_E_PT_HTTP_STATUS_CONFLICT - HTTP 409 - the request was not completed due to a conflict with the current state of the resource.\";\r\n                case 0x8024401E: return \"WU_E_PT_HTTP_STATUS_GONE - HTTP 410 - requested resource is no longer available at the server.\";\r\n                case 0x8024401F: return \"WU_E_PT_HTTP_STATUS_SERVER_ERROR - HTTP 500 - an error internal to the server prevented fulfilling the request.\";\r\n                case 0x80244020: return \"WU_E_PT_HTTP_STATUS_NOT_SUPPORTED - HTTP 501 - server does not support the functionality required to fulfill the request.\";\r\n                case 0x80244021: return \"WU_E_PT_HTTP_STATUS_BAD_GATEWAY - HTTP 502 - the server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request.\";\r\n                case 0x80244022: return \"WU_E_PT_HTTP_STATUS_SERVICE_UNAVAIL - HTTP 503 - the service is temporarily overloaded.\";\r\n                case 0x80244023: return \"WU_E_PT_HTTP_STATUS_GATEWAY_TIMEOUT - HTTP 504 - the request was timed out waiting for a gateway.\";\r\n                case 0x80244024: return \"WU_E_PT_HTTP_STATUS_VERSION_NOT_SUP - HTTP 505 - the server does not support the HTTP protocol version used for the request.\";\r\n                case 0x80244025: return \"WU_E_PT_FILE_LOCATIONS_CHANGED - Operation failed due to a changed file location; refresh internal state and resend.\";\r\n                case 0x80244026: return \"WU_E_PT_REGISTRATION_NOT_SUPPORTED - Operation failed because Windows Update Agent does not support registration with a non-WSUS server.\";\r\n                case 0x80244027: return \"WU_E_PT_NO_AUTH_PLUGINS_REQUESTED - The server returned an empty authentication information list.\";\r\n                case 0x80244028: return \"WU_E_PT_NO_AUTH_COOKIES_CREATED - Windows Update Agent was unable to create any valid authentication cookies.\";\r\n                case 0x80244029: return \"WU_E_PT_INVALID_CONFIG_PROP - A configuration property value was wrong.\";\r\n                case 0x8024402A: return \"WU_E_PT_CONFIG_PROP_MISSING - A configuration property value was missing.\";\r\n                case 0x8024402B: return \"WU_E_PT_HTTP_STATUS_NOT_MAPPED - The HTTP request could not be completed and the reason did not correspond to any of the WU_E_PT_HTTP_* error codes.\";\r\n                case 0x8024402C: return \"WU_E_PT_WINHTTP_NAME_NOT_RESOLVED - ERROR_WINHTTP_NAME_NOT_RESOLVED - the proxy server or target server name cannot be resolved.\";\r\n                case 0x8024402F: return \"WU_E_PT_ECP_SUCCEEDED_WITH_ERRORS - External cab file processing completed with some errors.\";\r\n                case 0x80244030: return \"WU_E_PT_ECP_INIT_FAILED - The external cab processor initialization did not complete.\";\r\n                case 0x80244031: return \"WU_E_PT_ECP_INVALID_FILE_FORMAT - The format of a metadata file was invalid.\";\r\n                case 0x80244032: return \"WU_E_PT_ECP_INVALID_METADATA - External cab processor found invalid metadata.\";\r\n                case 0x80244033: return \"WU_E_PT_ECP_FAILURE_TO_EXTRACT_DIGEST - The file digest could not be extracted from an external cab file.\";\r\n                case 0x80244034: return \"WU_E_PT_ECP_FAILURE_TO_DECOMPRESS_CAB_FILE - An external cab file could not be decompressed.\";\r\n                case 0x80244035: return \"WU_E_PT_ECP_FILE_LOCATION_ERROR - External cab processor was unable to get file locations.\";\r\n                case 0x80244FFF: return \"WU_E_PT_UNEXPECTED - A communication error not covered by another WU_E_PT_* error code\";\r\n                case 0x80245001: return \"WU_E_REDIRECTOR_LOAD_XML - The redirector XML document could not be loaded into the DOM class.\";\r\n                case 0x80245002: return \"WU_E_REDIRECTOR_S_FALSE - The redirector XML document is missing some required information.\";\r\n                case 0x80245003: return \"WU_E_REDIRECTOR_ID_SMALLER - The redirector ID in the downloaded redirector cab is less than in the cached cab.\";\r\n                case 0x8024502D: return \"WU_E_PT_SAME_REDIR_ID - Windows Update Agent failed to download a redirector cabinet file with a new redirector ID value from the server during the recovery.\";\r\n                case 0x8024502E: return \"WU_E_PT_NO_MANAGED_RECOVER - A redirector recovery action did not complete because the server is managed.\";\r\n                case 0x80245FFF: return \"WU_E_REDIRECTOR_UNEXPECTED - The redirector failed for reasons not covered by another WU_E_REDIRECTOR_* error code.\";\r\n                case 0x80246001: return \"WU_E_DM_URLNOTAVAILABLE - A download manager operation could not be completed because the requested file does not have a URL.\";\r\n                case 0x80246002: return \"WU_E_DM_INCORRECTFILEHASH - A download manager operation could not be completed because the file digest was not recognized.\";\r\n                case 0x80246003: return \"WU_E_DM_UNKNOWNALGORITHM - A download manager operation could not be completed because the file metadata requested an unrecognized hash algorithm.\";\r\n                case 0x80246004: return \"WU_E_DM_NEEDDOWNLOADREQUEST - An operation could not be completed because a download request is required from the download handler.\";\r\n                case 0x80246005: return \"WU_E_DM_NONETWORK - A download manager operation could not be completed because the network connection was unavailable.\";\r\n                case 0x80246006: return \"WU_E_DM_WRONGBITSVERSION - A download manager operation could not be completed because the version of Background Intelligent Transfer Service (BITS) is incompatible.\";\r\n                case 0x80246007: return \"WU_E_DM_NOTDOWNLOADED - The update has not been downloaded.\";\r\n                case 0x80246008: return \"WU_E_DM_FAILTOCONNECTTOBITS - A download manager operation failed because the download manager was unable to connect the Background Intelligent Transfer Service (BITS).\";\r\n                case 0x80246009: return \"WU_E_DM_BITSTRANSFERERROR - A download manager operation failed because there was an unspecified Background Intelligent Transfer Service (BITS) transfer error.\";\r\n                case 0x8024600a: return \"WU_E_DM_DOWNLOADLOCATIONCHANGED - A download must be restarted because the location of the source of the download has changed.\";\r\n                case 0x8024600B: return \"WU_E_DM_CONTENTCHANGED - A download must be restarted because the update content changed in a new revision.\";\r\n                case 0x80246FFF: return \"WU_E_DM_UNEXPECTED - There was a download manager error not covered by another WU_E_DM_* error code.\";\r\n                case 0x80247001: return \"WU_E_OL_INVALID_SCANFILE - An operation could not be completed because the scan package was invalid.\";\r\n                case 0x80247002: return \"WU_E_OL_NEWCLIENT_REQUIRED - An operation could not be completed because the scan package requires a greater version of the Windows Update Agent.\";\r\n                case 0x80247FFF: return \"WU_E_OL_UNEXPECTED - Search using the scan package failed.\";\r\n                case 0x80248000: return \"WU_E_DS_SHUTDOWN - An operation failed because Windows Update Agent is shutting down.\";\r\n                case 0x80248001: return \"WU_E_DS_INUSE - An operation failed because the data store was in use.\";\r\n                case 0x80248002: return \"WU_E_DS_INVALID - The current and expected states of the data store do not match.\";\r\n                case 0x80248003: return \"WU_E_DS_TABLEMISSING - The data store is missing a table.\";\r\n                case 0x80248004: return \"WU_E_DS_TABLEINCORRECT - The data store contains a table with unexpected columns.\";\r\n                case 0x80248005: return \"WU_E_DS_INVALIDTABLENAME - A table could not be opened because the table is not in the data store.\";\r\n                case 0x80248006: return \"WU_E_DS_BADVERSION - The current and expected versions of the data store do not match.\";\r\n                case 0x80248007: return \"WU_E_DS_NODATA - The information requested is not in the data store.\";\r\n                case 0x80248008: return \"WU_E_DS_MISSINGDATA - The data store is missing required information or has a NULL in a table column that requires a non-null value.\";\r\n                case 0x80248009: return \"WU_E_DS_MISSINGREF - The data store is missing required information or has a reference to missing license terms, file, localized property or linked row.\";\r\n                case 0x8024800A: return \"WU_E_DS_UNKNOWNHANDLER - The update was not processed because its update handler could not be recognized.\";\r\n                case 0x8024800B: return \"WU_E_DS_CANTDELETE - The update was not deleted because it is still referenced by one or more services.\";\r\n                case 0x8024800C: return \"WU_E_DS_LOCKTIMEOUTEXPIRED - The data store section could not be locked within the allotted time.\";\r\n                case 0x8024800D: return \"WU_E_DS_NOCATEGORIES - The category was not added because it contains no parent categories and is not a top-level category itself.\";\r\n                case 0x8024800E: return \"WU_E_DS_ROWEXISTS - The row was not added because an existing row has the same primary key.\";\r\n                case 0x8024800F: return \"WU_E_DS_STOREFILELOCKED - The data store could not be initialized because it was locked by another process.\";\r\n                case 0x80248010: return \"WU_E_DS_CANNOTREGISTER - The data store is not allowed to be registered with COM in the current process.\";\r\n                case 0x80248011: return \"WU_E_DS_UNABLETOSTART - Could not create a data store object in another process.\";\r\n                case 0x80248013: return \"WU_E_DS_DUPLICATEUPDATEID - The server sent the same update to the client with two different revision IDs.\";\r\n                case 0x80248014: return \"WU_E_DS_UNKNOWNSERVICE - An operation did not complete because the service is not in the data store.\";\r\n                case 0x80248015: return \"WU_E_DS_SERVICEEXPIRED - An operation did not complete because the registration of the service has expired.\";\r\n                case 0x80248016: return \"WU_E_DS_DECLINENOTALLOWED - A request to hide an update was declined because it is a mandatory update or because it was deployed with a deadline.\";\r\n                case 0x80248017: return \"WU_E_DS_TABLESESSIONMISMATCH - A table was not closed because it is not associated with the session.\";\r\n                case 0x80248018: return \"WU_E_DS_SESSIONLOCKMISMATCH - A table was not closed because it is not associated with the session.\";\r\n                case 0x80248019: return \"WU_E_DS_NEEDWINDOWSSERVICE - A request to remove the Windows Update service or to unregister it with Automatic Updates was declined because it is a built-in service and/or Automatic Updates cannot fall back to another service.\";\r\n                case 0x8024801A: return \"WU_E_DS_INVALIDOPERATION - A request was declined because the operation is not allowed.\";\r\n                case 0x8024801B: return \"WU_E_DS_SCHEMAMISMATCH - The schema of the current data store and the schema of a table in a backup XML document do not match.\";\r\n                case 0x8024801C: return \"WU_E_DS_RESETREQUIRED - The data store requires a session reset; release the session and retry with a new session.\";\r\n                case 0x8024801D: return \"WU_E_DS_IMPERSONATED - A data store operation did not complete because it was requested with an impersonated identity.\";\r\n                case 0x80248FFF: return \"WU_E_DS_UNEXPECTED - A data store error not covered by another WU_E_DS_* code.\";\r\n                case 0x80249001: return \"WU_E_INVENTORY_PARSEFAILED - Parsing of the rule file failed.\";\r\n                case 0x80249002: return \"WU_E_INVENTORY_GET_INVENTORY_TYPE_FAILED - Failed to get the requested inventory type from the server.\";\r\n                case 0x80249003: return \"WU_E_INVENTORY_RESULT_UPLOAD_FAILED - Failed to upload inventory result to the server.\";\r\n                case 0x80249004: return \"WU_E_INVENTORY_UNEXPECTED - There was an inventory error not covered by another error code.\";\r\n                case 0x80249005: return \"WU_E_INVENTORY_WMI_ERROR - A WMI error occurred when enumerating the instances for a particular class.\";\r\n                case 0x8024A000: return \"WU_E_AU_NOSERVICE - Automatic Updates was unable to service incoming requests.\";\r\n                case 0x8024A002: return \"WU_E_AU_NONLEGACYSERVER - The old version of the Automatic Updates client has stopped because the WSUS server has been upgraded.\";\r\n                case 0x8024A003: return \"WU_E_AU_LEGACYCLIENTDISABLED - The old version of the Automatic Updates client was disabled.\";\r\n                case 0x8024A004: return \"WU_E_AU_PAUSED - Automatic Updates was unable to process incoming requests because it was paused.\";\r\n                case 0x8024A005: return \"WU_E_AU_NO_REGISTERED_SERVICE - No unmanaged service is registered with AU.\";\r\n                case 0x8024AFFF: return \"WU_E_AU_UNEXPECTED - An Automatic Updates error not covered by another WU_E_AU * code.\";\r\n                case 0x8024C001: return \"WU_E_DRV_PRUNED - A driver was skipped.\";\r\n                case 0x8024C002: return \"WU_E_DRV_NOPROP_OR_LEGACY - A property for the driver could not be found. It may not conform with required specifications.\";\r\n                case 0x8024C003: return \"WU_E_DRV_REG_MISMATCH - The registry type read for the driver does not match the expected type.\";\r\n                case 0x8024C004: return \"WU_E_DRV_NO_METADATA - The driver update is missing metadata.\";\r\n                case 0x8024C005: return \"WU_E_DRV_MISSING_ATTRIBUTE - The driver update is missing a required attribute.\";\r\n                case 0x8024C006: return \"WU_E_DRV_SYNC_FAILED - Driver synchronization failed.\";\r\n                case 0x8024C007: return \"WU_E_DRV_NO_PRINTER_CONTENT - Information required for the synchronization of applicable printers is missing.\";\r\n                case 0x8024CFFF: return \"WU_E_DRV_UNEXPECTED - A driver error not covered by another WU_E_DRV_* code.\";\r\n                case 0x8024D001: return \"WU_E_SETUP_INVALID_INFDATA - Windows Update Agent could not be updated because an INF file contains invalid information.\";\r\n                case 0x8024D002: return \"WU_E_SETUP_INVALID_IDENTDATA - Windows Update Agent could not be updated because the wuident.cab file contains invalid information.\";\r\n                case 0x8024D003: return \"WU_E_SETUP_ALREADY_INITIALIZED - Windows Update Agent could not be updated because of an internal error that caused setup initialization to be performed twice.\";\r\n                case 0x8024D004: return \"WU_E_SETUP_NOT_INITIALIZED - Windows Update Agent could not be updated because setup initialization never completed successfully.\";\r\n                case 0x8024D005: return \"WU_E_SETUP_SOURCE_VERSION_MISMATCH - Windows Update Agent could not be updated because the versions specified in the INF do not match the actual source file versions.\";\r\n                case 0x8024D006: return \"WU_E_SETUP_TARGET_VERSION_GREATER - Windows Update Agent could not be updated because a WUA file on the target system is newer than the corresponding source file.\";\r\n                case 0x8024D007: return \"WU_E_SETUP_REGISTRATION_FAILED - Windows Update Agent could not be updated because regsvr32.exe returned an error.\";\r\n                case 0x8024D008: return \"WU_E_SELFUPDATE_SKIP_ON_FAILURE - An update to the Windows Update Agent was skipped because previous attempts to update have failed.\";\r\n                case 0x8024D009: return \"WU_E_SETUP_SKIP_UPDATE - An update to the Windows Update Agent was skipped due to a directive in the wuident.cab file.\";\r\n                case 0x8024D00A: return \"WU_E_SETUP_UNSUPPORTED_CONFIGURATION - Windows Update Agent could not be updated because the current system configuration is not supported.\";\r\n                case 0x8024D00B: return \"WU_E_SETUP_BLOCKED_CONFIGURATION - Windows Update Agent could not be updated because the system is configured to block the update.\";\r\n                case 0x8024D00C: return \"WU_E_SETUP_REBOOT_TO_FIX - Windows Update Agent could not be updated because a restart of the system is required.\";\r\n                case 0x8024D00D: return \"WU_E_SETUP_ALREADYRUNNING - Windows Update Agent setup is already running.\";\r\n                case 0x8024D00E: return \"WU_E_SETUP_REBOOTREQUIRED - Windows Update Agent setup package requires a reboot to complete installation.\";\r\n                case 0x8024D00F: return \"WU_E_SETUP_HANDLER_EXEC_FAILURE - Windows Update Agent could not be updated because the setup handler failed during execution.\";\r\n                case 0x8024D010: return \"WU_E_SETUP_INVALID_REGISTRY_DATA - Windows Update Agent could not be updated because the registry contains invalid information.\";\r\n                case 0x8024D011: return \"WU_E_SELFUPDATE_REQUIRED - Windows Update Agent must be updated before search can continue.\";\r\n                case 0x8024D012: return \"WU_E_SELFUPDATE_REQUIRED_ADMIN - Windows Update Agent must be updated before search can continue. An administrator is required to perform the operation.\";\r\n                case 0x8024D013: return \"WU_E_SETUP_WRONG_SERVER_VERSION - Windows Update Agent could not be updated because the server does not contain update information for this version.\";\r\n                case 0x8024DFFF: return \"WU_E_SETUP_UNEXPECTED - Windows Update Agent could not be updated because of an error not covered by another WU_E_SETUP_* error code.\";\r\n                case 0x8024E001: return \"WU_E_EE_UNKNOWN_EXPRESSION - An expression evaluator operation could not be completed because an expression was unrecognized.\";\r\n                case 0x8024E002: return \"WU_E_EE_INVALID_EXPRESSION - An expression evaluator operation could not be completed because an expression was invalid.\";\r\n                case 0x8024E003: return \"WU_E_EE_MISSING_METADATA - An expression evaluator operation could not be completed because an expression contains an incorrect number of metadata nodes.\";\r\n                case 0x8024E004: return \"WU_E_EE_INVALID_VERSION - An expression evaluator operation could not be completed because the version of the serialized expression data is invalid.\";\r\n                case 0x8024E005: return \"WU_E_EE_NOT_INITIALIZED - The expression evaluator could not be initialized.\";\r\n                case 0x8024E006: return \"WU_E_EE_INVALID_ATTRIBUTEDATA - An expression evaluator operation could not be completed because there was an invalid attribute.\";\r\n                case 0x8024E007: return \"WU_E_EE_CLUSTER_ERROR - An expression evaluator operation could not be completed because the cluster state of the computer could not be determined.\";\r\n                case 0x8024EFFF: return \"WU_E_EE_UNEXPECTED - There was an expression evaluator error not covered by another WU_E_EE_* error code.\";\r\n                case 0x8024F001: return \"WU_E_REPORTER_EVENTCACHECORRUPT - The event cache file was defective.\";\r\n                case 0x8024F002: return \"WU_E_REPORTER_EVENTNAMESPACEPARSEFAILED - The XML in the event namespace descriptor could not be parsed.\";\r\n                case 0x8024F003: return \"WU_E_INVALID_EVENT - The XML in the event namespace descriptor could not be parsed.\";\r\n                case 0x8024F004: return \"WU_E_SERVER_BUSY - The server rejected an event because the server was too busy.\";\r\n                case 0x8024FFFF: return \"WU_E_REPORTER_UNEXPECTED - There was a reporter error not covered by another error code.\";\r\n                default:\r\n                    throw new ArgumentException(\"Unknown HRESULT code: 0x\" + ((uint)errorCode).ToString(\"X8\"));\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/WinUpdateHelper/Program.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Runtime.InteropServices;\r\nusing System.Text;\r\nusing Klocman;\r\nusing Microsoft.Win32.Interop;\r\n\r\nnamespace WinUpdateHelper\r\n{\r\n    /// <summary>\r\n    ///     https://msdn.microsoft.com/en-us/library/windows/desktop/aa386065(v=vs.85).aspx\r\n    /// \r\n    ///     Commands\r\n    ///     u[ninstall] UpdateID     - Uninstall an update\r\n    ///     l[ist]                   - List updates\r\n    /// </summary>\r\n    internal static class Program\r\n    {\r\n        private static QueryType _queryType;\r\n\r\n        private static string _updateId;\r\n\r\n        private static int Main(string[] args)\r\n        {\r\n            try\r\n            {\r\n                try { Console.OutputEncoding = Encoding.Unicode; }\r\n                catch (IOException) { /*Old .NET v4 without support for unicode output*/ }\r\n\r\n                ProcessCommandlineArguments(args);\r\n\r\n                switch (_queryType)\r\n                {\r\n                    case QueryType.Uninstall:\r\n                        UpdateManager.UninstallUpdate(_updateId);\r\n                        break;\r\n\r\n                    case QueryType.List:\r\n                        UpdateManager.WriteUpdateList();\r\n                        break;\r\n                    default:\r\n                        throw new ArgumentOutOfRangeException(nameof(_queryType), _queryType, null);\r\n                }\r\n            }\r\n            catch (OperationCanceledException)\r\n            {\r\n                return (int)ResultWin32.ERROR_CANCELLED;\r\n            }\r\n            catch (COMException ex)\r\n            {\r\n                LogWriter.WriteMessageToLog(ex.ToString());\r\n                Console.WriteLine(\"Error: {0}\", Hresult.ConvertHresultToDetails(ex.ErrorCode));\r\n                return (int)ResultWin32.ERROR_UNEXP_NET_ERR;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                LogWriter.WriteMessageToLog(ex.ToString());\r\n                Console.WriteLine(\"Error: {0}\", ex.Message);\r\n                return (int)ResultWin32.ERROR_UNEXP_NET_ERR;\r\n            }\r\n            return (int)ResultWin32.ERROR_SUCCESS;\r\n        }\r\n\r\n        private static void ProcessCommandlineArguments(IEnumerable<string> args)\r\n        {\r\n            foreach (var arg in args)\r\n            {\r\n                switch (arg.ToLowerInvariant())\r\n                {\r\n                    case @\"u\":\r\n                    case @\"uninstall\":\r\n                        if (_queryType != QueryType.None) throw new ArgumentException(@\"Multiple commands specified\");\r\n                        _queryType = QueryType.Uninstall;\r\n                        break;\r\n\r\n                    case @\"l\":\r\n                    case @\"list\":\r\n                        if (_queryType != QueryType.None) throw new ArgumentException(@\"Multiple commands specified\");\r\n                        _queryType = QueryType.List;\r\n                        break;\r\n\r\n                    default:\r\n                        if (_queryType != QueryType.Uninstall)\r\n                            throw new ArgumentException($@\"Unknown argument: {arg}\");\r\n                        if (_updateId != null)\r\n                            throw new ArgumentException(@\"Multiple UpdateIDs specified\");\r\n                        _updateId = arg;\r\n                        break;\r\n                }\r\n            }\r\n\r\n            if (_queryType == QueryType.None)\r\n                throw new ArgumentException(@\"No commands specified\");\r\n\r\n            if (_queryType == QueryType.Uninstall && _updateId == null)\r\n                throw new ArgumentException(@\"No UpdateID specified\");\r\n        }\r\n\r\n        private enum QueryType\r\n        {\r\n            None,\r\n            Uninstall,\r\n            List\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/WinUpdateHelper/UpdateManager.cs",
    "content": "﻿/*\r\n    Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/)\r\n    Apache License Version 2.0\r\n*/\r\n\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Runtime.InteropServices;\r\nusing System.Threading;\r\nusing Klocman;\r\nusing WUApiLib;\r\n\r\nnamespace WinUpdateHelper\r\n{\r\n    internal static class UpdateManager\r\n    {\r\n        public static void UninstallUpdate(string updateId)\r\n        {\r\n            Console.WriteLine(\"Scanning updates...\");\r\n            var wuaSession = new UpdateSessionClass();\r\n            var wuaSearcher = wuaSession.CreateUpdateSearcher();\r\n            var wuaSearch =\r\n                wuaSearcher.Search($\"Type='Software' and IsInstalled=1 and UpdateID='{updateId}' and IsPresent=1\");\r\n            var updates = wuaSearch.Updates.OfType<IUpdate>().ToList();\r\n            if (!updates.Any())\r\n                throw new ArgumentException(\"Selected update was not found\");\r\n            var uninstallable = updates.Where(x => x.IsUninstallable).ToList();\r\n            if (!uninstallable.Any())\r\n                throw new ArgumentException(\"Selected update is not uninstallable\");\r\n\r\n            var wuaInstaller = wuaSession.CreateUpdateInstaller();\r\n            wuaInstaller.Updates = new UpdateCollectionClass();\r\n            foreach (var update in uninstallable)\r\n                wuaInstaller.Updates.Add(update);\r\n\r\n            Console.WriteLine(\"Uninstalling \" + string.Join(\"; \", uninstallable.Select(x => x.Title)) + \"...\");\r\n            WaitForInstallerBusy(wuaInstaller);\r\n            var result = wuaInstaller.Uninstall();\r\n            WaitForInstallerBusy(wuaInstaller);\r\n\r\n            switch (result.ResultCode)\r\n            {\r\n                case OperationResultCode.orcNotStarted:\r\n                    throw new ArgumentException(\"Selected update is not uninstallable\");\r\n                case OperationResultCode.orcInProgress:\r\n                    break;\r\n                case OperationResultCode.orcSucceeded:\r\n                    break;\r\n                case OperationResultCode.orcSucceededWithErrors:\r\n                    break;\r\n                case OperationResultCode.orcFailed:\r\n                    throw new COMException(\"Selected update is not uninstallable\", result.HResult);\r\n                case OperationResultCode.orcAborted:\r\n                    throw new OperationCanceledException(\"Selected update is not uninstallable\");\r\n            }\r\n            Console.WriteLine(\"Uninstall successful\");\r\n        }\r\n\r\n        private static void WaitForInstallerBusy(IUpdateInstaller wuaInstaller)\r\n        {\r\n            var count = 0;\r\n            // Wait for some seconds\r\n            while (wuaInstaller.IsBusy && count++ < 30) Thread.Sleep(250);\r\n            if (count >= 20)\r\n                throw new TimeoutException(\"Update installer is busy\");\r\n        }\r\n\r\n        public static void WriteUpdateList()\r\n        {\r\n            var wuaSession = new UpdateSessionClass();\r\n            var wuaSearcher = wuaSession.CreateUpdateSearcher();\r\n            var wuaSearch = wuaSearcher.Search(\"IsInstalled=1 and IsPresent=1 and Type='Software'\");\r\n            var updates = wuaSearch.Updates.OfType<IUpdate>().ToList();\r\n            \r\n            foreach (var update in updates)\r\n            {\r\n                var id = update.Identity;\r\n\r\n                var result = HelperTools.KeyValueListToConsoleOutput(new List<KeyValuePair<string, object>>\r\n                {\r\n                    new(nameof(id.UpdateID), id.UpdateID),\r\n                    new(nameof(id.RevisionNumber), id.RevisionNumber),\r\n\r\n                    new(nameof(update.Title), update.Title),\r\n                    new(nameof(update.IsUninstallable), update.IsUninstallable),\r\n\r\n                    new(nameof(update.SupportUrl), update.SupportUrl),\r\n\r\n                    new(nameof(update.MinDownloadSize), update.MinDownloadSize),\r\n                    new(nameof(update.MaxDownloadSize), update.MaxDownloadSize),\r\n                    new(nameof(update.LastDeploymentChangeTime), update.LastDeploymentChangeTime)\r\n                });\r\n\r\n                Console.WriteLine(result);\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "source/WinUpdateHelper/WinUpdateHelper.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\t<PropertyGroup>\r\n\t\t<OutputType>Exe</OutputType>\r\n\r\n\t\t<AssemblyTitle>Utility for discovering and uninstalling Windows Updates</AssemblyTitle>\r\n\r\n\t\t<ApplicationIcon>icon.ico</ApplicationIcon>\r\n\t\t<StartupObject>WinUpdateHelper.Program</StartupObject>\r\n\t</PropertyGroup>\r\n\r\n\t<ItemGroup>\r\n\t\t<COMReference Include=\"WUApiLib\">\r\n\t\t\t<Guid>{B596CC9F-56E5-419E-A622-E01BB457431E}</Guid>\r\n\t\t\t<VersionMajor>2</VersionMajor>\r\n\t\t\t<VersionMinor>0</VersionMinor>\r\n\t\t\t<Lcid>0</Lcid>\r\n\t\t\t<WrapperTool>tlbimp</WrapperTool>\r\n\t\t\t<Isolated>False</Isolated>\r\n\t\t\t<EmbedInteropTypes>False</EmbedInteropTypes>\r\n\t\t</COMReference>\r\n\t</ItemGroup>\r\n</Project>"
  },
  {
    "path": "source/app.manifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<asmv1:assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\" xmlns:asmv1=\"urn:schemas-microsoft-com:asm.v1\" xmlns:asmv2=\"urn:schemas-microsoft-com:asm.v2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n  <assemblyIdentity version=\"1.0.0.0\" name=\"MyApplication.app\" />\n  <trustInfo xmlns=\"urn:schemas-microsoft-com:asm.v2\">\n    <security>\n      <requestedPrivileges xmlns=\"urn:schemas-microsoft-com:asm.v3\">\n        <!-- UAC Manifest Options\n            If you want to change the Windows User Account Control level replace the \n            requestedExecutionLevel node with one of the following.\n\n        <requestedExecutionLevel  level=\"asInvoker\" uiAccess=\"false\" />\n        <requestedExecutionLevel  level=\"requireAdministrator\" uiAccess=\"false\" />\n        <requestedExecutionLevel  level=\"highestAvailable\" uiAccess=\"false\" />\n\n            Specifying requestedExecutionLevel node will disable file and registry virtualization.\n            If you want to utilize File and Registry Virtualization for backward \n            compatibility then delete the requestedExecutionLevel node.\n        -->\n        <requestedExecutionLevel level=\"requireAdministrator\" uiAccess=\"false\" />\n      </requestedPrivileges>\n      <applicationRequestMinimum>\n        <defaultAssemblyRequest permissionSetReference=\"Custom\" />\n        <PermissionSet class=\"System.Security.PermissionSet\" version=\"1\" ID=\"Custom\" SameSite=\"site\" Unrestricted=\"true\" />\n      </applicationRequestMinimum>\n    </security>\n  </trustInfo>\n  <compatibility xmlns=\"urn:schemas-microsoft-com:compatibility.v1\">\n    <application>\n      <!-- A list of all Windows versions that this application is designed to work with. \n      Windows will automatically select the most compatible environment.-->\n      <!-- If your application is designed to work with Windows Vista, uncomment the following supportedOS node-->\n      <!--<supportedOS Id=\"{e2011457-1546-43c5-a5fe-008deee3d3f0}\"></supportedOS>-->\n      <!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node-->\n      <supportedOS Id=\"{35138b9a-5d96-4fbd-8e2d-a2440225f93a}\"/>\n      <!-- Windows 10-->\n      <supportedOS Id=\"{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}\" />\n      <!-- If your application is designed to work with Windows 8, uncomment the following supportedOS node-->\n      <!--<supportedOS Id=\"{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}\"></supportedOS>-->\n      <!-- If your application is designed to work with Windows 8.1, uncomment the following supportedOS node-->\n      <!--<supportedOS Id=\"{1f676c76-80e1-4239-95bb-83d0f6d0da78}\"/>-->\n    </application>\n  </compatibility>\n  <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->\n  <!-- <dependency>\n    <dependentAssembly>\n      <assemblyIdentity\n          type=\"win32\"\n          name=\"Microsoft.Windows.Common-Controls\"\n          version=\"6.0.0.0\"\n          processorArchitecture=\"*\"\n          publicKeyToken=\"6595b64144ccf1df\"\n          language=\"*\"\n        />\n    </dependentAssembly>\n  </dependency>-->\n</asmv1:assembly>"
  }
]